diff --git a/ohmpi/ohmpi.py b/ohmpi/ohmpi.py index 36590e0891fffe4d855695819f199104e1e8e25d..6ac5049c02677a77de6c0d873640a495172beeaa 100644 --- a/ohmpi/ohmpi.py +++ b/ohmpi/ohmpi.py @@ -86,11 +86,17 @@ class OhmPi(object): 'nb_meas': 1, 'sequence_delay': 1, 'nb_stack': 1, - 'export_path': 'data/measurement.csv' + 'sampling_interval': 2, + 'tx_volt': 5, + 'duty_cycle': 0.5, + 'strategy': 'constant', + 'export_path': None, + 'export_dir': 'data', + 'export_name': 'measurement.csv' } # read in acquisition settings - if settings is not None: - self.update_settings(settings) + # if settings is not None: + self.update_settings(settings) self.exec_logger.debug('Initialized with settings:' + str(self.settings)) @@ -410,12 +416,13 @@ class OhmPi(object): else: self.exec_logger.warning('Not on Raspberry Pi, skipping reboot...') - def run_measurement(self, quad=None, nb_stack=None, injection_duration=None, + def run_measurement(self, quad=None, nb_stack=None, injection_duration=None, duty_cycle=None, autogain=True, strategy='constant', tx_volt=5., best_tx_injtime=0.1, cmd_id=None, **kwargs): # TODO: add sampling_interval -> impact on _hw.rx.sampling_rate (store the current value, change the _hw.rx.sampling_rate, do the measurement, reset the sampling_rate to the previous value) # TODO: default value of tx_volt and other parameters set to None should be given in config.py and used in function definition # TODO: add rs_check option (or propose an other way to do this) + # TODO: better way of handling default settings """Measures on a quadrupole and returns transfer resistance. Parameters @@ -452,7 +459,9 @@ class OhmPi(object): if nb_stack is None: nb_stack = self.settings['nb_stack'] if injection_duration is None: - injection_duration = self.settings['injection_duration'] + injection_duration = self.settings['injection_duration'] + if duty_cycle is None: + duty_cycle = self.settings['duty_cycle'] tx_volt = float(tx_volt) bypass_check = kwargs['bypass_check'] if 'bypass_check' in kwargs.keys() else False if self.switch_mux_on(quad, bypass_check=bypass_check, cmd_id=cmd_id): @@ -582,7 +591,11 @@ class OhmPi(object): self.reset_mux() # create filename with timestamp - filename = self.settings["export_path"].replace('.csv', + if self.settings["export_path"] is None: + filename = self.settings['export_path'].replace( + '.csv', f'_{datetime.now().strftime("%Y%m%dT%H%M%S")}.csv') + else: + filename = self.settings["export_path"].replace('.csv', f'_{datetime.now().strftime("%Y%m%dT%H%M%S")}.csv') self.exec_logger.debug(f'Saving to {filename}') @@ -847,7 +860,12 @@ class OhmPi(object): - nb_meas (total number of times the sequence will be run) - sequence_delay (delay in second between each sequence run) - nb_stack (number of stack for each quadrupole measurement) - - export_path (path where to export the data, timestamp will be added to filename) + - strategy (injection strategy: constant, vmax, vmin) + - duty_cycle (injection duty cycle comprised between 0.5 - 1) + - export_dir (directory where to export the data) + - export_name (name of exported file, timestamp will be added to filename) + - export_path (path where to export the data, timestamp will be added to filename ; + if export_path is given, it goes over export_dir and export_name) Parameters ---------- @@ -872,6 +890,13 @@ class OhmPi(object): status = False else: self.exec_logger.warning('Settings are missing...') + + if self.settings['export_path'] is None: + self.settings['export_path'] = os.path.join(self.settings['export_dir'], self.settings['export_name']) + else: + self.settings['export_dir'] = os.path.split(self.settings['export_path'])[0] + self.settings['export_name'] = os.path.split(self.settings['export_path'])[1] + return status # Properties