Awesome
<h1 align="center">DPhox</h1> <p align="center"> <img src="https://user-images.githubusercontent.com/7623867/134089718-b4de5f82-adfb-4b20-9b98-b230748a73f9.png" width=50% height=50% alt="dphox"> </p><!-- start at-a-glance -->
DPhox 0.0.8
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.
Documentation and tutorials
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:
- Photonic design
- Fundamentals: the core classes
dp.Pattern
anddp.Curve
and various transformations / examples. - Design workflow: concepts for designing a chip in an automated fabless workflow.
Why dphox
?
Gallery
Advantages of dphox
- Efficient raw
numpy
implementations for polygon and curve transformations - Dependence on
shapely
in favor ofpyclipper
(less actively maintained).dphox.Curve
~shapely.geometry.MultiLineString
dphox.Pattern
~shapely.geometry.MultiPolygon
- The
klamath
module provides a clean implementation of GDS I/O - Uses
trimesh
for 3D viewing/export,blender
figures at your fingertips! - Plotting using
holoviews
andbokeh
, allowing zoom in/out in a notebook. - More intuitive representation of GDS cell hierarchy (via
Device
). - Interface to photonic simulation (such as
simphox
andMEEP
). - Inverse-designed devices may be incorporated via the
Pattern.replace
function. - Read and interface with foundry PDKs automatically, even if provided via GDS.
Inspirations for dphox
phidl
: path calculations, Inkscape-like maneuverability, functional interface.nazca
: ports, cell references, and routing.gdspy
: parametric implementations, the OG of python GDS automation
Installation
Getting started
You 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]
Development
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.
Requirements
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.
Optional requirements
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.