AeroViz is a Python toolkit for reading, processing, and visualizing aerosol measurement data. It supports 18+ atmospheric instruments with built-in quality control, data processing, and publication-ready visualizations.
pip install AeroVizPre-built for Linux, macOS, and Windows — no compiler needed.
from AeroViz import RawDataReader
df = RawDataReader(
instrument='AE33',
path='/path/to/data',
start='2024-01-01', # optional — omit to read the files' full coverage
end='2024-12-31', # optional
mean_freq='1h', # optional — '1h' resamples to hourly; omit for native resolution
qc=True, # apply quality control
)
print(df[['eBC', 'AAE']].describe())
# Or read everything the files contain, at native resolution:
df_all = RawDataReader('AE33', '/path/to/data')
print(df_all.attrs['coverage_start'], '→', df_all.attrs['coverage_end'])Important
Behaviour change: mean_freq no longer defaults to '1h' — the default is
now no resampling (native resolution). Pass mean_freq='1h' (or '30min',
'1D') for averaging. start / end are also optional now.
| Category | Instruments |
|---|---|
| Black carbon / absorption | AE33, AE43, BC1054, MA350 |
| Particle sizers | SMPS, APS, GRIMM |
| Mass concentration | TEOM, BAM1020 |
| Optical | NEPH, Aurora |
| Chemical composition | Xact, OCEC, IGAC, Q-ACSM |
See the instrument reference for output columns and per-instrument notes.
RawDataReader returns a pandas DataFrame. Key options:
start/end— optional date range (omit for the files' full coverage)mean_freq— resample frequency, e.g.'1h'(omit for native resolution)qc— quality control (on by default; flags rows viaQC_Flagand reports rates)fill_missing— pad to the requested range (default) or clamp to coveragesize_range— diameter filter for SMPS / APS
Result metadata — coverage, QC rates, native frequency and more — is attached to
df.attrs. The RawDataReader guide
has the full parameter list, QC flags, and df.attrs reference.
from AeroViz import reconstruct_mass, improve, mie, merge_psd, voc_potentials, plot
from AeroViz.plot import timeseries_interactive- Top-level processing functions — each takes a DataFrame (or a few) and
returns a DataFrame/dict:
reconstruct_mass&volume_ri/kappa(chemistry),improve/mie/retrieve_ri(optical),merge_psd/psd_stats(size distribution),voc_potentials(OFP, SOAP). They are grouped under thechemistry,optical,size,vocnamespaces too. plot— publication-ready matplotlib figures (timeseries,diurnal_pattern,scatter,meteorology.wind_rose, …).timeseries_interactive(df)— quick interactive Plotly viewer; click the legend to toggle columns, orsave='out.html'for a standalone file.
DataProcess(...)is deprecated (it still works but emits aDeprecationWarning); use the top-level functions above.
See the user guide for details.
Contributions are welcome! See CONTRIBUTING.md for the development setup and release workflow, and GitHub Issues for bug reports and feature requests.
MIT License - see LICENSE for details.
If you use AeroViz in your research, please cite:
AeroViz: Aerosol Data Processing and Visualization Toolkit
https://github.com/Alex870521/AeroViz