Commit Graph

424 Commits (783953bb736f09473977020a534f15b0aa5a1b4d)

Author SHA1 Message Date
Jan Petykiewicz 0fa073b488 Make sure linspace gets an integer number of points 4 years ago
Jan Petykiewicz 89bd1e6abe only add new_children (marginally faster) 4 years ago
Jan Petykiewicz a4b5776208 Don't return early, since we add patterns to memo before they've been checked 4 years ago
Jan Petykiewicz 0589fbb1b8 bump version to v1.5 4 years ago
Jan Petykiewicz 1ae9225130 add rename() method for Pattern 4 years ago
Jan Petykiewicz f3a1db30c5 Fix order of rotation/mirror/offset when calling as_pattern() on repetitions 4 years ago
Jan Petykiewicz 53d2a9ca1a Only swap between tuple/list if actually necessary 4 years ago
Jan Petykiewicz 07ee25e735 add subpatterns_by_id() 4 years ago
Jan Petykiewicz 1976c6e684 Add `recursive` arg to referenced_patterns_by_id 4 years ago
Jan Petykiewicz 09615eaea6 use set() to remove any duplicates in patterns 4 years ago
Jan Petykiewicz e401f37993 Improve documentation on disambiguate_pattern_names 4 years ago
Jan Petykiewicz 778e54c895 bump version to v1.4 4 years ago
Jan Petykiewicz f204d917c9 Add basic support for OASIS and update setup/docs for OASIS and DXF support 4 years ago
Jan Petykiewicz 6e957d761a newline 4 years ago
Jan Petykiewicz 1bb4bd6bb7 add py.typed to enable type checking for downstream 4 years ago
Jan Petykiewicz 8082743e17 move dose2dtype() into masque.file.utils, add dtype2dose(), and add a note that use_dtype_as_dose 4 years ago
Jan Petykiewicz 1b0b056bf9 break out build() which returns the gdsii.library.Library object 4 years ago
Jan Petykiewicz d7a8bd7e0d Allow b_count=None 4 years ago
Jan Petykiewicz 22b2834d55 Documentation improvements 4 years ago
Jan Petykiewicz f9fb7ccad3 move gdsii import below standard packages 4 years ago
Jan Petykiewicz 5bd1e85d89 add experimental support for dxf 4 years ago
Jan Petykiewicz f260fe1374 comment fixup 4 years ago
Jan Petykiewicz 8a404a2602 Allow setting subpattern identifier in constructors 4 years ago
Jan Petykiewicz 8302286a7a allow using a string for the layer
Can't use it in gdsii, but no reason to forbit it in masque...
4 years ago
Jan Petykiewicz 247b31a9d6 Don't include None in referenced_patterns_by_id() by default 4 years ago
Jan Petykiewicz 5c6c10d2be fix repetition __repr__ 4 years ago
Jan Petykiewicz f312f50751 some typing clarifications 4 years ago
Jan Petykiewicz ee8f015172 add subpattern_t type (generalizattion of SubPattern and GridRepetition) 4 years ago
Jan Petykiewicz 6b09fc0c20 make section comments more prominent 4 years ago
Jan Petykiewicz a440f2e256 add Shape.set_layer() 4 years ago
Jan Petykiewicz c236fdb81b Add __repr__ methods to most objects`
These are closer to what __str__ should be and will likely change in the
future.
4 years ago
Jan Petykiewicz c79eee2a8c Stricter locking (lock contained ndarrays and turn lists into tuples) 4 years ago
Jan Petykiewicz 79990e3806 cosmetic changes 4 years ago
Jan Petykiewicz 157df47884 Improve type annotations based on mypy errors 4 years ago
Jan Petykiewicz bd4085365f Path should create a Path, not a Polygon 4 years ago
Jan Petykiewicz 9bfb3bef9f avoid unnecessarily nested classes
Still provide a class variable for convenience
4 years ago
Jan Petykiewicz d33afc2bfd disambiguate some variable names 4 years ago
Jan Petykiewicz f8e347c997 fix scale -> scale_by 4 years ago
Jan Petykiewicz 8493364e9c Use a tuple for .identifier 4 years ago
Jan Petykiewicz 00394a62f0 Formally allow instances to point to None (i.e. an 'empty' pattern) 4 years ago
Jan Petykiewicz f8c49cdb5e Add setter/getter for .pattern to catch wrong types 4 years ago
Jan Petykiewicz fa8fc52dd6 Improve consistency of ndarray members 4 years ago
Jan Petykiewicz 9fa527ea11 improve handling of patterns with no bounding box 4 years ago
Jan Petykiewicz 334633662e Remove extra __author__ declarations 4 years ago
Jan Petykiewicz df179c9233 Improve type annotations for layer 4 years ago
Jan Petykiewicz 95ab0934b7 bump version to v1.3 4 years ago
Jan Petykiewicz e9244055c6 Add type check for SubPattern's pattern arg 4 years ago
Jan Petykiewicz a4f556c3b3 clarify docs for referenced_patterns_by_id() 4 years ago
Jan Petykiewicz e684bd0e40 add Pattern.find_toplevel()
Topological sort for lists of Pattern objects, useful for finding top
cell of gds
4 years ago
Jan Petykiewicz 9f27a5093a add Pattern.referenced_patterns_by_name() 4 years ago
jan 5adabfd25a Docstring format change
(new param and return format)
Also some minor code formatting fixes in utils
4 years ago
jan 20981f10b9 Fix error name
InvalidDataError -> PatternError
4 years ago
jan a930c65d42 fix gridrepetition mirror 4 years ago
Jan Petykiewicz 2a53d8ef4d bump version to 1.2 4 years ago
Jan Petykiewicz 0db70d2c50 Change GridRepetition rotation/mirrored/scale properties so that they consistently apply only to the individual instances; the rotate()/mirror()/scale_by() functions apply to the full array. Add *_elements() versions of the functions 4 years ago
Jan Petykiewicz 64b8e4dec8 Fix duplicates in gds with multiple top-level cells
Since the different patterns we are handed might reference the same
Patterns, we have to deepcopy the entire list at once so that we
don't make multiple copies of them.
5 years ago
jan 5ba67af816 bump version to 1.1 5 years ago
Jan Petykiewicz 25c9e591cb shapes: unlock before modifying during deepcopy 5 years ago
Jan Petykiewicz f2e6548d21 fix locking issue in __deepcopy__ 5 years ago
Jan Petykiewicz e0db621595 allow locking of all objects 5 years ago
Jan Petykiewicz 09711116a7 allow more freedom in pattern names (e.g. names which violate spec, longer suffixes, filter warning, etc) 5 years ago
Jan Petykiewicz df9c4b52f4 add some todos 5 years ago
Jan Petykiewicz fcc4770534 Mirroring fix for gdsii import 5 years ago
Jan Petykiewicz 97b7eda21a Force repetition counts to be integers 5 years ago
Jan Petykiewicz f3669f2dfd fixup mirroring for subpatterns 5 years ago
Jan Petykiewicz 4bc51f765f custom __copy__ for SubPattern and GridRepetition
the difference between copy/deepcopy should be whether a copy is made of
the contained pattern
5 years ago
Jan Petykiewicz 7b0a567625 .mirrored should be an ndarray 5 years ago
Jan Petykiewicz bece3136be Bump version number to 1.0
Note MAJOR incompatibilities with previous version, including
- order of Pattern() args
- save format
- i/o functions
5 years ago
Jan Petykiewicz f471374b68 Use separate VERSION file 5 years ago
Jan Petykiewicz 2259e7987b don't rename shape.to_polygons() args 5 years ago
Jan Petykiewicz e5f28a7a92 Fix Pattern.get_bounds() 5 years ago
Jan Petykiewicz 6801ee7fc0 Account for rotation/mirror in Pattern.dfs() 5 years ago
Jan Petykiewicz b5bd7cd9c8 Pattern.get_bounds() should return None if it's empty
s
5 years ago
Jan Petykiewicz 49982f1207 Add newlines to long log messages 5 years ago
jan dcd8324eb4 Use to_polygons() for bounds calculation for simple path shapes 5 years ago
jan 2c9af3f63f Simplify normalize_mirror 5 years ago
jan 0ab5674fb9 strans needs starting value (0) 5 years ago
Jan Petykiewicz 02c3d300e0 Wrap long lines (cosmetic) 5 years ago
Jan Petykiewicz 75b42f6b63 Use normalize_mirror for all 2d-to-1d mirroring 5 years ago
Jan Petykiewicz 194a90fe7a Add Pattern.dfs()
Depth-first traversal with hierarchy and transform tracking
5 years ago
Jan Petykiewicz 76f213a7ce use .identifier instead of the dynamically-created .ref_name 5 years ago
Jan Petykiewicz ca80b14ee4 Fix text get_bounds
was addressing list using numpy slices
5 years ago
Jan Petykiewicz 67c9b510cb Rename svg functions to reflect their gds counterparts
Backwards incompatible!
5 years ago
Jan Petykiewicz 503a77925e Move away from __dict__ style save/load
Incompatible with previous versions, but necessary given the move to
__slots__.

Also use pickle.HIGHEST_PROTOCOL
5 years ago
Jan Petykiewicz 28084dfe45 Make name the first argument to Pattern() init
Major incompatibility with previous versions!!
5 years ago
Jan Petykiewicz a154555902 Add TODO noting that polygon mirroring could be normalized 5 years ago
Jan Petykiewicz f00d283c56 Add missing imports 5 years ago
Jan Petykiewicz 032c410b43 Add mirror_x to extrinsic properties
It's not implemented for Polygon shapes, since I haven't thought about
how to normalize those for reflection yet
5 years ago
Jan Petykiewicz 2e54cf1080 initialize identifier for text shapes 5 years ago
Jan Petykiewicz 16c6bfc70a Cosmetic changes to argument lists 5 years ago
Jan Petykiewicz 58353b7884 Remove orphaned comment 5 years ago
Jan Petykiewicz 38f64f7c62 Use __slots__ for class members
Also use the other sort of type hints for instance variables
5 years ago
Jan Petykiewicz 0b962999b2 Add arbitrary identifier for labels and subpattern/repetition 5 years ago
Jan Petykiewicz 703c1aa6d8 Custom deepcopy for labels 5 years ago
Jan Petykiewicz 17451cd995 Force dose2dtype to accept only a list of patterns
Backwards incompatible, just like the rest of the gdsii rework
5 years ago
Jan Petykiewicz 1ef8518c60 Fix dose2dtype
Was broken during gdsii refactor
5 years ago
Jan Petykiewicz a6a3ae797c Fix Pattern.scale_by() for labels
Label offsets weren't being scaled.
5 years ago
Jan Petykiewicz 4bd5542ce9 Clarify warning when adding suffix 5 years ago
Jan Petykiewicz 3ff9a8a506 Shorten long names when writing
Maybe turn this into an option later?
5 years ago
Jan Petykiewicz 376cbcce26 Use buffered IO
free ~10% speedup on read, probably similar on write
5 years ago
Jan Petykiewicz a461446059 Custom deepcopy() implementations to help speed things up 5 years ago
Jan Petykiewicz 94410dffc9 Fix clockwise (to-perp) path bends 5 years ago
Jan Petykiewicz 2909b25fd7 Missing args for commit bc43be48bc (cap_extensions) 5 years ago
Jan Petykiewicz a44a7c176e Add type hints 5 years ago
Jan Petykiewicz bc43be48bc Implement SquareCustom end-caps and gds output 5 years ago
Jan Petykiewicz d5665f54a7 Comment and type hint updates 5 years ago
Jan Petykiewicz b8b848c28f add Pattern.is_empty() 5 years ago
Jan Petykiewicz 0bbcf3823a Fix .gz suffix detection 5 years ago
Jan Petykiewicz 347716ec6e Give shapes unique path-like identifiers when flattening 5 years ago
Jan Petykiewicz 9ab1372c7b Allow shapes to carry an arbitrary identifier (Tuple) 5 years ago
Jan Petykiewicz 380393dbc3 Fix mirror axis for arrays 5 years ago
Jan Petykiewicz 5741b38ca6 fixup remove_colinear_vertices 5 years ago
Jan Petykiewicz ee6699a7de fix alternate polygon constructors 5 years ago
Jan Petykiewicz 0018891200 handle defaults for path params 5 years ago
Jan Petykiewicz 485a7bc29d General overhaul of gdsii read/write functions
- read() and write() now take streams instead of filenames
- readfile() and writefile() were added to handle filenames and can
detect and handle '.gz' suffixed/compressed files.
- write_dose2dtype() and and read_dtype2dose() were removed in favor of
read(use_dtype_as_dose=True) and dose2dtype()
5 years ago
Jan Petykiewicz d6d26b4e46 Add modify_originals param and don't modify the pattern by default 5 years ago
Jan Petykiewicz 783c0c0844 Add support for gds paths 5 years ago
Jan Petykiewicz d53c9487ff Comment and error-checking fixes 5 years ago
Jan Petykiewicz 8fe8bbd655 Normalization-related fixes 5 years ago
Jan Petykiewicz c6fac19fe0 Set standard constructor arg order and add `rotation` and `mirrored` args where reasonable 5 years ago
Jan Petykiewicz 8dfb6d4440 Move vertex-cleanup functions to utils and generalize for non-closed paths 5 years ago
Jan Petykiewicz 79c89b2a4b Rename empty-named patterns on gdsii save 5 years ago
Jan Petykiewicz 9ecd34b2f7 Cast offsets to float 5 years ago
Jan Petykiewicz 8987cf8c44 mirror_signs are per-coordinate, not per-vector 5 years ago
Jan Petykiewicz e3586a4574 fix variable names (manhattanize_fast fixes) 5 years ago
Jan Petykiewicz c6830abe22 Fix corners in manhattanize_fast 5 years ago
Jan Petykiewicz 11bbf6aa0b Fix auto-renaming for structures 5 years ago
Jan Petykiewicz 5e6485f410 allow setting library name 5 years ago
Jan Petykiewicz 3094aa4043 Automatically disambiguate repeated pattern names.
Also check for >32 char names
5 years ago
Jan Petykiewicz 3815069136 Fix out-of-range angles 5 years ago
Jan Petykiewicz f7ce17c293 Fix mirroring 5 years ago
Jan Petykiewicz bc723d96f3 Counts should be ints 5 years ago
Jan Petykiewicz 90a068da80 tabs-to-spaces 5 years ago
Jan Petykiewicz 628845ca4b Bump version to 0.5 5 years ago
jan bc557a54b7 fix typo in comment 5 years ago
jan c50bd8e148 Add GridRepetition: a SubPattern-like object which implements regular spatial arrays.
Also rework masque.file.gdsii to consolidate write() and
write_dose2dtype()
5 years ago
jan 539198435c Add .copy() and .deepcopy() convenience methods 5 years ago
jan eb6a5d8e8c Add shapes.Polygon.rect() for simpler construction of various axis-aligned rectangles 6 years ago
jan ef305cbac9 Fix syntax 6 years ago
Jan Petykiewicz 3ebb87bfc7 fix location of svgwrite dependency 6 years ago
Jan Petykiewicz 5bce2005b6 Add docstring for manhattanize_fast 6 years ago
Jan Petykiewicz ab483fc9d4 Remove pyclipper dependency; remove shape.cut() 6 years ago
Jan Petykiewicz 8dfd856e18 Subtattern .as_pattern() should deepcopy 6 years ago
Jan Petykiewicz df5c61f1d4 Clarify that rectangle/square is centered on the origin
Eventually, should allow arbitrary limit combination (rather than center
+ width)
6 years ago
Jan Petykiewicz b295c318a9 Fix arc bounding box calculation 6 years ago
Jan Petykiewicz 64cb1ced34 fix spacing (cosmetic) 6 years ago
jan a064e74fc1 Merge branch 'master' of mpxd.net:jan/masque 6 years ago
jan d17cf5b6be label should have a list of 1 point 6 years ago
jan f3115baabe Add get_cap_edges() 6 years ago
jan 832e3b46fa Add general angle-to-parameter helper function
and improve accuracy of to_polygons
6 years ago
Jan Petykiewicz 48b8087d0c Make read output consistent with write args 6 years ago
Jan Petykiewicz 4323d81abd Change default written library name 6 years ago
Jan Petykiewicz 7eda7ea873 Clarify docs -- read returns a dict 6 years ago
jan f3aa27a7c4 add missing import 6 years ago
jan 4498990545 Move version string into __init__ 6 years ago
jan 4fea49edef Add missing file (support for labels) 6 years ago
jan 86068102d9 Clarify that layer can be a tuple 6 years ago
jan 6bafaaf4fc Fix typo in arc docs 6 years ago
jan 108694551b add support for labels (e.g. GDS TEXT) 6 years ago
jan 8623dbbeac Put masque-layer to gds-layer conversion into a private function, and only call once per shape 6 years ago
jan 4840c321c5 rename param for do_subset 6 years ago
jan 6fda991700 Rewrite/fix apply() implementation 6 years ago
jan 082236b6fd add missing arg 6 years ago
jan cc35ff802e clean up comments 6 years ago
jan 4c3250a2a1 add recursive option to subset 6 years ago
jan f875ae89d7 make sure apply() only hits each pattern one 6 years ago
jan 52adb582dc copy name when using Pattern.subset() 6 years ago
jan e38a530dee close paren in docstring 6 years ago
jan 1f17c07bef remove errant print 6 years ago
jan 79ac6a59e4 Fix mirror axis in Pattern.mirror() 6 years ago
jan 70f3ea9304 Handle mirrored gds shapes 6 years ago
jan f580e784f7 Add mirroring functions to patterns/subpatterns 6 years ago
jan d5a255a9d7 Add mirror() to shapes
Might need to fix ordering on Text.to_polygons()
6 years ago
jan 358f45c5fd Error out when we see absolute positioning in GDS
We don't support it (yet?)
6 years ago
jan c14daf2e5e Fix GDS AREF handling 6 years ago
jan 0170f45f75 GDS stores rotation in degrees 6 years ago
jan 04ff11d3cb check for zero-length names 6 years ago
jan 37a55e0d9b Add deepcopy() convenience method to Pattern 6 years ago
jan e4545bfa30 use is_scalar for checking if layer is a tuple 6 years ago
jan 3e06214b7e Add recursive "apply()" helper to pattern 6 years ago
jan 4c535e6564 return self from Text's scale_by and rotate 6 years ago
jan eae57f7158 add set_bit 6 years ago
jan 3d7df45c2b fix get_bit docs 6 years ago
jan e2b05d7c86 add fast approximate manhattanization function 7 years ago
jan 2ca27b0792 fix typo 7 years ago
jan 0fd0e259aa Merge branch 'master' of mpxd.net:jan/masque 7 years ago
jan b7b0da7432 Allow writing a list of patterns to gds (multiple topcells) 7 years ago
jan c451e93df0 Add option to check for invalid polygons when reading gds 7 years ago
jan 6aa1787ba0 add comment specifying what gdsii lib is used 7 years ago
Jan Petykiewicz 9308454ad4 allow cutting any shape, always require pyclipper 7 years ago
Jan Petykiewicz 87c2ef5948 use pyclipper for polygon cutting 7 years ago
Jan Petykiewicz b3f99ee123 abs when thresholding raster for manhattanization 7 years ago
jan 83d163a102 fix typo 7 years ago
jan f4b8f513d4 fix typos 7 years ago
jan 01395134ee Also clean vertices before cutting 7 years ago
jan a817bf6642 Remove debug code 7 years ago
jan 10cd0778b8 Add copy() method to Shape 7 years ago
jan 723944018e add documentation to Polygon.cut() 7 years ago
jan cea172e7f2 Make cut generate clean polygons 7 years ago
jan 4466198924 Add cut() function for polygon 7 years ago
jan ffbaf8f4c4 Add manhattanization functionality 7 years ago
jan 3d52566016 Improve error handling 7 years ago
jan 934bfcd74e Clean up type info 7 years ago
jan ccfd0f7f4f remove whitespace 7 years ago
jan 583dd7b018 allow caller to specify gdsii logical unit 7 years ago
jan 3b3ee216c2 add missing import 7 years ago
jan 3d89cd42a0 further fixes to ellipse bounding box 7 years ago
jan 85e2c662cc fix incomplete commit 7 years ago
jan 8256a540dc Use polar angle for ellipse bounds 7 years ago
jan fdd18ca7d8 add functions for reading/writing tuple-valued layers to gds 7 years ago
jan 1127242aa0 fix typo 7 years ago
jan dcf34536ad Improve docs for gdsii output 7 years ago
jan bf1cabe0b0 Let gdsii output handle list-specified errors 7 years ago
jan b99509289a Let layer be a tuple of ints (or just a single int like before) 7 years ago
jan 0a7c26bb08 No need to subclass 'object' in python3 7 years ago
jan 6cc6556e8a typo fix 7 years ago
jan 434178c853 correctly preserve total arc angle during normalize 7 years ago
jan 2c159f2798 remove extra polygonize 7 years ago
Jan Petykiewicz ff76626e21 fix multiple bugs in arc and ellipse 7 years ago
jan d355d84f6d fix gds name mangling in cases with fractional dose 8 years ago
jan 103e72628c Remove extra spaces 8 years ago
jan 3a460a9296 Add Text shape
Rendered using freetype-py and matplotlib

Can eliminate the matplotlib dependency if I write my own bezier code,
but that's work (and I already use matplotlib...).
8 years ago
jan 2a20a540b9 remove extra spaces 8 years ago
jan 5bf486ac81 Add all files to repository 8 years ago