def test_example_notebook(self): my_network_uuid = 'd3c5ca09-bb42-11e7-94d3-0ac135e8bacf' my_account = "drh" my_password = "******" print("downloading network and buiding NiceCX...") my_network = ndex2.create_nice_cx_from_server( server='public.ndexbio.org', uuid=my_network_uuid) print("done") my_network.print_summary() # (for clarity, this example code is rather verbose) source_attribute1 = "TYPEA" source_attribute2 = "TYPEB" target_attribute = "TYPE" for node_id, node in my_network.nodes.items(): value1 = my_network.get_node_attribute(node, source_attribute1) value2 = my_network.get_node_attribute(node, source_attribute2) merged_value = value1 or value2 if merged_value: my_network.set_node_attribute(node, target_attribute, merged_value) my_network.remove_node_attribute(node, source_attribute1) my_network.remove_node_attribute(node, source_attribute2) my_network.print_summary()
def test_data_types_with_special_chars2(self): niceCx = ndex2.create_empty_nice_cx() fox_node_id = niceCx.create_node(node_name='A#"') mouse_node_id = niceCx.create_node(node_name='B!@#$%') bird_node_id = niceCx.create_node(node_name='*&^%^$') fox_bird_edge = niceCx.create_edge(edge_source=fox_node_id, edge_target=bird_node_id, edge_interaction='&"""""""') fox_mouse_edge = niceCx.create_edge(edge_source=fox_node_id, edge_target=mouse_node_id, edge_interaction='//////\\\\\\') niceCx.add_node_attribute(property_of=fox_node_id, name='Color', values='Red') niceCx.add_node_attribute(property_of=mouse_node_id, name='Color', values='Gray') niceCx.add_node_attribute(property_of=bird_node_id, name='Color', values='Blue') upload_message = niceCx.upload_to(upload_server, upload_username, upload_password) spec_char_network_uuid = upload_message.split('\\')[-1] niceCx = ndex2.create_nice_cx_from_server( server='public.ndexbio.org', uuid='fc63173e-df66-11e7-adc1-0ac135e8bacf' ) #NiceCXNetwork(server='dev2.ndexbio.org', username='******', password='******', uuid='9433a84d-6196-11e5-8ac5-06603eb7f303') self.assertTrue(upload_message)
def test_create_from_server(self): print('Testing: Create from server with 548970 edges (uuid:75bf1e85-1bc7-11e6-a298-06603eb7f303)') #niceCx = ndex2.create_nice_cx_from_server(server='public.ndexbio.org', uuid='72ef5c3a-caff-11e7-ad58-0ac135e8bacf') #NiceCXNetwork(server='dev2.ndexbio.org', username='******', password='******', uuid='9433a84d-6196-11e5-8ac5-06603eb7f303') niceCx = ndex2.create_nice_cx_from_server(server='public.ndexbio.org', username='******', password='******', uuid='75bf1e85-1bc7-11e6-a298-06603eb7f303') #NiceCXNetwork(server='dev2.ndexbio.org', username='******', password='******', uuid='9433a84d-6196-11e5-8ac5-06603eb7f303') upload_message = niceCx.upload_to(upload_server, upload_username, upload_password) self.assertTrue(upload_message)
def test_create_from_server(self): print('public network') niceCx = ndex2.create_nice_cx_from_server(server='public.ndexbio.org', uuid='72ef5c3a-caff-11e7-ad58-0ac135e8bacf') #NiceCXNetwork(server='dev2.ndexbio.org', username='******', password='******', uuid='9433a84d-6196-11e5-8ac5-06603eb7f303') #niceCx = ndex2.create_nice_cx_from_server(server='public.ndexbio.org', username='******', password='******', uuid='75bf1e85-1bc7-11e6-a298-06603eb7f303') #NiceCXNetwork(server='dev2.ndexbio.org', username='******', password='******', uuid='9433a84d-6196-11e5-8ac5-06603eb7f303') upload_message = niceCx.upload_to(upload_server, upload_username, upload_password) self.assertTrue(upload_message)
def test_example_notebook(self): my_network_uuid = 'd3c5ca09-bb42-11e7-94d3-0ac135e8bacf' my_account = "drh" my_password = "******" print("downloading network and buiding NiceCX...") my_network = ndex2.create_nice_cx_from_server(server='public.ndexbio.org', uuid=my_network_uuid) print("done") my_network.print_summary() # (for clarity, this example code is rather verbose) source_attribute1 = "TYPEA" source_attribute2 = "TYPEB" target_attribute = "TYPE" for node_id, node in my_network.nodes.items(): value1 = my_network.get_node_attribute(node, source_attribute1) value2 = my_network.get_node_attribute(node, source_attribute2) merged_value = value1 or value2 if merged_value: my_network.set_node_attribute(node, target_attribute, merged_value) my_network.remove_node_attribute(node, source_attribute1) my_network.remove_node_attribute(node, source_attribute2) my_network.print_summary()
def test_create_nice_cx_from_server_cocanet2_network(self): net = ndex2.create_nice_cx_from_server( 'public.ndexbio.org', uuid='f1dd6cc3-0007-11e6-b550-06603eb7f303') self.assertEqual( 'CoCaNet2', net.get_name(), "Probably failing due to this error: " "https://ndexbio.atlassian.net/browse/UD-2222")
def test_create_from_server_1(self): #==================================== # BUILD NICECX FROM SERVER #==================================== niceCx = ndex2.create_nice_cx_from_server(server='dev.ndexbio.org', username='******', password='******', uuid='b7190ca4-aec2-11e7-9b0a-06832d634f41') #NiceCXNetwork(server='dev.ndexbio.org', username='******', password='******', uuid='b7190ca4-aec2-11e7-9b0a-06832d634f41') upload_message = niceCx.upload_to(upload_server, upload_username, upload_password) self.assertTrue(upload_message)
def test_to_netx(self): niceCx_from_server = ndex2.create_nice_cx_from_server(server='public.ndexbio.org', uuid='3f08d557-1e5f-11e8-b939-0ac135e8bacf') niceCx_from_server_to_netx = niceCx_from_server.to_networkx() print(niceCx_from_server_to_netx) self.assertTrue(niceCx_from_server_to_netx)
def test_create_from_server_1(self): print('Testing: Create from serve (uuid:b7190ca4-aec2-11e7-9b0a-06832d634f41)') #==================================== # BUILD NICECX FROM SERVER #==================================== niceCx = ndex2.create_nice_cx_from_server(server='dev.ndexbio.org', username='******', password='******', uuid='b7190ca4-aec2-11e7-9b0a-06832d634f41') #NiceCXNetwork(server='dev.ndexbio.org', username='******', password='******', uuid='b7190ca4-aec2-11e7-9b0a-06832d634f41') upload_message = niceCx.upload_to(upload_server, upload_username, upload_password) self.assertTrue(upload_message)
def test_to_pandas(self): niceCx_from_server = ndex2.create_nice_cx_from_server(server='public.ndexbio.org', uuid='3f08d557-1e5f-11e8-b939-0ac135e8bacf') niceCx_from_server_df = niceCx_from_server.to_pandas_dataframe() upload_message = niceCx_from_server_df print(upload_message) self.assertFalse(upload_message.empty)
def test_ndex_load_cx_model(self): niceCxBuilder = NiceCXBuilder() #nice_cx_from_builder = niceCxBuilder.create_from_server('http://dev2.ndexbio.org', 'scratch', 'scratch', '94766028-934d-11e7-9743-0660b7976219') nice_cx = ndex2.create_nice_cx_from_server( server='dev2.ndexbio.org', username='******', password='******', uuid='94766028-934d-11e7-9743-0660b7976219') print(nice_cx)
def add_pathway_info(network, network_id, cytoscape_visual_properties_template_id): """ Adds network :param network: :param network_id: :param cytoscape_visual_properties_template_id: UUID of NDEx network to extract various network attributes such as description, rightsHolder, reference, rights :return: """ dataframe = get_signor_pathway_description_df(network_id) if dataframe is not None: template_network = ndex2.create_nice_cx_from_server(server=my_server, uuid=cytoscape_visual_properties_template_id, username=my_username, password=my_password) if not pd.isnull(dataframe.iat[0, 1]): network.set_name(dataframe.iat[0, 1]) if not pd.isnull(dataframe.iat[0, 0]): network.set_network_attribute("labels", [dataframe.iat[0, 0]], type='list_of_string') if not pd.isnull(dataframe.iat[0, 3]): network.set_network_attribute("author", dataframe.iat[0, 3]) if not pd.isnull(dataframe.iat[0, 2]): network.set_network_attribute("description", '%s %s' % (dataframe.iat[0, 2], template_network.get_network_attribute('description')['v'])) network.set_network_attribute('rightsHolder', template_network.get_network_attribute('rightsHolder')['v']) network.set_network_attribute("rights", template_network.get_network_attribute('rights')['v']) network.set_network_attribute("reference", template_network.get_network_attribute('reference')['v']) network.set_network_attribute('dataSource', 'https://signor.uniroma2.it/pathway_browser.php?organism=&pathway_list=' + str( network_id)) network.set_network_attribute("version", f"{datetime.now():%d-%b-%Y}") disease_pathways = ['ALZHAIMER DISEASE', 'FSGS', 'NOONAN SYNDROME', 'PARKINSON DISEASE'] cancer_pathways = ['ACUTE MYELOID LEUKEMIA', 'COLORECTAL CARCINOMA', 'GLIOBLASTOMA MULTIFORME', 'LUMINAL BREAST CANCER', 'MALIGNANT MELANOMA', 'PROSTATE CANCER', 'RHABDOMYOSARCOMA', 'THYROID CANCER'] network.set_network_attribute("organism", "Human, 9606, H**o sapiens") if signor_id_name_mapping.get(network_id).upper() in disease_pathways: network.set_network_attribute("networkType", "Disease Pathway") elif signor_id_name_mapping.get(network_id).upper() in cancer_pathways: network.set_network_attribute("networkType", "Cancer Pathway") else: network.set_network_attribute("networkType", "Signalling Pathway") # TODO: set “networkType” property depending on network # a. Signalling Pathway # b. Disease Pathway # c. Cancer Pathway else: print('skipping ' + network_id)
def test_add_int_attr(self): niceCx = NiceCXNetwork() int_node = niceCx.create_node(node_name="testint") niceCx.add_node_attribute(property_of=int_node, name='Size', values=1, type="integer") upload_message = niceCx.upload_to(upload_server, upload_username, upload_password) UUID = upload_message.split('/')[-1] time.sleep(1) imported_cx = ndex2.create_nice_cx_from_server(server='dev.ndexbio.org', uuid=UUID, username=upload_username, password=upload_password) for i in imported_cx.get_node_attributes(0): self.assertEqual(i.get('d'), "integer")
def test_get_set2(self): niceCx = ndex2.create_nice_cx_from_server(server='public.ndexbio.org', uuid='192ce948-1e5f-11e8-b939-0ac135e8bacf') context = [{'ncbigene': 'http://identifiers.org/ncbigene/', 'hgnc.symbol': 'http://identifiers.org/hgnc.symbol/', 'uniprot': 'http://identifiers.org/uniprot/'}] niceCx.set_context(context) niceCx.set_name('Testing Context') upload_message = niceCx.upload_to('public.ndexbio.org', 'scratch', 'scratch') print(niceCx.__str__())
def test_node_data_types(self): self.assertFalse(upload_username == 'username') niceCx = ndex2.create_nice_cx_from_server(server='public.ndexbio.org', uuid='f1dd6cc3-0007-11e6-b550-06603eb7f303') my_aspect = [] my_aspect.append({'node': '1', 'value': 'test1'}) my_aspect.append({'node': '2', 'value': 'test2'}) my_aspect.append({'node': '3', 'value': 'test3'}) my_aspect.append({'node': '4', 'value': 'test4'}) my_aspect.append({'node': '5', 'value': 'test5'}) my_aspect.append({'node': '6', 'value': 'test6'}) niceCx.add_opaque_aspect('fakeAspect', my_aspect) upload_message = niceCx.upload_to(upload_server, upload_username, upload_password) self.assertTrue(True)
def test_add_lst_flt(self): niceCx = NiceCXNetwork() list_float_node = niceCx.create_node(node_name="testlstflt") niceCx.add_node_attribute(property_of=list_float_node, name='Too many scores', values=[15.3,43.6,-34.0,43.3], type="list_of_float") upload_message = niceCx.upload_to(upload_server, upload_username, upload_password) UUID = upload_message.split('/')[-1] time.sleep(1) imported_cx = ndex2.create_nice_cx_from_server(server='dev.ndexbio.org', uuid=UUID, username=upload_username, password=upload_password) for i in imported_cx.get_node_attributes(0): self.assertEqual(i.get('d'), "list_of_double")
def get_networkx_object(self, ndex_uuid): """ Given a NDEx uuid, this method returns the network as a networkx object :param ndex_uuid: NDEx uuid to get :return: networkx object upon success or None if unable to load """ if ndex_uuid is None: logger.error('UUID passed in is None') return None logger.info('Retreiving network with uuid: ' + ndex_uuid) cxnet = create_nice_cx_from_server(server=self._ndex_server, uuid=ndex_uuid) return cxnet.to_networkx()
def _get_network_from_server(self): """ """ self._network = ndex2.create_nice_cx_from_server( server=self._server, uuid=self._uuid, username=self._user, password=self._pass) #import json #print('edges:\n {}'.format(json.dumps(self._network.edges, indent=4))) #print('\nedgeAttributes:\n {}'.format(json.dumps(self._network.edgeAttributes, indent=4))) #print(json.dumps(self._network.edgeAttributes, indent=4)) #logger.info('Found {:,} unique Ensembl Ids in {}\n'.format(len(ensembl_ids), self._full_file_name)) return 0
def test_create_from_server_manipulate_and_save(self): print('Testing: Create from server and manupulate (uuid:51247435-1e5f-11e8-b939-0ac135e8bacf)') niceCx = ndex2.create_nice_cx_from_server(server='public.ndexbio.org', uuid='51247435-1e5f-11e8-b939-0ac135e8bacf') nice_networkx = niceCx.to_networkx() niceCx_from_netx = ndex2.create_nice_cx_from_networkx(nice_networkx) # Restore template niceCx_from_netx.apply_template('public.ndexbio.org', '51247435-1e5f-11e8-b939-0ac135e8bacf') niceCx_from_netx.set_name('Round trip from server to networkx to NDEx') upload_message = niceCx_from_netx.upload_to(upload_server, upload_username, upload_password) self.assertTrue(upload_message)
def test_create_from_server_manipulate_and_save2(self): print('public network') niceCx = ndex2.create_nice_cx_from_server(server='public.ndexbio.org', uuid='21106ea7-cbba-11e7-ad58-0ac135e8bacf') nice_networkx = niceCx.to_networkx() niceCx_from_netx = ndex2.create_nice_cx_from_networkx(nice_networkx) # Restore template niceCx_from_netx.apply_template('public.ndexbio.org', '72ef5c3a-caff-11e7-ad58-0ac135e8bacf') niceCx_from_netx.set_name('Round trip from server to networkx to NDEx') upload_message = niceCx_from_netx.upload_to(upload_server, upload_username, upload_password) self.assertTrue(upload_message)
def _get_style_network_from_uuid(self): try: self._style_network = ndex2.create_nice_cx_from_server( self._style_server if self._style_server is not None else self._server, username=self._style_user if self._style_user is not None else self._user, password=self._style_pass if self._style_pass is not None else self._pass, uuid=self._style_uuid) except Exception as e: print(e) print("Error while loading style network from NDEx. " "Default style will be used instead.") self._style_file = _get_default_style_file_name() self._get_style_network_from_file()
def test_node_data_types2(self): self.assertFalse(upload_username == 'username') niceCx = ndex2.create_nice_cx_from_server(server='public.ndexbio.org', uuid='a18fd45e-68d5-11e7-961c-0ac135e8bacf') #NiceCXNetwork(server='dev2.ndexbio.org', username='******', password='******', uuid='9433a84d-6196-11e5-8ac5-06603eb7f303') found_double_type = False for id, node in niceCx.get_nodes(): abc_node_attrs = niceCx.get_node_attributes(node) if abc_node_attrs is not None: for node_attr in abc_node_attrs: if node_attr.get('d') == 'double': found_double_type = True break self.assertTrue(found_double_type) print(niceCx.__str__())
def from_ndex( self, uuid="f93f402c-86d4-11e7-a10d-0ac135e8bacf", #PCNet node_name="name", ): del self.__dict__ network_niceCx = ndex2.create_nice_cx_from_server( server='public.ndexbio.org', uuid=uuid) network = network_niceCx.to_networkx() self.__init__(network=network, node_name=node_name) return self
def test_update_style(self): print('!!!!! WARNING !!!!!') print('This test will load a network with 63 Million edges. It will take a while to run and consume a lot of RAM') test_uuid = '83013c93-75ca-11e8-8b82-525400c25d22' test_user = '******' test_pass = '******' test_server = 'dev.ndexbio.org' print('loading network to nice cx') niceCx = ndex2.create_nice_cx_from_server(server=test_server, uuid=test_uuid, username=test_user, password=test_pass) print('done loading network to nice cx') print('applying template') niceCx.apply_template('public.ndexbio.org', '2ccec370-6689-11e7-a03e-0ac135e8bacf') print('done applying template') print('uploading to server') message = niceCx.update_to(test_uuid, test_server, test_user, test_pass) print('FINISHED')
def test_node_data_types(self): niceCx = ndex2.create_nice_cx_from_server( server='public.ndexbio.org', uuid='fc63173e-df66-11e7-adc1-0ac135e8bacf' ) #NiceCXNetwork(server='dev2.ndexbio.org', username='******', password='******', uuid='9433a84d-6196-11e5-8ac5-06603eb7f303') found_int_type = False for id, node in niceCx.get_nodes(): abc_node_attrs = niceCx.get_node_attributes(node) if abc_node_attrs is not None: for node_attr in abc_node_attrs: if node_attr.get_data_type( ) == ATTRIBUTE_DATA_TYPE.INTEGER: found_int_type = True self.assertTrue(found_int_type) print(niceCx.__str__())
def _process_network_by_id(self, networkid): """ Processes network by id :param networkid: :return: """ if networkid is None: logger.error('network id is None') return network = ndex2.create_nice_cx_from_server(self._sourceserver, username=self._sourceuser, password=self._sourcepass, uuid=networkid) logger.info('NETWORK: ' + network.get_name()) for id, node in network.get_nodes(): raw_type = network.get_node_attribute(id, 'WP.type') if raw_type is None: continue raw_type = raw_type['v'] # some nodes have empty string for name which currently screws up enrichment # so going to just set the type to something else for these right now if 'n' not in node or node['n'] is None or len(node['n']) == 0: node['n'] = 'unset' network.add_node_attribute(property_of=id, name='type', values='unsetname' + raw_type, overwrite=True) else: network.add_node_attribute(property_of=id, name='type', values=self._remap_raw_type_new_normalized_type(raw_type), overwrite=True) # apply style to network network.apply_style_from_network(self._template) network_update_key = self._net_summaries.get(network.get_name().upper()) if network_update_key is not None: return network.update_to(network_update_key, self._server, self._user, self._pass, user_agent=self._get_user_agent()) else: upload_message = network.upload_to(self._server, self._user, self._pass, user_agent=self._get_user_agent()) return upload_message
def test_create_from_server_manipulate_and_save2(self): print('Testing: Create from server and generate networkx (uuid:51247435-1e5f-11e8-b939-0ac135e8bacf)') niceCx = ndex2.create_nice_cx_from_server(server='public.ndexbio.org', uuid='51247435-1e5f-11e8-b939-0ac135e8bacf') #serialized = pickle.dumps(niceCx.to_cx(), protocol=0) #print('Serialized memory:', sys.getsizeof(serialized)) nice_networkx = niceCx.to_networkx() niceCx_from_netx = ndex2.create_nice_cx_from_networkx(nice_networkx) # Restore template niceCx_from_netx.apply_template('public.ndexbio.org', '51247435-1e5f-11e8-b939-0ac135e8bacf') niceCx_from_netx.set_name('Round trip from server to networkx to NDEx') print(niceCx_from_netx) upload_message = niceCx_from_netx.upload_to(upload_server, upload_username, upload_password) self.assertTrue(upload_message)
def test_add_lst_int(self): niceCx = NiceCXNetwork() list_int_node = niceCx.create_node(node_name="testlstint") niceCx.add_node_attribute(property_of=list_int_node, name='Too many sizes', values=[1, 2, 3, 4, 5], type="list_of_integer") upload_message = niceCx.upload_to(upload_server, upload_username, upload_password) UUID = upload_message.split('/')[-1] time.sleep(1) imported_cx = ndex2.create_nice_cx_from_server( server='dev.ndexbio.org', uuid=UUID, username=upload_username, password=upload_password) for i in imported_cx.get_node_attributes(0): self.assertEqual(i.get('d'), "list_of_integer")
def test_add_flt(self): niceCx = NiceCXNetwork() float_node = niceCx.create_node(node_name="testflt") niceCx.add_node_attribute(property_of=float_node, name='Score', values=1.0, type="float") upload_message = niceCx.upload_to(upload_server, upload_username, upload_password) UUID = upload_message.split('/')[-1] time.sleep(1) imported_cx = ndex2.create_nice_cx_from_server( server='dev.ndexbio.org', uuid=UUID, username=upload_username, password=upload_password) for i in imported_cx.get_node_attributes(0): self.assertEqual(i.get('d'), "double")
def from_ndex( self, uuid="f93f402c-86d4-11e7-a10d-0ac135e8bacf", #PCNet node_name="name", ndex_username=None, ndex_password=None, ndex_server="http://public.ndexbio.org", ): del self.__dict__ network_niceCx = ndex2.create_nice_cx_from_server( server=ndex_server, username=ndex_username, password=ndex_password, uuid=uuid) network = network_niceCx.to_networkx() self.__init__(network=network, node_name=node_name) return self
def get_full_signor_network(load_plan, species): url = "https://signor.uniroma2.it/getData.php?organism=" + species # Human 9606 # mouse 10090 - Rat 10116 df = get_full_signor_pathway_relations_df(species) # filter dataframe to remove rows that are not human human_dataframe = df[(df["entitya"] != "") & (df["entityb"] != "") & (df["ida"] != "") & (df["idb"] != "")] # upcase column names rename = {} for column_name in human_dataframe.columns: rename[column_name] = column_name.upper() human_dataframe = human_dataframe.rename(columns=rename) network = t2n.convert_pandas_to_nice_cx_with_load_plan(human_dataframe, load_plan) # Fix values for "DIRECT" for edge_id, edge in network.get_edges(): direct = network.get_edge_attribute_value(edge_id, "DIRECT") # print(direct) if direct: if direct == "t": network.set_edge_attribute(edge, "DIRECT", "YES") else: network.set_edge_attribute(edge, "DIRECT", "NO") # Set prefixes for represents based on the "DATABASE" attribute # # Note that this is a good example of a situation that calls # for custom code and does not justify an extension to the load_plan # Cases of this type are too variable. Custom code is easier. # for node_id, node in network.get_nodes(): database = network.get_node_attribute_value(node_id, "DATABASE") represents = node.get('r') if database == "UNIPROT": represents = "uniprot:" + represents node['r'] = represents if database == "SIGNOR": represents = "signor:" + represents node['r'] = represents # in all other cases, the identifier is already prefixed network.remove_node_attribute(node_id, "DATABASE") template_network = ndex2.create_nice_cx_from_server(server=my_server, uuid=cytoscape_visual_properties_template_id, username=my_username, password=my_password) network.set_network_attribute("labels", template_network.get_network_attribute('labels')) network.set_network_attribute("author", template_network.get_network_attribute('author')) full_desc = ('This network contains all the ' + species_mapping.get(species) + ' interactions currently available in SIGNOR' + template_network.get_network_attribute('description')['v']) network.set_network_attribute('description', full_desc) network.set_network_attribute("version", f"{datetime.now():%d-%b-%Y}") # "0.0.1") network.set_network_attribute('rightsHolder', template_network.get_network_attribute('rightsHolder')['v']) network.set_network_attribute('rights', template_network.get_network_attribute('rights')['v']) network.set_network_attribute("reference", template_network.get_network_attribute('reference')['v']) return network
def test_creating_from_server(self): niceCx_from_server = ndex2.create_nice_cx_from_server(server='public.ndexbio.org', uuid='3f08d557-1e5f-11e8-b939-0ac135e8bacf') upload_message = niceCx_from_server.upload_to(upload_server, upload_username, upload_password) self.assertTrue(upload_message)
nice_cx_from_networkx = ndex2.create_nice_cx_from_networkx(G) # #### *ndex2.create_nice_cx_from_pandas(dataframe) # In[ ]: #create an Empty Pandas Dataframe df = pd.DataFrame() nice_cx_from_pandas = ndex2.create_nice_cx_from_pandas(df) # #### *ndex2.create_nice_cx_from_server(server, username=None, password=None, uuid=None) # In[ ]: uuid = "1c69beff-1229-11e6-a039-06603eb7f303" nice_cx_from_server = ndex2.create_nice_cx_from_server( server='http://public.ndexbio.org', uuid=uuid) nice_cx_from_server.print_summary() # #### create_node(name, represents=None) # In[ ]: #Starting with an Empty Network NiceCX_creatures = NiceCXNetwork() node_id_list = [] #create_node() method returns the new node id. IDs are always assigned in an ascending order. #add 10 nodes to the network for i in range(10): node_name = "new node" + str(i) node_id = NiceCX_creatures.create_node(node_name)
def netprop_zscore(seed_gene_file, seed_gene_file_delimiter=None, num_reps=10, alpha=0.5, interactome_file=None, interactome_uuid='f93f402c-86d4-11e7-a10d-0ac135e8bacf', ndex_server='public.ndexbio.org', ndex_user=None, ndex_password=None, out_name='out', save_final_heat=False, save_random_final_heats=False): '''Performs network heat propagation on the given interactome with the given seed genes, then returns the z-scores of the final heat values of each node in the interactome. The z-scores are calculated based on a null model, which is built by running the network propagation multiple times using randomly selected seed genes with similar degree distributions to the original seed gene set. Args: seed_gene_file (str): Location of file containing a delimited list of seed genes. seed_gene_file_delimiter (str): Delimiter used to separate genes in seed gene file. (Default: any whitespace) num_reps (int): Number of times the network propagation algorithm should be run using random seed genes in order to build the null model. (Default: 10) alpha (float): Number between 0 and 1. Denotes the importance of the propagation step in the network propagation, as opposed to the step where heat is added to seed genes only. Recommended to be 0.5 or greater. (Default: 0.5) interactome_file (str): Location of file containing the interactome in NetworkX gpickle format. Either the interactome_file argument or the interactome_uuid argument must be defined. interactome_uuid (str): UUID of the interactome on NDEx. Either the interactome_file argument or the interactome_uuid argument must be defined. (Default: The UUID of PCNet, the Parsimonious Composite Network: f93f402c-86d4-11e7-a10d-0ac135e8bacf) ndex_server (str): The NDEx server on which the interactome is stored. Only needs to be defined if interactome_uuid is defined. (Default: ndexbio.org) ndex_user (str): The NDEx user that the interactome belongs to. Only needs to be defined if interactome_uuid is defined, and the interactome is private. ndex_password (str): The password of the NDEx user's account. Only needs to be defined if interactome_uuid is defined, and the interactome is private. out_name (str): Prefix for saving output files. (Default: out) save_final_heat (bool): If this is set to true, then the raw network propagation heat scores for the original seed gene set will be saved in the form of a csv file in the current directory. (Default: False) save_random_final_heats (bool): If this is set to true, then the raw network propagation heat scores for every repetition of the algorithm using random seed genes will be saved in the form of a csv file in the current directory. (Beware: This can be a large file if num_reps is large.) (Default: False) ''' # TODO: INTEGRATE OUTPUT WITH network_localization.py, and network_colocalization.py # TODO: IMPROVE COMMENTS # Process arguments # seed_gene_file seed_gene_file = os.path.abspath(seed_gene_file) #num_reps try: num_reps = int(num_reps) except: raise TypeError("The num_reps argument should be an integer") #int_file and int_uuid if interactome_file is None and interactome_uuid is None: raise TypeError( "Either interactome_file or interactome_uuid argument must be provided" ) # Load interactome if interactome_file is not None: interactome_file = os.path.abspath(interactome_file) interactome = nx.Graph() interactome = nx.read_gpickle(interactome_file) else: interactome = ndex2.create_nice_cx_from_server( ndex_server, username=ndex_user, password=ndex_password, uuid=interactome_uuid).to_networkx() if 'None' in interactome.nodes(): interactome.remove_node('None') nodes = list(interactome.nodes) # print out interactome num nodes and edges for diagnostic purposes print('number of nodes:') print(len(interactome.nodes)) print('\nnumber of edges:') print(len(interactome.edges)) # Load seed genes seed_file = open(seed_gene_file, 'r') seed_genes = list( np.intersect1d(nodes, seed_file.read().split(seed_gene_file_delimiter))) print('\nnumber of seed genes in interactome:') print(len(seed_genes)) # Calculate individual_heats_matrix from interactome print('\ncalculating w_prime') w_prime = get_normalized_adjacency_matrix(interactome, conserve_heat=True) print('\ncalculating individual_heats_matrix') individual_heats_matrix = get_individual_heats_matrix(w_prime, alpha) # Calculate the z-score print('\nCalculating z-scores: ' + seed_gene_file) z_scores, final_heat, random_final_heats = calc_zscore_heat( individual_heats_matrix, nodes, dict(interactome.degree), seed_genes, num_reps=num_reps) # Save z-score results z_scores.to_csv('z_' + out_name + '_' + str(num_reps) + '_reps_.tsv', sep='\t') # If save_final_heat is true, save out the final heat vectore if save_final_heat == 'True': final_heat.to_csv('final_heat_' + out_name + '_' + str(num_reps) + '_reps_.tsv', sep='\t') # If save_random_final_heats is true, save out the vector of randoms (this can be a large file) if save_random_final_heats == 'True': pd.DataFrame(random_final_heats).to_csv('Fnew_' + out_name + '_rand' + str(num_reps) + '_reps_.tsv', sep='\t') return z_scores, random_final_heats
import pandas as pd import igraph from ndex2.nice_cx_network import NiceCXNetwork import ndex2.client as nc import ndex2 import networkx as nx from fa2 import ForceAtlas2 from . import utils SERVER = 'public.ndexbio.org' UUID = '0dcb39d6-43b6-11e6-a5c7-06603eb7f303' if __name__ == '__main__': nice_cx_network = ndex2.create_nice_cx_from_server( server=SEVER, uuid=UUID) # show the graph detail nice_cx_network.print_summary() # convert nice_cx -> pandas nice_cx_from_server_df = nice_cx_network.to_pandas_dataframe() # convert pandas -> igraph edgelist = nice_cx_from_server_df.iloc[:, [0, 2]] tuples = [tuple(x) for x in edgelist.values] g_original = igraph.Graph.TupleList(tuples, directed=False) # Pick largest subgraph subgraphs = g_original.decompose() tmp = [i.vcount() for i in subgraphs] largeset_subgraph = subgraphs[tmp.index(max(tmp))]