.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "gallery/validation/k_estimator.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code. .. rst-class:: sphx-glr-example-title .. _sphx_glr_gallery_validation_k_estimator.py: K Estimator Validation — Fixed Illumination, Variable Bead Size ================================================================= This example demonstrates how to estimate the `K` parameter, which characterizes how the **absolute signal noise** (Robust STD) scales with the **square root of the median signal** when varying bead size under fixed illumination power. .. GENERATED FROM PYTHON SOURCE LINES 12-14 Setup and configuration ----------------------- .. GENERATED FROM PYTHON SOURCE LINES 14-22 .. code-block:: Python import numpy as np from FlowCyPy.fluidics import Fluidics, FlowCell, ScattererCollection from FlowCyPy.opto_electronics import OptoElectronics, source, TransimpedanceAmplifier, Detector from FlowCyPy.signal_processing import SignalProcessing, Digitizer from FlowCyPy import FlowCytometer, SimulationSettings, units from FlowCyPy.calibration import KEstimator .. GENERATED FROM PYTHON SOURCE LINES 23-24 Configure simulation-level noise assumptions .. GENERATED FROM PYTHON SOURCE LINES 24-37 .. code-block:: Python SimulationSettings.include_noises = True SimulationSettings.include_shot_noise = True SimulationSettings.include_dark_current_noise = False SimulationSettings.include_source_noise = False SimulationSettings.include_amplifier_noise = False SimulationSettings.assume_perfect_hydrodynamic_focusing = True SimulationSettings.assume_amplifier_bandwidth_is_infinite = True SimulationSettings.assume_perfect_digitizer = True SimulationSettings.evenly_spaced_events = True np.random.seed(3) # Reproducibility .. GENERATED FROM PYTHON SOURCE LINES 38-40 Construct simulation components ------------------------------- .. GENERATED FROM PYTHON SOURCE LINES 40-99 .. code-block:: Python flow_cell = FlowCell( sample_volume_flow=80 * units.microliter / units.minute, sheath_volume_flow=1 * units.milliliter / units.minute, width=400 * units.micrometer, height=400 * units.micrometer, ) scatterer_collection = ScattererCollection(medium_refractive_index=1.33 * units.RIU) fluidics = Fluidics( scatterer_collection=scatterer_collection, flow_cell=flow_cell ) _source = source.GaussianBeam( numerical_aperture=0.2 * units.AU, wavelength=450 * units.nanometer, optical_power=150 * units.milliwatt # Fixed illumination power ) digitizer = Digitizer( bit_depth='16bit', saturation_levels=(0 * units.volt, 2 * units.volt), sampling_rate=60 * units.megahertz, ) amplifier = TransimpedanceAmplifier( gain=10 * units.volt / units.ampere, bandwidth=60 * units.megahertz, ) detector_0 = Detector( name='default', phi_angle=0 * units.degree, numerical_aperture=0.2 * units.AU, cache_numerical_aperture=0.0 * units.AU, responsivity=1 * units.ampere / units.watt, ) opto_electronics = OptoElectronics( detectors=[detector_0], source=_source, amplifier=amplifier ) signal_processing = SignalProcessing( digitizer=digitizer, analog_processing=[], ) flow_cytometer = FlowCytometer( opto_electronics=opto_electronics, fluidics=fluidics, signal_processing=signal_processing, background_power=_source.optical_power * 0.001 ) .. GENERATED FROM PYTHON SOURCE LINES 100-102 Run K Estimation Simulation --------------------------- .. GENERATED FROM PYTHON SOURCE LINES 102-112 .. code-block:: Python k_estimator = KEstimator(debug_mode=False) k_estimator.add_batch( bead_diameters=np.linspace(300, 900, 15) * units.nanometer, illumination_power=_source.optical_power, flow_cytometer=flow_cytometer, particle_count=50 * units.particle ) .. rst-class:: sphx-glr-script-out .. code-block:: none [INFO] Simulating bead 1/15: 300.0 nm [INFO] Simulating bead 2/15: 342.85714285714283 nm [INFO] Simulating bead 3/15: 385.7142857142857 nm [INFO] Simulating bead 4/15: 428.57142857142856 nm [INFO] Simulating bead 5/15: 471.42857142857144 nm [INFO] Simulating bead 6/15: 514.2857142857142 nm [INFO] Simulating bead 7/15: 557.1428571428571 nm [INFO] Simulating bead 8/15: 600.0 nm [INFO] Simulating bead 9/15: 642.8571428571429 nm [INFO] Simulating bead 10/15: 685.7142857142857 nm [INFO] Simulating bead 11/15: 728.5714285714286 nm [INFO] Simulating bead 12/15: 771.4285714285713 nm [INFO] Simulating bead 13/15: 814.2857142857142 nm [INFO] Simulating bead 14/15: 857.1428571428571 nm [INFO] Simulating bead 15/15: 900.0 nm .. GENERATED FROM PYTHON SOURCE LINES 113-115 Plot estimation --------------- .. GENERATED FROM PYTHON SOURCE LINES 115-117 .. code-block:: Python k_estimator.plot() .. image-sg:: /gallery/validation/images/sphx_glr_k_estimator_001.png :alt: K Parameter Estimation :srcset: /gallery/validation/images/sphx_glr_k_estimator_001.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 118-120 Plot relevant statistics ------------------------ .. GENERATED FROM PYTHON SOURCE LINES 120-121 .. code-block:: Python k_estimator.plot_statistics() .. image-sg:: /gallery/validation/images/sphx_glr_k_estimator_002.png :alt: Median vs Bead Diameter, STD vs Bead Diameter :srcset: /gallery/validation/images/sphx_glr_k_estimator_002.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 29.756 seconds) .. _sphx_glr_download_gallery_validation_k_estimator.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: k_estimator.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: k_estimator.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: k_estimator.zip ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_