AeroViz 0.1.3__py3-none-any.whl → 0.1.4__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 (121) hide show
  1. AeroViz/__init__.py +7 -5
  2. AeroViz/{config → data}/DEFAULT_DATA.csv +1 -1
  3. AeroViz/dataProcess/Chemistry/__init__.py +40 -40
  4. AeroViz/dataProcess/Chemistry/_calculate.py +15 -15
  5. AeroViz/dataProcess/Chemistry/_isoropia.py +72 -68
  6. AeroViz/dataProcess/Chemistry/_mass_volume.py +158 -161
  7. AeroViz/dataProcess/Chemistry/_ocec.py +109 -109
  8. AeroViz/dataProcess/Chemistry/_partition.py +19 -18
  9. AeroViz/dataProcess/Chemistry/_teom.py +9 -11
  10. AeroViz/dataProcess/Chemistry/isrpia.cnf +21 -0
  11. AeroViz/dataProcess/Optical/Angstrom_exponent.py +20 -0
  12. AeroViz/dataProcess/Optical/_IMPROVE.py +40 -41
  13. AeroViz/dataProcess/Optical/__init__.py +29 -44
  14. AeroViz/dataProcess/Optical/_absorption.py +21 -47
  15. AeroViz/dataProcess/Optical/_extinction.py +31 -25
  16. AeroViz/dataProcess/Optical/_mie.py +5 -7
  17. AeroViz/dataProcess/Optical/_mie_sd.py +89 -90
  18. AeroViz/dataProcess/Optical/_scattering.py +19 -20
  19. AeroViz/dataProcess/SizeDistr/__init__.py +39 -39
  20. AeroViz/dataProcess/SizeDistr/__merge.py +159 -158
  21. AeroViz/dataProcess/SizeDistr/_merge.py +155 -154
  22. AeroViz/dataProcess/SizeDistr/_merge_v1.py +162 -161
  23. AeroViz/dataProcess/SizeDistr/_merge_v2.py +153 -152
  24. AeroViz/dataProcess/SizeDistr/_merge_v3.py +327 -327
  25. AeroViz/dataProcess/SizeDistr/_merge_v4.py +273 -275
  26. AeroViz/dataProcess/SizeDistr/_size_distr.py +51 -51
  27. AeroViz/dataProcess/VOC/__init__.py +9 -9
  28. AeroViz/dataProcess/VOC/_potential_par.py +53 -55
  29. AeroViz/dataProcess/__init__.py +28 -6
  30. AeroViz/dataProcess/core/__init__.py +59 -65
  31. AeroViz/plot/__init__.py +7 -2
  32. AeroViz/plot/bar.py +126 -0
  33. AeroViz/plot/box.py +69 -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 +196 -0
  40. AeroViz/plot/scatter.py +165 -0
  41. AeroViz/plot/templates/__init__.py +2 -4
  42. AeroViz/plot/templates/ammonium_rich.py +34 -0
  43. AeroViz/plot/templates/contour.py +25 -25
  44. AeroViz/plot/templates/corr_matrix.py +86 -93
  45. AeroViz/plot/templates/diurnal_pattern.py +28 -26
  46. AeroViz/plot/templates/koschmieder.py +59 -123
  47. AeroViz/plot/templates/metal_heatmap.py +135 -37
  48. AeroViz/plot/timeseries/__init__.py +1 -0
  49. AeroViz/plot/timeseries/template.py +47 -0
  50. AeroViz/plot/timeseries/timeseries.py +324 -264
  51. AeroViz/plot/utils/__init__.py +2 -1
  52. AeroViz/plot/utils/_color.py +57 -57
  53. AeroViz/plot/utils/_unit.py +48 -48
  54. AeroViz/plot/utils/plt_utils.py +92 -0
  55. AeroViz/plot/utils/sklearn_utils.py +49 -0
  56. AeroViz/plot/utils/units.json +5 -0
  57. AeroViz/plot/violin.py +80 -0
  58. AeroViz/process/__init__.py +17 -17
  59. AeroViz/process/core/DataProc.py +9 -9
  60. AeroViz/process/core/SizeDist.py +81 -81
  61. AeroViz/process/method/PyMieScatt_update.py +488 -488
  62. AeroViz/process/method/mie_theory.py +231 -229
  63. AeroViz/process/method/prop.py +40 -40
  64. AeroViz/process/script/AbstractDistCalc.py +103 -103
  65. AeroViz/process/script/Chemical.py +168 -167
  66. AeroViz/process/script/IMPACT.py +40 -40
  67. AeroViz/process/script/IMPROVE.py +152 -152
  68. AeroViz/process/script/Others.py +45 -45
  69. AeroViz/process/script/PSD.py +26 -26
  70. AeroViz/process/script/PSD_dry.py +69 -70
  71. AeroViz/process/script/retrieve_RI.py +50 -51
  72. AeroViz/rawDataReader/__init__.py +53 -58
  73. AeroViz/rawDataReader/config/supported_instruments.py +155 -0
  74. AeroViz/rawDataReader/core/__init__.py +233 -356
  75. AeroViz/rawDataReader/script/AE33.py +17 -18
  76. AeroViz/rawDataReader/script/AE43.py +18 -21
  77. AeroViz/rawDataReader/script/APS_3321.py +30 -30
  78. AeroViz/rawDataReader/script/Aurora.py +23 -24
  79. AeroViz/rawDataReader/script/BC1054.py +36 -40
  80. AeroViz/rawDataReader/script/EPA_vertical.py +37 -9
  81. AeroViz/rawDataReader/script/GRIMM.py +16 -23
  82. AeroViz/rawDataReader/script/IGAC.py +90 -0
  83. AeroViz/rawDataReader/script/MA350.py +32 -39
  84. AeroViz/rawDataReader/script/Minion.py +103 -0
  85. AeroViz/rawDataReader/script/NEPH.py +69 -74
  86. AeroViz/rawDataReader/script/SMPS_TH.py +25 -25
  87. AeroViz/rawDataReader/script/SMPS_aim11.py +32 -32
  88. AeroViz/rawDataReader/script/SMPS_genr.py +31 -31
  89. AeroViz/rawDataReader/script/Sunset_OCEC.py +60 -0
  90. AeroViz/rawDataReader/script/TEOM.py +30 -28
  91. AeroViz/rawDataReader/script/Table.py +13 -14
  92. AeroViz/rawDataReader/script/VOC.py +26 -0
  93. AeroViz/rawDataReader/script/__init__.py +18 -20
  94. AeroViz/tools/database.py +64 -66
  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.3.dist-info → AeroViz-0.1.4.dist-info}/METADATA +5 -4
  99. AeroViz-0.1.4.dist-info/RECORD +112 -0
  100. AeroViz/plot/improve/__init__.py +0 -1
  101. AeroViz/plot/improve/improve.py +0 -240
  102. AeroViz/plot/optical/aethalometer.py +0 -77
  103. AeroViz/plot/templates/event_evolution.py +0 -65
  104. AeroViz/plot/templates/regression.py +0 -256
  105. AeroViz/plot/templates/scatter.py +0 -130
  106. AeroViz/plot/templates/templates.py +0 -398
  107. AeroViz/plot/utils/_decorator.py +0 -74
  108. AeroViz/rawDataReader/script/IGAC_TH.py +0 -104
  109. AeroViz/rawDataReader/script/IGAC_ZM.py +0 -90
  110. AeroViz/rawDataReader/script/OCEC_LCRES.py +0 -34
  111. AeroViz/rawDataReader/script/OCEC_RES.py +0 -28
  112. AeroViz/rawDataReader/script/VOC_TH.py +0 -30
  113. AeroViz/rawDataReader/script/VOC_ZM.py +0 -37
  114. AeroViz/rawDataReader/utils/__init__.py +0 -0
  115. AeroViz/rawDataReader/utils/config.py +0 -169
  116. AeroViz-0.1.3.dist-info/RECORD +0 -111
  117. /AeroViz/{config → data}/DEFAULT_PNSD_DATA.csv +0 -0
  118. /AeroViz/{config → rawDataReader/config}/__init__.py +0 -0
  119. {AeroViz-0.1.3.dist-info → AeroViz-0.1.4.dist-info}/LICENSE +0 -0
  120. {AeroViz-0.1.3.dist-info → AeroViz-0.1.4.dist-info}/WHEEL +0 -0
  121. {AeroViz-0.1.3.dist-info → AeroViz-0.1.4.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,112 @@
1
+ AeroViz/__init__.py,sha256=A5W6SR71uY_eW44Sh-Yk6blJQ_G1aHrkSzeP2YTPQc4,371
2
+ AeroViz/data/DEFAULT_DATA.csv,sha256=eeeyeh8vSLKkE5tAF0TYnUNOyQIH98VA41bJaAP204Y,2248526
3
+ AeroViz/data/DEFAULT_PNSD_DATA.csv,sha256=imLvLA80oYwo_jzXZtlQn5hZ76d47HUIlK2jp0tZPrg,2636511
4
+ AeroViz/dataProcess/__init__.py,sha256=D3rTVUiGfs_daGuaotVtbijOgLAp6HaRWchj-zoEnHw,828
5
+ AeroViz/dataProcess/Chemistry/__init__.py,sha256=vWlQVQqyX2R_qUQ8cLrIYWmdqLBaxbYwK3PaO7zRqIw,1986
6
+ AeroViz/dataProcess/Chemistry/_calculate.py,sha256=q7ojTFPok0vg8k_1PMECNdP5CPanR9NWQ4Rx5iTcHew,599
7
+ AeroViz/dataProcess/Chemistry/_isoropia.py,sha256=PJPdqErssUPnrksR6BocmgQch1DB7lULyge7diOq9uc,3304
8
+ AeroViz/dataProcess/Chemistry/_mass_volume.py,sha256=oqFjRDYZ1om0_kG4g8XNi2QpUPcHsukpnWKydQoNEVg,5394
9
+ AeroViz/dataProcess/Chemistry/_ocec.py,sha256=75r2EroxVrcp2tSHgNC9TAif_MeJeRlrFyo6DvCLemo,5957
10
+ AeroViz/dataProcess/Chemistry/_partition.py,sha256=tKhb6BJns46UiUlEq6Zq7ahYnvUJ_whY3tWE54C3bqU,1023
11
+ AeroViz/dataProcess/Chemistry/_teom.py,sha256=IiM-TrifWpQLTbKllG-4k4c3mvQulfcmjswWu6muCXA,486
12
+ AeroViz/dataProcess/Chemistry/isrpia.cnf,sha256=iWXTqsOZFmNrJxAI9nYuilZ9h6ru1icdPFVim7YKc_k,566
13
+ AeroViz/dataProcess/Optical/Angstrom_exponent.py,sha256=KSGM_hf2oUPsLoLuhYSRDK5zdekwce9KgqhzRnf2Y4g,706
14
+ AeroViz/dataProcess/Optical/_IMPROVE.py,sha256=_u0uyKC9ZQpB4uLMx3x8Dm5hSUMcdGUifBcC2bGaM9c,1675
15
+ AeroViz/dataProcess/Optical/__init__.py,sha256=h_IYhaum0DhK7Qw6lWFvjAEv7uAqLVVPEwU0V4hJnX4,1371
16
+ AeroViz/dataProcess/Optical/_absorption.py,sha256=pYHIoj_R23wKvxR4acUqqU9JXKY40wgsFvZH78rETrY,1234
17
+ AeroViz/dataProcess/Optical/_extinction.py,sha256=anUemSXmLvJi2CSxqTYgQCgUW4pSUqgZ0q0xZ4zs0zY,1189
18
+ AeroViz/dataProcess/Optical/_mie.py,sha256=K_I8NqRStCdExRVxq2rX5hQdvYmfKuu9JCkNtL1OzfE,352
19
+ AeroViz/dataProcess/Optical/_mie_sd.py,sha256=cbWSorfG-l92csaXsZJ7005f8ij2H_VZopIhNPCwx70,4812
20
+ AeroViz/dataProcess/Optical/_scattering.py,sha256=w5xXXOfafV9a_dXY60YqTyzFDZppjBJeLcKl5PeCQe4,961
21
+ AeroViz/dataProcess/SizeDistr/__init__.py,sha256=PJVAdb-v1q8h38JXIkpVcr6q4mg38V26sk4xD_2Mjlc,2186
22
+ AeroViz/dataProcess/SizeDistr/__merge.py,sha256=A-ZmduUA9a0nVM8szhG1AWhsfUPu2UhGIaqFLcmg7Lk,9422
23
+ AeroViz/dataProcess/SizeDistr/_merge.py,sha256=CyZwUc2M4lL-OE74e8mXq41nC6X0LJTAV8TwpO3fS2o,9176
24
+ AeroViz/dataProcess/SizeDistr/_merge_v1.py,sha256=6Anb8DszoatK66tc9ccA6ZApbqtL7pZRPR5TKHj-Tbs,9526
25
+ AeroViz/dataProcess/SizeDistr/_merge_v2.py,sha256=8OzUKw7hTg-yuQBipuFKgBS_7c7zbApN_BNr00G8q9c,9046
26
+ AeroViz/dataProcess/SizeDistr/_merge_v3.py,sha256=HN2ARFmeWOawOWRPPv_pHEGBBZNgXVbH4dDTxcN7rdY,18749
27
+ AeroViz/dataProcess/SizeDistr/_merge_v4.py,sha256=b8RVAievGIOLrmJHJXRsKXQ1tkMkm6rx43S7XAfeXE4,16228
28
+ AeroViz/dataProcess/SizeDistr/_size_distr.py,sha256=o5fTwLH7j9j5129e3uciSJrOR8AGCN3tkAyGffoPENg,3127
29
+ AeroViz/dataProcess/VOC/__init__.py,sha256=3W5G28UowKVfwsj-tFlxdsCEzXSMxrlrBjpiqUfneaA,290
30
+ AeroViz/dataProcess/VOC/_potential_par.py,sha256=H_9EoDpbz6dZ193FuJEsoaOQ7jCDz9LqPqhEce_nOFQ,3065
31
+ AeroViz/dataProcess/VOC/voc_par.json,sha256=cJF0ynKCMccIruHp7YJ19fZmXZV6ASlLszCJCqduDJQ,7077
32
+ AeroViz/dataProcess/core/__init__.py,sha256=FhGwqlP8ZwXZQS0LjH0YOz2g1Q2yJniUUhRZ_jDOQ6k,2707
33
+ AeroViz/plot/__init__.py,sha256=BxoarxAeDHNdMHizS1bCTwV8NEuUCgeDB75GbSEsNWs,394
34
+ AeroViz/plot/bar.py,sha256=cSPKJLWGifCzICCZVPcbZtrDrea_AStlwSli9-b-lsA,4246
35
+ AeroViz/plot/box.py,sha256=8zDd8jYndSv5f0P1lFeX0m7VWYh9okYgJTClh2Lj7Dg,2115
36
+ AeroViz/plot/pie.py,sha256=PVOqc_tAMlfjojTggP7HPL9Nk3ImigETo_EUFD6K2BY,7421
37
+ AeroViz/plot/regression.py,sha256=mTCNrCAYvH7QjIb_5WlltCR1Kqwer1anpGEsxmO2S3o,7292
38
+ AeroViz/plot/scatter.py,sha256=2Q_Um7Ai-pym2nUiMk6tY_zEXwbKE-BpkgrDkMyNbYA,6293
39
+ AeroViz/plot/violin.py,sha256=pU2Z2yTWocEtImmCAmbtn0WvXtUOrnCGOdDOrLxjooU,2689
40
+ AeroViz/plot/distribution/__init__.py,sha256=nhbIegWczkuEfWsE7-2jfF0dnpmPDzJJzjq8Fuh6q5k,28
41
+ AeroViz/plot/distribution/distribution.py,sha256=sAjqtqKavFwQqI8PGPFnpvZFSU-w2UKjcTTC5L91f4E,20595
42
+ AeroViz/plot/meteorology/__init__.py,sha256=hhGfQE3IUzS3Eaju_nO7LomPPHJnd-zAAZZweXOXs2M,27
43
+ AeroViz/plot/meteorology/meteorology.py,sha256=h5KiaReatt238FXZyGjP9CAMkzTF1aVjOaFAGq3CKRY,11197
44
+ AeroViz/plot/optical/__init__.py,sha256=5S2WPq8NouPYgc46c1XBveSL8Cxs3w8wNYN7vWIpB-s,23
45
+ AeroViz/plot/optical/optical.py,sha256=xtuJuaonyM4OUS_BlkxKudLZKEteCS1u_-Svj3lQPco,13728
46
+ AeroViz/plot/templates/__init__.py,sha256=VXp73SqrSF1WR9WYhHpHtbhvFcb1CR4JeV1tPQvCEEI,227
47
+ AeroViz/plot/templates/ammonium_rich.py,sha256=a46rfwhSZ3LIj71LxdOnklAFyy6Xe_VQ-kh1komnZ5g,1225
48
+ AeroViz/plot/templates/contour.py,sha256=fAM6Wn_EmENQM1IW6KJpwmLva6D9P2dEAaK6cNQBtdQ,1678
49
+ AeroViz/plot/templates/corr_matrix.py,sha256=VeiwBwmg_v6LYslJvhSqweiLBheR3vGfPYxrtHoqJRI,3507
50
+ AeroViz/plot/templates/diurnal_pattern.py,sha256=Vp8nDzSe95ppZBCDkFXnpUEh1cb-19yDS3H0qftoPaw,1434
51
+ AeroViz/plot/templates/koschmieder.py,sha256=XmsYn8x9lu2BgN1FXKHb0quZdRw7Etv1dT5LBjBB0ok,3199
52
+ AeroViz/plot/templates/metal_heatmap.py,sha256=ngqJFiOPCoExPKv-lHvgB1XCSr9fF_jSKmx4VwjUUXQ,4961
53
+ AeroViz/plot/timeseries/__init__.py,sha256=LQ_aE32pvp5ouC--BRa0NwSJ48DYO3rFaOt4AKGmn_s,50
54
+ AeroViz/plot/timeseries/template.py,sha256=E9dxaH_Y5QxnkIHK4VH59IVShnf4i1-TT_QE4NqVqrQ,1460
55
+ AeroViz/plot/timeseries/timeseries.py,sha256=EitNnjleHj3Qu1PBHClWNi9kCgJ8tULGZSicS3xhoZw,14626
56
+ AeroViz/plot/utils/__init__.py,sha256=sxp3nfUnyVIIXYd-F874gEHkhQiDnMPDE1nJ_Z98270,104
57
+ AeroViz/plot/utils/_color.py,sha256=Vhjo-v4UWFME1JbbBR_Ro8FRj6dHB2O5Sud_9lpdu_U,2797
58
+ AeroViz/plot/utils/_unit.py,sha256=Abum0WDnq08DzkSoxkKvBc0mYKo8izIDmgduPo9Q27A,1671
59
+ AeroViz/plot/utils/fRH.json,sha256=t-2ux4TLOYAB-4jJ72LSM4jv1jk9XkaxKYNMDepMHIg,6038
60
+ AeroViz/plot/utils/plt_utils.py,sha256=7Au3r2-7AZQmzrO2OfcyTFomJRLHgu1Npb7wxQqUvzY,3438
61
+ AeroViz/plot/utils/sklearn_utils.py,sha256=hKFfkVkYLRxkIDKvO9COHXwhjD_UWqQigdT3mDToni4,2098
62
+ AeroViz/plot/utils/units.json,sha256=JKcqvLA6dkc8REV_NhX85Jl9LA4iAZxzw9RJp6JTla0,2965
63
+ AeroViz/process/__init__.py,sha256=vqXO0vhowU9yNW5tnVYNg3ceBxLt96PgBNkZ2KUxKXw,1309
64
+ AeroViz/process/core/DataProc.py,sha256=6MBDcHyQmVU16Z0oDo0GItvhU5f7fWLXFMGqUyoW1eQ,419
65
+ AeroViz/process/core/SizeDist.py,sha256=V6CpxTRfWjsZ8GwIEOqyKJ8_qcz7dO0ZmfHQvR6SgW4,2097
66
+ AeroViz/process/core/__init__.py,sha256=WmVSFDx97urX0WPA8dtRVoQF04IDaU-IgxHK979-kM8,98
67
+ AeroViz/process/method/PyMieScatt_update.py,sha256=g3vlzATjzYSYZd3LwmwxEmdkpo4cHJ3KY4rePY4jwZk,21065
68
+ AeroViz/process/method/__init__.py,sha256=_yxoNAbbI82ORhrVsi-6x8vPnWQNHavjZUXy-ioZ2wg,123
69
+ AeroViz/process/method/mie_theory.py,sha256=EC3SsUaq5G3SdQyPMQxcosbEokqAgJw-4Gz6moJiOsk,8666
70
+ AeroViz/process/method/prop.py,sha256=7f18SOkkLgDiY_g1c1We8g-3WDJJIFcxkfR4F99jUgc,1845
71
+ AeroViz/process/script/AbstractDistCalc.py,sha256=wXF7OA634m_i-Y79lU4THj0c0yZx5NUtLNvORH1FWZg,5351
72
+ AeroViz/process/script/Chemical.py,sha256=jjBIdILe0fO5Rqidb4pg3CP6qmMLqFvst-ZSz8mbb7Q,6413
73
+ AeroViz/process/script/IMPACT.py,sha256=Zz1GRQLJopNQGw5qUTdWl7Zxy_CBnFBsL1B-CCemaDQ,1520
74
+ AeroViz/process/script/IMPROVE.py,sha256=5FNl33S_785J7CsSue_CvZP58TWevpwGr2ePQM6qScw,5709
75
+ AeroViz/process/script/Others.py,sha256=TOtSKVZ9Z-zX1LFfE4p36H0hMjfmyyQw_Xaeq8HgMBk,2325
76
+ AeroViz/process/script/PSD.py,sha256=unSvyHp1RqgQecY-Lab-wRFGP2u45blSO4NCNTaxcRQ,3721
77
+ AeroViz/process/script/PSD_dry.py,sha256=P9rSQVA78jHXrY2bDiC1iQvG0w9Js8QiBNfooPOXzfY,3269
78
+ AeroViz/process/script/__init__.py,sha256=QExUHHK79oiwZXvk8u00P8rLwWhGOc1fpZY2Fx8Vkxg,188
79
+ AeroViz/process/script/retrieve_RI.py,sha256=9OQJU1w6VzVqKz00e9GdWswRAnaETe_1meAHp5N_s54,2711
80
+ AeroViz/rawDataReader/__init__.py,sha256=ytqVoXXYk1xeuyqdo2VJkC3JbIA5RmBz20uzgBnMKW0,1881
81
+ AeroViz/rawDataReader/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
82
+ AeroViz/rawDataReader/config/supported_instruments.py,sha256=3h25eUGysciCzvDeqReDr7YtYLC8fKAcU903FGiGs9g,4728
83
+ AeroViz/rawDataReader/core/__init__.py,sha256=Ne2_eAzasAcwrWmG-NU35cJy1QMkLU1-iWEPLGZdcqU,10304
84
+ AeroViz/rawDataReader/script/AE33.py,sha256=uwadLYg3RsxW1Yhdtb83qy5lWTTBpliYgfYv4GXV-Js,1110
85
+ AeroViz/rawDataReader/script/AE43.py,sha256=-gdpPJg6EHnU7mKNNCsDe-aytbDlR_qyRWo_kgg0Ss8,1058
86
+ AeroViz/rawDataReader/script/APS_3321.py,sha256=6fYwMPLG0w2RduNqIelwQ3Q2rsiJUZKQUetkyaDg0BU,1696
87
+ AeroViz/rawDataReader/script/Aurora.py,sha256=I2xGA-HwE-mlSqZZQ_GHRM3OxE27L3uvbEXfK0p58ig,1238
88
+ AeroViz/rawDataReader/script/BC1054.py,sha256=XD3CZjg9rd4JzQEF4MCNqyRP1931JhMi-pGkgE7B-Ig,1488
89
+ AeroViz/rawDataReader/script/EPA_vertical.py,sha256=AUXbRlnO2T-CCcBdvyMS4TxYGSp3RI679aZH90thh6k,1671
90
+ AeroViz/rawDataReader/script/GRIMM.py,sha256=wvWDksAewCqYNNMR3IuxilGrzooQWzzWFK2b1CbxWjo,950
91
+ AeroViz/rawDataReader/script/IGAC.py,sha256=3F0gLz0-z5_Sj6JQmO4wklrjfRHkX-EnHfBiioBpcvI,2950
92
+ AeroViz/rawDataReader/script/MA350.py,sha256=yjg4WYGpPiZbtlF1gKfrWF1WS-nbGPTpbKZ3ItixOPs,1289
93
+ AeroViz/rawDataReader/script/Minion.py,sha256=x29UQvjHZbWQigSJuNuGGOyQQxP9O4kPSJ2S1ixR5XM,3942
94
+ AeroViz/rawDataReader/script/NEPH.py,sha256=hTWzZmoBeTm7qKkVFYuyC07iDYOmAexamcA7gfdd2Ak,2806
95
+ AeroViz/rawDataReader/script/SMPS_TH.py,sha256=-ME3MxXv2jWBSwsO3uDcBe28sWcrJ9eJpqcS5VMva2A,1470
96
+ AeroViz/rawDataReader/script/SMPS_aim11.py,sha256=zYE482FQICuFVDo0KtpKL6lBOfdXaxObL7ep2I_ufeE,1634
97
+ AeroViz/rawDataReader/script/SMPS_genr.py,sha256=vFNJXsXpUmZhfuobaFsfypVU98iA4bWE3Tk32LTIh1Q,1611
98
+ AeroViz/rawDataReader/script/Sunset_OCEC.py,sha256=O-o8It8XtVDc50zVT043OqdG_eHkPS229-zEt5WR9cs,1953
99
+ AeroViz/rawDataReader/script/TEOM.py,sha256=pFxks2To9y7n_OlpbrGPcRJEmzK-Y_oVoccHvQqQMg8,1798
100
+ AeroViz/rawDataReader/script/Table.py,sha256=piLBiBhLeqR5Wmd9LLma6ubEbGa--3rdrvRCrQa8NPM,854
101
+ AeroViz/rawDataReader/script/VOC.py,sha256=tl6rzqfVU5ofa2R3Ax-_1i37Lno9rUuMhlylPObYFFY,716
102
+ AeroViz/rawDataReader/script/__init__.py,sha256=UndjtWjvJHMma7WtArL5sF9UHiQsanx5sT2otQDqzng,270
103
+ AeroViz/tools/__init__.py,sha256=tPUmCI9Fi1LgE-QSVnzan5jRdYQBIENH9PRDXB_DhTw,109
104
+ AeroViz/tools/database.py,sha256=05VzjJyhlRrhsZdhfFQ__7CxGm4MdFekLjz3_Is5h9U,3430
105
+ AeroViz/tools/dataclassifier.py,sha256=_wpv0PlZ5EGkcNqHxfFtdEsYvHP5FVE8sMZXikhm_YE,4492
106
+ AeroViz/tools/dataprinter.py,sha256=Jq2Yztpa9YCOeLDVTrRs7PhSdNIPhEAexVj1YSuJ7hY,2249
107
+ AeroViz/tools/datareader.py,sha256=iTQ0U8hdNMjCdbiH7EiKW10UEoxzxXRHc4s5_1IikJo,1933
108
+ AeroViz-0.1.4.dist-info/LICENSE,sha256=E-679GpGGkp3irmtuJXiT7R4cNUA4cmsH6Q7QUgPf5U,1069
109
+ AeroViz-0.1.4.dist-info/METADATA,sha256=RQchK9CdQftok3LH-Cc3gfbzC5g-R-7UWzVQl7VagMA,5323
110
+ AeroViz-0.1.4.dist-info/WHEEL,sha256=HiCZjzuy6Dw0hdX5R3LCFPDmFS4BWl8H-8W39XfmgX4,91
111
+ AeroViz-0.1.4.dist-info/top_level.txt,sha256=BYsmTst_o4FZOKRP1XIvIMlN6mMTTXNfnSToL2_nVbQ,8
112
+ AeroViz-0.1.4.dist-info/RECORD,,
@@ -1 +0,0 @@
1
- from .improve import *
@@ -1,240 +0,0 @@
1
- import matplotlib.pyplot as plt
2
- import numpy as np
3
- import pandas as pd
4
- from matplotlib.pyplot import Figure, Axes
5
- from pandas import DataFrame, read_json
6
- from scipy.optimize import curve_fit
7
- from pathlib import Path
8
-
9
- from AeroViz import plot
10
- from AeroViz.plot.utils import *
11
- from AeroViz.tools import DataBase, DataReader, DataClassifier
12
-
13
- # TODO: this file has to be reorganized
14
-
15
- __all__ = ['chemical_enhancement',
16
- 'ammonium_rich',
17
- 'pie_IMPROVE',
18
- 'MLR_IMPROVE',
19
- 'fRH_plot',
20
- ]
21
-
22
-
23
- @set_figure
24
- def chemical_enhancement(data_set: DataFrame = None,
25
- data_std: DataFrame = None,
26
- ax: Axes | None = None,
27
- **kwargs
28
- ) -> tuple[Figure, Axes]:
29
- fig, ax = plt.subplots() if ax is None else (ax.get_figure(), ax)
30
-
31
- ser_grp_sta, ser_grp_sta_std = DataClassifier(DataBase('/Users/chanchihyu/NTU/2020能見度計畫/data/All_data.csv'),
32
- by='State')
33
- species = ['AS', 'AN', 'POC', 'SOC', 'Soil', 'SS', 'EC', 'ALWC']
34
- data_set, data_std = ser_grp_sta.loc[:, species], ser_grp_sta_std.loc[:, species]
35
-
36
- width = 0.20
37
- block = width / 4
38
-
39
- x = np.array([1, 2, 3, 4, 5, 6, 7])
40
- for i, state in enumerate(['Clean', 'Transition', 'Event']):
41
- val = np.array(data_set.iloc[i, :-1])
42
- std = (0,) * 7, np.array(data_std.iloc[i, :-1])
43
-
44
- plt.bar(x + (i + 1) * (width + block), val, yerr=std, width=width, color=Color.colors3[:-1],
45
- alpha=0.6 + (0.2 * i),
46
- edgecolor=None, capsize=None, label=state)
47
-
48
- ax.set(xlabel=r'$\bf Chemical\ species$',
49
- ylabel=r'$\bf Mass\ concentration\ ({\mu}g/m^3)$',
50
- xticks=x + 2 * (width + block),
51
- xticklabels=species,
52
- ylim=(0, 25),
53
- title=r'$\bf Chemical\ enhancement$')
54
-
55
- ax.vlines(8, 0, 25, linestyles='--', colors='k')
56
-
57
- ax2 = ax.twinx()
58
- for i, state in enumerate(['Clean', 'Transition', 'Event']):
59
- val = np.array(data_set.iloc[i, -1])
60
- std = np.array([[0], [data_std.iloc[i, -1]]])
61
- plt.bar(8 + (i + 1) * (width + block), val, yerr=std, width=width, color='#96c8e6',
62
- alpha=0.6 + (0.2 * i), edgecolor=None, capsize=None, label=state)
63
-
64
- ax2.set(ylabel=r'$\bf Mass\ concentration\ ({\mu}g/m^3)$',
65
- ylim=(0, 100),
66
- xticks=x + 2 * (width + block),
67
- xticklabels=species
68
- )
69
-
70
- a = (np.array(data_set.loc['Event']) + np.array(data_set.loc['Transition'])) / 2
71
- b = (np.array(data_set.loc['Transition']) + np.array(data_set.loc['Clean'])) / 2
72
- c = np.array(data_set.loc['Event']) / np.array(data_set.loc['Transition'])
73
- d = np.array(data_set.loc['Transition']) / np.array(data_set.loc['Clean'])
74
-
75
- for i, (posa, posb, vala, valb) in enumerate(zip(a, b, c, d)):
76
- if i < 7:
77
- ax.text(i + 1.5, posa, '{:.2f}'.format(vala), fontsize=6, weight='bold', zorder=1)
78
- ax.text(i + 1.25, posb, '{:.2f}'.format(valb), fontsize=6, weight='bold', zorder=1)
79
- else:
80
- ax2.text(i + 1.5, posa, '{:.2f}'.format(vala), fontsize=6, weight='bold', zorder=1)
81
- ax2.text(i + 1.25, posb, '{:.2f}'.format(valb), fontsize=6, weight='bold', zorder=1)
82
-
83
- plt.show()
84
-
85
- return fig, ax
86
-
87
-
88
- @set_figure
89
- def ammonium_rich(df: DataFrame,
90
- **kwargs
91
- ) -> tuple[Figure, Axes]:
92
- df = df[['NH4+', 'SO42-', 'NO3-', 'PM25']].dropna().copy().div([18, 96, 62, 1])
93
- df['required_ammonium'] = df['NO3-'] + 2 * df['SO42-']
94
-
95
- fig, ax = plt.subplots()
96
-
97
- scatter = ax.scatter(df['required_ammonium'].to_numpy(), df['NH4+'].to_numpy(), c=df['PM25'].to_numpy(),
98
- vmin=0, vmax=70, cmap='jet', marker='o', s=10, alpha=1)
99
-
100
- ax.axline((0, 0), slope=1., color='k', lw=2, ls='--', alpha=0.5, label='1:1')
101
- plt.text(0.97, 0.97, r'$\bf 1:1\ Line$', color='k', ha='right', va='top', transform=ax.transAxes)
102
-
103
- ax.set(xlim=(0, 1.2),
104
- ylim=(0, 1.2),
105
- xlabel=r'$\bf NO_{3}^{-}\ +\ 2\ \times\ SO_{4}^{2-}\ (mole\ m^{-3})$',
106
- ylabel=r'$\bf NH_{4}^{+}\ (mole\ m^{-3})$',
107
- title=kwargs.get('title', ''))
108
-
109
- color_bar = plt.colorbar(scatter, label=Unit('PM25'), extend='both')
110
-
111
- # fig.savefig(f'Ammonium_rich_{title}')
112
- plt.show()
113
-
114
- return fig, ax
115
-
116
-
117
- def pie_IMPROVE():
118
- Species1 = ['AS_ext_dry', 'AN_ext_dry', 'OM_ext_dry', 'Soil_ext_dry', 'SS_ext_dry', 'EC_ext_dry']
119
- Species2 = ['AS_ext_dry', 'AN_ext_dry', 'OM_ext_dry', 'Soil_ext_dry', 'SS_ext_dry', 'EC_ext_dry', 'ALWC_ext']
120
- Species3 = ['AS_ext', 'AN_ext', 'OM_ext', 'Soil_ext', 'SS_ext', 'EC_ext']
121
-
122
- ser_grp_sta, _ = DataClassifier(DataBase(), by='State')
123
-
124
- ext_dry_dict = ser_grp_sta.loc[:, Species1]
125
- ext_amb_dict = ser_grp_sta.loc[:, Species2]
126
- ext_mix_dict = ser_grp_sta.loc[:, Species3]
127
-
128
- plot.donuts(data_set=ext_dry_dict, labels=['AS', 'AN', 'OM', 'Soil', 'SS', 'BC'], unit='Extinction')
129
- plot.donuts(data_set=ext_mix_dict, labels=['AS', 'AN', 'OM', 'Soil', 'SS', 'BC'], unit='Extinction')
130
- plot.donuts(data_set=ext_amb_dict, labels=['AS', 'AN', 'OM', 'Soil', 'SS', 'BC', 'ALWC'],
131
- unit='Extinction', colors=Color.colors2)
132
-
133
-
134
- def MLR_IMPROVE(**kwargs):
135
- """
136
- Perform multiple linear regression analysis and generate plots based on IMPROVE dataset.
137
-
138
- Parameters
139
- ----------
140
- **kwargs : dict
141
- Additional keyword arguments for customization.
142
-
143
- Returns
144
- -------
145
- None
146
-
147
- Examples
148
- --------
149
- Example usage of MLR_IMPROVE function:
150
-
151
- >>> MLR_IMPROVE()
152
-
153
- Notes
154
- -----
155
- This function performs multiple linear regression analysis on the IMPROVE dataset and generates plots for analysis.
156
-
157
- - The function first selects specific species from the dataset and drops NaN values.
158
- - It calculates a 'Localized' value based on a multiplier and the sum of selected species.
159
- - Data from 'modified_IMPROVE.csv' and 'revised_IMPROVE.csv' are read and concatenated with the dataset.
160
- - Statistical analysis is performed using DataClassifier to calculate mean and standard deviation.
161
- - Plots are generated using linear_regression for Extinction vs. Revised/Modified/Localized and Pie.donuts for a
162
- pie chart showing the distribution of species based on Extinction.
163
-
164
- """
165
- species = ['Extinction', 'Scattering', 'Absorption',
166
- 'total_ext_dry', 'AS_ext_dry', 'AN_ext_dry', 'OM_ext_dry', 'Soil_ext_dry', 'SS_ext_dry', 'EC_ext_dry',
167
- 'AS', 'AN', 'POC', 'SOC', 'Soil', 'SS', 'EC', 'OM']
168
-
169
- df = DataBase('/Users/chanchihyu/NTU/2020能見度計畫/data/All_data.csv')[species].dropna().copy()
170
-
171
- # multiple_linear_regression(df, x=['AS', 'AN', 'POC', 'SOC', 'Soil', 'SS'], y='Scattering', add_constant=True)
172
- # multiple_linear_regression(df, x=['POC', 'SOC', 'EC'], y='Absorption', add_constant=True)
173
- # multiple_linear_regression(df, x=['AS', 'AN', 'POC', 'SOC', 'Soil', 'SS', 'EC'], y='Extinction', add_constant=False)
174
-
175
- multiplier = [2.675, 4.707, 11.6, 7.272, 0, 0.131, 10.638]
176
- df['Localized'] = df[['AS', 'AN', 'POC', 'SOC', 'Soil', 'SS', 'EC']].mul(multiplier).sum(axis=1)
177
- # TODO: remove name
178
- modify_IMPROVE = DataReader('modified_IMPROVE.csv')['total_ext_dry'].rename('Modified')
179
- revised_IMPROVE = DataReader('revised_IMPROVE.csv')['total_ext_dry'].rename('Revised')
180
-
181
- df = pd.concat([df, revised_IMPROVE, modify_IMPROVE], axis=1)
182
-
183
- n_df = df[['AS', 'AN', 'POC', 'SOC', 'Soil', 'SS', 'EC']].mul(multiplier)
184
- mean, std = DataClassifier(n_df, 'State')
185
-
186
- ser_grp_sta, _ = DataClassifier(DataBase(), by='State')
187
- mass_comp = ser_grp_sta.loc[:, ['AS', 'AN', 'POC', 'SOC', 'Soil', 'SS', 'EC']]
188
-
189
- # plot
190
- plot.linear_regression(df, x='Extinction', y=['Revised', 'Modified', 'Localized'], xlim=[0, 400], ylim=[0, 400],
191
- regression=True, diagonal=True)
192
- plot.donuts(data_set=mass_comp, labels=['AS', 'AN', 'POC', 'SOC', 'Soil', 'SS', 'EC'],
193
- unit='PM25', colors=Color.colors3)
194
- plot.donuts(mean, labels=['AS', 'AN', 'POC', 'SOC', 'Soil', 'SS', 'EC'], unit='Extinction', colors=Color.colors3)
195
-
196
-
197
- @set_figure
198
- def fRH_plot(**kwargs) -> tuple[Figure, Axes]:
199
- frh = read_json(Path(__file__).parent.parent / 'utils' / 'fRH.json')
200
-
201
- def fitting_func(RH, a, b, c):
202
- f = a + b * (RH / 100) ** c
203
- return f
204
-
205
- x = frh.index.to_numpy()
206
- y = frh['fRHs'].to_numpy()
207
-
208
- result = curve_fit(fitting_func, x, y)
209
- params = result[0].tolist()
210
- val_fit = fitting_func(x, *params)
211
-
212
- fig, ax = plt.subplots(figsize=(3, 3))
213
-
214
- ax.plot(frh.index, frh['fRH'], 'k-o', ms=2, label='$f(RH)_{original}$')
215
- ax.plot(frh.index, frh['fRHs'], 'g-o', ms=2, label='$f(RH)_{small\\ mode}$')
216
- ax.plot(frh.index, frh['fRHl'], 'r-o', ms=2, label='$f(RH)_{large\\ mode}$')
217
- ax.plot(frh.index, frh['fRHSS'], 'b-o', ms=2, label='$f(RH)_{sea\\ salt}$')
218
-
219
- ax.set(xlim=(0, 100),
220
- ylim=(1, None),
221
- xlabel='$RH (\\%)$',
222
- ylabel='$f(RH)$',
223
- title=f'$Hygroscopic\\ growth\\ factor$'
224
- )
225
-
226
- ax.grid(axis='y', color='gray', linestyle='dashed', linewidth=0.4, alpha=0.4)
227
-
228
- ax.legend()
229
-
230
- plt.show()
231
- # fig.savefig('fRH_plot')
232
-
233
- return fig, ax
234
-
235
-
236
- if __name__ == '__main__':
237
- # chemical_enhancement()
238
- # MLR_IMPROVE()
239
- # ammonium_rich()
240
- fRH_plot()
@@ -1,77 +0,0 @@
1
- import matplotlib.pyplot as plt
2
- import numpy as np
3
- from pandas import date_range
4
-
5
- from AeroViz.plot.utils import *
6
-
7
- __all__ = ['plot_MA350',
8
- 'plot_MA3502',
9
- 'plot_day_night']
10
-
11
-
12
- @set_figure(figsize=(15, 5))
13
- def plot_MA350(df, **kwargs):
14
- fig, ax = plt.subplots()
15
-
16
- # ax.scatter(df.index, df['UV BCc'], marker='o', c='purple', alpha=0.5, label='UV BCc')
17
- # ax.scatter(df.index, df['Blue BCc'], c='b', alpha=0.5, label='Blue BCc')
18
- # ax.scatter(df.index, df['Green BCc'], c='g', alpha=0.5, label='Green BCc')
19
- # ax.scatter(df.index, df['Red BCc'], c='r', alpha=0.5, label='Red BCc')
20
- mean, std = round(df.mean(), 2), round(df.std(), 2)
21
-
22
- label1 = rf'$MA350-0171\ :\;{mean["MA350_0171 IR BCc"]}\;\pm\;{std["MA350_0171 IR BCc"]}\;(ng/m^3)$'
23
- label2 = rf'$MA350-0176\ :\;{mean["MA350_0176 IR BCc"]}\;\pm\;{std["MA350_0176 IR BCc"]}\;(ng/m^3)$'
24
- label3 = rf'$BC-1054\ :\;{mean["BC1054 IR BCc"]}\;\pm\;{std["BC1054 IR BCc"]}\;(ng/m^3)$'
25
- ax.scatter(df.index, df['MA350_0171 IR BCc'], s=10, ls='-', marker='o', c='#a3b18a', alpha=0.5, label=label1)
26
- ax.scatter(df.index, df['MA350_0176 IR BCc'], s=10, ls='-', marker='o', c='#3a5a40', alpha=0.5, label=label2)
27
- ax.scatter(df.index, df['BC1054 IR BCc'], s=10, ls='-', marker='o', c='g', alpha=0.5, label=label3)
28
- ax.legend(prop={'weight': 'bold'}, loc='upper left')
29
-
30
- st_tm, fn_tm = df.index[0], df.index[-1]
31
- tick_time = date_range(st_tm, fn_tm, freq=kwargs.get('freq', '10d'))
32
-
33
- ax.set(xlabel=kwargs.get('xlabel', ''),
34
- ylabel=kwargs.get('ylabel', r'$BC\ (ng/m^3)$'),
35
- xticks=kwargs.get('xticks', tick_time),
36
- xticklabels=kwargs.get('xticklabels', [_tm.strftime("%F") for _tm in tick_time]),
37
- xlim=kwargs.get('xlim', (st_tm, fn_tm)),
38
- ylim=kwargs.get('ylim', (0, None)),
39
- )
40
-
41
-
42
- @set_figure
43
- def plot_MA3502(df):
44
- fig, ax = plt.subplots()
45
-
46
- bins = np.array([375, 470, 528, 625, 880])
47
- vals = df.dropna().iloc[:, -5:].values
48
-
49
- ax.boxplot(vals, positions=bins, widths=20,
50
- showfliers=False, showmeans=True, meanline=True, patch_artist=True,
51
- boxprops=dict(facecolor='#f2c872', alpha=.7),
52
- meanprops=dict(color='#000000', ls='none'),
53
- medianprops=dict(ls='-', color='#000000'))
54
-
55
- ax.set(xlim=(355, 900),
56
- ylim=(0, None),
57
- xlabel=r'$\lambda\ (nm)$',
58
- ylabel=r'$Absorption\ (1/Mm)$', )
59
-
60
-
61
- @set_figure(figsize=(6, 5))
62
- def plot_day_night(df):
63
- # Group by hour of day and calculate mean
64
- df_grouped = df.groupby(df.index.hour).mean()
65
-
66
- # Create figure and plot
67
- fig, ax = plt.subplots()
68
- ax.plot(df_grouped.index, df_grouped['MA350_0171 IR BCc'], marker='o', c='k', alpha=0.5, label='MA350-0171')
69
- ax.plot(df_grouped.index, df_grouped['MA350_0176 IR BCc'], marker='o', c='r', alpha=0.5, label='MA350-0176')
70
- ax.plot(df_grouped.index, df_grouped['BC1054 IR BCc'], marker='o', c='b', alpha=0.5, label='BC-1054')
71
-
72
- ax.set(xlim=(0, 23),
73
- xlabel='Hour of Day',
74
- ylabel=r'$BC\ (ng/m^3)$',
75
- title=f'Diurnal pattern', )
76
-
77
- ax.legend()
@@ -1,65 +0,0 @@
1
- from os.path import join as pth
2
-
3
- import matplotlib.pyplot as plt
4
- import numpy as np
5
- from pandas import date_range, read_csv
6
-
7
- from AeroViz.plot.utils import *
8
-
9
- # TODO:
10
-
11
- # read csv file
12
- blh = read_csv(pth('事件分析.csv'), parse_dates=['Time'], index_col='Time')
13
-
14
-
15
- @set_figure(figsize=(12, 5))
16
- def event_evolution(_df, **kwargs):
17
- print(f'Plot : {_df.month[0]}')
18
-
19
- st_tm, fn_tm = _df.index[0], _df.index[-1]
20
- tick_time = date_range(st_tm, fn_tm, freq='1d') # set tick
21
-
22
- # seperate day and night
23
- _df_day = _df.between_time('6:00', '17:00').reindex(date_range(st_tm, fn_tm, freq='1h'))
24
- _df_night = _df.between_time('18:00', '5:00').reindex(date_range(st_tm, fn_tm, freq='1h'))
25
-
26
- ## plot
27
- fig, ax = plt.subplots()
28
-
29
- ## plot background
30
- shade_value, _ = np.meshgrid(_df['PM2.5'], np.arange((1., 2500), 100))
31
- ax.pcolormesh(_df.index, np.arange((1., 2500), 100), shade_value, cmap='binary', vmin=0, vmax=300,
32
- shading='auto')
33
-
34
- ## plot day and night
35
- ld = ax.scatter(_df.index[0:], _df_day['Ext'], s=50, c='#73b9ff', label='Day Ext', marker='o', alpha=.7)
36
- ln = ax.scatter(_df.index[0:], _df_night['Ext'], s=50, c='#00238c', label='Night Ext', marker='o', alpha=.7)
37
-
38
- ax2 = ax.twinx()
39
- # ld, = ax2.plot(_df_day['VC'],c='#FF9797',label='day 06:00~18:00')
40
- # ln, = ax2.plot(_df_night['VC'],c='#FF0000',label='night 18:00~06:00')
41
- ld2 = ax2.scatter(_df.index, _df_day['VC'], s=50, c='#FF9797', label='Day VC', marker='o', alpha=.5)
42
- ln2 = ax2.scatter(_df.index, _df_night['VC'], s=50, c='#FF0000', label='Night VC', marker='o', alpha=.5)
43
-
44
- # add legend on the first axes
45
- ax.legend(handles=[ld, ln, ld2, ln2], framealpha=0, prop={'weight': 'bold'}, loc='upper left')
46
-
47
- # add xlabel, ylabel, suptitle
48
- ax.set(xlabel='Date',
49
- ylabel='Ext (1/Mm)',
50
- xlim=(st_tm, fn_tm),
51
- ylim=(1., 600),
52
- xticks=tick_time,
53
- xticklabels=[_tm.strftime("%F %H:00") for _tm in tick_time])
54
-
55
- ax2.set(ylabel=r'$VC (m^{2}/s)$',
56
- ylim=(1., 2500))
57
-
58
- fig.suptitle(f'Event evolution ({st_tm.strftime("%F")}_{fn_tm.strftime("%F")})')
59
-
60
- # save figure
61
- fig.savefig(pth(f"event_evolution_{st_tm.strftime("%F")}_{fn_tm.strftime("%F")}"))
62
-
63
-
64
- if __name__ == '__main__':
65
- event_evolution(blh)