Skip to content
Snippets Groups Projects
Commit c641e4c2 authored by Aurelien Chauvigne's avatar Aurelien Chauvigne
Browse files

add ppb concentrations to output

parent d3c123cf
No related branches found
No related tags found
No related merge requests found
...@@ -133,11 +133,11 @@ class PtrmsConverter(Converter.Converter): ...@@ -133,11 +133,11 @@ class PtrmsConverter(Converter.Converter):
""" """
# load data # load data
self.reader = AMESReader(infiles[0]) self.reader = AMESReader(infiles[0])
year = int(self.reader.attributes['Startdate'][0:4])
ds_names = self.reader.get_ds_names() ds_names = self.reader.get_ds_names()
indata = Converter.Converter.load_indata(self, infiles, ds_names, reader_interface=AMESReader) indata = Converter.Converter.load_indata(self, infiles, ds_names, reader_interface=AMESReader)
self.var_ids_mz = [] self.var_ids_mz = []
self.var_ids_mz_name = []
self.var_ids_env_tag = [] self.var_ids_env_tag = []
self.var_ids_env = [] self.var_ids_env = []
...@@ -146,6 +146,8 @@ class PtrmsConverter(Converter.Converter): ...@@ -146,6 +146,8 @@ class PtrmsConverter(Converter.Converter):
indata[Product.START_ACQ_ID] = indata[var_id] indata[Product.START_ACQ_ID] = indata[var_id]
elif 'end_time' in var_id: elif 'end_time' in var_id:
indata[Product.END_ACQ_ID] = indata[var_id] indata[Product.END_ACQ_ID] = indata[var_id]
elif "status" in var_id:
indata["status"] = indata[var_id]
elif "temperature" in var_id and "Location=inlet" in var_id: elif "temperature" in var_id and "Location=inlet" in var_id:
self.var_ids_env.append(var_id) self.var_ids_env.append(var_id)
self.var_ids_env_tag.append('T_inlet') self.var_ids_env_tag.append('T_inlet')
...@@ -157,7 +159,6 @@ class PtrmsConverter(Converter.Converter): ...@@ -157,7 +159,6 @@ class PtrmsConverter(Converter.Converter):
if m != None: if m != None:
mass_num = m.group(0).replace('_','') mass_num = m.group(0).replace('_','')
indata['mz_' + mass_num] = indata[var_id] indata['mz_' + mass_num] = indata[var_id]
self.var_ids_mz_name.append(var_id)
self.var_ids_mz.append('mz_' + mass_num) self.var_ids_mz.append('mz_' + mass_num)
else: else:
if 'methanal' in var_id: if 'methanal' in var_id:
...@@ -179,10 +180,16 @@ class PtrmsConverter(Converter.Converter): ...@@ -179,10 +180,16 @@ class PtrmsConverter(Converter.Converter):
indata['mz_' + mass_num] = indata[var_id] indata['mz_' + mass_num] = indata[var_id]
self.var_ids_mz.append('mz_' + mass_num) self.var_ids_mz.append('mz_' + mass_num)
year = int(self.reader.attributes['Startdate'][0:4])
# filtering from status values
valid_status = (indata['status'] == 0)
for var_id in indata.keys():
indata[var_id] = indata[var_id][valid_status]
# convert to ppm concentration # convert to ppm concentration
prog_ptrms_lib = ptrms_lib(outdir, conf_file) prog_ptrms_lib = ptrms_lib(outdir, conf_file)
self.lev1_mz =prog_ptrms_lib.conf["cols_species"]
self.lev1_mz_name = [prog_ptrms_lib.conf["species"][s]["actris_name"] for s in prog_ptrms_lib.conf["cols_species"]]
ppb_data, lod, rsd, accuracy, uncertainty = prog_ptrms_lib.process(indata, valve_files, outdir, levels=[0]) ppb_data, lod, rsd, accuracy, uncertainty = prog_ptrms_lib.process(indata, valve_files, outdir, levels=[0])
# group outputs # group outputs
...@@ -216,7 +223,7 @@ class PtrmsConverter(Converter.Converter): ...@@ -216,7 +223,7 @@ class PtrmsConverter(Converter.Converter):
i_sort = numpy.argsort(outdata[Product.START_ACQ_ID]) i_sort = numpy.argsort(outdata[Product.START_ACQ_ID])
outdata["start_acq"] = [outdata["start_acq"][i] for i in i_sort] outdata["start_acq"] = [outdata["start_acq"][i] for i in i_sort]
outdata["end_acq"] = [outdata["end_acq"][i] for i in i_sort] outdata["end_acq"] = [outdata["end_acq"][i] for i in i_sort]
for var_id in self.var_ids_env + self.var_ids_mz: for var_id in self.var_ids_env + self.lev1_mz:
outdata[var_id] = [outdata[var_id][i] for i in i_sort] outdata[var_id] = [outdata[var_id][i] for i in i_sort]
invalid_acq_val[var_id] = numpy.array( invalid_acq_val[var_id] = numpy.array(
[invalid_acq_val[var_id][i] for i in i_sort] [invalid_acq_val[var_id][i] for i in i_sort]
...@@ -237,7 +244,7 @@ class PtrmsConverter(Converter.Converter): ...@@ -237,7 +244,7 @@ class PtrmsConverter(Converter.Converter):
) )
# concentrations coef # concentrations coef
for var_id in self.var_ids_env + self.var_ids_mz: for var_id in self.var_ids_env + self.lev1_mz:
conc = outdata[var_id][i] conc = outdata[var_id][i]
qa = 0.0 qa = 0.0
...@@ -277,7 +284,7 @@ class PtrmsConverter(Converter.Converter): ...@@ -277,7 +284,7 @@ class PtrmsConverter(Converter.Converter):
""" """
if var_id == self.QA_FLAGS_ID: if var_id == self.QA_FLAGS_ID:
return 9.999 return 9.999
elif var_id in self.var_ids_mz: elif var_id in self.lev1_mz:
return self.var_fills_conc return self.var_fills_conc
elif var_id in self.var_ids_env: elif var_id in self.var_ids_env:
return self.var_fills_env return self.var_fills_env
...@@ -296,7 +303,7 @@ class PtrmsConverter(Converter.Converter): ...@@ -296,7 +303,7 @@ class PtrmsConverter(Converter.Converter):
infill = self.var_fills_conc_native infill = self.var_fills_conc_native
# --- environmental property and concentration automatic QA # --- environmental property and concentration automatic QA
for var_id in self.var_ids_env + self.var_ids_mz: for var_id in self.var_ids_env + self.lev1_mz:
data = indata[var_id] data = indata[var_id]
# data = numpy.array([float(d.replace('E','e').replace(',','.')) for d in data]) # data = numpy.array([float(d.replace('E','e').replace(',','.')) for d in data])
data = numpy.array(data) data = numpy.array(data)
...@@ -336,7 +343,7 @@ class PtrmsConverter(Converter.Converter): ...@@ -336,7 +343,7 @@ class PtrmsConverter(Converter.Converter):
nvars = 1 # end time nvars = 1 # end time
nvars += 1 # status nvars += 1 # status
nvars += len(self.var_ids_env) * 2 # T, P and QA nvars += len(self.var_ids_env) * 2 # T, P and QA
nvars += len(self.var_ids_mz) * 2 # m/e and QA flag nvars += len(self.lev1_mz) * 2 # m/e and QA flag
return nvars return nvars
...@@ -375,7 +382,7 @@ class PtrmsConverter(Converter.Converter): ...@@ -375,7 +382,7 @@ class PtrmsConverter(Converter.Converter):
s += "9.999 " s += "9.999 "
s += str(self.var_fills_conc) + " " # P s += str(self.var_fills_conc) + " " # P
s += "9.999 " s += "9.999 "
for me in self.var_ids_mz: for me in self.lev1_mz:
s += str(self.var_fills_conc) s += str(self.var_fills_conc)
s += " " s += " "
s += "9.999 " s += "9.999 "
...@@ -400,8 +407,8 @@ class PtrmsConverter(Converter.Converter): ...@@ -400,8 +407,8 @@ class PtrmsConverter(Converter.Converter):
) )
vars_long_name += "numflag_pressure, no unit" + os.linesep vars_long_name += "numflag_pressure, no unit" + os.linesep
for var_id in self.var_ids_mz_name: for var_id in self.lev1_mz_name:
vars_long_name += var_id + os.linesep vars_long_name += var_id + ", ppb" + os.linesep
vars_long_name += "numflag_" + var_id + ", no unit" + os.linesep vars_long_name += "numflag_" + var_id + ", no unit" + os.linesep
vars_long_name = vars_long_name.strip() vars_long_name = vars_long_name.strip()
...@@ -413,7 +420,7 @@ class PtrmsConverter(Converter.Converter): ...@@ -413,7 +420,7 @@ class PtrmsConverter(Converter.Converter):
vars_tag += "{0:<20s}".format(var_id) vars_tag += "{0:<20s}".format(var_id)
vars_tag += "{0:<20s}".format("numflag_" + var_id) vars_tag += "{0:<20s}".format("numflag_" + var_id)
for var_id in self.var_ids_mz: for var_id in self.lev1_mz:
vars_tag += "{0:<20s}".format(var_id) vars_tag += "{0:<20s}".format(var_id)
vars_tag += "{0:<20s}".format(var_id + "_numflag") vars_tag += "{0:<20s}".format(var_id + "_numflag")
vars_tag = vars_tag.strip() vars_tag = vars_tag.strip()
......
...@@ -117,7 +117,7 @@ def main(): ...@@ -117,7 +117,7 @@ def main():
def test(): def test():
SRC_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)),'..') SRC_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)),'..')
infile = SRC_DIR + "/tests/SIRTA/inputs/FR0020R.20241028000550.20250108081653.PTR-MS.ion_count.air.1d.5mn.FR01L_PTR-MS_Ionicon_Analytik_H-S-PTR-QMS.FR01L_Ionicon_Analytik_H-S-PTR-QMS_GIF.lev0.nas" infile = SRC_DIR + "/tests/SIRTA/inputs/FR0020R.20241028000550.20250113125332.PTR-MS.ion_count.air.1d.5mn.FR01L_PTR-MS_Ionicon_Analytik_H-S-PTR-QMS.FR01L_Ionicon_Analytik_H-S-PTR-QMS_GIF.lev0.nas"
conf_file = '/src/algo/ptrms_lib/conf/conf_ptrms.toml' conf_file = '/src/algo/ptrms_lib/conf/conf_ptrms.toml'
valve_files = "/tests/SIRTA/inputs/vanne_pos_20241028.csv" valve_files = "/tests/SIRTA/inputs/vanne_pos_20241028.csv"
outdir = SRC_DIR + "/tests/SIRTA/results/" outdir = SRC_DIR + "/tests/SIRTA/results/"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment