diff --git a/frappy_psi/SR.py b/frappy_psi/SR.py index d07a6f3..e3f0026 100644 --- a/frappy_psi/SR.py +++ b/frappy_psi/SR.py @@ -45,13 +45,13 @@ class XY(HasIO, Readable): autorange = Parameter('autorange_on', EnumType('autorange', off=0, soft=1, hard=2), readonly=False, default=0) - sen_range = {name: value + 1 for value, name in enumerate( + sen_range = {index + 1: name for index, name in enumerate( ['2nV', '5nV', '10nV', '20nV', '50nV', '100nV', '200nV', '500nV', '1uV', '2uV', '5uV', '10uV', '20uV', '50uV', '100uV', '200uV', '500uV', '1mV', '2mV', '5mV', '10mV', '20mV', '50mV', '100mV', '200mV', '500mV', '1V'] )} - irange = Parameter('sensitivity index', EnumType('sensitivity index range', sen_range), readonly=False) + irange = Parameter('sensitivity index', EnumType('sensitivity index range', sen_range)) nm = Parameter('noise mode on', BoolType(), readonly=False) phase = Parameter('reference phase control', FloatRange(-360, 360), unit='deg', readonly=False) vmode = Parameter('control mode', EnumType(both_grounded=0, A=1, B=2, A_B_diff=3), readonly=False) @@ -76,7 +76,7 @@ class XY(HasIO, Readable): """ value_with_unit = re.compile(r'(\d+)([pnumkMG]?)') value, pfx = value_with_unit.match(value).groups() - pfx_dict = {'p': 1e-12, 'n': 1e-9, 'u': 1e-6, 'm': 1e-3, 'k': 1e3, 'M': 1e6, 'G':1e9} + pfx_dict = {'p': 1e-12, 'n': 1e-9, 'u': 1e-6, 'm': 1e-3, 'k': 1e3, 'M': 1e6, 'G': 1e9} if pfx in pfx_dict: value = round(float(value) * pfx_dict[pfx], 12) return float(value) @@ -140,12 +140,15 @@ class XY(HasIO, Readable): def write_range(self, target): cl_idx = None - for name, idx in self.sen_range.items(): - value = self.string_to_value(name) - if value < target < self.sen_range.get(idx + 1, float('inf')): - cl_idx = idx + 1 - elif value == target: - cl_idx = idx + for idx, name in self.sen_range.items(): + + if idx < len(self.sen_range): + value_l = self.string_to_value(self.sen_range.get(idx)) + value_r = self.string_to_value(self.sen_range.get(idx + 1)) + if value_l < target <= value_r: + cl_idx = idx + 1 + break + cl_idx = idx self.write_irange(cl_idx) return self.read_range()