From 486eb5c57ba2a46943cc9ee6157d3b5e438cb6f3 Mon Sep 17 00:00:00 2001 From: Daniel Brown <ddb@star.sr.bham.ac.uk> Date: Tue, 26 Nov 2013 17:30:01 +0000 Subject: [PATCH] more fixes for GUI and other bits and pieces --- bin/test_aperture.py | 2 +- bin/test_parser.py | 1 + bin/test_plot.py | 2 +- pykat/commands.py | 22 +++++++++++++-- pykat/components.py | 66 +++++++++++++++++++++----------------------- pykat/detectors.py | 1 - pykat/finesse.py | 2 ++ 7 files changed, 56 insertions(+), 40 deletions(-) diff --git a/bin/test_aperture.py b/bin/test_aperture.py index a272bd8..2824b4e 100644 --- a/bin/test_aperture.py +++ b/bin/test_aperture.py @@ -17,7 +17,7 @@ xaxis m1 r_ap lin 0.1e-3 2e-3 10 kat = finesse.kat(kat_code = code) -maxtem = np.arange(0, 3, 2) +maxtem = np.arange(0, 1, 2) for tem in maxtem: print "Calculating maxtem ",tem,"..." diff --git a/bin/test_parser.py b/bin/test_parser.py index d1485db..159e751 100644 --- a/bin/test_parser.py +++ b/bin/test_parser.py @@ -14,6 +14,7 @@ ad ad1 0 n2 kat = finesse.kat(kat_code = code) +kat.add(xaxis("lin", [0, 360], kat.m2, kat.m2.phi, 1000)) kat.add(xaxis("lin", [0, 360], kat.m2, kat.m2.phi, 1000)) r = kat.run(printerr=1) diff --git a/bin/test_plot.py b/bin/test_plot.py index efb42c6..bc6440c 100644 --- a/bin/test_plot.py +++ b/bin/test_plot.py @@ -24,7 +24,7 @@ kat.add(photodiode('pd_cav','n4')) kat.add(photodiode('pd_ref','n2')) kat.add(photodiode('pd_trs','n5')) -kat.add(xaxis(Scale.linear, [0, 360], kat.m2, kat.m2.phi, 100)) +kat.add(xaxis("lin", [0, 360], kat.m2, kat.m2.phi, 100)) kat.m1.Rcx = -1000.0 kat.m1.Rcy = -1000.0 diff --git a/pykat/commands.py b/pykat/commands.py index bf37eac..8737e57 100644 --- a/pykat/commands.py +++ b/pykat/commands.py @@ -15,6 +15,10 @@ class Command(object): """ Base class for individual finesse optical components """ raise NotImplementedError("This function is not implemented") + @staticmethod + def parseFinesseText(text): + raise NotImplementedError("This function is not implemented") + def _on_kat_add(self, kat): """ Called when this component has been added to a kat object @@ -53,12 +57,12 @@ class xaxis(Command): if numpy.size(limits) != 2 : raise exceptions.ValueError("limits input should be a 2x1 vector of limits for the xaxis") - self.limits = limits + self.limits = numpy.array(limits).astype(float) if steps <= 0 : raise exceptions.ValueError("steps value should be > 0") - self.steps = steps + self.steps = int(steps) # if entered component is a string then just store and use that if isinstance(comp, str): @@ -74,6 +78,20 @@ class xaxis(Command): raise exceptions.ValueError("param argument is not of type Param") else: self.__param = param + + @staticmethod + def parseFinesseText(text): + values = text.split(" ") + + if values[0] != "xaxis" and values[0] != "xaxis*" and values[0] != "x2axis" and values[0] != "x2axis*": + raise exceptions.RuntimeError("'{0}' not a valid Finesse xaxis command".format(text)) + + values.pop(0) # remove initial value + + if len(values) != 6: + raise exceptions.RuntimeError("xaxis Finesse code format incorrect '{0}'".format(text)) + + return xaxis(values[2], [values[3], values[4]], values[0], values[1], values[5]) def getFinesseText(self): # store either the component name of the string provided diff --git a/pykat/components.py b/pykat/components.py index 3f0dd9f..c8c578b 100644 --- a/pykat/components.py +++ b/pykat/components.py @@ -20,11 +20,6 @@ class Component(object) : self.__nodes = [] self._requested_node_names = [] self._kat = None - - #if not isinstance(kat,pykat.finesse.kat): - # raise exceptions.ValueError("kat argument is not a pykat.finesse.kat object") - - #kat.add(self) def _on_kat_add(self, kat): """ @@ -87,48 +82,48 @@ class mirror(Component): self._requested_node_names.append(node1) self._requested_node_names.append(node2) - self.__R = R - self.__T = T - self.__phi = phi - self.__Rcx = Rcx - self.__Rcy = Rcy - self.__xbeta = xbeta - self.__ybeta = ybeta + self.__R = float(R) + self.__T = float(T) + self.__phi = float(phi) + self.__Rcx = float(Rcx) + self.__Rcy = float(Rcy) + self.__xbeta = float(xbeta) + self.__ybeta = float(ybeta) @property - def R(self): - return Param('R',self.__R) + def R(self): return Param('R', self.__R) @R.setter - def R(self,value): - self.__R = value + def R(self,value): self.__R = float(value) + @property def T(self): return Param('T', self.__T) @T.setter - def T(self,value): self.__T = value + def T(self,value): self.__T = float(value) @property def phi(self): return Param('phi', self.__phi) @phi.setter - def phi(self,value): self.__phi = value + def phi(self,value): self.__phi = float(value) @property def Rcx(self): return Param('Rcx', self.__Rcx) @Rcx.setter - def Rcx(self,value): self.__Rcx = value + def Rcx(self,value): self.__Rcx = float(value) + @property def Rcy(self): return Param('Rcy', self.__Rcy) @Rcy.setter - def Rcy(self,value): self.__Rcy = value + def Rcy(self,value): self.__Rcy = float(value) @property def xbeta(self): return Param('xbeta', self.__xbeta) @xbeta.setter - def xbeta(self,value): self.__xbeta = value + def xbeta(self,value): self.__xbeta = float(value) @property def ybeta(self): return Param('ybeta', self.__ybeta) @ybeta.setter - def ybeta(self,value): self.__ybeta = value + def ybeta(self,value): self.__ybeta = float(value) @property def Rc(self): @@ -139,8 +134,8 @@ class mirror(Component): @Rc.setter def Rc(self,value): - self.Rcx = value - self.Rcy = value + self.Rcx = float(value) + self.Rcy = float(value) @staticmethod def parseFinesseText(text): @@ -178,7 +173,7 @@ class mirror(Component): if self._svgItem == None: nodes = self.getNodes() self._svgItem = pykat.gui.graphics.ComponentQGraphicsItem(":/resources/mirror_flat.svg",self - ,[(-4,15,self.nodes[0]),(14,15,self.nodes[1])]) + ,[(-4,15,nodes[0]),(14,15,nodes[1])]) return self._svgItem @@ -189,18 +184,18 @@ class space(Component): self._requested_node_names.append(node1) self._requested_node_names.append(node2) - self.__L = L - self.__n = n + self.__L = float(L) + self.__n = float(n) self._QItem = None @property def L(self): return Param('L', self.__L) @L.setter - def L(self,value): self.__L = value + def L(self,value): self.__L = float(value) @property def n(self): return Param('n', self.__n) @n.setter - def n(self,value): self.__n = value + def n(self,value): self.__n = float(value) @staticmethod def parseFinesseText(text): @@ -253,24 +248,24 @@ class laser(Component): self._requested_node_names.append(node) - self.__power = P - self.__f_offset = f_offset - self.__phase = phase + self.__power = float(P) + self.__f_offset = float(f_offset) + self.__phase = float(phase) @property def power(self): return Param('P', self.__power) @power.setter - def power(self,value): self.__power = value + def power(self,value): self.__power = float(value) @property def f_offset(self): return Param('f', self.__f_offset) @f_offset.setter - def f_offset(self,value): self.__f_offset = value + def f_offset(self,value): self.__f_offset = float(value) @property def phase(self): return Param('phase', self.__phase) @phase.setter - def phase(self,value): self.__phase = value + def phase(self,value): self.__phase = float(value) @staticmethod def parseFinesseText(text): @@ -295,6 +290,7 @@ class laser(Component): def getQGraphicsItem(self): if self._svgItem == None: + nodes = self.getNodes() self._svgItem = pykat.gui.graphics.ComponentQGraphicsItem(":/resources/laser.svg", self,[(65,25,nodes[0])]) diff --git a/pykat/detectors.py b/pykat/detectors.py index dadcc9a..f28228b 100644 --- a/pykat/detectors.py +++ b/pykat/detectors.py @@ -28,7 +28,6 @@ class Detector(object) : def _on_kat_add(self, kat): self._node = kat.nodes.createNode(self.__requested_node) - #self.__node.connect(self) @staticmethod def parseFinesseText(text): diff --git a/pykat/finesse.py b/pykat/finesse.py index f44d365..3124134 100644 --- a/pykat/finesse.py +++ b/pykat/finesse.py @@ -144,6 +144,8 @@ class kat(object): self.add(pykat.components.space.parseFinesseText(line)) elif(first == "l"): self.add(pykat.components.laser.parseFinesseText(line)) + elif(first == "xaxis" or first == "x2axis" or first == "xaxis*" or first == "x2axis*"): + self.add(pykat.commands.xaxis.parseFinesseText(line)) else: print "Could not parse `{0}`".format(line) self.__extra_lines.append(line + "\n") -- GitLab