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