aerosoltools¶
Tools for loading and analyzing aerosol instrument data.
Installation¶
The package is installed by running the code below in a dedicated terminal.
pip install aerosoltools
Overview¶
aerosoltools is a Python library developed at NFA for loading, processing, analyzing, and plotting data from a variety of aerosol instruments. It provides consistent data structures for:
1D time-series (e.g. total number or mass) via
Aerosol1D2D size-resolved time series via
Aerosol2DAlternative / legacy formats via
AerosolAlt
The package includes:
Instrument-specific loaders for common export formats
Activity segmentation and task-based statistics
Exposure metrics such as 8 h TWA, short-term limits, and peak counts
Convenience plotting for time series and particle size distributions (PSDs)
Provided loaders¶
Instrument |
Function |
Company |
|---|---|---|
Aethalometer |
|
Magee Scientific |
CPC |
|
TSI Inc. |
DiSCmini |
|
Testo |
DustTrak |
|
TSI Inc. |
ELPI |
|
Dekati Ltd. |
FMPS |
|
TSI Inc. |
Fourtec |
|
Fourtec Technologies |
Grimm |
|
GRIMM Aerosol Technik |
NS (NanoScan) |
|
TSI Inc. |
OPC-N3 |
|
Alphasense Ltd. |
OPS |
|
TSI Inc. |
Partector |
|
naneos GmbH |
SMPS |
|
TSI Inc. |
Key features¶
Unified data model¶
Datetime parsing and indexing
Particle data formatting and bin edges / midpoints
Dtype tracking (
dN,dM,dS,dV, and/dlogDpnormalization)Metadata for instrument, units, serial number, etc.
Activities & segmentation¶
Mark tasks/segments with
mark_activities()Built-in
"All data"activityHelper methods to extract activity-specific data:
get_activity_data()get_activity_extra_data()
Summaries & exposure metrics¶
summarize_activities()Task-based descriptive statistics
Duration (min + HH:MM)
PNC, PMₓ, and size metrics (e.g. mode Dp, median Dp, GMD) for 2D data
summarize_exposure()1D (
Aerosol1D): PNC time series2D (
Aerosol2D): PNC, MASS, and Pₓ metrics (e.g. PM₂.₅, PM₄.₂, PN₁₀)8 h (or custom) TWA with:
assumed exposure duration
background as a constant value or another activity
Short-term limit exceedances (e.g. 15 min rolling window)
Peak counts, high percentiles (C95/C99), IQR, time above limits
Pₓ / fraction utilities (2D)¶
Cumulative and band-limited Pₓ (PM, PN, PS, PV)
Internal caching so repeated calls reuse existing series in
extra_data
Time operations¶
timeshift()– shift time stampstimecrop()– focus on or exclude intervalstimerebin()– resample to regular gridstimesmooth()– rolling smoothing on numeric columns
Irregular sampling is handled carefully for integration and TWA.
Plotting¶
plot_timeseries()– total concentration vs time (with optional activity shading)plot_psd()– particle size distributions (linear or log scales)Correlation/comparison utilities (e.g.
Combine_NS_OPS,Plot_correlation)
Batch loading¶
Load_data_from_folder()– apply any loader to a folder of files and collect results.
Quickstart¶
Load a single instrument file¶
import aerosoltools as at
elpi = at.Load_ELPI_file("data/elpi_sample.txt")
elpi.plot_timeseries()
Access metadata¶
elpi.metadata
Mark activities and summarize¶
activity_periods = {
"Background": [("2023-09-07 09:06:50", "2023-09-07 09:07:50")],
"Emission": [("2023-09-07 09:07:55", "2023-09-07 09:08:30")],
}
elpi.mark_activities(activity_periods)
# Task-based summary across all activities
summary = elpi.summarize_activities()
# Detailed exposure summary for respirable dust (PM4.2) during "Emission"
exp = elpi.summarize_exposure(
metric="PM4.2",
activity="Emission",
background="Background", # or a float, or None
short_limit=1.0,
long_limit=1.0,
)
Batch-load a folder of files¶
folder_path = "data/cpc_campaign/"
data_list = at.Load_data_from_folder(folder_path, loader=at.Load_CPC_file)
Acknowledgments¶
Developed by the NRCWE / NFA community to standardize and accelerate aerosol data workflows.
Contributions, issues, and feature requests are very welcome!
Examples
Aerosoltools documentation