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
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
Functions
__call__
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) |
_QC
Perform quality control on SMPS particle size distribution data.
QC Rules Applied
- Status Error : Non-empty status flag indicates instrument error
- Insufficient : Less than 5 measurements per hour
- Invalid Number Conc : Total number concentration outside valid range (2000-1e7 #/cm³)
- DMA Water Ingress : Bins >400nm with concentration > 4000 dN/dlogDp (indicates water in DMA)
_process
Calculate size distribution statistics from QC'd SMPS data.
Processing Steps
- Calculate dlogDp from bin diameters
- Calculate number, surface, volume distributions (all in dX/dlogDp)
- Calculate total, GMD, GSD, mode for each weighting
- Calculate mode contributions (ultra, accum, coarse fractions)
- 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 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
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:
*.txtor*.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 theQC_Flagcolumn - The final output has invalid data set to NaN and
QC_Flagcolumn 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