Differentiable photonics framework for hardware-agnostic inverse design and layout automation
Project description
PHOXLA
PHOXLA ("FOX-luh") - Differentiable photonics, hardware-agnostic by design.
PHOXLA = PHOtonic Hardware-agnostic Optimization for eXtensible Layout Automation
PHOXLA is a differentiable photonics framework for hardware-agnostic inverse design and extensible layout automation. The goal is to treat differentiable physics as a first-class deep learning component, so photonic modules can be plugged into end-to-end trainable workflows.
Vision
- Fast differentiable exploration with physics-grounded validation workflows.
- ASM-first optimization, FDTD-assisted verification/refinement, fabrication-aware export.
- Differentiable physics modules usable as model layers/loss terms.
- Hardware-agnostic execution via backend adapters (e.g., JAX or PyTorch on CPU/GPU/TPU).
- Extensible interoperability with external solvers (including FDTDX-style workflows).
Current Status
This repository is an initial blueprint and governance scaffold. Core simulation and training modules will be added incrementally.
Planned Package Layout
src/phoxla/sim: differentiable photonic simulation core (ASM-first operators and propagation)src/phoxla/nn: NN-facing modules and differentiable operatorssrc/phoxla/inv: inverse-design workflows, optimization loops, and layout-automation hookssrc/phoxla/integrations/fdtdx: verification/refinement interoperability layer
Repository Bootstrap
See:
docs/REPO_LAUNCH_GUIDE.mddocs/REPO_ABOUT_AND_TOPICS.mddocs/PACKAGE_NAMESPACE_PLAN.mddocs/PYPI_CLAIM_PLAYBOOK.mddocs/NAMESPACE_PRIORITY.mddocs/AUTOMATION_FLOW.mddocs/SEMVER_POLICY.mddocs/ARCHITECTURE_BLUEPRINT.mddocs/COMMIT_MESSAGE_GUIDE.mdROADMAP.md
Quick Release Commands
make venv
make qa
make next-tag
make release-check
# then with PyPI token in env:
make publish-pypi
Modern Tooling Stack
- Ruff: lint + format
- Pytest: test runner
- Mypy: static type checks
- pre-commit: local hook runner
- GitHub Actions: CI (
ci.yml) + auto-tag (auto-tag.yml) + release publish (release.yml)
Local setup
make venv
. .venv/bin/activate
pre-commit install
Daily checks
make qa
Conventional commit -> version bump
feat:-> MINOR bumpfix:,perf:,refactor:-> PATCH bumpfeat!:/fix!:/BREAKING CHANGE-> MAJOR bumpdocs:,chore:,test:,ci:,style:only -> no release
End-to-end Automation Flow
- Push to
main ci.ymlruns Ruff/Mypy/Pytest/build checksauto-tag.ymlcomputes next SemVer tag and pushesvX.Y.Zrelease.ymlruns full quality/build checks on that tagrelease.ymlpublishes GitHub Release notes + uploads package to PyPI (Trusted Publishing)
auto-tag.yml writes the new version (e.g., 0.2.1) into pyproject.toml and src/phoxla/__init__.py, so manual version edits are not needed.
Versioning Policy
PHOXLA uses Semantic Versioning 2.0.0.
See docs/SEMVER_POLICY.md for the normative policy, migration notes, and commit-to-version mapping.
Push To GitHub
git add .
git commit -m "feat(core): add initial phoxla module scaffold"
git remote add origin git@github.com:phoxla/phoxla.git
git push -u origin main
Publish To PyPI (name claim)
. .venv/bin/activate
python -m build --sdist --wheel --no-isolation
python -m twine check dist/*
read -s -p "PyPI token: " PYPI_TOKEN; echo
TWINE_USERNAME=__token__ TWINE_PASSWORD="$PYPI_TOKEN" python -m twine upload dist/*
unset PYPI_TOKEN
License
Apache-2.0 (LICENSE)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file phoxla-0.2.0.tar.gz.
File metadata
- Download URL: phoxla-0.2.0.tar.gz
- Upload date:
- Size: 8.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
46a06f63d4c5672530e229bdc5698d6d50381f79b447c8dddf7be7e6c3227bca
|
|
| MD5 |
7230b3039ee58c2de2ddf039bcf62708
|
|
| BLAKE2b-256 |
2d0e64c87c9053567f34372a15ef17b938395c193c0f66db46939a21fd36b4cc
|
Provenance
The following attestation bundles were made for phoxla-0.2.0.tar.gz:
Publisher:
release.yml on phoxla/phoxla
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
phoxla-0.2.0.tar.gz -
Subject digest:
46a06f63d4c5672530e229bdc5698d6d50381f79b447c8dddf7be7e6c3227bca - Sigstore transparency entry: 963062285
- Sigstore integration time:
-
Permalink:
phoxla/phoxla@77b18b1779a5e55e76dae472eefc86497d04ac50 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/phoxla
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@77b18b1779a5e55e76dae472eefc86497d04ac50 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file phoxla-0.2.0-py3-none-any.whl.
File metadata
- Download URL: phoxla-0.2.0-py3-none-any.whl
- Upload date:
- Size: 6.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
04657e5cfbeb9350b738205a052b988285503e486abea4a98f564ddaf059a42a
|
|
| MD5 |
8732558be7d838a1aeb16e18b7ea0fed
|
|
| BLAKE2b-256 |
6862acec2f0a8ee1deefdc10c2586a5b96e9ef7545d2349d9e03a4ebafd5eb1a
|
Provenance
The following attestation bundles were made for phoxla-0.2.0-py3-none-any.whl:
Publisher:
release.yml on phoxla/phoxla
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
phoxla-0.2.0-py3-none-any.whl -
Subject digest:
04657e5cfbeb9350b738205a052b988285503e486abea4a98f564ddaf059a42a - Sigstore transparency entry: 963062288
- Sigstore integration time:
-
Permalink:
phoxla/phoxla@77b18b1779a5e55e76dae472eefc86497d04ac50 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/phoxla
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@77b18b1779a5e55e76dae472eefc86497d04ac50 -
Trigger Event:
workflow_dispatch
-
Statement type: