comparison rpviz/nxvisualizer.py @ 16:fe78fd6b315a draft

planemo upload commit 87db86a34f2d92eb2c9756bf9ee53ae2970554d5
author pablocarb
date Tue, 11 Jun 2019 11:42:40 -0400
parents
children
comparison
equal deleted inserted replaced
15:785b6253af1f 16:fe78fd6b315a
1 # -*- coding: utf-8 -*-
2 """
3 Created on Thu May 30 10:21:48 2019
4
5 @author: anael
6 """
7 #Usefull
8 import inspect
9 #inspect.getargspec(function)
10
11 import networkx as nx
12 from IPython.display import Image
13 import requests
14 import json
15 import pandas as pd
16
17 # Library for util
18 from py2cytoscape.data.cynetwork import CyNetwork
19 from py2cytoscape.data.cyrest_client import CyRestClient
20 from py2cytoscape.data.style import StyleUtil
21
22
23 def network(LR,Lreact,Lprod,name,smile,image):
24 ###Create the network with networkx
25 G=nx.DiGraph()
26 G.add_nodes_from(LR) #add reactions nodes
27
28
29 for i in range(len(LR)):
30 for j in range(len(Lreact[i])):
31 G.add_edge(Lreact[i][j],LR[i]) #add reactants nodes
32 for k in range(len(Lprod[i])):
33 G.add_edge(LR[i],Lprod[i][k]) #add products nodes
34
35 #Attribute category
36
37 dic_types={}
38 for i in range(len(LR)):
39 dic_types[(list(G.nodes))[i]]='reactions'
40 for node in range(len(list(G.nodes))):
41 if list(G.nodes)[node] in Lprod[i]:
42 dic_types[list(G.nodes)[node]]='product'
43 if list(G.nodes)[node] not in dic_types:
44 dic_types[list(G.nodes)[node]]='reactant'
45 print(dic_types)
46 nx.set_node_attributes(G,name='category',values=dic_types)
47
48 #Attribute smile
49 nx.set_node_attributes(G, name='smiles', values=smile)
50
51 #Attribute image
52 nx.set_node_attributes(G,name='image', values=image)
53
54 nx.write_gml(G,name+'.gml')
55
56 #Connect with cytoscape
57 cy = CyRestClient()
58
59 # Reset
60 #cy.session.delete()
61
62 #To create the network in cytoscape
63 network = cy.network.create_from_networkx(G, name=name, collection='My network collection')
64 print('New network created with py2cytoscape. Its SUID is ' + str(network.get_id()))
65
66 #To get the SUID of all the components of the network
67 all_suid = cy.network.get_all()
68 net1 = cy.network.create(all_suid[0])
69 print(net1.get_first_view())
70
71 #Styles
72 cy.layout.apply(name='hierarchical', network=network)
73
74 # Get all existing Visual Styles
75 styles = cy.style.get_all()
76 print(json.dumps(styles, indent=4))
77
78
79 # Get a reference to the existing style
80 default_style = cy.style.create('default')
81 print(default_style.get_name())
82
83 # Get all available Visual Properties
84 print(len(cy.style.vps.get_all()))
85 node_vps=cy.style.vps.get_node_visual_props()
86 edge_vps = cy.style.vps.get_edge_visual_props()
87 network_vps=cy.style.vps.get_network_visual_props()
88 print(pd.Series(edge_vps).head())
89 print(pd.Series(node_vps).head())
90
91
92 # Create a new style
93 style1 = cy.style.create("My_style")
94 print(style1.get_name())
95
96
97 new_defaults = {
98 # Node defaults
99 'NODE_FILL_COLOR': '#00ddee',
100 'NODE_SIZE': 20,
101 'NODE_BORDER_WIDTH': 0,
102 'NODE_LABEL_COLOR': 'black',
103
104 # Edge defaults
105 'EDGE_WIDTH': 3,
106 'EDGE_STROKE_UNSELECTED_PAINT': '#aaaaaa',
107 'EDGE_LINE_TYPE': 'LONG_DASH',
108 'EDGE_TARGET_ARROW_SHAPE' : 'DELTA',
109
110 # Network defaults
111 'NETWORK_BACKGROUND_PAINT': 'white',
112 }
113
114 style1.update_defaults(new_defaults)
115 #Apply style
116 cy.style.apply(style1, network)
117
118 # Passthrough mapping to get node labels
119 style1.create_passthrough_mapping(column='name', col_type='String', vp='NODE_LABEL')
120
121 # Discrete mapping for node colours:
122 cat = {
123 'reactant': '#4D833C',
124 'product': '#C04E5D'
125 }
126 style1.create_discrete_mapping(column='category',
127 col_type='String',
128 vp='NODE_FILL_COLOR',
129 mappings=cat)
130
131 # Discrete mapping for node shape:
132 reac = {
133 'reactions': 'RECTANGLE'
134 }
135 style1.create_discrete_mapping(column='category',
136 col_type='String',
137 vp='NODE_SHAPE',
138 mappings=reac)
139