Commit c9e2c388 authored by Arnaud WATLET's avatar Arnaud WATLET
Browse files

updates R error computation

No related merge requests found
Showing with 55 additions and 48 deletions
+55 -48
...@@ -991,56 +991,63 @@ class OhmPi(object): ...@@ -991,56 +991,63 @@ class OhmPi(object):
else: else:
np.array([[]]) np.array([[]])
vmn_stack_mean = np.mean([np.diff(np.mean(vmn_stack[i*2:i*2+2], axis=1)) / 2 for i in range(nb_stack)])
vmn_std = np.mean([np.std(vmn_stack[::2]), np.std(vmn_stack[1::2])])
i_stack_mean = np.mean(i_stack)
i_std = np.mean(np.array([np.std(i_stack[::2]), np.std(i_stack[1::2])]))
r_stack_mean = vmn_stack_mean / i_stack_mean
r_stack_std = np.sqrt((vmn_std/vmn_stack_mean)**2 + (i_std/i_stack_mean)**2) * r_stack_mean
ps_stack_mean = np.mean(np.array([np.mean(np.mean(vmn_stack[i * 2:i * 2 + 2], axis=1)) for i in range(nb_stack)]))
# create a dictionary and compute averaged values from all stacks # create a dictionary and compute averaged values from all stacks
if self.board_version == 'mb.2023.0.0': # if self.board_version == 'mb.2023.0.0':
d = { d = {
"time": datetime.now().isoformat(), "time": datetime.now().isoformat(),
"A": quad[0], "A": quad[0],
"B": quad[1], "B": quad[1],
"M": quad[2], "M": quad[2],
"N": quad[3], "N": quad[3],
"inj time [ms]": (end_delay - start_delay) * 1000. if not out_of_range else 0., "inj time [ms]": (end_delay - start_delay) * 1000. if not out_of_range else 0.,
"Vmn [mV]": sum_vmn / (2 * nb_stack), "Vmn [mV]": sum_vmn / (2 * nb_stack),
"I [mA]": sum_i / (2 * nb_stack), "I [mA]": sum_i / (2 * nb_stack),
"R [ohm]": sum_vmn / sum_i, "R [ohm]": sum_vmn / sum_i,
"Ps [mV]": sum_ps / (2 * nb_stack), "Ps [mV]": sum_ps / (2 * nb_stack),
"nbStack": nb_stack, "nbStack": nb_stack,
"Tx [V]": tx_volt if not out_of_range else 0., "Tx [V]": tx_volt if not out_of_range else 0.,
"CPU temp [degC]": CPUTemperature().temperature, "CPU temp [degC]": CPUTemperature().temperature,
"Nb samples [-]": self.nb_samples, "Nb samples [-]": self.nb_samples,
"fulldata": fulldata, "fulldata": fulldata,
"I_stack [mA]": np.mean(i_stack), "I_stack [mA]": i_stack_mean,
"I_std [mA]": np.mean(np.array([np.std(i_stack[::2]),np.std(i_stack[1::2])])), "I_std [mA]": i_std,
"I_per_stack [mA]": np.array([np.mean(i_stack[i*2:i*2+2]) for i in range(nb_stack)]), "I_per_stack [mA]": np.array([np.mean(i_stack[i*2:i*2+2]) for i in range(nb_stack)]),
"Vmn_stack [mV]": np.mean([np.diff(np.mean(vmn_stack[i*2:i*2+2], axis=1)) / 2 for i in range(nb_stack)]), "Vmn_stack [mV]": vmn_stack_mean,
"Vmn_std [mV]": np.mean([np.std(vmn_stack[::2]),np.std(vmn_stack[1::2])]), "Vmn_std [mV]": vmn_std,
"Vmn_per_stack [mV]": np.array([np.diff(np.mean(vmn_stack[i*2:i*2+2], axis=1))[0] / 2 for i in range(nb_stack)]), "Vmn_per_stack [mV]": np.array([np.diff(np.mean(vmn_stack[i*2:i*2+2], axis=1))[0] / 2 for i in range(nb_stack)]),
"R_stack [ohm]": np.mean([np.diff(np.mean(vmn_stack[i*2:i*2+2], axis=1)) / 2 for i in range(nb_stack)]) / np.mean(i_stack), "R_stack [ohm]": r_stack_mean,
"R_std [ohm]": np.mean([np.std(vmn_stack[::2]),np.std(vmn_stack[1::2])]) / np.std(i_stack), ### TODO: modify formula "R_std [ohm]": r_stack_std,
"R_per_stack [Ohm]": np.mean([np.diff(np.mean(vmn_stack[i*2:i*2+2], axis=1)) / 2 for i in range(nb_stack)]) / np.array([np.mean(i_stack[i*2:i*2+2]) for i in range(nb_stack)]), "R_per_stack [Ohm]": np.mean([np.diff(np.mean(vmn_stack[i*2:i*2+2], axis=1)) / 2 for i in range(nb_stack)]) / np.array([np.mean(i_stack[i*2:i*2+2]) for i in range(nb_stack)]),
"PS_per_stack [mV]": np.array([np.mean(np.mean(vmn_stack[i*2:i*2+2], axis=1)) for i in range(nb_stack)]), "PS_per_stack [mV]": np.array([np.mean(np.mean(vmn_stack[i*2:i*2+2], axis=1)) for i in range(nb_stack)]),
"PS_stack [mV]": np.mean(np.array([np.mean(np.mean(vmn_stack[i*2:i*2+2], axis=1)) for i in range(nb_stack)])) "PS_stack [mV]": ps_stack_mean
} }
# print(np.array([(vmn_stack[i*2:i*2+2]) for i in range(nb_stack)])) # print(np.array([(vmn_stack[i*2:i*2+2]) for i in range(nb_stack)]))
elif self.board_version == '22.10': # elif self.board_version == '22.10':
d = { # d = {
"time": datetime.now().isoformat(), # "time": datetime.now().isoformat(),
"A": quad[0], # "A": quad[0],
"B": quad[1], # "B": quad[1],
"M": quad[2], # "M": quad[2],
"N": quad[3], # "N": quad[3],
"inj time [ms]": (end_delay - start_delay) * 1000. if not out_of_range else 0., # "inj time [ms]": (end_delay - start_delay) * 1000. if not out_of_range else 0.,
"Vmn [mV]": sum_vmn / (2 * nb_stack), # "Vmn [mV]": sum_vmn / (2 * nb_stack),
"I [mA]": sum_i / (2 * nb_stack), # "I [mA]": sum_i / (2 * nb_stack),
"R [ohm]": sum_vmn / sum_i, # "R [ohm]": sum_vmn / sum_i,
"Ps [mV]": sum_ps / (2 * nb_stack), # "Ps [mV]": sum_ps / (2 * nb_stack),
"nbStack": nb_stack, # "nbStack": nb_stack,
"Tx [V]": tx_volt if not out_of_range else 0., # "Tx [V]": tx_volt if not out_of_range else 0.,
"CPU temp [degC]": CPUTemperature().temperature, # "CPU temp [degC]": CPUTemperature().temperature,
"Nb samples [-]": self.nb_samples, # "Nb samples [-]": self.nb_samples,
"fulldata": fulldata, # "fulldata": fulldata,
} # }
else: # for testing, generate random data else: # for testing, generate random data
d = {'time': datetime.now().isoformat(), 'A': quad[0], 'B': quad[1], 'M': quad[2], 'N': quad[3], d = {'time': datetime.now().isoformat(), 'A': quad[0], 'B': quad[1], 'M': quad[2], 'N': quad[3],
......
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