silico.biotoul.fr
 

M2BBS GDNS-APG

From silico.biotoul.fr

Revision as of 16:56, 9 October 2021 by Barriot (Talk | contribs)
(diff) ← Older revision | Current revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Contents

Ressources

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

Base de données

Approche par matrice ou graphe non orienté