M1 MABS Graphes TP Visualisation et parcours en profondeur
From silico.biotoul.fr
m |
m |
||
Line 43: | Line 43: | ||
... | ... | ||
+ | '''Récupérez''' le fichier contenant les annotations des gènes - [[Media:EcolA_Genes_Description.noa|EcolA_Genes_Description.noa]] - et '''chargez'''-le (Menu <tt>File->Import->Node Attributes</tt>) dans Cytoscape. De même, pour les niveaux de confiance sur les liens de coexpression avec le fichier [[Media:String EcolA_coexpression.eda|String EcolA_coexpression.eda]]. | ||
- | + | Comme dans la plupart des logiciels et systèmes d'exploitation, un clic droit sur un objet fait apparaître un menu contextuel dans Cytoscape. Un clic droit sur une arête ou un sommet fait apparaître un tel menu. '''Remarquez''' la dernière entrée du menu : ''LinkOut'' qui permet d'ouvrir une URL, typiquement à partir de l'identifiant du sommet ou de l'arête, ce qui permet par exemple d'atteindre la page de description d'une protéine dans UniProt. Il est possible d'ajouter ses propres "liens externes" à partir du menu <tt>Edit->Preferences->Properties...</tt> : pour un lien externe à partir d'un noeud, il faut ajouter une propriété <tt>nodelinkouttourl.NOM_DU_LIEN</tt>, par exemple et c'est ce que vous devrez faire <tt>nodelinkouttourl.CGDB</tt>. Dans le champ valeur, il s'agit de spécifier l'URL avec une ou plusieurs variables, ici nous utiliserons simple l'identifiant du noeud noté %ID% : <tt><nowiki>http://www-abcdb.biotoul.fr/#/entry/findbestmatch/ID/EcolA.%ID%</nowiki></tt>. Pour les liens sur les arêtes, il s'agit de la propriété <tt>edglelinkouttourl.NOM_DU_LIEN</tt> avec %ID1% et %ID2% les extrémités de l'arête, cf. la [http://cytoscape.org/manual/Cytoscape2_8Manual.html#Linkout documentation de Cytoscape] pour plus de détails. | |
- | + | ||
- | |||
- | == Rendu à partir des valeurs des attributs == | + | == Rendu à partir des valeurs des attributs : ''VizMapper'' == |
+ | '''Explorez''' à présent les possibilités offertes par l'outil ''VizMapper''. '''Essayez''' notamment de faire afficher des épaisseurs d'arêtes proportionnelles à la confiance du lien de coexpression. | ||
- | |||
- | == Sélection | + | == Sélection, filtres et opérations sur les graphes == |
+ | Une boite de recherche est disponible au niveau de la barre d'outil. '''Essayez'''-la pour par exemple sélectionner le gène wbbJ. Il s'agit en fait d'un filtrage sur la sélection de tous les sommets (ou toutes les arêtes). Pour élaborer un filtre plus complexe, vous avez à gauche de la boite de recherche un bouton vous permettant d'éditer les paramètres du filtre. '''Sélectionnez''' toutes les arêtes ayant une valeur de coexpression supérieure à 800. Une fois la sélection réalisée, les boutons encore plus à gauche vous permettent d'extraire un sous graphe à partir de la sélection. Par défaut, il s'agit d'un sous graphe induit par les sommets sélectionnés. Après avoir réalisé la sélection des arêtes >800, le menu <tt>Select->Nodes->Nodes connected by selected edges</tt> vous permet de sélectionner les extrémités des arêtes sélectionnées. | ||
- | + | '''Importez''' à présent le graphe contenu dans le fichier [[Media:String EcolA experimental.sif|String EcolA experimental.sif]] correspondant aux données STRING portant sur les interactions protéine-protéine. '''Importez''' également la confiance de ces relations à partir du fichier [[Media:String EcolA experimental.eda|String EcolA experimental.eda]]. | |
- | + | Vous pouvez fusionner les 2 graphes en les sélectionnant tous les deux (maintenir la touche ''Control'' enfoncée) puis en allant dans le menu <tt>Plugins->Advanced Network Merge</tt>. Une fois cette opération réalisée, '''modifiez''' le rendu pour avoir des épaisseurs d'arêtes proportionnelles à la coexpression et un dégradé de couleur d'arête reflétant la confiance dans le lien d'interaction protéine-protéine. | |
- | + | ||
== Importation d'un graphe au format ''table''== | == Importation d'un graphe au format ''table''== |
Revision as of 11:57, 7 February 2012
Contents |
Données
Les données sur lesquelles vous allez travailler provienne de la base de données STRING v8.2. Tout d'abord, trouvez le site de STRING et visualisez les partenaires de wbbJ d'Escherichia coli K12-MG1655. Les "boutons" confidence, evidence et actions permettent de modifier le rendu du graphe d'interaction en affichant soit des arêtes de tailles reflétant le niveau de confiance du lien, soit des multi-arêtes indiquant les sources de données intervenant dans un lien, soit le type d'interaction. Le bouton more permet de récupérer davantage de protéines.
Visualisation avec Cytoscape
Cytoscape est un logiciel de visualisation et d'exploration de graphes. Il a été développé dans le cadre de graphes et réseaux biologiques. Un certain nombre de plugins ou greffons sont disponibles par exemple pour récupérer/télécharger des voies métaboliques (BioCyc) directement depuis Cytoscape.
Importation d'un fichier sif et algorithmes de dessin
Vous allez dans un premier temps utiliser un graphe au format sif (simple interaction format). Il s'agit d'un format de stockage très simple de la forme :
ABC coexpression YAEE ABC coexpression METK ABC coexpression META ACCA coexpression FABD ACCA coexpression PPA ACCB coexpression HPT ...
où coexpression est le type de l'arête.
Récupérez le fichier String EcolA coexpression.sif contenant une partie du réseau d'interaction basé sur la co-expression chez Escherichia coli K12 avec un seuil de 0.5 pour la confiance dans une arête et ouvrez-le dans Cytoscape (menu File->Import->Network).
Par défaut, les sommets du graphes sont disposés sur une grille. Expérimentez différents algorithmes de dessin (layout in english donc dans le menu layout). Attention, certains ne sont pas adaptés et d'autres plutôt gourmands en temps de calcul.
Attributs sur les sommets et arêtes
Il est possible de charger des attributs associés aux sommets et/ou aux arêtes. Il s'agit là encore d'un format très simple. Pour les attributs portant sur les sommets, il prend la forme suivante :
Description AAS = 2-acyl-glycerophospho-ethanolamine acyltransferase; acyl-acyl-carrier protein synthetase AAT = leucyl, phenylalanyl-tRNA-protein transferase ABC = ATP-binding component of a transporter ...
où la première ligne contient le nom de l'attribut. Vous trouverez plus d'information dans la documentation de Cytoscape.
Pour les arêtes, le format est très similaire :
coexpression ABC (coexpression) YAEE = 831 ABC (coexpression) METK = 590 ABC (coexpression) META = 663 ACCA (coexpression) FABD = 537 ACCA (coexpression) PPA = 543 ACCB (coexpression) HPT = 566 ...
Récupérez le fichier contenant les annotations des gènes - EcolA_Genes_Description.noa - et chargez-le (Menu File->Import->Node Attributes) dans Cytoscape. De même, pour les niveaux de confiance sur les liens de coexpression avec le fichier String EcolA_coexpression.eda.
Comme dans la plupart des logiciels et systèmes d'exploitation, un clic droit sur un objet fait apparaître un menu contextuel dans Cytoscape. Un clic droit sur une arête ou un sommet fait apparaître un tel menu. Remarquez la dernière entrée du menu : LinkOut qui permet d'ouvrir une URL, typiquement à partir de l'identifiant du sommet ou de l'arête, ce qui permet par exemple d'atteindre la page de description d'une protéine dans UniProt. Il est possible d'ajouter ses propres "liens externes" à partir du menu Edit->Preferences->Properties... : pour un lien externe à partir d'un noeud, il faut ajouter une propriété nodelinkouttourl.NOM_DU_LIEN, par exemple et c'est ce que vous devrez faire nodelinkouttourl.CGDB. Dans le champ valeur, il s'agit de spécifier l'URL avec une ou plusieurs variables, ici nous utiliserons simple l'identifiant du noeud noté %ID% : http://www-abcdb.biotoul.fr/#/entry/findbestmatch/ID/EcolA.%ID%. Pour les liens sur les arêtes, il s'agit de la propriété edglelinkouttourl.NOM_DU_LIEN avec %ID1% et %ID2% les extrémités de l'arête, cf. la documentation de Cytoscape pour plus de détails.
Rendu à partir des valeurs des attributs : VizMapper
Explorez à présent les possibilités offertes par l'outil VizMapper. Essayez notamment de faire afficher des épaisseurs d'arêtes proportionnelles à la confiance du lien de coexpression.
Sélection, filtres et opérations sur les graphes
Une boite de recherche est disponible au niveau de la barre d'outil. Essayez-la pour par exemple sélectionner le gène wbbJ. Il s'agit en fait d'un filtrage sur la sélection de tous les sommets (ou toutes les arêtes). Pour élaborer un filtre plus complexe, vous avez à gauche de la boite de recherche un bouton vous permettant d'éditer les paramètres du filtre. Sélectionnez toutes les arêtes ayant une valeur de coexpression supérieure à 800. Une fois la sélection réalisée, les boutons encore plus à gauche vous permettent d'extraire un sous graphe à partir de la sélection. Par défaut, il s'agit d'un sous graphe induit par les sommets sélectionnés. Après avoir réalisé la sélection des arêtes >800, le menu Select->Nodes->Nodes connected by selected edges vous permet de sélectionner les extrémités des arêtes sélectionnées.
Importez à présent le graphe contenu dans le fichier String EcolA experimental.sif correspondant aux données STRING portant sur les interactions protéine-protéine. Importez également la confiance de ces relations à partir du fichier String EcolA experimental.eda.
Vous pouvez fusionner les 2 graphes en les sélectionnant tous les deux (maintenir la touche Control enfoncée) puis en allant dans le menu Plugins->Advanced Network Merge. Une fois cette opération réalisée, modifiez le rendu pour avoir des épaisseurs d'arêtes proportionnelles à la coexpression et un dégradé de couleur d'arête reflétant la confiance dans le lien d'interaction protéine-protéine.
Importation d'un graphe au format table
format table string selection
Parcours en profondeur d'un graphe
implémenter en python
procédure pour charger le graphe à partir du fichier au format table
def loadGraph(filename): UG = createGraph() # OPEN FILE with open(filename) as f: # GET COLUMNS NAMES tmp = f.readline().rstrip() attNames= tmp.split('\t') # REMOVES FIRST TWO COLUMNS WHICH CORRESPONDS TO THE LABELS OF THE CONNECTED VERTICES attNames.pop(0) attNames.pop(0) # PROCESS THE REMAINING LINES row = f.readline().rstrip() while row: vals = row.split('\t') v1 = vals.pop(0) v2 = vals.pop(0) addNode(UG, v1) addNode(UG, v2) addEdge(UG, v1, v2, attNames, vals) row = f.readline().rstrip() return UG
besoin de récupérer les voisins d'un sommet
pour la représentation interne, liberté de choix :
- matrice d'adjacence
- listes d'adjacence
fonction à définir :
- createGraph
- addNode
- addEdge
- getNeighbors
Après chargement du graphe, faire afficher l'ordre du graphe ainsi que le nombre d'arête.
Implémenter DFS
On rappelle l'algorithme récursif
dfs(UndirectedGraph g, Vertex v) mark(s) for each Neighbor n of v do if not marked(n) then dfs(g, n)