예제 #1
0
    def load(self, p):

        cp = CanvasParser(p)
        if cp.get_root() is None:
            return

        nodes = dict()

        #=======================================================================
        # load nodes
        #=======================================================================
        # load roots
        for t, klass in (('stage', RootNode),
                         ('spectrometer', SpectrometerNode),
                         ('valve', ValveNode),
                         ('rough_valve', ValveNode),
                         ('turbo', PumpNode),
                         ('ionpump', PumpNode),
                         ('laser', LaserNode),
                         ('tank', TankNode),
                         ('pipette', PipetteNode),
                         ('gauge', GaugeNode),
        ):
            for si in cp.get_elements(t):
                n = si.text.strip()
                if t in ('valve', 'rough_valve'):
                    o_vol = get_volume(si, tag='open_volume', default=10)
                    c_vol = get_volume(si, tag='closed_volume', default=5)
                    vol = (o_vol, c_vol)
                else:
                    vol = get_volume(si)

                node = klass(name=n, volume=vol)
                nodes[n] = node

        #=======================================================================
        # load edges
        #=======================================================================
        for ei in cp.get_elements('connection'):
            sa = ei.find('start')
            ea = ei.find('end')
            vol = get_volume(ei)
            edge = Edge(volume=vol)
            s_name = ''
            if sa.text in nodes:
                s_name = sa.text
                sa = nodes[s_name]
                edge.a_node = sa
                sa.add_edge(edge)

            e_name = ''
            if ea.text in nodes:
                e_name = ea.text
                ea = nodes[e_name]
                edge.b_node = ea
                ea.add_edge(edge)

            edge.name = '{}_{}'.format(s_name, e_name)

        self.nodes = nodes
예제 #2
0
    def load(self, p):

        cp = CanvasParser(p)
        if cp.get_root() is None:
            return

        nodes = dict()

        # =======================================================================
        # load nodes
        # =======================================================================
        # load roots
        for t, klass in (('stage', RootNode),
                         ('spectrometer', SpectrometerNode),
                         ('valve', ValveNode),
                         ('rough_valve', ValveNode),
                         ('manual_valve', ValveNode),
                         ('turbo', PumpNode),
                         ('ionpump', PumpNode),
                         ('laser', LaserNode),
                         ('tank', TankNode),
                         ('pipette', PipetteNode),
                         ('gauge', GaugeNode),
                         ('getter', GetterNode)):
            for si in cp.get_elements(t):
                n = si.text.strip()
                if t in ('valve', 'rough_valve', 'manual_valve'):
                    o_vol = get_volume(si, tag='open_volume', default=10)
                    c_vol = get_volume(si, tag='closed_volume', default=5)
                    vol = (o_vol, c_vol)
                else:
                    vol = get_volume(si)

                node = klass(name=n, volume=vol)
                nodes[n] = node

        # =======================================================================
        # load edges
        # =======================================================================
        for tag in ('connection','elbow'):
            for ei in cp.get_elements(tag):
                sa = ei.find('start')
                ea = ei.find('end')
                vol = get_volume(ei)
                edge = Edge(volume=vol)
                s_name = ''
                if sa.text in nodes:
                    s_name = sa.text
                    sa = nodes[s_name]
                    edge.nodes.append(sa)
                    sa.add_edge(edge)

                e_name = ''
                if ea.text in nodes:
                    e_name = ea.text
                    ea = nodes[e_name]
                    # edge.b_node = ea
                    edge.nodes.append(ea)
                    ea.add_edge(edge)

                edge.name = '{}_{}'.format(s_name, e_name)

        for c in ('tee_connection', 'fork_connection'):
            for conn in cp.get_elements(c):
                left = conn.find('left')
                right = conn.find('right')
                mid = conn.find('mid')

                edge = Edge(vol=get_volume(conn))
                lt = left.text.strip()
                rt = right.text.strip()
                mt = mid.text.strip()

                ns = []
                for x in (lt, mt, rt):
                    if x in nodes:
                        ln = nodes[x]
                        edge.nodes.append(ln)
                        ln.add_edge(edge)
                        ns.append(x)

                edge.name = '-'.join(ns)

        self.nodes = nodes
예제 #3
0
    def load(self, p):

        cp = CanvasParser(p)
        if cp.get_root() is None:
            return

        nodes = dict()

        # =======================================================================
        # load nodes
        # =======================================================================
        # load roots
        for t, klass in (('stage', RootNode), ('spectrometer',
                                               SpectrometerNode),
                         ('valve', ValveNode), ('rough_valve', ValveNode),
                         ('manual_valve', ValveNode), ('turbo', PumpNode),
                         ('ionpump', PumpNode), ('laser', LaserNode),
                         ('tank', TankNode), ('pipette', PipetteNode),
                         ('gauge', GaugeNode), ('getter', GetterNode)):
            for si in cp.get_elements(t):
                n = si.text.strip()
                if t in ('valve', 'rough_valve', 'manual_valve'):
                    o_vol = get_volume(si, tag='open_volume', default=10)
                    c_vol = get_volume(si, tag='closed_volume', default=5)
                    vol = (o_vol, c_vol)
                else:
                    vol = get_volume(si)

                node = klass(name=n, volume=vol)
                nodes[n] = node

        # =======================================================================
        # load edges
        # =======================================================================
        for tag in ('connection', 'elbow'):
            for ei in cp.get_elements(tag):
                sa = ei.find('start')
                ea = ei.find('end')
                vol = get_volume(ei)
                edge = Edge(volume=vol)
                s_name = ''
                if sa.text in nodes:
                    s_name = sa.text
                    sa = nodes[s_name]
                    edge.nodes.append(sa)
                    sa.add_edge(edge)

                e_name = ''
                if ea.text in nodes:
                    e_name = ea.text
                    ea = nodes[e_name]
                    # edge.b_node = ea
                    edge.nodes.append(ea)
                    ea.add_edge(edge)

                edge.name = '{}_{}'.format(s_name, e_name)

        for c in ('tee_connection', 'fork_connection'):
            for conn in cp.get_elements(c):
                left = conn.find('left')
                right = conn.find('right')
                mid = conn.find('mid')

                edge = Edge(vol=get_volume(conn))
                lt = left.text.strip()
                rt = right.text.strip()
                mt = mid.text.strip()

                ns = []
                for x in (lt, mt, rt):
                    if x in nodes:
                        ln = nodes[x]
                        edge.nodes.append(ln)
                        ln.add_edge(edge)
                        ns.append(x)

                edge.name = '-'.join(ns)

        self.nodes = nodes
예제 #4
0
    def load(self, p):

        cp = CanvasParser(p)
        if cp.get_root() is None:
            return

        nodes = dict()

        #=======================================================================
        # load nodes
        #=======================================================================
        # load roots
        for t, klass in (
            ('stage', RootNode),
            ('spectrometer', SpectrometerNode),
            ('valve', ValveNode),
            ('rough_valve', ValveNode),
            ('turbo', PumpNode),
            ('ionpump', PumpNode),
            ('laser', LaserNode),
            ('tank', TankNode),
            ('pipette', PipetteNode),
            ('gauge', GaugeNode),
        ):
            for si in cp.get_elements(t):
                n = si.text.strip()
                if t in ('valve', 'rough_valve'):
                    o_vol = get_volume(si, tag='open_volume', default=10)
                    c_vol = get_volume(si, tag='closed_volume', default=5)
                    vol = (o_vol, c_vol)
                else:
                    vol = get_volume(si)

                node = klass(name=n, volume=vol)
                nodes[n] = node

        #=======================================================================
        # load edges
        #=======================================================================
        for ei in cp.get_elements('connection'):
            sa = ei.find('start')
            ea = ei.find('end')
            vol = get_volume(ei)
            edge = Edge(volume=vol)
            s_name = ''
            if sa.text in nodes:
                s_name = sa.text
                sa = nodes[s_name]
                edge.a_node = sa
                sa.add_edge(edge)

            e_name = ''
            if ea.text in nodes:
                e_name = ea.text
                ea = nodes[e_name]
                edge.b_node = ea
                ea.add_edge(edge)

            edge.name = '{}_{}'.format(s_name, e_name)

        self.nodes = nodes