vloux / ProteoRE

GNU General Public License v3.0
2 stars 5 forks source link

New tool: Building protein interaction maps [Human, Mouse, Rat] #180

Closed yvandenb closed 5 years ago

yvandenb commented 5 years ago

en lien avec #14 pour la partie visu - cet outil ne gère que la partie mapping entre ID user list et différentes ressources de type "PPIs" data Principe: Créer 1 outil pour “mapper” les IDs (Uniprot AccNum) à partir d’une liste user sur différentes ressources existantes de données PPIs (Protein-Protein Interaction).

  1. Liste des ressources PPIs: • Human protein complex Map (Hu.map) (Drew et al, 2017, Mol Sys Biol): http://proteincomplexes.org/download ce fichier est ensuite post-processé ( sur le GitHub - fait par Lisa et commenté en header expliquant la procédure de post-processing: tools/prot_prot_interaction/huMAP_genes_Uniprot_mapping_no_ENSG.txt • Bioplex (Huttlin et al, 2017 Nature) Version 2.0 http://bioplex.hms.harvard.edu/downloadInteractions.php. Le fichier s’appelle BioPlex_interactionList_v4a.tsv

image

• BioGrid : 3 species Human , Mouse, Rattus les Data sont https://downloads.thebiogrid.org/BioGRID/Release-Archive/BIOGRID-3.5.167/ Human: BIOGRID-ORGANISM-Homo_sapiens-3.5.165.tab2.txt Mouse: BIOGRID-ORGANISM-Mus_musculus-3.5.165.tab2.txt Rattus: BIOGRID-ORGANISM-Rattus_norvegicus-3.5.165.tab2.txt Et la doc sur les formats: https://wiki.thebiogrid.org/doku.php/downloads En particulier le format « tab2 » que nous allons utiliser https://wiki.thebiogrid.org/doku.php/biogrid_tab_version_2.0

  1. Definition INPUT/OUTPUT en fonction de la ressource PPI utilisée et mapping rule entre input File (user) et target File (ressources PPIs)

Le point CRUCIAL consiste à spécifier la colonne de mapping pour chaque data source ET le type d’ID supporté

Regle générale: si pas de mapping : mettre ID source et “NA” en output as usual (pourra être une option e.g. « return ID not found in PPI ressource file)

  1. Ouput « nodes » : ex de nommage « Nodes_RessourceName_InputFileName » : avec en col 1 : la concaténation des IDs présent dans le network, c’est-à-dire (col1 et col2 du fichier output « Network » ci-dessus)

image

Mapping rules: Si Entrez gene ID (as ID type of the input file), alors mapping sur colonne A « GeneA » Si Uniprot AccNumber (as ID type of the input file), alors mapping sur colonne C « UniprotA» Et Si UniprotAccNum selectionné : alors proposer une option :

OUTPUT : 2 fichiers « tab » output sont générés :

  1. Output «Network» (edges) : ex de nommage « Network_RessourceName_InputFileName » a. Si ID type is Entrez gene ID : col 1 : INPUT FILE ID (=GeneA); col2 : ID (=GeneB, colB du PPI File)); col 3: « Gene symbol A» (col E du PPI file), col 4 « Gene symbol B » (col F du PPI file), col. 5 “Interaction score » (= col I “pInteraction” du PPI file)
    b. Si ID type is UniprotAccNum : col1 : INPUT FILE ID (=UniprotA); col2 : UniprotB (col D « UniprotB » du PPI file) ; col 3 « Gene symbol A» (Col. E du PPI file); col 4 “GeneSymbolB (col.F du PPI file); col 5 col. col. 5 “Interaction score » (= col I “pInteraction” du PPI file)

  2. Ouptut « nodes » : ex de nommage « Nodes_RessourceName_InputFileName » : avec a. Si ID type is Entrez gene ID : col 1. concaténation des IDs présent dans le network, c’est-à-dire (col1 et col2 du fichier output « Network » ci-dessus) b. Si ID type is UniprotAccNum ET option “« Add pathway information from Reactome » selectionné: col 1. concaténation des IDs présent dans le network (c’est-à-dire col1 et col2 du fichier output « Network » ci-dessus UniprotA puis UniprotB) ; col2. PathwayName (col 3 du fichier « UniProt2ReactomeReactions_Human_Mouse_Rattus.txt ») col3. « Pathway URL » (col 2 UniProt2ReactomeReactions_Human_Mouse_Rattus.txt); col 4 EvidenceCode (col 4 du fichier UniProt2ReactomeReactions_Human_Mouse_Rattus.txt).

INPUT: ID type INPUT FILE is Entrez gene ID ID type PPI file: 3 choix possibles d’espèces BIOGRID-ORGANISM-Homo_sapiens-3.5.165.tab2.txt (BioGRID Homo sapiens) BIOGRID-ORGANISM-Mus_musculus-3.5.165.tab2.txt (BioGRID Mus musculus) BIOGRID-ORGANISM-Rattus_norvegicus-3.5.165.tab2.txt (BioGRID Rattus norvegicus)

Mapping rules: Si Input Entrez gene ID type selected: alors mapping is INPUT ID Entrez <-> “Entrez Gene Interactor A” col B du PPI file

OUPUT: 2 fichiers « tab » output sont générés :

  1. Output «Network» (edges) : ex de nommage « Network_RessourceName_InputFileName » col 1 : INPUT FILE entrez gene ID (=”Entrez Gene Interactor A”); col2 : Entrez Gene Interactor B (colC du PPI File)); col 3: «Gene symbol Interactor A» (col H du PPI file), col 4 « Gene symbol Interactor B » (col I du PPI file); col. 5 “Experimental System” (col L du PPI file); col 6 “Experimental Type” (col M du PPI file); col 7 “InteractionScore” (col S du PPI file); col 8 “Phenotypes” (col U du PPI file)

  2. Ouptut « nodes » : ex de nommage « Nodes_RessourceName_InputFileName » : avec ID type is Entrez gene ID : col 1. concaténation des IDs présent dans le network, c’est-à-dire (col1 « Entrez Gene Interactor A » et col2 « Entrez Gene Interactor A » du fichier output « Network » ci-dessus) ; col 2 : concaténation des gene symbol Interactor A et B. Warning : attentino à bien maintenier les liens « Entrez Gene Interactor A » et son correspondant «gene symbol Interactor A » / idem pour « Entrez Gene Interactor B » et son correspondant «gene symbol Interactor B »

yvandenb commented 5 years ago

Pour compléter ce que nous avns discuté lundi, je te propose de commencer à prototyper avec juste une seule ressource pour déjà t'approprier les choses; en priorité ce sera avec BioGRID comme ressource PPIs...

davidchristiany commented 5 years ago

Je suis en train de faire l'outil avec Biogrid pour commencer, je n'ai pas de soucis pour le premier fichier output "Network", en revanche peut tu ếtre plus explicite pout le fichier output "nodes" ? Aurais-tu un fichier exemple ?

yvandenb commented 5 years ago

Pour le fichier "Network" un type d'exemple image Ce qui est important, c'est de pouvoir construire le graphe réseau avec chaque interaction binaire (le couple interactant A-interactant B) et les attributs associés aux arêtes du graphe (e.g. infos disponibles dans les data source qui qualifient la nature de l'interaction...dans Biogrid ce sera alors comme spécifié dans mon precedent post: col. 5 “Experimental System” (col L du PPI file); col 6 “Experimental Type” (col M du PPI file); col 7 “InteractionScore” (col S du PPI file); col 8 “Phenotypes” (col U du PPI file)) Pour le fichier "Nodes" il s'agit de pouvoir associer les plus d'infos disponibles associés à chaque noeud (gene ou protein). Le plus basique, c'est uniquement la liste de tous les IDs composant le réseau (pour Biogrid, donc: Entrez gene ID et son gene symbol associé comme spécifié dans mon précedent post) et donc sans attributs. Dans un second temps, comme on doit pouvoir naviguer dans le réseau en requetant les attributs des "nodes", il faut donc enrichir ce fichier "nodes". La 1ere façon de faire est d'utiliser les outils d'annotation ProteoRE pour ajouter tous les features qu'on souhiate (donc c'est fait :-) La seconde façon consiste à ajouter des annotations non dispo actuellement; cela correspond à ce que Lisa a fait dans son prototype et qui donne l'output suivant "nodes" suivant: image

Avec col 1. l'interactant (format Uniprot) ; col2. un booleen qui indique si cet ID est présent dans la liste fournie par l'user; col3. un booleen qui indique si l'ID est trouvé" dans l'interactome interrogé (e.g. Biogrid, HuMap, biopplex...); col 4, le pathway auquel cet ID appartient (N.B. un ID peut appartenir à plusieurs pathways). Pour cette colonne 4 l'info vient des fichiers Reactome suivant: Si Uniprot AccessNumber as input ID: https://www.reactome.org/; col 4: download/current/UniProt2Reactome.txt si Entrez Gene ID as input ID : https://www.reactome.org/download/current/NCBI2Reactome.txt

Si pas clair tu m'appelles ;-)

davidchristiany commented 5 years ago

J'ajoute la colonne "entrez gene interactor A" lorsque les ids sont fournis à partir d'un fichier tabulé ? Cela doublera la colonne d'id input.

yvandenb commented 5 years ago

De quel output parles-tu : "network" or "nodes" ? Peux-tu donner un exemple, stp ?

davidchristiany commented 5 years ago

network

yvandenb commented 5 years ago

Pour rappel, avec Biogrid comme data source: Output «Network» (edges) : ex de nommage « Network_RessourceName_InputFileName » col 1 : INPUT FILE entrez gene ID (=”Entrez Gene Interactor A”); col2 : Entrez Gene Interactor B (colC du PPI File)); col 3: «Gene symbol Interactor A» (col H du PPI file), col 4 « Gene symbol Interactor B » (col I du PPI file); col. 5 “Experimental System” (col L du PPI file); col 6 “Experimental Type” (col M du PPI file); col 7 “InteractionScore” (col S du PPI file); col 8 “Phenotypes” (col U du PPI file) J'imagine que tu parles de la colonne 1 à retourner en output: cela correspond à l'ID fourni par le user qui a matché dans BioGRID (NB: si pas de match, il faut renvoyer avec "NA") donc li'déla serait effectivement d'avoir en col1: l'ID input user; en col2: l'iD matché dans Biogrid; cela doublonne sauf qd il n'y a pas match...qu'en penses-tu ?

davidchristiany commented 5 years ago

Si je comprends bien je ne reprends pas le fichier initial pour ajouter des colonnes, je créer un nouveau fichier c'est bien cela ?

yvandenb commented 5 years ago

pour le fichier "Network" c'est effectivement un fichier de novo; pour le fichier "nodes_attributes", le plus simple serait me semble t'il, d'en creer également un de novo (i.e. sans reprendre les colonnes de l'input), sinon ça va être compliqué car dans le fichier output "nodes_attributes", il va y avoir des ID venant de la liste input ID du user mais aussi des ID des interactants avec mes proteines et donc qui ne seront pas (tous) présents dans le fichier input user...

davidchristiany commented 5 years ago

Je suis en train de voir l'outil de Lisa, et il s'avère que les ids en input sont cherchés dans l'interactant A ET l'interactant B. Je ne cherche que dans la colonne interactant A si j'ai bien compris ? (codé par Lien il y a un an)

yvandenb commented 5 years ago

Oui, c'était une specif par défaut; en pratique et selon la "convention" - interactant A=appat (bait) et interactant B= proie (prey) - c'est en tte rigueur avec l'interactant A qu'il faut faire le mapping...on reste donc comme ça pour le moment, mais si j'ai aussi noté que dans BioGrid ou STRING, ce distingo n'est pas fait...on verra à terme s'il faut changer selon l'impact sur les outputs en termes de fiabilité

davidchristiany commented 5 years ago

Est-ce que je prend en compte les ids du type "O15511-2" ou je retire le suffix ?

yvandenb commented 5 years ago

Voilà une excellente et épineuse question: pour rappel, l'ID Uniprot avec un "-" (dash ou hyphen) correspond à une isoforme de la forme canonique (ID sans "-") d'une protéine. Si l'info est présente pourquoi la masquer et donc la perdre? Je suis pour la maintenir. Tu dois avoir les cas suivants:

  1. Input ID: canonique mappe une source ID "canonique"
  2. Input ID isoform mappe une source ID "isoform"
  3. Input ID canonique mappe une source ID "isoform"
  4. Input ID isoform mappe une source ID canonique Les cas 1 et 2 sont des matchs exacts Les cas 3 et 4 sont des matchs partiels, cela implique qu'il faut reporter cette info de match partiel dans l'output (p.e. via une col supp "ID matched")
davidchristiany commented 5 years ago

J'ai mis en ligne la première version sur dev-migale, elle ne fonctionne pour l'instant qu'avec biogrid.

yvandenb commented 5 years ago

Testé...et planté... history shared with David: "Test_PPI" item n°10 et 11 Fatal error: Exit code 1 () Traceback (most recent call last): File "/projet/galaxydev/galaxy/tools/proteore/ProteoRE/tools/Build_protein_interaction_maps/build_protein_interaction_maps.py", line 149, in main() File "/projet/galaxydev/ga

davidchristiany commented 5 years ago

L'erreur est corrigé, j'ai aussi ajouté l'interactome "bioplex". En revanche je ne gère pas encore les isoformes ni l'interactome humap.

davidchristiany commented 5 years ago

j'ai ajouté les fichiers sources dans la description

yvandenb commented 5 years ago

Je ne les vois pas ? image

davidchristiany commented 5 years ago

En effet il manquait un petit git pull sur dev-migale. C'est bon maintenant.

yvandenb commented 5 years ago

History "Test_PPI" shared with David item n°17 Output "Network" construit ne correspond pas à ce qui est attendu: Ici ce que tu construis: image Si je considère le Entrez gene ID 7311, il devrait y avoir d'après le fichier source Biogrid, le résultat suivant: image Soient 18 PPIs supplémentaires et non une seule que tu retournes (qui correspond à la dernière ligne de mon tableau); je passe aux tests de cohérence sur le fichier "nodes" et te dis...

davidchristiany commented 5 years ago

J'ai corrigé le problème, j'étais parti du principe qu'il n'y avait qu'une seule ligne (et donc une seule interaction) par id alors qu'il y a plusieurs occurence du meme id J'ai donc corrigé les dictionnaires et l'outil. Cela devrait être bon maintenant.

davidchristiany commented 5 years ago

j'ai ajouté le trie automatique de la première colonne sur les fichiers résultats. A jour sur dev-migale

yvandenb commented 5 years ago

Demande d'amélioration sur les output utilisant "Biogrid" =>

yvandenb commented 5 years ago

Test avec un jeu de données "Souris" : History "Test_PPI" item n°37 et 38 => failed Fatal error: Exit code 1 () Traceback (most recent call last): File "/projet/galaxydev/galaxy/tools/proteore/ProteoRE/tools/Build_protein_interaction_maps/build_protein_interaction_maps.py", line 234, in main() File "/projet/galaxydev/ga

Il faut egalement revoir l'IHM (on en parle lundi ;-))

davidchristiany commented 5 years ago

J'ai mis à jour "building protein interaction maps" sur dev-migale.

yvandenb commented 5 years ago

Extra, merci => je testerai demain

yvandenb commented 5 years ago

Ok pour le format des outputs OK bug fixed pour bioGRID souris et OK sur la cohérence des matching OK pour le data manager Il me reste bioplex à tester Pour toi:

  1. revoir le design de l'IHM - comme propal: toutes les ressources PPI pourraient être listées sous l'option "Select database" Biogrid interactions Homo sapiens - Biogrid interactions Mus musculus - Biogrid interactions Rattus norvegicus - Bioplex 2.0 (Human interactome) - Hu.Map (Human Protein Complex Map) - l'option "Type/source of IDs" : le type se décline selon la ressource selectionnée - l'option "species" n'a plus lieu d'être...également, il serait plus logique de choisir d'abord la srouce de données (PPI DB) puis choisir son input, le type d'ID, et la colonne ou se trouve l'ID à mapper - à voir...
  2. Intégrer-gérer la ressource Hu.Map (human only comme Bioplex) - si pas clair call me
davidchristiany commented 5 years ago

En ce qui concerne bioplex le choix de l'espèce me sert pour pour charger le bon dictionnaire pour retrouver les pathways (dictionnaire construit à partir des fichiers https://reactome.org/download/current/UniProt2Reactome.txt et https://www.reactome.org/download/current/NCBI2Reactome.txt).

Je peux cependant ne créer qu'un seul dictionnaire contenant les 3 espèces et charger le même à chaque fois pour ne garder qu'une seule option bioplex pour les espèces homme, souris et rat.

J'ai toutefois du mal à comprendre pourquoi il faut ne garder qu'un menu déroulant avec toutes les options. Je ne vois pas en quoi le fait de choisir l'interactome puis l'espèce pose problème. La façon dont est construite l'interface actuellement me permet de découper et afficher clairement les options (les espèces disponible, les id type en input). Mais peut-être que quelque chose m'échappe.

(il est peut être plus simple de discuter de ça par téléphone)

yvandenb commented 5 years ago

OK: 16h30 pour un call ?

davidchristiany commented 5 years ago

maintenant c'est bon

davidchristiany commented 5 years ago

ok pour 16h30

davidchristiany commented 5 years ago

Je suis en train de faire la partie humap de l'outil. Ce qui a été fait dans le précédent outils, c'est prendre uniquement des geneID en input et sortir uniquement des uniprot-AC. (la conversion est faite grâce au fichier http://proteincomplexes.org/static/downloads/nodeTable.txt )

Je fais comme pour bioplex ? Je laisse le choix de l'input gene ID ou uniprot-AC et je renvoie en output le type d'accession number donné en input ? Ou alors je ne prends que les geneID en input, auquel cas je renvoies les gene ID en output. Ce qui me parait être le plus censé puisque le fichier des interactions (http://proteincomplexes.org/static/downloads/pairsWprob.txt) est avec des geneID et ils n'ont pas tous d'équivalent uniprot-AC.

yvandenb commented 5 years ago

La réponse est dans la question ;-) Quelque soit l'option retenue, ce serait bien que le comportement de bioplex à HuMap soit le même...de fait si le point de mapping est le Entrez gene ID alors il faut le dire explicitement et renvoyer sur l'ID converter...ca te va? je vote pour le "kiss (keep it simple and stupid)" principle

davidchristiany commented 5 years ago

Bioplex integre les genes ID et les uniprot-AC dans le meme fichier, ce qui n'est pas le cas pour humap. Donc il me parait moins légitime d'utiliser les uniprot-AC pour humap. (comme biogrid)

On limite donc les input aux genes ID, qui seront aussi en output. Je pose la question car le précédent outil prenait des geneID et renvoyait des uniprot-AC pour humap.

yvandenb commented 5 years ago

De quel "précedent outil" parles tu ? celui de Lisa ?

davidchristiany commented 5 years ago

oui

davidchristiany commented 5 years ago

Sachant que je ne peux pas ajouter les 'Official Symbol Interactor' pour humap, il n'y aurait ques les geneID

yvandenb commented 5 years ago

OK alors en résumé: Biogrid : Entrez gene ID Bioplex: AccNum UP et entrez geneID Hu.MAP: entrez gene ID Tu confirmes? cela veut dire documenter et menu "conditional"

davidchristiany commented 5 years ago

oui tout a fais

yvandenb commented 5 years ago

Alors green light :-)

davidchristiany commented 5 years ago

Ok donc pour humap: uniquement les geneID en inut et en output (pas de colonne 'Official Symbol Interactor' ni 'uniprot-AC' ajoutée)

yvandenb commented 5 years ago

Bah, si tu as l'info, pourquoi en priver l'utilisateur ? suis en visio-conf et n'ai pas le temps de regarder les surces files bioplex and Cie mais encore une fois si tu as l'info et sachant que le gen symbol est autrement plus parlant que l'ID pour le user, alors il faut la reporter dans l'output node attributes...let me know quesiton collatérale: le gene name (HGNC) est qque chose qui n'est pas proposé dans l'ID-converter, cette info est-elle dispo dans les mappings files Uniprot ? pourras-tu checker à ton temps ?

davidchristiany commented 5 years ago

Ok j'ajoute aussi le 'Official Symbol Interactor' au fichier output nodes, je croyais ne pas l'avoir mais il s'agit du gene name présent dans http://proteincomplexes.org/static/downloads/nodeTable.txt

davidchristiany commented 5 years ago

mise a jour faire sur dev-migale pour build interaction protein map:

yvandenb commented 5 years ago

Merci David => je testerai lundi matin

yvandenb commented 5 years ago

Test avec un jeu de données "Human" : History "Test_PPI" item n°59 et 60 Biogrid Human avec Entrez gene ID

Fatal error: Exit code 1 () Traceback (most recent call last): File "/projet/galaxydev/galaxy/tools/proteore/ProteoRE/tools/Build_protein_interaction_maps/build_protein_interaction_maps.py", line 276, in main() File "/projet/galaxydev/galaxy/tools/proteore/ProteoRE/tools/Build_protein_interaction_maps/build_protein_interaction_maps.py", line 254, in main network_file, nodes_file = biogrid_output_files(ids,args.species) File "/projet/galaxydev/galaxy/tools/proteore/ProteoRE/tools/Build_protein_interaction_maps/build_protein_interaction_maps.py", line 114, in biogrid_output_files if id in ppi_dict['gene_name']: KeyError: 'gene_name'

davidchristiany commented 5 years ago

C'est une erreur de ma part, j'avais modifié la mauvaise fonction ... C'est corrigé maintenant.

yvandenb commented 5 years ago

Sur les output "nodes_attributes": OK pour col "ID present in Biogrid Human" avec "Biogrid", col "ID present in Hu.MAP pour "HuMAP" mais maintenant pour Bioplex "ID present in Bioplex Human" est devenu "Present in interactome" (qd on selectionne des entrez gene ID, etonnamment ça affiche "ID present in Bioplex Human" qd on indique des "AccNum UP) ??? cf item n°70 et 72 dans "Test_PPI"

yvandenb commented 5 years ago

Test de cohérence: Biogrid (Human , Mouse) et Bioplex 2.0 : OK Mapping et output à re-spécificier pour HuMAP => David/Yves to be discussed

yvandenb commented 5 years ago