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