python.networkx - k821209/pipelines GitHub Wiki
눈에보이는 콤파트먼트 쪼개서 리스트 만들기
graphs = list(nx.connected_components(G_sub_final))
for x in df_kog_ix.loc[graphs[0]]['KO'].dropna().drop_duplicates().values:
print(x)
community detection
http://perso.crans.org/aynaud/communities/
installs
apt-get install python-dev graphviz libgraphviz-dev pkg-config
pip install pygraphviz
pip install pydot2
Graphviz layout이 안될때는 이렇게 해보면 된다. 왜인지는 모르겠다. ;
pos = nx.nx_pydot.graphviz_layout(G,prog='neato')
%matplotlib inline
import networkx as nx
from networkx.drawing.nx_agraph import graphviz_layout
def PvPNPvA():
G=nx.Graph()
G.add_nodes_from(nodes)
G.add_edges_from(df['IntA','IntB'](/k821209/pipelines/wiki/'IntA','IntB').values)
return G
G = PvPNPvA()
colors = [df_tajima.loc[x+'.TAIR10']['TajimaD'] for x in G]
sizes = np.array([G.degree()[x] for x in G]) * 2
pos = graphviz_layout(G, prog="neato")
# prog=[‘neato’|’dot’|’twopi’|’circo’|’fdp’|’nop’]
plt.figure(1, figsize=(10, 10))
nx.draw(G,pos,node_color=colors,node_size=sizes,cmap=plt.cm.bwr)
# http://matplotlib.org/examples/color/colormaps_reference.html
# prog=[‘neato’|’dot’|’twopi’|’circo’|’fdp’|’nop’]
labels=nx.draw_networkx_labels(G,pos)
G_lasso = nx.Graph()
nodes = list(df_gene2coef['transcript']) + [sg]
G_lasso.add_nodes_from(nodes)
edges = [sg,x,{'weight':y}] for x,y in df_gene2coef[['transcript','coefficient'](/k821209/pipelines/wiki/sg,x,{'weight':y}]-for-x,y-in-df_gene2coef[['transcript','coefficient').values ]
G_lasso.add_edges_from(edges)
edgewidth = [ d['weight'] for (u,v,d) in G_lasso.edges(data=True)]
#$pos = graphviz_layout(G_lasso, prog="twopi")
pos = nx.spring_layout(G_lasso,weight='weight')
plt.figure(1, figsize=(30, 20))
#nx.draw(G_lasso,pos=pos)
nx.draw_networkx_nodes(G_lasso,pos=pos)
cbar = nx.draw_networkx_edges(G_lasso,pos=pos, edge_color=edgewidth)
labels = dict(zip(df_gene2coef['transcript'],df_gene2coef['name']))
labels[sg] = sgn
labels=nx.draw_networkx_labels(G_lasso,pos,labels)
plt.colorbar(cbar)
def get_onestep(target_node):
#target_node = 'AT2G38610'
presubnodes = set([y for x,y in G_ai1.edges(target_node)]) #+ [target_node]
for gene in presubnodes:
#if gene == 'AT3G47620':
# print (target_node)
df_scores_ix.loc[gene,'OneStep'] += 1
subnodes = list(set(presubnodes))
return subnodes
def get_twostep(target_node):
presubnodes = set([y for x,y in G.edges(target_node)]) #+ [target_node]
twosteps = []
for gene in presubnodes:
outs = list(set([y for x,y in G.edges(gene)]))
twosteps+= outs
subnodes = list(set(list(set(presubnodes)) + twosteps)) + [target_node]
return subnodes
# 미리 정해둔 size에 따라서 node크기를 결정한다.
sizes = np.array([subgraph.degree()[x] for x in subgraph])*20
nx.draw_networkx_nodes(subgraph,pos,node_size=sizes)
# 미리 정해둔 weight에 따라서 edge 색을 결정한다.
edges = subgraph.edges()
weight = [subgraph[u][v]['weight'] for u,v in edges]
nx.draw_networkx_edges(subgraph,pos,edge_color=weight,width=np.array(weight)+1,edge_cmap=plt.cm.Accent,alpha=0.5)#node_color=colors,node_size=sizes,cmap=plt.cm.bwr)
# 선택한 edge만 그린다. (선택한 엣지만 덧칠하는게 편함)
selected_edges = [(u,v) for u,v in edges if subgraph[u][v]['weight']>0.1]
nx.draw_networkx_edges(subgraph,pos,edgelist=selected_edges,edge_color='green',width=1)
# random graph 만들기, node number, edge number 주어짐.
from networkx.generators.random_graphs import gnm_random_graph
random_degrees = []
for i in tqdm(range(100)):
tempG = gnm_random_graph(len(nodes),len(edges))
random_degrees.append(np.mean(tempG.degree().values()))