diff --git a/pykat/SIfloat.py b/pykat/SIfloat.py index e93166719a30d21bfb80ba68c8776cd670d79cc3..43fc3236adf10547965fb9639462f165b0e25b2b 100644 --- a/pykat/SIfloat.py +++ b/pykat/SIfloat.py @@ -9,24 +9,24 @@ def SIfloat(value): return convertToFloat(value) def convertToFloat(value): - __prefix = {'y': 1e-24, # yocto - 'z': 1e-21, # zepto - 'a': 1e-18, # atto - 'f': 1e-15, # femto - 'p': 1e-12, # pico - 'n': 1e-9, # nano - 'u': 1e-6, # micro - 'm': 1e-3, # mili - 'c': 1e-2, # centi - 'd': 1e-1, # deci - 'k': 1e3, # kilo - 'M': 1e6, # mega - 'G': 1e9, # giga - 'T': 1e12, # tera - 'P': 1e15, # peta - 'E': 1e18, # exa - 'Z': 1e21, # zetta - 'Y': 1e24, # yotta + __prefix = {'y': 'e-24', # yocto + 'z': 'e-21', # zepto + 'a': 'e-18', # atto + 'f': 'e-15', # femto + 'p': 'e-12', # pico + 'n': 'e-9', # nano + 'u': 'e-6', # micro + 'm': 'e-3', # mili + 'c': 'e-2', # centi + 'd': 'e-1', # deci + 'k': 'e3', # kilo + 'M': 'e6', # mega + 'G': 'e9', # giga + 'T': 'e12', # tera + 'P': 'e15', # peta + 'E': 'e18', # exa + 'Z': 'e21', # zetta + 'Y': 'e24', # yotta } value = str(value) for i, j in __prefix.iteritems(): diff --git a/pykat/detectors.py b/pykat/detectors.py index 08e4466ec9a4e9872348229b1acaa0a55c73787d..d33d7e27accebfa1b760955b747343f24b121815 100644 --- a/pykat/detectors.py +++ b/pykat/detectors.py @@ -51,53 +51,48 @@ class Detector(object) : class photodiode(Detector): - class F: + class __F(list): def __init__(self, values=None): - if values is None: - self.values = [] - else: - self.values = values - - def __len__(self): - return len(self.values) - - def __getitem__(self, key): - # if key is of invalid type or value, the list values will raise the error - return self.values[key] - + if values==None: + values = [] + list.__init__(self,[SIfloat(value) for value in values]) + def __setitem__(self, key, value): - print "setting" - self.values[key] = SIfloat(value) + list.__setitem__(self,key, SIfloat(value)) - - class Phi(): - def __init__(self, values=None): - print values - if values is None: - self.values = [] + ### todo add append with SIfloat + + class __Phi(list): + def __convertValue(self, value): + if value=="max": + return value else: - self.values = values + return SIfloat(value) + + def __init__(self, values=None): + if values==None: + values = [] + list.__init__(self,[self.__convertValue(value) for value in values]) def __getitem__(self, key): # probably not needed - print "boom" - if self.values[key]=="max": - return self.values[key] + if list.__getitem__(self,key)=="max": + return list.__getitem__(self,key) else: - return float(self.values[key]) + return float(list.__getitem__(self,key)) def __setitem__(self,key,value): - if value=="max": - self.values[key] = value - else: - self.values[key] = SIfloat(value) - def append(self, value): - self.values.append(value) + list.__setitem__(self,key, self.__convertValue(value)) + ### todo add append with convertValue + + @property - def f(self): return self.F('f', self.__f) - @f.setter - def f(self, key, value): self.__f[key]=value + def f(self): return self.__f + @property + def phi(self): return self.__phi + + def __init__(self, name, node, senstype=None, num_demods=0, demods=[]): Detector.__init__(self, name, node) if num_demods>2: @@ -106,15 +101,12 @@ class photodiode(Detector): self.senstype = senstype # every second element into f (starting at 1) - self.__f = self.F(demods[::2]) + self.__f = self.__F(demods[::2]) # Every second element into phi (starting at 2) - self.__phi = self.Phi() + self.__phi = self.__Phi() for i in demods[1::2]: - self.__phi.append(i) - print self.__phi - print self.__phi[0] - + self.__phi.append(i) @staticmethod def parseFinesseText(text):