The dphox
module is yet another Python 3-based design tool for automating photonic device development.
Note: This is a work in progress. Expect features in the code to be unstable until version 0.1.0
. Note the low
test coverage, which will be improved in coming weeks.
The documentation contains the API reference for dphox
and the tutorials you need to get started.
We also provide a number of Colab tutorials to introduce the basics:
dp.Pattern
and dp.Curve
and various transformations / examples.dphox
?dphox
numpy
implementations for polygon and curve transformationsshapely
in favor of pyclipper
(less actively maintained).
dphox.Curve
~ shapely.geometry.MultiLineString
dphox.Pattern
~ shapely.geometry.MultiPolygon
klamath
module
provides a clean implementation of GDS I/Otrimesh
for 3D viewing/export, blender
figures at your fingertips!holoviews
and bokeh
,
allowing zoom in/out in a notebook.Device
).simphox
and MEEP
).Pattern.replace
function.dphox
phidl
: path calculations, Inkscape-like maneuverability,
functional interface.nazca
: ports, cell references, and routing.gdspy
: parametric implementations, the OG of python GDS automationYou may use pip
to install dphox
the usual way:
pip install dphox
To install all of the dependencies for visualizations as in the above demo, instead run:
pip install dphox[all]
When developing, install in your python environment using:
git clone git@github.com:solgaardlab/dphox.git
pip install -e dphox
You can then change dphox
if necessary. When importing dphox
, you can now treat it as any other module. No filepath
setting necessary because dphox
will be in your environment's site-packages
directory.
You will need python>=3.9
as well as the following (note these requirements are automatically installed):
numpy==1.21.2
scipy==1.7.1
shapely==1.7.0
klamath>=1.2
These will be installed via pip
automatically if not already installed.
The following modules are nice-to-have but optional, and are not included in default installation:
bokeh==2.2.3
holoviews==1.14.6
trimesh==3.9.30
triangle==20200424
matplotlib==3.4.3
networkx
You can also install libraries such as nazca
and gdspy
, which can be converted to
dphox
objects.