break out build() which returns the gdsii.library.Library object
This commit is contained in:
parent
d7a8bd7e0d
commit
1b0b056bf9
@ -48,15 +48,15 @@ path_cap_map = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def write(patterns: Union[Pattern, List[Pattern]],
|
def build(patterns: Union[Pattern, List[Pattern]],
|
||||||
stream: io.BufferedIOBase,
|
|
||||||
meters_per_unit: float,
|
meters_per_unit: float,
|
||||||
logical_units_per_unit: float = 1,
|
logical_units_per_unit: float = 1,
|
||||||
library_name: str = 'masque-gdsii-write',
|
library_name: str = 'masque-gdsii-write',
|
||||||
modify_originals: bool = False,
|
modify_originals: bool = False,
|
||||||
disambiguate_func: Callable[[Iterable[Pattern]], None] = None):
|
disambiguate_func: Callable[[Iterable[Pattern]], None] = None,
|
||||||
|
) -> gdsii.library.Library:
|
||||||
"""
|
"""
|
||||||
Write a `Pattern` or list of patterns to a GDSII file, by first calling
|
Convert a `Pattern` or list of patterns to a GDSII stream, by first calling
|
||||||
`.polygonize()` to change the shapes into polygons, and then writing patterns
|
`.polygonize()` to change the shapes into polygons, and then writing patterns
|
||||||
as GDSII structures, polygons as boundary elements, and subpatterns as structure
|
as GDSII structures, polygons as boundary elements, and subpatterns as structure
|
||||||
references (sref).
|
references (sref).
|
||||||
@ -74,8 +74,7 @@ def write(patterns: Union[Pattern, List[Pattern]],
|
|||||||
prior to calling this function.
|
prior to calling this function.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
patterns: A Pattern or list of patterns to write to the stream.
|
patterns: A Pattern or list of patterns to convert.
|
||||||
stream: Stream object to write to.
|
|
||||||
meters_per_unit: Written into the GDSII file, meters per (database) length unit.
|
meters_per_unit: Written into the GDSII file, meters per (database) length unit.
|
||||||
All distances are assumed to be an integer multiple of this unit, and are stored as such.
|
All distances are assumed to be an integer multiple of this unit, and are stored as such.
|
||||||
logical_units_per_unit: Written into the GDSII file. Allows the GDSII to specify a
|
logical_units_per_unit: Written into the GDSII file. Allows the GDSII to specify a
|
||||||
@ -90,6 +89,9 @@ def write(patterns: Union[Pattern, List[Pattern]],
|
|||||||
to make their names valid and unique. Default is `disambiguate_pattern_names`, which
|
to make their names valid and unique. Default is `disambiguate_pattern_names`, which
|
||||||
attempts to adhere to the GDSII standard as well as possible.
|
attempts to adhere to the GDSII standard as well as possible.
|
||||||
WARNING: No additional error checking is performed on the results.
|
WARNING: No additional error checking is performed on the results.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
`gdsii.library.Library`
|
||||||
"""
|
"""
|
||||||
if isinstance(patterns, Pattern):
|
if isinstance(patterns, Pattern):
|
||||||
patterns = [patterns]
|
patterns = [patterns]
|
||||||
@ -123,25 +125,42 @@ def write(patterns: Union[Pattern, List[Pattern]],
|
|||||||
structure += _labels_to_texts(pat.labels)
|
structure += _labels_to_texts(pat.labels)
|
||||||
structure += _subpatterns_to_refs(pat.subpatterns)
|
structure += _subpatterns_to_refs(pat.subpatterns)
|
||||||
|
|
||||||
|
return lib
|
||||||
|
|
||||||
|
|
||||||
|
def write(patterns: Union[Pattern, List[Pattern]],
|
||||||
|
stream: io.BufferedIOBase,
|
||||||
|
*args,
|
||||||
|
**kwargs):
|
||||||
|
"""
|
||||||
|
Write a `Pattern` or list of patterns to a GDSII file.
|
||||||
|
See `masque.file.gdsii.build()` for details.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
patterns: A Pattern or list of patterns to write to file.
|
||||||
|
stream: Stream to write to.
|
||||||
|
*args: passed to `oasis.build()`
|
||||||
|
**kwargs: passed to `oasis.build()`
|
||||||
|
"""
|
||||||
|
lib = build(patterns, *args, **kwargs)
|
||||||
lib.save(stream)
|
lib.save(stream)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
def writefile(patterns: Union[List[Pattern], Pattern],
|
def writefile(patterns: Union[List[Pattern], Pattern],
|
||||||
filename: Union[str, pathlib.Path],
|
filename: Union[str, pathlib.Path],
|
||||||
*args,
|
*args,
|
||||||
**kwargs,
|
**kwargs,
|
||||||
):
|
):
|
||||||
"""
|
"""
|
||||||
Wrapper for `gdsii.write()` that takes a filename or path instead of a stream.
|
Wrapper for `masque.file.gdsii.write()` that takes a filename or path instead of a stream.
|
||||||
|
|
||||||
Will automatically compress the file if it has a .gz suffix.
|
Will automatically compress the file if it has a .gz suffix.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
patterns: `Pattern` or list of patterns to save
|
patterns: `Pattern` or list of patterns to save
|
||||||
filename: Filename to save to.
|
filename: Filename to save to.
|
||||||
*args: passed to `gdsii.write`
|
*args: passed to `masque.file.gdsii.write`
|
||||||
**kwargs: passed to `gdsii.write`
|
**kwargs: passed to `masque.file.gdsii.write`
|
||||||
"""
|
"""
|
||||||
path = pathlib.Path(filename)
|
path = pathlib.Path(filename)
|
||||||
if path.suffix == '.gz':
|
if path.suffix == '.gz':
|
||||||
@ -243,14 +262,14 @@ def readfile(filename: Union[str, pathlib.Path],
|
|||||||
**kwargs,
|
**kwargs,
|
||||||
) -> Tuple[Dict[str, Pattern], Dict[str, Any]]:
|
) -> Tuple[Dict[str, Pattern], Dict[str, Any]]:
|
||||||
"""
|
"""
|
||||||
Wrapper for `gdsii.read()` that takes a filename or path instead of a stream.
|
Wrapper for `masque.file.gdsii.read()` that takes a filename or path instead of a stream.
|
||||||
|
|
||||||
Will automatically decompress files with a .gz suffix.
|
Will automatically decompress files with a .gz suffix.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
filename: Filename to save to.
|
filename: Filename to save to.
|
||||||
*args: passed to `gdsii.read`
|
*args: passed to `masque.file.gdsii.read`
|
||||||
**kwargs: passed to `gdsii.read`
|
**kwargs: passed to `masque.file.gdsii.read`
|
||||||
"""
|
"""
|
||||||
path = pathlib.Path(filename)
|
path = pathlib.Path(filename)
|
||||||
if path.suffix == '.gz':
|
if path.suffix == '.gz':
|
||||||
@ -591,4 +610,3 @@ def disambiguate_pattern_names(patterns,
|
|||||||
|
|
||||||
pat.name = encoded_name
|
pat.name = encoded_name
|
||||||
used_names.append(suffixed_name)
|
used_names.append(suffixed_name)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user