Commit 96762081 authored by Calmel Blaise's avatar Calmel Blaise
Browse files

Update main

parent 7ab11843
No related merge requests found
Showing with 124 additions and 81 deletions
+124 -81
import copy
import pandas as pd import pandas as pd
import open_functions as of import open_functions as of
from Classes.Measurement import Measurement from Classes.Measurement import Measurement
...@@ -15,7 +17,7 @@ class Qrame: ...@@ -15,7 +17,7 @@ class Qrame:
def __init__(self): def __init__(self):
self.data_brm = None self.data_brm = None
self.root = tk.Tk() self.root = tk.Tk()
self.root.geometry('250x535') self.root.geometry('250x585')
self.root.resizable(0, 1) self.root.resizable(0, 1)
self.root.title('QRAME') # QRevint ADCP Massive Extraction self.root.title('QRAME') # QRevint ADCP Massive Extraction
self.root.wm_iconbitmap(r'QRAME.ico') self.root.wm_iconbitmap(r'QRAME.ico')
...@@ -27,6 +29,8 @@ class Qrame: ...@@ -27,6 +29,8 @@ class Qrame:
self.choice3 = tk.BooleanVar(value=True) self.choice3 = tk.BooleanVar(value=True)
self.choice3b = tk.BooleanVar(value=True) self.choice3b = tk.BooleanVar(value=True)
default_text3 = "Code station HYDRO" default_text3 = "Code station HYDRO"
self.text1b = tk.StringVar(value=1)
self.text1c = tk.StringVar(value=0)
self.text3 = tk.StringVar(value=default_text3) self.text3 = tk.StringVar(value=default_text3)
self.nav_menu4 = tk.StringVar(self.root) self.nav_menu4 = tk.StringVar(self.root)
self.extrap_menu5 = tk.StringVar(self.root) self.extrap_menu5 = tk.StringVar(self.root)
...@@ -52,6 +56,16 @@ class Qrame: ...@@ -52,6 +56,16 @@ class Qrame:
padx=50, pady=4, height=1, width=10) padx=50, pady=4, height=1, width=10)
self.brm_button.pack() self.brm_button.pack()
self.label1b = tk.Label(self.root, text="Time delta in hours (integer)", justify='left')
self.label1b.pack(side=tk.TOP, anchor=tk.W, padx=15)
self.Entry_1b = tk.Entry(self.root, textvariable=self.text1b)
self.Entry_1b.pack(anchor=tk.W, padx=35, ipadx=35)
self.label1c = tk.Label(self.root, text="Time difference with Bareme (integer)", justify='left')
self.label1c.pack(side=tk.TOP, anchor=tk.W, padx=15)
self.Entry_1c = tk.Entry(self.root, textvariable=self.text1c)
self.Entry_1c.pack(anchor=tk.W, padx=35, ipadx=35)
# .dat data with entry box for Bareme station's name # .dat data with entry box for Bareme station's name
def some_callback(event): def some_callback(event):
if self.text3.get() == default_text3: if self.text3.get() == default_text3:
...@@ -90,22 +104,19 @@ class Qrame: ...@@ -90,22 +104,19 @@ class Qrame:
# Chose extrap # Chose extrap
self.label5 = tk.Label(self.root, text="Extrapolation law") self.label5 = tk.Label(self.root, text="Extrapolation law")
self.label5.pack(side=tk.TOP, anchor=tk.W, padx=15) self.label5.pack(side=tk.TOP, anchor=tk.W, padx=15)
self.extrap_menu5.set("Default") # default value self.extrap_menu5.set("Default") # default value
# Chose exp value
self.Entry_5 = tk.Entry(self.root, textvariable=self.text5) self.Entry_5 = tk.Entry(self.root, textvariable=self.text5)
# Chose if personnalize exp
self.Checkbutton_5 = tk.Checkbutton(self.root, text='Personnalize exp.', variable=self.choice5, self.Checkbutton_5 = tk.Checkbutton(self.root, text='Personnalize exp.', variable=self.choice5,
command=lambda e=[self.Entry_5], v=self.choice5: self.naccheck(e, v)) command=lambda e=[self.Entry_5], v=self.choice5: self.naccheck(e, v))
# Chose law
self.Option_extrap5 = tk.OptionMenu(self.root, self.extrap_menu5, "Default", "Power", "CNS", "3-points", self.Option_extrap5 = tk.OptionMenu(self.root, self.extrap_menu5, "Default", "Power", "CNS", "3-points",
command=lambda e=self.Checkbutton_5, v=self.extrap_menu5: self.nanmenu(e, command=lambda e=self.Checkbutton_5, v=self.extrap_menu5: self.nanmenu(e,
v)) v))
self.Option_extrap5.pack(anchor=tk.W, padx=35, ipadx=35) self.Option_extrap5.pack(anchor=tk.W, padx=35, ipadx=35)
self.Checkbutton_5.pack(side=tk.TOP, anchor=tk.W, ipadx=15) self.Checkbutton_5.pack(side=tk.TOP, anchor=tk.W, ipadx=15)
self.Entry_5.pack(anchor=tk.W, padx=35, ipadx=35) self.Entry_5.pack(anchor=tk.W, padx=35, ipadx=35)
# Lock by default
self.Checkbutton_5["state"] = "disabled"
self.Entry_5.configure(state='disabled')
# No moving-bed detected # No moving-bed detected
self.Checkbutton_6 = tk.Checkbutton(self.root, text='No moving-bed detected', variable=self.choice6) self.Checkbutton_6 = tk.Checkbutton(self.root, text='No moving-bed detected', variable=self.choice6)
...@@ -164,25 +175,38 @@ class Qrame: ...@@ -164,25 +175,38 @@ class Qrame:
self.naccheck([self.Entry_5], self.choice5) self.naccheck([self.Entry_5], self.choice5)
def import_data(self): def import_data(self):
path_folder, path_meas, type_meas, name_meas = of.select_directory() self.import_button["state"] = "disabled"
self.run_button["state"] = "disabled"
path_folder, path_meas, type_meas, name_meas, no_adcp = of.select_directory()
if type_meas is not None: if type_meas is not None:
if len(type_meas) == 0: if len(type_meas) == 0:
tk.messagebox.showerror(title='Wrong folder', message='Invalid folder selected.') tk.messagebox.showerror(title='Wrong folder', message='Invalid folder selected.')
self.import_button["state"] = "normal"
return return
else: else:
if len(no_adcp) > 0:
print('errors in folders')
no_adcp_str = ', '.join(no_adcp)
tk.messagebox.showwarning(title='No ADCP measurement',
message=f'No ADCP measure file found in the folders : {no_adcp_str}')
self.disable_all(way=False) self.disable_all(way=False)
self.path_folder = path_folder self.path_folder = path_folder
self.path_meas = path_meas self.path_meas = path_meas
self.type_meas = type_meas self.type_meas = type_meas
self.name_meas = name_meas self.name_meas = name_meas
self.name_folder = self.path_folder.split('\\')[-1] self.name_folder = self.path_folder.split('\\')[-1]
self.label0.config(wraplength=self.root.winfo_width())
self.label0.config(text=f'ADCP folder: {self.name_folder}') self.label0.config(text=f'ADCP folder: {self.name_folder}')
self.label0.config(wraplength=self.label0.winfo_width()) self.label0.config(wraplength=self.label0.winfo_width())
self.run_button["state"] = "normal"
self.import_button["state"] = "normal"
def get_brm_export(self): def get_brm_export(self):
self.data_brm = None self.data_brm = None
# Select a file path # Select a file path
path_brm = of.select_file() path_brm = of.select_file()
print(path_brm)
if path_brm: if path_brm:
try: try:
with open(path_brm) as f: with open(path_brm) as f:
...@@ -213,12 +237,18 @@ class Qrame: ...@@ -213,12 +237,18 @@ class Qrame:
range(len(data_brm['time_start']))] range(len(data_brm['time_start']))]
self.data_brm = data_brm self.data_brm = data_brm
name_brm = path_brm.split('/')[-1] name_brm = path_brm.split('/')[-1]
self.label1.config(wraplength=self.root.winfo_width())
self.label1.config(text=f'HYDRO2 file: {name_brm}') self.label1.config(text=f'HYDRO2 file: {name_brm}')
self.label1.config(wraplength=self.label1.winfo_width()) self.label1.config(wraplength=self.label1.winfo_width())
self.Entry_1b.configure(state='normal')
self.Entry_1c.configure(state='normal')
except: except:
tk.messagebox.showerror(title='Invalid Barème import', message='Please enter a valid Barème import.') tk.messagebox.showerror(title='Invalid Barème import', message='Please enter a valid Barème import.')
else: else:
self.brm_button.config(text=f'Import HYDRO2 : ***') self.data_brm = None
self.Entry_1b.configure(state='disabled')
self.Entry_1c.configure(state='disabled')
self.label1.config(text="HYDRO2 file: ***")
def disable_all(self, way=True, import_data=True): def disable_all(self, way=True, import_data=True):
# Able/Disable button # Able/Disable button
...@@ -228,6 +258,8 @@ class Qrame: ...@@ -228,6 +258,8 @@ class Qrame:
self.Checkbutton_3["state"] = "disabled" self.Checkbutton_3["state"] = "disabled"
self.Entry_3.configure(state='disabled') self.Entry_3.configure(state='disabled')
self.brm_button["state"] = "disabled" self.brm_button["state"] = "disabled"
self.Entry_1b.configure(state="disabled")
self.Entry_1c.configure(state="disabled")
self.Checkbutton_1["state"] = "disabled" self.Checkbutton_1["state"] = "disabled"
self.Checkbutton_2["state"] = "disabled" self.Checkbutton_2["state"] = "disabled"
self.Checkbutton_3b["state"] = "disabled" self.Checkbutton_3b["state"] = "disabled"
...@@ -244,6 +276,9 @@ class Qrame: ...@@ -244,6 +276,9 @@ class Qrame:
self.Checkbutton_3["state"] = "normal" self.Checkbutton_3["state"] = "normal"
self.naccheck([self.Entry_3], self.choice3) self.naccheck([self.Entry_3], self.choice3)
self.brm_button["state"] = "normal" self.brm_button["state"] = "normal"
if self.data_brm is not None:
self.Entry_1b.configure(state='normal')
self.Entry_1c.configure(state='normal')
self.Checkbutton_1["state"] = "normal" self.Checkbutton_1["state"] = "normal"
self.Checkbutton_2["state"] = "normal" self.Checkbutton_2["state"] = "normal"
self.Checkbutton_3b["state"] = "normal" self.Checkbutton_3b["state"] = "normal"
...@@ -255,7 +290,11 @@ class Qrame: ...@@ -255,7 +290,11 @@ class Qrame:
self.close_button["state"] = "normal" self.close_button["state"] = "normal"
def run(self): def run(self):
print(self.run_button["state"])
if self.run_button["state"] == "disabled":
return
self.disable_all(way=True) self.disable_all(way=True)
# Default value # Default value
nav_ref = None nav_ref = None
fit_method = 'Automatic' fit_method = 'Automatic'
...@@ -270,9 +309,23 @@ class Qrame: ...@@ -270,9 +309,23 @@ class Qrame:
# Get input # Get input
save_as_dat = self.choice3.get() save_as_dat = self.choice3.get()
name_station = self.text3.get() name_station = self.text3.get()
try:
delta_time = int(self.text1b.get())
except ValueError:
tk.messagebox.showerror(title='Invalid time delta', message='Please enter correct time delta as integer.')
self.disable_all(way=False)
return
try:
lag_time = int(self.text1c.get())
except ValueError:
tk.messagebox.showerror(title='Invalid lag time',
message='Please enter correct time difference as integer.')
self.disable_all(way=False)
return
save_as_csv = self.choice1.get() save_as_csv = self.choice1.get()
save_as_bad = self.choice2.get() save_as_bad = self.choice2.get()
save_general = self.choice3b.get() # save_general = self.choice3b.get()
input_nav = self.nav_menu4.get() input_nav = self.nav_menu4.get()
input_extrap_type = self.extrap_menu5.get() input_extrap_type = self.extrap_menu5.get()
input_extrap_mode = self.choice5.get() input_extrap_mode = self.choice5.get()
...@@ -309,7 +362,7 @@ class Qrame: ...@@ -309,7 +362,7 @@ class Qrame:
if save_as_dat and self.data_brm is None: if save_as_dat and self.data_brm is None:
res = tk.messagebox.askquestion('No Barème import', res = tk.messagebox.askquestion('No Barème import',
'You didn\'t select a Barème import, stages will be set ' 'You didn\'t select a Barème import, stages will be set '
'at -999. Do you want to continue ?') 'at -999m or -32m. Do you want to continue ?')
if res != 'yes': if res != 'yes':
self.disable_all(way=False) self.disable_all(way=False)
return return
...@@ -350,13 +403,15 @@ class Qrame: ...@@ -350,13 +403,15 @@ class Qrame:
default_checked = [] default_checked = []
current_checked = [] current_checked = []
error_meas = [] error_meas = []
for id_meas in range(len(self.path_meas)): for id_meas in range(len(self.path_meas)):
print(f"==================== {id_meas} ====================")
print(self.path_meas[id_meas]) print(self.path_meas[id_meas])
print(self.type_meas[id_meas]) print(self.type_meas[id_meas])
self.pb['value'] = 100 * (id_meas + 1) / len(self.path_meas) self.pb['value'] = 100 * (id_meas + 1) / len(self.path_meas)
self.pb.update_idletasks() self.pb.update_idletasks()
self.value_label['text'] = self.update_progress_label() self.value_label['text'] = self.update_progress_label()
valid_meas = False
try: try:
# Open measurement # Open measurement
meas, checked_transect, navigation_reference = of.open_measurement(self.path_meas[id_meas], meas, checked_transect, navigation_reference = of.open_measurement(self.path_meas[id_meas],
...@@ -364,6 +419,11 @@ class Qrame: ...@@ -364,6 +419,11 @@ class Qrame:
use_weighted=True, use_weighted=True,
navigation_reference=nav_ref, navigation_reference=nav_ref,
run_oursin=True) run_oursin=True)
valid_meas = True
except:
error_meas.append(self.name_meas[id_meas])
if valid_meas:
default_checked.append(str(len(checked_transect))) default_checked.append(str(len(checked_transect)))
# Remove transect with Delta Q > 40% # Remove transect with Delta Q > 40%
discharge = meas.mean_discharges(meas) discharge = meas.mean_discharges(meas)
...@@ -372,7 +432,7 @@ class Qrame: ...@@ -372,7 +432,7 @@ class Qrame:
for transect_id in checked_transect: for transect_id in checked_transect:
per_diff = np.abs(((meas.discharge[transect_id].total - discharge['total_mean']) / per_diff = np.abs(((meas.discharge[transect_id].total - discharge['total_mean']) /
discharge['total_mean']) * 100) discharge['total_mean']) * 100)
if per_diff > 40 and len(checked_transect) >= 4: if per_diff > 40 and len(checked_transect) > 4:
remove.append(checked_transect.index(transect_id)) remove.append(checked_transect.index(transect_id))
if remove: if remove:
...@@ -392,32 +452,29 @@ class Qrame: ...@@ -392,32 +452,29 @@ class Qrame:
if no_bt and meas.current_settings()['NavRef'] == 'bt_vel': if no_bt and meas.current_settings()['NavRef'] == 'bt_vel':
meas.observed_no_moving_bed = True meas.observed_no_moving_bed = True
meas.oursin.compute_oursin(meas) meas.oursin.compute_oursin(meas)
except:
error_meas.append(self.name_meas[id_meas])
# Date data # Date data
date_value = meas.transects[checked_transect[0]].date_time.start_serial_time date_value = meas.transects[checked_transect[0]].date_time.start_serial_time
date_list.append(datetime.datetime.strftime(datetime.datetime.utcfromtimestamp(date_value), date_lag = datetime.datetime.utcfromtimestamp(date_value) + datetime.timedelta(hours=lag_time)
'%Y-%m-%d %H:%M')) date_list.append(datetime.datetime.strftime(date_lag, '%Y-%m-%d %H:%M'))
date_day_list.append(datetime.datetime.strftime(datetime.datetime.utcfromtimestamp(date_value), date_day_list.append(datetime.datetime.strftime(date_lag, '%Y%m%d'))
'%Y%m%d')) date_hour_start.append(datetime.datetime.strftime(date_lag, '%H:%M'))
date_hour_start.append(datetime.datetime.strftime(datetime.datetime.utcfromtimestamp(date_value),
'%H:%M')) date_hour_end.append(
datetime.datetime.strftime(datetime.datetime.utcfromtimestamp(
date_hour_end.append( meas.transects[checked_transect[-1]].date_time.end_serial_time) +
datetime.datetime.strftime(datetime.datetime.utcfromtimestamp( datetime.timedelta(hours=lag_time), '%H:%M'))
meas.transects[checked_transect[-1]].date_time.end_serial_time), '%H:%M'))
# Cross-section width and area
# Cross-section width and area trans_prop = Measurement.compute_measurement_properties(meas)
trans_prop = Measurement.compute_measurement_properties(meas) n_transects = len(meas.transects)
n_transects = len(meas.transects) width_list.append(trans_prop['width'][n_transects])
width_list.append(trans_prop['width'][n_transects]) area_list.append(trans_prop['area'][n_transects])
area_list.append(trans_prop['area'][n_transects])
# Discharge data
# Discharge data uh_list.append(0)
uh_list.append(0) q_list.append(meas.mean_discharges(meas)['total_mean'])
q_list.append(meas.mean_discharges(meas)['total_mean']) uq_list.append(meas.oursin.u_measurement['total_95'][0])
uq_list.append(meas.oursin.u_measurement['total_95'][0])
# Add height with closest date if Bareme import # Add height with closest date if Bareme import
if data_brm is not None: if data_brm is not None:
...@@ -436,7 +493,8 @@ class Qrame: ...@@ -436,7 +493,8 @@ class Qrame:
for date in date_mid: for date in date_mid:
closest_date.append(min(data_brm['time_mid'], key=lambda x: abs(x - date))) closest_date.append(min(data_brm['time_mid'], key=lambda x: abs(x - date)))
time_diff.append(abs(closest_date[-1] - date)) time_diff.append(abs(closest_date[-1] - date))
id_delta = [i for i in range(len(time_diff)) if time_diff[i] > datetime.timedelta(hours=1)] id_delta = [i for i in range(len(time_diff)) if time_diff[i] >
datetime.timedelta(hours=max(1, abs(delta_time)))]
for index in id_delta: for index in id_delta:
closest_date[index] = None closest_date[index] = None
# Find if duplicate in selected date # Find if duplicate in selected date
...@@ -466,8 +524,9 @@ class Qrame: ...@@ -466,8 +524,9 @@ class Qrame:
if closest_date[i] is None: if closest_date[i] is None:
h_csv.append(-999) h_csv.append(-999)
else: else:
h_csv.append(float(data_brm.loc[ h_csv.append(float(data_brm.loc[
data_brm['time_mid'] == closest_date[i], 'cote'].values[0])/1000) data_brm['time_mid'] == closest_date[i], 'cote'].values[
0]) / 1000)
else: else:
h_csv = [-999] * len(q_list) h_csv = [-999] * len(q_list)
csv_q = [np.round(i, 2) for i in q_list] csv_q = [np.round(i, 2) for i in q_list]
...@@ -487,7 +546,8 @@ class Qrame: ...@@ -487,7 +546,8 @@ class Qrame:
h_bad.append(-999) h_bad.append(-999)
else: else:
h_bad.append(float(data_brm.loc[ h_bad.append(float(data_brm.loc[
data_brm['time_mid'] == closest_date[i], 'cote'].values[0])/1000) data_brm['time_mid'] == closest_date[i], 'cote'].values[
0]) / 1000)
else: else:
h_bad = [-999] * len(q_list) h_bad = [-999] * len(q_list)
# Absolute uncertainty 68% # Absolute uncertainty 68%
...@@ -506,7 +566,7 @@ class Qrame: ...@@ -506,7 +566,7 @@ class Qrame:
if data_brm is not None: if data_brm is not None:
j = -1 j = -1
mean_vel = [a / b for a, b in zip(q_list, area_list)] mean_vel = [a / b for a, b in zip(q_list, area_list)]
q_list_brm = [1000 * i for i in np.round(q_list, 2)] q_list_brm = [np.round(1000 * i) for i in np.round(q_list, 2)]
# Update Barème import # Update Barème import
for i in range(len(closest_date)): for i in range(len(closest_date)):
if closest_date[i] is not None: if closest_date[i] is not None:
...@@ -520,8 +580,8 @@ class Qrame: ...@@ -520,8 +580,8 @@ class Qrame:
f'Extrap {extrap_str}{exp_str}]' f'Extrap {extrap_str}{exp_str}]'
data_brm.loc[data_brm['time_mid'] == closest_date[i], data_brm.loc[data_brm['time_mid'] == closest_date[i],
['debit', 'incertitude', 'sect_mouillee', 'larg_miroir', ['debit', 'incertitude', 'sect_mouillee', 'larg_miroir',
'vitesse_moyenne', 'commentaire']] = \ 'vitesse_moyenne', 'commentaire']] = \
[q_list_brm[i], np.round(uq_list[i], 2), np.round(area_list[i], 2), [q_list_brm[i], np.round(uq_list[i], 2), np.round(area_list[i], 2),
np.round(width_list[i], 2), np.round(mean_vel[i], 2), comment] np.round(width_list[i], 2), np.round(mean_vel[i], 2), comment]
...@@ -529,11 +589,11 @@ class Qrame: ...@@ -529,11 +589,11 @@ class Qrame:
comment = f'QRAME add [Transect {current_checked[i]}/{default_checked[i]}, ' \ comment = f'QRAME add [Transect {current_checked[i]}/{default_checked[i]}, ' \
f'Extrap {extrap_str}{exp_str}]' f'Extrap {extrap_str}{exp_str}]'
data_brm.loc[j] = ['C', 'JGG', name_station, -999, date_day_list[i], data_brm.loc[j] = ['C', 'JGG', name_station, -999, date_day_list[i],
date_hour_start[i], date_hour_end[i], -320000, '', '', '', date_hour_start[i], date_hour_end[i], -32000, '', '', '',
q_list_brm[i], np.round(uq_list[i], 2), '', q_list_brm[i], np.round(uq_list[i], 2), '',
np.round(area_list[i], 2), '', np.round(width_list[i], 2), np.round(area_list[i], 2), '', np.round(width_list[i], 2),
np.round(mean_vel[i], 2), '', '', '', comment, 'PC', '', '', np.round(mean_vel[i], 2), '', '', '', comment, 'PC', '', '',
''] '']
j -= 1 j -= 1
# Update num for new gauging # Update num for new gauging
...@@ -547,34 +607,15 @@ class Qrame: ...@@ -547,34 +607,15 @@ class Qrame:
unmatch_row.index = unmatch_index unmatch_row.index = unmatch_index
data_brm.loc[unmatch_index] = unmatch_row data_brm.loc[unmatch_index] = unmatch_row
# data_brm_by_date = data_brm.sort_values(by=['date', 'start'])
# data_brm_by_date = data_brm_by_date.rename_axis('sort_date').reset_index()
# data_brm = data_brm.sort_values(by=['date', 'start'])
# data_brm = data_brm.rename_axis('sort_date').reset_index()
# unmatch_index = data_brm.index[data_brm['num'] == -999].tolist()
# len_max_str = len(str(unmatch_index[-1]))
# zero = '0'
# list_unmatch = [f'Q{zero*(len_max_str-len(str(i)))}{i}' for i in range(1, len(unmatch_index)+1)]
# data_brm.loc[unmatch_index, 'num'] = list_unmatch
# data_brm = data_brm.sort_values(by=['sort_date'])
# data_brm = data_brm.reset_index(drop=True)
# gaps = [[s, e] for s, e in zip(unmatch_index, unmatch_index[1:]) if s + 1 < e]
# edges = iter(unmatch_index[:1] + sum(gaps, []) + unmatch_index[-1:])
# unmatch = list(zip(edges, edges))
# for start, end in unmatch:
# if start == 0:
# val_before = '0'
# else:
# val_before = data_brm.loc[[start - 1], 'num'].values[0]
# list_num = [f'{val_before} QRAME{i}' for i in range(end - start + 1)]
# data_brm.loc[start:end, 'num'] = list_num
# Delete time columns # Delete time columns
data_brm.drop(['time_start', 'time_end', 'time_mid'], axis=1, inplace=True) data_brm.drop(['time_start', 'time_end', 'time_mid'], axis=1, inplace=True)
# self.width_list = width_list
# self.area_list = area_list
#
# self.q_list = q_list
# self.uq_list = uq_list
if j < -1: if j < -1:
tk.messagebox.showinfo(title='New gauging added', tk.messagebox.showinfo(title='New gauging added',
message='Some gaugings were not in the database, they have been ' message='Some gaugings were not in the database, they have been '
...@@ -584,15 +625,17 @@ class Qrame: ...@@ -584,15 +625,17 @@ class Qrame:
length = len(q_list) length = len(q_list)
range_length = [f'QRAME{i}' for i in np.arange(1, length + 1)] range_length = [f'QRAME{i}' for i in np.arange(1, length + 1)]
mean_vel = [a / b for a, b in zip(q_list, area_list)] mean_vel = [a / b for a, b in zip(q_list, area_list)]
q_list_brm = [1000 * i for i in np.round(q_list, 2)] q_list_brm = [np.round(1000 * i) for i in np.round(q_list, 2)]
comment = [] comment = []
for i in range(len(q_list_brm)): for i in range(len(q_list_brm)):
comment.append(f'QRAME add [Transect {current_checked[i]}/{default_checked[i]}, ' \ comment.append(f'QRAME add [Transect {current_checked[i]}/{default_checked[i]}, ' \
f'Extrap {extrap_str}{exp_str}]') f'Extrap {extrap_str}{exp_str}]')
self.comment = comment
data_brm = pd.DataFrame( data_brm = pd.DataFrame(
{'C': ['C'] * length, 'JGG': ['JGG'] * length, 'station_name': [self.name_folder] * length, {'C': ['C'] * length, 'JGG': ['JGG'] * length, 'station_name': [self.name_folder] * length,
'num': [''] * length, 'date': date_day_list, 'date_start': date_hour_start, 'num': [''] * length, 'date': date_day_list, 'date_start': date_hour_start,
'date_end': date_hour_end, 'cote': [-320000] * length, 'cote_start': [''] * length, 'date_end': date_hour_end, 'cote': [-32000] * length, 'cote_start': [''] * length,
'cote_end': [''] * length, 'code_station': [''] * length, 'cote_end': [''] * length, 'code_station': [''] * length,
'debit': q_list_brm, 'incertitude': np.round(uq_list, 2), 'debit': q_list_brm, 'incertitude': np.round(uq_list, 2),
'distance_station': [''] * length, 'sect_mouillee': np.round(area_list, 2), 'distance_station': [''] * length, 'sect_mouillee': np.round(area_list, 2),
...@@ -605,9 +648,8 @@ class Qrame: ...@@ -605,9 +648,8 @@ class Qrame:
data_brm = data_brm.reset_index(drop=True) data_brm = data_brm.reset_index(drop=True)
data_brm['num'] = range_length data_brm['num'] = range_length
# data_brm = data_brm.sort_values(by=['num'])
# data_brm = data_brm.reset_index(drop=True)
length = len(data_brm) length = len(data_brm)
print(f"AREA : {np.round(area_list, 2)}")
df = data_brm.to_csv(header=None, index=False, sep=';').strip('\r\n').split('\n') df = data_brm.to_csv(header=None, index=False, sep=';').strip('\r\n').split('\n')
df_str = [i.strip('\r') for i in df] df_str = [i.strip('\r') for i in df]
df_bareme = ';\n'.join(df_str) df_bareme = ';\n'.join(df_str)
...@@ -638,11 +680,12 @@ class Qrame: ...@@ -638,11 +680,12 @@ class Qrame:
except Exception as e: except Exception as e:
tk.messagebox.showerror(title='Extraction error', tk.messagebox.showerror(title='Extraction error',
message=f'An error has occured, please contact blaise.calmel@inrae.fr\n' message=f'An error has occured, please contact blaise.calmel@inrae.fr\n'
f'Message error : {e}') f'Message error : {e}')
print('exception') print('exception')
# Enable button # Enable button
self.disable_all(way=False) self.disable_all(way=False)
return
if __name__ == '__main__': if __name__ == '__main__':
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment