Skip to main content

A package for light propagation in fiber optics.

Project description

Propagation of mode in an adiabatic 2x1 modally-specific photonic lantern.

Meta

Python

Documentation Status

Scientific article

Testing

Unittest Status

Unittest coverage

Google Colab

PyPI

PyPI version

PyPI downloads

Anaconda

Anaconda version

Anaconda downloads

Latest release date

SuPyMode

This project aims to develop an useful tool design and optimize fiber optic tapered component. SuPyMode is a Python library linked to a c++ core allowing for a flexible interface and fast computing core. The library also aims to offer the end-user a great vizual tools for data analysis. To this day, SuPyMode as been proven a useful tool to develop very-short 2x1 and 3x1 modally specific photonic lantern with very low loss and cross-talk.

Features

  • Fast and efficient simulation of fiber optic tapered components.

  • User-friendly interface for easy integration into existing workflows.

  • Comprehensive visualization tools for data analysis and interpretation.

Installation

SuPyMode is available on PyPI and Anaconda. Install it with:

pip install SuPyMode
conda install SuPyMode

See the online documentation for detailed usage and additional examples.

Quick example

Below is a short example computing the mode propgation in a simple fiber.

from SuPyMode.workflow import Workflow, fiber_loader, Boundaries, BoundaryValue, DomainAlignment

wavelength = 1550e-9

fiber = fiber_loader.load_fiber('SMF28', clad_refractive_index=1.4444, remove_cladding=False)

boundaries = [
   Boundaries(right=BoundaryValue.SYMMETRIC, top=BoundaryValue.SYMMETRIC),
   Boundaries(right=BoundaryValue.SYMMETRIC, top=BoundaryValue.ANTI_SYMMETRIC)
]


workflow = Workflow(
   fiber_list=[fiber],             # List of fiber to be added in the mesh, the order matters.
   wavelength=wavelength,          # Wavelength used for the mode computation.
   resolution=80,                  # Number of point in the x and y axis [is divided by half if symmetric or anti-symmetric boundaries].
   x_bounds=DomainAlignment.LEFT,  # Mesh x-boundary structure.
   y_bounds=DomainAlignment.BOTTOM,# Mesh y-boundary structure.
   boundaries=boundaries,          # Set of symmetries to be evaluated, each symmetry add a round of simulation
   n_sorted_mode=3,                # Total computed and sorted mode.
   n_added_mode=2,                 # Additional computed mode that are not considered later except for field comparison [the higher the better but the slower].
   plot_geometry=True,             # Plot the geometry mesh before computation.
   auto_label=True,                # Auto labeling the mode. Label are not always correct and should be verified afterwards.
   itr_final=0.05,                 # Final value of inverse taper ratio to simulate
   index_scrambling=0              # Scrambling of refractive index value in order to lift mode degeneracy [useful for some analysis]
)

workflow.superset.plot(plot_type='field', itr_list=[1.0, 0.1])

workflow.superset.plot(plot_type='index')

workflow.superset.plot(plot_type='normalized-coupling')

workflow.superset.plot(plot_type='adiabatic')

Building from source

For development or manual compilation, clone the repository and run:

git submodule update --init
mkdir build && cd build
cmake ../ -G"Unix Makefiles"
sudo make install
cd ..
python -m pip install .

Testing

Run the unit tests with:

pip install SuPyMode[testing]
pytest

Citing SuPyMode

If you use SuPyMode in academic work, please cite:

@article{de2024supymode,
   title={SuPyMode: an open-source library for design and optimization of fiber optic components},
   author={de Sivry-Houle, Martin Poinsinet and Becerra Deana, Rodrigo Itzamna and Virally, St{\'e}phane and Godbout, Nicolas and Boudoux, Caroline},
   journal={Optics Continuum},
   volume={3},
   number={2},
   pages={242--255},
   year={2024},
   publisher={Optica Publishing Group}
}

Contact

For questions or contributions, contact martin.poinsinet.de.sivry@gmail.com.

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

supymode-2.2.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

supymode-2.2.2-cp312-cp312-macosx_15_0_arm64.whl (3.5 MB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

supymode-2.2.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

supymode-2.2.2-cp311-cp311-macosx_15_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.11macOS 15.0+ ARM64

File details

Details for the file supymode-2.2.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for supymode-2.2.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 f492532cca3f5527cf5f80721a0d37fc2ba8ae4ed30cff85dba2d9f9b8407f26
MD5 4bda9daf17e5d88f6712d578b08e20a8
BLAKE2b-256 a6019d349d4c00141b863bd8b88a3dc95c34d6e5afe4a34fbf0b73e7f38fc995

See more details on using hashes here.

File details

Details for the file supymode-2.2.2-cp312-cp312-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for supymode-2.2.2-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 314bc1d71dd753b0e2da218e0396f0edb5294f641c458112ed89c3df8238a2ab
MD5 2ae095846d9308b2b3eb29bdd177836d
BLAKE2b-256 fd6b63f269149a5c6a3583533f332c9b8df7d3f0259c4e1d22b0bf8d42678df3

See more details on using hashes here.

File details

Details for the file supymode-2.2.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for supymode-2.2.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 aded586ae02f9fe70395c34b44c5208c58084bf1e54a5402c06e08bf0e51724d
MD5 5b42280615eeaf448620a6a2513a3d6c
BLAKE2b-256 8ac9bad2e739f9b58b33d51aa7a30f927c855435589d073024e08e9eba50d70d

See more details on using hashes here.

File details

Details for the file supymode-2.2.2-cp311-cp311-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for supymode-2.2.2-cp311-cp311-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 56780db3e08231c3f2f63532cf870facc0bf329360110b3508bc7c7023795d19
MD5 044fb6a2e228c8016ba191c19b75c3f7
BLAKE2b-256 c96445f55d1dad78a8dd34fad89468adaea794ffe23fe0a833ddc02d1d706f5d

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