def query_network(self, uuid, search_string, max_edges): myConst = CX_CONSTANTS niceCx = NiceCXNetwork() #uuid = '7246d8cf-c644-11e6-b48c-0660b7976219' search_terms_dict = {k:1 for k in search_string.split(',')} solr = pysolr.Solr(solr_url + uuid + '/', timeout=10) try: results = solr.search(search_string, rows=10000) #search_terms_array = [int(n['id']) for n in results.docs] search_terms_array = {int(n['id']):1 for n in results.docs} if(not search_terms_array): return {'message': 'No nodes found'} print('starting nodes 1') #=================== # METADATA #=================== available_aspects = [] for ae in (o for o in self.stream_aspect(uuid, 'metaData')): available_aspects.append(ae.get(CX_CONSTANTS.METADATA_NAME)) mde = MetaDataElement(json_obj=ae) niceCx.add_metadata(mde) #available_aspects = ['edges', 'nodes'] # TODO - remove this opaque_aspects = set(available_aspects).difference(known_aspects_min) print(opaque_aspects) #=================== # NODES #=================== if 'nodes' in available_aspects: for ae in (o for o in self.stream_aspect(uuid, 'nodes')): if search_terms_array.get(ae.get(CX_CONSTANTS.ID)): add_this_node = NodeElement(cx_fragment=ae) niceCx.create_node(add_this_node) else: raise Exception('Network does not contain any nodes. Cannot query') print('starting edges 1') #=================== # EDGES #=================== edge_count = 0 added_edges = 0 start_time = time.time() if 'edges' in available_aspects: for ae in (o for o in self.stream_aspect(uuid, 'edges')): if niceCx.nodes.get(ae.get(CX_CONSTANTS.EDGE_SOURCE_NODE_ID_OR_SUBNETWORK)) is not None or niceCx.nodes.get(ae.get(CX_CONSTANTS.EDGE_TARGET_NODE_ID)) is not None: add_this_edge = EdgeElement(cx_fragment=ae) niceCx.create_edge(add_this_edge) added_edges += 1 if edge_count % 5000 == 0: print(edge_count) #if edge_count > 30000: # break if added_edges > max_edges: raise StopIteration('Max edges reached') edge_count += 1 else: raise Exception('Network does not contain any nodes. Cannot query') print('Response time (Edge search): ' + str(time.time() - start_time)) print('starting nodes 2') #=================== # NODES #=================== for ae in (o for o in self.stream_aspect(uuid, 'nodes')): if niceCx.get_missing_nodes().get(ae.get(CX_CONSTANTS.ID)): add_this_node = NodeElement(cx_fragment=ae) niceCx.create_node(add_this_node) #==================== # NETWORK ATTRIBUTES #==================== if 'networkAttributes' in available_aspects: for ae in (o for o in self.stream_aspect(uuid, 'networkAttributes')): add_this_network_attribute = NetworkAttributesElement(cx_fragment=ae) niceCx.add_network_attribute(add_this_network_attribute) #=================== # NODE ATTRIBUTES #=================== if 'nodeAttributes' in available_aspects: for ae in (o for o in self.stream_aspect(uuid, 'nodeAttributes')): if niceCx.nodes.get(ae.get(CX_CONSTANTS.PROPERTY_OF)): add_this_node_att = NodeAttributesElement(json_obj=ae) niceCx.add_node_attribute(add_this_node_att) #=================== # EDGE ATTRIBUTES #=================== if 'edgeAttributes' in available_aspects: for ae in (o for o in self.stream_aspect(uuid, 'edgeAttributes')): if niceCx.edges.get(ae.get(CX_CONSTANTS.PROPERTY_OF)): add_this_edge_att = EdgeAttributesElement(json_obj=ae) niceCx.set_edge_attribute() #=================== # NODE CITATIONS #=================== if 'nodeCitations' in available_aspects: for ae in (o for o in self.stream_aspect(uuid, 'nodeCitations')): for e_po in ae.get(CX_CONSTANTS.PROPERTY_OF): if niceCx.get_nodes().get(e_po) is not None: niceCx.add_node_citations_from_cx(ae) #=================== # EDGE CITATIONS #=================== ec_count = 0 if 'edgeCitations' in available_aspects: for ae in (o for o in self.stream_aspect(uuid, 'edgeCitations')): for e_po in ae.get(CX_CONSTANTS.PROPERTY_OF): if niceCx.get_edges().get(e_po) is not None: niceCx.add_edge_citations_from_cx(ae) ec_count += 1 if ec_count % 500 == 0: print(ec_count) #=================== # CITATIONS #=================== if 'citations' in available_aspects: #====================================================== # FILTER CITATIONS IF THERE ARE EDGE OR NODE CITATIONS # OTHERWISE ADD THEM ALL (NO-FILTER) -- TODO #====================================================== for ae in (o for o in self.stream_aspect(uuid, 'citations')): add_this_citation = CitationElement(cx_fragment=ae) niceCx.add_citation(add_this_citation) #=================== # OPAQUE ASPECTS #=================== for oa in opaque_aspects: objects = self.stream_aspect(uuid, oa) obj_items = (o for o in objects) for oa_item in obj_items: aspect_element = AspectElement(oa_item, oa) niceCx.add_opaque_aspect(aspect_element) except SolrError as se: if('404' in se.message): ndex2.get_logger('SOLR').warning('Network not found ' + self.uuid + ' on ' + solr_url + ' server.') raise Exception("Network not found (SOLR)") else: ndex2.get_logger('SOLR').warning('Network error ' + self.uuid + ' on ' + solr_url + ' server. ' + se.message) raise Exception(se.message) except StopIteration as si: ndex2.get_logger('QUERY').warning("Found more than max edges. Raising exception") raise StopIteration(si.message) #nice_cx_json = niceCx.to_cx() return niceCx
def create_from_server(self, server, username, password, uuid): if server and uuid: niceCx = NiceCXNetwork() #=================== # METADATA #=================== available_aspects = [] for ae in (o for o in self.stream_aspect(uuid, 'metaData')): available_aspects.append(ae.get(CX_CONSTANTS.METADATA_NAME)) mde = MetaDataElement(json_obj=ae) niceCx.add_metadata(mde) #available_aspects = ['edges', 'nodes'] # TODO - remove this opaque_aspects = set(available_aspects).difference(known_aspects_min) print(opaque_aspects) #==================== # NETWORK ATTRIBUTES #==================== objects = self.stream_aspect(uuid, 'networkAttributes') obj_items = (o for o in objects) for network_item in obj_items: add_this_network_attribute = NetworkAttributesElement(cx_fragment=network_item) niceCx.add_network_attribute(add_this_network_attribute) #=================== # NODES #=================== objects = self.stream_aspect(uuid, 'nodes') obj_items = (o for o in objects) for node_item in obj_items: add_this_node = NodeElement(cx_fragment=node_item) niceCx.create_node(add_this_node) #=================== # EDGES #=================== objects = self.stream_aspect(uuid, 'edges') obj_items = (o for o in objects) for edge_item in obj_items: add_this_edge = EdgeElement(cx_fragment=edge_item) niceCx.create_edge(add_this_edge) #=================== # NODE ATTRIBUTES #=================== objects = self.stream_aspect(uuid, 'nodeAttributes') obj_items = (o for o in objects) for att in obj_items: add_this_node_att = NodeAttributesElement(json_obj=att) niceCx.add_node_attribute(add_this_node_att) #=================== # EDGE ATTRIBUTES #=================== objects = self.stream_aspect(uuid, 'edgeAttributes') obj_items = (o for o in objects) for att in obj_items: add_this_edge_att = EdgeAttributesElement(json_obj=att) niceCx.add_edge_attribute(add_this_edge_att) #=================== # CITATIONS #=================== objects = self.stream_aspect(uuid, 'citations') obj_items = (o for o in objects) for cit in obj_items: add_this_citation = CitationElement(cx_fragment=cit) niceCx.add_citation(add_this_citation) #=================== # SUPPORTS #=================== objects = self.stream_aspect(uuid, 'supports') obj_items = (o for o in objects) for sup in obj_items: add_this_supports = SupportElement(cx_fragment=sup) niceCx.add_support(add_this_supports) #=================== # NODE CITATIONS #=================== objects = self.stream_aspect(uuid, 'nodeCitations') obj_items = (o for o in objects) for node_cit in obj_items: niceCx.add_node_citations_from_cx(node_cit) #=================== # EDGE CITATIONS #=================== objects = self.stream_aspect(uuid, 'edgeCitations') obj_items = (o for o in objects) for edge_cit in obj_items: niceCx.add_edge_citations_from_cx(edge_cit) #=================== # OPAQUE ASPECTS #=================== for oa in opaque_aspects: objects = self.stream_aspect(uuid, oa) obj_items = (o for o in objects) for oa_item in obj_items: aspect_element = AspectElement(oa_item, oa) niceCx.add_opaque_aspect_element(aspect_element) return niceCx else: raise Exception('Server and uuid not specified')
def create_nice_cx_from_server(server=None, username=None, password=None, uuid=None): """ Create a NiceCXNetwork based on a network retrieved from NDEx, specified by its UUID. If the network is not public, then username and password arguments for an account on the server with permission to access the network must be supplied. :param server: the URL of the NDEx server hosting the network. :param username: the user name of an account with permission to access the network. :param password: the password of an account with permission to access the network. :param uuid: the UUID of the network. :return: NiceCXNetwork """ if server and uuid: my_nicecx = NiceCXNetwork() # =================== # METADATA # =================== available_aspects = [] md_aspect_iter = my_nicecx.get_aspect(uuid, 'metaData', server, username, password) if md_aspect_iter: for ae in (o for o in md_aspect_iter): available_aspects.append(ae.get(CX_CONSTANTS.METADATA_NAME)) mde = MetaDataElement(cx_fragment=ae) my_nicecx.add_metadata(mde) else: if not username or not password: raise Exception( 'Network is not available. Username and/or password not supplied' ) else: raise Exception('Network not available') opaque_aspects = set(available_aspects).difference(known_aspects_min) # ==================== # NETWORK ATTRIBUTES # ==================== if 'networkAttributes' in available_aspects: objects = my_nicecx.get_aspect(uuid, 'networkAttributes', server, username, password) for network_item in objects: my_nicecx.add_network_attribute(json_obj=network_item) my_nicecx.add_metadata_stub('networkAttributes') # =================== # @CONTEXT # =================== if '@context' in available_aspects: objects = my_nicecx.get_aspect(uuid, '@context', server, username, password) my_nicecx.set_context(objects) if (my_nicecx.metadata.get('@context') is None): my_nicecx.add_metadata_stub('@context') else: my_nicecx.metadata.get('@context').set_element_count(1) # =================== # NODES # =================== if 'nodes' in available_aspects: objects = my_nicecx.get_aspect(uuid, 'nodes', server, username, password) for node_item in objects: my_nicecx.create_node(cx_fragment=node_item) my_nicecx.add_metadata_stub('nodes') # =================== # EDGES # =================== if 'edges' in available_aspects: objects = my_nicecx.get_aspect(uuid, 'edges', server, username, password) for edge_item in objects: my_nicecx.create_edge(cx_fragment=edge_item) my_nicecx.add_metadata_stub('edges') # =================== # NODE ATTRIBUTES # =================== if 'nodeAttributes' in available_aspects: objects = my_nicecx.get_aspect(uuid, 'nodeAttributes', server, username, password) for att in objects: # my_nicecx.set_node_attribute(att.get('po'), att.get('n'), att.get('v'), type=att.get('d')) node_attribute_element = NodeAttributesElement(cx_fragment=att) my_nicecx.nodeAttributeHeader.add( node_attribute_element.get_name()) nodeAttrs = my_nicecx.nodeAttributes.get( node_attribute_element.get_property_of()) if nodeAttrs is None: nodeAttrs = [] my_nicecx.nodeAttributes[ node_attribute_element.get_property_of()] = nodeAttrs nodeAttrs.append(node_attribute_element) my_nicecx.add_metadata_stub('nodeAttributes') # =================== # EDGE ATTRIBUTES # =================== if 'edgeAttributes' in available_aspects: objects = my_nicecx.get_aspect(uuid, 'edgeAttributes', server, username, password) for att in objects: edge_attribute_element = EdgeAttributesElement(cx_fragment=att) my_nicecx.edgeAttributeHeader.add( edge_attribute_element.get_name()) edge_attrs = my_nicecx.edgeAttributes.get(att.get('po')) if edge_attrs is None: edge_attrs = [] my_nicecx.edgeAttributes[ edge_attribute_element.get_property_of()] = edge_attrs edge_attrs.append(edge_attribute_element) my_nicecx.add_metadata_stub('edgeAttributes') # =================== # CITATIONS # =================== if 'citations' in available_aspects: objects = my_nicecx.get_aspect(uuid, 'citations', server, username, password) for cit in objects: aspect_element = AspectElement(cit, 'citations') my_nicecx.add_opaque_aspect_element(aspect_element) my_nicecx.add_metadata_stub('citations') # =================== # SUPPORTS # =================== if 'supports' in available_aspects: objects = my_nicecx.get_aspect(uuid, 'supports', server, username, password) for sup in objects: aspect_element = AspectElement(sup, 'supports') my_nicecx.add_opaque_aspect_element(aspect_element) my_nicecx.add_metadata_stub('supports') # =================== # EDGE SUPPORTS # =================== if 'edgeSupports' in available_aspects: objects = my_nicecx.get_aspect(uuid, 'edgeSupports', server, username, password) for add_this_edge_sup in objects: aspect_element = AspectElement(add_this_edge_sup, 'edgeSupports') my_nicecx.add_opaque_aspect_element(aspect_element) my_nicecx.add_metadata_stub('edgeSupports') # =================== # NODE CITATIONS # =================== if 'nodeCitations' in available_aspects: objects = my_nicecx.get_aspect(uuid, 'nodeCitations', server, username, password) for node_cit in objects: aspect_element = AspectElement(node_cit, 'nodeCitations') my_nicecx.add_opaque_aspect_element(aspect_element) my_nicecx.add_metadata_stub('nodeCitations') # =================== # EDGE CITATIONS # =================== if 'edgeCitations' in available_aspects: objects = my_nicecx.get_aspect(uuid, 'edgeCitations', server, username, password) for edge_cit in objects: aspect_element = AspectElement(edge_cit, 'edgeCitations') my_nicecx.add_opaque_aspect_element(aspect_element) my_nicecx.add_metadata_stub('edgeCitations') # =================== # OPAQUE ASPECTS # =================== for oa in opaque_aspects: objects = my_nicecx.get_aspect(uuid, oa, server, username, password) for oa_item in objects: aspect_element = AspectElement(oa_item, oa) my_nicecx.add_opaque_aspect_element(aspect_element) my_nicecx.add_metadata_stub(oa) else: raise Exception('Server and uuid not specified') return my_nicecx
def create_nice_cx_from_cx(cx): """ Create a NiceCXNetwork from a CX list. :param cx: a list in CX format :return: NiceCXNetwork """ my_nicecx = NiceCXNetwork() if cx: # =================== # METADATA # =================== available_aspects = [] for ae in ( o for o in my_nicecx.get_frag_from_list_by_key(cx, 'metaData')): available_aspects.append(ae.get(CX_CONSTANTS.METADATA_NAME)) mde = MetaDataElement(cx_fragment=ae) my_nicecx.add_metadata(mde) opaque_aspects = set(available_aspects).difference(known_aspects_min) # ==================== # NETWORK ATTRIBUTES # ==================== if 'networkAttributes' in available_aspects: objects = my_nicecx.get_frag_from_list_by_key( cx, 'networkAttributes') for network_item in objects: add_this_network_attribute = NetworkAttributesElement( cx_fragment=network_item) my_nicecx.add_network_attribute( network_attribute_element=add_this_network_attribute) my_nicecx.add_metadata_stub('networkAttributes') # =================== # NODES # =================== if 'nodes' in available_aspects: objects = my_nicecx.get_frag_from_list_by_key(cx, 'nodes') for node_item in objects: my_nicecx.create_node(cx_fragment=node_item) my_nicecx.add_metadata_stub('nodes') # =================== # EDGES # =================== if 'edges' in available_aspects: objects = my_nicecx.get_frag_from_list_by_key(cx, 'edges') for edge_item in objects: my_nicecx.create_edge(cx_fragment=edge_item) my_nicecx.add_metadata_stub('edges') # =================== # NODE ATTRIBUTES # =================== if 'nodeAttributes' in available_aspects: objects = my_nicecx.get_frag_from_list_by_key(cx, 'nodeAttributes') for att in objects: # my_nicecx.set_node_attribute(None, None, None, cx_fragment=att) node_attribute_element = NodeAttributesElement(cx_fragment=att) my_nicecx.nodeAttributeHeader.add( node_attribute_element.get_name()) nodeAttrs = my_nicecx.nodeAttributes.get( node_attribute_element.get_property_of()) if nodeAttrs is None: nodeAttrs = [] my_nicecx.nodeAttributes[ node_attribute_element.get_property_of()] = nodeAttrs nodeAttrs.append(node_attribute_element) my_nicecx.add_metadata_stub('nodeAttributes') # =================== # EDGE ATTRIBUTES # =================== if 'edgeAttributes' in available_aspects: objects = my_nicecx.get_frag_from_list_by_key(cx, 'edgeAttributes') for att in objects: #my_nicecx.set_edge_attribute(None, None, None, cx_fragment=att) edge_attribute_element = EdgeAttributesElement(cx_fragment=att) my_nicecx.edgeAttributeHeader.add( edge_attribute_element.get_name()) edge_attrs = my_nicecx.edgeAttributes.get(att.get('po')) if edge_attrs is None: edge_attrs = [] my_nicecx.edgeAttributes[ edge_attribute_element.get_property_of()] = edge_attrs edge_attrs.append(edge_attribute_element) my_nicecx.add_metadata_stub('edgeAttributes') # =================== # CITATIONS # =================== if 'citations' in available_aspects: objects = my_nicecx.get_frag_from_list_by_key(cx, 'citations') for cit in objects: aspect_element = AspectElement(cit, 'citations') my_nicecx.add_opaque_aspect_element(aspect_element) my_nicecx.add_metadata_stub('citations') # =================== # SUPPORTS # =================== if 'supports' in available_aspects: objects = my_nicecx.get_frag_from_list_by_key(cx, 'supports') for sup in objects: aspect_element = AspectElement(sup, 'supports') my_nicecx.add_opaque_aspect_element(aspect_element) my_nicecx.add_metadata_stub('supports') # =================== # EDGE SUPPORTS # =================== if 'edgeSupports' in available_aspects: objects = my_nicecx.get_frag_from_list_by_key(cx, 'edgeSupports') for add_this_edge_sup in objects: aspect_element = AspectElement(add_this_edge_sup, 'edgeSupports') my_nicecx.add_opaque_aspect_element(aspect_element) my_nicecx.add_metadata_stub('edgeSupports') # =================== # NODE CITATIONS # =================== if 'nodeCitations' in available_aspects: objects = my_nicecx.get_frag_from_list_by_key(cx, 'nodeCitations') for node_cit in objects: aspect_element = AspectElement(node_cit, 'nodeCitations') my_nicecx.add_opaque_aspect_element(aspect_element) my_nicecx.add_metadata_stub('nodeCitations') # =================== # EDGE CITATIONS # =================== if 'edgeCitations' in available_aspects: objects = my_nicecx.get_frag_from_list_by_key(cx, 'edgeCitations') for edge_cit in objects: aspect_element = AspectElement(edge_cit, 'edgeCitations') my_nicecx.add_opaque_aspect_element(aspect_element) my_nicecx.add_metadata_stub('edgeCitations') # =================== # OPAQUE ASPECTS # =================== for oa in opaque_aspects: objects = my_nicecx.get_frag_from_list_by_key(cx, oa) for oa_item in objects: aspect_element = AspectElement(oa_item, oa) my_nicecx.add_opaque_aspect_element(aspect_element) my_nicecx.add_metadata_stub(oa) return my_nicecx else: raise Exception('CX is empty')
def test_nice_cx_model(self): niceCx = NiceCXNetwork() #main_map = NdexGraph(server='http://dev2.ndexbio.org', username='******', password='******', uuid='7246d8cf-c644-11e6-b48c-0660b7976219') uuid = '6b968fd2-02a4-11e6-b550-06603eb7f303' #==================== # NETWORK QUERY #==================== networkQuery = NetworkQuery() networkQuery.query_network('40f1def0-3aa4-11e7-b12f-0660b7976219', 'HSPA5,HSPA4') my_na = NodeAttributesElement( subnetwork=1, property_of=11, name=22, values=33, type=ATTRIBUTE_DATA_TYPE.convert_to_data_type('string')) #==================== # NETWORK ATTRIBUTES #==================== #objects = ijson.items(urlopen('http://dev2.ndexbio.org/v2/network/' + uuid + '/aspect/nodes'), 'item') objects = loadAspect('networkAttributes') obj_items = (o for o in objects) for network_item in obj_items: add_this_network_attribute = NetworkAttributesElement( cx_fragment=network_item) niceCx.add_network_attribute(add_this_network_attribute) #=================== # NODES #=================== #objects = ijson.items(urlopen('http://dev2.ndexbio.org/v2/network/' + uuid + '/aspect/nodes'), 'item') objects = loadAspect('nodes') obj_items = (o for o in objects) for node_item in obj_items: add_this_node = NodeElement(json_obj=node_item) niceCx.create_node(add_this_node) #=================== # EDGES #=================== #objects = ijson.items(urlopen('http://dev2.ndexbio.org/v2/network/' + uuid + '/aspect/edges'), 'item') objects = loadAspect('edges') obj_items = (o for o in objects) for edge_item in obj_items: add_this_edge = EdgeElement(json_obj=edge_item) niceCx.create_edge(add_this_edge) #=================== # NODE ATTRIBUTES #=================== #objects = ijson.items(urlopen('http://dev2.ndexbio.org/v2/network/' + uuid + '/aspect/nodeAttributes'), 'item') objects = loadAspect('nodeAttributes') obj_items = (o for o in objects) for att in obj_items: add_this_node_att = NodeAttributesElement(json_obj=att) niceCx.add_node_attribute(add_this_node_att) #=================== # EDGE ATTRIBUTES #=================== #objects = ijson.items(urlopen('http://dev2.ndexbio.org/v2/network/' + uuid + '/aspect/edgeAttributes'), 'item') objects = loadAspect('edgeAttributes') obj_items = (o for o in objects) for att in obj_items: add_this_edge_att = EdgeAttributesElement(json_obj=att) niceCx.add_edge_attribute(add_this_edge_att) #=================== # CITATIONS #=================== #objects = ijson.items(urlopen('http://dev2.ndexbio.org/v2/network/' + uuid + '/aspect/edgeAttributes'), 'item') objects = loadAspect('citations') obj_items = (o for o in objects) for cit in obj_items: add_this_citation = CitationElement(cx_fragment=cit) niceCx.add_citation(add_this_citation) #=================== # SUPPORTS #=================== objects = loadAspect('supports') obj_items = (o for o in objects) for sup in obj_items: add_this_supports = SupportElement(cx_fragment=sup) niceCx.add_support(add_this_supports) #=================== # NODE CITATIONS #=================== objects = loadAspect('nodeCitations') obj_items = (o for o in objects) for node_cit in obj_items: niceCx.add_node_citations_from_cx(node_cit) #=================== # EDGE CITATIONS #=================== objects = loadAspect('edgeCitations') obj_items = (o for o in objects) for edge_cit in obj_items: niceCx.add_edge_citations_from_cx(edge_cit) nice_cx_json = niceCx.to_cx() # serialized = pickle.dumps(niceCx, protocol=0) # print 'Serialized memory:', sys.getsizeof(serialized) print('starting to_pandas_dataframe') niceCx.to_pandas_dataframe() parser = ijson.parse( urlopen('http://dev2.ndexbio.org/v2/network/' + uuid + '/aspect/nodes')) node_id, node_n, node_r = '', '', '' edge_id, edge_s, edge_t, edge_i = '', '', '', '' node_matches = {} edge_matches = {} edge_connected = {} node_found = False edge_found = False count = 0 done_searching = False start_time = time.time() for prefix, event, value in parser: if (prefix) == ('item.@id'): if count % 10000 == 0: print(count) count += 1 node_id = value elif (prefix) == ('item.n'): node_n = value node_found = True elif (prefix) == ('item.r'): node_r = value if node_found: node_matches[node_id] = {'n': node_n, 'r': node_r} add_this_node = NodeElement(id=node_id, node_name=node_n, node_represents=node_r) niceCx.create_node(add_this_node) node_found = False else: # No represents found if node_found: node_matches[node_id] = {'n': node_n} add_this_node = NodeElement(id=node_id, node_name=node_n) niceCx.create_node(add_this_node) node_found = False print('Response time (Node search): ' + str(time.time() - start_time)) start_time = time.time() print(edge_matches) print(node_matches) parser = ijson.parse( urlopen('http://dev2.ndexbio.org/v2/network/' + uuid + '/aspect/edges')) for prefix, event, value in parser: if (prefix) == ('item.@id'): edge_id = value elif (prefix) == ('item.s'): edge_s = value edge_found = True elif (prefix) == ('item.t'): edge_t = value edge_found = True elif (prefix) == ('item.i'): edge_i = value if edge_found: edge_matches[edge_id] = { 's': edge_s, 't': edge_t, 'i': edge_i } add_this_edge = EdgeElement(id=edge_id, edge_source=edge_s, edge_target=edge_t, edge_interaction=edge_i) niceCx.create_edge(add_this_edge) edge_connected[edge_s] = 1 edge_connected[edge_t] = 1 edge_found = False else: # No interaction found if edge_found: edge_matches[edge_id] = {'s': edge_s, 't': edge_t} add_this_edge = EdgeElement(id=edge_id, edge_source=edge_s, edge_target=edge_t) niceCx.create_edge(add_this_edge) edge_connected[edge_s] = 1 edge_connected[edge_t] = 1 edge_found = False print('Response time (Edge search): ' + str(time.time() - start_time)) start_time = time.time() print(edge_matches) print(node_matches) self.assertTrue(niceCx is not None)
def create_nice_cx_from_server(server=None, username=None, password=None, uuid=None): if server and uuid: my_nicecx = NiceCXNetwork() #=================== # METADATA #=================== available_aspects = [] md_aspect_iter = my_nicecx.get_aspect(uuid, 'metaData', server, username, password) if md_aspect_iter: for ae in (o for o in md_aspect_iter): available_aspects.append(ae.get(CX_CONSTANTS.METADATA_NAME)) mde = MetaDataElement(cx_fragment=ae) my_nicecx.add_metadata(mde) else: if not username or not password: raise Exception( 'Network is not available. Username and/or password not supplied' ) else: raise Exception('Network not available') opaque_aspects = set(available_aspects).difference(known_aspects_min) #==================== # NETWORK ATTRIBUTES #==================== if 'networkAttributes' in available_aspects: objects = my_nicecx.get_aspect(uuid, 'networkAttributes', server, username, password) for network_item in objects: my_nicecx.add_network_attribute(json_obj=network_item) my_nicecx.add_metadata_stub('networkAttributes') #=================== # NODES #=================== if 'nodes' in available_aspects: objects = my_nicecx.get_aspect(uuid, 'nodes', server, username, password) for node_item in objects: my_nicecx.create_node(cx_fragment=node_item) my_nicecx.add_metadata_stub('nodes') #=================== # EDGES #=================== if 'edges' in available_aspects: objects = my_nicecx.get_aspect(uuid, 'edges', server, username, password) for edge_item in objects: my_nicecx.create_edge(cx_fragment=edge_item) my_nicecx.add_metadata_stub('edges') #=================== # NODE ATTRIBUTES #=================== if 'nodeAttributes' in available_aspects: objects = my_nicecx.get_aspect(uuid, 'nodeAttributes', server, username, password) for att in objects: #my_nicecx.set_node_attribute(att.get('po'), att.get('n'), att.get('v'), type=att.get('d')) node_attribute_element = NodeAttributesElement(cx_fragment=att) my_nicecx.nodeAttributeHeader.add( node_attribute_element.get_name()) nodeAttrs = my_nicecx.nodeAttributes.get( node_attribute_element.get_property_of()) if nodeAttrs is None: nodeAttrs = [] my_nicecx.nodeAttributes[ node_attribute_element.get_property_of()] = nodeAttrs nodeAttrs.append(node_attribute_element) my_nicecx.add_metadata_stub('nodeAttributes') #=================== # EDGE ATTRIBUTES #=================== if 'edgeAttributes' in available_aspects: objects = my_nicecx.get_aspect(uuid, 'edgeAttributes', server, username, password) for att in objects: edge_attribute_element = EdgeAttributesElement(cx_fragment=att) my_nicecx.edgeAttributeHeader.add( edge_attribute_element.get_name()) edge_attrs = my_nicecx.edgeAttributes.get(att.get('po')) if edge_attrs is None: edge_attrs = [] my_nicecx.edgeAttributes[ edge_attribute_element.get_property_of()] = edge_attrs edge_attrs.append(edge_attribute_element) my_nicecx.add_metadata_stub('edgeAttributes') #=================== # CITATIONS #=================== if 'citations' in available_aspects: objects = my_nicecx.get_aspect(uuid, 'citations', server, username, password) for cit in objects: aspect_element = AspectElement(cit, 'citations') my_nicecx.add_opaque_aspect(aspect_element) my_nicecx.add_metadata_stub('citations') #=================== # SUPPORTS #=================== if 'supports' in available_aspects: objects = my_nicecx.get_aspect(uuid, 'supports', server, username, password) for sup in objects: aspect_element = AspectElement(sup, 'supports') my_nicecx.add_opaque_aspect(aspect_element) my_nicecx.add_metadata_stub('supports') #=================== # EDGE SUPPORTS #=================== if 'edgeSupports' in available_aspects: objects = my_nicecx.get_aspect(uuid, 'edgeSupports', server, username, password) for add_this_edge_sup in objects: aspect_element = AspectElement(add_this_edge_sup, 'edgeSupports') my_nicecx.add_opaque_aspect(aspect_element) my_nicecx.add_metadata_stub('edgeSupports') #=================== # NODE CITATIONS #=================== if 'nodeCitations' in available_aspects: objects = my_nicecx.get_aspect(uuid, 'nodeCitations', server, username, password) for node_cit in objects: aspect_element = AspectElement(node_cit, 'nodeCitations') my_nicecx.add_opaque_aspect(aspect_element) my_nicecx.add_metadata_stub('nodeCitations') #=================== # EDGE CITATIONS #=================== if 'edgeCitations' in available_aspects: objects = my_nicecx.get_aspect(uuid, 'edgeCitations', server, username, password) for edge_cit in objects: aspect_element = AspectElement(edge_cit, 'edgeCitations') my_nicecx.add_opaque_aspect(aspect_element) my_nicecx.add_metadata_stub('edgeCitations') #=================== # OPAQUE ASPECTS #=================== for oa in opaque_aspects: objects = my_nicecx.get_aspect(uuid, oa, server, username, password) for oa_item in objects: aspect_element = AspectElement(oa_item, oa) my_nicecx.add_opaque_aspect(aspect_element) my_nicecx.add_metadata_stub(oa) else: raise Exception('Server and uuid not specified') return my_nicecx