Example Usage

[1]:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker as mticker

import ppops
[2]:
# Create PPOPS instance
ops = ppops.OpticalParticleSpectrometer(laser_wavelength=0.405, laser_power=70)
[ ]:
### Estimate the signal response across a diameter range ###
# Define diameters from 100 nm to 2000 nm for signal estimation
diameters = np.arange(0.1, 2.0, 0.01)  # in micrometers

signal, noise = ops.estimate_signal_noise(ri=1.5, diameters=diameters)

fig, ax = plt.subplots(figsize=(6, 4))
ax.plot(diameters, signal)
ax.set_yscale("log")
ax.set_xscale("log")
ax.xaxis.set_major_formatter(mticker.ScalarFormatter())
ax.set_xlabel("Diameter (µm)")
ax.set_ylabel("Signal (Amps)")
ax.set_title("Estimated Signal")
fig.tight_layout()
_images/01_example_usage_3_0.png
[4]:
### Convert the estimated signal to a digitized signal for direct comparison with a POPS instrument ###
digitized_signal = ppops.digitize_signal(signal)

fig, ax = plt.subplots(figsize=(6, 4))
ax.plot(diameters, digitized_signal)
ax.set_yscale("log")
ax.set_xscale("log")
ax.xaxis.set_major_formatter(mticker.ScalarFormatter())
ax.set_xlabel("Diameter (µm)")
ax.set_ylabel("Signal (digitizer bins)")
ax.set_title("Estimated Signal")
fig.tight_layout()
_images/01_example_usage_4_0.png