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.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

supymode-2.2.0-cp312-cp312-macosx_15_0_arm64.whl (3.2 MB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

supymode-2.2.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

supymode-2.2.0-cp311-cp311-macosx_15_0_arm64.whl (2.4 MB view details)

Uploaded CPython 3.11macOS 15.0+ ARM64

File details

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

File metadata

File hashes

Hashes for supymode-2.2.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 cad0985470bec7c144037825a59441f29609dcfb9b44a7957db2a5930a6cdb64
MD5 0fa0984dc8fa423b2ff24857b131f7a8
BLAKE2b-256 182d3e6374f8cd8c804ee569703b43cefe047783f9d39a5a30b404e198d32f6f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for supymode-2.2.0-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 3ac69f728ec7bee7cfc0644408ca03527b6ee7c576983cf42886b0949269aeb1
MD5 f64e42b4f0964f4ae5941564dbede1c5
BLAKE2b-256 1b359a461dc04ddbf85dd24ac75ca44ec671c893e5bdf4459f570590886daf54

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for supymode-2.2.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 5ed5853a911bacad2e1bf3d3c00b8e78d2878c458c918629e7181292988e1158
MD5 5ac8100fb8c2dace53f33e1b87d9dd6f
BLAKE2b-256 56be5325ae1082916a411ba08e1e8a1c00476eb77401f7eb727003843987c236

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for supymode-2.2.0-cp311-cp311-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 625c935220c86e37c2f703d261840547b5c690834322bc1df15776e6e704b99a
MD5 0aa4103b9caa3c2b3123aa62c3477640
BLAKE2b-256 aa8dda6e8e09920f6f5860d28da1cdaa01af82fd7dedd06827467ab739dd9568

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