AeroViz 0.1.6__py3-none-any.whl → 0.1.8__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/data/240228_00.txt +101 -0
- AeroViz/dataProcess/Chemistry/_ocec.py +20 -7
- AeroViz/plot/__init__.py +2 -0
- AeroViz/plot/hysplit/__init__.py +1 -0
- AeroViz/plot/hysplit/hysplit.py +79 -0
- AeroViz/plot/meteorology/meteorology.py +2 -0
- AeroViz/plot/optical/optical.py +60 -59
- AeroViz/plot/pie.py +14 -2
- AeroViz/plot/radar.py +184 -0
- AeroViz/plot/scatter.py +16 -7
- AeroViz/plot/templates/diurnal_pattern.py +24 -7
- AeroViz/plot/templates/koschmieder.py +11 -8
- AeroViz/plot/timeseries/template.py +2 -2
- AeroViz/plot/timeseries/timeseries.py +47 -7
- AeroViz/rawDataReader/__init__.py +75 -68
- AeroViz/rawDataReader/config/supported_instruments.py +52 -19
- AeroViz/rawDataReader/core/__init__.py +194 -106
- AeroViz/rawDataReader/script/AE33.py +11 -6
- AeroViz/rawDataReader/script/AE43.py +10 -5
- AeroViz/rawDataReader/script/Aurora.py +14 -10
- AeroViz/rawDataReader/script/BC1054.py +10 -6
- AeroViz/rawDataReader/script/EPA.py +39 -0
- AeroViz/rawDataReader/script/GRIMM.py +1 -2
- AeroViz/rawDataReader/script/IGAC.py +6 -23
- AeroViz/rawDataReader/script/MA350.py +12 -5
- AeroViz/rawDataReader/script/Minion.py +107 -30
- AeroViz/rawDataReader/script/NEPH.py +15 -5
- AeroViz/rawDataReader/script/OCEC.py +39 -15
- AeroViz/rawDataReader/script/SMPS.py +1 -0
- AeroViz/rawDataReader/script/TEOM.py +15 -11
- AeroViz/rawDataReader/script/VOC.py +1 -1
- AeroViz/rawDataReader/script/XRF.py +11 -0
- AeroViz/rawDataReader/script/__init__.py +2 -2
- {AeroViz-0.1.6.dist-info → AeroViz-0.1.8.dist-info}/METADATA +54 -30
- {AeroViz-0.1.6.dist-info → AeroViz-0.1.8.dist-info}/RECORD +40 -51
- AeroViz/process/__init__.py +0 -31
- AeroViz/process/core/DataProc.py +0 -19
- AeroViz/process/core/SizeDist.py +0 -90
- AeroViz/process/core/__init__.py +0 -4
- AeroViz/process/method/__init__.py +0 -2
- AeroViz/process/method/prop.py +0 -62
- AeroViz/process/script/AbstractDistCalc.py +0 -143
- AeroViz/process/script/Chemical.py +0 -177
- AeroViz/process/script/IMPACT.py +0 -49
- AeroViz/process/script/IMPROVE.py +0 -161
- AeroViz/process/script/Others.py +0 -65
- AeroViz/process/script/PSD.py +0 -103
- AeroViz/process/script/PSD_dry.py +0 -93
- AeroViz/process/script/__init__.py +0 -5
- AeroViz/process/script/retrieve_RI.py +0 -69
- AeroViz/rawDataReader/script/EPA_vertical.py +0 -46
- AeroViz/rawDataReader/script/Table.py +0 -27
- /AeroViz/{process/method → plot/optical}/PyMieScatt_update.py +0 -0
- /AeroViz/{process/method → plot/optical}/mie_theory.py +0 -0
- {AeroViz-0.1.6.dist-info → AeroViz-0.1.8.dist-info}/LICENSE +0 -0
- {AeroViz-0.1.6.dist-info → AeroViz-0.1.8.dist-info}/WHEEL +0 -0
- {AeroViz-0.1.6.dist-info → AeroViz-0.1.8.dist-info}/top_level.txt +0 -0
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
AeroViz/__init__.py,sha256=A5W6SR71uY_eW44Sh-Yk6blJQ_G1aHrkSzeP2YTPQc4,371
|
|
2
|
+
AeroViz/data/240228_00.txt,sha256=DWfY83EW3fOcv9dW-Y4pudq8-M7BJlXD-tlMSYrAk2w,8946
|
|
2
3
|
AeroViz/data/DEFAULT_DATA.csv,sha256=eeeyeh8vSLKkE5tAF0TYnUNOyQIH98VA41bJaAP204Y,2248526
|
|
3
4
|
AeroViz/data/DEFAULT_PNSD_DATA.csv,sha256=imLvLA80oYwo_jzXZtlQn5hZ76d47HUIlK2jp0tZPrg,2636511
|
|
4
5
|
AeroViz/dataProcess/__init__.py,sha256=D3rTVUiGfs_daGuaotVtbijOgLAp6HaRWchj-zoEnHw,828
|
|
@@ -6,7 +7,7 @@ AeroViz/dataProcess/Chemistry/__init__.py,sha256=fyyomjxkQcUNWDx4R5jPrHafAftN-v2
|
|
|
6
7
|
AeroViz/dataProcess/Chemistry/_calculate.py,sha256=q7ojTFPok0vg8k_1PMECNdP5CPanR9NWQ4Rx5iTcHew,599
|
|
7
8
|
AeroViz/dataProcess/Chemistry/_isoropia.py,sha256=3wp_FXdN230awlStMbctutwld4oot9WaAVXETGd6PSs,3255
|
|
8
9
|
AeroViz/dataProcess/Chemistry/_mass_volume.py,sha256=0joH2BAx0NUwDFzyrLgG-v7WrGl46R7zWxwbajWBV8o,5378
|
|
9
|
-
AeroViz/dataProcess/Chemistry/_ocec.py,sha256=
|
|
10
|
+
AeroViz/dataProcess/Chemistry/_ocec.py,sha256=FKvuh6iMhz6eFne9WJZFyaeo0FyV9a1KmaZ0nm4-67I,6031
|
|
10
11
|
AeroViz/dataProcess/Chemistry/_partition.py,sha256=tKhb6BJns46UiUlEq6Zq7ahYnvUJ_whY3tWE54C3bqU,1023
|
|
11
12
|
AeroViz/dataProcess/Chemistry/_teom.py,sha256=IiM-TrifWpQLTbKllG-4k4c3mvQulfcmjswWu6muCXA,486
|
|
12
13
|
AeroViz/dataProcess/Chemistry/isrpia.cnf,sha256=iWXTqsOZFmNrJxAI9nYuilZ9h6ru1icdPFVim7YKc_k,566
|
|
@@ -32,29 +33,34 @@ AeroViz/dataProcess/VOC/__init__.py,sha256=8GNP0RMymTkJXK18pSgfLHqrKPWboN-3x1_Ke
|
|
|
32
33
|
AeroViz/dataProcess/VOC/_potential_par.py,sha256=h3rVdvtBvC6xHa_ZG4Oq5eXezeSZtHNy6T6I40maIcM,3863
|
|
33
34
|
AeroViz/dataProcess/VOC/support_voc.json,sha256=tMYp_NERqhSriVRE2NavXh33CQ5CnsbJHtmMFlE5q_E,6804
|
|
34
35
|
AeroViz/dataProcess/core/__init__.py,sha256=FhGwqlP8ZwXZQS0LjH0YOz2g1Q2yJniUUhRZ_jDOQ6k,2707
|
|
35
|
-
AeroViz/plot/__init__.py,sha256=
|
|
36
|
+
AeroViz/plot/__init__.py,sha256=m09CuErJglxQBG3_0-8XmB4B-GF-2e8CGvfKM12qCUg,448
|
|
36
37
|
AeroViz/plot/bar.py,sha256=cSPKJLWGifCzICCZVPcbZtrDrea_AStlwSli9-b-lsA,4246
|
|
37
38
|
AeroViz/plot/box.py,sha256=8zDd8jYndSv5f0P1lFeX0m7VWYh9okYgJTClh2Lj7Dg,2115
|
|
38
|
-
AeroViz/plot/pie.py,sha256=
|
|
39
|
+
AeroViz/plot/pie.py,sha256=POOiWcg1KbzUzn1dm4yVEL-1d2bTqUjSTkltHk5YYqU,7860
|
|
40
|
+
AeroViz/plot/radar.py,sha256=QHXkLQlAZZQDWHcqVGJBeRsGiu45GYmy3lN6gwlh6xY,6965
|
|
39
41
|
AeroViz/plot/regression.py,sha256=mTCNrCAYvH7QjIb_5WlltCR1Kqwer1anpGEsxmO2S3o,7292
|
|
40
|
-
AeroViz/plot/scatter.py,sha256=
|
|
42
|
+
AeroViz/plot/scatter.py,sha256=sxk5QxgC1Jk9PuY18q9aRgR_Ipvg5dM1RkwYQxRkn1c,6787
|
|
41
43
|
AeroViz/plot/violin.py,sha256=pU2Z2yTWocEtImmCAmbtn0WvXtUOrnCGOdDOrLxjooU,2689
|
|
42
44
|
AeroViz/plot/distribution/__init__.py,sha256=nhbIegWczkuEfWsE7-2jfF0dnpmPDzJJzjq8Fuh6q5k,28
|
|
43
45
|
AeroViz/plot/distribution/distribution.py,sha256=sAjqtqKavFwQqI8PGPFnpvZFSU-w2UKjcTTC5L91f4E,20595
|
|
46
|
+
AeroViz/plot/hysplit/__init__.py,sha256=VrEkha2OEFp_00Xj9R98C96niZ7fYqJzGPeYsbojtzA,23
|
|
47
|
+
AeroViz/plot/hysplit/hysplit.py,sha256=PXQIrUTzVxJvEbTWtis-YKgyMxKn6bYmc-3FH8ystaQ,2415
|
|
44
48
|
AeroViz/plot/meteorology/__init__.py,sha256=hhGfQE3IUzS3Eaju_nO7LomPPHJnd-zAAZZweXOXs2M,27
|
|
45
|
-
AeroViz/plot/meteorology/meteorology.py,sha256=
|
|
49
|
+
AeroViz/plot/meteorology/meteorology.py,sha256=6hk-5olgQTw2SB-GhEizLN19vRVBztgiXoruh8Q6Zns,11282
|
|
50
|
+
AeroViz/plot/optical/PyMieScatt_update.py,sha256=g3vlzATjzYSYZd3LwmwxEmdkpo4cHJ3KY4rePY4jwZk,21065
|
|
46
51
|
AeroViz/plot/optical/__init__.py,sha256=5S2WPq8NouPYgc46c1XBveSL8Cxs3w8wNYN7vWIpB-s,23
|
|
47
|
-
AeroViz/plot/optical/
|
|
52
|
+
AeroViz/plot/optical/mie_theory.py,sha256=EC3SsUaq5G3SdQyPMQxcosbEokqAgJw-4Gz6moJiOsk,8666
|
|
53
|
+
AeroViz/plot/optical/optical.py,sha256=W5S5qJ4QxxI9mOonbQnMFXGQQFZpb5TypM5Vn8CF-SI,13694
|
|
48
54
|
AeroViz/plot/templates/__init__.py,sha256=VXp73SqrSF1WR9WYhHpHtbhvFcb1CR4JeV1tPQvCEEI,227
|
|
49
55
|
AeroViz/plot/templates/ammonium_rich.py,sha256=a46rfwhSZ3LIj71LxdOnklAFyy6Xe_VQ-kh1komnZ5g,1225
|
|
50
56
|
AeroViz/plot/templates/contour.py,sha256=fAM6Wn_EmENQM1IW6KJpwmLva6D9P2dEAaK6cNQBtdQ,1678
|
|
51
57
|
AeroViz/plot/templates/corr_matrix.py,sha256=VeiwBwmg_v6LYslJvhSqweiLBheR3vGfPYxrtHoqJRI,3507
|
|
52
|
-
AeroViz/plot/templates/diurnal_pattern.py,sha256=
|
|
53
|
-
AeroViz/plot/templates/koschmieder.py,sha256=
|
|
58
|
+
AeroViz/plot/templates/diurnal_pattern.py,sha256=TOE4PvHluZhjZvDEeZIv8hcb-PthBNDrgEWtyPmwMcg,2051
|
|
59
|
+
AeroViz/plot/templates/koschmieder.py,sha256=YMtok3T5VHlzLphnsrkchNRnw5UE3XSLYDne42Efofo,3343
|
|
54
60
|
AeroViz/plot/templates/metal_heatmap.py,sha256=ngqJFiOPCoExPKv-lHvgB1XCSr9fF_jSKmx4VwjUUXQ,4961
|
|
55
61
|
AeroViz/plot/timeseries/__init__.py,sha256=LQ_aE32pvp5ouC--BRa0NwSJ48DYO3rFaOt4AKGmn_s,50
|
|
56
|
-
AeroViz/plot/timeseries/template.py,sha256=
|
|
57
|
-
AeroViz/plot/timeseries/timeseries.py,sha256=
|
|
62
|
+
AeroViz/plot/timeseries/template.py,sha256=ey16q66UAOLhXGKHAPGbRp-QD3J6GkF_cXhkrRIybS8,1472
|
|
63
|
+
AeroViz/plot/timeseries/timeseries.py,sha256=SnGxPceWXSI43iajfsOW2sUpQdh9wjZsUuAUEhJ-f-Y,16170
|
|
58
64
|
AeroViz/plot/utils/__init__.py,sha256=sxp3nfUnyVIIXYd-F874gEHkhQiDnMPDE1nJ_Z98270,104
|
|
59
65
|
AeroViz/plot/utils/_color.py,sha256=Vhjo-v4UWFME1JbbBR_Ro8FRj6dHB2O5Sud_9lpdu_U,2797
|
|
60
66
|
AeroViz/plot/utils/_unit.py,sha256=Abum0WDnq08DzkSoxkKvBc0mYKo8izIDmgduPo9Q27A,1671
|
|
@@ -62,51 +68,34 @@ AeroViz/plot/utils/fRH.json,sha256=t-2ux4TLOYAB-4jJ72LSM4jv1jk9XkaxKYNMDepMHIg,6
|
|
|
62
68
|
AeroViz/plot/utils/plt_utils.py,sha256=7Au3r2-7AZQmzrO2OfcyTFomJRLHgu1Npb7wxQqUvzY,3438
|
|
63
69
|
AeroViz/plot/utils/sklearn_utils.py,sha256=hKFfkVkYLRxkIDKvO9COHXwhjD_UWqQigdT3mDToni4,2098
|
|
64
70
|
AeroViz/plot/utils/units.json,sha256=JKcqvLA6dkc8REV_NhX85Jl9LA4iAZxzw9RJp6JTla0,2965
|
|
65
|
-
AeroViz/
|
|
66
|
-
AeroViz/process/core/DataProc.py,sha256=6MBDcHyQmVU16Z0oDo0GItvhU5f7fWLXFMGqUyoW1eQ,419
|
|
67
|
-
AeroViz/process/core/SizeDist.py,sha256=V6CpxTRfWjsZ8GwIEOqyKJ8_qcz7dO0ZmfHQvR6SgW4,2097
|
|
68
|
-
AeroViz/process/core/__init__.py,sha256=WmVSFDx97urX0WPA8dtRVoQF04IDaU-IgxHK979-kM8,98
|
|
69
|
-
AeroViz/process/method/PyMieScatt_update.py,sha256=g3vlzATjzYSYZd3LwmwxEmdkpo4cHJ3KY4rePY4jwZk,21065
|
|
70
|
-
AeroViz/process/method/__init__.py,sha256=_yxoNAbbI82ORhrVsi-6x8vPnWQNHavjZUXy-ioZ2wg,123
|
|
71
|
-
AeroViz/process/method/mie_theory.py,sha256=EC3SsUaq5G3SdQyPMQxcosbEokqAgJw-4Gz6moJiOsk,8666
|
|
72
|
-
AeroViz/process/method/prop.py,sha256=7f18SOkkLgDiY_g1c1We8g-3WDJJIFcxkfR4F99jUgc,1845
|
|
73
|
-
AeroViz/process/script/AbstractDistCalc.py,sha256=wXF7OA634m_i-Y79lU4THj0c0yZx5NUtLNvORH1FWZg,5351
|
|
74
|
-
AeroViz/process/script/Chemical.py,sha256=jjBIdILe0fO5Rqidb4pg3CP6qmMLqFvst-ZSz8mbb7Q,6413
|
|
75
|
-
AeroViz/process/script/IMPACT.py,sha256=Zz1GRQLJopNQGw5qUTdWl7Zxy_CBnFBsL1B-CCemaDQ,1520
|
|
76
|
-
AeroViz/process/script/IMPROVE.py,sha256=5FNl33S_785J7CsSue_CvZP58TWevpwGr2ePQM6qScw,5709
|
|
77
|
-
AeroViz/process/script/Others.py,sha256=TOtSKVZ9Z-zX1LFfE4p36H0hMjfmyyQw_Xaeq8HgMBk,2325
|
|
78
|
-
AeroViz/process/script/PSD.py,sha256=unSvyHp1RqgQecY-Lab-wRFGP2u45blSO4NCNTaxcRQ,3721
|
|
79
|
-
AeroViz/process/script/PSD_dry.py,sha256=P9rSQVA78jHXrY2bDiC1iQvG0w9Js8QiBNfooPOXzfY,3269
|
|
80
|
-
AeroViz/process/script/__init__.py,sha256=QExUHHK79oiwZXvk8u00P8rLwWhGOc1fpZY2Fx8Vkxg,188
|
|
81
|
-
AeroViz/process/script/retrieve_RI.py,sha256=9OQJU1w6VzVqKz00e9GdWswRAnaETe_1meAHp5N_s54,2711
|
|
82
|
-
AeroViz/rawDataReader/__init__.py,sha256=jXLrf0A-Hxufw-IQp0-Nyci4PszWk5YU4SnpH4ob1RE,3862
|
|
71
|
+
AeroViz/rawDataReader/__init__.py,sha256=0JUjzD54KRWQQ5C07zpVDwHlg02QoSaQ89rRFB4RwNM,4852
|
|
83
72
|
AeroViz/rawDataReader/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
84
|
-
AeroViz/rawDataReader/config/supported_instruments.py,sha256=
|
|
85
|
-
AeroViz/rawDataReader/core/__init__.py,sha256=
|
|
86
|
-
AeroViz/rawDataReader/script/AE33.py,sha256=
|
|
87
|
-
AeroViz/rawDataReader/script/AE43.py,sha256=
|
|
73
|
+
AeroViz/rawDataReader/config/supported_instruments.py,sha256=CGE34wsXyq-Za8IIYu2rt3JzoANrFBgrphqvl2FYTC0,5296
|
|
74
|
+
AeroViz/rawDataReader/core/__init__.py,sha256=rXEFM1gi5TjOmYh5ouov-zFvHH22gI-X26-WRGemwu4,15106
|
|
75
|
+
AeroViz/rawDataReader/script/AE33.py,sha256=FGET-JGW2H4cTRoduuIS8VGFYK7jEnPIhqlBJuNAGFQ,1278
|
|
76
|
+
AeroViz/rawDataReader/script/AE43.py,sha256=H8lrI6jqLTRwbslVmbkB_YxEcPl42uEVIfKk6WGTTBI,1231
|
|
88
77
|
AeroViz/rawDataReader/script/APS_3321.py,sha256=x75G72Xl0vElr6Njbv8SlOcosAHNozseaJzAxVmfXyI,1697
|
|
89
|
-
AeroViz/rawDataReader/script/Aurora.py,sha256=
|
|
90
|
-
AeroViz/rawDataReader/script/BC1054.py,sha256=
|
|
91
|
-
AeroViz/rawDataReader/script/
|
|
92
|
-
AeroViz/rawDataReader/script/GRIMM.py,sha256=
|
|
93
|
-
AeroViz/rawDataReader/script/IGAC.py,sha256=
|
|
94
|
-
AeroViz/rawDataReader/script/MA350.py,sha256=
|
|
95
|
-
AeroViz/rawDataReader/script/Minion.py,sha256=
|
|
96
|
-
AeroViz/rawDataReader/script/NEPH.py,sha256=
|
|
97
|
-
AeroViz/rawDataReader/script/OCEC.py,sha256=
|
|
98
|
-
AeroViz/rawDataReader/script/SMPS.py,sha256=
|
|
99
|
-
AeroViz/rawDataReader/script/TEOM.py,sha256=
|
|
100
|
-
AeroViz/rawDataReader/script/
|
|
101
|
-
AeroViz/rawDataReader/script/
|
|
102
|
-
AeroViz/rawDataReader/script/__init__.py,sha256=
|
|
78
|
+
AeroViz/rawDataReader/script/Aurora.py,sha256=HDLyHOw62tgfLjjwYCWVAJKsc4SB7aLnIjI6HI_WTRM,1491
|
|
79
|
+
AeroViz/rawDataReader/script/BC1054.py,sha256=pvHnUA_gJIRf9jEUi8vzNyErXMHRQWLnOsExIZR0_OA,1574
|
|
80
|
+
AeroViz/rawDataReader/script/EPA.py,sha256=lIdWx9roM1unyqSjTtd5aAOGoITcU5e-P0XYt0k8Mjg,1578
|
|
81
|
+
AeroViz/rawDataReader/script/GRIMM.py,sha256=UyWeqZfOcbIVCmLk_0P8xSh6eQiq_U2Gse84O2mTnlQ,847
|
|
82
|
+
AeroViz/rawDataReader/script/IGAC.py,sha256=ZdskNc65wVx2znmbjJp2J_rxVg5vuqxB1HWRoqxb7Ho,2364
|
|
83
|
+
AeroViz/rawDataReader/script/MA350.py,sha256=w0QCoJxMIMwaLOLWLE65FM7MY9kcvpkRMAowRA5TaYk,1490
|
|
84
|
+
AeroViz/rawDataReader/script/Minion.py,sha256=BjuJe2KWLJKgvVnV0WfilGh2DvaWqJDDNj8i0z3oeuU,7306
|
|
85
|
+
AeroViz/rawDataReader/script/NEPH.py,sha256=6qs2oiS6zDOFkTNEu9T-8hrCuoZHPfjd5UoMacobAno,3168
|
|
86
|
+
AeroViz/rawDataReader/script/OCEC.py,sha256=45jaEp1cjmPPjbf44eErhE2wO6GXpDVsJIQ9jPj1XcE,3390
|
|
87
|
+
AeroViz/rawDataReader/script/SMPS.py,sha256=EtXmeukOIwqfMwMJqv99_STfVg0uPdVr96r-tfD95gk,2774
|
|
88
|
+
AeroViz/rawDataReader/script/TEOM.py,sha256=Ew4JqDf_qpGFvvBLwX824kKIRXMM6QZLwEB4t4xkTSk,2103
|
|
89
|
+
AeroViz/rawDataReader/script/VOC.py,sha256=GUme72ZyjSzREsFNUgOV_OCESIVJBXY9KrKP1c9Av7I,1248
|
|
90
|
+
AeroViz/rawDataReader/script/XRF.py,sha256=SU1-D94GkwdkjlNXcyXbwQG1tOYCpeL6GTVkaLBHc-s,187
|
|
91
|
+
AeroViz/rawDataReader/script/__init__.py,sha256=s3c797Q8EAGcJCxVRTA-KdHie-vHLNYbMxwa5c0qz-I,214
|
|
103
92
|
AeroViz/tools/__init__.py,sha256=tPUmCI9Fi1LgE-QSVnzan5jRdYQBIENH9PRDXB_DhTw,109
|
|
104
93
|
AeroViz/tools/database.py,sha256=05VzjJyhlRrhsZdhfFQ__7CxGm4MdFekLjz3_Is5h9U,3430
|
|
105
94
|
AeroViz/tools/dataclassifier.py,sha256=_wpv0PlZ5EGkcNqHxfFtdEsYvHP5FVE8sMZXikhm_YE,4492
|
|
106
95
|
AeroViz/tools/dataprinter.py,sha256=Jq2Yztpa9YCOeLDVTrRs7PhSdNIPhEAexVj1YSuJ7hY,2249
|
|
107
96
|
AeroViz/tools/datareader.py,sha256=iTQ0U8hdNMjCdbiH7EiKW10UEoxzxXRHc4s5_1IikJo,1933
|
|
108
|
-
AeroViz-0.1.
|
|
109
|
-
AeroViz-0.1.
|
|
110
|
-
AeroViz-0.1.
|
|
111
|
-
AeroViz-0.1.
|
|
112
|
-
AeroViz-0.1.
|
|
97
|
+
AeroViz-0.1.8.dist-info/LICENSE,sha256=E-679GpGGkp3irmtuJXiT7R4cNUA4cmsH6Q7QUgPf5U,1069
|
|
98
|
+
AeroViz-0.1.8.dist-info/METADATA,sha256=wZbCSSka8hul4WhNJinMRBh3p-thd-irlLC5HwWc1iE,6219
|
|
99
|
+
AeroViz-0.1.8.dist-info/WHEEL,sha256=HiCZjzuy6Dw0hdX5R3LCFPDmFS4BWl8H-8W39XfmgX4,91
|
|
100
|
+
AeroViz-0.1.8.dist-info/top_level.txt,sha256=BYsmTst_o4FZOKRP1XIvIMlN6mMTTXNfnSToL2_nVbQ,8
|
|
101
|
+
AeroViz-0.1.8.dist-info/RECORD,,
|
AeroViz/process/__init__.py
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
from pathlib import Path
|
|
2
|
-
|
|
3
|
-
from pandas import read_csv, concat
|
|
4
|
-
|
|
5
|
-
from AeroViz.process.script import (ImpactProc, ImproveProc, ChemicalProc, ParticleSizeDistProc,
|
|
6
|
-
ExtinctionDistProc, OthersProc)
|
|
7
|
-
|
|
8
|
-
__all__ = ['DataProcessor', 'ImpactProc', 'ImproveProc', 'ChemicalProc', 'ParticleSizeDistProc', 'ExtinctionDistProc', ]
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class DataProcessor:
|
|
12
|
-
def __new__(cls, file_path, reset: bool = False, save_file: Path | str = 'All_data.csv'):
|
|
13
|
-
file_path = Path(file_path)
|
|
14
|
-
|
|
15
|
-
print(f'\t\t \033[96m --- Processing Data --- \033[0m')
|
|
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)
|
|
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']
|
|
24
|
-
|
|
25
|
-
_df = concat([processor().process_data(reset, save_filename) for processor, reset, save_filename in
|
|
26
|
-
zip(processor, reset, save_filename)], axis=1)
|
|
27
|
-
|
|
28
|
-
# 7. save result
|
|
29
|
-
_df.to_csv(file_path)
|
|
30
|
-
|
|
31
|
-
return _df
|
AeroViz/process/core/DataProc.py
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
from abc import ABC, abstractmethod
|
|
2
|
-
from pathlib import Path
|
|
3
|
-
|
|
4
|
-
from pandas import DataFrame
|
|
5
|
-
|
|
6
|
-
__all__ = ['DataProc']
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
class DataProc(ABC):
|
|
10
|
-
def __init__(self):
|
|
11
|
-
pass
|
|
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
|
AeroViz/process/core/SizeDist.py
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
from typing import Literal
|
|
2
|
-
|
|
3
|
-
import numpy as np
|
|
4
|
-
from pandas import DataFrame
|
|
5
|
-
|
|
6
|
-
__all__ = ['SizeDist']
|
|
7
|
-
|
|
8
|
-
|
|
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
|
AeroViz/process/core/__init__.py
DELETED
AeroViz/process/method/prop.py
DELETED
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import numpy as np
|
|
2
|
-
from numpy import exp, log
|
|
3
|
-
from scipy.signal import find_peaks
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
def geometric(dp: np.ndarray,
|
|
7
|
-
dist: np.ndarray
|
|
8
|
-
) -> tuple[float, float]:
|
|
9
|
-
""" Calculate the geometric mean and standard deviation. """
|
|
10
|
-
|
|
11
|
-
_gmd = (((dist * log(dp)).sum()) / dist.sum())
|
|
12
|
-
|
|
13
|
-
logdp_mesh, gmd_mesh = np.meshgrid(log(dp), _gmd)
|
|
14
|
-
_gsd = ((((logdp_mesh - gmd_mesh) ** 2) * dist).sum() / dist.sum()) ** .5
|
|
15
|
-
|
|
16
|
-
return exp(_gmd), exp(_gsd)
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
def contribution(dp: np.ndarray,
|
|
20
|
-
dist: np.ndarray
|
|
21
|
-
) -> tuple[float, float, float]:
|
|
22
|
-
""" Calculate the relative contribution of each mode. """
|
|
23
|
-
|
|
24
|
-
ultra = dist[(dp >= 11.8) & (dp < 100)].sum() / dist.sum()
|
|
25
|
-
accum = dist[(dp >= 100) & (dp < 1000)].sum() / dist.sum()
|
|
26
|
-
coars = dist[(dp >= 1000) & (dp < 2500)].sum() / dist.sum()
|
|
27
|
-
|
|
28
|
-
return ultra, accum, coars
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
def mode(dp: np.ndarray,
|
|
32
|
-
dist: np.ndarray
|
|
33
|
-
) -> np.ndarray:
|
|
34
|
-
""" Find three peak mode in distribution. """
|
|
35
|
-
|
|
36
|
-
min_value = np.array([dist.min()])
|
|
37
|
-
mode, _ = find_peaks(np.concatenate([min_value, dist, min_value]), distance=len(dist) - 1)
|
|
38
|
-
|
|
39
|
-
return dp[mode - 1]
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
def properties(dist,
|
|
43
|
-
dp: np.ndarray,
|
|
44
|
-
dlogdp: np.ndarray,
|
|
45
|
-
weighting: str
|
|
46
|
-
) -> dict:
|
|
47
|
-
""" for apply """
|
|
48
|
-
dist = np.array(dist)
|
|
49
|
-
|
|
50
|
-
gmd, gsd = geometric(dp, dist)
|
|
51
|
-
ultra, accum, coarse = contribution(dp, dist)
|
|
52
|
-
peak = mode(dp, dist)
|
|
53
|
-
|
|
54
|
-
return {key: round(value, 3) for key, value in
|
|
55
|
-
{f'total_{weighting}': (dist * dlogdp).sum(),
|
|
56
|
-
f'GMD_{weighting}': gmd,
|
|
57
|
-
f'GSD_{weighting}': gsd,
|
|
58
|
-
f'mode_{weighting}': peak[0],
|
|
59
|
-
f'ultra_{weighting}': ultra,
|
|
60
|
-
f'accum_{weighting}': accum,
|
|
61
|
-
f'coarse_{weighting}': coarse}
|
|
62
|
-
.items()}
|
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
from abc import ABC, abstractmethod
|
|
2
|
-
from functools import partial
|
|
3
|
-
from typing import Literal
|
|
4
|
-
|
|
5
|
-
import numpy as np
|
|
6
|
-
from pandas import DataFrame, concat
|
|
7
|
-
|
|
8
|
-
from AeroViz.process.core.SizeDist import SizeDist
|
|
9
|
-
from AeroViz.process.method import properties, internal, external, core_shell, sensitivity
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
class AbstractDistCalc(ABC):
|
|
13
|
-
@abstractmethod
|
|
14
|
-
def useApply(self) -> DataFrame:
|
|
15
|
-
pass
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
class NumberDistCalc(AbstractDistCalc):
|
|
19
|
-
def __init__(self, psd: SizeDist):
|
|
20
|
-
self.psd = psd
|
|
21
|
-
|
|
22
|
-
def useApply(self) -> DataFrame:
|
|
23
|
-
""" Calculate number distribution """
|
|
24
|
-
return self.psd.data
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
class SurfaceDistCalc(AbstractDistCalc):
|
|
28
|
-
def __init__(self, psd: SizeDist):
|
|
29
|
-
self.psd = psd
|
|
30
|
-
|
|
31
|
-
def useApply(self) -> DataFrame:
|
|
32
|
-
""" Calculate surface distribution """
|
|
33
|
-
return self.psd.data.dropna().apply(lambda col: np.pi * self.psd.dp ** 2 * np.array(col),
|
|
34
|
-
axis=1, result_type='broadcast').reindex(self.psd.index)
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
class VolumeDistCalc(AbstractDistCalc):
|
|
38
|
-
def __init__(self, psd: SizeDist):
|
|
39
|
-
self.psd = psd
|
|
40
|
-
|
|
41
|
-
def useApply(self) -> DataFrame:
|
|
42
|
-
""" Calculate volume distribution """
|
|
43
|
-
return self.psd.data.dropna().apply(lambda col: np.pi / 6 * self.psd.dp ** 3 * np.array(col),
|
|
44
|
-
axis=1, result_type='broadcast').reindex(self.psd.index)
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
class PropertiesDistCalc(AbstractDistCalc):
|
|
48
|
-
def __init__(self, psd: SizeDist):
|
|
49
|
-
self.psd = psd
|
|
50
|
-
|
|
51
|
-
def useApply(self) -> DataFrame:
|
|
52
|
-
""" Calculate properties of distribution """
|
|
53
|
-
return self.psd.data.dropna().apply(partial(properties, dp=self.psd.dp, dlogdp=self.psd.dlogdp,
|
|
54
|
-
weighting=self.psd.weighting),
|
|
55
|
-
axis=1, result_type='expand').reindex(self.psd.index)
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
class ExtinctionDistCalc(AbstractDistCalc):
|
|
59
|
-
mapping = {'internal': internal,
|
|
60
|
-
'external': external,
|
|
61
|
-
'core_shell': core_shell,
|
|
62
|
-
'sensitivity': sensitivity}
|
|
63
|
-
|
|
64
|
-
def __init__(self,
|
|
65
|
-
psd: SizeDist,
|
|
66
|
-
RI: DataFrame,
|
|
67
|
-
method: Literal['internal', 'external', 'config-shell', 'sensitivity'],
|
|
68
|
-
result_type: Literal['extinction', 'scattering', 'absorption'] = 'extinction'
|
|
69
|
-
):
|
|
70
|
-
self.psd = psd
|
|
71
|
-
self.RI = RI
|
|
72
|
-
if method not in ExtinctionDistCalc.mapping:
|
|
73
|
-
raise ValueError(f"Invalid method: {method}. Valid methods are: {list(ExtinctionDistCalc.mapping.keys())}")
|
|
74
|
-
self.method = ExtinctionDistCalc.mapping[method]
|
|
75
|
-
self.result_type = result_type
|
|
76
|
-
|
|
77
|
-
def useApply(self) -> DataFrame:
|
|
78
|
-
""" Calculate volume distribution """
|
|
79
|
-
combined_data = concat([self.psd.data, self.RI], axis=1).dropna()
|
|
80
|
-
return combined_data.apply(partial(self.method, dp=self.psd.dp, result_type=self.result_type),
|
|
81
|
-
axis=1, result_type='expand').reindex(self.psd.index).set_axis(self.psd.dp, axis=1)
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
# TODO:
|
|
85
|
-
class LungDepositsDistCalc(AbstractDistCalc):
|
|
86
|
-
|
|
87
|
-
def __init__(self, psd: SizeDist, lung_curve):
|
|
88
|
-
self.psd = psd
|
|
89
|
-
self.lung_curve = lung_curve
|
|
90
|
-
|
|
91
|
-
def useApply(self) -> DataFrame:
|
|
92
|
-
pass
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
class DistributionCalculator: # 策略模式 (Strategy Pattern)
|
|
96
|
-
""" Interface for distribution calculator """
|
|
97
|
-
|
|
98
|
-
mapping = {'number': NumberDistCalc,
|
|
99
|
-
'surface': SurfaceDistCalc,
|
|
100
|
-
'volume': VolumeDistCalc,
|
|
101
|
-
'property': PropertiesDistCalc,
|
|
102
|
-
'extinction': ExtinctionDistCalc,
|
|
103
|
-
'lung_deposit': LungDepositsDistCalc}
|
|
104
|
-
|
|
105
|
-
def __init__(self,
|
|
106
|
-
calculator: Literal['number', 'surface', 'volume', 'property', 'extinction'],
|
|
107
|
-
psd: SizeDist,
|
|
108
|
-
RI: DataFrame = None,
|
|
109
|
-
method: str = None,
|
|
110
|
-
result_type: str = None
|
|
111
|
-
):
|
|
112
|
-
"""
|
|
113
|
-
Initialize the DistributionCalculator.
|
|
114
|
-
|
|
115
|
-
Parameters:
|
|
116
|
-
calculator (CalculatorType): The type of calculator.
|
|
117
|
-
psd (SizeDist): The particle size distribution data.
|
|
118
|
-
RI (Optional[DataFrame]): The refractive index data. Default is None.
|
|
119
|
-
method (Optional[str]): The method to use. Default is None.
|
|
120
|
-
result_type (Optional[str]): The result type. Default is None.
|
|
121
|
-
"""
|
|
122
|
-
if calculator not in DistributionCalculator.mapping.keys():
|
|
123
|
-
raise ValueError(
|
|
124
|
-
f"Invalid calculator: {calculator}. Valid calculators are: {list(DistributionCalculator.mapping.keys())}")
|
|
125
|
-
self.calculator = DistributionCalculator.mapping[calculator]
|
|
126
|
-
self.psd = psd
|
|
127
|
-
self.RI = RI
|
|
128
|
-
self.method = method
|
|
129
|
-
self.result_type = result_type
|
|
130
|
-
|
|
131
|
-
def useApply(self) -> DataFrame:
|
|
132
|
-
"""
|
|
133
|
-
Apply the calculator to the data.
|
|
134
|
-
|
|
135
|
-
Returns:
|
|
136
|
-
DataFrame: The calculated data.
|
|
137
|
-
"""
|
|
138
|
-
if self.RI is not None:
|
|
139
|
-
return self.calculator(self.psd, self.RI, self.method, self.result_type).useApply()
|
|
140
|
-
elif issubclass(self.calculator, (NumberDistCalc, SurfaceDistCalc, VolumeDistCalc, PropertiesDistCalc)):
|
|
141
|
-
return self.calculator(self.psd).useApply()
|
|
142
|
-
else:
|
|
143
|
-
raise ValueError("RI parameter is required for this calculator type")
|