silico.biotoul.fr
 

M2BBS Integration de Donnes Heterogenes - Projets

From silico.biotoul.fr

(Difference between revisions)
Jump to: navigation, search
m (Intégration et préparation des données)
m
Line 1: Line 1:
-
<!-- date des présentaions
+
= Projet 2020-21 =
-
Admin link to the poll
+
-
https://framadate.org/uNPXqVD7MmdkFlF23xH5aPWE/admin
+
-
Public link to the poll
 
-
https://framadate.org/uNPXqVD7MmdkFlF2
 
-
-->
 
-
= Projets 2019-20  =
 
-
<!--
 
Les projets s'organisent en 2 parties :
Les projets s'organisent en 2 parties :
-
* la partie 1 est individuelle (c'est-à-dire que chacun doit la faire et fournir un rapport).
+
* la partie 1 est individuelle (c'est-à-dire que chacun·e doit la faire et fournir un rapport).
-
* la partie 2 est à faire en groupes.
+
* la partie 2 est à faire en groupe de 4 personnes
-
-->
+
-
<!-- 4 Groupes sont à former : 4, 4, 4 et 5 personnes. -->
 
-
<!-- 4 Groupes sont à former de 4 personnes. -->
 
-
== Caractérisation d'ensemble par recoupement de voisinages ==
+
== Partie 1 Individuelle : enrichissement/Gene Set Enrichment Analysis  ==
=== Intégration et préparation des données ===
=== Intégration et préparation des données ===
Line 22: Line 12:
Outline:
Outline:
* choisir un organisme. Le même organisme ne peut pas être pris par plusieurs personnes. La liste des choix attribués (premier arrivé, premier servi) sera disponible en fin de cette section.
* choisir un organisme. Le même organisme ne peut pas être pris par plusieurs personnes. La liste des choix attribués (premier arrivé, premier servi) sera disponible en fin de cette section.
-
* fournir un script permettant d'obtenir à partir du graphe de la Gene Ontology et des associations 2 fichiers :
+
* fournir un script/document (par exemple la procédure réalisée ensemble sur ''E. coli'') permettant d'obtenir à partir du graphe de la Gene Ontology et des associations 2 fichiers :
** le premier fournit les associations directes : la liste des gènes annotés directement par un même terme
** le premier fournit les associations directes : la liste des gènes annotés directement par un même terme
** le second fournit les associations implicites : la listes des gènes annotés par un même terme ou un de ses descendants (plus spécifiques)
** le second fournit les associations implicites : la listes des gènes annotés par un même terme ou un de ses descendants (plus spécifiques)
-
* choisir l'organisme de quelqu'un d'autre (là aussi, ne pas prendre plusieurs fois le même), afin de vérifier que le script précédent fonctionne bien sur un autre organisme.
+
* Utiliser des statistiques descriptives  (par exemple : nombre de gènes annotés sur le génome, nombre de termes par gène, nombre de gènes par terme, ...) afin de discuter de l'avancement de l'annotation de l'organisme choisi.
-
* utiliser le script sur les 2 organismes et faire une synthèse (par exemple : nombre de gènes annotés sur le génome, nombre de termes par gène, nombre de gènes par terme, ...). L'organisme choisi est-il "bien" annoté par la GO ?
+
<pre>
<pre>
-
Prénom     Organisme                               Autre organisme choisi
+
Prénom Organisme
-
Cheryn Microlunatus phosphovorus
+
Refka
-
Marine      Yersinia pestis
+
Laura BS
-
Soufiane Bacillus cereus
+
Quentin
-
Eve Caenorhabditis elegans
+
Tomas
-
Tristan         Drosophila melanogaster
+
Pierre
-
Elise Canis lupus familiaris
+
Sophie
-
Chloé      Plasmodium falciparum
+
Aurélien
-
Nicolas      Anaplasma marginale
+
Valentine
-
Juliette Gallus gallus
+
Laura DF
-
Clara      Apis mellifera
+
Codé
-
Geoffrey        Arabidopsis thaliana
+
Antoine
-
Matthieu        Danio rerio
+
Baptiste
-
Julien      Ornithorhynchus anatinus
+
Jérémy
-
Marion      Pseudomonas fluorescens
+
Alexia
-
Alexandre      Schistosoma mansoni
+
Safia
 +
Houyrem
</pre>
</pre>
-
<!--
+
=== Ajout de fonctionnalités à <tt>blastsets.py</tt> ===
-
Organismes choisis :
+
-
{| class="wikitable"
+
-
|-
+
-
|                      ||  Organisme choisi || Autre organisme
+
-
|-
+
-
| A. Guillaume || ''Sus scrofa'' || ''Rattus norvegicus''
+
-
|-
+
-
| A. Ségolène || ''Escherichia coli'' || ''Gallus gallus''
+
-
|-
+
-
| B. Allan  || ''Candida albicans'' || ''Sus scrofa''
+
-
|-
+
-
| C. Eva || ''Canis lupus familiaris'' || ''Aspergillus nidulans''
+
-
|-
+
-
| D-S. Kathy || ''Dickeya dadantii'' ||  ''Bos taurus''
+
-
|-
+
-
| F. Michelle || ''Pseudomonas aeruginosa'' PAO1 || ''Plasmodium falciparum''
+
-
|-
+
-
| G. Fanny || ''Mus musculus'' || ''Drosophila melanogaster''
+
-
|-
+
-
| H. Fadoua || ''Rattus norvegicus'' || ''Candida albicans''
+
-
|-
+
-
| L. Emilien || ''Oriza sativa'' || ''Arabidopsis thaliana''
+
-
|-
+
-
|  N. Delphine || ''Aspergillus nidulans'' ||  ''Canis lupus familiaris''
+
-
|-
+
-
| N. Hoang || ''Leishmania major'' || ''Oriza sativa''
+
-
|-
+
-
| R. Flavien || ''Drosophila melanogaster'' || ''Dickeya dadantii''
+
-
|-
+
-
| T. Robel || ''Plasmodium falciparum'' || ''Leishmania major''
+
-
|-
+
-
| T. Anna || ''Agrobacterium tumefaciens'' || ''Mus musculus''
+
-
|-
+
-
| T. Abdel || ''Bos taurus'' || ''Schizosaccharomyces pombe''
+
-
|-
+
-
| V. Anaïs  || ''Gallus gallus'' || ''E. coli''
+
-
|-
+
-
| V. Caroline || ''Schizosaccharomyces pombe'' || ''Pseudomonas aeruginosa'' PAO1
+
-
|}
+
-
-->
+
-
 
+
-
=== Ajout de fonctionnalités à <tt>blastset.py</tt> ===
+
'''Notation :''' On considère un ensemble requête ''Q'' (query) et un ensemble cible ''T'' (target, appartenant à un jeu de données de référence). Les deux ensembles sont inclus dans l'ensemble des gènes de l'organisme ''G'' (génome). Ils ont respectivement des cardinalités ''q'', ''t'', ''g''.
'''Notation :''' On considère un ensemble requête ''Q'' (query) et un ensemble cible ''T'' (target, appartenant à un jeu de données de référence). Les deux ensembles sont inclus dans l'ensemble des gènes de l'organisme ''G'' (génome). Ils ont respectivement des cardinalités ''q'', ''t'', ''g''.
-
Il s'agit de proposer d'autres mesures de dissemblance. La première est naïve (non statistique) que l'on nommera ''overlap'' ou ''coverage'' et consiste à considérer quelles fractions des 2 ensembles se correspondent. Pour la cohérence avec les autres mesures la valeur sera de 1 quand aucun élément n'est commun aux 2 ensembles, et 0 pour 2 ensembles identiques. Il s'agit donc de multiplier ''c/q'' par ''c/t'' avec ''c'' le nombre d'éléments communs aux ensembles ''Q'' et ''T'' respectivement de cardinalités ''q'' et ''t'', et de soustraire cette valeur à 1.
+
Il s'agit de proposer d'autres mesures de similarités. La première est naïve (pas statistique) que l'on nommera ''overlap'' ou ''coverage'' et consiste à considérer quelles fractions des 2 ensembles se correspondent. Pour la cohérence avec les autres mesures la valeur sera de 1 quand aucun élément n'est commun aux 2 ensembles, et 0 pour 2 ensembles identiques. Il s'agit donc de multiplier ''c/q'' par ''c/t'' avec ''c'' le nombre d'éléments communs aux ensembles ''Q'' et ''T'' respectivement de cardinalités ''q'' et ''t'', et de soustraire cette valeur à 1.
La deuxième mesure à ajouter est un <math>\chi^2</math> d'indépendance en considérant les ensembles ''Q'' et ''T'' comme 2 variables qualitatives. Le test est donc à effectuer sur la table de contingence :
La deuxième mesure à ajouter est un <math>\chi^2</math> d'indépendance en considérant les ensembles ''Q'' et ''T'' comme 2 variables qualitatives. Le test est donc à effectuer sur la table de contingence :
Line 107: Line 55:
|}
|}
-
'''Remarque :''' Il est possible de s'autoriser à transformer la mesure non statistique (coverage) afin qu'elle indique la dissemblance entre 2 ensembles (0 : identique, >0 : dissemblable). Ainsi les résultats seront triés dans le même ordre pour coverage et pour les p-valeurs (du <math>\chi^2</math> par exemple).
+
'''Remarque :''' Il est possible de s'autoriser à transformer la mesure non statistique (coverage) afin qu'elle indique la dissemblance entre 2 ensembles (0 : identique, >0 : dissemblable). Ainsi les résultats seront triés dans lemême ordre pour coverage et pour les p-valeurs (du <math>\chi^2</math> par exemple).
=== Comparaison des mesures ajoutées ===
=== Comparaison des mesures ajoutées ===
Proposez une approche et comparez les différentes mesures intégrées au script. Laquelle est-il préférable d'utiliser ?
Proposez une approche et comparez les différentes mesures intégrées au script. Laquelle est-il préférable d'utiliser ?
-
 
-
=== Comparaison de fonction de regroupement ===
 
-
 
-
Les voisinages obtenus par différentes fonction de regroupement se ressemblent-ils ?
 
-
 
-
A partir d'une question biologique, par exemple, les gènes organisés en opéron sont-ils, de manière générale, co-exprimés, reformulez-la en comparaison de voisinage pour y répondre. Pour cela, choisissez deux fonctions de regroupement (par exemple la co-régulation et une autre) et proposez et mettez en oeuvre la comparaison des voisinages obtenus selon ces fonctions de regroupement sur l’organisme que vous avez choisi. Au final, à partir des données intégrées, il s'agira de répondre à la question posée, chiffres et analyses à l'appui.
 
=== Rapport à rendre ===
=== Rapport à rendre ===
-
Un rapport succinct est demandé. L'objectif est de fournir plutôt un rapport technique pour l'ajout des mesures au script et méthodologique pour la partie comparaison des mesures. Il doit donc être complet, pertinent, ciblé (qui est le lecteur ?), scientifique et rigoureux.
+
Un rapport succinct est demandé. L'objectif est de fournir plutôt un rapport technique pour l'ajout des mesures au script et méthodologique pour la partie comparaison des mesures. Il doit donc être complet, pertinent, ciblé (qui est le lecteur ?), scientifique et rigoureux.  
Il doit inclure  
Il doit inclure  
Line 128: Line 70:
** données utilisées (sans oublier les versions)
** données utilisées (sans oublier les versions)
** méthodes d'intégration envisagées, choix et détails dans la réalisation
** méthodes d'intégration envisagées, choix et détails dans la réalisation
-
** synthèse de l'annotation GO de l'organisme choisi
+
** statistiques descriptives sur l'avancement de l'annotation de l'organisme chois (avec des illustrations pertinentes)
* ajout de fonctionnalités :  
* ajout de fonctionnalités :  
** des explications sur les modifications apportées au script original,
** des explications sur les modifications apportées au script original,
Line 144: Line 86:
* Le rapport doit être au format PDF.
* Le rapport doit être au format PDF.
* Le rapport peut être en anglais ou en français mais pas les 2.
* Le rapport peut être en anglais ou en français mais pas les 2.
-
* Le script modifié et les éventuels jeux de tests utilisés et résultats obtenus doivent être disponibles dans votre github.
+
* Le script modifié et les éventuels jeux de tests utilisés et résultats obtenus doivent être fournis ou disponibles sous forme d'archive ou projet gitlab.
-
 
+
-
=== Sujets alternatifs aux questions 1.2 à 1.4 ===
+
-
 
+
-
# Etudier la possibilité d'extrapoler la correction du seuil alpha par fonction de répartition empirique des minPi en fonction de la taille de l'ensemble requête
+
-
# Implémenter le filtrage des ensembles cibles considérés par critère de pertinence (strict ou ratio de pertinence) sur :
+
-
## pour un graphe orienté sans circuit (DAG)
+
-
## pour un arbre
+
-
## pour un treillis (ordre des gènes sur le chromosome)
+
-
# Implémenter la recherche d'enrichissement sur un graphe par marches aléatoires
+
-
 
+
-
= Partie 2 collective 2018-19 (pas à faire): Intégration et exploitation de données hétérogènes dans un modèle graphique =
+
-
 
+
-
<!--big>'''En cours d'élaboration.'''</big> Le fond ne va pas changer ; la description de ce qui est demandé va éventuellement gagner en détails mais peu. La description du rapport attendu arrive "bientôt". -->
+
-
 
+
-
Le but de cette partie est de mettre en oeuvre certains principes vus jusqu'ici afin de répondre à une question biologique : les gènes co-régulés chez un organisme donné le sont-ils aussi chez ''Escherichia coli'' K-12 MG1655 ?
+
-
 
+
-
Afin d'y répondre, il faudra choisir un organisme, déterminer les gènes co-régulés dans les 2 génomes ainsi que la correspondance des gènes entre les 2 génomes.
+
-
 
+
-
La co-régulation des gènes peut se trouver dans la littérature et les bases de données mais les connaissances actuelles ne sont pas complètes. Pour pallier ce manque, on pourra choisir de faire une prédiction de la co-régulation avec une approximation : il s'agit de supposer que les gènes co-exprimés sont co-régulés. Pour déterminer les gènes co-exprimés chez un organisme, on se base généralement sur un compendium de données d'expression comprenant suffisamment de conditions expérimentales différentes. A partir des profils d'expression des gènes dans toutes ces conditions, on applique une méthode de clustering pour identifier les ensembles de gènes co-exprimés. Il est bien sûr aussi possible d'utiliser une base de données de référence, si elle existe, ou bien une base de données contenant des scores de co-expression entre les paires de gènes de l'organisme étudié.
+
-
 
+
-
La correspondance des gènes entre les 2 génomes peut là aussi, bien sûr, si elle existe être établie à partir d'une base de données de référence, ou bien être calculée selon une méthode d'identification des gènes orthologues 1:1.
+
-
 
+
-
Objectifs et problématiques :
+
-
* choix d'un organisme
+
-
* les gènes orthologues chez ''E. coli'' K-12 MG1655 des gènes co-exprimés dans l'organisme choisi sont-ils aussi co-exprimés ?
+
-
* quel est le groupe de gènes le mieux conservé (en termes d'orthologie, de co-expression, et d'annotation) ?
+
-
* bonus (à réaliser si vous le souhaitez)
+
-
** les ensemble de gènes conservés en co-expression forment-ils un opéron ''chez E. coli'' ?
+
-
** vaut-il mieux utiliser les orthologues fournis par String ou Roland B. ? (Si RB vous a fourni ces données)
+
-
** associer une ou des annotations aux groupes de gènes co-exprimés
+
-
 
+
-
Etapes clés :
+
-
* détermination des gènes co-exprimés
+
-
* identification des gènes orthologues 1:1 chez ''E. coli''
+
-
* constitution des jeux de données (de type ''graph database'')
+
-
* correspondance des groupes de gènes co-exprimés chez l'organisme choisi et ''E. coli''
+
-
* bonus
+
-
** détermination des opérons chez ''E. coli''
+
-
** correspondance avec les opérons de ''E. coli''
+
-
** mise en oeuvre avec d'autres méthodes pour l'identification des gènes co-exprimés et des orthologues, et comparaison des résultats
+
-
** annotation automatique de groupes de gènes
+
-
 
+
-
Contraintes :
+
-
* Les organismes choisis par les différents groupes doivent être différents (premier arrivé = premier servi).
+
-
* Utilisation de Neo4j pour la représentation sous forme de graphe des données intégrées (expression, orthologie, annotation, ...).
+
-
 
+
-
<!--
+
-
Groupes et organismes :
+
-
{| class="wikitable"
+
-
|-
+
-
| ''Candida albicans'' || ''Pseudomonas aeruginosa'' PAO1 || ''Yersinia pestis'' || ''Plasmodium falciparum'' || ''Bos taurus''
+
-
|-
+
-
| A. Guillaume
+
-
B. Allan 
+
-
 
+
-
H. Fadoua
+
-
 
+
-
| A. Ségolène
+
-
G. Fanny
+
-
 
+
-
T. Anna
+
-
 
+
-
V. Anaïs
+
-
 
+
-
| C. Eva
+
-
N. Delphine
+
-
 
+
-
R. Flavien
+
-
 
+
-
| F. Michelle
+
-
N. Hoang
+
-
 
+
-
T. Robel
+
-
 
+
-
V. Caroline
+
-
 
+
-
| D. S. Kathy
+
-
L. Emilien
+
-
 
+
-
T. Abdel
+
-
|}
+
-
-->
+
-
 
+
-
=== Rapport à rendre ===
+
-
 
+
-
Là aussi, un rapport succinct est demandé. L'objectif est de fournir des informations sur la réalisation de cette partie et les choix effectués pour y arriver. Il doit donc être complet, pertinent, scientifique et rigoureux.
+
-
 
+
-
Il doit inclure
+
-
* une brève introduction générale décrivant le contexte, les objectifs et le plan de ce qui suit.
+
-
* Analyse et conception
+
-
** choix de l'organisme
+
-
** méthode(s) pour la sélection des données utilisées
+
-
** méthode(s) pour l'identification des gènes co-régulés
+
-
** methode(s) utilisée pour l'identification des gènes orthologues
+
-
* Réalisation
+
-
** environnement de travail, constitution des données utilisées (modèle ''graph database''), paramétrages des méthodes utilisées, logiciels et banques utilisés
+
-
** résultats
+
-
* Bilan et perspectives
+
-
** synthèses et conclusions sur l'étude demandée
+
-
** perspectives d'amélioration de ce type d'étude, pistes d'analyses qu'elle ouvre (sur l'organisme sélectionné, ou plus généralement)
+
-
* Bilan du groupe sur cette partie du projet
+
-
** part de chacun dans les différents aspects du travail effectué
+
-
** difficultés rencontrées
+
-
** avis sur les bases de données de types ''graph database''
+
-
 
+
-
Contraintes :
+
-
* Le rapport doit être au format PDF.
+
-
* Le rapport peut être en anglais ou en français mais pas les 2.
+
-
* Les scripts et programmes développés et les éventuels jeux de tests utilisés et résultats obtenus doivent être fournis ou disponibles sous forme d'archive.
+
-
 
+
-
=== Présentation ===
+
-
 
+
-
La présentation orale se fera par groupe. La durée de la présentation ne doit pas dépasser 20 minutes. Elle sera suivie de questions, commentaires et d'une discussion.
+
-
 
+
-
La présentation sera sur le thème d'une présentation interne à une équipe ou un institut, c'est-à-dire que le public connaît les enjeux et les contraintes. Elle portera donc davantage sur les choix des méthodes et leur réalisation, ainsi que sur la discussion et les résultats obtenus.
+
-
 
+
-
== Calendrier ==
+
-
 
+
-
Partie 1 individuelle : Le rapport individuel et l'archive associée sont à remettre par voie électronique '''avant le 15 octobre 2018'''.
+
-
 
+
-
Partie 2 collective, les dates indiquées sont les '''dates limites exclues''' (par exemple l'information sur la composition des groupes doit parvenir '''avant''' le 24/09, donc vous avez jusqu'au 23)
+
-
* 24/09 détermination des groupes (et information transmise à RB)
+
-
* 01/10 choix d'un organisme (et information transmise à RB)
+
-
Le rapport collectif est à remettre par voie électronique '''avant le 10 décembre'''.
+
-
 
+
-
'''Remarque :''' tout retard sur le calendrier, notamment la remise des livrables, pourra être pris en compte dans la note d'évaluation.
+
-
 
+
-
 
+
-
 
+
-
 
+
-
 
+
-
 
+
-
 
+
-
 
+
-
 
+
-
 
+
-
 
+
-
 
+
-
 
+
-
 
+
-
 
+
-
 
+
-
 
+
-
 
+
-
<!--
+
-
= Projets 2015-16 =
+
-
Le projet consiste à :
+
-
# ajouter des fonctionnalités au script Search_enriched_sets.py vu en TP
+
-
# sélectionner un organisme pour ensuite constituer des banques d'ensembles de référence (GO, mots-clés, ...)
+
-
# développer une méthode pour calculer le contenu en information associé à une annotation
+
-
# est-ce que, d'une manière générale, les protéines annotées avec un même mot clé sont connectées dans le graphe de STRINGdb ?
+
-
à compléter
+
-
 
+
-
Le projet est à réaliser par groupe de 4. Le rapport au format électronique est à rendre avant les vacances de fin d'année.
+
-
 
+
-
== Partie 1. Ajout de fonctionnalités à Search_enriched_sets.py ==
+
-
 
+
-
'''Notation :''' On considère un ensemble requête Q (query) et un ensemble cible T (target, appartenant à un jeu de données de référence). Les deux ensembles sont inclus dans l'ensemble des gènes de l'organisme G (génome). Ils ont respectivement des cardinalités q, t, g.
+
-
 
+
-
Il s'agit de proposer d'autres mesures de similarités. La première est naïve (pas statistique) que l'on nommera ''overlap'' ou ''coverage'' consiste à considérer quelles fractions des 2 ensembles se correspondent (0 pour aucun élément en commun, 1 pour 2 ensembles identiques). Il s'agit donc de multiplier ''c/q'' par ''c/t'' avec ''c'' le nombre d'éléments communs aux ensembles ''Q'' et ''T'' respectivement de cardinalités ''q'' et ''t''.
+
-
 
+
-
La deuxième mesure à ajouter est un <math>\chi^2</math> d'indépendance en considérant les ensembles Q et T comme 2 variables qualitatives. Le test est donc à effectuer sur la table de contingence :
+
-
{| border='1' cellspacing='0' cellpadding='10'
+
-
|-
+
-
|        ||  T  || G \ T || <math>\Sigma</math>
+
-
|-
+
-
|  Q    ||  c  || q - c || q
+
-
|-
+
-
|  G \ Q ||  t-c || g -q - t + c || g - q
+
-
|-
+
-
|  <math>\Sigma</math>  || t  || g - t || g
+
-
|}
+
-
 
+
-
== Partie 2. Constitution d'ensembles de références ==
+
-
 
+
-
Sélectionnez tout d'abord un organisme (sur la base de vos intérêts par exemple). Il sera néanmoins plus aisé de constituer des jeux de données concernant un organisme bien étudié (homme, souris, levure, arabette, colibacille, ...) car davantage de données devraient être disponibles. Chaque groupe doit travailler sur un organisme différent.
+
-
 
+
-
Ensuite, générez différentes banques d'ensembles à partir de différents critères de regroupement. Il faudra notamment générer les ensembles formés par
+
-
* les mots-clés présents sur les fiches UniProt,
+
-
* les termes de la Gene Ontology. Il faudra inclure uniquement les termes pertinents, c'est-à-dire non redondant. Par exemple, si on obtient le même ensemble pour un terme T22 et un terme T2 moins spécifique que T22, alors seulement l'ensemble correspondant au terme T22 sera généré (le plus spécifique).
+
-
* les voies métaboliques provenant au choix de KEGG, BioCyc,
+
-
* les identifiants PubMed : pour chaque publication portant sur l'organisme choisi, il s'agit d'extraire l'ensemble de gènes ou protéines concernés.
+
-
* plus une source de données de votre choix, c'est-à-dire que vous trouvez pertinente, et qui sera spécifique de l'organisme choisi.
+
-
 
+
-
== Partie 3. Contenu en information ==
+
-
 
+
-
Pour cette partie, il s'agit de mettre en oeuvre le concept de contenu en information (information content ou ''IC'' dans la suite) abordé en cours. Sa formule est la suivante :
+
-
 
+
-
<math>IC(term) = - \log (p(term))</math> avec <math>p(term) = freq(term) </math>
+
-
 
+
-
Ecrire un programme qui, à partir d'une banque de données d'ensembles de références, les affiche par IC décroissant (en affichant également l'IC associé à l'ensemble).
+
-
 
+
-
Ajouter cette fonctionnalité au script Search_enriched_sets.py, c'est-à-dire qu'en plus de la p-valeur ou du score d'un ensemble cible, il faudra également afficher l'IC de l'ensemble sur la sortie du programme.
+
-
 
+
-
== Partie 4. Analyse ==
+
-
 
+
-
Est-ce que, d'une manière générale, les protéines annotées avec un même mot clé sont connectées dans le graphe de STRINGdb ?
+
-
 
+
-
== Livrables ==
+
-
 
+
-
Le rapport de projet au format PDF doit contenir les points suivants :
+
-
* Partie 1. Des explications sur les modifications apportées au script original. Comment utiliser le script modifié. Un exemple d'utilisation des fonctionnalités ajoutées.
+
-
* Partie 2. '''Description des données.''' Données sources utilisées. Transformations effectuées.
+
-
* Partie 3. Un exemple d'utilisation du programme réalisé.
+
-
* Partie 4. Conception et mise en oeuvre de la méthode développée pour répondre à la question posée.
+
-
* '''Bilan et perspectives.''' Conclusion et perspectives. Difficultés rencontrées, suggestions sur d'autres approches, d'autres sources de données à exploiter.
+
-
* '''Répartition des tâches.''' Description de la part de l'apport de chacun des membres du groupe au projet : bien que chacun devrait participer à toutes les étapes, ce projet peut se décomposer en sous-étapes dont chacune réalisée plus particulièrement par l'un des membres du groupe.
+
-
 
+
-
Le tout sera envoyé ou mis à disposition '''avant le 21 décembre 2015''' sous forme d'archive contenant le rapport, les jeu de données, les scripts et programmes réalisés.
+
-
 
+
-
-->
+
-
 
+
-
 
+
-
 
+
-
 
+
-
 
+
-
 
+
-
 
+
-
<!--
+
-
= Projets 2014-15 =
+
-
Le projet consiste à sélectionner une source de données pour effectuer la priorisation de gènes candidats. Les principales étapes seront donc les suivantes :
+
-
# sélection d'un organisme et définition d'un jeu de données pour l'évaluation des performances. Concertation entre vous afin de pouvoir réaliser le point 5 (mise en commun des données)
+
-
# sélection d'une source de données (expression, interaction, annotation ...). A faire également en concertation pour que chacun travaille sur une source de données différente pour le même organisme.
+
-
# choix des méthodes pour l'obtention de matrices de dissimilarité
+
-
# mise en oeuvre et évaluation sur un jeu de données tests
+
-
# mise en commun des matrices pour la fusion des résultats
+
-
# comparaison des performances avec les matrices fournies (''E. coli'' K12)
+
-
# bilan et perspectives
+
-
 
+
-
'''Données fournies'''
+
-
* [[silico:enseignement/m2BBS/idh/PaerA.geo.h5|PaerA.geo.h5]]: gene-gene dissimilarity matrix based on GEO expression profiles for ''P. aeruginosa'' PAO1
+
-
* [[silico:enseignement/m2BBS/idh/PaerA.string.h5|PaerA.string.h5]]: gene-gene dissimilarity matrix based on STRING network for ''P. aeruginosa'' PAO1
+
-
* [[silico:enseignement/m2BBS/idh/PaerA.ncleandb12.abc|PaerA.ncleandb12.abc]]: ''P. aeruginosa'' validation sets extracted from [https://www-abcdb.biotoul.fr ABCdb]. The format is for each line:
+
-
 
+
-
* [[silico:enseignement/m2BBS/idh/SaurH.geo.h5|SaurH.geo.h5]]: gene-gene dissimilarity matrix based on GEO expression profiles for ''S. aureus'' NCTC 8325
+
-
* [[silico:enseignement/m2BBS/idh/SaurH.string.h5|SaurH.string.h5]]: gene-gene dissimilarity matrix based on STRING network for ''s. aureau'' NCTC 8325
+
-
* [[silico:enseignement/m2BBS/idh/SaurH.ncleandb12.abc|SaurH.ncleandb12.abc]]: ''S. aureus'' NCTC 8325 validation sets extracted from [https://www-abcdb.biotoul.fr ABCdb]. The format is for each line: <tt>set_id<tab>gene_id<tab>gene_id<tab>gene_id...</tt>
+
-
 
+
-
= Projets 2013-14 =
+
-
 
+
-
Le projet consiste en la mise en oeuvre d'un algorithme de recherche de caractéristiques sur-représentées au sein d'un ensemble de gènes par confrontation avec d'autres ensembles de gènes (relation de voisinage). Les caractéristiques/voisinages à rechercher sont constitué(e)s d'ensembles de gènes imbriqués les uns dans les autres selon 3 structures (posets) : (i) arbre, (ii) graphe acyclique orienté ou encore (iii) treillis. Des algorithmes efficaces sont présentés dans [1], et aussi [2] pour la structure en treillis. Vous aurez donc à choisir une des méthodes pour sa mise en oeuvre. Le travail à réaliser se décompose en :
+
-
* sélection d'une des méthodes (Projet 1, 2 ou 3 ci-desssous)
+
-
* implémentation sous forme de script(s) Perl
+
-
* constitution de jeux de données (et éventuellement de scripts pour convertir les données)
+
-
* utilisation du/des script(s)
+
-
* remise d'un rapport (conception et réalisation du script, conversion des données, constitution du jeu de test, évaluation, bilan et perspectives)
+
-
 
+
-
 
+
-
== Projet 1 : Relation de voisinage représenté par un graphe acyclique orienté (DAG) ==
+
-
La représentation sous forme de DAG est la plus générique. Il s'agit de l'algorithme 2 présenté dans [1]. Pour ce projet, il est conseillé d'utiliser la relation de voisinage induite par les annotations de la Gene Ontology. Le site http://www.geneontology.org met à disposition l'ontologie (Downloads->Ontologies) et les associations (Downloads->Annotations).
+
-
 
+
-
Une recherche s'effectue comme vue pendant les enseignements (avec le script search_enriched_sets.pl) mais la représentation des ensembles et l'algorithme de recherche seront adaptés.
+
-
 
+
-
Pour la génération de jeu de données, il faudra donc intégrer la structure de la Gene Ontology avec des gènes associés. Pour cela, vous pourrez utiliser la librairie goperl. Cette librairie permet de charger la structure puis d'y ajouter des associations à des gènes. Une des partie de ce projet consistera donc à convertir ces informations en un ficher de format simple de la forme suivante : chaque ligne représente un noeud du graphe selon la syntaxe : <tt>node_id  node_name  nb_genes  child_node_id?[,child_node_id]*  gene_id?[,gene_id]*  ROOT?</tt>
+
-
 
+
-
Exemple extrait de [[Media:EcolA.go.closure.2012.dag]] :
+
-
# format: dag
+
-
# version: 1.0
+
-
GO:2001001      biological_process: negative regulation of xylan catabolic process      0      GO:2000916,GO:2000922         
+
-
GO:0006285      biological_process: base-excision repair, AP site formation    2      GO:0045007,GO:0045008  MUG,MUTM       
+
-
GO:0006284      biological_process: base-excision repair        8      GO:0006285,GO:0006286,GO:0006287,GO:0006288    ALKA,MUG,MUTM,MUTY,NEI,NTH,TAG,UNG     
+
-
GO:0015777      biological_process: teichoic acid transport    0                     
+
-
ROOT    Gene Ontology  3646    GO:0003674,GO:0005575,GO:0008150                ROOT
+
-
GO:0008750      molecular_function: NAD(P)+ transhydrogenase (AB-specific) activity    2              PNTA,PNTB     
+
-
 
+
-
'''Commentaires :'''
+
-
* ROOT indique la racine
+
-
* GO:0006285 sert à annoter MUG et MUTM, c'est un descendant de GO:0006284 ; par conséquent ce dernier sert également à annoter MUG et MUTM
+
-
 
+
-
'''Remarque :''' Lors de la génération du fichier ci-dessus, il sera certainement judicieux d'avoir au préalable supprimé les noeuds qui n'apportent pas d'information : par exemple, un noeud situé entre GO:0006285 et GO:0006284 mais dont les gènes associés seraient les mêmes que GO:0006285 (en l'occurrence MUG et MUTM).
+
-
 
+
-
 
+
-
Pour la confrontation des ensembles, il s'agit de produire un script qui charge le fichier ci-dessus dans une représentation interne, puis parcourt cette structure pour ne comparer que les ensembles pertinents et identifier les termes significativement enrichis.
+
-
 
+
-
 
+
-
 
+
-
 
+
-
 
+
-
== Projet 2 : Voisinage représenté par un arbre (tree) ==
+
-
La représentation sous forme d'arbre s'applique à des données telles que des clustering hiérarchiques (de profils d'expression de gènes par exemple) ou bien la [http://www.chem.qmul.ac.uk/iubmb/enzyme/ nomenclature des enzymes] et permet de définir un algorithme encore plus efficace que pour la représentation générique sous forme de DAG. Le format de fichier pour stocker cette information sera donc le format newick (exemple sur un [[Media:EcolA.transcriptome.hcl.tree.nw|clustering de profils d'expression des gènes ''Escherichia coli'']]). Le jeu de tests pourra consister à chercher quel(s) cluster(s), s'il y en a, correspond(ent) à quel(s) [[Media:EcolA.pathways.sets|pathway(s)]].
+
-
 
+
-
L'algorithme est donné en page 8 de [1] et est le suivant :
+
-
<source lang='perl'>
+
-
open newick_file
+
-
tok = next_token
+
-
stacks = new stack
+
-
current_stack = null
+
-
do
+
-
  if tok == ( # new node/subtree root
+
-
      push stacks, new stack
+
-
  elsif tok == gene # gene/sibling in the current subtree
+
-
      if gene in query
+
-
        triplet(nb_common_elements, nb_differing_elements, potentally_pertinent) = (1,0,true)
+
-
      else
+
-
        triplet(nb_common_elements, nb_differing_elements, potentially_pertinent) = (0,1,false)
+
-
      push top_stack, triplet
+
-
  elsif tok == ) # all siblings seen for this subtree
+
-
      # compute #common #differing
+
-
      common = max_common = differing = 0
+
-
      foreach triplet in top_stack
+
-
        common += triplet.nb_common_elements
+
-
        max_common = triplet.nb_common_elements if triplet.nb_common_elements > max_common
+
-
        differing += triplet.nb_differing_elements
+
-
      # test rule 2
+
-
      potentially_pertinent = common > max_common
+
-
      # test rule 3
+
-
      foreach triplet in top_stack
+
-
        compare triplet if triplet.potentially_pertinent and triplet.nb_differing_elements < differing
+
-
      # replace top stack by current triplet
+
-
      pop stacks # remove top_stack
+
-
      push top_stack, triplet(common, differing, potentially_pertinent)
+
-
 
+
-
  tok = next_token
+
-
until nb_common_elements == |query| or nb_common_elements+nb_differing_elements > threshold or EOF
+
-
 
+
-
</source>
+
-
 
+
-
 
+
-
 
+
-
== Projet 3 : Voisinage représenté par un treillis (lattice) ==
+
-
Pour une relation de voisinage de type gènes voisins sur le chromosome, le treillis d'ensembles de gènes imbriqué peut être vu comme implicite et il est encore possible d'améliorer l'efficacité de la recherche. En effet, pour appliquer les règles 2 et 3 de [1] et [2], il suffit de considérer les intervalles définis par les paires de gènes de l'ensemble à caractériser.
+
-
 
+
-
L'algorithme est alors le suivant :
+
-
<source lang='perl'>
+
-
load genome info # circular or linear chromosome(s) then each gene chromosome and position
+
-
sort query genes by chromosome then by position
+
-
foreach chromosome with query genes
+
-
  for i in first to last-1 query gene on that chromosome
+
-
      for j in the next query gene after i to last query gene
+
-
          check what is more pertinent if i and i+1 are adjacent or j and j+1 are adjacent, maybe jump to next iteration
+
-
          compare query set and the set defined by interval i/i+1 .. j/j+1 (or j/j+1 .. i/i+1 if chromosome is circular)
+
-
</source>
+
-
 
+
-
Format de fichier pour ce type de structure : 1 chromosome par ligne : <tt>chr_id circular|linear [gene_id+]</tt>
+
-
# format: chromosomes
+
-
# version: 1.0
+
-
EcolA01 circular THRL THRA THRB THRC ...
+
-
 
+
-
<big>'''Références'''</big>
+
-
 
+
-
# [http://www.biomedcentral.com/1471-2105/8/332/abstract  Barriot, R., Sherman, D., Dutour, I., How to decide which are the most pertinent overly-represented features during gene set enrichment analysis (2007) BMC Bioinformatics, 8:332]
+
-
# [http://nar.oxfordjournals.org/cgi/content/short/gkn114v1 De Preter, K., Barriot, R., Speleman, F., Vandesompele, J., Moreau, Y., Positional gene enrichment analysis of gene sets for high resolution identification of overrepresented chromosomal regions (2008) Nucleic Acids Research]
+
-
 
+
-
== Calendrier ==
+
-
* 11 novembre 2013 : envoi d'un mail indiquant le projet sélectionné (ou avant le 11 novembre si le choix a déjà été fait)
+
-
* 24 novembre : envoi d'un mail avec l'état d'avancement et les éventuelles difficultés rencontrées
+
-
* 21 décembre : envoi du rapport (format électronique type PDF + scripts et jeux de données)
+
-
 
+
-
= Projets 2012-13 =
+
-
 
+
-
'''Calendrier :'''
+
-
* 1 octobre : proposition de projets
+
-
 
+
-
* 2 octobre : sélection d'un projet : envoyer un mail indiquant
+
-
** le projet choisi
+
-
** pour la confrontation ensembliste, l'hypothèse biologique testée et quelles sources de données (et sur quel organisme) vont être confrontées pour tester cette hypothèse.
+
-
 
+
-
* 19 octobre : remise des projets par voie électronique sous la forme :
+
-
** un rapport
+
-
** les scripts réalisés
+
-
 
+
-
Une démo de biomart sera à prévoir pour ceux qui auront choisi le projet n°1.
+
-
 
+
-
'''Contenu du rapport :''' Le contenu est à adapter un fonction du projet. Dans tous les cas, il faudra
+
-
* motiver et documenter les choix effectués
+
-
* décrire les difficultés rencontrées, quelles solutions ont été envisagées, testées, fructueuses ou infructueuses (quoi, pourquoi, comment ?)
+
-
 
+
-
 
+
-
== Projet 1 : ajout d'une source de données (BioCyc) ==
+
-
 
+
-
Récupérer les données BioCyc prétraitées (lin sur cette page en bas) et :
+
-
* ajouter à l'instance de serveur BioMart
+
-
* faire un script python pour récupérer, en fonction de l'espèce spécifiée, un fichier d'entrée pour sookoos pour les données BioCyc à partir des services Web du serveur biomart.
+
-
* analyser les pathways biocyc en les confrontant avec sookoos à différents autres critères de regroupement (par exemple les données d'expression).
+
-
* synthétiser et interpréter les résultats de sookoos.
+
-
 
+
-
== Projet 2 : implémentation d'un module Perl pour sookoos ==
+
-
 
+
-
=== Implémentation du module ===
+
-
 
+
-
Le module Perl Neighborhood fourni permet actuellement de rechercher des ensembles similaires au sein d'ordres partiels sur les ensembles représentés par soit de simples ensembles (sets), soit une hiérarchie sous forme d'arbre (newick), soit une hiérarchie sous forme de graphe (dag). Il s'agit donc de développer un module Perl Neighborhood::Lattice qui permette de rechercher des ensembles similaires sur un ou des chromosomes.
+
-
 
+
-
L'algorithme pour rechercher les ensembles similaires est le suivant :
+
-
<source lang='perl'>
+
-
foreach chromosome
+
-
  for i=0..query_length-1
+
-
    left_bound = query[i] # position of gene[i] on the chromosome
+
-
    next if left_bound == query[i-1]+1 # previous iteration was more pertinent
+
-
    for j=i+1..query_length
+
-
      right_bound = query[j]
+
-
      next if right_bound +1 == query[j+1] # next iteration will be more pertinent
+
-
 
+
-
      # compute pvalue or dissimilarity
+
-
      ...
+
-
      # add to results if significant
+
-
      ...
+
-
 
+
-
</source>
+
-
 
+
-
'''Remarque :''' Attention, dans le cas de chromosome circulaire, il faut adapter la définition de pertinence et la prise en compte de l'intervalle. En effet, deux gènes de l'ensemble requête définissent un intervalle sur le chromosome et en cas de chromosome circulaire il faut prendre le plus petit des 2 intervalles possibles (Qi..Qj ou Qj..Qi).
+
-
 
+
-
Les autres méthodes à développer sont les suivantes :
+
-
* load(filename): pour charger les données.
+
-
* searchSingleSet(id1, id2, ...): recherche d'ensembles similaires.
+
-
 
+
-
=== Utilisation du module ===
+
-
Confronter différents critères de regroupement avec la localisation des gènes sur le(s) chromsome(s) (String, GO, ...).
 
-
Analyser et interpréter les résultats de sookoos.
+
= Partie 2 collective : Intégration et exploitation de données hétérogènes dans un modèle graphique =
-
-->
+
* Enrichir la base de connaissances faite en TP par l'ajout
 +
** d'un (ou plusieurs) autre organisme
 +
** des liens d'orthologie avec les gènes ''E. coli''
 +
** des liens de coexpression, d'interaction protéine-protéine, de conservation phylogénomique pour l'organisme ajouté
 +
* Analyser la conservation des clusters identifiés en TP sur ''E. coli'' (et leurs annotations) dans l'organisme ajouté

Revision as of 10:36, 15 October 2020

Contents

Projet 2020-21

Les projets s'organisent en 2 parties :

  • la partie 1 est individuelle (c'est-à-dire que chacun·e doit la faire et fournir un rapport).
  • la partie 2 est à faire en groupe de 4 personnes


Partie 1 Individuelle : enrichissement/Gene Set Enrichment Analysis

Intégration et préparation des données

Outline:

  • choisir un organisme. Le même organisme ne peut pas être pris par plusieurs personnes. La liste des choix attribués (premier arrivé, premier servi) sera disponible en fin de cette section.
  • fournir un script/document (par exemple la procédure réalisée ensemble sur E. coli) permettant d'obtenir à partir du graphe de la Gene Ontology et des associations 2 fichiers :
    • le premier fournit les associations directes : la liste des gènes annotés directement par un même terme
    • le second fournit les associations implicites : la listes des gènes annotés par un même terme ou un de ses descendants (plus spécifiques)
  • Utiliser des statistiques descriptives (par exemple : nombre de gènes annotés sur le génome, nombre de termes par gène, nombre de gènes par terme, ...) afin de discuter de l'avancement de l'annotation de l'organisme choisi.
Prénom → Organisme
Refka
Laura BS
Quentin
Tomas
Pierre
Sophie
Aurélien
Valentine
Laura DF
Codé
Antoine
Baptiste
Jérémy
Alexia
Safia
Houyrem

Ajout de fonctionnalités à blastsets.py

Notation : On considère un ensemble requête Q (query) et un ensemble cible T (target, appartenant à un jeu de données de référence). Les deux ensembles sont inclus dans l'ensemble des gènes de l'organisme G (génome). Ils ont respectivement des cardinalités q, t, g.

Il s'agit de proposer d'autres mesures de similarités. La première est naïve (pas statistique) que l'on nommera overlap ou coverage et consiste à considérer quelles fractions des 2 ensembles se correspondent. Pour la cohérence avec les autres mesures la valeur sera de 1 quand aucun élément n'est commun aux 2 ensembles, et 0 pour 2 ensembles identiques. Il s'agit donc de multiplier c/q par c/t avec c le nombre d'éléments communs aux ensembles Q et T respectivement de cardinalités q et t, et de soustraire cette valeur à 1.

La deuxième mesure à ajouter est un χ2 d'indépendance en considérant les ensembles Q et T comme 2 variables qualitatives. Le test est donc à effectuer sur la table de contingence :

T G \ T Σ
Q c q - c q
G \ Q t - c g - q - t + c g - q
Σ t g - t g

Remarque : Il est possible de s'autoriser à transformer la mesure non statistique (coverage) afin qu'elle indique la dissemblance entre 2 ensembles (0 : identique, >0 : dissemblable). Ainsi les résultats seront triés dans lemême ordre pour coverage et pour les p-valeurs (du χ2 par exemple).

Comparaison des mesures ajoutées

Proposez une approche et comparez les différentes mesures intégrées au script. Laquelle est-il préférable d'utiliser ?

Rapport à rendre

Un rapport succinct est demandé. L'objectif est de fournir plutôt un rapport technique pour l'ajout des mesures au script et méthodologique pour la partie comparaison des mesures. Il doit donc être complet, pertinent, ciblé (qui est le lecteur ?), scientifique et rigoureux.

Il doit inclure

  • une brève introduction générale décrivant le contexte, les objectifs et le plan de ce qui suit.
  • intégration et préparation des données
    • données utilisées (sans oublier les versions)
    • méthodes d'intégration envisagées, choix et détails dans la réalisation
    • statistiques descriptives sur l'avancement de l'annotation de l'organisme chois (avec des illustrations pertinentes)
  • ajout de fonctionnalités :
    • des explications sur les modifications apportées au script original,
    • comment utiliser le script modifié,
    • un exemple d'utilisation des fonctionnalités ajoutées.
  • comparaison des mesures intégrées :
    • approches envisagées et méthode pour en sélectionner une
    • mise en oeuvre
    • synthèse des résultats obtenus
    • bilan : quelle mesure utiliser de préférence, pourquoi
    • perspectives d'amélioration
  • bilan personnel sur cette partie du projet et sur cette UE : motivations ? critiques ? suggestions ? apports ? ... ?

Contraintes :

  • Le rapport doit être au format PDF.
  • Le rapport peut être en anglais ou en français mais pas les 2.
  • Le script modifié et les éventuels jeux de tests utilisés et résultats obtenus doivent être fournis ou disponibles sous forme d'archive ou projet gitlab.


Partie 2 collective : Intégration et exploitation de données hétérogènes dans un modèle graphique

  • Enrichir la base de connaissances faite en TP par l'ajout
    • d'un (ou plusieurs) autre organisme
    • des liens d'orthologie avec les gènes E. coli
    • des liens de coexpression, d'interaction protéine-protéine, de conservation phylogénomique pour l'organisme ajouté
  • Analyser la conservation des clusters identifiés en TP sur E. coli (et leurs annotations) dans l'organisme ajouté