Skip to main content

Performance Prediction for Optical Particle Spectrometer

Project description

PPOPS

Performance Prediction for Optical Particle Spectrometer

codecov CI

Documentation: https://rtd-ppops.readthedocs.io/

Overview

This repository simulates the performance of a simple Optical Particle Spectrometer (OPS) using a physics-based model. The default optical system is based on Gao et al., Aerosol Sci. Technol., 2016, which is also what the POPS instrument sold by Handix Scientific is based on. The PPOPS model is semi-validated in that PPOPS modeled signal was within 50% of the actual signal of a POPS unit from Handix Scientific (see validation section of PPOPS website for more information).

The PPOPS model calculates the amount and direction of scattered light by aerosols according to Mie theory. The scattered light is integrated over the solid-angle acceptance of the collection mirror to calculate a truncated scattering cross section (the effective scattering cross section). This truncated scattering cross section is then used to calculate the instrument signal and noise current.

To summarize, the PPOPS workflow includes,

  1. Use miepython to calculate the scattering amplitudes (S₁, S₂) according to Mie theory.
    1. Compute Mie coefficients (a_n, b_n) for electric and magnetic scattering modes.
    2. Generate angular functions (π_n, τ_n) that describe angle-dependent intensity.
  2. Integrating over the OPS collection mirror’s polar and azimuthal acceptance to compute the truncated scattering cross section.
  3. Convert the truncated scattering cross section to signal and noise current based on detector specifications.
  4. Optionally, convert signal current to digitizer bins for direct comparison with POPS data.

Assumptions

This package makes several assumptions:

  1. Particles are perfectly spherical.
  2. Scattering is elastic.
  3. All scattered light incident on the collection mirror is detected.
  4. The only noise sources are signal noise, dark noise, and preamp noise (i.e., we neglect stray scattering).
  5. The detector is shot noise limited.

Installation

PPOPS is available via PyPI

pip install ppops

Usage

See PPOPS website for more information.

import ppops

ops = ppops.OpticalParticleSpectrometer()

ops.estimate_signal_noise(diameters = [0.1, 0.5, 1.0], ior = 1.5+0.001j)

References

Gao, R.S., Telg, H., McLaughlin, R.J., Ciciora, S.J., Watts, L.A., Richardson, M.S., Schwarz, J.P., Perring, A.E., Thornberry, T.D., Rollins, A.W., Markovic, M.Z., Bates, T.S., Johnson, J.E., Fahey, D.W., 2016. A light-weight, high-sensitivity particle spectrometer for PM2.5 aerosol measurements. Aerosol Science and Technology 50, 88–99. https://doi.org/10.1080/02786826.2015.1131809

miepython: 10.5281/zenodo.7949263

Author Notes

This repository is intended as a transparent, well-documented implementation of Mie scattering and optical geometry for POPS performance prediction and analysis.

License

PPOPS is released under the MIT license.

Project details


Download files

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

Source Distribution

ppops-0.0.0.tar.gz (18.9 kB view details)

Uploaded Source

Built Distribution

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

ppops-0.0.0-py3-none-any.whl (13.9 kB view details)

Uploaded Python 3

File details

Details for the file ppops-0.0.0.tar.gz.

File metadata

  • Download URL: ppops-0.0.0.tar.gz
  • Upload date:
  • Size: 18.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ppops-0.0.0.tar.gz
Algorithm Hash digest
SHA256 b59d3a4f910f49b69f6f89036a6f7b33dff628694a9b74e411a71ffe07c1c134
MD5 a3371297a8097938c19f570d254ac6d8
BLAKE2b-256 91e4d2c9bfd282749a0bf06ba39235f4f4e2395e4054741913a56775229b6ced

See more details on using hashes here.

Provenance

The following attestation bundles were made for ppops-0.0.0.tar.gz:

Publisher: publish.yml on c-pedersen/PPOPS

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ppops-0.0.0-py3-none-any.whl.

File metadata

  • Download URL: ppops-0.0.0-py3-none-any.whl
  • Upload date:
  • Size: 13.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ppops-0.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 52f336d542e34a60bc2f9f6b62f5e1741485a021e6e7f192c08cfb0845a2efce
MD5 cfa8deac2063ecb4c7c8129072f3a63b
BLAKE2b-256 c1b137dae718eef8a8ed4066fa2fa64c314eed0c9d6550b411d6b94d384f288e

See more details on using hashes here.

Provenance

The following attestation bundles were made for ppops-0.0.0-py3-none-any.whl:

Publisher: publish.yml on c-pedersen/PPOPS

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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