AeroViz 0.1.21__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- AeroViz/__init__.py +13 -0
- AeroViz/__pycache__/__init__.cpython-312.pyc +0 -0
- AeroViz/data/DEFAULT_DATA.csv +1417 -0
- AeroViz/data/DEFAULT_PNSD_DATA.csv +1417 -0
- AeroViz/data/hysplit_example_data.txt +101 -0
- AeroViz/dataProcess/Chemistry/__init__.py +149 -0
- AeroViz/dataProcess/Chemistry/__pycache__/__init__.cpython-312.pyc +0 -0
- AeroViz/dataProcess/Chemistry/_calculate.py +557 -0
- AeroViz/dataProcess/Chemistry/_isoropia.py +150 -0
- AeroViz/dataProcess/Chemistry/_mass_volume.py +487 -0
- AeroViz/dataProcess/Chemistry/_ocec.py +172 -0
- AeroViz/dataProcess/Chemistry/isrpia.cnf +21 -0
- AeroViz/dataProcess/Chemistry/isrpia2.exe +0 -0
- AeroViz/dataProcess/Optical/PyMieScatt_update.py +577 -0
- AeroViz/dataProcess/Optical/_IMPROVE.py +452 -0
- AeroViz/dataProcess/Optical/__init__.py +281 -0
- AeroViz/dataProcess/Optical/__pycache__/PyMieScatt_update.cpython-312.pyc +0 -0
- AeroViz/dataProcess/Optical/__pycache__/__init__.cpython-312.pyc +0 -0
- AeroViz/dataProcess/Optical/__pycache__/mie_theory.cpython-312.pyc +0 -0
- AeroViz/dataProcess/Optical/_derived.py +518 -0
- AeroViz/dataProcess/Optical/_extinction.py +123 -0
- AeroViz/dataProcess/Optical/_mie_sd.py +912 -0
- AeroViz/dataProcess/Optical/_retrieve_RI.py +243 -0
- AeroViz/dataProcess/Optical/coefficient.py +72 -0
- AeroViz/dataProcess/Optical/fRH.pkl +0 -0
- AeroViz/dataProcess/Optical/mie_theory.py +260 -0
- AeroViz/dataProcess/README.md +271 -0
- AeroViz/dataProcess/SizeDistr/__init__.py +245 -0
- AeroViz/dataProcess/SizeDistr/__pycache__/__init__.cpython-312.pyc +0 -0
- AeroViz/dataProcess/SizeDistr/__pycache__/_size_dist.cpython-312.pyc +0 -0
- AeroViz/dataProcess/SizeDistr/_size_dist.py +810 -0
- AeroViz/dataProcess/SizeDistr/merge/README.md +93 -0
- AeroViz/dataProcess/SizeDistr/merge/__init__.py +20 -0
- AeroViz/dataProcess/SizeDistr/merge/_merge_v0.py +251 -0
- AeroViz/dataProcess/SizeDistr/merge/_merge_v0_1.py +246 -0
- AeroViz/dataProcess/SizeDistr/merge/_merge_v1.py +255 -0
- AeroViz/dataProcess/SizeDistr/merge/_merge_v2.py +244 -0
- AeroViz/dataProcess/SizeDistr/merge/_merge_v3.py +518 -0
- AeroViz/dataProcess/SizeDistr/merge/_merge_v4.py +422 -0
- AeroViz/dataProcess/SizeDistr/prop.py +62 -0
- AeroViz/dataProcess/VOC/__init__.py +14 -0
- AeroViz/dataProcess/VOC/__pycache__/__init__.cpython-312.pyc +0 -0
- AeroViz/dataProcess/VOC/_potential_par.py +108 -0
- AeroViz/dataProcess/VOC/support_voc.json +446 -0
- AeroViz/dataProcess/__init__.py +66 -0
- AeroViz/dataProcess/__pycache__/__init__.cpython-312.pyc +0 -0
- AeroViz/dataProcess/core/__init__.py +272 -0
- AeroViz/dataProcess/core/__pycache__/__init__.cpython-312.pyc +0 -0
- AeroViz/mcp_server.py +352 -0
- AeroViz/plot/__init__.py +13 -0
- AeroViz/plot/__pycache__/__init__.cpython-312.pyc +0 -0
- AeroViz/plot/__pycache__/bar.cpython-312.pyc +0 -0
- AeroViz/plot/__pycache__/box.cpython-312.pyc +0 -0
- AeroViz/plot/__pycache__/pie.cpython-312.pyc +0 -0
- AeroViz/plot/__pycache__/radar.cpython-312.pyc +0 -0
- AeroViz/plot/__pycache__/regression.cpython-312.pyc +0 -0
- AeroViz/plot/__pycache__/scatter.cpython-312.pyc +0 -0
- AeroViz/plot/__pycache__/violin.cpython-312.pyc +0 -0
- AeroViz/plot/bar.py +126 -0
- AeroViz/plot/box.py +69 -0
- AeroViz/plot/distribution/__init__.py +1 -0
- AeroViz/plot/distribution/__pycache__/__init__.cpython-312.pyc +0 -0
- AeroViz/plot/distribution/__pycache__/distribution.cpython-312.pyc +0 -0
- AeroViz/plot/distribution/distribution.py +576 -0
- AeroViz/plot/meteorology/CBPF.py +295 -0
- AeroViz/plot/meteorology/__init__.py +3 -0
- AeroViz/plot/meteorology/__pycache__/CBPF.cpython-312.pyc +0 -0
- AeroViz/plot/meteorology/__pycache__/__init__.cpython-312.pyc +0 -0
- AeroViz/plot/meteorology/__pycache__/hysplit.cpython-312.pyc +0 -0
- AeroViz/plot/meteorology/__pycache__/wind_rose.cpython-312.pyc +0 -0
- AeroViz/plot/meteorology/hysplit.py +93 -0
- AeroViz/plot/meteorology/wind_rose.py +77 -0
- AeroViz/plot/optical/__init__.py +1 -0
- AeroViz/plot/optical/__pycache__/__init__.cpython-312.pyc +0 -0
- AeroViz/plot/optical/__pycache__/optical.cpython-312.pyc +0 -0
- AeroViz/plot/optical/optical.py +388 -0
- AeroViz/plot/pie.py +210 -0
- AeroViz/plot/radar.py +184 -0
- AeroViz/plot/regression.py +200 -0
- AeroViz/plot/scatter.py +174 -0
- AeroViz/plot/templates/__init__.py +6 -0
- AeroViz/plot/templates/__pycache__/__init__.cpython-312.pyc +0 -0
- AeroViz/plot/templates/__pycache__/ammonium_rich.cpython-312.pyc +0 -0
- AeroViz/plot/templates/__pycache__/contour.cpython-312.pyc +0 -0
- AeroViz/plot/templates/__pycache__/corr_matrix.cpython-312.pyc +0 -0
- AeroViz/plot/templates/__pycache__/diurnal_pattern.cpython-312.pyc +0 -0
- AeroViz/plot/templates/__pycache__/koschmieder.cpython-312.pyc +0 -0
- AeroViz/plot/templates/__pycache__/metal_heatmap.cpython-312.pyc +0 -0
- AeroViz/plot/templates/ammonium_rich.py +34 -0
- AeroViz/plot/templates/contour.py +47 -0
- AeroViz/plot/templates/corr_matrix.py +267 -0
- AeroViz/plot/templates/diurnal_pattern.py +61 -0
- AeroViz/plot/templates/koschmieder.py +95 -0
- AeroViz/plot/templates/metal_heatmap.py +164 -0
- AeroViz/plot/timeseries/__init__.py +2 -0
- AeroViz/plot/timeseries/__pycache__/__init__.cpython-312.pyc +0 -0
- AeroViz/plot/timeseries/__pycache__/template.cpython-312.pyc +0 -0
- AeroViz/plot/timeseries/__pycache__/timeseries.cpython-312.pyc +0 -0
- AeroViz/plot/timeseries/template.py +47 -0
- AeroViz/plot/timeseries/timeseries.py +446 -0
- AeroViz/plot/utils/__init__.py +4 -0
- AeroViz/plot/utils/__pycache__/__init__.cpython-312.pyc +0 -0
- AeroViz/plot/utils/__pycache__/_color.cpython-312.pyc +0 -0
- AeroViz/plot/utils/__pycache__/_unit.cpython-312.pyc +0 -0
- AeroViz/plot/utils/__pycache__/plt_utils.cpython-312.pyc +0 -0
- AeroViz/plot/utils/__pycache__/sklearn_utils.cpython-312.pyc +0 -0
- AeroViz/plot/utils/_color.py +71 -0
- AeroViz/plot/utils/_unit.py +55 -0
- AeroViz/plot/utils/fRH.json +390 -0
- AeroViz/plot/utils/plt_utils.py +92 -0
- AeroViz/plot/utils/sklearn_utils.py +49 -0
- AeroViz/plot/utils/units.json +89 -0
- AeroViz/plot/violin.py +80 -0
- AeroViz/rawDataReader/FLOW.md +138 -0
- AeroViz/rawDataReader/__init__.py +220 -0
- AeroViz/rawDataReader/__pycache__/__init__.cpython-312.pyc +0 -0
- AeroViz/rawDataReader/config/__init__.py +0 -0
- AeroViz/rawDataReader/config/__pycache__/__init__.cpython-312.pyc +0 -0
- AeroViz/rawDataReader/config/__pycache__/supported_instruments.cpython-312.pyc +0 -0
- AeroViz/rawDataReader/config/supported_instruments.py +135 -0
- AeroViz/rawDataReader/core/__init__.py +658 -0
- AeroViz/rawDataReader/core/__pycache__/__init__.cpython-312.pyc +0 -0
- AeroViz/rawDataReader/core/__pycache__/logger.cpython-312.pyc +0 -0
- AeroViz/rawDataReader/core/__pycache__/pre_process.cpython-312.pyc +0 -0
- AeroViz/rawDataReader/core/__pycache__/qc.cpython-312.pyc +0 -0
- AeroViz/rawDataReader/core/__pycache__/report.cpython-312.pyc +0 -0
- AeroViz/rawDataReader/core/logger.py +171 -0
- AeroViz/rawDataReader/core/pre_process.py +308 -0
- AeroViz/rawDataReader/core/qc.py +961 -0
- AeroViz/rawDataReader/core/report.py +579 -0
- AeroViz/rawDataReader/script/AE33.py +173 -0
- AeroViz/rawDataReader/script/AE43.py +151 -0
- AeroViz/rawDataReader/script/APS.py +339 -0
- AeroViz/rawDataReader/script/Aurora.py +191 -0
- AeroViz/rawDataReader/script/BAM1020.py +90 -0
- AeroViz/rawDataReader/script/BC1054.py +161 -0
- AeroViz/rawDataReader/script/EPA.py +79 -0
- AeroViz/rawDataReader/script/GRIMM.py +68 -0
- AeroViz/rawDataReader/script/IGAC.py +140 -0
- AeroViz/rawDataReader/script/MA350.py +179 -0
- AeroViz/rawDataReader/script/Minion.py +218 -0
- AeroViz/rawDataReader/script/NEPH.py +199 -0
- AeroViz/rawDataReader/script/OCEC.py +173 -0
- AeroViz/rawDataReader/script/Q-ACSM.py +12 -0
- AeroViz/rawDataReader/script/SMPS.py +389 -0
- AeroViz/rawDataReader/script/TEOM.py +181 -0
- AeroViz/rawDataReader/script/VOC.py +106 -0
- AeroViz/rawDataReader/script/Xact.py +244 -0
- AeroViz/rawDataReader/script/__init__.py +28 -0
- AeroViz/rawDataReader/script/__pycache__/AE33.cpython-312.pyc +0 -0
- AeroViz/rawDataReader/script/__pycache__/AE43.cpython-312.pyc +0 -0
- AeroViz/rawDataReader/script/__pycache__/APS.cpython-312.pyc +0 -0
- AeroViz/rawDataReader/script/__pycache__/Aurora.cpython-312.pyc +0 -0
- AeroViz/rawDataReader/script/__pycache__/BAM1020.cpython-312.pyc +0 -0
- AeroViz/rawDataReader/script/__pycache__/BC1054.cpython-312.pyc +0 -0
- AeroViz/rawDataReader/script/__pycache__/EPA.cpython-312.pyc +0 -0
- AeroViz/rawDataReader/script/__pycache__/GRIMM.cpython-312.pyc +0 -0
- AeroViz/rawDataReader/script/__pycache__/IGAC.cpython-312.pyc +0 -0
- AeroViz/rawDataReader/script/__pycache__/MA350.cpython-312.pyc +0 -0
- AeroViz/rawDataReader/script/__pycache__/Minion.cpython-312.pyc +0 -0
- AeroViz/rawDataReader/script/__pycache__/NEPH.cpython-312.pyc +0 -0
- AeroViz/rawDataReader/script/__pycache__/OCEC.cpython-312.pyc +0 -0
- AeroViz/rawDataReader/script/__pycache__/Q-ACSM.cpython-312.pyc +0 -0
- AeroViz/rawDataReader/script/__pycache__/SMPS.cpython-312.pyc +0 -0
- AeroViz/rawDataReader/script/__pycache__/TEOM.cpython-312.pyc +0 -0
- AeroViz/rawDataReader/script/__pycache__/VOC.cpython-312.pyc +0 -0
- AeroViz/rawDataReader/script/__pycache__/Xact.cpython-312.pyc +0 -0
- AeroViz/rawDataReader/script/__pycache__/__init__.cpython-312.pyc +0 -0
- AeroViz/tools/__init__.py +2 -0
- AeroViz/tools/__pycache__/__init__.cpython-312.pyc +0 -0
- AeroViz/tools/__pycache__/database.cpython-312.pyc +0 -0
- AeroViz/tools/__pycache__/dataclassifier.cpython-312.pyc +0 -0
- AeroViz/tools/database.py +95 -0
- AeroViz/tools/dataclassifier.py +117 -0
- AeroViz/tools/dataprinter.py +58 -0
- aeroviz-0.1.21.dist-info/METADATA +294 -0
- aeroviz-0.1.21.dist-info/RECORD +180 -0
- aeroviz-0.1.21.dist-info/WHEEL +5 -0
- aeroviz-0.1.21.dist-info/licenses/LICENSE +21 -0
- aeroviz-0.1.21.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: AeroViz
|
|
3
|
+
Version: 0.1.21
|
|
4
|
+
Summary: Aerosol data processing and visualization toolkit. Read, QC, and analyze data from SMPS, APS, AE33, TEOM, Nephelometer, XRF, and 15+ atmospheric instruments.
|
|
5
|
+
Author-email: Alex Chan <alex870521@gmail.com>
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/Alex870521/AeroViz
|
|
8
|
+
Project-URL: Documentation, https://alex870521.github.io/AeroViz/
|
|
9
|
+
Project-URL: Repository, https://github.com/Alex870521/AeroViz
|
|
10
|
+
Project-URL: Issues, https://github.com/Alex870521/AeroViz/issues
|
|
11
|
+
Project-URL: Changelog, https://github.com/Alex870521/AeroViz/blob/main/docs/CHANGELOG.md
|
|
12
|
+
Keywords: aerosol,atmospheric-science,air-quality,data-processing,visualization,PM2.5,PM10,black-carbon,particle-size-distribution,optical-properties,SMPS,APS,aethalometer,nephelometer,TEOM,XRF,OC-EC,environmental-monitoring,research,quality-control
|
|
13
|
+
Classifier: Development Status :: 4 - Beta
|
|
14
|
+
Classifier: Intended Audience :: Science/Research
|
|
15
|
+
Classifier: Intended Audience :: Developers
|
|
16
|
+
Classifier: Topic :: Scientific/Engineering :: Atmospheric Science
|
|
17
|
+
Classifier: Topic :: Scientific/Engineering :: Visualization
|
|
18
|
+
Classifier: Topic :: Scientific/Engineering :: Chemistry
|
|
19
|
+
Classifier: Programming Language :: Python :: 3
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
24
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
25
|
+
Classifier: Operating System :: OS Independent
|
|
26
|
+
Requires-Python: >=3.10
|
|
27
|
+
Description-Content-Type: text/markdown
|
|
28
|
+
License-File: LICENSE
|
|
29
|
+
Requires-Dist: pandas>=2.2.0
|
|
30
|
+
Requires-Dist: numpy>=1.26.4
|
|
31
|
+
Requires-Dist: matplotlib>=3.8.4
|
|
32
|
+
Requires-Dist: scipy>=1.14.0
|
|
33
|
+
Requires-Dist: seaborn>=0.13.2
|
|
34
|
+
Requires-Dist: scikit-learn>=1.5.1
|
|
35
|
+
Requires-Dist: windrose>=1.9.2
|
|
36
|
+
Requires-Dist: cartopy>=0.24.1
|
|
37
|
+
Requires-Dist: tabulate>=0.9.0
|
|
38
|
+
Requires-Dist: rich~=13.9.4
|
|
39
|
+
Requires-Dist: numba~=0.61.0
|
|
40
|
+
Provides-Extra: test
|
|
41
|
+
Requires-Dist: pytest>=7.0.0; extra == "test"
|
|
42
|
+
Requires-Dist: pytest-cov>=4.1.0; extra == "test"
|
|
43
|
+
Requires-Dist: pytest-mock>=3.10.0; extra == "test"
|
|
44
|
+
Provides-Extra: dev
|
|
45
|
+
Requires-Dist: black>=23.0; extra == "dev"
|
|
46
|
+
Requires-Dist: isort>=5.12.0; extra == "dev"
|
|
47
|
+
Requires-Dist: flake8>=6.0.0; extra == "dev"
|
|
48
|
+
Requires-Dist: mypy>=1.5.0; extra == "dev"
|
|
49
|
+
Requires-Dist: build; extra == "dev"
|
|
50
|
+
Requires-Dist: twine; extra == "dev"
|
|
51
|
+
Provides-Extra: docs
|
|
52
|
+
Requires-Dist: mkdocs>=1.4.0; extra == "docs"
|
|
53
|
+
Requires-Dist: mkdocs-material>=8.0; extra == "docs"
|
|
54
|
+
Requires-Dist: mkdocstrings[python]>=0.18.0; extra == "docs"
|
|
55
|
+
Dynamic: license-file
|
|
56
|
+
|
|
57
|
+
<div align="center">
|
|
58
|
+
|
|
59
|
+
# AeroViz
|
|
60
|
+
|
|
61
|
+
**Aerosol Data Processing and Visualization Toolkit for Atmospheric Research**
|
|
62
|
+
|
|
63
|
+
[](https://pypi.org/project/aeroviz/)
|
|
64
|
+
[](https://pypi.org/project/aeroviz/)
|
|
65
|
+
[](https://github.com/Alex870521/AeroViz/actions)
|
|
66
|
+
[](https://alex870521.github.io/AeroViz/)
|
|
67
|
+
[](LICENSE)
|
|
68
|
+
|
|
69
|
+
</div>
|
|
70
|
+
|
|
71
|
+
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.
|
|
72
|
+
|
|
73
|
+
## Installation
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
pip install AeroViz
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Quick Start
|
|
80
|
+
|
|
81
|
+
```python
|
|
82
|
+
from AeroViz import RawDataReader
|
|
83
|
+
|
|
84
|
+
# Read AE33 Aethalometer data (black carbon)
|
|
85
|
+
df = RawDataReader(
|
|
86
|
+
instrument='AE33',
|
|
87
|
+
path='/path/to/data',
|
|
88
|
+
start='2024-01-01',
|
|
89
|
+
end='2024-12-31',
|
|
90
|
+
mean_freq='1h', # Hourly averages
|
|
91
|
+
qc=True # Apply quality control
|
|
92
|
+
)
|
|
93
|
+
|
|
94
|
+
# Output: DataFrame with columns like BC1-BC7, abs_370-abs_950, AAE, eBC
|
|
95
|
+
print(df[['eBC', 'AAE']].describe())
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Supported Instruments
|
|
99
|
+
|
|
100
|
+
### Black Carbon Monitors
|
|
101
|
+
|
|
102
|
+
| Instrument | Description | Output Columns |
|
|
103
|
+
|------------|-------------|----------------|
|
|
104
|
+
| **AE33** | Magee Aethalometer (7-wavelength) | `BC1`-`BC7`, `abs_370`-`abs_950`, `AAE`, `eBC` |
|
|
105
|
+
| **AE43** | Magee Aethalometer (7-wavelength) | `BC1`-`BC7`, `abs_370`-`abs_950`, `AAE`, `eBC` |
|
|
106
|
+
| **BC1054** | Met One Black Carbon Monitor | `BC`, `abs_880` |
|
|
107
|
+
| **MA350** | AethLabs microAeth (5-wavelength) | `BC1`-`BC5`, `abs_375`-`abs_880` |
|
|
108
|
+
|
|
109
|
+
```python
|
|
110
|
+
# Example: Read black carbon data
|
|
111
|
+
bc = RawDataReader('AE33', '/data/AE33', '2024-01-01', '2024-06-30')
|
|
112
|
+
print(f"Mean eBC: {bc['eBC'].mean():.2f} ng/m³")
|
|
113
|
+
print(f"Mean AAE: {-bc['AAE'].mean():.2f}") # AAE stored as negative
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Particle Sizers
|
|
117
|
+
|
|
118
|
+
| Instrument | Description | Size Range | Output Columns |
|
|
119
|
+
|------------|-------------|------------|----------------|
|
|
120
|
+
| **SMPS** | Scanning Mobility Particle Sizer | 10-1000 nm | Size bins, `total_num`, `GMD_num`, `GSD_num` |
|
|
121
|
+
| **APS** | Aerodynamic Particle Sizer | 0.5-20 μm | Size bins, `total_num`, `GMD_num`, `GSD_num` |
|
|
122
|
+
| **GRIMM** | Optical Particle Counter | 0.25-32 μm | Size bins, number concentrations |
|
|
123
|
+
|
|
124
|
+
```python
|
|
125
|
+
# Example: Read SMPS size distribution
|
|
126
|
+
smps = RawDataReader(
|
|
127
|
+
'SMPS', '/data/SMPS', '2024-01-01', '2024-06-30',
|
|
128
|
+
size_range=(10, 500) # Filter to 10-500 nm
|
|
129
|
+
)
|
|
130
|
+
print(f"Total number: {smps['total_num'].mean():.0f} #/cm³")
|
|
131
|
+
print(f"GMD: {smps['GMD_num'].mean():.1f} nm")
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### Mass Concentration
|
|
135
|
+
|
|
136
|
+
| Instrument | Description | Output Columns |
|
|
137
|
+
|------------|-------------|----------------|
|
|
138
|
+
| **TEOM** | Tapered Element Oscillating Microbalance | `PM_NV`, `PM_Total`, `Volatile_Fraction` |
|
|
139
|
+
| **BAM1020** | Beta Attenuation Monitor | `PM2.5`, `PM10` |
|
|
140
|
+
|
|
141
|
+
```python
|
|
142
|
+
# Example: Read TEOM PM mass data
|
|
143
|
+
teom = RawDataReader('TEOM', '/data/TEOM', '2024-01-01', '2024-06-30')
|
|
144
|
+
print(f"PM2.5 (non-volatile): {teom['PM_NV'].mean():.1f} μg/m³")
|
|
145
|
+
print(f"PM2.5 (total): {teom['PM_Total'].mean():.1f} μg/m³")
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### Optical Instruments
|
|
149
|
+
|
|
150
|
+
| Instrument | Description | Output Columns |
|
|
151
|
+
|------------|-------------|----------------|
|
|
152
|
+
| **NEPH** | TSI Nephelometer | `scattering_B`, `scattering_G`, `scattering_R`, `SAE` |
|
|
153
|
+
| **Aurora** | Ecotech Aurora 3000 | `scattering_B`, `scattering_G`, `scattering_R`, `SAE` |
|
|
154
|
+
|
|
155
|
+
```python
|
|
156
|
+
# Example: Read nephelometer scattering data
|
|
157
|
+
neph = RawDataReader('Aurora', '/data/Aurora', '2024-01-01', '2024-06-30')
|
|
158
|
+
print(f"Scattering (550nm): {neph['scattering_G'].mean():.1f} Mm⁻¹")
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### Chemical Composition
|
|
162
|
+
|
|
163
|
+
| Instrument | Description | Output Columns |
|
|
164
|
+
|------------|-------------|----------------|
|
|
165
|
+
| **Xact** | Cooper XRF Heavy Metals | `Fe`, `Zn`, `Pb`, `Cu`, `Mn`, `Cr`, `Ni`, `As`, `Cd`, ... |
|
|
166
|
+
| **OCEC** | Sunset OC/EC Analyzer | `OC`, `EC`, `TC`, `OC1`-`OC4`, `EC1`-`EC3` |
|
|
167
|
+
| **IGAC** | Ion Chromatograph | `SO4²⁻`, `NO3⁻`, `Cl⁻`, `NH4⁺`, `Na⁺`, `K⁺`, ... |
|
|
168
|
+
| **Q-ACSM** | Aerosol Chemical Speciation Monitor | `Org`, `SO4`, `NO3`, `NH4`, `Chl` |
|
|
169
|
+
|
|
170
|
+
```python
|
|
171
|
+
# Example: Read XRF heavy metals data
|
|
172
|
+
xrf = RawDataReader('Xact', '/data/Xact', '2024-01-01', '2024-06-30')
|
|
173
|
+
print(f"Fe: {xrf['Fe'].mean():.1f} ng/m³")
|
|
174
|
+
print(f"Pb: {xrf['Pb'].mean():.2f} ng/m³")
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### Other Instruments
|
|
178
|
+
|
|
179
|
+
| Instrument | Description |
|
|
180
|
+
|------------|-------------|
|
|
181
|
+
| **VOC** | Volatile Organic Compounds Analyzer |
|
|
182
|
+
| **EPA** | Taiwan EPA Air Quality Data |
|
|
183
|
+
| **Minion** | Low-cost Sensor Network |
|
|
184
|
+
|
|
185
|
+
## Key Parameters
|
|
186
|
+
|
|
187
|
+
| Parameter | Type | Description | Default |
|
|
188
|
+
|-----------|------|-------------|---------|
|
|
189
|
+
| `instrument` | str | Instrument name (see tables above) | Required |
|
|
190
|
+
| `path` | str/Path | Directory containing raw data files | Required |
|
|
191
|
+
| `start` | str/datetime | Start date (`'2024-01-01'` or `datetime`) | Required |
|
|
192
|
+
| `end` | str/datetime | End date | Required |
|
|
193
|
+
| `mean_freq` | str | Output frequency: `'1h'`, `'30min'`, `'1D'` | `'1h'` |
|
|
194
|
+
| `qc` | bool/str | Quality control: `True`, `False`, or `'MS'` for monthly stats | `True` |
|
|
195
|
+
| `reset` | bool/str | `True` to reprocess, `'append'` to add new data | `False` |
|
|
196
|
+
| `size_range` | tuple | Size range in nm for SMPS/APS: `(min, max)` | `None` |
|
|
197
|
+
|
|
198
|
+
## Quality Control
|
|
199
|
+
|
|
200
|
+
AeroViz applies automatic QC based on instrument-specific rules. The `QC_Flag` column indicates data quality:
|
|
201
|
+
|
|
202
|
+
| Flag | Description |
|
|
203
|
+
|------|-------------|
|
|
204
|
+
| `Valid` | Data passed all QC checks |
|
|
205
|
+
| `Insufficient` | Not enough raw data points in period |
|
|
206
|
+
| `Status Error` | Instrument reported error status |
|
|
207
|
+
| `Invalid BC` | Black carbon outside valid range |
|
|
208
|
+
| `Invalid Number Conc` | Particle count outside valid range |
|
|
209
|
+
| `Spike` | Detected sudden unrealistic change |
|
|
210
|
+
|
|
211
|
+
```python
|
|
212
|
+
# Check data quality
|
|
213
|
+
df = RawDataReader('AE33', '/data/AE33', '2024-01-01', '2024-06-30')
|
|
214
|
+
print(df['QC_Flag'].value_counts())
|
|
215
|
+
# Valid 8000
|
|
216
|
+
# Insufficient 300
|
|
217
|
+
# Status Error 60
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
## Data Processing
|
|
221
|
+
|
|
222
|
+
Advanced analysis with specialized modules:
|
|
223
|
+
|
|
224
|
+
```python
|
|
225
|
+
from AeroViz import DataProcess
|
|
226
|
+
from pathlib import Path
|
|
227
|
+
|
|
228
|
+
# Optical property calculations
|
|
229
|
+
optical = DataProcess(method='Optical', path_out=Path('./results'))
|
|
230
|
+
|
|
231
|
+
# Available methods:
|
|
232
|
+
# - 'Chemistry': Mass reconstruction, volume calculation, kappa
|
|
233
|
+
# - 'Optical': Mie theory, IMPROVE extinction, RI retrieval
|
|
234
|
+
# - 'SizeDistr': SMPS-APS merge, mode fitting, lung deposition
|
|
235
|
+
# - 'VOC': OFP, SOAP, MIR calculations
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
## Visualization
|
|
239
|
+
|
|
240
|
+
Publication-ready plots:
|
|
241
|
+
|
|
242
|
+
```python
|
|
243
|
+
from AeroViz import plot
|
|
244
|
+
|
|
245
|
+
# Time series, diurnal patterns, wind rose, polar plots, etc.
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
## File Structure
|
|
249
|
+
|
|
250
|
+
AeroViz expects data organized by station and instrument:
|
|
251
|
+
|
|
252
|
+
```
|
|
253
|
+
/data/
|
|
254
|
+
├── Station_Instrument/
|
|
255
|
+
│ ├── raw_file_001.dat
|
|
256
|
+
│ ├── raw_file_002.dat
|
|
257
|
+
│ └── instrument_outputs/ # Auto-generated
|
|
258
|
+
│ ├── output_instrument.csv
|
|
259
|
+
│ ├── _read_instrument_qc.csv
|
|
260
|
+
│ └── report.json
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
## Documentation
|
|
264
|
+
|
|
265
|
+
- [Full Documentation](https://alex870521.github.io/AeroViz/)
|
|
266
|
+
- [API Reference](https://alex870521.github.io/AeroViz/api/RawDataReader/)
|
|
267
|
+
- [Changelog](docs/CHANGELOG.md)
|
|
268
|
+
|
|
269
|
+
## Contributing
|
|
270
|
+
|
|
271
|
+
Contributions are welcome! Please see our [GitHub Issues](https://github.com/Alex870521/AeroViz/issues) for bug reports and feature requests.
|
|
272
|
+
|
|
273
|
+
## License
|
|
274
|
+
|
|
275
|
+
MIT License - see [LICENSE](LICENSE) for details.
|
|
276
|
+
|
|
277
|
+
## Citation
|
|
278
|
+
|
|
279
|
+
If you use AeroViz in your research, please cite:
|
|
280
|
+
|
|
281
|
+
```
|
|
282
|
+
AeroViz: Aerosol Data Processing and Visualization Toolkit
|
|
283
|
+
https://github.com/Alex870521/AeroViz
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
<div align="center">
|
|
287
|
+
|
|
288
|
+
## Contributors
|
|
289
|
+
|
|
290
|
+
<a href="https://github.com/Alex870521"><img src="https://github.com/Alex870521.png" width="40" height="40" alt="Alex870521" style="border-radius: 50%;"></a>
|
|
291
|
+
<a href="https://github.com/yrr-Su"><img src="https://github.com/yrr-Su.png" width="40" height="40" alt="yrr-Su" style="border-radius: 50%;"></a>
|
|
292
|
+
<a href="https://github.com/Masbear"><img src="https://github.com/Masbear.png" width="40" height="40" alt="Masbear" style="border-radius: 50%;"></a>
|
|
293
|
+
|
|
294
|
+
</div>
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
AeroViz/__init__.py,sha256=4ICXg4UATkGXIUziaXcPX2Yaqj6OK5SL0ilU1JKeGFw,341
|
|
2
|
+
AeroViz/mcp_server.py,sha256=M2Hn9f1ynQJHWYwRfwhvMUm5Q0uiQ3Q-QQzFIZ2vHUQ,12367
|
|
3
|
+
AeroViz/__pycache__/__init__.cpython-312.pyc,sha256=piAP9-HtV7UPcsu9ExLHXfDFNkcqJd49JdTYrpwT7w8,428
|
|
4
|
+
AeroViz/data/DEFAULT_DATA.csv,sha256=eeeyeh8vSLKkE5tAF0TYnUNOyQIH98VA41bJaAP204Y,2248526
|
|
5
|
+
AeroViz/data/DEFAULT_PNSD_DATA.csv,sha256=imLvLA80oYwo_jzXZtlQn5hZ76d47HUIlK2jp0tZPrg,2636511
|
|
6
|
+
AeroViz/data/hysplit_example_data.txt,sha256=DWfY83EW3fOcv9dW-Y4pudq8-M7BJlXD-tlMSYrAk2w,8946
|
|
7
|
+
AeroViz/dataProcess/README.md,sha256=8qJvNdSAyyl16l09GpIAgwjKVg8Aa8nyv7kFPqjaT5o,6378
|
|
8
|
+
AeroViz/dataProcess/__init__.py,sha256=TMfNXQhZjNA4EKiTf30khM9BmD_4ga-SrmAajuUdx_Y,1922
|
|
9
|
+
AeroViz/dataProcess/Chemistry/__init__.py,sha256=Ejfwl-pEiP4RqY7l8aVvpDUEqeMraRsg5tUqkrLawPY,4462
|
|
10
|
+
AeroViz/dataProcess/Chemistry/_calculate.py,sha256=5KjtsX1ksRgvcQv329Bse-0zxKbQHLJ6sp4nn92eE-Q,19122
|
|
11
|
+
AeroViz/dataProcess/Chemistry/_isoropia.py,sha256=eV4jlLOOZupMURa2Ti_eC3OINKzMuEqlgzNyX01UUVY,5392
|
|
12
|
+
AeroViz/dataProcess/Chemistry/_mass_volume.py,sha256=-WGPYdkeWWzlnZpMjsNz9S2KFKvFZ58YHZt0Aiw0xm4,15655
|
|
13
|
+
AeroViz/dataProcess/Chemistry/_ocec.py,sha256=1UpSwdxYVy_LpUjtoaEUoXA-r1nKEFJoyYglf_6CoXA,5899
|
|
14
|
+
AeroViz/dataProcess/Chemistry/isrpia.cnf,sha256=iWXTqsOZFmNrJxAI9nYuilZ9h6ru1icdPFVim7YKc_k,566
|
|
15
|
+
AeroViz/dataProcess/Chemistry/isrpia2.exe,sha256=xFYPTXHSjl_-atmVcTmqqOkTZgUn1p8h-kFMcoGMIQw,1560032
|
|
16
|
+
AeroViz/dataProcess/Chemistry/__pycache__/__init__.cpython-312.pyc,sha256=GWpfFGmEtipFpNnBdBKKWT55oxFCpotc5fpEXR9b7gY,5237
|
|
17
|
+
AeroViz/dataProcess/Optical/PyMieScatt_update.py,sha256=9x3OJfryYmiIC8G9RlHlUW-gYcaGKUBc3n_XZemGxqg,21045
|
|
18
|
+
AeroViz/dataProcess/Optical/_IMPROVE.py,sha256=SylrC6PMu_E--Xj_IxbhhpfKttK056v4LFl7l1S1q1w,14537
|
|
19
|
+
AeroViz/dataProcess/Optical/__init__.py,sha256=GyTQOCuWV-ZUR97DnQ8zJ_NZ2smNCOy3ov9sOT5Hph0,10132
|
|
20
|
+
AeroViz/dataProcess/Optical/_derived.py,sha256=JdbQ8YEnSYifKHBSJITEsKOELqw2_hm7r4Y1rYS62r8,18512
|
|
21
|
+
AeroViz/dataProcess/Optical/_extinction.py,sha256=g1edR_otKRFMUVOV2Oy4fV1oC1Lbt58H2JIsqhTyctg,3678
|
|
22
|
+
AeroViz/dataProcess/Optical/_mie_sd.py,sha256=1ff0qI2QBhem4602iEz0CFnhiGejJUIKm7MB7opt9zo,30754
|
|
23
|
+
AeroViz/dataProcess/Optical/_retrieve_RI.py,sha256=fdeccSidvzZytNOEYOMkBRL1oUNpXw0iKkIeb8_QDYU,7909
|
|
24
|
+
AeroViz/dataProcess/Optical/coefficient.py,sha256=IEq8Bl0TtE8-6EArrwiiVvitOII4Cg1OUtM2DjtMvv8,2752
|
|
25
|
+
AeroViz/dataProcess/Optical/fRH.pkl,sha256=PhJ-BYTaUDjl2Lp5Wz0zeiLQCzrsNdq8nP7Jd1BXyXE,4528
|
|
26
|
+
AeroViz/dataProcess/Optical/mie_theory.py,sha256=EC3SsUaq5G3SdQyPMQxcosbEokqAgJw-4Gz6moJiOsk,8666
|
|
27
|
+
AeroViz/dataProcess/Optical/__pycache__/PyMieScatt_update.cpython-312.pyc,sha256=VK3EtfSyiPMeNo93aE8y8yVM79yhypPVZi8YvLnvt38,33049
|
|
28
|
+
AeroViz/dataProcess/Optical/__pycache__/__init__.cpython-312.pyc,sha256=6dme2QNxZuYfuyd6ErxyP2wAVW6h3JN6rXY_3ON9j0k,11030
|
|
29
|
+
AeroViz/dataProcess/Optical/__pycache__/mie_theory.cpython-312.pyc,sha256=UvT5kjNyGI22SAzrGiAmv65y8PC35V0XIUBFMVa4J2A,10662
|
|
30
|
+
AeroViz/dataProcess/SizeDistr/__init__.py,sha256=Kwbwg-2HtL2m1WMWg8jJTQUJVYhsFQZziJfX6-wv6Fc,8297
|
|
31
|
+
AeroViz/dataProcess/SizeDistr/_size_dist.py,sha256=jg1OZgQ39Q9JB1cs-cJuiLCBeiNU7MtNdMAXehaBQY0,26360
|
|
32
|
+
AeroViz/dataProcess/SizeDistr/prop.py,sha256=7f18SOkkLgDiY_g1c1We8g-3WDJJIFcxkfR4F99jUgc,1845
|
|
33
|
+
AeroViz/dataProcess/SizeDistr/__pycache__/__init__.cpython-312.pyc,sha256=NYs6bwi7qo4mnkI7UW5zqJ3Is6Yr5Vjqv7Z884hd51o,9551
|
|
34
|
+
AeroViz/dataProcess/SizeDistr/__pycache__/_size_dist.cpython-312.pyc,sha256=cinCKEx86uR7PJOJKBWYzAmTPEXUSeI8jtyDVAz9hnI,32192
|
|
35
|
+
AeroViz/dataProcess/SizeDistr/merge/README.md,sha256=JAXNUxpg-EU6rSq5FguP3YmA4OU3gpIFRm4tfRuwyZM,3039
|
|
36
|
+
AeroViz/dataProcess/SizeDistr/merge/__init__.py,sha256=P9UKoeO5hV3Lw_zYHecBIINnmg1PWYHCe0ZVT8VMUPk,677
|
|
37
|
+
AeroViz/dataProcess/SizeDistr/merge/_merge_v0.py,sha256=A-ZmduUA9a0nVM8szhG1AWhsfUPu2UhGIaqFLcmg7Lk,9422
|
|
38
|
+
AeroViz/dataProcess/SizeDistr/merge/_merge_v0_1.py,sha256=CyZwUc2M4lL-OE74e8mXq41nC6X0LJTAV8TwpO3fS2o,9176
|
|
39
|
+
AeroViz/dataProcess/SizeDistr/merge/_merge_v1.py,sha256=6Anb8DszoatK66tc9ccA6ZApbqtL7pZRPR5TKHj-Tbs,9526
|
|
40
|
+
AeroViz/dataProcess/SizeDistr/merge/_merge_v2.py,sha256=8OzUKw7hTg-yuQBipuFKgBS_7c7zbApN_BNr00G8q9c,9046
|
|
41
|
+
AeroViz/dataProcess/SizeDistr/merge/_merge_v3.py,sha256=HN2ARFmeWOawOWRPPv_pHEGBBZNgXVbH4dDTxcN7rdY,18749
|
|
42
|
+
AeroViz/dataProcess/SizeDistr/merge/_merge_v4.py,sha256=b8RVAievGIOLrmJHJXRsKXQ1tkMkm6rx43S7XAfeXE4,16228
|
|
43
|
+
AeroViz/dataProcess/VOC/__init__.py,sha256=8GNP0RMymTkJXK18pSgfLHqrKPWboN-3x1_Ke4UrI44,259
|
|
44
|
+
AeroViz/dataProcess/VOC/_potential_par.py,sha256=M1TBKON_tv7IcheFCT8yG3Z9pO-DOrpO-NocvmvLp8k,3880
|
|
45
|
+
AeroViz/dataProcess/VOC/support_voc.json,sha256=tMYp_NERqhSriVRE2NavXh33CQ5CnsbJHtmMFlE5q_E,6804
|
|
46
|
+
AeroViz/dataProcess/VOC/__pycache__/__init__.cpython-312.pyc,sha256=KLYS6TF_-7Tnpn7ChWMzkqCguIy7SQSsuYqzdbMieXo,716
|
|
47
|
+
AeroViz/dataProcess/__pycache__/__init__.cpython-312.pyc,sha256=atYpMYjbPdr3pHYNwmO9jftoBuxPOtl-nnCnIc6Zirc,2155
|
|
48
|
+
AeroViz/dataProcess/core/__init__.py,sha256=xjJqRmjebaiWj0pMpFXrvIt6YhUng8Yut3U0GwwnxaE,8146
|
|
49
|
+
AeroViz/dataProcess/core/__pycache__/__init__.cpython-312.pyc,sha256=whySOIQSVftbQud0cR53aDe9QuPsq7C3gMv7rGvoqxI,10298
|
|
50
|
+
AeroViz/plot/__init__.py,sha256=Cy42d1t58zeutxLYDkm8bFbRNGE0G1T8VpqGj1li1Cw,419
|
|
51
|
+
AeroViz/plot/bar.py,sha256=cSPKJLWGifCzICCZVPcbZtrDrea_AStlwSli9-b-lsA,4246
|
|
52
|
+
AeroViz/plot/box.py,sha256=8zDd8jYndSv5f0P1lFeX0m7VWYh9okYgJTClh2Lj7Dg,2115
|
|
53
|
+
AeroViz/plot/pie.py,sha256=POOiWcg1KbzUzn1dm4yVEL-1d2bTqUjSTkltHk5YYqU,7860
|
|
54
|
+
AeroViz/plot/radar.py,sha256=QHXkLQlAZZQDWHcqVGJBeRsGiu45GYmy3lN6gwlh6xY,6965
|
|
55
|
+
AeroViz/plot/regression.py,sha256=V4aCPUjg0kO9QSnPYfGil4_A_A1MbO6bM1ffZRbhReI,7417
|
|
56
|
+
AeroViz/plot/scatter.py,sha256=sxk5QxgC1Jk9PuY18q9aRgR_Ipvg5dM1RkwYQxRkn1c,6787
|
|
57
|
+
AeroViz/plot/violin.py,sha256=pU2Z2yTWocEtImmCAmbtn0WvXtUOrnCGOdDOrLxjooU,2689
|
|
58
|
+
AeroViz/plot/__pycache__/__init__.cpython-312.pyc,sha256=ZLwzaD8QnLX-IHSGqCuKS1o0GgZw8P4VviecFr4aniw,684
|
|
59
|
+
AeroViz/plot/__pycache__/bar.cpython-312.pyc,sha256=n1Ij84ZbG3tSxZ6N1M8fDPZs7U4ekPygVbw_u8Sug44,5954
|
|
60
|
+
AeroViz/plot/__pycache__/box.cpython-312.pyc,sha256=UKwRrgWvqCFLz0tTvtgSLE9KE17Gx6qJAUJMAOIzAK4,4043
|
|
61
|
+
AeroViz/plot/__pycache__/pie.cpython-312.pyc,sha256=F3JmKQiJsFCHhhWxEgi7p6dgSiHsc9E-S_nlqePuf_I,10689
|
|
62
|
+
AeroViz/plot/__pycache__/radar.cpython-312.pyc,sha256=4Q1oXNWVVTJkddAgHNpHfi0DkzoNNNXaOmW72oqe0p8,9335
|
|
63
|
+
AeroViz/plot/__pycache__/regression.cpython-312.pyc,sha256=iWz8ruVA4ro5yidi0uqcRRXZaW0CR1DrapH5ANUJ8qg,8542
|
|
64
|
+
AeroViz/plot/__pycache__/scatter.cpython-312.pyc,sha256=NLMx6UHbvQPT0i2vSahVxKAF5yyPqmle96xPo12JE6M,9540
|
|
65
|
+
AeroViz/plot/__pycache__/violin.cpython-312.pyc,sha256=f9Oj68g8hho9sjmHDm5SLKPYTeP0bsxHbrwQOpExx5Q,4291
|
|
66
|
+
AeroViz/plot/distribution/__init__.py,sha256=nhbIegWczkuEfWsE7-2jfF0dnpmPDzJJzjq8Fuh6q5k,28
|
|
67
|
+
AeroViz/plot/distribution/distribution.py,sha256=sAjqtqKavFwQqI8PGPFnpvZFSU-w2UKjcTTC5L91f4E,20595
|
|
68
|
+
AeroViz/plot/distribution/__pycache__/__init__.cpython-312.pyc,sha256=Fk39Ce9JbQW-wQPK4-wGAM60jFmyNPjeiaweSUuxpn0,202
|
|
69
|
+
AeroViz/plot/distribution/__pycache__/distribution.cpython-312.pyc,sha256=K5EaidAu5vIxZwaRUefHx3DRcgFU8WjxEbluHeSG0kI,30983
|
|
70
|
+
AeroViz/plot/meteorology/CBPF.py,sha256=4BjPNW2H2Q9HSyDvqxGAibQSIieKkt7CrFQo1rmdKWQ,11136
|
|
71
|
+
AeroViz/plot/meteorology/__init__.py,sha256=6HRc9TwUDOohULJ4hURbQSMKlHfoZzG1zLS1AUg0fH4,85
|
|
72
|
+
AeroViz/plot/meteorology/hysplit.py,sha256=gUlg1Gr-PbqDQI8bWqnHR5UpzRGstvGM0QrrT_EpWtg,2910
|
|
73
|
+
AeroViz/plot/meteorology/wind_rose.py,sha256=Bp2LjyJhm5FRINH6UUb70g9rA9kZ1oK-9rLvSGHBjwU,2876
|
|
74
|
+
AeroViz/plot/meteorology/__pycache__/CBPF.cpython-312.pyc,sha256=nj37anKs-l4xQFXHVceymOdErGC-_eqg8jpUEfl1jLA,15329
|
|
75
|
+
AeroViz/plot/meteorology/__pycache__/__init__.cpython-312.pyc,sha256=Ie-yielYH3oRNvhUBhEEZsSmAf4IE2svpt3st-8vdQw,261
|
|
76
|
+
AeroViz/plot/meteorology/__pycache__/hysplit.cpython-312.pyc,sha256=FDkgC-TG5kBh6FzFBNdQcvP_n6A28NSCemgHChHFmJ8,4013
|
|
77
|
+
AeroViz/plot/meteorology/__pycache__/wind_rose.cpython-312.pyc,sha256=h1vvMDCGCdZ6D4Qo3I1kjbuSCyGxq-ezG66SADmohXY,3413
|
|
78
|
+
AeroViz/plot/optical/__init__.py,sha256=5S2WPq8NouPYgc46c1XBveSL8Cxs3w8wNYN7vWIpB-s,23
|
|
79
|
+
AeroViz/plot/optical/optical.py,sha256=j8LUSga9BvVjZnGKNG8bt62E9xoBoO2OQxvDBqY6U90,13664
|
|
80
|
+
AeroViz/plot/optical/__pycache__/__init__.cpython-312.pyc,sha256=8jyVQjbLLMovTd6HNRkA9uHzdlo-CblcyqYcxU1Vf5k,192
|
|
81
|
+
AeroViz/plot/optical/__pycache__/optical.cpython-312.pyc,sha256=HHpC7xs3Jx8dk_Z5JCzU0A_mEA80ZufAPdMbusv_gWY,18435
|
|
82
|
+
AeroViz/plot/templates/__init__.py,sha256=z6kNVmpYbfT24BlLeUwt-I8BCGBLcKuS17aWSAmatV8,246
|
|
83
|
+
AeroViz/plot/templates/ammonium_rich.py,sha256=a46rfwhSZ3LIj71LxdOnklAFyy6Xe_VQ-kh1komnZ5g,1225
|
|
84
|
+
AeroViz/plot/templates/contour.py,sha256=fAM6Wn_EmENQM1IW6KJpwmLva6D9P2dEAaK6cNQBtdQ,1678
|
|
85
|
+
AeroViz/plot/templates/corr_matrix.py,sha256=5o4BmcOk4wDX0e9cu_TPZJ2OeA9K8c9xVtz0QgwCsL8,9229
|
|
86
|
+
AeroViz/plot/templates/diurnal_pattern.py,sha256=TOE4PvHluZhjZvDEeZIv8hcb-PthBNDrgEWtyPmwMcg,2051
|
|
87
|
+
AeroViz/plot/templates/koschmieder.py,sha256=zAfv3tlC8tHyWm1PD93hDAx3hCzgIu19z-Pyfwb0y4I,3386
|
|
88
|
+
AeroViz/plot/templates/metal_heatmap.py,sha256=V0lvVsEtPzp_yJfOVX60rnkJOLotn8B5KNT36akOOSY,5218
|
|
89
|
+
AeroViz/plot/templates/__pycache__/__init__.cpython-312.pyc,sha256=l2P5HbDqU_lVVa0B4A7JFJqFkdO99lQbPt3nKjT5bWw,441
|
|
90
|
+
AeroViz/plot/templates/__pycache__/ammonium_rich.cpython-312.pyc,sha256=zyAhKF9dC1ik3tJgYGT1UBkBILcF1bXZx9yuEb7e_fc,2201
|
|
91
|
+
AeroViz/plot/templates/__pycache__/contour.cpython-312.pyc,sha256=vwrJewc-S0C1-Ltz4nVo_wV8QGe7CmTHUouqAjGqnkE,3550
|
|
92
|
+
AeroViz/plot/templates/__pycache__/corr_matrix.cpython-312.pyc,sha256=V3hHn0rOLlKPQaf03y_yf4D37-wYrSe_U0UIIK64BB8,13563
|
|
93
|
+
AeroViz/plot/templates/__pycache__/diurnal_pattern.cpython-312.pyc,sha256=bTVtuqBk12uGH9qtEPD6p6ZX2fV_8ntmzVEAPpOpEbs,3422
|
|
94
|
+
AeroViz/plot/templates/__pycache__/koschmieder.cpython-312.pyc,sha256=iHV_iK4I99yBko0uAON9btVoWtYKE9b3-nZA46t5M04,5753
|
|
95
|
+
AeroViz/plot/templates/__pycache__/metal_heatmap.cpython-312.pyc,sha256=25Rjl37Sz2HqRDOlakQBc-ji-_OBb6qQnL7DM6xv1XQ,7525
|
|
96
|
+
AeroViz/plot/timeseries/__init__.py,sha256=LQ_aE32pvp5ouC--BRa0NwSJ48DYO3rFaOt4AKGmn_s,50
|
|
97
|
+
AeroViz/plot/timeseries/template.py,sha256=ey16q66UAOLhXGKHAPGbRp-QD3J6GkF_cXhkrRIybS8,1472
|
|
98
|
+
AeroViz/plot/timeseries/timeseries.py,sha256=mldc6BVY0AsM52qzMwhKFDbqfp109sFVKxCd3PXz-jM,17846
|
|
99
|
+
AeroViz/plot/timeseries/__pycache__/__init__.cpython-312.pyc,sha256=9S8ORuvh64fbjpvdSofzbEw9h2xhJ0x7VwbdV_X-iUw,221
|
|
100
|
+
AeroViz/plot/timeseries/__pycache__/template.cpython-312.pyc,sha256=v8QXr2SUQ0Med16cBzWPnuyUIdE7iXjwScKPrjK3Jo0,1919
|
|
101
|
+
AeroViz/plot/timeseries/__pycache__/timeseries.cpython-312.pyc,sha256=SaGDzK4G2HlUzSYA30BQIjd3u2bznkC12FgZUF8m3kc,21800
|
|
102
|
+
AeroViz/plot/utils/__init__.py,sha256=sxp3nfUnyVIIXYd-F874gEHkhQiDnMPDE1nJ_Z98270,104
|
|
103
|
+
AeroViz/plot/utils/_color.py,sha256=Vhjo-v4UWFME1JbbBR_Ro8FRj6dHB2O5Sud_9lpdu_U,2797
|
|
104
|
+
AeroViz/plot/utils/_unit.py,sha256=Abum0WDnq08DzkSoxkKvBc0mYKo8izIDmgduPo9Q27A,1671
|
|
105
|
+
AeroViz/plot/utils/fRH.json,sha256=t-2ux4TLOYAB-4jJ72LSM4jv1jk9XkaxKYNMDepMHIg,6038
|
|
106
|
+
AeroViz/plot/utils/plt_utils.py,sha256=JYYtmEKoKqvZ8mr3QEHdYcWabaBMhNWkgEmeBTdZZ-g,3438
|
|
107
|
+
AeroViz/plot/utils/sklearn_utils.py,sha256=hKFfkVkYLRxkIDKvO9COHXwhjD_UWqQigdT3mDToni4,2098
|
|
108
|
+
AeroViz/plot/utils/units.json,sha256=JKcqvLA6dkc8REV_NhX85Jl9LA4iAZxzw9RJp6JTla0,2965
|
|
109
|
+
AeroViz/plot/utils/__pycache__/__init__.cpython-312.pyc,sha256=cSedTiYCOMUddBS6vTo01D49rYzoq-jxbSRKwKJJPDs,292
|
|
110
|
+
AeroViz/plot/utils/__pycache__/_color.cpython-312.pyc,sha256=jF7thbeZa30DzFoqh5Aq4Yn0oYZmuES_2ycm81FFi4w,3959
|
|
111
|
+
AeroViz/plot/utils/__pycache__/_unit.cpython-312.pyc,sha256=V3ygaPmqprul9Z_0DlnPgXo92lAAWB1UIrY2IkUveiU,3427
|
|
112
|
+
AeroViz/plot/utils/__pycache__/plt_utils.cpython-312.pyc,sha256=tpThzReUM3NA0gBGIXX06YuL9UaQjDBx6YFFVMyX7CY,4670
|
|
113
|
+
AeroViz/plot/utils/__pycache__/sklearn_utils.cpython-312.pyc,sha256=Vx4B6Lll0jF-blExITGxk3x9P-_gxp-gffCGhLALAUw,3018
|
|
114
|
+
AeroViz/rawDataReader/FLOW.md,sha256=kiAMKzX64H38AD7-FN1vicOkPpzlcv9dv9BYngeulew,10363
|
|
115
|
+
AeroViz/rawDataReader/__init__.py,sha256=4Vx4-jhvy339K4u83rBKbvIt9_yLZcArpbbo5zUO-ew,7704
|
|
116
|
+
AeroViz/rawDataReader/__pycache__/__init__.cpython-312.pyc,sha256=jdbVvHoHzARVygJ_bO5YDCwZ-4cAfdWWmqSGQV9lbfg,8204
|
|
117
|
+
AeroViz/rawDataReader/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
118
|
+
AeroViz/rawDataReader/config/supported_instruments.py,sha256=2akCov4X68NDRsWKeumIftj5k3MAhY6nI-40fdy_gzo,4314
|
|
119
|
+
AeroViz/rawDataReader/config/__pycache__/__init__.cpython-312.pyc,sha256=evvWRGJgXCgqxGpLZHnrIqMK-IXu1Joyez5bc_DFfMc,171
|
|
120
|
+
AeroViz/rawDataReader/config/__pycache__/supported_instruments.cpython-312.pyc,sha256=BwQh84-82xoCSU3jI-Lf527uSKxrpAWrd7wN32V9VIw,4146
|
|
121
|
+
AeroViz/rawDataReader/core/__init__.py,sha256=vSnVSMaUrzCWQwOVTVNUnOWuP3oMAPDZra3fVcwgSC0,23436
|
|
122
|
+
AeroViz/rawDataReader/core/logger.py,sha256=cZUFbYq2tECuMaOI6CBca7npTkhrtSZbOsUrGg0uKfY,5988
|
|
123
|
+
AeroViz/rawDataReader/core/pre_process.py,sha256=zfqkYOd9Cb3yFLk2LfJg74TojWiisQuSNFCKPwUiiok,10569
|
|
124
|
+
AeroViz/rawDataReader/core/qc.py,sha256=P6WEouHj4Gy_y6ry2wyuYQQX6XhpRpSL9I7n7Evpg80,38593
|
|
125
|
+
AeroViz/rawDataReader/core/report.py,sha256=ySV_WGduu_8RgNrcxMT6cc3nA3RWQMAibSXku3GG2TI,20802
|
|
126
|
+
AeroViz/rawDataReader/core/__pycache__/__init__.cpython-312.pyc,sha256=IR_TdPKK121gu8tJ3swoxLLQ2uuKLEZH7q7lbRUzcHY,28641
|
|
127
|
+
AeroViz/rawDataReader/core/__pycache__/logger.cpython-312.pyc,sha256=_mla3EjMoGfPHZwLPHsmaIoVgs16YbezK1WZTOCTaDg,9287
|
|
128
|
+
AeroViz/rawDataReader/core/__pycache__/pre_process.cpython-312.pyc,sha256=uFJdxo2RXe0JMXr3XI9vEYfYxFge1GUhxFXlybTRLNo,11313
|
|
129
|
+
AeroViz/rawDataReader/core/__pycache__/qc.cpython-312.pyc,sha256=KtYZu0InWUWl2L5UIU-Bve1ymnErCfBqWPBKqrC_ExE,38309
|
|
130
|
+
AeroViz/rawDataReader/core/__pycache__/report.cpython-312.pyc,sha256=rK6ts2nCRtTTlv2SN5S6bhN5eR57KOoUe4yB5MpDH78,20702
|
|
131
|
+
AeroViz/rawDataReader/script/AE33.py,sha256=2i89L44cHJlQD7SFHsq3o5X3K5qqonHXJ9LScsAooOo,7271
|
|
132
|
+
AeroViz/rawDataReader/script/AE43.py,sha256=WoDritsVhqYRR6-7MlO25jPfSRXULgK6becH_yYbNuE,6397
|
|
133
|
+
AeroViz/rawDataReader/script/APS.py,sha256=knRMQ00TplKYCSjRS6_8BwvFBTdgoYptD8tY0yb-BHo,13805
|
|
134
|
+
AeroViz/rawDataReader/script/Aurora.py,sha256=J-gtMSqX2Y2SrREzKbARuq-vw7HCQVELUkk2QVk_h1w,6971
|
|
135
|
+
AeroViz/rawDataReader/script/BAM1020.py,sha256=dAD7qmey78vPz7wbX6s9IuyNWO7ceBn1d7Cr-iwEL_U,3028
|
|
136
|
+
AeroViz/rawDataReader/script/BC1054.py,sha256=GaNEb--P66lKWGtkhTwombH3SOilQCvZSK__JTmDSCY,6814
|
|
137
|
+
AeroViz/rawDataReader/script/EPA.py,sha256=5UqVE1F7s0VGpfc0F-pdsTm-j5OItNNAkiQGx0DbAMo,2941
|
|
138
|
+
AeroViz/rawDataReader/script/GRIMM.py,sha256=bUy_MkTXaE8G9bXXU9C6zszGqt7wYLpPr32X7k449jw,2097
|
|
139
|
+
AeroViz/rawDataReader/script/IGAC.py,sha256=19UDNDfOBX17nBWx9O-3woQqIE__SOwdpQwqm8KpS8g,5321
|
|
140
|
+
AeroViz/rawDataReader/script/MA350.py,sha256=uB_Rnk_RBCFxd3br4atol6IrD6Vvt_qMebUIOnK6h00,6992
|
|
141
|
+
AeroViz/rawDataReader/script/Minion.py,sha256=GP4sZokoPI2cxy8PMAty36YdVKbx5_nNlT4Oo8XCyzk,7861
|
|
142
|
+
AeroViz/rawDataReader/script/NEPH.py,sha256=lOP6_VZXCyK2cOzhq2cYW7xhwI-j6t83ZcXCZEL-VSE,7481
|
|
143
|
+
AeroViz/rawDataReader/script/OCEC.py,sha256=oixnDMR85008VBqxUQpVdy344dDtBJybFmSAeO1q6Xs,6798
|
|
144
|
+
AeroViz/rawDataReader/script/Q-ACSM.py,sha256=rszq-ARU0HK1pfE1X4kLej0AcKzAN7MBr-S_3JfmDdE,322
|
|
145
|
+
AeroViz/rawDataReader/script/SMPS.py,sha256=2C9WfsCiUVIjVNW-KWB5DS2KjVgAQbnnpf-pbH77MNc,16067
|
|
146
|
+
AeroViz/rawDataReader/script/TEOM.py,sha256=zjCE3u5y4Nxe7Votf229TAmuNm_HzGvtJw1Ltn2ZRxA,7195
|
|
147
|
+
AeroViz/rawDataReader/script/VOC.py,sha256=uwthJcL3f2a6by09ca-g_5oQhaCkTGBdpfxQMBc6LG8,3764
|
|
148
|
+
AeroViz/rawDataReader/script/Xact.py,sha256=eSR_b9LlFe7HookSqDHKgW1G1eDAp-o2KUZPX5t6Q3s,10142
|
|
149
|
+
AeroViz/rawDataReader/script/__init__.py,sha256=UwOM_vI7dYbc0sFviiq8BgTNvbHEXpsDhZ8Qc5IKFH4,916
|
|
150
|
+
AeroViz/rawDataReader/script/__pycache__/AE33.cpython-312.pyc,sha256=DP6kVRdlx52-7Bup4KoHBXYh585PyA12LOWMdW6BBxU,8145
|
|
151
|
+
AeroViz/rawDataReader/script/__pycache__/AE43.cpython-312.pyc,sha256=QqCNDWDoOdS7HpMT4EZxL7rKUKjUGZGdGhZ-LQkeYZc,7133
|
|
152
|
+
AeroViz/rawDataReader/script/__pycache__/APS.cpython-312.pyc,sha256=LTetcS1iqAYouXMuDAUREGsZWhNK2Ylit5KrnAMjxMw,15969
|
|
153
|
+
AeroViz/rawDataReader/script/__pycache__/Aurora.cpython-312.pyc,sha256=EycBTX1O_q89jpt33CifpC50QSL0z4F2p8XAUfMSfoQ,8455
|
|
154
|
+
AeroViz/rawDataReader/script/__pycache__/BAM1020.cpython-312.pyc,sha256=-r9SbEYCkXvp8NSyltTOnN3kq8PdIXIeCkRzXZrxRqw,4220
|
|
155
|
+
AeroViz/rawDataReader/script/__pycache__/BC1054.cpython-312.pyc,sha256=Pv1nQwRHsMleI7xe6m7_MLYeMetBn-5aR6LCKEEaVOo,7870
|
|
156
|
+
AeroViz/rawDataReader/script/__pycache__/EPA.cpython-312.pyc,sha256=8RHYUWX0CdCu3Fzpcq15nAbZKNtoGOBgBWzWnV97vPo,4123
|
|
157
|
+
AeroViz/rawDataReader/script/__pycache__/GRIMM.cpython-312.pyc,sha256=V-c2i563O6SbpqaONNwHLnM8SctKkXm2wqO4IggaxU4,3060
|
|
158
|
+
AeroViz/rawDataReader/script/__pycache__/IGAC.cpython-312.pyc,sha256=lyoIz_QSIQfZQDfdsn-3Y2o2OhFxTO6_NwpUn7VdCEc,7838
|
|
159
|
+
AeroViz/rawDataReader/script/__pycache__/MA350.cpython-312.pyc,sha256=iqNPf5hdjDyfNsAE284OxRB4YWMiRuTyn9IDGmW0BW4,7618
|
|
160
|
+
AeroViz/rawDataReader/script/__pycache__/Minion.cpython-312.pyc,sha256=lQ_tWrzGggDRvWBUUoEPoDzD0DV9kNnSxLQi5dgkQJE,10308
|
|
161
|
+
AeroViz/rawDataReader/script/__pycache__/NEPH.cpython-312.pyc,sha256=XMWGLPH4YGZi2y92JVfzQGEHzlM6L8ra0ZKzUPAANaM,10039
|
|
162
|
+
AeroViz/rawDataReader/script/__pycache__/OCEC.cpython-312.pyc,sha256=cZSPYJ1ZiDzlQ8jjABYhIW_38sH-IYAROXscJzGbAZ0,7736
|
|
163
|
+
AeroViz/rawDataReader/script/__pycache__/Q-ACSM.cpython-312.pyc,sha256=MmaDMNvH1NOw-RgLC0e2KG2tENK1N_fHYMK2H50LjCI,659
|
|
164
|
+
AeroViz/rawDataReader/script/__pycache__/SMPS.cpython-312.pyc,sha256=NXpxs3c3f5tcKm3iWCuCGoY-A88PX8rDnenjk20U6RE,20452
|
|
165
|
+
AeroViz/rawDataReader/script/__pycache__/TEOM.cpython-312.pyc,sha256=HfqyOwPZDr7NjVIoHeE9GEWgxO0K7WmKO5gkKlQ_uWE,8433
|
|
166
|
+
AeroViz/rawDataReader/script/__pycache__/VOC.cpython-312.pyc,sha256=jIbiLylI4QN1oqB7C0BA9kfx6LUF0NhoZ3iWwy45g6E,5009
|
|
167
|
+
AeroViz/rawDataReader/script/__pycache__/Xact.cpython-312.pyc,sha256=AUVsPP-7zxVanuLOKvC91zMnarxIOUmIhUXEfleqyc8,10798
|
|
168
|
+
AeroViz/rawDataReader/script/__pycache__/__init__.cpython-312.pyc,sha256=YGk6QWALotOCfZUi21zlnEpQYJxs7LkW_gI18kjIbIM,1038
|
|
169
|
+
AeroViz/tools/__init__.py,sha256=3yC7clSoIAs7tvRy6M0BEM_N-0Fn2najLP7njT0ogME,74
|
|
170
|
+
AeroViz/tools/database.py,sha256=05VzjJyhlRrhsZdhfFQ__7CxGm4MdFekLjz3_Is5h9U,3430
|
|
171
|
+
AeroViz/tools/dataclassifier.py,sha256=_wpv0PlZ5EGkcNqHxfFtdEsYvHP5FVE8sMZXikhm_YE,4492
|
|
172
|
+
AeroViz/tools/dataprinter.py,sha256=Jq2Yztpa9YCOeLDVTrRs7PhSdNIPhEAexVj1YSuJ7hY,2249
|
|
173
|
+
AeroViz/tools/__pycache__/__init__.cpython-312.pyc,sha256=xXS6SMZRcIZZgcOlQEgJG9HV7_PBUjpazSImP_47mv8,254
|
|
174
|
+
AeroViz/tools/__pycache__/database.cpython-312.pyc,sha256=DoHQHD8RaVsrIgOEKRIYajydiN9-xkSoIdbLxzJqenM,3605
|
|
175
|
+
AeroViz/tools/__pycache__/dataclassifier.cpython-312.pyc,sha256=TTDraHKco2GbEh3gZDF23BS9JxniJ9I1jGprk1fWW2c,6801
|
|
176
|
+
aeroviz-0.1.21.dist-info/licenses/LICENSE,sha256=E-679GpGGkp3irmtuJXiT7R4cNUA4cmsH6Q7QUgPf5U,1069
|
|
177
|
+
aeroviz-0.1.21.dist-info/METADATA,sha256=djlu3KxiiBeprsJ-O4lg59bpjb3-x3Gm5hnXctC20uE,10893
|
|
178
|
+
aeroviz-0.1.21.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
179
|
+
aeroviz-0.1.21.dist-info/top_level.txt,sha256=BYsmTst_o4FZOKRP1XIvIMlN6mMTTXNfnSToL2_nVbQ,8
|
|
180
|
+
aeroviz-0.1.21.dist-info/RECORD,,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 Chih-Yu Chan
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
AeroViz
|