Skip to content

AnissaE/tp-proteomics

 
 

Repository files navigation

tp-proteomics

Contexte Biologique

Vous allez utiliser des outils informatiques qui vous permettront d’analyser des données brutes issues d’une analyse Shotgun Proteomics récemment publiée dans le journal Science sous le titre "Real-time visualization of drug resistance acquisition by horizontal gene transfer reveals a new role for AcrAB-TolC multidrug efflux pump".

Les données associées à cette publication sont publiques et accessibles sur la plateforme PRIDE. Le PDF de la publication est data/Nolivos_2019.pdf.

Mise en place

Méthodologie

Vous forkerez le présent "repository" pour vous permettre de sauvegarder votre travail. Vous éditerez ce fichier README.md pour répondre aux questions dans les encarts prévus à cet effet et inserer les figures que vous aurez générées. Ce "repository" vous appartenant, vous pouvez créer tous les repertoires et fichiers necessaires à la conduite du TP.

I ) Recherche et identification de protéines (peptides) à partir d’expériences de Shotgun Proteomics

L’objectif principal de cette partie est de vous familiariser avec le pipeline d’analyse de données en shotgun proteomics (approche bottum-up) que nous avons vu en cours.

Ressources

Outils à récupérer sur la plateforme pédagogique :

Dans un dossier où vous conserverez toutes les données de ce TP, vous aurez placé au préalable les fichiers suivants :

  • données brutes du QEXactive (extension .raw)
  • fichiers convertis des données MS (extension .mgf)

Observations

Cette partie du TP est découpée en 4 grandes parties avec pour chacune des parties, le cheminement à suivre qui n’est pas exhaustif, c’est-à-dire que vous pouvez de vous-même aller explorer les différentes options proposées par les logiciels (en particulier PeptideShaker). A l’issue du TP, vous completerez le fichier markdown avec vos réponses aux différentes questions qui vous seront posées.

Création de la base de données des protéines

Questions:

En quoi consiste l’approche Shotgun proteomics?
Elle consiste en l'identification des fragments de peptides par leur masse grâce aux résultats de lab ase de données
Quel est l’objectif de cette approche ?
Approche bottom up

Procédure

  • Rechercher la base de données des protéines d’E. coli sur UNIPROT
  • Télécharger toutes les séquences FASTA des protéines Swiss-prot. : format canonical, uncompressed (onglet download).
  • Sauvegarder le fichier FASTA
  • Télécharger le fichier FASTA correspondant à la protéine suivante : « P00761 ».
  • Copier le fichier FASTA de la protéine P00761 à la suite du fichier FASTA du protéome bactérien.
  • NB : le fichier FASTA s’ouvre avec un éditeur de texte.

Questions

L’identification des protéines/ peptides se réalise grâce à une base de données de protéines. Quelle comparaison va être effectuée?
On va comparer cela au protéome complet d'E. coli
On va comparer les listes de peptides trypsiques coupés in silico (provenant de notre base de données) à nos données brutes expérimentales
Existe t’il d’autres types de bases de données pour réaliser l’identification des peptides trypsiques dans un spectre?
Il existe une librairie spectrale (spectre expérimentaux générés précédemment)
qui permet ceci.
Est-ce qu’il est possible d’identifier des peptides sans base de données?
Il est possible d'identifier les peptides grâce à une librairie spectrale
Combien de protéines sont identifiées dans le protéome bactérien?
Dans le cas d'E. coli (K12) 4391 protéines ont été identifiées
Comment la liste des séquences des protéines est-elle établie ? Est-elle complète?

Quelle est la différence entre des séquences Swiss-prot et TremBL?
Les séquences Swiss prot sont annotées manuellement ce qui n'est pas le cas des séquences TrEMBL sont annotées automatiquement (pas forcément vérifiées, donc moins utilisées)
A quoi correspond la protéine P00761 et quelle est sa fonction ?
La protéine P00761 est la trypsine, c'est une enzyme qui se charge couper les protéines notamment après une lysine ou une arginine ==> permet de faire la idgestion
Pourquoi doit-on rajouter cette protéine dans le fichier FASTA final du protéome bactérien?
On l'ajoute car on veut s'affranchir de fausses identifications`

Création de la « peak list »

De nombreux petits logiciels existent pour convertir vos fichiers bruts dans un format lisible par les moteurs de recherche. Il existe de nombreux formats de fichiers (diversité des appareillages, équipementiers etc..) qui ne peuvent pas être exploités directement. Vous trouverez en Open access de nombreux convertisseurs de fichiers MSConvert (Proteowizard), PAVA etc… Ici vous allez utiliser MSconvert (plateforme pédagogique).

  1. Cliquer sur MSConvertGUI.exe
  2. l’interface graphique MSConvert va s’afficher :
  3. charger le fichier .raw (en haut à gauche, File-browse-add)
  4. charger un fichier de destination (TP MADP)
  5. output format : sélectionner mgf et laisser les autres paramètres par défaut
  6. dans la section filters, sélectionner peak picking, Algorithme vendor –cliquer sur add
  7. cliquer sur start
  8. les fichiers.raw doivent être convertis en .mgf

Question

Les données de QExactive ont été enregistrées en mode centroïde et non pas en mode Profiling. D’après vous quelle est la différence entre les deux modes?

Identification des peptides par approche PSM Peptide to Spectrum Matching

  1. Cliquer sur SearchGUI-3.3.20.jar NB : si vous avez des messages d’erreur qui s’affichent (missing precursor charges) à un moment donné du process – mettez NO
  2. charger le fichier .mgf (spectrum file)
  3. charger un fichier de destination (TP MADP)
  4. dans l’onglet search settings, vous allez définir vos paramètres de recherche (cf. Material & Methods de l’article): add
  5. donner un nom à vos paramètres de recherche et cliquer sur Spectrum matching
  6. Charger votre fichier .FASTA
  7. Ajouter les modifications fixes et variables
  8. Rentrer les paramètres suivants : enzyme, missed cleavage, fragments, tolerance (comme illustré)
  9. Cliquer sur OK et enregistrer votre recherche
  10. Dans la page de dialogue SearchGUI, sélectionner les deux moteurs de recherche X.tandem et OMSSA.
  11. Cliquer sur START
  12. Une page de dialogue va s’afficher, montrant l’avancée de la recherche.
  13. Dans votre fichier d’enregistrement de vos données, vous allez obtenir un fichier de sortie qui est nommé searchgui_out.zip. Il contient le fichier d’analyse OMSSA (.omx) et X ! Tandem (.xml)

Questions

Pourquoi est-il important de bien choisir sa base de données?
La base de donnée sera utile lorsque'lon voudra identifier les peptides, donc 
il est important qu'elle soit de bonne qualité (curatée comme SwissProt) et qu'elle soit enrichie.
Est-ce que l’on retrouvera toujours les mêmes protéines au cours du temps ?
Non, car les bases de données sont régulièrement mises à jour. Il est possible qu'on trouve une protéine différente juste après que la base de données ait été
révisée.
Comment la taille de la base de données peut affecter le score de la protéine recherchée?
Comme dit précédemment il est préférable que la base de données soit enrichie. Cela permettrait d'avoir un meilleur choix de la protéine donc cela augmenterait la qualité de l'identification et donc du score.
Est-ce que les modifications ajoutées sont les seules modifications que l’on peut attendre dans une expérience de shotgun proteomics?
Il est possible qu'il y ait d'autres modifications que l'on ne connaissait pas.
Une recherche bibliographique pourrait compléter les lacunes, cela dit, il n'est
pas toujours possible de tout prévoir et c'est un risque à prendre en considération.
Vous avez choisi la trypsine comme enzyme et choisi « specific », qu’est-ce que cela signifie, et comment cela peut affecter le processing ?
L'enzyme trypsine est utilisée comme enzyme de digestion pour les protéines, il est donc nécessaire de le signaler en amont, autrement, s'il reste des traces de la trypsine, cela peut biaiser nos analyses de spectres.
Qu’est-ce qu’un missed cleavage ? pourquoi 2 et pas 0 ?
Missed cleavage correspond au nombre de fois où la trypsine ne coupe pas à certains endroits de la protéine. On choisit le chiffre 2 ici car l'on sait qu'il est possible que parfois, la trypsine ne coupe pas même si cela est censé être un évènement rare. Cela permet donc de prendre en considération des erreurs aléatoires qu'il peut y avoir.
Qu’est-ce que la tolérance en masse, comment la calcule-t-on ?

Visualisation des PSM, peptides - protéines

Après avoir l’interrogation des données avec les moteurs de recherche, nous allons utiliser PeptideShaker pour identifier les peptides et protéines. Cliquer sur le fichier PeptideShaker-1.16.45.jar dans le dossier PeptideShaker-1.16.45. Une page de dialogue va s’ouvrir et cliquer sur New project.

Project details :

  • Donner un nom au projet
  • Donner un nom à l’échantillons Input files :
  • Charger le fichier searchgui que vous avez généré
  • Charger le fichier .mgf
  • Charge la base de données FASTA

Enregistrer votre projet sous le nom que vous souhaitez (l’extension du fichier sera .cpsx)

II ) Analyse Bioinformatique

Ressources

Seul le langage Python (v3.X) est requis pour ce travail. Il vous est conseillé d'installer un environnement virtuel python pour installer les libraries requises independamment de votre systèmes d'exploitation.

  • Le systême de gestion de paquets Conda est très pratique et disponible pour la plupat des systèmes d'exploitation. Une version légère suffisante pour nos besoin est téléchargeable ici
  • Si vous disposez d'un interpreteur python 3.X installé sur votre systême virtualenv est désormais "built-in".

Procédure conda

Depuis le repertoire de votre repository Git, installez le package scipy et lancez jupyter.

$PATH_TO_CONDA_DIR/bin/conda install -c conda-forge scipy notebook
$PATH_TO_CONDA_DIR/bin/jupyter notebook

Jupyter est une environnement de type notebook permettant l'execution de code python dans des cellules avec une persitance des variables entre chaque evaluation de cellule. Jupyter fournit nativement le support de la librarie graphique matplotlib.

Procédure virtualenv

N/A

Test de l'installation

Dans l'inteface de jupyter, créez un nouveau fichier notebook (*.ipynb) localisé dans votre repertoire git. Dans la première cellule copiez le code suivant:

%matplotlib nbagg
import matplotlib.pyplot as plt
import numpy as np
from scipy.stats import norm

La première ligne sert à activer le rendu graphique, pour tout le fichier notebook. Pour dessiner des graphiques, il vous est conseillé de suivre la méthode illustrée par le code suivant que vous pouvez executer dans une deuxième cellule notebook.

fig, ax = plt.subplots()
x = np.linspace(norm.ppf(0.01),
                norm.ppf(0.99), 100)

ax.plot(x, norm.pdf(x),
       'r-', lw=5, alpha=0.6)

ax.plot(x, np.full(len(x), 0.2),
       'b-', lw=1)

fig.show()
  • Creation des objets figet ax
  • Ajout successif de graphiques sur la même figure par l'appel à des methodes de l'objet ax
  • Affichage de la figure complète via fig.show()
  • Evaluation de la cellule pour visualisation dans la cellule de résultats.

L'affichage dans la cellule de rendu du notebook devrait confirmer la bonne installation des dépendances.

On entend par figure un graphique avec des axes légendés et un titre.

La documentation matplotlib est bien faite, mais attention il vous est demandé, pour la construction des graphiques, d'ignorer les méthodes de l'objet plt (frequemment proposées sur le net) et d'utiliser uniquement les méthodes de l'objet Axes. plt est un objet global susceptible d'agir simultanement sur tous les graphiques d'un notebook. A ce stade, son utilisation est donc à éviter.

Données disponibles

Mesures experimentales

Un fichier data/TCL_wt1.tsv contient les données d'abondances differentielles mesurées sur une souche sauvage d'Escherichia coli entre deux conditions: avec Tetracycline et en milieu riche. Le contrôle est le milieu riche.

Accession Description Gene Symbol Corrected Abundance ratio (1.53) Log2 Corrected Abundance Ratio Abundance Ratio Adj. P-Value -LOG10 Adj.P-val
Accesseur Uniprot Texte libre Texte libre

Attention certaines valeurs numériques sont manquantes ou erronées, constatez par vous même en parcourant rapidement le fichier.

Fiches uniprot

Les fiches de toutes les protéines de E.coli sont stockées dans un seul document XML data/uniprot-proteome_UP000000625.xml. Nous allons extraire de ce fichier les informations dont nous aurons besoin, à l'aide du module de la librarie standard XML.etree. Pour vous facilitez la tâche, les exemples suivants vous sont fournis. Prenez le temps de les executer et de les modifier dans un notebook. Vous vous familliariserez ainsi avec la structure du document XML que vous pouvez egalement inspectez dans un navigateur.

from xml.etree.ElementTree import parse, dump
# Parse the E.Coli proteome XML Document
tree = parse('data/uniprot-proteome_UP000000625.xml')
root = tree.getroot()
ns = '{http://uniprot.org/uniprot}' # MANDATORY PREFIX FOR ANY SEARCH within document
# Store all entries aka proteins in a list of xml nodes
proteins = root.findall(ns + 'entry')
# Display the xml subtree of the first protein 
dump(proteins[0])
# Find the xml subtree of a protein with accession "P31224"
for entry in proteins:
    accessions = entry.findall(ns+"accession")
    for acc in accessions:
        if acc.text == "P31224":
            dump(entry)
            break

Cherchez par exemple le sous arbre de la protéine codée par le gene LacZ

Statistiques de termes GO

Les nombres d'occurence de tous les termes GO trouvés dans le protéome de E.coli sont stockés dans le fichier data/EColiK12_GOcounts.json. Ces statistiques ont été dérivées du fichier data/uniprot-proteome_UP000000625.xml.

Objectifs

Representer graphiquement les données d'abondance et construire la pvalue des fonctions biologiques (termes GO) portées par les protéines surabondantes.

Description statistique des Fold Change

source:data/TCL_wt1.tsv
1. Charger le contenu de ce fichier dans un notebook en eliminant les lignes porteuses de valeurs numériques aberrantes.
2. Representez par un histogramme les valeurs de Log2 Corrected Abundance Ratio
3. A partir de cette échantillon de ratio d'abondance, estimez la moyenne et l'ecart-type d'une loi normale.


4. Superposez la densité de probabilité de cette loi sur l'histogramme. Attention, la densité de probabilité devra être mis à l'echelle de l'histogramme (cf ci-dessous)
hist = ax.hist(_, bins=100) # draw histogram
x = np.linspace(min(_), max(_), 100) # generate PDF domain points
dx = hist[1][1] - hist[1][0] # Get single value bar height
scale = len(_)*dx # scale accordingly
ax.plot(x, norm.pdf(x, mu, sqrt(S_2))*scale) # compute theoritical PDF and draw it

Histogramme à inserez ici

5. Quelles remarques peut-on faire à l'observation de l'histogramme et de loi théorique?
On voit qu'il y a un grand décalage entre la loi théorique et la répartition des log2 FC des protéines.
Ceci est en partie dû au fait qu'il y a plus de protéines qui ont un log2FC proche de 0 (144 protéines qui 
ont un log2FC entre -0.34 et -0.42). De plus, la dispersion des valeurs est différentes selon l'intervalle
dans lequel on se place ce qui est bien différent de l'aspect lissé et symétrique du graphique de la loi
de densité normale.

Construction d'un volcano plot

A l'aide de la méthode scatter representer
Matérialisez le quadran des protéines surabondantes, par deux droites ou un rectangle

Sont condidérées comme surabondantes les proteines remplissant ces deux critères:

Volcano plot + quadrant à inserez ici

Analyse Fonctionelle de pathway

Nous allons implementer une approche ORA (Over Representation Analysis) naive.

1. Retrouver les entrées du fichier TSV des protéines surabondates

Quels sont leurs identifiants UNIPROT ?

	P0A8V6 
	P0A9Q1
	P02358 
	P0ACF8
	P62399 
	P0A905
	P76506
	P13036
	P10384 
	P06971
	P0A910
	P06996
	P76344 
	P02931


2. Lister les termes GO portés par ces protéines surabondates

Les entry du fichier data/uniprot-proteome_UP000000625.xml présentent des balises de ce type:

<dbReference type="GO" id="GO:0005737">
<property type="term" value="C:cytoplasm"/>
<property type="evidence" value="ECO:0000501"/>
<property type="project" value="UniProtKB-SubCell"/>
</dbReference>

A ce stade, on se contentera des identifiants GO (eg GO:0005737). Vous pouvez faire un set de cette liste d'identifiants GO pour en éliminer rapidement la redondance.

3. Obtention des paramètres du modèle

Nous evaluerons la significativité de la présence de tous les termes GO portés par les protéines surabondantes à l'aide d'un modèle hypergéometrique.

Si k protéines surabondantes portent un terme GO, la pvalue de ce terme sera équivalente à . Completer le tableau ci-dessous avec les quantités vous semblant adéquates

Symbole Paramètre Quantités Biologiques
k nombre de succès observés 14
K nombre de succès possibles
n nombre d'observations 82
N nombre d'elements observables

4. Calcul de l'enrichissement en fonction biologiques

A l'aide du contenu de data/EColiK12_GOcounts.json parametrez la loi hypergeometrique et calculez la pvalue de chaque terme GO portés par les protéines surabondantes. Vous reportez ces données dans le tableau ci-dessous

identifiant GO définition occurence pvalue

Quelle interpretation biologique faites-vous de cet enrichissement en termes GO spécifiques ?





About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Jupyter Notebook 100.0%