AeroViz 0.1.10__py3-none-any.whl → 0.1.12__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.
Potentially problematic release.
This version of AeroViz might be problematic. Click here for more details.
- AeroViz/__pycache__/__init__.cpython-312.pyc +0 -0
- AeroViz/dataProcess/Chemistry/__pycache__/__init__.cpython-312.pyc +0 -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/SizeDistr/__pycache__/__init__.cpython-312.pyc +0 -0
- AeroViz/dataProcess/VOC/__pycache__/__init__.cpython-312.pyc +0 -0
- AeroViz/dataProcess/__pycache__/__init__.cpython-312.pyc +0 -0
- AeroViz/dataProcess/core/__pycache__/__init__.cpython-312.pyc +0 -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/distribution/__pycache__/__init__.cpython-312.pyc +0 -0
- AeroViz/plot/distribution/__pycache__/distribution.cpython-312.pyc +0 -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 +7 -4
- AeroViz/plot/optical/__pycache__/__init__.cpython-312.pyc +0 -0
- AeroViz/plot/optical/__pycache__/optical.cpython-312.pyc +0 -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/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/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/rawDataReader/__init__.py +4 -4
- AeroViz/rawDataReader/__pycache__/__init__.cpython-312.pyc +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 +1 -1
- AeroViz/rawDataReader/core/__init__.py +10 -5
- AeroViz/rawDataReader/core/__pycache__/__init__.cpython-312.pyc +0 -0
- AeroViz/rawDataReader/core/__pycache__/logger.cpython-312.pyc +0 -0
- AeroViz/rawDataReader/core/__pycache__/qc.cpython-312.pyc +0 -0
- AeroViz/rawDataReader/core/logger.py +119 -30
- AeroViz/rawDataReader/script/AE33.py +1 -1
- AeroViz/rawDataReader/script/{APS_3321.py → APS.py} +9 -16
- AeroViz/rawDataReader/script/Minion.py +2 -0
- AeroViz/rawDataReader/script/OCEC.py +2 -2
- AeroViz/rawDataReader/script/SMPS.py +12 -10
- AeroViz/rawDataReader/script/__init__.py +1 -1
- 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__/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__/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__/XRF.cpython-312.pyc +0 -0
- AeroViz/rawDataReader/script/__pycache__/__init__.cpython-312.pyc +0 -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-0.1.10.dist-info → AeroViz-0.1.12.dist-info}/METADATA +22 -17
- {AeroViz-0.1.10.dist-info → AeroViz-0.1.12.dist-info}/RECORD +82 -82
- {AeroViz-0.1.10.dist-info → AeroViz-0.1.12.dist-info}/WHEEL +1 -1
- AeroViz/rawDataReader/script/__pycache__/APS_3321.cpython-312.pyc +0 -0
- {AeroViz-0.1.10.dist-info → AeroViz-0.1.12.dist-info}/LICENSE +0 -0
- {AeroViz-0.1.10.dist-info → AeroViz-0.1.12.dist-info}/top_level.txt +0 -0
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -40,14 +40,17 @@ def hysplit(file: Path = DEFAULT_FILE):
|
|
|
40
40
|
# 創建地圖
|
|
41
41
|
fig, ax = plt.subplots(figsize=(4, 5), subplot_kw={'projection': ccrs.PlateCarree()})
|
|
42
42
|
|
|
43
|
+
ax.set_global()
|
|
44
|
+
# ax.stock_img()
|
|
45
|
+
|
|
43
46
|
# 設置地圖範圍
|
|
44
47
|
ax.set_extent([116, 126, 17, 30], crs=ccrs.PlateCarree())
|
|
45
48
|
|
|
46
49
|
# 添加自然地理特徵
|
|
47
|
-
ax.add_feature(cfeature.LAND)
|
|
48
|
-
ax.add_feature(cfeature.OCEAN)
|
|
49
|
-
ax.add_feature(cfeature.COASTLINE)
|
|
50
|
-
ax.add_feature(cfeature.BORDERS, linestyle=':')
|
|
50
|
+
ax.add_feature(cfeature.LAND.with_scale('10m'))
|
|
51
|
+
ax.add_feature(cfeature.OCEAN.with_scale('10m'))
|
|
52
|
+
ax.add_feature(cfeature.COASTLINE.with_scale('10m'))
|
|
53
|
+
ax.add_feature(cfeature.BORDERS.with_scale('10m'), linestyle=':')
|
|
51
54
|
|
|
52
55
|
# 添加經緯度網格
|
|
53
56
|
ax.gridlines(draw_labels=True, dms=True, x_inline=False, y_inline=False)
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -10,7 +10,7 @@ from AeroViz.rawDataReader.script import *
|
|
|
10
10
|
__all__ = ['RawDataReader']
|
|
11
11
|
|
|
12
12
|
SUPPORTED_INSTRUMENTS = [
|
|
13
|
-
NEPH, Aurora, SMPS, GRIMM,
|
|
13
|
+
NEPH, Aurora, SMPS, GRIMM, APS, AE33, AE43, BC1054,
|
|
14
14
|
MA350, TEOM, OCEC, IGAC, VOC, EPA, Minion
|
|
15
15
|
]
|
|
16
16
|
|
|
@@ -62,7 +62,7 @@ def RawDataReader(instrument_name: str,
|
|
|
62
62
|
... instrument_name='BC1054',
|
|
63
63
|
... path=Path('/path/to/data'),
|
|
64
64
|
... start=datetime(2024, 2, 1),
|
|
65
|
-
... end=datetime(2024, 7, 31
|
|
65
|
+
... end=datetime(2024, 7, 31))
|
|
66
66
|
"""
|
|
67
67
|
# Mapping of instrument names to their respective classes
|
|
68
68
|
instrument_class_map = {cls.__name__.split('.')[-1]: cls for cls in SUPPORTED_INSTRUMENTS}
|
|
@@ -71,7 +71,7 @@ def RawDataReader(instrument_name: str,
|
|
|
71
71
|
if instrument_name not in meta.keys():
|
|
72
72
|
raise ValueError(f"Instrument name '{instrument_name}' is not valid. \nMust be one of: {list(meta.keys())}")
|
|
73
73
|
|
|
74
|
-
#
|
|
74
|
+
# Check if path exists and is a directory
|
|
75
75
|
if not isinstance(path, Path):
|
|
76
76
|
path = Path(path)
|
|
77
77
|
if not path.exists() or not path.is_dir():
|
|
@@ -94,7 +94,7 @@ def RawDataReader(instrument_name: str,
|
|
|
94
94
|
if end <= start:
|
|
95
95
|
raise ValueError(f"Invalid time range: start {start} is after end {end}")
|
|
96
96
|
|
|
97
|
-
#
|
|
97
|
+
# Verify that mean_freq format
|
|
98
98
|
try:
|
|
99
99
|
Timedelta(mean_freq)
|
|
100
100
|
except ValueError:
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -108,7 +108,7 @@ class AbstractReader(ABC):
|
|
|
108
108
|
_valid_rate = round((qc_size / sample_size) * 100, 1)
|
|
109
109
|
_total_rate = round((qc_size / period_size) * 100, 1)
|
|
110
110
|
|
|
111
|
-
self.logger.info(f"\t\t{self.logger.CYAN}
|
|
111
|
+
self.logger.info(f"\t\t{self.logger.CYAN}{self.logger.ARROW} {_nam}{self.logger.RESET}")
|
|
112
112
|
self.logger.info(
|
|
113
113
|
f"\t\t\t├─ {'Sample Rate':15}: {self.logger.BLUE}{_sample_rate:>6.1f}%{self.logger.RESET}")
|
|
114
114
|
self.logger.info(
|
|
@@ -124,7 +124,7 @@ class AbstractReader(ABC):
|
|
|
124
124
|
|
|
125
125
|
for (month, _sub_raw_data), (_, _sub_qc_data) in zip(raw_data_grouped, qc_data_grouped):
|
|
126
126
|
self.logger.info(
|
|
127
|
-
f"\t{self.logger.BLUE}
|
|
127
|
+
f"\t{self.logger.BLUE}{self.logger.ARROW} Processing: {_sub_raw_data.index[0].strftime('%F')}"
|
|
128
128
|
f" to {_sub_raw_data.index[-1].strftime('%F')}{self.logger.RESET}")
|
|
129
129
|
|
|
130
130
|
__base_rate(_sub_raw_data, _sub_qc_data)
|
|
@@ -143,7 +143,7 @@ class AbstractReader(ABC):
|
|
|
143
143
|
:return: Processed DataFrame
|
|
144
144
|
"""
|
|
145
145
|
# Round timestamps and remove duplicates
|
|
146
|
-
_df = _df.groupby(_df.index.
|
|
146
|
+
_df = _df.groupby(_df.index.floor('1min')).first()
|
|
147
147
|
|
|
148
148
|
# Determine frequency
|
|
149
149
|
freq = _df.index.inferred_freq or self.meta['freq']
|
|
@@ -161,7 +161,12 @@ class AbstractReader(ABC):
|
|
|
161
161
|
new_index = pd.date_range(user_start or df_start, user_end or df_end, freq=freq, name='time')
|
|
162
162
|
|
|
163
163
|
# Process data: convert to numeric, resample, and reindex
|
|
164
|
-
|
|
164
|
+
if freq in ['1min', 'min', 'T']:
|
|
165
|
+
return _df.reindex(new_index, method='nearest', tolerance='1min')
|
|
166
|
+
elif freq in ['1h', 'h', 'H']:
|
|
167
|
+
return _df.reindex(new_index, method='nearest', tolerance='1h')
|
|
168
|
+
else:
|
|
169
|
+
return _df.reindex(new_index, method='nearest', tolerance=freq)
|
|
165
170
|
|
|
166
171
|
def _outlier_process(self, _df):
|
|
167
172
|
outlier_file = self.path / 'outlier.json'
|
|
@@ -208,7 +213,7 @@ class AbstractReader(ABC):
|
|
|
208
213
|
console=Console(force_terminal=True, color_system="auto", width=120),
|
|
209
214
|
expand=False
|
|
210
215
|
) as progress:
|
|
211
|
-
task = progress.add_task(f"
|
|
216
|
+
task = progress.add_task(f"{self.logger.ARROW} Reading {self.nam} files", total=len(files), filename="")
|
|
212
217
|
yield progress, task
|
|
213
218
|
finally:
|
|
214
219
|
# Restore logger method and output message
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
+
import codecs
|
|
1
2
|
import logging
|
|
3
|
+
import os
|
|
4
|
+
import platform
|
|
2
5
|
import re
|
|
3
6
|
import sys
|
|
4
7
|
from pathlib import Path
|
|
@@ -9,70 +12,156 @@ class ReaderLogger:
|
|
|
9
12
|
self.name = name
|
|
10
13
|
self.log_path = log_path
|
|
11
14
|
|
|
12
|
-
#
|
|
13
|
-
self.
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
self.
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
# 檢查是否支持顏色輸出
|
|
16
|
+
self.color_support = self._check_color_support()
|
|
17
|
+
|
|
18
|
+
# 設置顏色代碼
|
|
19
|
+
if self.color_support:
|
|
20
|
+
self.CYAN = '\033[96m'
|
|
21
|
+
self.BLUE = '\033[94m'
|
|
22
|
+
self.GREEN = '\033[92m'
|
|
23
|
+
self.YELLOW = '\033[93m'
|
|
24
|
+
self.RED = '\033[91m'
|
|
25
|
+
self.RESET = '\033[0m'
|
|
26
|
+
else:
|
|
27
|
+
self.CYAN = ''
|
|
28
|
+
self.BLUE = ''
|
|
29
|
+
self.GREEN = ''
|
|
30
|
+
self.YELLOW = ''
|
|
31
|
+
self.RED = ''
|
|
32
|
+
self.RESET = ''
|
|
33
|
+
|
|
34
|
+
# 檢查 Unicode 支持
|
|
35
|
+
self.unicode_support = self._setup_unicode()
|
|
36
|
+
|
|
37
|
+
# 設置框架字符
|
|
38
|
+
if self.unicode_support:
|
|
39
|
+
self.BOX_TOP_LEFT = "╔"
|
|
40
|
+
self.BOX_TOP_RIGHT = "╗"
|
|
41
|
+
self.BOX_BOTTOM_LEFT = "╚"
|
|
42
|
+
self.BOX_BOTTOM_RIGHT = "╝"
|
|
43
|
+
self.BOX_HORIZONTAL = "═"
|
|
44
|
+
self.BOX_VERTICAL = "║"
|
|
45
|
+
self.ARROW = "▶"
|
|
46
|
+
else:
|
|
47
|
+
self.BOX_TOP_LEFT = "+"
|
|
48
|
+
self.BOX_TOP_RIGHT = "+"
|
|
49
|
+
self.BOX_BOTTOM_LEFT = "+"
|
|
50
|
+
self.BOX_BOTTOM_RIGHT = "+"
|
|
51
|
+
self.BOX_HORIZONTAL = "-"
|
|
52
|
+
self.BOX_VERTICAL = "|"
|
|
53
|
+
self.ARROW = ">"
|
|
19
54
|
|
|
20
55
|
self.logger = self._setup_logger()
|
|
21
56
|
|
|
57
|
+
def _check_color_support(self) -> bool:
|
|
58
|
+
"""檢查環境是否支持顏色輸出"""
|
|
59
|
+
# 檢查是否在 Spyder 或其他 IDE 中運行
|
|
60
|
+
if any(IDE in os.environ.get('PYTHONPATH', '') for IDE in ['spyder', 'jupyter']):
|
|
61
|
+
return False
|
|
62
|
+
|
|
63
|
+
# 檢查是否強制啟用或禁用顏色
|
|
64
|
+
if 'FORCE_COLOR' in os.environ:
|
|
65
|
+
return os.environ['FORCE_COLOR'].lower() in ('1', 'true', 'yes')
|
|
66
|
+
|
|
67
|
+
# Windows 檢查
|
|
68
|
+
if platform.system().lower() == 'windows':
|
|
69
|
+
return ('ANSICON' in os.environ or
|
|
70
|
+
'WT_SESSION' in os.environ or # Windows Terminal
|
|
71
|
+
'ConEmuANSI' in os.environ or
|
|
72
|
+
os.environ.get('TERM_PROGRAM', '').lower() == 'vscode')
|
|
73
|
+
|
|
74
|
+
# 其他系統檢查
|
|
75
|
+
return hasattr(sys.stdout, 'isatty') and sys.stdout.isatty()
|
|
76
|
+
|
|
77
|
+
def _setup_unicode(self) -> bool:
|
|
78
|
+
"""設置 Unicode 支持"""
|
|
79
|
+
if platform.system().lower() == 'windows':
|
|
80
|
+
try:
|
|
81
|
+
if hasattr(sys.stdout, 'reconfigure'):
|
|
82
|
+
sys.stdout.reconfigure(encoding='utf-8')
|
|
83
|
+
elif hasattr(sys.stdout, 'buffer'):
|
|
84
|
+
sys.stdout = codecs.getwriter('utf-8')(sys.stdout.buffer)
|
|
85
|
+
else:
|
|
86
|
+
return False
|
|
87
|
+
return True
|
|
88
|
+
except Exception:
|
|
89
|
+
return False
|
|
90
|
+
return True
|
|
91
|
+
|
|
22
92
|
def _setup_logger(self) -> logging.Logger:
|
|
93
|
+
"""設置logger"""
|
|
23
94
|
logger = logging.getLogger(self.name)
|
|
24
95
|
logger.setLevel(logging.INFO)
|
|
25
96
|
|
|
26
|
-
#
|
|
97
|
+
# 移除現有的 handlers
|
|
27
98
|
for handler in logger.handlers[:]:
|
|
28
99
|
handler.close()
|
|
29
100
|
logger.removeHandler(handler)
|
|
30
101
|
|
|
31
|
-
#
|
|
102
|
+
# 清理 ANSI 格式化器
|
|
32
103
|
class CleanFormatter(logging.Formatter):
|
|
33
104
|
def format(self, record):
|
|
34
105
|
formatted_msg = super().format(record)
|
|
35
106
|
return re.sub(r'\033\[[0-9;]*m', '', formatted_msg)
|
|
36
107
|
|
|
37
|
-
#
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
108
|
+
# 設置檔案處理器
|
|
109
|
+
try:
|
|
110
|
+
log_dir = Path(self.log_path)
|
|
111
|
+
log_dir.mkdir(parents=True, exist_ok=True)
|
|
112
|
+
file_handler = logging.FileHandler(
|
|
113
|
+
log_dir / f'{self.name}.log',
|
|
114
|
+
encoding='utf-8',
|
|
115
|
+
errors='replace'
|
|
116
|
+
)
|
|
117
|
+
file_handler.setFormatter(
|
|
118
|
+
CleanFormatter('%(asctime)s - %(message)s',
|
|
119
|
+
datefmt='%Y-%m-%d %H:%M:%S')
|
|
120
|
+
)
|
|
121
|
+
logger.addHandler(file_handler)
|
|
122
|
+
except Exception as e:
|
|
123
|
+
print(f"Warning: Could not set up file logging: {e}")
|
|
124
|
+
|
|
125
|
+
# 設置控制台處理器
|
|
41
126
|
console_handler = logging.StreamHandler(sys.stdout)
|
|
42
127
|
console_handler.setFormatter(logging.Formatter('%(message)s'))
|
|
43
|
-
|
|
44
|
-
logger.addHandler(file_handler)
|
|
45
128
|
logger.addHandler(console_handler)
|
|
46
129
|
|
|
47
130
|
return logger
|
|
48
131
|
|
|
132
|
+
def _safe_print(self, text: str) -> str:
|
|
133
|
+
"""安全打印,處理編碼問題"""
|
|
134
|
+
if not self.unicode_support:
|
|
135
|
+
text = text.encode('ascii', 'replace').decode('ascii')
|
|
136
|
+
return text
|
|
137
|
+
|
|
49
138
|
def info(self, msg: str):
|
|
50
|
-
self.logger.info(msg)
|
|
139
|
+
self.logger.info(self._safe_print(msg))
|
|
51
140
|
|
|
52
141
|
def warning(self, msg: str):
|
|
53
|
-
self.logger.warning(msg)
|
|
142
|
+
self.logger.warning(self._safe_print(msg))
|
|
54
143
|
|
|
55
144
|
def error(self, msg: str):
|
|
56
|
-
self.logger.error(msg)
|
|
145
|
+
self.logger.error(self._safe_print(msg))
|
|
57
146
|
|
|
58
147
|
def info_box(self, text: str, color_part: str = None, width: int = 80):
|
|
59
|
-
"""
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
Args:
|
|
63
|
-
text: Base text format (e.g., "Reading {} RAW DATA from {} to {}")
|
|
64
|
-
color_part: Part of text to be colored (e.g., "RAW DATA")
|
|
65
|
-
width: Box width
|
|
66
|
-
"""
|
|
148
|
+
"""創建帶框的消息,可選擇性地為部分文本著色"""
|
|
149
|
+
# 處理文本
|
|
67
150
|
display_text = text.replace(color_part, " " * len(color_part)) if color_part else text
|
|
68
151
|
|
|
152
|
+
# 計算padding
|
|
69
153
|
left_padding = " " * ((width - len(display_text)) // 2)
|
|
70
154
|
right_padding = " " * (width - len(display_text) - len(left_padding))
|
|
71
155
|
|
|
72
|
-
|
|
156
|
+
# 處理顏色
|
|
157
|
+
if color_part and self.color_support:
|
|
158
|
+
content = text.replace(color_part, f"{self.CYAN}{color_part}{self.RESET}")
|
|
159
|
+
else:
|
|
160
|
+
content = text
|
|
73
161
|
|
|
74
162
|
__content__ = f"{left_padding}{content}{right_padding}"
|
|
75
163
|
|
|
76
|
-
|
|
77
|
-
self.info(f"
|
|
78
|
-
self.info(f"
|
|
164
|
+
# 使用當前設置的框架字符
|
|
165
|
+
self.info(f"{self.BOX_TOP_LEFT}{self.BOX_HORIZONTAL * width}{self.BOX_TOP_RIGHT}")
|
|
166
|
+
self.info(f"{self.BOX_VERTICAL}{__content__}{self.BOX_VERTICAL}")
|
|
167
|
+
self.info(f"{self.BOX_BOTTOM_LEFT}{self.BOX_HORIZONTAL * width}{self.BOX_BOTTOM_RIGHT}")
|
|
@@ -8,7 +8,7 @@ class Reader(AbstractReader):
|
|
|
8
8
|
|
|
9
9
|
def _raw_reader(self, file):
|
|
10
10
|
if file.stat().st_size / 1024 < 550:
|
|
11
|
-
self.logger.info(f'\t {file} may not be a whole daily data. Make sure the file is correct.')
|
|
11
|
+
self.logger.info(f'\t {file.name} may not be a whole daily data. Make sure the file is correct.')
|
|
12
12
|
|
|
13
13
|
_df = read_table(file, parse_dates={'time': [0, 1]}, index_col='time',
|
|
14
14
|
delimiter=r'\s+', skiprows=5, usecols=range(67))
|
|
@@ -5,29 +5,24 @@ from AeroViz.rawDataReader.core import AbstractReader
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
class Reader(AbstractReader):
|
|
8
|
-
nam = '
|
|
8
|
+
nam = 'APS'
|
|
9
9
|
|
|
10
10
|
def _raw_reader(self, file):
|
|
11
11
|
with open(file, 'r', encoding='utf-8', errors='ignore') as f:
|
|
12
|
-
_df = read_table(f, skiprows=6, parse_dates={'Time': ['Date', 'Start Time']}
|
|
13
|
-
|
|
12
|
+
_df = read_table(f, skiprows=6, parse_dates={'Time': ['Date', 'Start Time']},
|
|
13
|
+
date_format='%m/%d/%y %H:%M:%S').set_index('Time')
|
|
14
14
|
|
|
15
|
-
#
|
|
16
|
-
|
|
17
|
-
for _k in _key:
|
|
18
|
-
_newkey[_k] = float(_k).__round__(4)
|
|
19
|
-
# _newkey['Mode(m)'] = 'mode'
|
|
15
|
+
# 542 nm ~ 1981 nm
|
|
16
|
+
_df = _df.iloc[:, 3:54].rename(columns=lambda x: round(float(x), 4))
|
|
20
17
|
|
|
21
|
-
|
|
22
|
-
_df = _df[_newkey.keys()].rename(_newkey, axis=1)
|
|
23
|
-
# df['total'] = _df[list(_newkey.values())[:-1]].sum(axis=1)*(n.diff(n.log(_df.keys()[:-1].to_numpy(float))).mean()).copy()
|
|
24
|
-
|
|
25
|
-
_df_idx = to_datetime(_df.index, errors='coerce')
|
|
18
|
+
_df_idx = to_datetime(_df.index, format='%m/%d/%y %H:%M:%S', errors='coerce')
|
|
26
19
|
|
|
27
20
|
return _df.set_index(_df_idx).loc[_df_idx.dropna()]
|
|
28
21
|
|
|
29
22
|
# QC data
|
|
30
23
|
def _QC(self, _df):
|
|
24
|
+
_df = _df.copy()
|
|
25
|
+
|
|
31
26
|
# mask out the data size lower than 7
|
|
32
27
|
_df['total'] = _df.sum(axis=1, min_count=1) * (np.diff(np.log(_df.keys().to_numpy(float)))).mean()
|
|
33
28
|
_df_size = _df['total'].dropna().resample('1h').size().resample(_df.index.freq).ffill()
|
|
@@ -37,11 +32,9 @@ class Reader(AbstractReader):
|
|
|
37
32
|
_df = _df.mask(_df['total'] > 700)
|
|
38
33
|
|
|
39
34
|
# not confirmed
|
|
40
|
-
|
|
41
|
-
## remove the bin over 4000 nm which num. conc. larger than 1
|
|
35
|
+
# remove the bin over 4000 nm which num. conc. larger than 1
|
|
42
36
|
# _df_remv_ky = _df.keys()[:-2][_df.keys()[:-2]>=4.]
|
|
43
37
|
|
|
44
38
|
# _df_1hr[_df_remv_ky] = _df_1hr[_df_remv_ky].copy().mask(_df_1hr[_df_remv_ky]>1.)
|
|
45
|
-
# """
|
|
46
39
|
|
|
47
40
|
return _df[_df.keys()[:-1]]
|
|
@@ -187,6 +187,8 @@ class Reader(AbstractReader):
|
|
|
187
187
|
['Cl-', 'NO2-', 'NO3-', 'SO42-'],
|
|
188
188
|
['SO42-', 'NO3-', 'NH4+'])
|
|
189
189
|
|
|
190
|
+
CA_range = () # CA, AC Q3=1.5 * IQR
|
|
191
|
+
|
|
190
192
|
_df['+_mole'] = _df[_cation].div([23, 18, 39, (24 / 2), (40 / 2)]).sum(axis=1, skipna=True)
|
|
191
193
|
_df['-_mole'] = _df[_anion].div([35.5, 46, 62, (96 / 2)]).sum(axis=1, skipna=True)
|
|
192
194
|
|
|
@@ -64,20 +64,22 @@ class Reader(AbstractReader):
|
|
|
64
64
|
|
|
65
65
|
# QC data
|
|
66
66
|
def _QC(self, _df):
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
67
|
+
df = _df.copy()
|
|
68
|
+
|
|
69
|
+
size_range_mask = (df.columns.astype(float) >= self.size_range[0]) & (
|
|
70
|
+
df.columns.astype(float) <= self.size_range[1])
|
|
71
|
+
df = df.loc[:, size_range_mask]
|
|
70
72
|
|
|
71
73
|
# mask out the data size lower than 7
|
|
72
|
-
|
|
73
|
-
_df_size =
|
|
74
|
-
|
|
74
|
+
df.loc[:, 'total'] = df.sum(axis=1, min_count=1) * (np.diff(np.log(df.columns[:-1].to_numpy(float)))).mean()
|
|
75
|
+
_df_size = df['total'].dropna().resample('1h').size().resample(df.index.freq).ffill()
|
|
76
|
+
df = df.mask(_df_size < 7)
|
|
75
77
|
|
|
76
78
|
# remove total conc. lower than 2000
|
|
77
|
-
|
|
79
|
+
df = df.mask(df['total'] < 2000)
|
|
78
80
|
|
|
79
81
|
# remove the bin over 400 nm which num. conc. larger than 4000
|
|
80
|
-
_df_remv_ky =
|
|
81
|
-
|
|
82
|
+
_df_remv_ky = df.keys()[:-1][df.keys()[:-1] >= 400.]
|
|
83
|
+
df[_df_remv_ky] = df[_df_remv_ky].copy().mask(df[_df_remv_ky] > 4000.)
|
|
82
84
|
|
|
83
|
-
return
|
|
85
|
+
return df[df.keys()[:-1]]
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: AeroViz
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.12
|
|
4
4
|
Summary: Aerosol science
|
|
5
5
|
Author-email: alex <alex870521@gmail.com>
|
|
6
6
|
License: MIT
|
|
@@ -25,6 +25,10 @@ Requires-Dist: windrose==1.9.2
|
|
|
25
25
|
Requires-Dist: cartopy==0.24.1
|
|
26
26
|
Requires-Dist: tabulate==0.9.0
|
|
27
27
|
Requires-Dist: rich~=13.7.1
|
|
28
|
+
Provides-Extra: test
|
|
29
|
+
Requires-Dist: pytest>=7.0.0; extra == "test"
|
|
30
|
+
Requires-Dist: pytest-cov>=4.1.0; extra == "test"
|
|
31
|
+
Requires-Dist: pytest-mock>=3.10.0; extra == "test"
|
|
28
32
|
Provides-Extra: dev
|
|
29
33
|
Requires-Dist: black>=23.0; extra == "dev"
|
|
30
34
|
Requires-Dist: isort>=5.12.0; extra == "dev"
|
|
@@ -36,10 +40,6 @@ Provides-Extra: docs
|
|
|
36
40
|
Requires-Dist: mkdocs>=1.4.0; extra == "docs"
|
|
37
41
|
Requires-Dist: mkdocs-material>=8.0; extra == "docs"
|
|
38
42
|
Requires-Dist: mkdocstrings[python]>=0.18.0; extra == "docs"
|
|
39
|
-
Provides-Extra: test
|
|
40
|
-
Requires-Dist: pytest>=7.0.0; extra == "test"
|
|
41
|
-
Requires-Dist: pytest-cov>=4.1.0; extra == "test"
|
|
42
|
-
Requires-Dist: pytest-mock>=3.10.0; extra == "test"
|
|
43
43
|
|
|
44
44
|
## <div align="center">AeroViz for Aerosol Science Visualization</div>
|
|
45
45
|
|
|
@@ -103,10 +103,24 @@ from pathlib import Path
|
|
|
103
103
|
from AeroViz import RawDataReader, DataProcess, plot
|
|
104
104
|
|
|
105
105
|
# Read data from a supported instrument
|
|
106
|
-
data = RawDataReader(
|
|
106
|
+
data = RawDataReader(
|
|
107
|
+
'NEPH',
|
|
108
|
+
Path('/path/to/data'),
|
|
109
|
+
start=datetime(2024, 2, 1),
|
|
110
|
+
end=datetime(2024, 4, 30)
|
|
111
|
+
)
|
|
112
|
+
```
|
|
107
113
|
|
|
108
|
-
|
|
109
|
-
|
|
114
|
+
```pycon
|
|
115
|
+
> Concole output
|
|
116
|
+
╔════════════════════════════════════════════════════════════════════════════════╗
|
|
117
|
+
║ Reading NEPH RAW DATA from 2024-02-01 00:00:00 to 2024-04-30 23:59:59 ║
|
|
118
|
+
╚════════════════════════════════════════════════════════════════════════════════╝
|
|
119
|
+
▶ Reading NEPH files ━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00 file_name.dat
|
|
120
|
+
▶ Scatter Coe. (550 nm)
|
|
121
|
+
├─ Sample Rate : 100.0%
|
|
122
|
+
├─ Valid Rate : 100.0%
|
|
123
|
+
└─ Total Rate : 100.0%
|
|
110
124
|
```
|
|
111
125
|
|
|
112
126
|
For more detailed usage instructions, please refer to our [User Guide](docs/guide).
|
|
@@ -125,12 +139,3 @@ For detailed documentation, please refer to the `docs` folder, which includes:
|
|
|
125
139
|
|
|
126
140
|
## <div align="center">Contact</div>
|
|
127
141
|
For bug reports and feature requests please visit [GitHub Issues](https://github.com/Alex870521/DataPlot/issues).
|
|
128
|
-
|
|
129
|
-
<div align="center">
|
|
130
|
-
|
|
131
|
-
<a href="https://github.com/Alex870521"><img src="https://github.com/Alex870521/AeroViz/blob/main/assets/media/logo-social-github.png?raw=true" width="3%" alt="Alex870521 GitHub"></a>
|
|
132
|
-
<img src="https://github.com/Alex870521/AeroViz/blob/main/assets/media/logo-transparent.png?raw=true" width="3%">
|
|
133
|
-
<a href="https://www.linkedin.com/in/Alex870521/"><img src="https://github.com/Alex870521/AeroViz/blob/main/assets/media/logo-social-linkedin.png?raw=true" width="3%" alt="Alex870521 LinkedIn"></a>
|
|
134
|
-
<img src="https://github.com/Alex870521/AeroViz/blob/main/assets/media/logo-transparent.png?raw=true" width="3%">
|
|
135
|
-
<a href="https://medium.com/@alex870521"><img src="https://github.com/Alex870521/AeroViz/blob/main/assets/media/logo-social-medium.png?raw=true" width="3%" alt="Alex870521 Medium"></a>
|
|
136
|
-
</div>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
AeroViz/__init__.py,sha256=4ICXg4UATkGXIUziaXcPX2Yaqj6OK5SL0ilU1JKeGFw,341
|
|
2
|
-
AeroViz/__pycache__/__init__.cpython-312.pyc,sha256=
|
|
2
|
+
AeroViz/__pycache__/__init__.cpython-312.pyc,sha256=rFyv4c4j1wZFxgjgaelbYczxY_f23IRZy8MmUe6HJF4,428
|
|
3
3
|
AeroViz/data/DEFAULT_DATA.csv,sha256=eeeyeh8vSLKkE5tAF0TYnUNOyQIH98VA41bJaAP204Y,2248526
|
|
4
4
|
AeroViz/data/DEFAULT_PNSD_DATA.csv,sha256=imLvLA80oYwo_jzXZtlQn5hZ76d47HUIlK2jp0tZPrg,2636511
|
|
5
5
|
AeroViz/data/hysplit_example_data.txt,sha256=DWfY83EW3fOcv9dW-Y4pudq8-M7BJlXD-tlMSYrAk2w,8946
|
|
@@ -13,7 +13,7 @@ AeroViz/dataProcess/Chemistry/_partition.py,sha256=tKhb6BJns46UiUlEq6Zq7ahYnvUJ_
|
|
|
13
13
|
AeroViz/dataProcess/Chemistry/_teom.py,sha256=IiM-TrifWpQLTbKllG-4k4c3mvQulfcmjswWu6muCXA,486
|
|
14
14
|
AeroViz/dataProcess/Chemistry/isrpia.cnf,sha256=iWXTqsOZFmNrJxAI9nYuilZ9h6ru1icdPFVim7YKc_k,566
|
|
15
15
|
AeroViz/dataProcess/Chemistry/isrpia2.exe,sha256=xFYPTXHSjl_-atmVcTmqqOkTZgUn1p8h-kFMcoGMIQw,1560032
|
|
16
|
-
AeroViz/dataProcess/Chemistry/__pycache__/__init__.cpython-312.pyc,sha256
|
|
16
|
+
AeroViz/dataProcess/Chemistry/__pycache__/__init__.cpython-312.pyc,sha256=-QZKV4EnCIk6T63GVXVvd1_BabdLXgyDxOhUMMISgPM,2712
|
|
17
17
|
AeroViz/dataProcess/Optical/Angstrom_exponent.py,sha256=KSGM_hf2oUPsLoLuhYSRDK5zdekwce9KgqhzRnf2Y4g,706
|
|
18
18
|
AeroViz/dataProcess/Optical/PyMieScatt_update.py,sha256=3W2nqo9sQLqj9dqWh5Eqx2XUdu44bGWDLTa3QnjiUvM,20943
|
|
19
19
|
AeroViz/dataProcess/Optical/_IMPROVE.py,sha256=n3uHUQTivckIrNlbE8rP7lPZGcMWZUAnS_qX8pXd55Q,1670
|
|
@@ -25,9 +25,9 @@ AeroViz/dataProcess/Optical/_mie_sd.py,sha256=cbWSorfG-l92csaXsZJ7005f8ij2H_VZop
|
|
|
25
25
|
AeroViz/dataProcess/Optical/_scattering.py,sha256=w5xXXOfafV9a_dXY60YqTyzFDZppjBJeLcKl5PeCQe4,961
|
|
26
26
|
AeroViz/dataProcess/Optical/fRH.pkl,sha256=PhJ-BYTaUDjl2Lp5Wz0zeiLQCzrsNdq8nP7Jd1BXyXE,4528
|
|
27
27
|
AeroViz/dataProcess/Optical/mie_theory.py,sha256=EC3SsUaq5G3SdQyPMQxcosbEokqAgJw-4Gz6moJiOsk,8666
|
|
28
|
-
AeroViz/dataProcess/Optical/__pycache__/PyMieScatt_update.cpython-312.pyc,sha256=
|
|
29
|
-
AeroViz/dataProcess/Optical/__pycache__/__init__.cpython-312.pyc,sha256=
|
|
30
|
-
AeroViz/dataProcess/Optical/__pycache__/mie_theory.cpython-312.pyc,sha256=
|
|
28
|
+
AeroViz/dataProcess/Optical/__pycache__/PyMieScatt_update.cpython-312.pyc,sha256=W5tzeZnoJ8IF0mWMImZNv7wqTGhny-KkoMxHMgE-R14,32602
|
|
29
|
+
AeroViz/dataProcess/Optical/__pycache__/__init__.cpython-312.pyc,sha256=kLT99igZ1AIE5MLY_pGl3L5AwTvbcHEN5FmFbNciOro,2114
|
|
30
|
+
AeroViz/dataProcess/Optical/__pycache__/mie_theory.cpython-312.pyc,sha256=6pnzZmtCgElE2NAzdUiZ8NwKB2hwhcmxZSO-hAls49s,10662
|
|
31
31
|
AeroViz/dataProcess/SizeDistr/__init__.py,sha256=fka1IJW4wZzYWE9HjWi8i03ab0JLFXOUdaHWYs4VHEQ,2172
|
|
32
32
|
AeroViz/dataProcess/SizeDistr/__merge.py,sha256=A-ZmduUA9a0nVM8szhG1AWhsfUPu2UhGIaqFLcmg7Lk,9422
|
|
33
33
|
AeroViz/dataProcess/SizeDistr/_merge.py,sha256=CyZwUc2M4lL-OE74e8mXq41nC6X0LJTAV8TwpO3fS2o,9176
|
|
@@ -37,14 +37,14 @@ AeroViz/dataProcess/SizeDistr/_merge_v3.py,sha256=HN2ARFmeWOawOWRPPv_pHEGBBZNgXV
|
|
|
37
37
|
AeroViz/dataProcess/SizeDistr/_merge_v4.py,sha256=b8RVAievGIOLrmJHJXRsKXQ1tkMkm6rx43S7XAfeXE4,16228
|
|
38
38
|
AeroViz/dataProcess/SizeDistr/_size_distr.py,sha256=ULhGKlxE9QmbDO_PS3HOSKzepeMfJZWabJvGXqsDEvE,3259
|
|
39
39
|
AeroViz/dataProcess/SizeDistr/prop.py,sha256=7f18SOkkLgDiY_g1c1We8g-3WDJJIFcxkfR4F99jUgc,1845
|
|
40
|
-
AeroViz/dataProcess/SizeDistr/__pycache__/__init__.cpython-312.pyc,sha256=
|
|
40
|
+
AeroViz/dataProcess/SizeDistr/__pycache__/__init__.cpython-312.pyc,sha256=vobgdfNHncQnFALFjqHXbtjVbxRgTA-NIVYpb38NOuM,2552
|
|
41
41
|
AeroViz/dataProcess/VOC/__init__.py,sha256=8GNP0RMymTkJXK18pSgfLHqrKPWboN-3x1_Ke4UrI44,259
|
|
42
42
|
AeroViz/dataProcess/VOC/_potential_par.py,sha256=h3rVdvtBvC6xHa_ZG4Oq5eXezeSZtHNy6T6I40maIcM,3863
|
|
43
43
|
AeroViz/dataProcess/VOC/support_voc.json,sha256=tMYp_NERqhSriVRE2NavXh33CQ5CnsbJHtmMFlE5q_E,6804
|
|
44
|
-
AeroViz/dataProcess/VOC/__pycache__/__init__.cpython-312.pyc,sha256=
|
|
45
|
-
AeroViz/dataProcess/__pycache__/__init__.cpython-312.pyc,sha256=
|
|
44
|
+
AeroViz/dataProcess/VOC/__pycache__/__init__.cpython-312.pyc,sha256=vZ0R_PqF1Vg1AHsk9F28VCdDeNYcu0vJhgs6Ff6H89g,716
|
|
45
|
+
AeroViz/dataProcess/__pycache__/__init__.cpython-312.pyc,sha256=LuAWC7ehbPJv5ZPlYLfkkSkIlN3lCwYT97OOGoHsnNk,1067
|
|
46
46
|
AeroViz/dataProcess/core/__init__.py,sha256=FhGwqlP8ZwXZQS0LjH0YOz2g1Q2yJniUUhRZ_jDOQ6k,2707
|
|
47
|
-
AeroViz/dataProcess/core/__pycache__/__init__.cpython-312.pyc,sha256=
|
|
47
|
+
AeroViz/dataProcess/core/__pycache__/__init__.cpython-312.pyc,sha256=uK4tH5hPSgqBUEF2j8I0fPgBvjiOX2CbKOdH9c3c8X8,4430
|
|
48
48
|
AeroViz/plot/__init__.py,sha256=Cy42d1t58zeutxLYDkm8bFbRNGE0G1T8VpqGj1li1Cw,419
|
|
49
49
|
AeroViz/plot/bar.py,sha256=cSPKJLWGifCzICCZVPcbZtrDrea_AStlwSli9-b-lsA,4246
|
|
50
50
|
AeroViz/plot/box.py,sha256=8zDd8jYndSv5f0P1lFeX0m7VWYh9okYgJTClh2Lj7Dg,2115
|
|
@@ -53,30 +53,30 @@ AeroViz/plot/radar.py,sha256=QHXkLQlAZZQDWHcqVGJBeRsGiu45GYmy3lN6gwlh6xY,6965
|
|
|
53
53
|
AeroViz/plot/regression.py,sha256=mTCNrCAYvH7QjIb_5WlltCR1Kqwer1anpGEsxmO2S3o,7292
|
|
54
54
|
AeroViz/plot/scatter.py,sha256=sxk5QxgC1Jk9PuY18q9aRgR_Ipvg5dM1RkwYQxRkn1c,6787
|
|
55
55
|
AeroViz/plot/violin.py,sha256=pU2Z2yTWocEtImmCAmbtn0WvXtUOrnCGOdDOrLxjooU,2689
|
|
56
|
-
AeroViz/plot/__pycache__/__init__.cpython-312.pyc,sha256
|
|
57
|
-
AeroViz/plot/__pycache__/bar.cpython-312.pyc,sha256=
|
|
58
|
-
AeroViz/plot/__pycache__/box.cpython-312.pyc,sha256=
|
|
59
|
-
AeroViz/plot/__pycache__/pie.cpython-312.pyc,sha256=
|
|
60
|
-
AeroViz/plot/__pycache__/radar.cpython-312.pyc,sha256=
|
|
61
|
-
AeroViz/plot/__pycache__/regression.cpython-312.pyc,sha256=
|
|
62
|
-
AeroViz/plot/__pycache__/scatter.cpython-312.pyc,sha256=
|
|
63
|
-
AeroViz/plot/__pycache__/violin.cpython-312.pyc,sha256=
|
|
56
|
+
AeroViz/plot/__pycache__/__init__.cpython-312.pyc,sha256=-UYqvtOwl4R9EM-lCBETEFNzqtAbctoHZgUdrironkU,684
|
|
57
|
+
AeroViz/plot/__pycache__/bar.cpython-312.pyc,sha256=dES5kB3XgvSNwNGjlOjzviJadz6weDEewAdmc8m1Wi8,5954
|
|
58
|
+
AeroViz/plot/__pycache__/box.cpython-312.pyc,sha256=MGKi1tcGbP_GjdKo15zEDOJpQIC5XjjdnvpB-yIblh8,4043
|
|
59
|
+
AeroViz/plot/__pycache__/pie.cpython-312.pyc,sha256=ZXqqVodXWFS9envKHbH-Kv3BaxP9lYfUiC7DeIAWloI,10689
|
|
60
|
+
AeroViz/plot/__pycache__/radar.cpython-312.pyc,sha256=DTm0Jv6SvTPS9nT4VpZ0RTY0KojwkSux5q-fc1LoAVQ,9335
|
|
61
|
+
AeroViz/plot/__pycache__/regression.cpython-312.pyc,sha256=8MTFYypMvBQ8d4ZocwVr1yByUORbC3-MTLBI_6JIlek,8417
|
|
62
|
+
AeroViz/plot/__pycache__/scatter.cpython-312.pyc,sha256=6-yVNc4DD1bbxKdH81cGuccHq6bI73AX9WkG9nZSJ9M,9540
|
|
63
|
+
AeroViz/plot/__pycache__/violin.cpython-312.pyc,sha256=6FJvVgY8Hvh66kh0hdJd5Tkfds6rQSYbfJQptG3mil8,4291
|
|
64
64
|
AeroViz/plot/distribution/__init__.py,sha256=nhbIegWczkuEfWsE7-2jfF0dnpmPDzJJzjq8Fuh6q5k,28
|
|
65
65
|
AeroViz/plot/distribution/distribution.py,sha256=sAjqtqKavFwQqI8PGPFnpvZFSU-w2UKjcTTC5L91f4E,20595
|
|
66
|
-
AeroViz/plot/distribution/__pycache__/__init__.cpython-312.pyc,sha256=
|
|
67
|
-
AeroViz/plot/distribution/__pycache__/distribution.cpython-312.pyc,sha256=
|
|
66
|
+
AeroViz/plot/distribution/__pycache__/__init__.cpython-312.pyc,sha256=5gf7XXE_D5M8yUyZvDVzqdHtXU7iw8pytnCQ-wYC6VM,202
|
|
67
|
+
AeroViz/plot/distribution/__pycache__/distribution.cpython-312.pyc,sha256=9gD5v9hWS055plHxIooJv_PAUakFIwSg9KE3h-qJAis,30983
|
|
68
68
|
AeroViz/plot/meteorology/CBPF.py,sha256=4BjPNW2H2Q9HSyDvqxGAibQSIieKkt7CrFQo1rmdKWQ,11136
|
|
69
69
|
AeroViz/plot/meteorology/__init__.py,sha256=6HRc9TwUDOohULJ4hURbQSMKlHfoZzG1zLS1AUg0fH4,85
|
|
70
|
-
AeroViz/plot/meteorology/hysplit.py,sha256=
|
|
70
|
+
AeroViz/plot/meteorology/hysplit.py,sha256=gUlg1Gr-PbqDQI8bWqnHR5UpzRGstvGM0QrrT_EpWtg,2910
|
|
71
71
|
AeroViz/plot/meteorology/wind_rose.py,sha256=Bp2LjyJhm5FRINH6UUb70g9rA9kZ1oK-9rLvSGHBjwU,2876
|
|
72
|
-
AeroViz/plot/meteorology/__pycache__/CBPF.cpython-312.pyc,sha256=
|
|
73
|
-
AeroViz/plot/meteorology/__pycache__/__init__.cpython-312.pyc,sha256=
|
|
74
|
-
AeroViz/plot/meteorology/__pycache__/hysplit.cpython-312.pyc,sha256=
|
|
75
|
-
AeroViz/plot/meteorology/__pycache__/wind_rose.cpython-312.pyc,sha256=
|
|
72
|
+
AeroViz/plot/meteorology/__pycache__/CBPF.cpython-312.pyc,sha256=LQ3AzIu_bhk3MzTgry8dqjiFBMISL97-xMwNQeuwHWI,15329
|
|
73
|
+
AeroViz/plot/meteorology/__pycache__/__init__.cpython-312.pyc,sha256=vCbQFKvONX0jFYRKEJIOHXgcO00fFLbYQjjlFurHd84,261
|
|
74
|
+
AeroViz/plot/meteorology/__pycache__/hysplit.cpython-312.pyc,sha256=Ww-jQF4G5SngYplITDx0HlA-lwmcPZuZOeJqTu8BiXI,4013
|
|
75
|
+
AeroViz/plot/meteorology/__pycache__/wind_rose.cpython-312.pyc,sha256=9Zhg27jQPyEvTT43cmYIMITZyAs0pEjJvulFDd6JDm8,3413
|
|
76
76
|
AeroViz/plot/optical/__init__.py,sha256=5S2WPq8NouPYgc46c1XBveSL8Cxs3w8wNYN7vWIpB-s,23
|
|
77
77
|
AeroViz/plot/optical/optical.py,sha256=j8LUSga9BvVjZnGKNG8bt62E9xoBoO2OQxvDBqY6U90,13664
|
|
78
|
-
AeroViz/plot/optical/__pycache__/__init__.cpython-312.pyc,sha256=
|
|
79
|
-
AeroViz/plot/optical/__pycache__/optical.cpython-312.pyc,sha256=
|
|
78
|
+
AeroViz/plot/optical/__pycache__/__init__.cpython-312.pyc,sha256=bWTA0Nx6RD3cJWsWh9cIIZHoPUx66yWnt0_j7GW8xHs,192
|
|
79
|
+
AeroViz/plot/optical/__pycache__/optical.cpython-312.pyc,sha256=dpc0al4Ag4YMbohEYa75Kd9Q3CEaU2_woA-XCVgUayc,18435
|
|
80
80
|
AeroViz/plot/templates/__init__.py,sha256=VXp73SqrSF1WR9WYhHpHtbhvFcb1CR4JeV1tPQvCEEI,227
|
|
81
81
|
AeroViz/plot/templates/ammonium_rich.py,sha256=a46rfwhSZ3LIj71LxdOnklAFyy6Xe_VQ-kh1komnZ5g,1225
|
|
82
82
|
AeroViz/plot/templates/contour.py,sha256=fAM6Wn_EmENQM1IW6KJpwmLva6D9P2dEAaK6cNQBtdQ,1678
|
|
@@ -84,19 +84,19 @@ AeroViz/plot/templates/corr_matrix.py,sha256=VeiwBwmg_v6LYslJvhSqweiLBheR3vGfPYx
|
|
|
84
84
|
AeroViz/plot/templates/diurnal_pattern.py,sha256=TOE4PvHluZhjZvDEeZIv8hcb-PthBNDrgEWtyPmwMcg,2051
|
|
85
85
|
AeroViz/plot/templates/koschmieder.py,sha256=YMtok3T5VHlzLphnsrkchNRnw5UE3XSLYDne42Efofo,3343
|
|
86
86
|
AeroViz/plot/templates/metal_heatmap.py,sha256=ngqJFiOPCoExPKv-lHvgB1XCSr9fF_jSKmx4VwjUUXQ,4961
|
|
87
|
-
AeroViz/plot/templates/__pycache__/__init__.cpython-312.pyc,sha256=
|
|
88
|
-
AeroViz/plot/templates/__pycache__/ammonium_rich.cpython-312.pyc,sha256=
|
|
89
|
-
AeroViz/plot/templates/__pycache__/contour.cpython-312.pyc,sha256=
|
|
90
|
-
AeroViz/plot/templates/__pycache__/corr_matrix.cpython-312.pyc,sha256=
|
|
91
|
-
AeroViz/plot/templates/__pycache__/diurnal_pattern.cpython-312.pyc,sha256=
|
|
92
|
-
AeroViz/plot/templates/__pycache__/koschmieder.cpython-312.pyc,sha256=
|
|
93
|
-
AeroViz/plot/templates/__pycache__/metal_heatmap.cpython-312.pyc,sha256=
|
|
87
|
+
AeroViz/plot/templates/__pycache__/__init__.cpython-312.pyc,sha256=m7hY47B2e2FfSA9oZu_U5FJPTQXgeQbSjcVYrjartPU,413
|
|
88
|
+
AeroViz/plot/templates/__pycache__/ammonium_rich.cpython-312.pyc,sha256=ZTi3fYDgcTGt5ETR3M_VF8w6eOQWNmSFQa2H8P2TSxc,2201
|
|
89
|
+
AeroViz/plot/templates/__pycache__/contour.cpython-312.pyc,sha256=qhxEdahrPwMPXNptm1PIqK5d9CHvsBg7z5Qbro1J6UQ,3550
|
|
90
|
+
AeroViz/plot/templates/__pycache__/corr_matrix.cpython-312.pyc,sha256=qTTjU_5rMSY0RuHcX80Gftx27sOXTetP7RI1F1yukwY,6130
|
|
91
|
+
AeroViz/plot/templates/__pycache__/diurnal_pattern.cpython-312.pyc,sha256=Jsmd-xZyxE0qUkhuSSz5Y2pz_-5UPniBSIaS6fGnWpo,3422
|
|
92
|
+
AeroViz/plot/templates/__pycache__/koschmieder.cpython-312.pyc,sha256=t08RvcKhtrQZKVxiA6l72zJE11H8C419mLXxkNDCjWc,5660
|
|
93
|
+
AeroViz/plot/templates/__pycache__/metal_heatmap.cpython-312.pyc,sha256=BAXipTYX12KTKtfPJuXnnfuuKPSROSZ198MJlafR5uo,7003
|
|
94
94
|
AeroViz/plot/timeseries/__init__.py,sha256=LQ_aE32pvp5ouC--BRa0NwSJ48DYO3rFaOt4AKGmn_s,50
|
|
95
95
|
AeroViz/plot/timeseries/template.py,sha256=ey16q66UAOLhXGKHAPGbRp-QD3J6GkF_cXhkrRIybS8,1472
|
|
96
96
|
AeroViz/plot/timeseries/timeseries.py,sha256=SnGxPceWXSI43iajfsOW2sUpQdh9wjZsUuAUEhJ-f-Y,16170
|
|
97
|
-
AeroViz/plot/timeseries/__pycache__/__init__.cpython-312.pyc,sha256=
|
|
98
|
-
AeroViz/plot/timeseries/__pycache__/template.cpython-312.pyc,sha256=
|
|
99
|
-
AeroViz/plot/timeseries/__pycache__/timeseries.cpython-312.pyc,sha256=
|
|
97
|
+
AeroViz/plot/timeseries/__pycache__/__init__.cpython-312.pyc,sha256=uzs7cFJZ3wjvVQ55ghEFKr9xjDeIM6rwFbjy7JaAJ9M,221
|
|
98
|
+
AeroViz/plot/timeseries/__pycache__/template.cpython-312.pyc,sha256=LnuPTuCOLXPdh_cHJhNv6Y8HsW5h43EkLyomWkMGzUU,1919
|
|
99
|
+
AeroViz/plot/timeseries/__pycache__/timeseries.cpython-312.pyc,sha256=332lXTWiT4GW5Tup_saWJAPIjgnH1qgrqSQ1MfrUfUw,20489
|
|
100
100
|
AeroViz/plot/utils/__init__.py,sha256=sxp3nfUnyVIIXYd-F874gEHkhQiDnMPDE1nJ_Z98270,104
|
|
101
101
|
AeroViz/plot/utils/_color.py,sha256=Vhjo-v4UWFME1JbbBR_Ro8FRj6dHB2O5Sud_9lpdu_U,2797
|
|
102
102
|
AeroViz/plot/utils/_unit.py,sha256=Abum0WDnq08DzkSoxkKvBc0mYKo8izIDmgduPo9Q27A,1671
|
|
@@ -104,66 +104,66 @@ AeroViz/plot/utils/fRH.json,sha256=t-2ux4TLOYAB-4jJ72LSM4jv1jk9XkaxKYNMDepMHIg,6
|
|
|
104
104
|
AeroViz/plot/utils/plt_utils.py,sha256=JYYtmEKoKqvZ8mr3QEHdYcWabaBMhNWkgEmeBTdZZ-g,3438
|
|
105
105
|
AeroViz/plot/utils/sklearn_utils.py,sha256=hKFfkVkYLRxkIDKvO9COHXwhjD_UWqQigdT3mDToni4,2098
|
|
106
106
|
AeroViz/plot/utils/units.json,sha256=JKcqvLA6dkc8REV_NhX85Jl9LA4iAZxzw9RJp6JTla0,2965
|
|
107
|
-
AeroViz/plot/utils/__pycache__/__init__.cpython-312.pyc,sha256=
|
|
108
|
-
AeroViz/plot/utils/__pycache__/_color.cpython-312.pyc,sha256=
|
|
109
|
-
AeroViz/plot/utils/__pycache__/_unit.cpython-312.pyc,sha256=
|
|
110
|
-
AeroViz/plot/utils/__pycache__/plt_utils.cpython-312.pyc,sha256=
|
|
111
|
-
AeroViz/plot/utils/__pycache__/sklearn_utils.cpython-312.pyc,sha256=
|
|
112
|
-
AeroViz/rawDataReader/__init__.py,sha256=
|
|
113
|
-
AeroViz/rawDataReader/__pycache__/__init__.cpython-312.pyc,sha256=
|
|
107
|
+
AeroViz/plot/utils/__pycache__/__init__.cpython-312.pyc,sha256=T5PVG3dr2a9I13fe7B_gnit4JH6OvGyKyHWdCaEYnmk,292
|
|
108
|
+
AeroViz/plot/utils/__pycache__/_color.cpython-312.pyc,sha256=GoKVOuUIq6SX-wsy8zRN0lrYwZYJNkSLbIptEkTqNSo,3959
|
|
109
|
+
AeroViz/plot/utils/__pycache__/_unit.cpython-312.pyc,sha256=_tMbYRJAWNPPu6Vzw1i57nMGnQK9qjn1Iza5hGlS6kE,3427
|
|
110
|
+
AeroViz/plot/utils/__pycache__/plt_utils.cpython-312.pyc,sha256=NwoX2bE8AYHVRBWX2BidbvxMx-445u6vC9nXUieQaoY,4670
|
|
111
|
+
AeroViz/plot/utils/__pycache__/sklearn_utils.cpython-312.pyc,sha256=eRT8kPjc9fTi_mQaChfi4RxQS0t0aCPYkp8xZ0Kul0A,3018
|
|
112
|
+
AeroViz/rawDataReader/__init__.py,sha256=2EFnj-aVQj7epo6PlJnKlYI09BB-2-YRKCt2Y7nzIT0,4891
|
|
113
|
+
AeroViz/rawDataReader/__pycache__/__init__.cpython-312.pyc,sha256=74GHMN2iPysDyg6J-xJYyw2Pv7C95m9kk03D8oe5OJA,5519
|
|
114
114
|
AeroViz/rawDataReader/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
115
|
-
AeroViz/rawDataReader/config/supported_instruments.py,sha256=
|
|
116
|
-
AeroViz/rawDataReader/config/__pycache__/__init__.cpython-312.pyc,sha256=
|
|
117
|
-
AeroViz/rawDataReader/config/__pycache__/supported_instruments.cpython-312.pyc,sha256=
|
|
118
|
-
AeroViz/rawDataReader/core/__init__.py,sha256=
|
|
119
|
-
AeroViz/rawDataReader/core/logger.py,sha256=
|
|
115
|
+
AeroViz/rawDataReader/config/supported_instruments.py,sha256=aMdYwl5zTqukuJT1BQT-kj_PtplL0xeJBIRoO-FYcFo,5983
|
|
116
|
+
AeroViz/rawDataReader/config/__pycache__/__init__.cpython-312.pyc,sha256=QkaSeckdNGkjcYt67Vkgc9k7TPxVLl7d3uSDftIw8cM,171
|
|
117
|
+
AeroViz/rawDataReader/config/__pycache__/supported_instruments.cpython-312.pyc,sha256=odu9ktO0Lamc91ZJFMCDwwqU3gjntgxqHr2SZANFljA,5192
|
|
118
|
+
AeroViz/rawDataReader/core/__init__.py,sha256=7atDzK_SKfMWpTKPbfRO4r7l1vvsPOQ1ZcAmP-LEuuE,13259
|
|
119
|
+
AeroViz/rawDataReader/core/logger.py,sha256=Mb7souR4ncbvWxi7mBjF3OflG1ZOI1l3atGkbgy1YLo,5809
|
|
120
120
|
AeroViz/rawDataReader/core/qc.py,sha256=tFIVsfph8yZIK6NRKQxaZYHcruJclriKSvR0oC12T0Q,5698
|
|
121
|
-
AeroViz/rawDataReader/core/__pycache__/__init__.cpython-312.pyc,sha256=
|
|
122
|
-
AeroViz/rawDataReader/core/__pycache__/logger.cpython-312.pyc,sha256=
|
|
123
|
-
AeroViz/rawDataReader/core/__pycache__/qc.cpython-312.pyc,sha256=
|
|
124
|
-
AeroViz/rawDataReader/script/AE33.py,sha256=
|
|
121
|
+
AeroViz/rawDataReader/core/__pycache__/__init__.cpython-312.pyc,sha256=2e2MGK-KzcrdqtZ9JmW5L_du1qT253UG_6IDePMne1I,19929
|
|
122
|
+
AeroViz/rawDataReader/core/__pycache__/logger.cpython-312.pyc,sha256=9PWfUZo_XvimSJWx1Se7IKKtomhI7UkVjN0W6cwnNWY,8937
|
|
123
|
+
AeroViz/rawDataReader/core/__pycache__/qc.cpython-312.pyc,sha256=djEzBJurrp6qCwnzJAq_O9ZSi0ix5i_qL_G7rElajwc,8271
|
|
124
|
+
AeroViz/rawDataReader/script/AE33.py,sha256=EAC1neDgOaWxJyf-YgrAYUWU85NtAScbblFoSlmFtIU,1283
|
|
125
125
|
AeroViz/rawDataReader/script/AE43.py,sha256=GjcICBJ3nIANyMd4kovteBUtkyCGLTos07BczgSCuVE,1231
|
|
126
|
-
AeroViz/rawDataReader/script/
|
|
126
|
+
AeroViz/rawDataReader/script/APS.py,sha256=ByA1Dw5mMMNKgZ0vUMNhJOLGIKhBFGEcR6i-UJl3ddU,1427
|
|
127
127
|
AeroViz/rawDataReader/script/Aurora.py,sha256=xcLKE5dlsqc-apK3n-j_8OZ0kF_f4B08ptutaAPiGLQ,1509
|
|
128
128
|
AeroViz/rawDataReader/script/BC1054.py,sha256=tuDyq8M5BPbmu1yJr9zXYS2piMGz08yTQXGT6tK9jxA,1675
|
|
129
129
|
AeroViz/rawDataReader/script/EPA.py,sha256=MESkZHHr60kyHFSLqSeSjzSrx_ya-GqFhFGlPIHMLeI,1649
|
|
130
130
|
AeroViz/rawDataReader/script/GRIMM.py,sha256=-D4U83ihjAqcvOAnk7NET59IZfV1JzPYKRQjrIQyBDM,846
|
|
131
131
|
AeroViz/rawDataReader/script/IGAC.py,sha256=i6WT3rX0n0e4hq7NfWN6tVwCuKAeV9ARxPkXZSbQj74,2387
|
|
132
132
|
AeroViz/rawDataReader/script/MA350.py,sha256=EfPTFhgDAjI7r0G6kW7pjog-4MBOnvW0cyFqIkCxEP8,1597
|
|
133
|
-
AeroViz/rawDataReader/script/Minion.py,sha256=
|
|
133
|
+
AeroViz/rawDataReader/script/Minion.py,sha256=lTn7VMmApmkGtbDMkTVXIGFp51Dw99Cd5c0bMQPIFl0,7872
|
|
134
134
|
AeroViz/rawDataReader/script/NEPH.py,sha256=HkGcjFPpcXM9OnrcV6sMp0G5wYnhJP1NbTMQUb1zVLc,3233
|
|
135
|
-
AeroViz/rawDataReader/script/OCEC.py,sha256=
|
|
136
|
-
AeroViz/rawDataReader/script/SMPS.py,sha256=
|
|
135
|
+
AeroViz/rawDataReader/script/OCEC.py,sha256=jEyVhz58iIZAV2VJQa0LVsAcZFgeNW6AaVzR26LVJ9k,3411
|
|
136
|
+
AeroViz/rawDataReader/script/SMPS.py,sha256=5mc-2PSZh5mUjTvcZJMKzugNwD_h43JIhqnScYVEpZg,3285
|
|
137
137
|
AeroViz/rawDataReader/script/TEOM.py,sha256=ID20CMi8z6pOjiGQLdCuCRWlcDu46SAP3MviiSUZE5w,2103
|
|
138
138
|
AeroViz/rawDataReader/script/VOC.py,sha256=GUme72ZyjSzREsFNUgOV_OCESIVJBXY9KrKP1c9Av7I,1248
|
|
139
139
|
AeroViz/rawDataReader/script/XRF.py,sha256=SU1-D94GkwdkjlNXcyXbwQG1tOYCpeL6GTVkaLBHc-s,187
|
|
140
|
-
AeroViz/rawDataReader/script/__init__.py,sha256=
|
|
141
|
-
AeroViz/rawDataReader/script/__pycache__/AE33.cpython-312.pyc,sha256=
|
|
142
|
-
AeroViz/rawDataReader/script/__pycache__/AE43.cpython-312.pyc,sha256=
|
|
143
|
-
AeroViz/rawDataReader/script/__pycache__/
|
|
144
|
-
AeroViz/rawDataReader/script/__pycache__/Aurora.cpython-312.pyc,sha256=
|
|
145
|
-
AeroViz/rawDataReader/script/__pycache__/BC1054.cpython-312.pyc,sha256=
|
|
146
|
-
AeroViz/rawDataReader/script/__pycache__/EPA.cpython-312.pyc,sha256=
|
|
147
|
-
AeroViz/rawDataReader/script/__pycache__/GRIMM.cpython-312.pyc,sha256=
|
|
148
|
-
AeroViz/rawDataReader/script/__pycache__/IGAC.cpython-312.pyc,sha256=
|
|
149
|
-
AeroViz/rawDataReader/script/__pycache__/MA350.cpython-312.pyc,sha256=
|
|
150
|
-
AeroViz/rawDataReader/script/__pycache__/Minion.cpython-312.pyc,sha256=
|
|
151
|
-
AeroViz/rawDataReader/script/__pycache__/NEPH.cpython-312.pyc,sha256=
|
|
152
|
-
AeroViz/rawDataReader/script/__pycache__/OCEC.cpython-312.pyc,sha256=
|
|
153
|
-
AeroViz/rawDataReader/script/__pycache__/SMPS.cpython-312.pyc,sha256=
|
|
154
|
-
AeroViz/rawDataReader/script/__pycache__/TEOM.cpython-312.pyc,sha256=
|
|
155
|
-
AeroViz/rawDataReader/script/__pycache__/VOC.cpython-312.pyc,sha256=
|
|
156
|
-
AeroViz/rawDataReader/script/__pycache__/XRF.cpython-312.pyc,sha256=
|
|
157
|
-
AeroViz/rawDataReader/script/__pycache__/__init__.cpython-312.pyc,sha256=
|
|
140
|
+
AeroViz/rawDataReader/script/__init__.py,sha256=uV0SLBTJ2_KYJUaqKttTcZrLN1KCYqVZLobOLYZ0V5U,209
|
|
141
|
+
AeroViz/rawDataReader/script/__pycache__/AE33.cpython-312.pyc,sha256=NJ-RXtT7nty79f4k186Fce5N7AmmmzdQPflKec7Xe8g,2448
|
|
142
|
+
AeroViz/rawDataReader/script/__pycache__/AE43.cpython-312.pyc,sha256=njqOVElPCvzbT0G1oDIVd2nhGFzA7hv5DIfi5IrVlQE,2198
|
|
143
|
+
AeroViz/rawDataReader/script/__pycache__/APS.cpython-312.pyc,sha256=zHXlZqIjlEWAIE9RjB8kg3U4KGj8ITIpmfV5hJV-r1Q,2664
|
|
144
|
+
AeroViz/rawDataReader/script/__pycache__/Aurora.cpython-312.pyc,sha256=qkeFmzXlkVccBPjqvAi-OwFc5oeSpZWdgL9_nnVo96o,2662
|
|
145
|
+
AeroViz/rawDataReader/script/__pycache__/BC1054.cpython-312.pyc,sha256=M2RyKsy22YfsWfUWx6fkBnlxWJQR1UesPwz2S1swaxA,2455
|
|
146
|
+
AeroViz/rawDataReader/script/__pycache__/EPA.cpython-312.pyc,sha256=nuhlX25YYNygVqnzID3L7_SlAF4N58jIp6L7ReoAQCs,2343
|
|
147
|
+
AeroViz/rawDataReader/script/__pycache__/GRIMM.cpython-312.pyc,sha256=B3Z77CWYrgvSTYyTFffDrW0XExo8C_rFDe_su6VN0gk,1812
|
|
148
|
+
AeroViz/rawDataReader/script/__pycache__/IGAC.cpython-312.pyc,sha256=WIzqP5LKkCDktj3M5glD1E4ysTg8y6Y6mvSEe-nS_fQ,3645
|
|
149
|
+
AeroViz/rawDataReader/script/__pycache__/MA350.cpython-312.pyc,sha256=MCkhH8bHu-iWksem4DmGwhOX9g7GBBZ69LbYLqwGk4c,2074
|
|
150
|
+
AeroViz/rawDataReader/script/__pycache__/Minion.cpython-312.pyc,sha256=GUh3seuxUASm32Q_hBy1_ObLfwORNqLxOQFhdnzHwEs,10204
|
|
151
|
+
AeroViz/rawDataReader/script/__pycache__/NEPH.cpython-312.pyc,sha256=IxVs-5zZHNedq1Ha4EXA4DjSwPK-DPuA_wBYhStgsv4,4556
|
|
152
|
+
AeroViz/rawDataReader/script/__pycache__/OCEC.cpython-312.pyc,sha256=sh1jZKsxfcSouiEzTsO91TOcpua2wxT23cmyOzHEt4s,4155
|
|
153
|
+
AeroViz/rawDataReader/script/__pycache__/SMPS.cpython-312.pyc,sha256=vjjLhDmplHP3GuGiTzXtBEO0l9p333xny16MlnAyMwc,5820
|
|
154
|
+
AeroViz/rawDataReader/script/__pycache__/TEOM.cpython-312.pyc,sha256=11epZ5Jg_uGNeOLiu5n8m0tw-4Yl-Y4aI18Nbo80OI8,3329
|
|
155
|
+
AeroViz/rawDataReader/script/__pycache__/VOC.cpython-312.pyc,sha256=I3J-Tlc_H6bzrkAoZL5pI_H_ouZ8Ibun0Wq2buJbA2U,2493
|
|
156
|
+
AeroViz/rawDataReader/script/__pycache__/XRF.cpython-312.pyc,sha256=FnOuOxsB02FYVZv0Mr3KPof0SCiSzrEVwIw9vOwirpI,668
|
|
157
|
+
AeroViz/rawDataReader/script/__pycache__/__init__.cpython-312.pyc,sha256=bqi0YtD_BJg7BOvpXvypXuWDk9q9r5iy4ipEpjVeICs,294
|
|
158
158
|
AeroViz/tools/__init__.py,sha256=3yC7clSoIAs7tvRy6M0BEM_N-0Fn2najLP7njT0ogME,74
|
|
159
159
|
AeroViz/tools/database.py,sha256=05VzjJyhlRrhsZdhfFQ__7CxGm4MdFekLjz3_Is5h9U,3430
|
|
160
160
|
AeroViz/tools/dataclassifier.py,sha256=_wpv0PlZ5EGkcNqHxfFtdEsYvHP5FVE8sMZXikhm_YE,4492
|
|
161
161
|
AeroViz/tools/dataprinter.py,sha256=Jq2Yztpa9YCOeLDVTrRs7PhSdNIPhEAexVj1YSuJ7hY,2249
|
|
162
|
-
AeroViz/tools/__pycache__/__init__.cpython-312.pyc,sha256=
|
|
163
|
-
AeroViz/tools/__pycache__/database.cpython-312.pyc,sha256=
|
|
164
|
-
AeroViz/tools/__pycache__/dataclassifier.cpython-312.pyc,sha256=
|
|
165
|
-
AeroViz-0.1.
|
|
166
|
-
AeroViz-0.1.
|
|
167
|
-
AeroViz-0.1.
|
|
168
|
-
AeroViz-0.1.
|
|
169
|
-
AeroViz-0.1.
|
|
162
|
+
AeroViz/tools/__pycache__/__init__.cpython-312.pyc,sha256=90jf5A4wGSIKZ9KVtB1AlY5glm_gf_tyVmGU3tczLXI,254
|
|
163
|
+
AeroViz/tools/__pycache__/database.cpython-312.pyc,sha256=mVtYd5jXm04bLyGg6QVBD6b8ebd-UZtOUU9KzoxTpjw,3605
|
|
164
|
+
AeroViz/tools/__pycache__/dataclassifier.cpython-312.pyc,sha256=kmxMueg1IW5tKELGAQMhEoPtk7GBkfju-xU35REto7E,6801
|
|
165
|
+
AeroViz-0.1.12.dist-info/LICENSE,sha256=E-679GpGGkp3irmtuJXiT7R4cNUA4cmsH6Q7QUgPf5U,1069
|
|
166
|
+
AeroViz-0.1.12.dist-info/METADATA,sha256=yin7FLd3KuzHVs2L1CO36EFwT-rMuergmkzwv-5_qVE,5914
|
|
167
|
+
AeroViz-0.1.12.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
|
168
|
+
AeroViz-0.1.12.dist-info/top_level.txt,sha256=BYsmTst_o4FZOKRP1XIvIMlN6mMTTXNfnSToL2_nVbQ,8
|
|
169
|
+
AeroViz-0.1.12.dist-info/RECORD,,
|
|
Binary file
|
|
File without changes
|
|
File without changes
|