miniMie is a small scientific Python library for calculating optical cross sections (extinction, scattering, absorption) of spherical (nano)particles in a medium using Mie theory. It depends on numpy and scipy, and on matplotlib for plotting.
miniMie calculates extinction, scattering and absorption spectra via Mie_spectrum(). The extinction cross sections calculated by miniMie can be readily converted into the molar extinction coefficients (see the example Jupyter Notebook). From the absorption and extinction cross sections, one may deduce the photothermal efficiency. miniMie can also calculate the angular distribution of scattering intensity via Mie_tetascan().
The library finds its origins in the script that we used and published in: J. R. G. Navarro and M. H. V. Werts, "Resonant light scattering spectroscopy of gold, silver and gold-silver alloy nanoparticles and optical detection in microfluidic channels", Analyst 2013, 138, 583-592.
The Mie calculation code is based on MATLAB code from the report by C. Mätzler through the mie library by C. Legett. The mie library has been integrated and adapted into the miniMie code base, as it gives results identical to our initial Python port of the Mätzler code, while enabling additional calculations.
Also included in miniMie are the dielectric functions of gold and silver from Johnson & Christy, Phys. Rev. B 1972, 6, 4370, with the possibility of applying a mean-free path correction as described by Haiss et al, Anal. Chem 2007, 79, 4215. The dielectric function is interpolated to find the values at specific, user-defined wavelengths.
This implementation is distributed under the CeCILL license (a GNU GPL-compatible license). See: https://cecill.info/index.en.html
- Calculate and plot extinction and scattering spectra of gold nanoparticles
- Calculate and plot angular scattering by nanoparticles
- Reproduce angular scattering calculation results for gold nanoparticles by Shortell et al. (Opt. Express 2016)
- Include further application examples, in particular as Jupyter Notebooks
- Add additional benchmark calculations for testing purposes, in particular spectral properties relying on the included dielectric functions
- Add more dielectric functions
- Include the Mie calculation code from
miepython, which is not based on Bohren & Huffman, but on Wiscombe, and may be numerically superior in certain cases. This mainly concernsmiepython/mie_nojit.pyandmiepython/core.pywith some interfacing and clean-up.
mie, a recent port of the Mätzler MATLAB code to Python, without dielectric functions for gold and silver.Mie-Simulation-Maetzler-MATLAB-codecontains a copy of Mätzler's original MATLAB code, together with the accompanying report.- scattport.org contains another copy of the MATLAB code.
pyMieScatt, a comprehensive Python library for Mie calculations, with code for solving the inverse Mie problem (obtaining the complex refractive index from absorption and scattering measurements). Dielectric functions for gold and silver are not included. ThepyMieScattlibrary is described in J. Quant. Spectrosc. Radiat. Transf. 2018, 205, 127.miepythonis a pure Python module to calculate light scattering for non-absorbing, partially-absorbing, or perfectly-conducting spheres. Mie computations are done with a procedure that differs from the Mätzler/Bohren&Huffman code (but gives similar results, of course).miepythonhas good documentation, also describing different conventions used by different codes, and benchmarking against results from literature.