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.

Files changed (57) hide show
  1. AeroViz/data/240228_00.txt +101 -0
  2. AeroViz/dataProcess/Chemistry/_ocec.py +20 -7
  3. AeroViz/plot/__init__.py +2 -0
  4. AeroViz/plot/hysplit/__init__.py +1 -0
  5. AeroViz/plot/hysplit/hysplit.py +79 -0
  6. AeroViz/plot/meteorology/meteorology.py +2 -0
  7. AeroViz/plot/optical/optical.py +60 -59
  8. AeroViz/plot/pie.py +14 -2
  9. AeroViz/plot/radar.py +184 -0
  10. AeroViz/plot/scatter.py +16 -7
  11. AeroViz/plot/templates/diurnal_pattern.py +24 -7
  12. AeroViz/plot/templates/koschmieder.py +11 -8
  13. AeroViz/plot/timeseries/template.py +2 -2
  14. AeroViz/plot/timeseries/timeseries.py +47 -7
  15. AeroViz/rawDataReader/__init__.py +75 -68
  16. AeroViz/rawDataReader/config/supported_instruments.py +52 -19
  17. AeroViz/rawDataReader/core/__init__.py +194 -106
  18. AeroViz/rawDataReader/script/AE33.py +11 -6
  19. AeroViz/rawDataReader/script/AE43.py +10 -5
  20. AeroViz/rawDataReader/script/Aurora.py +14 -10
  21. AeroViz/rawDataReader/script/BC1054.py +10 -6
  22. AeroViz/rawDataReader/script/EPA.py +39 -0
  23. AeroViz/rawDataReader/script/GRIMM.py +1 -2
  24. AeroViz/rawDataReader/script/IGAC.py +6 -23
  25. AeroViz/rawDataReader/script/MA350.py +12 -5
  26. AeroViz/rawDataReader/script/Minion.py +107 -30
  27. AeroViz/rawDataReader/script/NEPH.py +15 -5
  28. AeroViz/rawDataReader/script/OCEC.py +39 -15
  29. AeroViz/rawDataReader/script/SMPS.py +1 -0
  30. AeroViz/rawDataReader/script/TEOM.py +15 -11
  31. AeroViz/rawDataReader/script/VOC.py +1 -1
  32. AeroViz/rawDataReader/script/XRF.py +11 -0
  33. AeroViz/rawDataReader/script/__init__.py +2 -2
  34. {AeroViz-0.1.6.dist-info → AeroViz-0.1.8.dist-info}/METADATA +54 -30
  35. {AeroViz-0.1.6.dist-info → AeroViz-0.1.8.dist-info}/RECORD +40 -51
  36. AeroViz/process/__init__.py +0 -31
  37. AeroViz/process/core/DataProc.py +0 -19
  38. AeroViz/process/core/SizeDist.py +0 -90
  39. AeroViz/process/core/__init__.py +0 -4
  40. AeroViz/process/method/__init__.py +0 -2
  41. AeroViz/process/method/prop.py +0 -62
  42. AeroViz/process/script/AbstractDistCalc.py +0 -143
  43. AeroViz/process/script/Chemical.py +0 -177
  44. AeroViz/process/script/IMPACT.py +0 -49
  45. AeroViz/process/script/IMPROVE.py +0 -161
  46. AeroViz/process/script/Others.py +0 -65
  47. AeroViz/process/script/PSD.py +0 -103
  48. AeroViz/process/script/PSD_dry.py +0 -93
  49. AeroViz/process/script/__init__.py +0 -5
  50. AeroViz/process/script/retrieve_RI.py +0 -69
  51. AeroViz/rawDataReader/script/EPA_vertical.py +0 -46
  52. AeroViz/rawDataReader/script/Table.py +0 -27
  53. /AeroViz/{process/method → plot/optical}/PyMieScatt_update.py +0 -0
  54. /AeroViz/{process/method → plot/optical}/mie_theory.py +0 -0
  55. {AeroViz-0.1.6.dist-info → AeroViz-0.1.8.dist-info}/LICENSE +0 -0
  56. {AeroViz-0.1.6.dist-info → AeroViz-0.1.8.dist-info}/WHEEL +0 -0
  57. {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=gqDTs9rOyr0RXdN1Nrxv6Vgvh04IFgHwk4gAJUgZZGc,5437
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=BxoarxAeDHNdMHizS1bCTwV8NEuUCgeDB75GbSEsNWs,394
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=PVOqc_tAMlfjojTggP7HPL9Nk3ImigETo_EUFD6K2BY,7421
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=2Q_Um7Ai-pym2nUiMk6tY_zEXwbKE-BpkgrDkMyNbYA,6293
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=h5KiaReatt238FXZyGjP9CAMkzTF1aVjOaFAGq3CKRY,11197
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/optical.py,sha256=xtuJuaonyM4OUS_BlkxKudLZKEteCS1u_-Svj3lQPco,13728
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=Vp8nDzSe95ppZBCDkFXnpUEh1cb-19yDS3H0qftoPaw,1434
53
- AeroViz/plot/templates/koschmieder.py,sha256=XmsYn8x9lu2BgN1FXKHb0quZdRw7Etv1dT5LBjBB0ok,3199
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=E9dxaH_Y5QxnkIHK4VH59IVShnf4i1-TT_QE4NqVqrQ,1460
57
- AeroViz/plot/timeseries/timeseries.py,sha256=EitNnjleHj3Qu1PBHClWNi9kCgJ8tULGZSicS3xhoZw,14626
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/process/__init__.py,sha256=vqXO0vhowU9yNW5tnVYNg3ceBxLt96PgBNkZ2KUxKXw,1309
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=iE2dqnAhXsHUeVfho5vYYcXL97fg_xt3VvvYcyxCU48,4408
85
- AeroViz/rawDataReader/core/__init__.py,sha256=W_RwJZmMCTjTwWiTSxcXFhkasO3cyQWEPSdA7-ymeqU,11058
86
- AeroViz/rawDataReader/script/AE33.py,sha256=Nv0u0w_V50sDjsLh17ZkNT6A75TjIo2A1O6GYc4zkJg,1107
87
- AeroViz/rawDataReader/script/AE43.py,sha256=Qq9MdiBKzDuKIEFPanmn7wUbkN5VeSTG6Dopw8i0W90,1056
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=b0XPs2gc_2UJj4HnOHwW7o255zsCPp459goaDqeAJA8,1387
90
- AeroViz/rawDataReader/script/BC1054.py,sha256=QGU1SRDoE8e4yNXUX7RsdK5zh72fNd2Q0IpUy7iFzrg,1486
91
- AeroViz/rawDataReader/script/EPA_vertical.py,sha256=MpcbOzbigivsuldCxzn_B6POtQMzahGQhM_sWRDVP9s,1669
92
- AeroViz/rawDataReader/script/GRIMM.py,sha256=s2z3aNfpPOd_07Zl8jbHa7CxsR2EjrtoZw_HRjR5ykc,946
93
- AeroViz/rawDataReader/script/IGAC.py,sha256=BDhmsNy02EvLY0sd75NM6XvLGVTEJlxyQQbprhdFQmU,2948
94
- AeroViz/rawDataReader/script/MA350.py,sha256=YRY19R2V6nyHMpGMOLVZvK8_41OCCzdTcSnuZR-OJsU,1287
95
- AeroViz/rawDataReader/script/Minion.py,sha256=c128ZkkxakV6wq1k9NtEq0scdi1mh9Mn0jhQFqz_uVE,3940
96
- AeroViz/rawDataReader/script/NEPH.py,sha256=OSDtbJ4sujtnf3bzbENXoyJwA-RIeOkPXNCEJ6MvkPQ,2735
97
- AeroViz/rawDataReader/script/OCEC.py,sha256=t3N_bs5RishlfzFqxTSfMlemZBDIco6cKZ4mU0j9_6g,2315
98
- AeroViz/rawDataReader/script/SMPS.py,sha256=RnqysTWNaFautGnyPKZgMjdtPdauv9Mqu9IpuTEGpXs,2706
99
- AeroViz/rawDataReader/script/TEOM.py,sha256=Hx_DDnvGSfSl9cgIVmuf4VmphaFfNCY60mqPWoLmNvw,1796
100
- AeroViz/rawDataReader/script/Table.py,sha256=othBoQSFVcjfWX0_Q4y8BkjCBc5CihvC6LyrhyJWywk,800
101
- AeroViz/rawDataReader/script/VOC.py,sha256=sUn3ba_iYQ8Uy8qKNI-6qb1YvHsKN4G6BosBnLLMctc,1269
102
- AeroViz/rawDataReader/script/__init__.py,sha256=EXLjVwKN-wr3pMi-ILjiPH86ojwfoIif5vG2Q__DGZc,225
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.6.dist-info/LICENSE,sha256=E-679GpGGkp3irmtuJXiT7R4cNUA4cmsH6Q7QUgPf5U,1069
109
- AeroViz-0.1.6.dist-info/METADATA,sha256=Fp-P1AKOfLLX0c46uZms4TfEQ5ImonxFHThq5oHFs4c,5434
110
- AeroViz-0.1.6.dist-info/WHEEL,sha256=HiCZjzuy6Dw0hdX5R3LCFPDmFS4BWl8H-8W39XfmgX4,91
111
- AeroViz-0.1.6.dist-info/top_level.txt,sha256=BYsmTst_o4FZOKRP1XIvIMlN6mMTTXNfnSToL2_nVbQ,8
112
- AeroViz-0.1.6.dist-info/RECORD,,
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,,
@@ -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
@@ -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
@@ -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
@@ -1,4 +0,0 @@
1
- from .DataProc import DataProc
2
- from .SizeDist import SizeDist
3
-
4
- __all__ = ['DataProc', 'SizeDist']
@@ -1,2 +0,0 @@
1
- from .mie_theory import Mie_Q, Mie_MEE, Mie_PESD, internal, external, core_shell, sensitivity
2
- from .prop import properties
@@ -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")