M2BBS GDNS-APG
From silico.biotoul.fr
(Created page with '= Ressources = * Diapos de cours = Mise en oeuvre = Illustration sur un organisme. Const…')
Newer edit →
Revision as of 16:56, 9 October 2021
Contents |
Ressources
- Diapos de cours
Mise en oeuvre
Illustration sur un organisme. Constitution d'une base dédiée à un organisme et son exploitation.
Approche par ensemble : Enrichissement
Il a été identifié un ou quelques ensembles de gènes d'intérêt chez E. coli. A quels processus biologiques, fonctions moléculaires ou localisations sub-cellulaires peut-on les relier ?
Ensembles :
Utiliser l'interface Web http://silico.biotoul.fr/enrichment/ afin d'analyser ces ensembles.
Ensembles cibles et script de recherche d'enrichissement
Un premier exercice, relativement simple, va être de reproduire ce type d'analyse. Nous allons utiliser les mots-clés associer aux protéines dans UniProt.
Génération des ensembles cibles
Aller sur UniProt et télécharger le protéome correspondant à E. coli K-12 MG1655 ; étapes :
→ sélectionner Proteomes puis rechercher E. coli K-12 MG1655. Identifier le bon résultat et cliquer sur son Proteome ID
→ Cliquer ensuite sur View all proteins
→ Dans l'onglet Columns, sélectionner celles que nous allons utiliser par la suite : Entry name, Gene names (ordered locus), Gene Ontology IDs, Interpro
→ Puis télécharger au format Tab-separated
Pour générer un fichier texte au format simple qui donne pour chaque mot-clé, la liste des protéines associées, nous allons utiliser R et les librairies tidyverse et jsonlite.
Choix des identifiants de référence
Un des problèmes souvent rencontrés dans ce type d'analyse est d'arriver à identifier : les génomes et les gènes, protéines, etc. En effet, chaque source de données peut utiliser des méthodes de référencement et d'identification qui lui est propre. Pour le protéome d'E. coli, nous allons utiliser un type d'identifiant très souvent utilisé : les bnumbers.
A partir du fichier télécharger, vous allez donc le charger sous R et le reformater pour avoir un mapping des identifiants UniProt vers les bnumbers.
library(tidyverse) uniprot = read_tsv("uniprot/uniprot-proteome_UP000000625.tab") uniprot
# A tibble: 4,438 x 6 Entry `Entry name` `Gene names (orde… `Gene ontology IDs` Keywords `Cross-reference (InterPro… <chr> <chr> <chr> <chr> <chr> <chr> 1 P0AAG8 MGLA_ECOLI b2149 JW2136 GO:0005354; GO:0005524; GO:0005886; GO… ATP-binding;Cell inner membran… IPR003593;IPR003439;IPR017… 2 P0A749 MURA_ECOLI b3189 JW3156 GO:0005829; GO:0007049; GO:0008360; GO… 3D-structure;Cell cycle;Cell d… IPR001986;IPR036968;IPR013… 3 P77737 OPPF_ECOLI b1247 JW1239 GO:0005524; GO:0005886; GO:0015031; GO… ATP-binding;Cell inner membran… IPR003593;IPR003439;IPR017… 4 P23837 PHOQ_ECOLI b1129 JW1115 GO:0000155; GO:0000160; GO:0004721; GO… 3D-structure;ATP-binding;Cell … IPR003660;IPR003594;IPR036… 5 P23865 PRC_ECOLI b1830 JW1819 GO:0004175; GO:0004252; GO:0005886; GO… 3D-structure;Cell inner membra… IPR029045;IPR001478;IPR036… 6 P32155 PTFLA_ECOLI b3900 JW3871 GO:0005737; GO:0008982; GO:0009401; GO… Cytoplasm;Kinase;Phosphoprotei… IPR016152;IPR002178;IPR004… 7 P69801 PTNC_ECOLI b1818 JW1807 GO:0005886; GO:0005887; GO:0009401; GO… 3D-structure;Cell inner membra… IPR004700; 8 P65870 QUED_ECOLI b2765 JW2735 GO:0008270; GO:0008616; GO:0042802; GO… 3D-structure;Lyase;Metal-bindi… IPR007115;IPR038418; 9 P0AAZ4 RARA_ECOLI b0892 JW0875 GO:0003677; GO:0005524; GO:0006261; GO… 3D-structure;ATP-binding;DNA r… IPR003593;IPR032423;IPR003… 10 P0A7R1 RL9_ECOLI b4203 JW4161 GO:0003735; GO:0005829; GO:0006412; GO… 3D-structure;Acetylation;Direc… IPR000244;IPR009027;IPR020… # … with 4,428 more rows
A partir de ce tibble, il s'agit d'extraire les bnumbers de la colonne Gene names (ordered locus). La fonction str_extract permet d'extraire un pattern à partir d'une expression régulière (ici ce sera 'b\\d+') d'une chaîne de caractères. Le résultat devrait correspondre à :
mapping
# A tibble: 4,436 x 2 bnumber uniprotID <chr> <chr> 1 b0001 P0AD86 2 b0002 P00561 3 b0003 P00547 4 b0004 P00934 5 b0005 P75616 6 b0006 P0A8I3 7 b0007 P30143 8 b0008 P0A870 9 b0009 P0AF03 10 b0010 P0AC98 # … with 4,426 more rows
Reformatage des données
A présent, il s'agit de générer la liste des protéines associées à chaque mot-clé (colonne Keywords). Pour cela, on ne gardera que les colonnes Entry et Keywords, une jointure avec mapping va permettre de faire le mapping avec les bnumbers. La fonction separate_rows va nous servir à découper la colonne Keywords et répartir les mots-clés sur des lignes du tibble :
keywords = uniprot %>% select(uniprotID=Entry, keyword=Keywords) %>% right_join(mapping) %>% # right join to remove those without bnumber separate_rows(keyword, sep=';') %>% select(bnumber, keyword) %>% arrange(bnumber) keywords
# A tibble: 27,308 x 2 bnumber keyword <chr> <chr> 1 b0001 Amino-acid biosynthesis 2 b0001 Leader peptide 3 b0001 Reference proteome 4 b0001 Threonine biosynthesis 5 b0002 3D-structure 6 b0002 ATP-binding 7 b0002 Allosteric enzyme 8 b0002 Amino-acid biosynthesis 9 b0002 Direct protein sequencing 10 b0002 Kinase # … with 27,298 more rows
Maintenant, il ne s'agit plus que de regrouper les bnumbers par mot-clé :
ref_sets = keywords %>% group_by(keyword) %>% summarise(count=n(), elements = list(bnumber)) %>% ungroup %>% filter(count>1) %>% select(set.id=keyword, set.desc=count, elements) ref_sets
# A tibble: 333 x 3 set.id set.desc elements <chr> <int> <list> 1 2Fe-2S 24 <chr [24]> 2 3D-structure 1571 <chr [1,571]> 3 3Fe-4S 7 <chr [7]> 4 4Fe-4S 112 <chr [112]> 5 Acetylation 100 <chr [100]> 6 Activator 116 <chr [116]> 7 Acyltransferase 68 <chr [68]> 8 ADP-ribosylation 4 <chr [4]> 9 Allosteric enzyme 38 <chr [38]> 10 Alternative initiation 7 <chr [7]> # … with 323 more rows
Pour utiliser "facilement" ces données avec python, nous allons sauvegarder le tibble au format JSON :
library(jsonlite) ref_sets %>% toJSON %>% write("reference.sets/uniprot.keywords.sets.json")
Script de recherche d'enrichissement
python script
Ecocyc