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
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