Thèse pour obtenir le grade de








télécharger 3.33 Mb.
titreThèse pour obtenir le grade de
page19/36
date de publication21.01.2018
taille3.33 Mb.
typeThèse
b.21-bal.com > droit > Thèse
1   ...   15   16   17   18   19   20   21   22   ...   36

B.Méthode d’identification des gènes


Dans la section A, nous avons expliqué comment les informations sont représentées à l’intérieur de la base de données. Nous pouvons aborder la façon dont ces informations sont mobilisées pour mener à bien l’identification des gènes.
1.La visualisation et l’exploitation des données dans une base de données relationnelle

Nous avons vu que les données sont réparties à l’intérieur de plusieurs tables même si elles ont à voir les unes avec les autres. Il est cependant possible de les rassembler virtuellement dans des tableaux uniques. Ce sont les requêtes qui vont réaliser cela. Nous verrons aussi comment les requêtes peuvent être lancées successivement à l’aide de macros. Nous présenterons aussi les modules qui permettent d’écrire des programmes.
a.L’utilisation des requêtes

Les requêtes permettent de rassembler des éléments qui se trouvent dans des tables distinctes. Il s’agit d’une vue sur une partie choisie de l’ensemble des données. A coté des requêtes sélection qui ne modifie aucune donnée des tables, existent aussi des requêtes modification, ajout ou création. Les requêtes modification vont intervenir sur les valeurs de un ou plusieurs champs. Les requêtes ajout vont créer de nouveaux enregistrements dans une table existante. Les requêtes création donnent naissance à des enregistrements dans une table créée pour l’occasion.

Les requêtes obéissent à un langage standard qui s’appelle le SQL ou Structured Query Language.
b.L’automatisation des tâches

Les actions répétitives plus complexes sont mémorisées dans des macros et des modules.

i.Les macros

Les macros permettent de rassembler plusieurs requêtes qui ont avantage à être utilisées ensemble. La macro va lancer chaque requête les unes derrière les autres dans un ordre déterminé.

ii.Les modules

Les modules permettent d’écrire des programmes dans un langage informatique. Le langage utilisé est le Visual Basic qui est une propriété de Microsoft. Les modules sont utiles pour automatiser des tâches plus complexe que celles qui sont autorisées par les macros.
2.La détection des occurrences de labels

La détection des occurrences de labels consiste à remplir la table reconnaissance des labels dont la structure est décrite dans la section A.4.a. Cette opération est réalisée par la macro indexer. Elle est faite en deux étapes principales : l’indexation simple puis l’épuration de l’index. Pour plus de commodité, nous utiliserons le terme d’index pour désigner la table de reconnaissance des labels.

La reconnaissance des labels est commandée par la macro indexer. Les types de traitement à faire sur chaque label sont indiqués grâce à la table type de reconnaissance qui est décrite dans la section A.3.b.v.
a.Indexation des textes

L’indexation consiste à parcourir les textes à la recherche des termes contenus dans la table des labels. Cela est fait au niveau des phrases et non au niveau des résumés. L’algorithme utilisé est le plus simple et n’est donc pas le plus rapide. Il consiste à prendre chaque texte l’un après l’autre et à rechercher une chaîne de caractères à l’intérieur de celui-ci. Quand celle-ci est trouvée, le système vérifie que le caractère qui précède, s’il existe, fait bien partie d’une liste prédéfinie de caractères séparateurs. Il en est de même pour le caractère qui suit la chaîne de caractères. Si une occurrence du label est trouvée, l’information est consignée directement dans la table de reconnaissance des labels. Le parcours du texte reprend alors là où il en était rendu. Quand un texte est entièrement parcouru à la recherche d’un label, on passe au label suivant. Quand la liste des labels est épuisée, on passe au texte suivant, jusqu’à épuisement des textes.

Le module chargé de réaliser l’opération est nommé indexation.

Le module est utilisé dans la macro indexer.

La macro et le module utilisent des requêtes qui indiquent quels sont les textes à indexer, quels sont les syntagmes à rechercher dans les textes et où doit être placé le résultat. Seuls les labels de type de reconnaissance indexer sont pris en compte.

L’indexation de 500 résumés prend environ deux heures. Les étapes suivantes ont des temps de calcul négligeable relativement à l’indexation.
b.Correction pour les mots ambigus en début de phrase

Les labels qui sont ambigus quand ils sont placés en début de phrase, reçoivent un traitement particulier. Cela a été motivé dans la section Chapitre 1 I.C.1 et les exemples sont donnés dans le Tableau 15. Les labels concernés sont repérés grâce au champ désindexer si début de la table type de reconnaissance. Les reconnaissances associées sont supprimées de l’index dans les cas où elles ont lieux en première position de la phrase.
c.Épuration de l’index

L’épuration des textes est rendue nécessaire par le phénomène d’inclusion des labels qui a été décrite dans la section Chapitre 1 I.B.5. Dans l’exemple qui est donné (Exemple 6 Inclusion des labels), on voit que l’occurrence soulignée du label Hairless ne doit pas être reconnue. En effet, elle est incluse dans l’occurrence du label Suppressor of Hairless. L’épuration va consister à la supprimer de l’index. Elle a lieu quand quatre conditions se trouvent réunies.

  • Le label à supprimer éventuellement, par exemple Hairless, se trouve en position P0 dans le texte

  • Ce label est inclus dans un autre label, par exemple Suppressor of Hairless, en position P1

  • Ce deuxième label est présent dans le texte en position P2

  • Avec la relation

Pour le point 2, on voit que l’on a besoin de la table d’inclusion dont la structure est décrite dans la section A.3.b.ii. Cette épuration se fait grâce à deux requêtes qui sont incluses dans la macro indexer.
d.Reconnaissance des mots vides

Les mots vides ne sont pas recherchés à la première passe car cela ferait exploser la taille de l’index. Un mot vide n’est recherché dans une phrase que s’il participe à la définition d’un gène dont un nom au moins a été trouvé dans la même phrase. Les labels concernés sont repérés grâce au champ 2ième vague de la table type de reconnaissance.
3.Interprétation des labels

Nous avons vu qu’un même terme peut être interprété de plusieurs façons, soit qu’il puisse représenter autre chose qu’un gène, soit qu’il puisse renvoyer vers plusieurs gènes. Il s’agit donc bien d’interpréter la présence d’un label. Ainsi, la table des reconnaissances de label doit être retravaillée pour servir à compléter la table de reconnaissance des définitions. La macro qui réalise cette opération se nomme interprétation.

L’interprétation se fait en plusieurs étapes dont nous donnons maintenant le détail. Chaque étape correspond à une valeur dans le champ processus de la table reconnaissance des définitions. Cette table est donnée dans le Tableau 59.

La première étape consiste à aller compléter tout simplement la table des reconnaissances à partir des informations contenues dans l’index et dans le dictionnaire des gènes. A ce stade, la valeur du processus est non-renseigné.

Les étapes suivantes consistent à effectuer des tests successifs sur les enregistrements ajoutés précédemment à la table des reconnaissances et à modifier la valeur du champ processus si le test s’est avéré positif. A la fin des opérations, plus aucun enregistrement n’a un processus qui est encore sur la valeur non renseigné.

Voyons maintenant la signification de chacun de ces processus de reconnaissance.

Le processus définition ignorée correspond à des définitions qui ne doivent pas être prises en compte. Cette information est contenue dans la table confiance dans la définition dont la structure a été décrite dans la section A.3.c.iii : le champ prendre des enregistrements concernés a la valeur non.

Le processus reconnaissance confirmée correspond à l’identification d’un gène qui a déjà été reconnu par ailleurs dans le résumé à l’aide d’une autre définition.

Le processus label non-confirmé correspond aux reconnaissances de labels qui auraient dû être confirmées, mais qui ne le sont pas. L’information de cette exigence posée sur le label est contenue dans la table type de reconnaissance dont la structure a été décrite dans la section A.3.b.v.

Le processus définition non-confirmée correspond aux définitions qui auraient dû être confirmées, mais qui ne le sont pas. Cette exigence sur la définition est inscrite dans la table confiance dans la définition qui a été décrite dans la section A.3.c.iii.

Le processus reconnaissance multiple isolée correspond à des reconnaissances non confirmées qui sont cependant multiples. La notion de reconnaissance multiple a été introduite dans la section Chapitre 1 I.F.1.

Une fois tous ces tests successifs effectués, on est nécessairement dans le cas d’une reconnaissance simple et non confirmée qui est le dernier des processus.

Une fois que le processus a été complété, il reste le cas de la reconnaissance redondante. Le test ne s’effectue bien sûr que sur les reconnaissances qui ont déjà été caractérisées comme confirmées. Il consiste à rechercher si la reconnaissance confirmée n’est pas précédée immédiatement avant, en terme de position dans le texte, par une reconnaissance du même gène. La notion de reconnaissance redondante a été introduite dans la section Chapitre 1 I.F.3

On remarquera qu’à chaque processus est associée une décision : prendre ou ne pas prendre.

Un exemple de résumé interprété est donné dans la section Chapitre 3 I.B.2.

L’interprétation de 500 résumés se fait en environ 10 minutes. C’est donc beaucoup plus rapide que l’indexation.

C.Acquisition des données nécessaires à l’analyse

1.Collecte des textes et intégration dans la base de données
a.Choix des résumés Medline

La constitution de l’échantillon s’est faite par rapport au fichier de phrases issu de Flybase qu’a étudié Pillet. Ces phrases sont des notes prises par les annotateurs de Flybase à partir de publications pour la plupart référencées par Medline. Nous avons décidé de prendre comme échantillon les résumés Medline de ces publications. Nous avons justifié ce choix dans la section Partie 1 Chapitre 3 II.A.2. Techniquement nous avons suivi le lien qui existe entre les phrases du fichier que nous a donné Pillet et des enregistrements d’une base de données de références bibliographiques issues de Flybase. Ces références bibliographiques citent elles-mêmes des références Medline. En conjuguant les deux liens, nous obtenons un lien direct entre les données qu’a étudiées Pillet et les données que nous avons étudiées. Ce lien est représenté par une référence au résumé dans la table des phrases issues de Flybase que nous présentons dans le Tableau 60.

Tableau 60 Table phrase Flybase

Ce tableau présente un enregistrement de la table.

Champ

Contenu

Clef

3597

Symbole

#su(w[a])

N° Flybase

46126

Prase

Control of su(w[a]) is controlled at the level of splicing and this control represents autorepression of su(w[a]) expression

Phrase1

CONTROL #su(w[a]) CONTROL LEVEL SPLICE CONTROL REPRESENT AUTOREPRESS #su(w[a]) EXPRESS

Phrase2

CONTROL CONTROL LEVEL SPLICE CONTROL REPRESENT AUTOREPRESS EXPRESS

Validation

Y

Direction

Y

Type

R

Interaction

su(w[a])_su(w[a])/R

Problème




N° Medline

88166655

Titre

Evidence that a regulatory gene autoregulates splicing of its transcript.

Auteurs

Zachar Z^Chou TB^Bingham PM

IVI

0,095

Les données fournies par Pillet ont été intégrées telles quelles, c’est à dire que nous n’avons pas cherché à les structurer selon une logique de base de données relationnelles. La technique d’import sera décrite dans la section b.iii.

Certaines phrases issues de Flybase citent des résumés qui sont absents de notre base de données. Il s’agit de résumés qui étaient absents de l’ensemble des résumés que nous avons extraits de Medline.

Une partie des résumés de notre base de données ne sont cités par aucune phrase Flybase. Il s’agit des résumés d’origine sans nom de gène. Nous avons présenté la table origine dans la section A.2.a.ii.2.
b.Intégration des textes issus de Flybase et de Medline

i.Import des textes issus de Medline

L’import des résumés s’est fait à partir de dix-huit cédéroms qui couvrent la vie de Medline depuis sa création en 1966 jusqu’en avril 1998. Sur chaque cédérom, nous avons fait une requête qui consiste à demander les références qui citent au moins une fois la drosophile. Cette interrogation est faite sur le champ résumé, et nous avons utilisé une troncature gauche pour ne manquer aucun résumé. Les fichiers correspondants à chaque interrogation ont été concaténés puis importés dans le gestionnaire de base de données. Nous avons ensuite sélectionné le sous-ensemble des résumés qui correspondent aux mêmes publications que celles dont il est question dans le corpus de Pillet. Ceci en conformité avec le choix de l’échantillon d’analyse que nous avons fait et que nous avons expliqué dans la section Partie 1 Chapitre 3 II.A.2. Cela a réduit la base de 19410 à 529 résumés. Dans un deuxième temps, nous avons interrogé le premier corpus des 19410 résumés pour rechercher les résumés qui ne comportent aucun nom de gènes. Pour ce faire, nous avons exclu de la liste des noms de gènes les mots vides les plus répandus de façon à obtenir un nombre de résumés sans nom de gène de taille suffisante. Les 215 résumés ainsi obtenus ont été importés dans la base de données.

Access n’admettant comme format d’import que les textes sous forme de tableaux, nous avons utilisé un logiciel de reformatage de fichiers texte du nom d’Infotrans.

ii.Éclatement des résumés en phrases

Les résumés fournis par Medline sont composés de phrases. Le passage d’une phrase à l’autre a été marqué par la chaîne de caractère ^. (un accent circonflexe puis un point). Ce formatage réalisé par Medline grâce à des méthodes automatiques comporte des erreurs mais en nombre assez faible. Nous n’avons pas cherché à corriger ces erreurs. Par ailleurs, pour des raisons purement techniques, nous avons transformé ce séparateur basé sur deux caractères en un séparateur basé sur un seul. Il s’est agit de | (la barre verticale), qui était par ailleurs absente des textes.

Les résumés ont été segmentés (ou éclatés) en phrases à l’aide d’un module que nous avons conçu pour réaliser ce type d’opération et qui se nomme Eclater. La méthode consiste à parcourir le texte des résumés à la recherche d’un caractère spécifique. Ici le caractère spécifique est la barre verticale. Quand il est rencontré, un nouvel enregistrement est créé dans la table des phrases. Le texte de la phrase est alors complété à l’aide du segment de texte du résumé qui précède le séparateur. La référence au résumé est aussi placée dans l’enregistrement phrase, ainsi que le rang de la phrase dans le résumé.

Le module segmenté est commandé par la macro éclater les résumés.

iii.Import des textes issus de Flybase

Les phrases de l’étude de Pillet nous ont été fournies sous forme d’un fichier texte. Nous avons importé ces données dans une table unique. Après dédoublonage nous obtenons 929 phrases.
2.Constitution des données relatives au dictionnaire des gènes
a.Importation des données terminologiques

Les données utilisées proviennent d’un export de Flybase en format texte. Ce fichier de 50 Méga Octet a d’abord été filtré pour exclure toutes les données relatives aux allèles. Le fichier a ensuite été reformaté à l’aide d’Infotrans. Le codage des lettres grecques a été refait pour le mettre en conformité avec le codage de Medline. Les données relatives aux chimères, qui sont des assemblages de plusieurs gènes par génie génétique, ont aussi été exclues automatiquement. Ces diverses opérations aboutissent à la création de plusieurs fichiers de textes au format tableau qui sont importables dans le logiciel de gestion de base de données.
b.Les étapes de filtrages et de reformatages

Une fois les données importées dans le logiciel de gestion de base de données, de nouveaux filtrages ont encore été nécessaires. Certains noms synonymes étaient formatés sous la forme nom abrégé : nom complet. Il s’est agi de transformer cela de façon à ne mettre qu’un seul nom par enregistrement. Des commentaires comme Unammed (non nommé) ou le point d’interrogation ont aussi dû être supprimés. D’autres commentaires placés entre parenthèses qui indiquaient que le terme proposé était déjà pris pour un autre gène ont aussi été supprimés sachant que nous avons cette information par ailleurs.
c.Mise en forme relationnelle

Les données importées ont été retraitées pour se conformer au schéma relationnel de la base. En effet, après l’import, les données sont présentes dans une table unique. Ainsi des informations hétérogènes se retrouvent mêlées dans une structure unique. Par exemple, une table fraîchement importée va pouvoir donner simultanément des informations sur les gènes comme le numéro Flybase de chaque gène, et des informations sur des définitions de gènes. Pourtant ces deux informations doivent être placées dans des tables distinctes d’après le schéma relationnel de la base tel que nous l’avons défini. Un travail de structuration des données est nécessaire pour mettre les données en conformité avec la structure que nous avons choisie.

Le fichier qui sert à l’import est dit plat. Cela signifie que dans ce fichier, les données hétérogènes, que sont labels, gènes, définitions etc., ne sont pas nettement séparées. A l’opposé, dans un fichier de base de données relationnelle, les données hétérogènes sont clairement séparées car elles sont placées dans des tables distinctes.

La mise en forme relationnelle consiste à aller extraire de la table importée les informations qui doivent être placées dans les différentes tables. Ceci est réalisé par une succession de requêtes. Cette opération n’a été faite qu’une seule fois. Nous n’avons donc pas créé de procédure pour automatiser cette tâche comme cela a été fait pour l’identification des gènes.
d.Préparation de l’indexation des textes

Avant de pouvoir indexer les textes, il est nécessaire de disposer de la table d’inclusion dont la structure est décrite dans la section A.3.b.ii. Cette table a été obtenue par l’utilisation du module d’indexation.

La macro reconstruire RNGR construit la table après avoir supprimé tous les enregistrements de celle-ci. Quatre nuits sont nécessaires à cette construction.

La macro actualiser RNGR permet la mise à jour de la table. Les enregistrements concernés par cette mise à jour sont repérés par le champ nouveau de la table des labels. Le principe est le suivant :

La valeur du champ nouveau est par défaut oui. Chaque enregistrement créé dans la table des labels sera donc considéré comme nouveau. Il en sera ainsi jusqu’à la mise à jour de la table d’inclusion. En effet, à la fin du processus de mise à jour, tous les champs de la table des labels seront positionnés sur non-nouveau. L’actualisation des données de RNGR se fait de la manière suivante :

L’indexation a lieu comme si toute la table était à reconstruire sauf que tous les labels ne sont pas indexés et que tous les labels eux-mêmes ne servent pas à l’indexation. Dans un premier temps, seuls les labels nouveaux sont indexés. Dans un deuxième temps, tous les labels sont indexés mais seuls les labels nouveaux servent à l’indexation.
e.Complémentation du dictionnaire

i.Ajout de nouvelles entités biologiques qui ne sont pas des gènes

Lors de l’annotation des textes, nous nous sommes rendu compte qu’il était nécessaire d’ajouter des rubriques au dictionnaire de gènes pour y inclure des entités biologiques qui ne sont pas des gènes mais qui dans les textes jouent le même rôle. Nous avons déjà évoqué cette question dans la section Chapitre 1 I.B.5.b.

Ces ajouts ont été faits manuellement par les annotateurs au fur et à mesure des besoins. Pour maintenir la cohérence du dictionnaire, il a été nécessaire de transférer des définitions. Ainsi par exemple, lors de l’introduction de la famille de protéines actin, il a fallu transférer les définitions relatives aux gènes Actin 42A (Act42A), Actin 57B (Act57B), Actin 5C (Act5C), Actin 79B (Act79B), Actin 87E (Act87E) et Actin 88F (Act88F). Le transfert est matérialisé grâce à la modalité transférée du champ confiance des définitions concernées. Le transfert implique bien une invalidation de la définition comme on peut le voir dans le champ Valide de la table confiance dans les définitions. La destination du transfert est présente à travers un lien indirect. En effet, les deux enregistrements de la table gène ou assimilé sont mis en relation par l’intermédiaire de la table filiation.

ii.Ajout de termes spécifiques

Lors de l’annotation des textes, nous avons constaté que des confusions étaient possibles entre les noms des gènes et d’autres termes du domaine de la génétique. Nous avons déjà évoqué cette question dans la section Chapitre 1 I.B.5.b. Ces termes spécifiques ont été rajoutés à la main et au fur et à mesure des besoins. Ils ont été rajoutés à la table des labels de façon à être utilisés lors de l’indexation des textes. Cependant leur origine étrangère a été marquée grâce à la modalité terme spécifique du champ reconnaissance de la table des labels.

iii.Caractérisation de l’ambiguïté des labels

Lors de l’annotation des textes, nous nous sommes rendu compte que certains labels étaient ambigus, de sorte qu’un traitement particulier devait leur être réservé dans le processus d’identification automatique des gènes. Cette difficulté a été évoquée dans la section Chapitre 1 I.C. Il a donc fallu faire un inventaire des termes ambigus. Cela a conduit à la caractérisation du traitement à faire sur chaque label dans le champ type de reconnaissance de la table des labels.

Cette caractérisation du degré d’ambiguïté de chaque label a été faite de diverses manières. Nous avons tout d’abord bénéficié de l’expérience de Pillet qui nous a transmis des listes de noms de gènes ambigus. Nous avons ensuite fait diverses statistiques sur la présence des labels dans les textes. L’une d’entre elles est expliquée dans la section 3.c. D’une manière générale ces statistiques avaient pour but de détecter des anomalies dans les fréquences des gènes.

Enfin nous avons aussi corrigé les valeurs d’ambiguïté des labels au cours de l’annotation au vu des difficultés qui se présentaient.
3.Acquisition de nouvelles connaissances sur la nomenclature des gènes
a.Construction des définitions variantes

Nous avons vu dans la section Chapitre 1 I.D.2 que le dictionnaire de Flybase ne prévoit pas toutes les orthographes possibles pour chaque gène. Nous avons donc introduit de nouvelles définitions inspirées de celles qui se trouvaient déjà dans le dictionnaire. Ces définitions variantes ont été construites automatiquement. Nous avons tout d’abord fait l’inventaire des variations orthographiques pertinentes sur les labels. Ensuite pour chaque type de variation, nous avons généré les définitions correspondantes. Dans certains cas cela amène à réutiliser un label qui est déjà pris par ailleurs. Par exemple, la définition dl du gène dorsal (dl) va être transformée dans une définition de dorsal (dl) par Dl alors que ce label est déjà pris pour le gène Delta (Dl). Ces définitions sont donc supprimées. Dans un deuxième temps nous avons complété la table des labels avec les variations introduites. Puis nous avons rétabli le lien entre la table des définitions et la table des labels. Dans un troisième temps nous avons mis à jour la table des transformations.

Toutes ces opérations se font à l’aide de requêtes. L’enchaînement de ces requêtes permet d’obtenir le résultat escompté.
b.Validation des définitions par l’analyse des textes

La validation des définitions consiste à vérifier si la définition est crédible ou ne l’est pas. Elle est faite automatiquement et par l’analyse des textes. Cette validation des définitions a été faite uniquement sur les définitions variantes. Elle pourrait cependant être généralisée avec quelques adaptations.

Les définitions variantes ne sont pas utilisables telle quelles. En effet, il arrive fréquemment qu’elles introduisent de nouvelles difficultés, car les labels obtenus par transformation des labels existants ont toutes les chances de désigner autre chose que le gène qu’ils sont censés définir.

Il s’agit donc de faire le tri entre les bonnes et les mauvaises définitions variantes. Ceci est rendu possible par l’utilisation du contexte, comme nous l’avons présenté dans la section Chapitre 1 I.F.4.

Cette opération se fait après avoir lancé le processus d’identification automatique des gènes dans les textes. Les définitions variantes, qui ne sont jamais confirmées dans aucun résumé, sont alors caractérisées de non confirmé. Cette information est consignée dans le champ confiance de la table des définitions. Ceci est fait à l’aide de la requête intitulé CD=non confirmé.
c.Validation des labels par l’analyse des textes

L’analyse des textes permet aussi de valider le caractère univoque des labels. Le principe de cette analyse consiste à observer des anomalies dans les statistiques de fréquence des labels. Diverses statistiques ont été utilisées, mais l’imbrication entre des phénomènes, tels que l’ambiguïté et l’imprécision de la terminologie, fait qu’il n’est pas possible de trouver un indicateur statistique qui permette à coup sûr de faire la différence entre un label ambigu et un label qui ne l’est pas. Ainsi, chaque méthode a ses inconvénients et aucune ne peut être utilisée en aveugle. Cependant chacune permet de pointer sur des labels potentiellement ambigus et il appartient à l’opérateur de décider de la caractérisation des labels ainsi désignés.

La méthode la plus simple consiste à classer les labels par ordre de fréquence décroissante comme dans le Tableau 61.

Tableau 61 Ambiguïté et fréquence

Le tableau donne les labels les plus répandus. La plus part d’entre eux sont ambigus. La fréquence désigne ici le nombre d’occurrence du terme dans les textes.

Label

Fréquence

in

362

cell

275

to

205

is

177

dpp

133

early

116

Ubx

97

similar

96

Notch

89

Sxl

79

wingless

78

as

73

bcd

72

D

69

eye

68

dorsal

65

On voit que dans ce cas, la difficulté provient du fait que certains gènes comme Ultrabithorax (Ubx) sont si répandus dans les textes que leurs labels, tel Ubx, viennent côtoyer les termes très ambigus comme similar.
1   ...   15   16   17   18   19   20   21   22   ...   36

similaire:

Thèse pour obtenir le grade de iconTHÈse pour obtenir le grade de

Thèse pour obtenir le grade de iconThèse Pour obtenir le grade de

Thèse pour obtenir le grade de iconTHÈse pour obtenir le grade de Docteur

Thèse pour obtenir le grade de iconThèse Pour obtenir le grade de
«capricieuse»!!! Merci également de m’avoir permis d’être impliqué dans des collaborations (eth zurich) et dans un programme Européen...

Thèse pour obtenir le grade de iconThèse présentée pour l’obtention du grade de Docteur

Thèse pour obtenir le grade de iconThèse pour l’obtention du grade de docteur de l’université

Thèse pour obtenir le grade de iconThèse pour obtenir le titre de

Thèse pour obtenir le grade de iconThèse présentée en vue de l'obtention du grade de

Thèse pour obtenir le grade de iconThèse présentée en vue d’obtenir

Thèse pour obtenir le grade de iconCe site permet d’obtenir les liens pour disposer de l’intégralité des programmes de Maths








Tous droits réservés. Copyright © 2016
contacts
b.21-bal.com