Commit Graph

564 Commits

Author SHA1 Message Date
5452bc5608 more fixes and improvements 2023-10-15 16:18:32 -07:00
d9fe295f4f get things working with a LazyLibrary hack while we think about cycles 2023-10-15 16:18:32 -07:00
f4537a0feb Lots of progress on tutorials 2023-10-15 16:18:32 -07:00
c31d7dfa2c Add note about reproducibility for DXF 2023-10-15 16:18:32 -07:00
61b381cfaa remove dead code 2023-10-15 16:18:32 -07:00
cca7cbaae1 formatting 2023-10-15 16:18:32 -07:00
b75c8de0c4 lots of fixes to get test_rep running 2023-10-15 16:18:32 -07:00
92f7fce6ff improve gzipped file reproducibility
Mostly avoid writing the old filename and modification time to the gzip
header
2023-10-15 16:18:32 -07:00
ea87418bf5 clarify comment 2023-10-15 16:18:32 -07:00
e812c69bfb get rid of Mapping stuff on PortsList 2023-10-15 16:18:32 -07:00
71db073a54 add todos 2023-10-15 16:18:32 -07:00
a6cb276468 add AbstractView 2023-10-15 16:18:32 -07:00
090e86644a Move Abstract into its own file 2023-10-15 16:18:32 -07:00
a1073eca6b handle library=None 2023-10-15 16:18:32 -07:00
0368cf7a00 library can generate abstracts 2023-10-15 16:18:32 -07:00
e288c3f5e0 B becomes BB for searchability 2023-10-15 16:18:32 -07:00
3b8866732b PortsRef -> Abstract 2023-10-15 16:18:32 -07:00
6b01b43559 flake8-aided fixes 2023-10-15 16:18:32 -07:00
db9b39dbc0 fix more type issues 2023-10-15 16:18:32 -07:00
557c6c98dc more wip -- most central stuff is first pass done 2023-10-15 16:18:32 -07:00
6549faddbb wip -- more fixes 2023-10-15 16:18:32 -07:00
jan
9efb6f0eeb wip 2023-10-15 16:18:32 -07:00
jan
d9ae8dd6e3 wip 2023-10-15 16:18:32 -07:00
f7902fa517 busL -> mpath 2023-10-15 16:18:32 -07:00
2635c6c20c some type updates 2023-10-15 16:18:32 -07:00
c7f3e7ee52 Remove support for dose
Since there isn't GDS/OASIS level support for dose, this can be mostly
handled by using arbitrary layers/dtypes directly. Dose scaling isn't
handled as nicely that way, but it corresponds more directly to what
gets written to file.
2023-10-15 16:18:32 -07:00
f7a2edfe23 fix some type-related issues 2023-10-15 16:18:32 -07:00
a0ca53f57a get rid of "identifier" 2023-10-15 16:18:32 -07:00
jan
7ca017d993 wip again 2023-10-15 16:18:32 -07:00
jan
db9a6269a1 delete duplicate utils submodule 2023-10-15 16:18:32 -07:00
6f696bfc71 partial work on device libraries 2023-10-15 16:18:32 -07:00
f7b8f2db0c various fixes 2023-10-15 16:18:32 -07:00
e3511ed852 remove duplicatre __delitem__ 2023-10-15 16:18:32 -07:00
a4f89e6f48 improve docs 2023-10-15 16:18:32 -07:00
5f35e8c8e3 indirect type spec for Pattern 2023-10-15 16:18:32 -07:00
jan
52f0b4aa93 Add lib types 2023-10-15 16:18:32 -07:00
jan
c95b2f4c0d bifurcate Device into DeviceRef 2023-10-15 16:18:32 -07:00
e932687210 make error message prettier 2023-10-15 16:18:32 -07:00
jan
7aaf73cb37 WIP: make libraries and names first-class! 2023-10-15 16:18:32 -07:00
f834ec6be5 Avoid generating a container if only a single port is passed 2023-10-15 16:18:32 -07:00
885b259fb7 allow bounds to be passed as args 2023-10-15 16:18:32 -07:00
3f986957ac allow passing a single Tool to be used as the default 2023-10-15 16:18:32 -07:00
1c3c032434 Add functionality for building paths (single use wires/waveguides/etc) 2023-10-15 16:18:32 -07:00
afcbd315ae Fix extra vertex added during OASIS loading 2023-01-24 14:14:10 -08:00
jan
8edb7b0956 round().astype() -> rint(...) 2023-01-11 18:29:28 -08:00
5b5cbe94d3 Move from setuputils and setup.py to hatch and pyproject.toml 2023-01-11 17:37:36 -08:00
a713967911 Add an alternate constructor for axis-aligned 2D grids 2023-01-04 22:56:17 -08:00
51b7021bdc bump version to 2.7 2022-06-08 21:14:41 -07:00
b188589b60 Fix / simplify some cases where the arc is a sector 2022-06-08 21:12:39 -07:00
eb9682b1b8 Avoid calling new.unlock() in __deepcopy__()
since the new object's properties aren't necessarily deepcopied yet...
2022-06-08 21:12:39 -07:00
48b28351ed speed up GDS writing
by preallocating xy array and directly rounding to target dtype
2022-06-08 21:12:39 -07:00
bfabd351c4 fix circular import 2022-06-08 21:12:39 -07:00
jan
4cc824526b fix deepcopy for locked shapes 2022-04-17 19:04:18 -07:00
e48183ee0b dose==1 is the identity situation 2022-04-07 17:47:30 -07:00
6886360f6d fix getting displacements in Arbitrary repetition 2022-04-01 17:35:21 -07:00
b5ddb5749c fix calculation of displacements 2022-04-01 17:35:12 -07:00
jan
67d312162a speed up as_pattern()
mainly used by `flatten()`
2022-04-01 17:33:24 -07:00
97db83a1d5 add utils.vertices.poly_contains_points 2022-04-01 17:30:25 -07:00
fd0b2ba4cd no longer ignore numpy types 2022-04-01 17:30:13 -07:00
9f1c7aea01 add _displacements to __slots__ 2022-04-01 17:30:07 -07:00
3640de27c7 Fix OASIS loading when strings are stored by-reference 2022-04-01 17:30:00 -07:00
ed9b0df057 fix scaling for objects with repetitions 2022-03-16 23:54:26 -07:00
jan
a4aa50d814 fix another instance where numpy prohibits using not bounds 2022-02-28 23:43:16 -08:00
jan
2b8195ad3e move dev2pat and pat2dev into masque.builder.port_utils 2022-02-28 23:38:55 -08:00
jan
36f6edac21 fix wrong var name 2022-02-28 23:38:34 -08:00
jan
210f5c21bc wrap_device can be used on DeviceLibrary 2022-02-28 23:38:17 -08:00
jan
bfee560693 simplify type hints 2022-02-28 23:37:48 -08:00
jan
f4c2357737 fix type hint 2022-02-28 23:03:42 -08:00
jan
20be409341 fix numpy complaining about .any() / .all() 2022-02-28 23:03:23 -08:00
jan
d8b60da827 use_ours & use_theirs should be passed verbatim to the underlying library 2022-02-28 23:03:01 -08:00
jan
3b0ef1e08d always couple LibDeviceLibrary keys to the underlying Library
See comment for why this is necessary
2022-02-28 23:02:36 -08:00
jan
7603a7a1c8 fix typevar naming 2022-02-28 23:00:53 -08:00
jan
0c1954c9d1 fix missing imports 2022-02-28 23:00:31 -08:00
jan
30025ba081 fixup dxf read 2022-02-28 22:59:45 -08:00
jan
5ef34794ff keep ordering stable for same-y ports 2022-02-28 22:59:30 -08:00
jan
c8b4075fcc Avoid circular import 2022-02-27 21:26:51 -08:00
jan
40b98b2511 add missing colon 2022-02-27 21:26:23 -08:00
jan
0471addd65 add get_bounds_nonempty 2022-02-27 21:23:03 -08:00
jan
780d1ca97f export LibDeviceLibrary 2022-02-27 21:23:03 -08:00
jan
fc7a6c6f4a fix some unused code 2022-02-27 21:23:03 -08:00
jan
81430fe632 add LibDeviceLibrary 2022-02-27 21:23:03 -08:00
jan
6a1208bc33 add some helper functions to libraries 2022-02-27 21:23:03 -08:00
jan
f36350ebee Add some warnings around cache invalidation when mutating items 2022-02-27 21:23:03 -08:00
jan
2e5d51b0af resolve name conflicts rather than just giving up
this lets us merge libraries without having to mutate `other`, which
brings a bunch of problems around cache invalidation
2022-02-27 21:23:03 -08:00
jan
566ba99f9c set_const doesn't need to take in a separate key, can just use the pattern's name
might as well make the convenience function convenient
2022-02-27 21:23:03 -08:00
jan
86315fc32b improve DeviceLibrary docstring 2022-02-27 21:23:03 -08:00
jan
f178e94d82 remove old overloads 2022-02-27 21:23:03 -08:00
jan
7612a2660c add DeviceLibraryError 2022-02-27 21:23:03 -08:00
7aa850a239 add todo note 2022-02-23 16:03:26 -08:00
9a9a05d1d7 add guillotine_bssf_sas 2022-02-23 16:03:26 -08:00
c2994b74bd add utils.pack2d.pack_patterns 2022-02-23 16:03:26 -08:00
a9e3bf8b2a return a set of rejected indices 2022-02-23 16:03:24 -08:00
fc1a0f5a5a break apart utils into submodules, and add utils.pack2d 2022-02-23 16:01:51 -08:00
jan
a4fe3d9e2e Use ArrayLike and NDArray wherever possible. Some type fixes and some related corner cases 2022-02-23 15:47:38 -08:00
jan
89f327ba37 reformat some multiline arg lists and add missing 'None' return types 2022-02-23 15:16:25 -08:00
47e8cab73c fix format string now that ptypes are str-typed 2021-06-24 23:25:15 -07:00
a92ab9425b typo in 4788fa3c 2021-06-23 22:42:39 -07:00
576077c461 add docstring for Pattern.rename() 2021-06-23 22:39:24 -07:00
4788fa3ca5 add Device.rename() 2021-06-23 22:39:12 -07:00
dbee0027b2 fix wrap_repated_shapes for labels 2021-06-23 22:39:02 -07:00
52c6634a25 fix port comparison regression 2021-06-23 22:35:43 -07:00
886bd59726 should be casting with numpy.array() not .ndarray() 2021-06-22 19:00:43 -07:00
4796676a4e use ArrayLike when accepting pseudo-ndarrays 2021-06-22 18:59:13 -07:00
3aefa644e5 fix type annotations for Device.__getitem__ 2021-06-22 18:26:05 -07:00
65466a5986 Force keyword args in more cases 2021-06-18 18:46:05 -07:00
21ef4207df Enable repetition arg for other Polygon constructors 2021-06-18 18:45:40 -07:00
78a4416f4c Fix wrap_repeated_shapes 2021-06-15 16:11:55 -07:00
0d733bdc6f Breaking change: Use string-valued ptypes, with default value 'unk' 2021-06-15 15:23:20 -07:00
jan
44b08a8dae bump version to 2.5 2021-03-26 10:34:30 -07:00
jan
e2fdd5a347 make klamath the default gdsii reader/writer, and install it automatically
python-gdsii code is now under masque.file.python_gdsii
2021-03-26 10:34:02 -07:00
jan
689312cc87 don't include newlines in version string 2021-03-26 10:29:48 -07:00
jan
5b84a436a0 Make flatten() work in-place on all subpatterns (avoid copies and repeated calls). Also fix a bug around identifier generation introduced in a5900f6ad. 2021-03-22 11:29:50 -07:00
8ad4082f6d Fix offset complaining if it gets a Vec3 2021-03-08 17:11:33 -08:00
a5900f6ade BREAKING change shape identifers generated when flattening 2021-03-08 17:10:42 -08:00
db4148a0ff Don't trash label identifiers 2021-03-08 17:10:42 -08:00
7225fd5715 add traceback to port type warnings 2021-03-08 17:10:42 -08:00
jan
1dc7d5bd56 2-element paths are not polygons 2021-02-13 15:47:04 -08:00
jan
5aa41f5e12 fix reading lwpolylines 2021-02-13 15:47:04 -08:00
939ad5451c enable pickling of LockableImpl 2021-01-08 21:21:17 -08:00
88d42807be label axes in visualization 2021-01-08 21:20:03 -08:00
29ee13a8ab fix comment 2020-12-20 20:43:02 -08:00
cf2413f9e3 remove_colinear_vertices implementation assumes no duplicate vertices, so we need to remove them first 2020-12-20 20:42:50 -08:00
bce3d9f37c Avoid placing duplicate vertices when polygonizing an arc 2020-12-20 20:40:59 -08:00
0fce7fd099 bump version to v2.4 2020-12-05 14:52:55 -08:00
479e0c3c2e fix mirroring for rotated ports/devices 2020-12-05 14:50:16 -08:00
b7383a30ca fix mirroring across y for arcs and ellipses 2020-12-05 14:49:57 -08:00
177f9952a5 Add builder submodule, Device and Port definitions, and DeviceLibrary 2020-11-09 22:09:47 -08:00
ad51801c5d minor fixes to rotate() 2020-11-09 22:06:44 -08:00
6c4fe0e9e4 Add octagon constructor 2020-11-09 22:06:19 -08:00
8e1c05cf73 add mirror2d() to Rotatable 2020-11-09 22:05:56 -08:00
09a5e4a2db type-related fixes and improvements 2020-11-09 22:04:04 -08:00
4308bdeb56 Add parent class MasqueError and use it for traits and all other exceptions 2020-11-09 21:59:28 -08:00
3653a33534 add implementation notes 2020-11-09 21:55:46 -08:00
6402c6242e add full_load option to load_library 2020-11-02 20:57:29 -08:00
6ead7231a8 make raw_mode an arg to read()` 2020-11-02 20:56:56 -08:00
74a0a4f7d2 bump version to 2.3 2020-11-01 19:46:25 -08:00
ccb42e220f cosmetic and doc changes 2020-11-01 19:45:57 -08:00
b9322be77f move VERSION into a .py file that gets directly parsed by setup.py
avoids possible issues with pyinstaller
2020-11-01 19:45:31 -08:00
1b400605b1 use addsp() to consolidate some existing code 2020-11-01 19:35:12 -08:00
3a9eca91b5 add addsp() convenience function to Pattern 2020-11-01 19:34:47 -08:00
517a6dec98 remove duplicate setattr definition
already set by LockableImpl
2020-11-01 19:34:25 -08:00
2bc03cbbf4 improve some more type annotations using TypeVar 2020-11-01 19:33:43 -08:00
eb11f31960 improve type hints for Library 2020-10-26 19:58:25 -07:00
f364970403 style and type fixes (per flake8)
could potentially fix some bugs in `Library` class and dxf reader
2020-10-16 19:00:50 -07:00
f6ad272c2c bump version to v2.2 2020-10-10 19:12:56 -07:00
7ed3b26b02 skip assignment in dfs() to avoid PatternLockedError on unmodified patterns 2020-10-10 19:12:17 -07:00
5bc82b9d49 __iter__ should actually return an iterator 2020-10-10 19:11:52 -07:00
0f35eb5e58 fix dxf reader 2020-10-10 19:11:35 -07:00
4a7e20d6ba improve type annotations in dxf writer 2020-10-10 19:11:22 -07:00
c23c391d83 disable locking for annotations
until I can find a better way to do it
2020-10-10 19:10:17 -07:00
08cf7ca4b1 avoid calling to_polygons on Polygons (for speed) 2020-09-29 01:01:10 -07:00
de4726955b add load_libraryfile convenience wrapper 2020-09-29 01:00:37 -07:00
ce5d386a24 Determine if an existing file is gzipped based on magic bytes, not suffix 2020-09-29 00:57:47 -07:00
03a359e446 add more dict-like methods 2020-09-28 23:49:42 -07:00
b873a5ddf3 make __getitem__ call get_primary rather than the other way around
this makes subclassing easier
2020-09-28 23:49:33 -07:00
682a99470f Bump version to 2.1 2020-09-26 17:41:08 -07:00
aa5696d884 Add Library management functionality 2020-09-26 17:37:23 -07:00
7cad46fa46 add klamath-based gds read/write 2020-09-26 17:35:05 -07:00
c6684936cf Improve docs, error messages, and type annotations 2020-09-26 17:33:46 -07:00
84f811e9d1 move clean_vertices functionality out into a common function 2020-09-26 17:32:12 -07:00
0e4b6828df Disable height warning for DXF 2020-09-26 17:24:04 -07:00
a02dfdc982 remove dependency list from top-level comment 2020-09-26 00:44:56 -07:00
f51144ae6a misc doc/import/typing fixes 2020-09-20 16:32:17 -07:00
3f59168cec Use chain() instead of adding lists 2020-09-20 16:32:17 -07:00
5f72fe318f Loosen requirements from List to Sequence 2020-09-20 16:32:17 -07:00
64fbd08cac don't attempt to set structure properties 2020-09-20 16:32:17 -07:00
c4dfd06a42 improve type annotations 2020-09-20 16:32:17 -07:00
f996a1629f limit number of arguments on more functions 2020-09-20 16:32:17 -07:00
0e04633f61 Force use of keyword args on most constructors 2020-09-20 16:32:17 -07:00
2a8e43cbcd bump version to 2.0 2020-09-20 16:32:17 -07:00
49a3b4e322 add support for annotations
and other fixes
2020-09-20 16:32:17 -07:00
ea21353d2e fix incorrect variable name 2020-09-20 16:32:17 -07:00
e330c34a0c import layer_t at top level 2020-09-20 16:32:17 -07:00
92a3b9b72e documentation fixes/updates 2020-09-20 16:32:17 -07:00
e7c8708f7f prefer f-strings 2020-09-20 16:32:17 -07:00
3ec28d4720 typo fixes 2020-09-20 16:32:17 -07:00
b845b0f7bc move shape conversions to their own functions, and use raw mode 2020-09-20 16:32:17 -07:00
352c03c0ae remove use_dtype_as_dose arg 2020-09-20 16:32:17 -07:00
cbb5462fcb spelling fix and wrong import 2020-09-20 16:32:17 -07:00
b4a19a3176 fix @abstractmethod on wrong function 2020-09-20 16:32:17 -07:00
d14182998b various fixes 2020-09-20 16:32:17 -07:00
b98553a770 set repetition on subpattern 2020-09-20 16:32:17 -07:00
99ded5c113 Don't bother checking that dose is a scalar 2020-09-20 16:32:17 -07:00
f57ccc073d add raw arg, which skips setter funcs 2020-09-20 16:32:17 -07:00
7ce601dc1d Enable repeated shapes in gdsii and oasis 2020-09-20 16:32:17 -07:00
629a6a9ba2 enable per-shape repetitions 2020-09-20 16:32:16 -07:00
ad6fa88e53 Expect name to still be a string after disambiguation
Check that encode('ascii') doesn't make it zero-length, but don't
actually return the encoded form.
2020-09-20 16:32:16 -07:00
794ebb6b37 repetition related fixup 2020-09-20 16:32:16 -07:00
bab40474a0 Add repetitions and split up code into traits 2020-09-20 16:32:16 -07:00
d4fbdd8d27 add fast-path for 0-degree rotations 2020-08-11 01:19:15 -07:00
0fa073b488 Make sure linspace gets an integer number of points 2020-07-21 20:38:38 -07:00
89bd1e6abe only add new_children (marginally faster) 2020-07-12 03:50:32 -07:00
a4b5776208 Don't return early, since we add patterns to memo before they've been checked 2020-07-12 03:50:19 -07:00
0589fbb1b8 bump version to v1.5 2020-07-08 18:42:39 -07:00
1ae9225130 add rename() method for Pattern 2020-07-08 18:36:19 -07:00
f3a1db30c5 Fix order of rotation/mirror/offset when calling as_pattern() on repetitions 2020-07-08 18:36:14 -07:00
53d2a9ca1a Only swap between tuple/list if actually necessary 2020-05-23 19:39:48 -07:00
07ee25e735 add subpatterns_by_id() 2020-05-23 19:39:03 -07:00
1976c6e684 Add recursive arg to referenced_patterns_by_id 2020-05-23 19:38:48 -07:00
09615eaea6 use set() to remove any duplicates in patterns 2020-05-23 19:38:17 -07:00