Skip to main content

PyPI GitHub Conda DOI

License Testing Docs Downloads

Try JupyterLite

Mie scattering calculations in pure Python

miepython provides a validated and efficient implementation of Mie scattering for spherical particles. It reproduces established reference results (including Wiscombe’s MIEV0) and is designed for scientific, educational, and computational research applications in optics.

The library implements the full Mie solution, including:

  • extinction, scattering, and absorption efficiencies

  • asymmetry parameter (scattering anisotropy)

  • angle-resolved scattering intensities

  • Mie expansion coefficients

  • complex amplitude functions and Mueller matrices

  • E-field and H-field calculations in the near-field around a sphere

The implementation is numerically stable for a wide range of size parameters and refractive indices, including lossy materials and high-index contrasts.

JupyterLite Implementation

The entire package can be used immediately in a browser — without installation — using the JupyterLite interface:

Try JupyterLite

This environment runs entirely client-side (Pyodide), and supports:

  • interactive notebooks

  • real-time plotting

  • full access to miepython functions

  • reproducible experiments (downloadable notebooks)

This makes it ideal for teaching, demonstrations, or quick exploratory calculations.

Installation

Install with pip:

pip install miepython

Or via conda:

conda install -c conda-forge miepython

Quick Start

A typical calculation is straightforward:

import miepython as mie

m = 1.5 - 0.1j     # refractive index
d = 100            # diameter (nm)
lambda0 = 314.15   # wavelength (nm)

qext, qsca, qback, g = mie.efficiencies(m, d, lambda0)

Documentation and Examples

The full documentation is available on ReadTheDocs:

Docs

Representative results simple examples:

https://github.com/scottprahl/miepython/tree/main/miepython/examples

https://raw.githubusercontent.com/scottprahl/miepython/main/docs/images/01.svg https://raw.githubusercontent.com/scottprahl/miepython/main/docs/images/02.svg https://raw.githubusercontent.com/scottprahl/miepython/main/docs/images/03.svg https://raw.githubusercontent.com/scottprahl/miepython/main/docs/images/04.svg https://raw.githubusercontent.com/scottprahl/miepython/main/docs/images/05.svg

Performance and Acceleration

miepython supports optional Numba JIT compilation:

import os
os.environ["MIEPYTHON_USE_JIT"] = "1"  # must be set before import
import miepython

This can provide 10–50× speedups for large parameter sweeps or ensemble calculations.

Benchmark example (100,000 particles):

Version

Time

Speedup

Pure Python

4.00 s

JIT Enabled

0.15 s

27×

Citation

If you use miepython in academic, instructional, or applied technical work, please cite:

Prahl, S. (2026). miepython: Pure python calculation of Mie scattering (Version 3.2.0) [Computer software]. Zenodo. https://doi.org/10.5281/zenodo.7949263

BibTeX:

@software{prahl_miepython_2026,
  author  = {Scott Prahl},
  title   = {{miepython}: A Python library for Mie scattering calculations},
  url     = {https://github.com/scottprahl/miepython},
  doi     = {10.5281/zenodo.7949263},
  year    = {2026},
  version = {3.2.0},
  publisher = {Zenodo}
}

License

miepython is released under the MIT License.

Release files for miepython 3.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for miepython 3.3.0
File Size Uploaded
miepython-3.3.0.tar.gz 116.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for miepython 3.3.0
File Interpreter ABI Platform
miepython-3.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 172.6 kB

Release files / miepython-3.3.0.tar.gz

Download URL miepython-3.3.0.tar.gz
Size 116.9 kB
Tags Source
SHA-256 checksum
How to use checksums
391ebf3f033ca941ffb47db0b75d508761452fa3d8fb145e0cdca80c191003e3
BLAKE2b-256 checksum
How to use checksums
59318ceaf2687b3dd266a4816fd27e6a01b843909e1a96c163769e110edbe538
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 28, 2026.

Transparency log

Release files / miepython-3.3.0-py3-none-any.whl

Download URL miepython-3.3.0-py3-none-any.whl
Size 55.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1c3e3a9ef7becc903e994d7efea2f37a9bd0e8c157fbee5489f0599d4d70713f
BLAKE2b-256 checksum
How to use checksums
82a3d185f66f417956c980c6deeba3f4895b3fdff76c05efa35df1f94e9d739b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 28, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

3.3.0 This release

2 release files

3.2.0

2 release files

3.1.0

2 release files

3.0.5

2 release files

3.0.3

2 release files

3.0.2

2 release files

3.0.0

2 release files

2.5.5

2 release files

2.5.4

2 release files

2.5.3

2 release files

2.5.1

2 release files

2.5.0

2 release files

2.4.0

2 release files

2.3.2

2 release files

2.3.0

2 release files

2.2.3

2 release files

2.2.2

2 release files

2.2.1

2 release files

2.2.0

2 release files

2.1.0

1 release file

2.0.1

1 release file

2.0.0

1 release file

1.3.3

1 release file

1.3.2

1 release file

1.3.1

1 release file

1.3.0

1 release file

1.2.0

1 release file

1.1.1

1 release file

1.1.0

1 release file

1.0.0

1 release file

0.4.2

1 release file

0.4.0

1 release file

0.3.3

1 release file

0.3.2

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page