Skip to content

Commit

Permalink
Merge pull request #2302 from gdsfactory/faster_extract_v2
Browse files Browse the repository at this point in the history
faster extract
  • Loading branch information
joamatab committed Nov 8, 2023
2 parents 108e70d + 5bde319 commit e4f2be6
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 24 deletions.
39 changes: 16 additions & 23 deletions gdsfactory/component.py
Original file line number Diff line number Diff line change
Expand Up @@ -1063,32 +1063,25 @@ def remove_layers(

def extract(
self,
layers: list[tuple[int, int] | str],
layers: list[LayerSpec],
include_labels: bool = True,
recursive: bool = True,
) -> Component:
"""Extract polygons from a Component and returns a new Component."""
from gdsfactory.pdk import get_layer

if type(layers) not in (list, tuple):
raise ValueError(f"layers {layers!r} needs to be a list or tuple")

layers = [get_layer(layer) for layer in layers]
# component = self.copy()
# component._cell.filter(spec=layers, remove=False)
"""Extract polygons from a Component and returns a new Component.
component = Component()
poly_dict = self.get_polygons(by_spec=True, include_paths=False)

for layer in layers:
if layer in poly_dict:
polygons = poly_dict[layer]
for polygon in polygons:
component.add_polygon(polygon, layer)

for layer in layers:
for path in self._cell.get_paths(layer=layer):
component.add(path)
Args:
layers: list of layers to extract.
include_labels: extract labels on those layers.
recursive: operate on the cells included in this cell.
"""
c = self.copy()

return component
return c.remove_layers(
layers,
invert_selection=True,
recursive=recursive,
include_labels=include_labels,
)

def add_polygon(
self,
Expand Down
1 change: 0 additions & 1 deletion gdsfactory/technology/layer_stack.py
Original file line number Diff line number Diff line change
Expand Up @@ -442,7 +442,6 @@ def get_component_with_derived_layers(component, layer_stack: LayerStack) -> Com
)
component_derived.add(unetched_polys)

component_derived.add_ports(component.ports)
return component_derived


Expand Down

0 comments on commit e4f2be6

Please sign in to comment.