AeroViz 0.1.2__py3-none-any.whl → 0.1.3b0__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.

Files changed (112) hide show
  1. AeroViz/__init__.py +4 -4
  2. AeroViz/config/DEFAULT_DATA.csv +1417 -0
  3. AeroViz/config/DEFAULT_PNSD_DATA.csv +1417 -0
  4. AeroViz/dataProcess/Chemistry/__init__.py +38 -38
  5. AeroViz/dataProcess/Chemistry/_calculate.py +15 -15
  6. AeroViz/dataProcess/Chemistry/_isoropia.py +69 -68
  7. AeroViz/dataProcess/Chemistry/_mass_volume.py +158 -158
  8. AeroViz/dataProcess/Chemistry/_ocec.py +109 -109
  9. AeroViz/dataProcess/Chemistry/_partition.py +19 -18
  10. AeroViz/dataProcess/Chemistry/_teom.py +8 -11
  11. AeroViz/dataProcess/Optical/_IMPROVE.py +40 -39
  12. AeroViz/dataProcess/Optical/__init__.py +35 -35
  13. AeroViz/dataProcess/Optical/_absorption.py +35 -35
  14. AeroViz/dataProcess/Optical/_extinction.py +25 -24
  15. AeroViz/dataProcess/Optical/_mie.py +5 -6
  16. AeroViz/dataProcess/Optical/_mie_sd.py +89 -90
  17. AeroViz/dataProcess/Optical/_scattering.py +16 -16
  18. AeroViz/dataProcess/SizeDistr/__init__.py +37 -37
  19. AeroViz/dataProcess/SizeDistr/__merge.py +159 -158
  20. AeroViz/dataProcess/SizeDistr/_merge.py +155 -154
  21. AeroViz/dataProcess/SizeDistr/_merge_v1.py +162 -161
  22. AeroViz/dataProcess/SizeDistr/_merge_v2.py +153 -152
  23. AeroViz/dataProcess/SizeDistr/_merge_v3.py +326 -326
  24. AeroViz/dataProcess/SizeDistr/_merge_v4.py +272 -274
  25. AeroViz/dataProcess/SizeDistr/_size_distr.py +51 -51
  26. AeroViz/dataProcess/VOC/__init__.py +7 -7
  27. AeroViz/dataProcess/VOC/_potential_par.py +53 -55
  28. AeroViz/dataProcess/VOC/voc_par.json +464 -0
  29. AeroViz/dataProcess/__init__.py +4 -4
  30. AeroViz/dataProcess/core/__init__.py +59 -58
  31. AeroViz/plot/__init__.py +6 -1
  32. AeroViz/plot/bar.py +126 -0
  33. AeroViz/plot/box.py +68 -0
  34. AeroViz/plot/distribution/distribution.py +421 -427
  35. AeroViz/plot/meteorology/meteorology.py +240 -292
  36. AeroViz/plot/optical/__init__.py +0 -1
  37. AeroViz/plot/optical/optical.py +230 -230
  38. AeroViz/plot/pie.py +198 -0
  39. AeroViz/plot/regression.py +210 -0
  40. AeroViz/plot/scatter.py +99 -0
  41. AeroViz/plot/templates/__init__.py +0 -3
  42. AeroViz/plot/templates/contour.py +25 -25
  43. AeroViz/plot/templates/corr_matrix.py +86 -93
  44. AeroViz/plot/templates/diurnal_pattern.py +24 -24
  45. AeroViz/plot/templates/koschmieder.py +106 -106
  46. AeroViz/plot/templates/metal_heatmap.py +34 -34
  47. AeroViz/plot/timeseries/timeseries.py +53 -60
  48. AeroViz/plot/utils/__init__.py +2 -1
  49. AeroViz/plot/utils/_color.py +57 -57
  50. AeroViz/plot/utils/_unit.py +48 -48
  51. AeroViz/plot/utils/fRH.json +390 -0
  52. AeroViz/plot/utils/plt_utils.py +92 -0
  53. AeroViz/plot/utils/sklearn_utils.py +49 -0
  54. AeroViz/plot/utils/units.json +84 -0
  55. AeroViz/plot/violin.py +79 -0
  56. AeroViz/process/__init__.py +15 -15
  57. AeroViz/process/core/DataProc.py +9 -9
  58. AeroViz/process/core/SizeDist.py +81 -81
  59. AeroViz/process/method/PyMieScatt_update.py +488 -488
  60. AeroViz/process/method/mie_theory.py +231 -229
  61. AeroViz/process/method/prop.py +40 -40
  62. AeroViz/process/script/AbstractDistCalc.py +103 -103
  63. AeroViz/process/script/Chemical.py +166 -166
  64. AeroViz/process/script/IMPACT.py +40 -40
  65. AeroViz/process/script/IMPROVE.py +152 -152
  66. AeroViz/process/script/Others.py +45 -45
  67. AeroViz/process/script/PSD.py +26 -26
  68. AeroViz/process/script/PSD_dry.py +69 -70
  69. AeroViz/process/script/retrieve_RI.py +50 -51
  70. AeroViz/rawDataReader/__init__.py +57 -57
  71. AeroViz/rawDataReader/core/__init__.py +328 -326
  72. AeroViz/rawDataReader/script/AE33.py +18 -18
  73. AeroViz/rawDataReader/script/AE43.py +20 -20
  74. AeroViz/rawDataReader/script/APS_3321.py +30 -30
  75. AeroViz/rawDataReader/script/Aurora.py +23 -23
  76. AeroViz/rawDataReader/script/BC1054.py +40 -40
  77. AeroViz/rawDataReader/script/EPA_vertical.py +9 -9
  78. AeroViz/rawDataReader/script/GRIMM.py +21 -21
  79. AeroViz/rawDataReader/script/IGAC_TH.py +67 -67
  80. AeroViz/rawDataReader/script/IGAC_ZM.py +59 -59
  81. AeroViz/rawDataReader/script/MA350.py +39 -39
  82. AeroViz/rawDataReader/script/NEPH.py +74 -74
  83. AeroViz/rawDataReader/script/OCEC_LCRES.py +21 -21
  84. AeroViz/rawDataReader/script/OCEC_RES.py +16 -16
  85. AeroViz/rawDataReader/script/SMPS_TH.py +25 -25
  86. AeroViz/rawDataReader/script/SMPS_aim11.py +32 -32
  87. AeroViz/rawDataReader/script/SMPS_genr.py +31 -31
  88. AeroViz/rawDataReader/script/TEOM.py +28 -28
  89. AeroViz/rawDataReader/script/Table.py +12 -12
  90. AeroViz/rawDataReader/script/VOC_TH.py +16 -16
  91. AeroViz/rawDataReader/script/VOC_ZM.py +28 -28
  92. AeroViz/rawDataReader/script/__init__.py +20 -20
  93. AeroViz/rawDataReader/utils/config.py +161 -161
  94. AeroViz/tools/database.py +65 -65
  95. AeroViz/tools/dataclassifier.py +106 -106
  96. AeroViz/tools/dataprinter.py +51 -51
  97. AeroViz/tools/datareader.py +38 -38
  98. {AeroViz-0.1.2.dist-info → AeroViz-0.1.3b0.dist-info}/METADATA +5 -4
  99. AeroViz-0.1.3b0.dist-info/RECORD +110 -0
  100. AeroViz/config/__init__.py +0 -0
  101. AeroViz/plot/improve/__init__.py +0 -1
  102. AeroViz/plot/improve/improve.py +0 -240
  103. AeroViz/plot/optical/aethalometer.py +0 -77
  104. AeroViz/plot/templates/event_evolution.py +0 -65
  105. AeroViz/plot/templates/regression.py +0 -256
  106. AeroViz/plot/templates/scatter.py +0 -130
  107. AeroViz/plot/templates/templates.py +0 -398
  108. AeroViz/plot/utils/_decorator.py +0 -74
  109. AeroViz-0.1.2.dist-info/RECORD +0 -106
  110. {AeroViz-0.1.2.dist-info → AeroViz-0.1.3b0.dist-info}/LICENSE +0 -0
  111. {AeroViz-0.1.2.dist-info → AeroViz-0.1.3b0.dist-info}/WHEEL +0 -0
  112. {AeroViz-0.1.2.dist-info → AeroViz-0.1.3b0.dist-info}/top_level.txt +0 -0
@@ -3,29 +3,29 @@ from pathlib import Path
3
3
  from pandas import read_csv, concat
4
4
 
5
5
  from AeroViz.process.script import (ImpactProc, ImproveProc, ChemicalProc, ParticleSizeDistProc,
6
- ExtinctionDistProc, OthersProc)
6
+ ExtinctionDistProc, OthersProc)
7
7
 
8
8
  __all__ = ['DataProcess']
9
9
 
10
10
 
11
11
  class DataProcess:
12
- def __new__(cls, file_path, reset: bool = False, save_file: Path | str = 'All_data.csv'):
13
- file_path = Path(file_path)
12
+ def __new__(cls, file_path, reset: bool = False, save_file: Path | str = 'All_data.csv'):
13
+ file_path = Path(file_path)
14
14
 
15
- print(f'\t\t \033[96m --- Processing Data --- \033[0m')
15
+ print(f'\t\t \033[96m --- Processing Data --- \033[0m')
16
16
 
17
- if file_path.exists() and not reset:
18
- return read_csv(file_path, parse_dates=['Time'], index_col='Time',
19
- na_values=('-', 'E', 'F'), low_memory=False)
17
+ if file_path.exists() and not reset:
18
+ return read_csv(file_path, parse_dates=['Time'], index_col='Time',
19
+ na_values=('-', 'E', 'F'), low_memory=False)
20
20
 
21
- processor = [ImpactProc, ChemicalProc, ImproveProc, ParticleSizeDistProc, ExtinctionDistProc, OthersProc]
22
- reset = [False, False, False, False, False, False]
23
- save_filename = ['IMPACT.csv', 'chemical.csv', 'revised_IMPROVE.csv', 'PSD.csv', 'PESD.csv', 'Others.csv']
21
+ processor = [ImpactProc, ChemicalProc, ImproveProc, ParticleSizeDistProc, ExtinctionDistProc, OthersProc]
22
+ reset = [False, False, False, False, False, False]
23
+ save_filename = ['IMPACT.csv', 'chemical.csv', 'revised_IMPROVE.csv', 'PSD.csv', 'PESD.csv', 'Others.csv']
24
24
 
25
- _df = concat([processor().process_data(reset, save_filename) for processor, reset, save_filename in
26
- zip(processor, reset, save_filename)], axis=1)
25
+ _df = concat([processor().process_data(reset, save_filename) for processor, reset, save_filename in
26
+ zip(processor, reset, save_filename)], axis=1)
27
27
 
28
- # 7. save result
29
- _df.to_csv(file_path)
28
+ # 7. save result
29
+ _df.to_csv(file_path)
30
30
 
31
- return _df
31
+ return _df
@@ -7,13 +7,13 @@ __all__ = ['DataProc']
7
7
 
8
8
 
9
9
  class DataProc(ABC):
10
- def __init__(self):
11
- pass
10
+ def __init__(self):
11
+ pass
12
12
 
13
- @abstractmethod
14
- def process_data(self,
15
- reset: bool = False,
16
- save_filename: str | Path = None
17
- ) -> DataFrame:
18
- """ Implementation of processing data """
19
- pass
13
+ @abstractmethod
14
+ def process_data(self,
15
+ reset: bool = False,
16
+ save_filename: str | Path = None
17
+ ) -> DataFrame:
18
+ """ Implementation of processing data """
19
+ pass
@@ -7,84 +7,84 @@ __all__ = ['SizeDist']
7
7
 
8
8
 
9
9
  class SizeDist:
10
- """
11
- Attributes
12
- ----------
13
-
14
- _data: DataFrame
15
- The processed PSD data stored as a pandas DataFrame.
16
-
17
- _dp: ndarray
18
- The array of particle diameters from the PSD data.
19
-
20
- _dlogdp: ndarray
21
- The array of logarithmic particle diameter bin widths.
22
-
23
- _index: DatetimeIndex
24
- The index of the DataFrame representing time.
25
-
26
- _state: str
27
- The state of particle size distribution data.
28
-
29
- Methods
30
- -------
31
- number()
32
- Calculate number distribution properties.
33
-
34
- surface(filename='PSSD_dSdlogdp.csv')
35
- Calculate surface distribution properties.
36
-
37
- volume(filename='PVSD_dVdlogdp.csv')
38
- Calculate volume distribution properties.
39
-
40
- """
41
-
42
- def __init__(self,
43
- data: DataFrame,
44
- state: Literal['dN', 'ddp', 'dlogdp'] = 'dlogdp',
45
- weighting: Literal['n', 's', 'v', 'ext_in', 'ext_ex'] = 'n'
46
- ):
47
- self._data = data
48
- self._dp = np.array(self._data.columns, dtype=float)
49
- self._dlogdp = np.full_like(self._dp, 0.014)
50
- self._index = self._data.index.copy()
51
- self._state = state
52
- self._weighting = weighting
53
-
54
- @property
55
- def data(self) -> DataFrame:
56
- return self._data
57
-
58
- @property
59
- def dp(self) -> np.ndarray:
60
- return self._dp
61
-
62
- @dp.setter
63
- def dp(self, new_dp: np.ndarray):
64
- self._dp = new_dp
65
-
66
- @property
67
- def dlogdp(self) -> np.ndarray:
68
- return self._dlogdp
69
-
70
- @dlogdp.setter
71
- def dlogdp(self, new_dlogdp: np.ndarray):
72
- self._dlogdp = new_dlogdp
73
-
74
- @property
75
- def index(self):
76
- return self._index
77
-
78
- @property
79
- def state(self):
80
- return self._state
81
-
82
- @state.setter
83
- def state(self, value):
84
- if value not in ['dN', 'dlogdp', 'ddp']:
85
- raise ValueError("state must be 'dlogdp' or 'ddp'")
86
- self._state = value
87
-
88
- @property
89
- def weighting(self):
90
- return self._weighting
10
+ """
11
+ Attributes
12
+ ----------
13
+
14
+ _data: DataFrame
15
+ The processed PSD data stored as a pandas DataFrame.
16
+
17
+ _dp: ndarray
18
+ The array of particle diameters from the PSD data.
19
+
20
+ _dlogdp: ndarray
21
+ The array of logarithmic particle diameter bin widths.
22
+
23
+ _index: DatetimeIndex
24
+ The index of the DataFrame representing time.
25
+
26
+ _state: str
27
+ The state of particle size distribution data.
28
+
29
+ Methods
30
+ -------
31
+ number()
32
+ Calculate number distribution properties.
33
+
34
+ surface(filename='PSSD_dSdlogdp.csv')
35
+ Calculate surface distribution properties.
36
+
37
+ volume(filename='PVSD_dVdlogdp.csv')
38
+ Calculate volume distribution properties.
39
+
40
+ """
41
+
42
+ def __init__(self,
43
+ data: DataFrame,
44
+ state: Literal['dN', 'ddp', 'dlogdp'] = 'dlogdp',
45
+ weighting: Literal['n', 's', 'v', 'ext_in', 'ext_ex'] = 'n'
46
+ ):
47
+ self._data = data
48
+ self._dp = np.array(self._data.columns, dtype=float)
49
+ self._dlogdp = np.full_like(self._dp, 0.014)
50
+ self._index = self._data.index.copy()
51
+ self._state = state
52
+ self._weighting = weighting
53
+
54
+ @property
55
+ def data(self) -> DataFrame:
56
+ return self._data
57
+
58
+ @property
59
+ def dp(self) -> np.ndarray:
60
+ return self._dp
61
+
62
+ @dp.setter
63
+ def dp(self, new_dp: np.ndarray):
64
+ self._dp = new_dp
65
+
66
+ @property
67
+ def dlogdp(self) -> np.ndarray:
68
+ return self._dlogdp
69
+
70
+ @dlogdp.setter
71
+ def dlogdp(self, new_dlogdp: np.ndarray):
72
+ self._dlogdp = new_dlogdp
73
+
74
+ @property
75
+ def index(self):
76
+ return self._index
77
+
78
+ @property
79
+ def state(self):
80
+ return self._state
81
+
82
+ @state.setter
83
+ def state(self, value):
84
+ if value not in ['dN', 'dlogdp', 'ddp']:
85
+ raise ValueError("state must be 'dlogdp' or 'ddp'")
86
+ self._state = value
87
+
88
+ @property
89
+ def weighting(self):
90
+ return self._weighting