Skip to main content

Simphony: A simulator for photonic circuits

Project description

Simphony: A Simulator for Photonic Circuits

Development version PyPI Version PyPI - Python Version Build Status pre-commit Documentation Status License Latest Commit Simphony logo

Simphony, a simulator for photonic circuits, is a fundamental package for designing and simulating photonic integrated circuits with Python.

Key Features:

  • Free and open-source software provided under the MIT License
  • Completely scriptable using Python 3.
  • Cross-platform: runs on Windows, MacOS, and Linux.
  • Subnetwork growth routines
  • A simple, extensible framework for defining photonic component compact models.
  • A SPICE-like method for defining photonic circuits.
  • Complex simulation capabilities.
  • Included model libraries from SiEPIC and SiPANN.

Developed by CamachoLab at Brigham Young University.

Installation

Simphony can be installed via pip for Python 3.8+:

python3 -m pip install simphony

Documentation

The documentation is hosted online.

Bibtex citation

@article{DBLP:journals/corr/abs-2009-05146,
  author    = {Sequoia Ploeg and
               Hyrum Gunther and
               Ryan M. Camacho},
  title     = {Simphony: An open-source photonic integrated circuit simulation framework},
  journal   = {CoRR},
  volume    = {abs/2009.05146},
  year      = {2020},
  url       = {https://arxiv.org/abs/2009.05146},
  eprinttype = {arXiv},
  eprint    = {2009.05146},
  timestamp = {Thu, 17 Sep 2020 12:49:52 +0200},
  biburl    = {https://dblp.org/rec/journals/corr/abs-2009-05146.bib},
  bibsource = {dblp computer science bibliography, https://dblp.org}
}

Development

We welcome contributions to Simphony in the form of bug reports, feature requests, and pull requests. Please see the contributing guide.

To develop locally, clone the repository and run the make commands to set up your development environment.

git clone https://github.com/BYUCamachoLab/simphony.git
python3 -m venv env   # or use your preferred virtual environment tool
source env/bin/activate
make install

We use pre-commit to maintain code quality. The hooks are automatically installed when invoking the make targets. Pre-commit will now run on every commit. If it makes any modifications, the commit will fail and you'll have to restage the changes before continuing with the commit.

If you truly, desperately need to skip pre-commit in one instance, you can use:

git commit --no-verify -m "Commit message"

Pleasee don't make a habit of it.

There are a few other useful targets in the Makefile:

  • make test: Run the unit tests
  • make doc: Build the documentation

Distribution

Simphony is available on PyPI and can be installed via pip:

python3 -m pip install simphony

License

Simphony is licensed under the MIT license. See the LICENSE file for more details.

Releasing (Danger Zone)

Only the project maintainer should create releases.

A note on the development cycle. The master branch is the "latest" branch with a version of the project that always works. Features and bug fixes are developed in separate branches and then merged into master when ready.

When preparing for a new release, it's appropriate to increment the version number in advance of the release and before all the changes are merged in. You can start the next version and increment the version number by running:

make major
make minor
make patch

This project adheres to Semantic Versioning, which means that the version number is incremented according to the following rules:

  • MAJOR version when you make incompatible API changes,
  • MINOR version when you add functionality in a backwards compatible manner, and
  • PATCH version when you make backwards compatible bug fixes.

There are also software lifecycle parts to the version number:

  • BUILD version is for multiple versions within a release (i.e. "rc1", "rc2", etc.)
  • RELEASE version cycles through "rc(n)" and then empty string for final release.

A version with a "rc" number indicates it is not a final release. When you're ready to create the final release, make sure you've filled out the corresponding entry in the CHANGELOG. Follow the format of previous recent entries. Make sure you have a clean working tree (git). Then, run:

bumpversion release
make release

This will remove the "rc" number, tag the commit, push the tag to git, upload a build to PyPI, and publish the documentation to ReadTheDocs. Because this process is irreversible and version numbers cannot be reclaimed from PyPI, make sure all tests are passing and the documentation is up to date before running this command.

A standard version number progression might look something like this:

  • 2.0.1
  • 2.0.2rc0
  • 2.0.2rc1
  • 2.0.2

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

simphony-0.7.3.tar.gz (4.5 MB view details)

Uploaded Source

Built Distribution

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

simphony-0.7.3-py3-none-any.whl (4.9 MB view details)

Uploaded Python 3

File details

Details for the file simphony-0.7.3.tar.gz.

File metadata

  • Download URL: simphony-0.7.3.tar.gz
  • Upload date:
  • Size: 4.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for simphony-0.7.3.tar.gz
Algorithm Hash digest
SHA256 39e094f70cf3230abe88516b34f34b017e55d7a3695660dda34d12b6051091c3
MD5 7a157e68bbebc6971c411e65bbf84b4d
BLAKE2b-256 c2f58bd2cae4c1b6ac3f1c0e0857e70ef0794a7e66fed15015a211f4f38c8539

See more details on using hashes here.

File details

Details for the file simphony-0.7.3-py3-none-any.whl.

File metadata

  • Download URL: simphony-0.7.3-py3-none-any.whl
  • Upload date:
  • Size: 4.9 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for simphony-0.7.3-py3-none-any.whl
Algorithm Hash digest
SHA256 e66b79286bd787336c024b5c38fddf83058298797b12fd8bdc4f612d9adeabe0
MD5 6348682767d2b7ba123fe15c2d04c69d
BLAKE2b-256 a1c50c259c5c0aea6fd045bae0ad4042239976a46ffc1bc1e32028932a56da61

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