AeroViz 0.1.3__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 (107) hide show
  1. AeroViz/__init__.py +4 -4
  2. AeroViz/dataProcess/Chemistry/__init__.py +38 -38
  3. AeroViz/dataProcess/Chemistry/_calculate.py +15 -15
  4. AeroViz/dataProcess/Chemistry/_isoropia.py +69 -68
  5. AeroViz/dataProcess/Chemistry/_mass_volume.py +158 -158
  6. AeroViz/dataProcess/Chemistry/_ocec.py +109 -109
  7. AeroViz/dataProcess/Chemistry/_partition.py +19 -18
  8. AeroViz/dataProcess/Chemistry/_teom.py +8 -11
  9. AeroViz/dataProcess/Optical/_IMPROVE.py +40 -39
  10. AeroViz/dataProcess/Optical/__init__.py +35 -35
  11. AeroViz/dataProcess/Optical/_absorption.py +35 -35
  12. AeroViz/dataProcess/Optical/_extinction.py +25 -24
  13. AeroViz/dataProcess/Optical/_mie.py +5 -6
  14. AeroViz/dataProcess/Optical/_mie_sd.py +89 -90
  15. AeroViz/dataProcess/Optical/_scattering.py +16 -16
  16. AeroViz/dataProcess/SizeDistr/__init__.py +37 -37
  17. AeroViz/dataProcess/SizeDistr/__merge.py +159 -158
  18. AeroViz/dataProcess/SizeDistr/_merge.py +155 -154
  19. AeroViz/dataProcess/SizeDistr/_merge_v1.py +162 -161
  20. AeroViz/dataProcess/SizeDistr/_merge_v2.py +153 -152
  21. AeroViz/dataProcess/SizeDistr/_merge_v3.py +326 -326
  22. AeroViz/dataProcess/SizeDistr/_merge_v4.py +272 -274
  23. AeroViz/dataProcess/SizeDistr/_size_distr.py +51 -51
  24. AeroViz/dataProcess/VOC/__init__.py +7 -7
  25. AeroViz/dataProcess/VOC/_potential_par.py +53 -55
  26. AeroViz/dataProcess/__init__.py +4 -4
  27. AeroViz/dataProcess/core/__init__.py +59 -58
  28. AeroViz/plot/__init__.py +6 -1
  29. AeroViz/plot/bar.py +126 -0
  30. AeroViz/plot/box.py +68 -0
  31. AeroViz/plot/distribution/distribution.py +421 -427
  32. AeroViz/plot/meteorology/meteorology.py +240 -292
  33. AeroViz/plot/optical/__init__.py +0 -1
  34. AeroViz/plot/optical/optical.py +230 -230
  35. AeroViz/plot/pie.py +198 -0
  36. AeroViz/plot/regression.py +210 -0
  37. AeroViz/plot/scatter.py +99 -0
  38. AeroViz/plot/templates/__init__.py +0 -3
  39. AeroViz/plot/templates/contour.py +25 -25
  40. AeroViz/plot/templates/corr_matrix.py +86 -93
  41. AeroViz/plot/templates/diurnal_pattern.py +24 -24
  42. AeroViz/plot/templates/koschmieder.py +106 -106
  43. AeroViz/plot/templates/metal_heatmap.py +34 -34
  44. AeroViz/plot/timeseries/timeseries.py +53 -60
  45. AeroViz/plot/utils/__init__.py +2 -1
  46. AeroViz/plot/utils/_color.py +57 -57
  47. AeroViz/plot/utils/_unit.py +48 -48
  48. AeroViz/plot/utils/plt_utils.py +92 -0
  49. AeroViz/plot/utils/sklearn_utils.py +49 -0
  50. AeroViz/plot/violin.py +79 -0
  51. AeroViz/process/__init__.py +15 -15
  52. AeroViz/process/core/DataProc.py +9 -9
  53. AeroViz/process/core/SizeDist.py +81 -81
  54. AeroViz/process/method/PyMieScatt_update.py +488 -488
  55. AeroViz/process/method/mie_theory.py +231 -229
  56. AeroViz/process/method/prop.py +40 -40
  57. AeroViz/process/script/AbstractDistCalc.py +103 -103
  58. AeroViz/process/script/Chemical.py +166 -166
  59. AeroViz/process/script/IMPACT.py +40 -40
  60. AeroViz/process/script/IMPROVE.py +152 -152
  61. AeroViz/process/script/Others.py +45 -45
  62. AeroViz/process/script/PSD.py +26 -26
  63. AeroViz/process/script/PSD_dry.py +69 -70
  64. AeroViz/process/script/retrieve_RI.py +50 -51
  65. AeroViz/rawDataReader/__init__.py +57 -57
  66. AeroViz/rawDataReader/core/__init__.py +328 -326
  67. AeroViz/rawDataReader/script/AE33.py +18 -18
  68. AeroViz/rawDataReader/script/AE43.py +20 -20
  69. AeroViz/rawDataReader/script/APS_3321.py +30 -30
  70. AeroViz/rawDataReader/script/Aurora.py +23 -23
  71. AeroViz/rawDataReader/script/BC1054.py +40 -40
  72. AeroViz/rawDataReader/script/EPA_vertical.py +9 -9
  73. AeroViz/rawDataReader/script/GRIMM.py +21 -21
  74. AeroViz/rawDataReader/script/IGAC_TH.py +67 -67
  75. AeroViz/rawDataReader/script/IGAC_ZM.py +59 -59
  76. AeroViz/rawDataReader/script/MA350.py +39 -39
  77. AeroViz/rawDataReader/script/NEPH.py +74 -74
  78. AeroViz/rawDataReader/script/OCEC_LCRES.py +21 -21
  79. AeroViz/rawDataReader/script/OCEC_RES.py +16 -16
  80. AeroViz/rawDataReader/script/SMPS_TH.py +25 -25
  81. AeroViz/rawDataReader/script/SMPS_aim11.py +32 -32
  82. AeroViz/rawDataReader/script/SMPS_genr.py +31 -31
  83. AeroViz/rawDataReader/script/TEOM.py +28 -28
  84. AeroViz/rawDataReader/script/Table.py +12 -12
  85. AeroViz/rawDataReader/script/VOC_TH.py +16 -16
  86. AeroViz/rawDataReader/script/VOC_ZM.py +28 -28
  87. AeroViz/rawDataReader/script/__init__.py +20 -20
  88. AeroViz/rawDataReader/utils/config.py +161 -161
  89. AeroViz/tools/database.py +65 -65
  90. AeroViz/tools/dataclassifier.py +106 -106
  91. AeroViz/tools/dataprinter.py +51 -51
  92. AeroViz/tools/datareader.py +38 -38
  93. {AeroViz-0.1.3.dist-info → AeroViz-0.1.3b0.dist-info}/METADATA +5 -4
  94. AeroViz-0.1.3b0.dist-info/RECORD +110 -0
  95. AeroViz/config/__init__.py +0 -0
  96. AeroViz/plot/improve/__init__.py +0 -1
  97. AeroViz/plot/improve/improve.py +0 -240
  98. AeroViz/plot/optical/aethalometer.py +0 -77
  99. AeroViz/plot/templates/event_evolution.py +0 -65
  100. AeroViz/plot/templates/regression.py +0 -256
  101. AeroViz/plot/templates/scatter.py +0 -130
  102. AeroViz/plot/templates/templates.py +0 -398
  103. AeroViz/plot/utils/_decorator.py +0 -74
  104. AeroViz-0.1.3.dist-info/RECORD +0 -111
  105. {AeroViz-0.1.3.dist-info → AeroViz-0.1.3b0.dist-info}/LICENSE +0 -0
  106. {AeroViz-0.1.3.dist-info → AeroViz-0.1.3b0.dist-info}/WHEEL +0 -0
  107. {AeroViz-0.1.3.dist-info → AeroViz-0.1.3b0.dist-info}/top_level.txt +0 -0
AeroViz/__init__.py CHANGED
@@ -5,8 +5,8 @@ from AeroViz.rawDataReader import RawDataReader
5
5
  from AeroViz.tools import DataBase, DataReader, DataClassifier
6
6
 
7
7
  __all__ = [
8
- 'plot',
9
- 'RawDataReader',
10
- 'Optical', 'SizeDistr', 'Chemistry', 'VOC',
11
- 'DataBase', 'DataReader', 'DataClassifier'
8
+ 'plot',
9
+ 'RawDataReader',
10
+ 'Optical', 'SizeDistr', 'Chemistry', 'VOC',
11
+ 'DataBase', 'DataReader', 'DataClassifier'
12
12
  ]
@@ -2,62 +2,62 @@ from ..core import _writter, _run_process
2
2
 
3
3
  __all__ = [
4
4
 
5
- 'Chemistry',
5
+ 'Chemistry',
6
6
 
7
7
  ]
8
8
 
9
9
 
10
10
  class Chemistry(_writter):
11
11
 
12
- ## Reconstruction
13
- @_run_process('Chemistry - reconstruction basic', 'reconstrc_basic')
14
- def ReConstrc_basic(self, *df_chem, df_ref=None, df_water=None, df_density=None,
15
- nam_lst=['NH4+', 'SO42-', 'NO3-', 'Fe', 'Na+', 'OC', 'EC']):
16
- from ._mass_volume import _basic
12
+ ## Reconstruction
13
+ @_run_process('Chemistry - reconstruction basic', 'reconstrc_basic')
14
+ def ReConstrc_basic(self, *df_chem, df_ref=None, df_water=None, df_density=None,
15
+ nam_lst=['NH4+', 'SO42-', 'NO3-', 'Fe', 'Na+', 'OC', 'EC']):
16
+ from ._mass_volume import _basic
17
17
 
18
- out = _basic(df_chem, df_ref, df_water, df_density, nam_lst=nam_lst)
18
+ out = _basic(df_chem, df_ref, df_water, df_density, nam_lst=nam_lst)
19
19
 
20
- return self, out
20
+ return self, out
21
21
 
22
- ## Partition
23
- @_run_process('Chemistry - Partition', 'partition')
24
- def Partition(self, *df_chem, nam_lst=['NH4+', 'SO42-', 'NO3-', 'Cl-', 'NO2', 'HNO3', 'SO2', 'NH3', 'HCl', 'temp']):
25
- from ._partition import _basic
22
+ ## Partition
23
+ @_run_process('Chemistry - Partition', 'partition')
24
+ def Partition(self, *df_chem, nam_lst=['NH4+', 'SO42-', 'NO3-', 'Cl-', 'NO2', 'HNO3', 'SO2', 'NH3', 'HCl', 'temp']):
25
+ from ._partition import _basic
26
26
 
27
- out = _basic(df_chem, nam_lst=nam_lst)
27
+ out = _basic(df_chem, nam_lst=nam_lst)
28
28
 
29
- return self, out
29
+ return self, out
30
30
 
31
- ## ISOROPIA
32
- @_run_process('Chemistry - ISOROPIA', 'isoropia')
33
- def ISOROPIA(self, *df_chem,
34
- nam_lst=['Na+', 'SO42-', 'NH4+', 'NO3-', 'Cl-', 'Ca2+', 'K+', 'Mg2+', 'NH3', 'HNO3', 'HCl', 'RH',
35
- 'temp']):
36
- from ._isoropia import _basic
31
+ ## ISOROPIA
32
+ @_run_process('Chemistry - ISOROPIA', 'isoropia')
33
+ def ISOROPIA(self, *df_chem,
34
+ nam_lst=['Na+', 'SO42-', 'NH4+', 'NO3-', 'Cl-', 'Ca2+', 'K+', 'Mg2+', 'NH3', 'HNO3', 'HCl', 'RH',
35
+ 'temp']):
36
+ from ._isoropia import _basic
37
37
 
38
- if self.path_out is None:
39
- raise ValueError('Please Input "path_out" !!')
38
+ if self.path_out is None:
39
+ raise ValueError('Please Input "path_out" !!')
40
40
 
41
- out = _basic(df_chem, self.path_out, nam_lst=nam_lst)
41
+ out = _basic(df_chem, self.path_out, nam_lst=nam_lst)
42
42
 
43
- return self, out
43
+ return self, out
44
44
 
45
- ## OCEC
46
- @_run_process('Chemistry - OC/EC basic', 'ocec_basic')
47
- def OCEC_basic(self, df_lcres, df_res, df_mass=None, ocec_ratio=None, ocec_ratio_month=1, hr_lim=200,
48
- least_square_range=(0.1, 2.5, 0.1), WISOC_OC_range=(0.2, 0.7, 0.01), ):
49
- from ._ocec import _basic
45
+ ## OCEC
46
+ @_run_process('Chemistry - OC/EC basic', 'ocec_basic')
47
+ def OCEC_basic(self, df_lcres, df_res, df_mass=None, ocec_ratio=None, ocec_ratio_month=1, hr_lim=200,
48
+ least_square_range=(0.1, 2.5, 0.1), WISOC_OC_range=(0.2, 0.7, 0.01), ):
49
+ from ._ocec import _basic
50
50
 
51
- out = _basic(df_lcres, df_res, df_mass, ocec_ratio, ocec_ratio_month, hr_lim, least_square_range,
52
- WISOC_OC_range)
51
+ out = _basic(df_lcres, df_res, df_mass, ocec_ratio, ocec_ratio_month, hr_lim, least_square_range,
52
+ WISOC_OC_range)
53
53
 
54
- return self, out
54
+ return self, out
55
55
 
56
- ## TEOM
57
- @_run_process('Chemistry - TEOM basic', 'teom_basic')
58
- def TEOM_basic(self, df_teom, df_check=None):
59
- from ._teom import _basic
56
+ ## TEOM
57
+ @_run_process('Chemistry - TEOM basic', 'teom_basic')
58
+ def TEOM_basic(self, df_teom, df_check=None):
59
+ from ._teom import _basic
60
60
 
61
- out = _basic(df_teom, df_check)
61
+ out = _basic(df_teom, df_check)
62
62
 
63
- return self, out
63
+ return self, out
@@ -1,27 +1,27 @@
1
- from pandas import concat, DataFrame
1
+ from pandas import concat
2
2
 
3
3
  # parameter
4
4
  _mol_wg = {
5
- 'SO42-': 96.06,
6
- 'NO3-': 62.00,
7
- 'Cl-': 35.4,
5
+ 'SO42-': 96.06,
6
+ 'NO3-': 62.00,
7
+ 'Cl-': 35.4,
8
8
 
9
- 'Ca2+': 40.078,
10
- 'K+': 39.098,
11
- 'Mg2+': 24.305,
12
- 'Na+': 22.99,
13
- 'NH4+': 18.04,
9
+ 'Ca2+': 40.078,
10
+ 'K+': 39.098,
11
+ 'Mg2+': 24.305,
12
+ 'Na+': 22.99,
13
+ 'NH4+': 18.04,
14
14
  }
15
15
 
16
16
 
17
17
  # ug -> umol
18
18
  def _ug2umol(_df):
19
- _pt_ky = list(set(_df.keys()) & set(_mol_wg.keys()))
20
- _gas_ky = list(set(_df.keys()) - set(_mol_wg.keys()) - set(['temp', 'RH']))
19
+ _pt_ky = list(set(_df.keys()) & set(_mol_wg.keys()))
20
+ _gas_ky = list(set(_df.keys()) - set(_mol_wg.keys()) - set(['temp', 'RH']))
21
21
 
22
- _par = (_df['temp'].to_frame() + 273.15) * .082
22
+ _par = (_df['temp'].to_frame() + 273.15) * .082
23
23
 
24
- _df_pt = concat([(_df[_ky] / _mol_wg[_ky]).copy() for _ky in _pt_ky], axis=1)
25
- _df_gas = _df[_gas_ky] / _par.values
24
+ _df_pt = concat([(_df[_ky] / _mol_wg[_ky]).copy() for _ky in _pt_ky], axis=1)
25
+ _df_gas = _df[_gas_ky] / _par.values
26
26
 
27
- return concat([_df_pt, _df_gas], axis=1)
27
+ return concat([_df_pt, _df_gas], axis=1)
@@ -1,99 +1,100 @@
1
+ from pathlib import Path
1
2
  from subprocess import Popen, PIPE
2
- from pandas import date_range, concat, DataFrame, to_numeric, read_csv
3
- from ._calculate import _ug2umol
3
+
4
4
  import numpy as np
5
+ from pandas import concat, DataFrame, to_numeric, read_csv
5
6
 
6
- from pathlib import Path
7
+ from ._calculate import _ug2umol
7
8
 
8
9
 
9
10
  def _basic(df_che, path_out, nam_lst):
10
- # parameter
11
- df_all = concat(df_che, axis=1)
12
- index = df_all.index.copy()
13
- df_all.columns = nam_lst
11
+ # parameter
12
+ df_all = concat(df_che, axis=1)
13
+ index = df_all.index.copy()
14
+ df_all.columns = nam_lst
14
15
 
15
- df_umol = _ug2umol(df_all)
16
+ df_umol = _ug2umol(df_all)
16
17
 
17
- ## output
18
- ## Na, SO4, NH3, NO3, Cl, Ca, K, Mg, RH, TEMP
19
- df_input = DataFrame(index=index)
20
- df_out = DataFrame(index=index)
18
+ ## output
19
+ ## Na, SO4, NH3, NO3, Cl, Ca, K, Mg, RH, TEMP
20
+ df_input = DataFrame(index=index)
21
+ df_out = DataFrame(index=index)
21
22
 
22
- pth_input = path_out / '_temp_input.txt'
23
- pth_output = path_out / '_temp_input.dat'
23
+ pth_input = path_out / '_temp_input.txt'
24
+ pth_output = path_out / '_temp_input.dat'
24
25
 
25
- pth_input.unlink(missing_ok=True)
26
- pth_output.unlink(missing_ok=True)
26
+ pth_input.unlink(missing_ok=True)
27
+ pth_output.unlink(missing_ok=True)
27
28
 
28
- ## header
29
- _header = 'Input units (0=umol/m3, 1=ug/m3)\n' + '0\n\n' + \
30
- 'Problem type (0=forward, 1=reverse); Phase state (0=solid+liquid, 1=metastable)\n' + '0, 1\n\n' + \
31
- 'NH4-SO4 system case\n'
29
+ ## header
30
+ _header = 'Input units (0=umol/m3, 1=ug/m3)\n' + '0\n\n' + \
31
+ 'Problem type (0=forward, 1=reverse); Phase state (0=solid+liquid, 1=metastable)\n' + '0, 1\n\n' + \
32
+ 'NH4-SO4 system case\n'
32
33
 
33
- ## software
34
- path_iso = Path(__file__).parent / 'isrpia2.exe'
34
+ ## software
35
+ path_iso = Path(__file__).parent / 'isrpia2.exe'
35
36
 
36
- # make input file and output temp input (without index)
37
- ## NH3
38
- df_input['NH3'] = df_umol['NH4+'].fillna(0).copy() + df_umol['NH3']
37
+ # make input file and output temp input (without index)
38
+ ## NH3
39
+ df_input['NH3'] = df_umol['NH4+'].fillna(0).copy() + df_umol['NH3']
39
40
 
40
- ## NO3
41
- df_input['NO3'] = df_umol['HNO3'].fillna(0).copy() + df_umol['NO3-']
41
+ ## NO3
42
+ df_input['NO3'] = df_umol['HNO3'].fillna(0).copy() + df_umol['NO3-']
42
43
 
43
- ## Cl
44
- df_input['Cl'] = df_umol['HCl'].fillna(0).copy() + df_umol['Cl-']
44
+ ## Cl
45
+ df_input['Cl'] = df_umol['HCl'].fillna(0).copy() + df_umol['Cl-']
45
46
 
46
- ## temp, RH
47
- df_input['RH'] = df_all['RH'] / 100
48
- df_input['TEMP'] = df_all['temp'] + 273.15
47
+ ## temp, RH
48
+ df_input['RH'] = df_all['RH'] / 100
49
+ df_input['TEMP'] = df_all['temp'] + 273.15
49
50
 
50
- df_input[['Na', 'SO4', 'Ca', 'K', 'Mg']] = df_umol[['Na+', 'SO42-', 'Ca2+', 'K+', 'Mg2+']].copy()
51
+ df_input[['Na', 'SO4', 'Ca', 'K', 'Mg']] = df_umol[['Na+', 'SO42-', 'Ca2+', 'K+', 'Mg2+']].copy()
51
52
 
52
- df_input = df_input[['Na', 'SO4', 'NH3', 'NO3', 'Cl', 'Ca', 'K', 'Mg', 'RH', 'TEMP']].fillna('-').copy()
53
+ df_input = df_input[['Na', 'SO4', 'NH3', 'NO3', 'Cl', 'Ca', 'K', 'Mg', 'RH', 'TEMP']].fillna('-').copy()
53
54
 
54
- ## output the input data
55
- df_input.to_csv(pth_input, index=False)
56
- with (pth_input).open('r+', encoding='utf-8', errors='ignore') as _f:
57
- _cont = _f.read()
58
- _f.seek(0)
55
+ ## output the input data
56
+ df_input.to_csv(pth_input, index=False)
57
+ with (pth_input).open('r+', encoding='utf-8', errors='ignore') as _f:
58
+ _cont = _f.read()
59
+ _f.seek(0)
59
60
 
60
- _f.write(_header)
61
- _f.write(_cont)
61
+ _f.write(_header)
62
+ _f.write(_cont)
62
63
 
63
- # use ISOROPIA2
64
- run = Popen([path_iso], stdin=PIPE, stdout=PIPE, stderr=PIPE)
65
- scrn_res, run_res = run.communicate(input=str(pth_input.resolve()).encode())
64
+ # use ISOROPIA2
65
+ run = Popen([path_iso], stdin=PIPE, stdout=PIPE, stderr=PIPE)
66
+ scrn_res, run_res = run.communicate(input=str(pth_input.resolve()).encode())
66
67
 
67
- # read dat file and transform to the normal name
68
- cond_idx = df_all[['SO42-', 'NH4+', 'NO3-']].dropna().index
68
+ # read dat file and transform to the normal name
69
+ cond_idx = df_all[['SO42-', 'NH4+', 'NO3-']].dropna().index
69
70
 
70
- with (pth_output).open('r', encoding='utf-8', errors='ignore') as f:
71
- df_res = read_csv(f, delimiter='\s+').apply(to_numeric, errors='coerce').set_index(index)
71
+ with (pth_output).open('r', encoding='utf-8', errors='ignore') as f:
72
+ df_res = read_csv(f, delimiter='\s+').apply(to_numeric, errors='coerce').set_index(index)
72
73
 
73
- df_out['H'] = df_res['HLIQ'] / (df_res['WATER'] / 1000)
74
+ df_out['H'] = df_res['HLIQ'] / (df_res['WATER'] / 1000)
74
75
 
75
- df_out.loc[cond_idx, 'pH'] = -np.log10(df_out['H'].loc[cond_idx])
76
- df_out['pH'] = df_out['pH'].where((df_all['RH'] <= 95) & (df_all['RH'] >= 20))
76
+ df_out.loc[cond_idx, 'pH'] = -np.log10(df_out['H'].loc[cond_idx])
77
+ df_out['pH'] = df_out['pH'].where((df_all['RH'] <= 95) & (df_all['RH'] >= 20))
77
78
 
78
- cond_idx = df_out['pH'].dropna().index
79
- df_out.loc[cond_idx, 'ALWC'] = df_res['WATER'].loc[cond_idx]
79
+ cond_idx = df_out['pH'].dropna().index
80
+ df_out.loc[cond_idx, 'ALWC'] = df_res['WATER'].loc[cond_idx]
80
81
 
81
- df_out[['NH3', 'HNO3', 'HCl', 'NH4+', 'NO3-', 'Cl-']] = df_res[
82
- ['GNH3', 'GHNO3', 'GHCL', 'NH4AER', 'NO3AER', 'CLAER']]
82
+ df_out[['NH3', 'HNO3', 'HCl', 'NH4+', 'NO3-', 'Cl-']] = df_res[
83
+ ['GNH3', 'GHNO3', 'GHCL', 'NH4AER', 'NO3AER', 'CLAER']]
83
84
 
84
- # calculate partition
85
- # df_out['epls_NO3-'] = df_umol['NO3-'] / (df_umol['NO3-'] + df_umol['HNO3'])
86
- # df_out['epls_NH4+'] = df_umol['NH4+'] / (df_umol['NH4+'] + df_umol['NH3'])
87
- # df_out['epls_Cl-'] = df_umol['Cl-'] / (df_umol['Cl-'] + df_umol['HCl'])
85
+ # calculate partition
86
+ # df_out['epls_NO3-'] = df_umol['NO3-'] / (df_umol['NO3-'] + df_umol['HNO3'])
87
+ # df_out['epls_NH4+'] = df_umol['NH4+'] / (df_umol['NH4+'] + df_umol['NH3'])
88
+ # df_out['epls_Cl-'] = df_umol['Cl-'] / (df_umol['Cl-'] + df_umol['HCl'])
88
89
 
89
- # remove _temp file (input and output)
90
- pth_input.unlink(missing_ok=True)
91
- pth_output.unlink(missing_ok=True)
90
+ # remove _temp file (input and output)
91
+ pth_input.unlink(missing_ok=True)
92
+ pth_output.unlink(missing_ok=True)
92
93
 
93
- # output input and output
94
- out = {
95
- 'input': df_input,
96
- 'output': df_out,
97
- }
94
+ # output input and output
95
+ out = {
96
+ 'input': df_input,
97
+ 'output': df_out,
98
+ }
98
99
 
99
- return out
100
+ return out