2011-04-29 2 views
7

Je souhaite utiliser networkx pour générer une mise en page pour un graphique. Est-il possible de transférer cette mise en page à cytoscape et de l'y dessiner? J'ai essayé d'écrire simplement un graphique commeTransférer la mise en page de networkx à cytoscape

import networkx as nx 
G = nx.Graph() 
G.add_edge(0,1,weight=.1) 
G.add_edge(2,1,weight=.2) 
nx.write_gml(G,'g.gml') 
nx.write_graphml(G,'g.xml') 

Mais ni l'un ni l'autre n'est lu dans cytoscape. Je ne suis pas sûr de savoir comment transférer le graphique dans un format qui peut inclure des positions.

Répondre

9

Votre fichier GraphML g.xml a l'air bien, et se charge dans Cytoscape pour moi (je suis sur un Mac). Avez-vous installé le plugin graphmlreader?

Sinon, téléchargez-le et déposez-le dans votre dossier plugins, puis redémarrez Cytoscape et essayez à nouveau de charger le réseau g.xml.

Mise à jour Voici un code pour ajouter l'aspect graphique et le positionnement à un graphique networkx. Il est un peu bavard, et vous pouvez être en mesure d'omettre certains des attributs en fonction de vos besoins:

import networkx as nx 

G = nx.Graph() 
G.add_edge(0, 1, weight=0.1, label='edge', graphics={ 
    'width': 1.0, 'fill': '"#0000ff"', 'type': '"line"', 'Line': [], 
    'source_arrow': 0, 'target_arrow': 0}) 
nx.set_node_attributes(G, 'graphics', { 
    0: {'x': -85.0, 'y': -97.0, 'w': 20.0, 'h': 20.0, 
     'type': '"ellipse"', 'fill': '"#889999"', 'outline': '"#666666"', 
     'outline_width': 1.0}, 
    1: {'x': -16.0, 'y': -1.0, 'w': 40.0, 'h': 40.0, 
     'type': '"ellipse"', 'fill': '"#ff9999"', 'outline': '"#666666"', 
     'outline_width': 1.0} 
    }) 
nx.set_node_attributes(G, 'label', {0: "0", 1: "1"}) 
nx.write_gml(G, 'network.gml') 

Résultat:

enter image description here

+1

+1 pour la pointe. J'ai donc pu lire dans le fichier graphml dans cytoscape. Comment puis-je encoder les positions des nœuds dans le fichier graphml? – highBandWidth

+0

Cool - Je vais vous donner un exemple d'ajout des attributs 'graphics' du noeud dans GML car c'est un format plus compact, et vous pourrez peut-être traduire cela en GraphML. – samplebias

+1

Je voulais juste dire MERCI! Ce morceau de code expliquait juste ce petit plus pour que mes graphiques deviennent cytoscopes! Maintenant, je suis capable de générer et de visualiser avec des probabilités interactives des cartes métaboliques complètes. – Jasper

Questions connexes