From f6332fb2d9172a85517ab3605ab3a4cd427511ac Mon Sep 17 00:00:00 2001 From: su530201 <olivier.kaufmann@umons.ac.be> Date: Wed, 3 May 2023 10:11:09 +0200 Subject: [PATCH] Improves switching -> return a status --- ohmpi.py | 99 +++++++++++++++++++++++++++----------------------------- 1 file changed, 48 insertions(+), 51 deletions(-) diff --git a/ohmpi.py b/ohmpi.py index 6f6a2e72..d4d5e18d 100644 --- a/ohmpi.py +++ b/ohmpi.py @@ -443,66 +443,63 @@ class OhmPi(object): # check arguments if quad is None: quad = [0, 0, 0, 0] - if nb_stack is None: nb_stack = self.settings['nb_stack'] if injection_duration is None: injection_duration = self.settings['injection_duration'] tx_volt = float(tx_volt) - - + d = {} if self.switch_mux_on(quad, cmd_id): self._hw.vab_square_wave(tx_volt, cycle_length=injection_duration*2, cycles=nb_stack) + d = { + "time": datetime.now().isoformat(), + "A": quad[0], + "B": quad[1], + "M": quad[2], + "N": quad[3], + "inj time [ms]": injection_duration, # NOTE: check this + # "Vmn [mV]": sum_vmn / (2 * nb_stack), + # "I [mA]": sum_i / (2 * nb_stack), + # "R [ohm]": sum_vmn / sum_i, + "Ps [mV]": self._hw.sp, + "nbStack": nb_stack, + "Tx [V]": tx_volt, + "CPU temp [degC]": self._hw.controller.cpu_temperature, + "Nb samples [-]": len(self._hw.readings), # TODO: use only samples after a delay in each pulse + "fulldata": self._hw.readings[:, [0, -2, -1]], + # "I_stack [mA]": i_stack_mean, + # "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)]), + # "Vmn_stack [mV]": vmn_stack_mean, + # "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)]), + # "R_stack [ohm]": r_stack_mean, + # "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)]), + # "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]": ps_stack_mean, + # "R_ab [ohm]": Rab + } + + # to the data logger + dd = d.copy() + dd.pop('fulldata') # too much for logger + dd.update({'A': str(dd['A'])}) + dd.update({'B': str(dd['B'])}) + dd.update({'M': str(dd['M'])}) + dd.update({'N': str(dd['N'])}) + + # round float to 2 decimal + for key in dd.keys(): # Check why this is applied on keys and not values... + if isinstance(dd[key], float): + dd[key] = np.round(dd[key], 3) + + dd['cmd_id'] = str(cmd_id) + self.data_logger.info(dd) + else: - self.exec_logger.info('Skipping {quad}') + self.exec_logger.info(f'Skipping {quad}') self.switch_mux_off(quad, cmd_id) - - d = { - "time": datetime.now().isoformat(), - "A": quad[0], - "B": quad[1], - "M": quad[2], - "N": quad[3], - "inj time [ms]": injection_duration, # NOTE: check this - # "Vmn [mV]": sum_vmn / (2 * nb_stack), - # "I [mA]": sum_i / (2 * nb_stack), - # "R [ohm]": sum_vmn / sum_i, - "Ps [mV]": self._hw.sp, - "nbStack": nb_stack, - "Tx [V]": tx_volt, - "CPU temp [degC]": self._hw.controller.cpu_temperature, - "Nb samples [-]": len(self._hw.readings), # TODO: use only samples after a delay in each pulse - "fulldata": self._hw.readings[:,[0,-2,-1]], - # "I_stack [mA]": i_stack_mean, - # "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)]), - # "Vmn_stack [mV]": vmn_stack_mean, - # "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)]), - # "R_stack [ohm]": r_stack_mean, - # "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)]), - # "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]": ps_stack_mean, - # "R_ab [ohm]": Rab - } - - # to the data logger - dd = d.copy() - dd.pop('fulldata') # too much for logger - dd.update({'A': str(dd['A'])}) - dd.update({'B': str(dd['B'])}) - dd.update({'M': str(dd['M'])}) - dd.update({'N': str(dd['N'])}) - - # round float to 2 decimal - for key in dd.keys(): # Check why this is applied on keys and not values... - if isinstance(dd[key], float): - dd[key] = np.round(dd[key], 3) - - dd['cmd_id'] = str(cmd_id) - self.data_logger.info(dd) - return d def run_multiple_sequences(self, cmd_id=None, sequence_delay=None, nb_meas=None, **kwargs): -- GitLab