def get_collection_intersection(*args): ret = [] for ii, arg in enumerate(args): if ii == 0: ret = OrderedSet(tf.get_collection(arg)) else: ret = ret.intersection(OrderedSet(tf.get_collection(arg))) return list(ret)
def get_collection_intersection(*args): ret = [] for ii,arg in enumerate(args): if ii == 0: ret = OrderedSet(tf.get_collection(arg)) else: ret = ret.intersection(OrderedSet(tf.get_collection(arg))) return list(ret)
def _merge_node(self, node_list): _node_set = set([]) merged_list = [] for n in node_list: if n not in _node_set: node_set = OrderedSet([n]) node_set.update(self._get_pe_cluster(n)) _node_set.update(node_set) if merged_list and node_set.intersection(merged_list[-1]): merged_list[-1].update(node_set) else: merged_list.append(node_set) return merged_list
def iter_links_by_attrs(self, **k_attrs: Any) -> Generator[LinkType, None, None]: matched_links = None if len(k_attrs) == 0: for link in self.links.values(): yield link else: for attr, value in k_attrs.items(): assert attr in self.link_index, 'Attr %s must be indexed before search' % attr if value not in self.link_index[attr]: matched_links = OrderedSet() break else: tmp = self.link_index[attr][value] if matched_links is None: matched_links = tmp else: matched_links = matched_links.intersection(tmp) for link_id in matched_links: yield self.links[link_id]
def iter_nodes_by_attrs(self, **k_attrs: Any) -> Generator[NodeType, None, None]: matched_nodes = None if len(k_attrs) == 0: for node in self.nodes.values(): yield node else: for attr, value in k_attrs.items(): assert attr in self.node_index, 'Attr `%s` must be indexed before search' % attr if value not in self.node_index[attr]: matched_nodes = OrderedSet() break else: tmp = self.node_index[attr][value] if matched_nodes is None: matched_nodes = tmp else: matched_nodes = matched_nodes.intersection(tmp) for node_id in matched_nodes: yield self.nodes[node_id]
def comm(a, b): sa, sb = map(OrderedSet, (a, b)) return (sa.difference(sb), sb.difference(sa), OrderedSet.intersection(sa, sb))