Skip to main content

A Python package for calculating limits on the performance of photonic devices using dual optimization methods.

Reason this release was yanked:

broken wheel

Project description

Dolphindes 🐬

CI: Quality CI: Tests Daily Full Tests codecov Ruff

Dolphindes (very loosely, Dual Optimization Limits for PHotonic/PHysical INverse DESign) is a Python package for calculating limits on the performance of photonic devices using dual optimization methods. It can calculate structure-agnostic performance bounds for a wide range of photonic problems. The package works by relaxing the photonic inverse design problem into a field optimization problem, which can then be further relaxed into a convex problem using Lagrange duality.

📦 Installation

1. Install System Dependencies

Make sure you have libsuitesparse-dev installed. This is required by scikit-sparse

For Debian/Ubuntu systems:

sudo apt-get update
sudo apt-get install libsuitesparse-dev

2. Clone this repo and activate the provided conda environment dolphindes.yml

3. If using your own environment, instead run

pip install .

🔧 Running Tests

To run the dolphindes tests, simply run

pytest

Optionally, provide the -s flag to print the output of the tests. You will need to have pytest and pytest-dependency installed in your environment.

📚 Documentation and Tutorials

Documentation may be found at dolphindes.readthedocs.io

Citations

If you use dolphindes in your work, please cite the following paper:

[Review article coming soon]

Additionally, if you use dolphindes to do Verlan design, you should cite the initial Verlan papers:

@article{chao_amaolo_blueprints_2025,
      title = {Bounds as blueprints: towards optimal and accelerated photonic inverse design},
      author = {Pengning Chao and Alessio Amaolo and Sean Molesky and Alejandro W. Rodriguez},
      journal = {Opt. Express},
      keywords = {Fourier transforms; Inverse design; Raman scattering; Ring resonators; Stochastic processes; Whispering gallery modes},
      number = {5},
      pages = {7337--7350},
      publisher = {Optica Publishing Group},
      volume = {34},
      month = {Mar},
      year = {2026},
      url = {https://opg.optica.org/oe/abstract.cfm?URI=oe-34-5-7337},
      doi = {10.1364/OE.585505},
}

@article{molesky_verlan_2025,
    title = {Inferring {{Structure}} via {{Duality}} for {{Photonic Inverse Design}}},
    author = {Molesky, Sean and Chao, Pengning and Amaolo, Alessio and Rodriguez, Alejandro W.},
    year = {2025},
    month = apr,
    number = {arXiv:2504.14083},
    eprint = {2504.14083},
    primaryclass = {math},
    publisher = {arXiv},
    doi = {10.48550/arXiv.2504.14083},
    archiveprefix = {arXiv}
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dolphindes-0.2.0.tar.gz (24.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dolphindes-0.2.0-py3-none-any.whl (4.9 kB view details)

Uploaded Python 3

File details

Details for the file dolphindes-0.2.0.tar.gz.

File metadata

  • Download URL: dolphindes-0.2.0.tar.gz
  • Upload date:
  • Size: 24.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for dolphindes-0.2.0.tar.gz
Algorithm Hash digest
SHA256 697ebd615ebd74967f6e117067600e3da5dff049c6e2261b143a804d9509602d
MD5 cd0e40a236d459de6ba4eb62e6d7ecf4
BLAKE2b-256 605efb5221f53fa4c776b16cd7a3369e202d5c4c0c7eb45f41e5f8f9b176872f

See more details on using hashes here.

File details

Details for the file dolphindes-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: dolphindes-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 4.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for dolphindes-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a539885a4aae1ee5012a393c401d72089bac5fe546a0dd918b0cd38c5b1ffd88
MD5 4cc422db4d3515d8504f984597f9ecd8
BLAKE2b-256 c231ce8abb8dc736c8210a3461fdd46bb1c530155b3a17cc1f2c871ac4bb247c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page