class CytoscapeClient: """This is a wrapper to the py2cytoscape wrapper. The local installation of Py2cytoscape has been modified for it to work""" def __init__(self, host="localhost", port="1234", version="v1"): self.cy = CyRestClient(ip=host, port=port, version=version) def gc(self): self.cy.gc() def free_memory(self): self.cy.gc() X = self.cy.status() return max( X['memoryStatus']['maxMemory'] - X['memoryStatus']['usedMemory'], X['memoryStatus']['freeMemory']) def random_id(self, prefix="MY_"): import random s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" return prefix + ''.join( [s[random.randint(0, len(s) - 1)] for i in range(10)]) def cynet_from_xgmml(self, s_file, name=None, s_layout="force-directed", l_bundle=True, t_xy=None, l_digraph=False): """If t_xy is provided, s_layout is ignored return CyNetwork""" import os if not os.path.exists(s_file): import util util.warn_msg('Missing file: %s' % s_file) return None if not l_digraph: net = xgmml.Network(s_file, name=name) else: import digraph net = digraph.Digraph(s_file, name=name) if t_xy is not None: net.set_XY(t_xy) s_layout = None S = net.T_node.header() #print "---------------->", S #S=[x for x in S if x not in ('Gene','Name','Symbol')] #net.T_node.drop(S, axis=1, inplace=True) ############################## return self.cynet_from_network(net, name=name, s_layout=s_layout, l_bundle=l_bundle) def cynet_from_network(self, net, name=None, s_layout="force-directed", l_bundle=True): """Input net: xgmml.Network object return CyNetwork""" #print "====>>>>>>>>", net.T_node.header() data = net.to_json() if name is None: name = data['data']['name'] #cynet=self.cy.create(suid=net) cynet = None for trial in range( 3): # something Cytoscape errors, try up to three times try: if cynet is None: cynet = self.cy.network.create(name=name, data=data) except: cynet = None print("Fail at trail %d" % (trial + 1)) print("JSON data>", data) if cynet is None: import sys util.warn_msg('Error during plot_go_network(): %s' % sys.exc_info()[0]) print(traceback.format_exc()) id = cynet.get_id() if s_layout is not None: #print "apply layout %s" % s_layout self.cy.layout.apply(name=s_layout, network=cynet) if l_bundle: self.cy.edgebundling.apply(cynet) #print "apply bundle %s" % s_layout self.cy.layout.fit(cynet) return cynet def delete_cynet(self, cynet=None): """None means delete all networks""" if cynet is None: self.cy.network.delete_all() else: self.cy.network.delete(cynet) def get_network(self, suid): """Get xgmml.Network with X,Y coordinates""" cynet = self.cy.network.create(suid=suid) net = xgmml.Network.from_json(cynet.to_json()) net.T_node.drop([ x for x in ['graphics_x', 'graphics_y', 'SUID', 'id_original'] if x in net.T_node.header() ], axis=1, inplace=True) t_xy = self.cynet_get_XY(cynet) if t_xy is not None: t_xy.drop('Gene', axis=1, inplace=True) t_xy.rename2({'x': 'graphics_x', 'y': 'graphics_y'}) net.T_node = net.T_node.merge(t_xy, left_on='id', right_on='id', how='left') return net def get_cynet(self, cynet): """make sure we return a cynet object""" if type(cynet) in (str, int): return self.cy.network.create(suid=int(cynet)) return cynet def cynet_get_XY(self, cynet): cynet = self.get_cynet(cynet) data = cynet.get_first_view() if data is None: return None # view does not exist nodes = data['elements']['nodes'] X = [] for node in nodes: # id is an internal id, Gene is our key X.append({ 'id': str(node['data']['id']), 'x': node['position']['x'], 'y': node['position']['y'], 'Gene': node['data']['Gene'] }) t_xy = pd.DataFrame(X) return t_xy def cynet_save(self, cynet, s_file="x.png"): def save_image(s_file, data): f = open(s_file, 'wb') f.write(data) f.close() cynet = self.get_cynet(cynet) s_ext = s_file.upper() if s_ext.endswith('.PNG'): save_image(s_file, cynet.get_png()) elif s_ext.endswith('.PDF'): save_image(s_file, cynet.get_pdf())
class CyRestClientTests(unittest.TestCase): def setUp(self): self.client = CyRestClient() # cleanup self.client.network.delete_all() def test_cyrest_client(self): print('\n---------- Client status tests start -----------\n') # Make sure CyREST server is running status = self.client.status() self.assertIsNotNone(status) pp(status) self.assertEqual('v1', status['apiVersion']) print('\n---------- Client status tests finished! -----------\n') def test_create_network(self): print('\n---------- Create network Tests Start -----------\n') # Create empty network num_networks = 5 for i in range(num_networks): self.client.network.create() networks = self.client.network.get_all() self.assertIsNotNone(networks) self.assertEqual(num_networks, len(networks)) def test_create_from(self): print('\n---------- Loading network tests start -----------\n') # Create from URL locations = [ 'http://chianti.ucsd.edu/cytoscape-data/galFiltered.sif', 'http://www.ebi.ac.uk/Tools/webservices/psicquic/intact/' + 'webservices/current/search/interactor/brca2_human?format=xml25' ] networks = self.client.network.create_from(locations) print(networks) self.assertIsNotNone(networks) print('---------- Loading networks done! -----------\n') def test_network_api(self): print('\n---------- Network API Tests Start -----------\n') # Create empty network for i in range(5): self.client.network.create() networks = self.client.network.get_all(format='json') self.assertIsNotNone(networks) pp(networks) def test_cynetwork(self): print('\n---------- CyNetwork Tests Start -----------\n') network = self.client.network.create() self.assertIsNotNone(network) nodes = network.get_nodes() pp(nodes) new_nodes = ['a', 'b', 'c'] nd = network.add_nodes(new_nodes) self.assertIsNotNone(nd) pp(nd) edge = network.add_edge(nd['a'], nd['b']) self.assertIsNotNone(edge) print(edge) new_edges = ((nd['a'], nd['b'], 'i1'), (nd['a'], nd['c'], 'i1')) new_edges_result = network.add_edges(new_edges) print(new_edges_result) self.assertEqual(2, len(new_edges_result)) node_table = network.get_node_table() print(node_table) node_table = network.get_node_table(format='tsv') print(node_table) node_table = network.get_node_table(format='csv') print(node_table) edge_table = network.get_edge_table() print(edge_table) print('\n---------- CyNetwork Tests Finished! -----------\n') def test_create_view(self): print('\n---------- CyNetworkView Tests Start -----------\n') network = self.client.network.create() self.assertIsNotNone(network) nodes = network.get_nodes() pp(nodes) new_nodes = ['a', 'b', 'c'] nd = network.add_nodes(new_nodes) views = network.get_views() print('Views: ') print(views) view_id = views[0] view = network.get_view(view_id, format='view') self.assertIsNotNone(view) self.assertEqual(view_id, view.get_id()) node_views = view.get_node_views() self.assertIsNotNone(node_views) self.assertEqual(3, len(node_views)) view1 = node_views[0] self.assertIsNotNone(view1) all_values = view1.get_values() print(all_values) def test_view_api(self): print('\n---------- View API test start -----------\n') network = self.client.network.create() self.assertIsNotNone(network) nodes = network.get_nodes() pp(nodes) new_nodes = ['a', 'b', 'c'] nd = network.add_nodes(new_nodes) print(nd) views = network.get_views() print('Views: ') print(views) view_id = views[0] view = network.get_view(view_id, format='view') self.assertIsNotNone(view) self.assertEqual(view_id, view.get_id()) node_views = view.get_node_views() self.assertIsNotNone(node_views) self.assertEqual(3, len(node_views)) view1 = node_views[0] self.assertIsNotNone(view1) self.assertEqual(0, view1.get_x()) view1.set_x(100) self.assertEqual(100, view1.get_value('NODE_X_LOCATION')) new_values = {} for key in nd.keys(): suid = nd[key] new_values[suid] = 'red' view.update_node_views('NODE_FILL_COLOR', new_values) new_values_name = {} for node_name in new_nodes: new_values_name[node_name] = 'pink' print('---------- New Fill colors -----------') print(new_values_name) view.update_node_views('NODE_FILL_COLOR', new_values_name, key_type='name') view.update_network_view('NETWORK_BACKGROUND_PAINT', 'red') net_view = view.get_network_view_as_dict() bg_paint = net_view['NETWORK_BACKGROUND_PAINT'] self.assertEqual('#FF0000', bg_paint) def test_convert(self): print('\n---------- DataFrame Conversion Tests Start -----------\n') import os import pandas as pd # Clean up Cytoscape session self.client.session.delete() dir_name = os.path.dirname(os.path.realpath(__file__)) df = pd.read_csv( dir_name + '/data/galFiltered.sif', names=['source', 'interaction', 'target'], sep=' ') print(df.head(3)) net = df_util.from_dataframe(df) network = self.client.network.create(data=net, name='Created from DataFrame') original_column_count = len(network.get_node_columns()) dir_name = os.path.dirname(os.path.realpath(__file__)) file_name = dir_name + '/data/galFiltered.nodeAttrTable.txt' data_table = pd.read_csv(file_name, sep='\t') network.update_node_table(df=data_table, data_key_col='ID') table_column_count = len(data_table.columns) total_column_count = len(network.get_node_columns()) self.assertEqual(total_column_count, (original_column_count+table_column_count-1)) print('\n---------- DataFrame Conversion Tests Finished! -----------\n') def test_delete_network(self): network = self.client.network.create() suids = self.client.network.get_all() self.assertEqual(1, len(suids)) self.client.network.delete(network) suids = self.client.network.get_all() self.assertEqual(0, len(suids)) def test_create_from_networkx(self): networkx1 = nx.scale_free_graph(100) network = self.client.network.create_from_networkx(networkx1) self.assertIsNotNone(network)
class CyRestClientTests(unittest.TestCase): def setUp(self): self.client = CyRestClient() # cleanup self.client.network.delete_all() def test_cyrest_client(self): print('\n---------- Client status tests start -----------\n') # Make sure CyREST server is running status = self.client.status() self.assertIsNotNone(status) pp(status) self.assertEqual('v1', status['apiVersion']) print('\n---------- Client status tests finished! -----------\n') def test_create_network(self): print('\n---------- Create network Tests Start -----------\n') # Create empty network num_networks = 5 for i in range(num_networks): self.client.network.create() networks = self.client.network.get_all() self.assertIsNotNone(networks) self.assertEqual(num_networks, len(networks)) def test_create_from(self): print('\n---------- Loading network tests start -----------\n') # Create from URL locations = [ 'http://chianti.ucsd.edu/cytoscape-data/galFiltered.sif', 'http://www.ebi.ac.uk/Tools/webservices/psicquic/intact/' + 'webservices/current/search/interactor/brca2_human?format=xml25' ] networks = self.client.network.create_from(locations) print(networks) self.assertIsNotNone(networks) print('---------- Loading networks done! -----------\n') def test_network_api(self): print('\n---------- Network API Tests Start -----------\n') # Create empty network for i in range(5): self.client.network.create() networks = self.client.network.get_all(format='json') self.assertIsNotNone(networks) pp(networks) def test_cynetwork(self): print('\n---------- CyNetwork Tests Start -----------\n') network = self.client.network.create() self.assertIsNotNone(network) nodes = network.get_nodes() pp(nodes) new_nodes = ['a', 'b', 'c'] nd = network.add_nodes(new_nodes) self.assertIsNotNone(nd) pp(nd) edge = network.add_edge(nd['a'], nd['b']) self.assertIsNotNone(edge) pp(edge) new_edges = ((nd['a'], nd['b'], 'i1'), (nd['a'], nd['c'], 'i1')) new_edges_result = network.add_edges(new_edges) print(new_edges_result) self.assertEqual(2, len(new_edges_result)) node_table = network.get_node_table() print(node_table) node_table = network.get_node_table(format='tsv') print(node_table) node_table = network.get_node_table(format='csv') print(node_table) edge_table = network.get_edge_table() print(edge_table) print('\n---------- CyNetwork Tests Finished! -----------\n') def test_create_view(self): print('\n---------- CyNetworkView Tests Start -----------\n') network = self.client.network.create() self.assertIsNotNone(network) nodes = network.get_nodes() pp(nodes) new_nodes = ['a', 'b', 'c'] nd = network.add_nodes(new_nodes) views = network.get_views() print('Views: ') print(views) view_id = views[0] view = network.get_view(view_id, format='view') self.assertIsNotNone(view) self.assertEqual(view_id, view.get_id()) node_views = view.get_node_views() self.assertIsNotNone(node_views) self.assertEqual(3, len(node_views)) view1 = node_views[0] self.assertIsNotNone(view1) all_values = view1.get_values() print(all_values) def test_view_api(self): print('\n---------- View API test start -----------\n') network = self.client.network.create() self.assertIsNotNone(network) nodes = network.get_nodes() pp(nodes) new_nodes = ['a', 'b', 'c'] nd = network.add_nodes(new_nodes) print(nd) views = network.get_views() print('Views: ') print(views) view_id = views[0] view = network.get_view(view_id, format='view') self.assertIsNotNone(view) self.assertEqual(view_id, view.get_id()) node_views = view.get_node_views() self.assertIsNotNone(node_views) self.assertEqual(3, len(node_views)) view1 = node_views[0] self.assertIsNotNone(view1) self.assertEqual(0, view1.get_x()) view1.set_x(100) self.assertEqual(100, view1.get_value('NODE_X_LOCATION')) new_values = {} for key in nd.keys(): suid = nd[key] new_values[suid] = 'red' view.update_node_views('NODE_FILL_COLOR', new_values) new_values_name = {} for node_name in new_nodes: new_values_name[node_name] = 'pink' view.update_node_views('NODE_FILL_COLOR', new_values_name, key_type='name') view.update_network_view('NETWORK_BACKGROUND_PAINT', 'red') net_view = view.get_network_view_as_dict() bg_paint = net_view['NETWORK_BACKGROUND_PAINT'] self.assertEqual('#FF0000', bg_paint) def test_convert(self): print('\n---------- DataFrame Conversion Tests Start -----------\n') import os import pandas as pd # Clean up Cytoscape session self.client.session.delete() dir_name = os.path.dirname(os.path.realpath(__file__)) df = pd.read_csv(dir_name + '/data/galFiltered.sif', names=['source', 'interaction', 'target'], sep=' ') print(df.head(3)) net = df_util.from_dataframe(df) network = self.client.network.create(data=net, name='Created from DataFrame') original_column_count = len(network.get_node_columns()) dir_name = os.path.dirname(os.path.realpath(__file__)) file_name = dir_name + '/data/galFiltered.nodeAttrTable.txt' data_table = pd.read_csv(file_name, sep='\t') network.update_node_table(df=data_table, data_key_col='ID') table_column_count = len(data_table.columns) total_column_count = len(network.get_node_columns()) self.assertEqual(total_column_count, (original_column_count + table_column_count - 1)) print( '\n---------- DataFrame Conversion Tests Finished! -----------\n') def test_delete_network(self): network = self.client.network.create() suids = self.client.network.get_all() self.assertEqual(1, len(suids)) self.client.network.delete(network) suids = self.client.network.get_all() self.assertEqual(0, len(suids)) def test_create_from_networkx(self): networkx1 = nx.scale_free_graph(100) network = self.client.network.create_from_networkx(networkx1) self.assertIsNotNone(network)
g.get_adjacency() type(g.get_adjacency()) g.get_adjacency()._get_data() type(g.get_adjacency()._get_data()) type(g.get_adjacency().data) g.get_adjacency().data g.get_adjacency()._hash_() g.get_adjacency().__hash__() g.get_adjacency().__hash__(h) g.get_adjacency().__hash__(g) g.get_adjacency().shape pip install py2cytoscape import json from py2cytoscape.data.cyrest_client import CyRestClient cy = CyRestClient() print(json.dumps(cy.status(), indent=4)) from igraph import * g = Graph.Read_Adjacency('r_data_science_ch2_fig2.1.txt') cy.network.create_from_igraph(g) help(Graph.Read_GML) from lesmis import * loadGraphFromGml() g from lesmis import LesMis as lm lm._g from lesmis import LesMis as lm lm.getGraph() from lesmis import LesMis as lm from lesmis import LesMis lm = LesMis() from lesmis import LesMis
class CyRestClientTests(unittest.TestCase): def setUp(self): self.client = CyRestClient() # cleanup self.client.network.delete_all() def test_cyrest_client(self): print('\n---------- Client status tests start -----------\n') # Make sure CyREST server is running status = self.client.status() self.assertIsNotNone(status) pp(status) self.assertEqual('v1', status['apiVersion']) print('\n---------- Client status tests finished! -----------\n') def test_create_network(self): print('\n---------- Create network Tests Start -----------\n') # Create empty network num_networks = 5 for i in range(num_networks): self.client.network.create() networks = self.client.network.get_all() self.assertIsNotNone(networks) self.assertEqual(num_networks, len(networks)) def test_create_from(self): print('\n---------- Loading network tests start -----------\n') # Create from URL locations = [ 'http://chianti.ucsd.edu/cytoscape-data/galFiltered.sif', 'http://www.ebi.ac.uk/Tools/webservices/psicquic/intact/' + 'webservices/current/search/interactor/brca2_human?format=xml25' ] networks = self.client.network.create_from(locations) print(networks) self.assertIsNotNone(networks) print('---------- Loading networks done! -----------\n') def test_network_api(self): print('\n---------- Network API Tests Start -----------\n') # Create empty network for i in range(5): self.client.network.create() networks = self.client.network.get_all(format='json') self.assertIsNotNone(networks) pp(networks) def test_cynetwork(self): print('\n---------- CyNetwork Tests Start -----------\n') network = self.client.network.create() self.assertIsNotNone(network) nodes = network.get_nodes() pp(nodes) new_nodes = ['a', 'b', 'c'] nd = network.add_nodes(new_nodes) self.assertIsNotNone(nd) pp(nd) edge = network.add_edge(nd['a'], nd['b']) self.assertIsNotNone(edge) pp(edge) new_edges = ((nd['a'], nd['b'], 'i1'), (nd['a'], nd['c'], 'i1')) new_edges_result = network.add_edges(new_edges) print(new_edges_result) self.assertEqual(2, len(new_edges_result)) node_table = network.get_node_table() print(node_table) node_table = network.get_node_table(format='tsv') print(node_table) node_table = network.get_node_table(format='csv') print(node_table) edge_table = network.get_edge_table() print(edge_table) print('\n---------- CyNetwork Tests Finished! -----------\n') def test_convert(self): print('\n---------- DataFrame Conversion Tests Start -----------\n') import os import pandas as pd # Clean up Cytoscape session self.client.session.delete() dir_name = os.path.dirname(os.path.realpath(__file__)) df = pd.read_csv( dir_name + '/data/galFiltered.sif', names=['source', 'interaction', 'target'], sep=' ') print(df.head(3)) net = df_util.from_dataframe(df) network = self.client.network.create(data=net, name='Created from DataFrame') original_column_count = len(network.get_node_columns()) dir_name = os.path.dirname(os.path.realpath(__file__)) file_name = dir_name + '/data/galFiltered.nodeAttrTable.txt' data_table = pd.read_csv(file_name, sep='\t') network.update_node_table(df=data_table, data_key_col='ID') table_column_count = len(data_table.columns) total_column_count = len(network.get_node_columns()) self.assertEqual(total_column_count, (original_column_count+table_column_count-1)) print('\n---------- DataFrame Conversion Tests Finished! -----------\n') def test_delete_network(self): network = self.client.network.create() suids = self.client.network.get_all() self.assertEqual(1, len(suids)) self.client.network.delete(network) suids = self.client.network.get_all() self.assertEqual(0, len(suids)) def test_create_from_networkx(self): networkx1 = nx.scale_free_graph(100) network = self.client.network.create_from_networkx(networkx1) self.assertIsNotNone(network)
class CyRestClientTests(unittest.TestCase): def setUp(self): self.client = CyRestClient() # cleanup self.client.network.delete_all() def test_cyrest_client(self): print('\n---------- Client status tests start -----------\n') # Make sure CyREST server is running status = self.client.status() self.assertIsNotNone(status) pp(status) self.assertEqual('v1', status['apiVersion']) print('\n---------- Client status tests finished! -----------\n') def test_create_network(self): print('\n---------- Create network Tests Start -----------\n') # Create empty network num_networks = 5 for i in range(num_networks): self.client.network.create() networks = self.client.network.get_all() self.assertIsNotNone(networks) self.assertEqual(num_networks, len(networks)) def test_create_from(self): print('\n---------- Loading network tests start -----------\n') # Create from URL locations = [ 'http://chianti.ucsd.edu/cytoscape-data/galFiltered.sif', 'http://www.ebi.ac.uk/Tools/webservices/psicquic/intact/' + 'webservices/current/search/interactor/brca2_human?format=xml25' ] networks = self.client.network.create_from(locations) print(networks) self.assertIsNotNone(networks) print('---------- Loading networks done! -----------\n') def test_network_api(self): print('\n---------- Network API Tests Start -----------\n') # Create empty network for i in range(5): self.client.network.create() networks = self.client.network.get_all(format='json') self.assertIsNotNone(networks) pp(networks) def test_cynetwork(self): print('\n---------- CyNetwork Tests Start -----------\n') network = self.client.network.create() self.assertIsNotNone(network) nodes = network.get_nodes() pp(nodes) new_nodes = ['a', 'b', 'c'] nd = network.add_nodes(new_nodes) self.assertIsNotNone(nd) pp(nd) edge = network.add_edge(nd['a'], nd['b']) self.assertIsNotNone(edge) pp(edge) new_edges = ((nd['a'], nd['b'], 'i1'), (nd['a'], nd['c'], 'i1')) new_edges_result = network.add_edges(new_edges) print(new_edges_result) self.assertEqual(2, len(new_edges_result)) node_table = network.get_node_table() print(node_table) node_table = network.get_node_table(format='tsv') print(node_table) node_table = network.get_node_table(format='csv') print(node_table) edge_table = network.get_edge_table() print(edge_table) print('\n---------- CyNetwork Tests Finished! -----------\n') def test_convert(self): print('\n---------- DataFrame Conversion Tests Start -----------\n') import os import pandas as pd # Clean up Cytoscape session self.client.session.delete() dir_name = os.path.dirname(os.path.realpath(__file__)) df = pd.read_csv(dir_name + '/data/galFiltered.sif', names=['source', 'interaction', 'target'], sep=' ') print(df.head(3)) net = df_util.from_dataframe(df) network = self.client.network.create(data=net, name='Created from DataFrame') original_column_count = len(network.get_node_columns()) dir_name = os.path.dirname(os.path.realpath(__file__)) file_name = dir_name + '/data/galFiltered.nodeAttrTable.txt' data_table = pd.read_csv(file_name, sep='\t') network.update_node_table(df=data_table, data_key_col='ID') table_column_count = len(data_table.columns) total_column_count = len(network.get_node_columns()) self.assertEqual(total_column_count, (original_column_count + table_column_count - 1)) print( '\n---------- DataFrame Conversion Tests Finished! -----------\n') def test_delete_network(self): network = self.client.network.create() suids = self.client.network.get_all() self.assertEqual(1, len(suids)) self.client.network.delete(network) suids = self.client.network.get_all() self.assertEqual(0, len(suids)) def test_create_from_networkx(self): networkx1 = nx.scale_free_graph(100) network = self.client.network.create_from_networkx(networkx1) self.assertIsNotNone(network)