예제 #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),
            ('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