Skip to content

Scanning Mobility Particle Sizer (SMPS)

The SMPS is an instrument used for measuring particle size distributions in the nanometer range.

AeroViz.rawDataReader.script.SMPS.Reader

Reader(*args, **kwargs)

Bases: AbstractReader

SMPS (Scanning Mobility Particle Sizer) Data Reader

A specialized reader for SMPS data files, which measure particle size distributions in the range of 11.8-593.5 nm.

See full documentation at docs/source/instruments/SMPS.md for detailed information on supported formats and QC procedures.

Attributes

nam class-attribute instance-attribute

nam = 'SMPS'

MIN_HOURLY_COUNT class-attribute instance-attribute

MIN_HOURLY_COUNT = 5

MIN_TOTAL_CONC class-attribute instance-attribute

MIN_TOTAL_CONC = 2000

MAX_TOTAL_CONC class-attribute instance-attribute

MAX_TOTAL_CONC = 10000000.0

MAX_LARGE_BIN_CONC class-attribute instance-attribute

MAX_LARGE_BIN_CONC = 4000

LARGE_BIN_THRESHOLD class-attribute instance-attribute

LARGE_BIN_THRESHOLD = 400

STATUS_COLUMN class-attribute instance-attribute

STATUS_COLUMN = 'Status Flag'

STATUS_OK class-attribute instance-attribute

STATUS_OK = 'Normal Scan'

_status_data instance-attribute

_status_data = None

_distributions instance-attribute

_distributions = None

Functions

__call__

__call__(start, end, mean_freq='1h')

Process SMPS data and save size distributions to separate files.

Overrides AbstractReader.call to add distribution file saving and filter out size bins from main output.

Parameters:

Name Type Description Default
start datetime

Start time for data processing

required
end datetime

End time for data processing

required
mean_freq str

Frequency for resampling the data

'1h'

Returns:

Type Description
DataFrame

Processed and resampled data (statistics only, no size bins)

_raw_reader

_raw_reader(file)

Read and parse raw SMPS data files.

_QC

_QC(_df)

Perform quality control on SMPS particle size distribution data.

QC Rules Applied
  1. Status Error : Non-empty status flag indicates instrument error
  2. Insufficient : Less than 5 measurements per hour
  3. Invalid Number Conc : Total number concentration outside valid range (2000-1e7 #/cm³)
  4. DMA Water Ingress : Bins >400nm with concentration > 4000 dN/dlogDp (indicates water in DMA)

_process

_process(_df)

Calculate size distribution statistics from QC'd SMPS data.

Processing Steps
  1. Calculate dlogDp from bin diameters
  2. Calculate number, surface, volume distributions (all in dX/dlogDp)
  3. Calculate total, GMD, GSD, mode for each weighting
  4. Calculate mode contributions (ultra, accum, coarse fractions)
  5. Store distributions for separate file output

Parameters:

Name Type Description Default
_df DataFrame

Quality-controlled DataFrame with size bin columns and QC_Flag

required

Returns:

Type Description
DataFrame

Original size bins (dN/dlogDp) + calculated statistics + QC_Flag

_save_distributions

_save_distributions(mean_freq: str = '1h') -> None

Save size distributions to separate CSV files.

Output Files
  • output_smps_dNdlogDp.csv : Number distribution (dN/dlogDp)
  • output_smps_dSdlogDp.csv : Surface distribution (dS/dlogDp)
  • output_smps_dVdlogDp.csv : Volume distribution (dV/dlogDp)

Parameters:

Name Type Description Default
mean_freq str

Frequency for resampling the data

'1h'

_geometric_prop staticmethod

_geometric_prop(dp, dist)

Calculate geometric mean diameter and geometric standard deviation.

Parameters:

Name Type Description Default
dp ndarray

Particle diameters (nm)

required
dist DataFrame

Distribution data (dN, dS, or dV)

required

Returns:

Type Description
tuple

(total, GMD, GSD) as pandas Series

Data Format

  • File format:
    • .txt files (tab-delimited) from older AIM versions (8.x, 9.x)
    • .csv files (comma-delimited) from newer AIM versions (10.x+)
  • Sampling frequency: 6 minutes (typical)
  • File naming pattern: *.txt or *.csv
  • Timestamp formats:
    • mm/dd/yy HH:MM:SS (US format, older versions)
    • mm/dd/yyyy HH:MM:SS (US format, newer versions)
    • dd/mm/yyyy HH:MM:SS (EU format)

Measurement Parameters

The SMPS provides particle size distribution measurements:

Parameter Value Description
Size range 11.8-593.5 nm Default particle diameter range
Output dN/dlogDp Number concentration per size bin
Unit #/cm³ Particle number concentration

Data Processing

Data Reading

  • Automatically detects and skips header rows
  • Supports multiple date formats based on AIM version
  • Handles transposed data formats
  • Extracts and sorts particle size columns numerically
  • Validates size range against expected settings

Quality Control

The SMPS reader uses the declarative QCFlagBuilder system with the following rules:

+-----------------------------------------------------------------------+
|                         QC Thresholds                                 |
+-----------------------------------------------------------------------+
| MIN_HOURLY_COUNT  = 5        measurements per hour                    |
| MIN_TOTAL_CONC    = 2000     #/cm³                                    |
| MAX_TOTAL_CONC    = 1e7      #/cm³                                    |
| MAX_LARGE_BIN_CONC= 4000     dN/dlogDp (DMA water ingress indicator)  |
| LARGE_BIN_THRESH  = 400      nm                                       |
| STATUS_OK         = "Normal Scan"                                     |
+-----------------------------------------------------------------------+

+-----------------------------------------------------------------------+
|                            _QC() Pipeline                             |
+-----------------------------------------------------------------------+
|                                                                       |
|  [Pre-process] Apply size range filter, calculate total concentration |
|       |                                                               |
|       v                                                               |
|  +-------------------------+                                          |
|  | Rule: Status Error      |                                          |
|  +-------------------------+                                          |
|  | Status Flag !=          |                                          |
|  | "Normal Scan"           |                                          |
|  +-------------------------+                                          |
|           |                                                           |
|           v                                                           |
|  +-------------------------+    +-------------------------+           |
|  | Rule: Insufficient      |    | Rule: Invalid Number    |           |
|  +-------------------------+    |       Conc              |           |
|  | < 5 measurements        |    +-------------------------+           |
|  | per hour                |    | Total conc. outside     |           |
|  +-------------------------+    | range (2000-1e7 #/cm³)  |           |
|                                 +-------------------------+           |
|           |                              |                            |
|           v                              v                            |
|           |                     +-------------------------+           |
|           |                     | Rule: DMA Water Ingress |           |
|           |                     +-------------------------+           |
|           |                     | Bins > 400nm with       |           |
|           |                     | conc. > 4000 dN/dlogDp  |           |
|           |                     | (indicates water in DMA)|           |
|           |                     +-------------------------+           |
|                                                                       |
+-----------------------------------------------------------------------+

QC Rules Applied

Rule Condition Description
Status Error Status Flag ≠ "Normal Scan" Instrument reported error (e.g., "Conditioner Temperature Error")
Insufficient < 5 measurements/hour Less than 5 measurements per hour
Invalid Number Conc Total < 2000 OR > 1e7 #/cm³ Total number concentration outside valid range
DMA Water Ingress Bins >400nm > 4000 dN/dlogDp Water contamination in DMA column

Size Distribution QC Visualization

    dN/dlogDp
       ^
       |
  4000 +                              ........... MAX_LARGE_BIN_CONC
       |      ___                     :          (DMA water ingress)
       |     /   \                    :
       |    /     \____               :
       +---+------+-------+-------+---+---> Dp (nm)
          11.8   100     400    593.5
                          ^
                    LARGE_BIN_THRESHOLD

Output Data

The processed data contains:

Column Unit Description
Size bins dN/dlogDp Number concentration for each particle size

QC_Flag Handling

  • The intermediate file (_read_smps_qc.pkl/csv) contains the QC_Flag column
  • The final output has invalid data set to NaN and QC_Flag column removed

Notes

  • Different AIM software versions may produce different file formats
  • Size range validation ensures data quality
  • DMA water ingress detection: High concentrations in bins >400nm indicate water contamination in the DMA column
  • Automatic format detection and parsing