Création et développement d une base de données sur le VIH



Documents pareils
CREATION WEB DYNAMIQUE

PHP 5. La base de données MySql. A. Belaïd 1

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

Mysql avec EasyPhp. 1 er mars 2006

Pratique et administration des systèmes

Perl Orienté Objet BioPerl There is more than one way to do it

CHAPITRE 3 LA SYNTHESE DES PROTEINES

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

1 Position du problème

Gestion de stock pour un magasin

Introduction aux bases de données: application en biologie

PHP et les Bases de données - Généralités

Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite.

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

Bases de données Outils de gestion

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions

Magasins et entrepôts de données (Datamart, data warehouse) Approche relationnelle pour l'analyse des données en ligne (ROLAP)

TP JAVASCRIPT OMI4 TP5 SRC

Information utiles. webpage : Google+ : digiusto/

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Stockage du fichier dans une table mysql:

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Les bases de données Page 1 / 8

Attaques applicatives

PDO : PHP Data Object 1/13

Bases de données relationnelles

1/ Présentation de SQL Server :

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

clef primaire ; clef étrangère ; projection ; restriction ; jointure ; SQL ; SELECT ; FROM ; WHERE

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Détection et prise en charge de la résistance aux antirétroviraux

RÉALISATION D UN SITE DE RENCONTRE

Module BD et sites WEB

Faculté des sciences de gestion et sciences économiques BASE DE DONNEES

Les bases de données

Le langage SQL Rappels

Semestre 2 Spécialité «Analyse in silico des complexes macromolécules biologiques-médicaments»

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Création et Gestion des tables

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

Logiciel de gestion de caisse et d ardoises

Base de données bibliographiques Pubmed-Medline

Hépatite chronique B Moyens thérapeutiques

Cours Base de données relationnelles. M. Boughanem, IUP STRI

Bases de données et interfaces Génie logiciel

Sommaire. I.1 : Alimentation à partir d un fichier Access (.mdb)...2

Dossier I Découverte de Base d Open Office

Olivier Mondet

Bases de données élémentaires Maude Manouvrier

Module http MMS AllMySMS.com Manuel d intégration

Les sites Internet dynamiques. contact : Patrick VINCENT pvincent@erasme.org

Les BASES de DONNEES dans WampServer

Cours Bases de données

Présentation du module Base de données spatio-temporelles

Sage 100 CRM Guide de l Import Plus avec Talend Version 8. Mise à jour : 2015 version 8

Création de Sous-Formulaires

PHP 4 PARTIE : BASE DE DONNEES

Dr E. CHEVRET UE Aperçu général sur l architecture et les fonctions cellulaires

SQL Parser XML Xquery : Approche de détection des injections SQL

La problématique de la Préservation des Bases de Données. Olivier ROUCHON CINES Groupe PIN Jeudi 7 Octobre

PROJET 1 : BASE DE DONNÉES REPARTIES

Rappel sur les bases de données

Sommaire : Pourquoi créer un site web? Qu est-ce qu un site Web? Les différents types de sites. Quelles solutions peuvent être employées?

Manuel utilisateur (manuel_utilisateur_version pdf) SOMMAIRE

Master de Bioinformatique et Biologie des Systèmes Toulouse Responsable : Pr. Gwennaele Fichant

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

DOSSIER D'ACTIVITES SUR LE PHP N 03 Créer une base de données MySQL avec PHPMyAdmin

Rapport de stage. Création d un site web. Stage du 20/01/2013 au 21/02/2013

Gestion de base de données

Langage SQL : créer et interroger une base

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

SYSTÈMES D INFORMATIONS

IMMUNOLOGIE. La spécificité des immunoglobulines et des récepteurs T. Informations scientifiques

Formulaire pour envoyer un mail

A QUOI SERVENT LES BASES DE DONNÉES?

Techniques de Programmation pour Internet

Création de formulaires interactifs

ENDNOTE X2 SOMMAIRE. 1. La bibliothèque EndNote 1.1. Créer une nouvelle bibliothèque 1.2. Ouvrir une bibliothèque EndNote 1.3. Fermer une bibliothèque

Cours 1 : introduction

TP base de données SQLite. 1 Différents choix possibles et choix de SQLite : 2 Définir une base de donnée avec SQLite Manager

Comment Connecter une Base de Données MySQL via un Driver JDBC Avec OpenOffice.org

Base de données relationnelle et requêtes SQL

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

Séance 1 Introduction aux bases de données

INSTALLATION DE L APPLICATION DU CONTEXTE ITASTE

Extraction d information des bases de séquences biologiques avec R

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2)

Gestion du parc informatique matériel et logiciel de l Ensicaen. Rapport de projet. Spécialité Informatique 2 e année. SAKHI Taoufik SIFAOUI Mohammed

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

UNIVERSITE DE CONSTANTINE 1 FACULTE DES SIENCES DE LA TECHNOLOGIE DEPARTEMENT D ELECTRONIQUE 3 ème année LMD ELECTRONIQUE MEDICALE

BIRT (Business Intelligence and Reporting Tools)

Mon-complement-retraite.com Aide en ligne

Utiliser Access ou Excel pour gérer vos données

Transcription:

Création et développement d une base de données sur le VIH Stage de Licence de Biologie-Informatique Par Stéphanie Pérot Sous la direction d Anne Vanet Année 2005-2006 Atelier de BioInformatique rattaché à l Université Pierre et Marie CURIE 12 rue Cuvier F-75005 PARIS

Résumé Dans le cadre de la formation Licence de BioInformatique, j ai effectué un stage à l Atelier de Bio-Informatique [0], sous la direction d Anne Vanet, Maître de Conférence à Paris 7 et chargée de recherche à l Atelier de BioInformatique. L ABI est un laboratoire de recherche rassemblant biologistes, biophysiciens et informaticiens de provenances diverses et désirant travailler à l interface Biologie/Informatique. J ai réalisé la plus grande partie de mon stage l été 2005 par initiative personnelle, puis je l ai repris et complété durant le 2 ème semestre de l année 2005-2006. Ce stage consistait en la création et le développement d une base de données sur le VIH, sujet sur lequel travaillent en collaboration Anne Vanet, Sophie Brouillet, Ingénieur d Etude à Paris 6 et Emmanuelle Ollivier, Maître de Conférence à Paris 7. D un point de vue chronologique, j ai commencé par l étude des bases de données en général afin d en comprendre la logique, l utilité et la création. Puis j ai conçu la structure de la base et l ai créée sous MySQL. Je me suis ensuite initiée au langage de programmation Perl en vue de comprendre et d écrire des scripts permettant la récupération de données sur des banques existantes : Los Alamos National Laboratory (LANL), Stanford et Swissprot. Enfin, à l aide d HTML et de PHP, j ai développé une interface graphique permettant une utilisation simple et visuelle de la base. A l heure actuelle, la base n a subit que quelques modifications et contient 115 148 séquences protéiques. - 1 -

Remerciements Ce stage m a beaucoup appris autant sur un plan concret par l apprentissage de MySQL, Perl, PHP et HTML que sur un plan plus abstrait au niveau relationnel et humain au sein du laboratoire. Un grand merci à tous les chercheurs et les thésards de l ABI, en particulier à Anne Vanet, Sophie Brouillet et Emmanuelle Ollivier qui m ont aidée et guidée tout au long de mon stage. Ma reconnaissance va également à Joël Pothier, directeur de l ABI, qui m a accueillie au sein de son laboratoire et proposé ce stage par l intermédiaire d Anne Vanet. - 2 -

Sommaire 1. VIRUS HUMAIN DE L IMMUNODEFICIENCE... 5 1. PRESENTATION DU VIRUS... 5 2. UTILITE DE LA BASE AU SEIN DU LABORATOIRE... 6 2. BASE DE DONNEES... 7 1. MYSQL... 7 2. STRUCTURE DE LA BASE... 8 3. RECUPERATION DES DONNEES... 11 1. PERL... 11 2. CONTENU DE LA BASE... 11 4. INTERFACE GRAPHIQUE... 12 1. PHP ET HTML... 12 2. VISUALISATION DE LA BASE... 12 ANNEXES... 16 BIBLIOGRAPHIE... 25-3 -

Introduction Il existe des banques de données biologiques sur Internet telles LANL, Swissprot, Stanford, comportant notamment des informations sur le VIH. Cependant aucune d entre elles n est suffisamment exhaustive pour les besoins des chercheuses de l ABI, avec qui j ai travaillé. C est pourquoi elles ont souhaité créer leur propre base de données sur le VIH grâce au recoupement des informations récupérées dans le domaine public. Après une brève description du virus et de la nécessité d utiliser une base de données dans leur travail, je m attacherai à présenter la structure de la base, la récupération des données et enfin la réalisation de l interface graphique. - 4 -

1. Virus Humain de l Immunodéficience 1. Présentation du virus Le Virus de l Immunodéficience Humaine ou VIH est un rétrovirus, c est-à-dire un virus eucaryotique contenant de l ARN viral, ainsi qu une ADN polymérase dépendante de cet ARN : la reverse transcriptase. Ils sont à l intérieur d une capside, elle-même entourée d une enveloppe cytoplasmique de 120 nm de diamètre environ, à laquelle sont accrochées des glycoprotéines de surface, ainsi que le représente la figure 1. Reverse transcriptase ARN viral Enveloppe cytpoplasmique Capside Glycoprotéine de surface Echelle : 30 nm : 1 cm Figure 1 : Représentation schématique du rétrovirus http://en.wikipedia.org/wiki/hiv D un point de vue génomique et simplifié ici, le rétrovirus possède à ces extrémités de longues répétitions terminales (LTR) de 250 à 600 paires de bases (pb) et contient les gènes codants pour trois poly-protéines présentés sur la figure 2 : gag code pour les protéines de la capside pol produit la reverse transcriptase, l intégrase ainsi que la protéase env donne les protéines de l enveloppe cytoplasmique LTR GAG POL ENV LTR Figure 2 : Structure du gène responsable du VIH figure tirée du cours de génétique d Alain Zider, professeur en LBI à Paris 7-5 -

Après pénétration du rétrovirus dans la cellule hôte, la reverse transcriptase synthétise de l ADN à partir de la matrice simple brin d ARN, transcrivant ainsi le génome viral. Puis l ARN est dégradé et le brin complémentaire de l ADN synthétisé. L ADN double brin est ensuite intégré dans l ADN chromosomique de la cellule hôte par l intégrase et est répliqué en même temps que l ADN cellulaire. Dans certaines conditions, souvent lors d une infection par un autre agent pathogène, l ADN rétroviral est transcrit donc l ARN viral synthétisé, les protéines exprimées et insérées ou ancrées dans la membrane plasmique de la cellule hôte et de nouveaux virions sont produits par bourgeonnement d un fragment de membrane plasmique, couvert de protéines virales, qui englobe l ARN du virus. Ce mécanisme est représenté sur la figure 3. Figure 3 : Mécanisme de réplication du rétrovirus http://www.actions-traitements.org/article.php3?id_article=532 2. Utilité de la base au sein du laboratoire Les séquences du VIH sont très largement représentées dans les banques de données existantes dans le domaine public ; plus de 125 000 séquences nucléotidiques et 120 000 séquences protéiques du VIH ont été publiées à ce jour. Cette grande variabilité vient du fait que la reverse transcriptase ne possède pas de domaine de correction et fait à peu près 100 fois plus de fautes de polymérisation que la plupart des polymérases eucaryotes et procaryotes. Elle engendre ainsi un grand nombre de mutants. Néanmoins, ces mutations ne peuvent s accumuler sans ordre ni fin. En effet, les protéines produites par ces mutants doivent conserver une structure particulière qui assure leur fonction. Les chercheuses de - 6 -

l ABI se sont donc intéressées «aux mutations qui ne peuvent pas apparaître ensemble sans altérer le virus et l empêcher de se multiplier» [1] et ont développé des méthodes d étude. C est dans ce contexte qu elles ont souhaité créer une base de données qui leur permette de sélectionner facilement des lots de séquences ayant une ou plusieurs caractéristiques en commun et sur lesquelles elles puissent appliquer leurs méthodes. 2. Base de Données 1. MySQL MySLQ signifie My Structured Query Language. C est un système de gestion de bases de données (ajouter, lire, traiter des données) et un serveur de bases de données relationnelles (à partir du langage SQL). Le serveur MySQL est très rapide, fiable et facile à utiliser. Développé à l'origine pour gérer de grandes bases de données plus rapidement que les solutions existantes, il a été utilisé avec succès dans des environnements de production très contraints et très exigeants, depuis plusieurs années. MySLQ administre les très grandes bases de données : bases de 50 millions de lignes, 60 000 tables, 32 index de 500 octets chacun Par défaut, les tables peuvent atteindre une taille de 4Go. Comme les tables sont stockées sous forme de fichiers, il est facile et utile d en faire une sauvegarde [2]. MySQL gère cependant mal les problèmes de redondances, point que je n ai découvert qu après avoir terminé mon stage. A l aide de requêtes, dont quelques exemples sont présentés ici, MySLQ permet de : créer une base de données mysql> CREATE DATABASE HIV; créer des tables mysql> CREATE TABLE traitement (codet VARCHAR(10), duree VARCHAR(10), debut DATE, fin DATE, pathologie TEXT, codep VARCHAR(10)); charger des données dans les tables mysql> INSERT INTO traitement VALUES ('T42','6','2005-03-30','2005-07-30','allergie','P25'); afficher des données sur une ou plusieurs tables mysql> SELECT codet, pathologie FROM traitement; mysql> SELECT codet, pathologie, codep FROM traitement WHERE pathologie = "allergie" AND codep = "P25"; - 7 -

2. Structure de la base La réalisation d une base de données passe par 2 étapes : le modèle mathématique appelé diagramme Entités / Associations et le modèle relationnel, c est-à-dire les tables en elles-mêmes. Diagramme Entités / Associations Cette base regroupe les séquences-produits du gène POL, intégrase, protéase et reverse transcriptase, de personnes porteuses du VIH. Il y a donc un type d entité «génomique» avec ses caractéristiques : code séquence génomique constituant la clé primaire et définissant ainsi l unicité des données, longueur de la séquence, lieu de séquençage, séquence nucléotidique, sous-type, code patient, code banque, code date. Cette séquence génomique code pour une ou plusieurs protéines. D où la création d une entité «protéique» avec ses caractéristiques : code séquence protéique constituant la clé primaire, nom de la protéine, nom du gène, séquence protéique, séquence complète ou non, code patient, code séquence génomique. Ces 2 entités sont reliées par un type d association «coder». On peut récupérer des informations plus ou moins détaillées sur la séquence protéique, informations triées dans 2 types d entités appelées «généralité» avec les caractéristiques : code qui constitue la clé primaire, référence PDB, code résistance aux médicaments, code résistance au système immunitaire, nom de la protéine et «conformation 3D» avec les caractéristiques : référence PDB qui constitue la clé primaire, nom de l inhibiteur. «généralité» est liée à «protéique» par une association «détailler». Il a été constaté qu une sélection de virus mutants capables de survivre à un traitement s opère lorsque ce traitement est administré. C est ainsi qu apparaissent des résistances et que l efficacité des traitements doit constamment être remise en question : les anti-rétroviraux deviennent inactifs car ils ne reconnaissent plus l enzyme sur laquelle ils sont censés agir. D où la création de 2 entités directement reliées à «généralité» nommées «résistance au système [immunitaire]» et «résistance aux médicaments» avec les caractéristiques : code résistance au système [immunitaire] / aux médicaments qui constituent les clés primaires respectives des entités, position de résistance, mutation, niveau de résistance. La séquence génomique est présente dans une au moins des banques existantes sur Internet et on veut conserver l identifiant par lequel elle est nommée dans ces banques. D où - 8 -

la création d une entité «banque» avec ses caractéristiques : code banque qui constitue la clé primaire, identifiant swissprot, nom lanl, name lanl, autre nom lanl, autre identifiant swissprot, autre nom swissprot, accession genbank, accession swissprot, nom stanford, numéro de patient stanford, numéro d isolat stanford, traitement stanford et temps de traitement stanford. Cette entité est directement liée à «génomique» et on choisit par souci de simplification de ne pas mettre d association. De la même façon, on veut garder la trace des dates clés concernant la séquence. D où la création d une entité «date», avec ses caractéristiques : code date constituant la clé primaire, date d entrée de la séquence dans la base, date d entrée de la séquence dans la base d origine, date de dernière modification de la séquence dans la base et date de dernière modification de la séquence dans la banque d origine. Ses entités sont reliées par l association «saisir». La séquence génomique a généralement donné lieu à une ou plusieurs publications, rédigées par un ou plusieurs auteurs. D où la création de 2 entités ; l entité «référence» avec ses caractéristiques : code référence qui constitue la clé primaire, titre de la publication, informations (page, volume, date ), référence Medline et référence Pubmed ; et l entité «auteur» avec ses caractéristiques : code auteur qui constitue la clé primaire, nom et prénom. Les entités «génomique» et «référence» sont liées par une association «publier» et les entités «référence» et «auteur» par une association «écrire». La séquence génomique provient d un patient dont on connaît certaines informations quand les séquences sont issues de la banque Stanford. Cette entité est donc aussi liée, par une association «appartenir» à une entité «patient», qui sera divisée par la suite en 5 tables par souci de simplification. Cette entité a pour principales caractéristiques : code patient qui constitue la clé primaire, sexe, date de naissance, lieu de naissance, nom du test de dépistage, date de séroconversion, date de post infection, nationalité, ainsi qu un certain nombre d informations sur sa sexualité, sa famille, la société dans laquelle il vit et son état médical. Ces dernières informations sont liées à une entité «traitement» avec ses caractéristiques : code traitement qui constitue la clé primaire, durée, début et fin du traitement, pathologie et code patient, par l association «suivre». Le lieu de naissance donne suite à la création d une entité «géographie» avec ses caractéristiques : code géographie qui constitue la clé primaire, continent, pays, région, milieu et proximité d une voie internationale. Cette entité sert aussi à déterminer le lieu de séquençage de l entité «génomique». On ne crée pas d association entre ces entités, le lien étant direct. - 9 -

Un traitement comporte souvent de nombreux médicaments regroupés dans une entité «médicaments» avec ses caractéristiques : code médicament qui constitue la clé primaire, nom du médicament, composition, présentation, type, formule chimique, et dose recommandée. Ces entités sont reliées par l association «faire partie». Plusieurs patients pouvant prendre le même médicament mais en posologie différente (selon le traitement ou le patient lui-même), on définit une association «prendre» définissant la posologie, entre les entités «patient» et «médicaments». L entité «médicament» est aussi liée à «résistance aux médicaments» par l association «correspondre». A un patient correspond un ou plusieurs marqueurs, définis par l entité «marqueur» avec ses caractéristiques : code marqueur qui constitue la clé primaire, nom du marqueur et séquence concernée. Un marqueur peut correspondre à plusieurs patients. Ces entités sont liées par une association «correspondre». Un diagramme récapitulatif de ce modèle Entités / Association est donné en annexe 1 située en fin de rapport. Modèle Relationnel Le diagramme Entités / Associations est utile pour une première réflexion sur la base à réaliser, mais il est ensuite nécessaire de le transformer en Modèle Relationnel pour pouvoir créer la base en elle-même grâce à MySQL. Les entités préalablement définies deviennent des tables de même nom et leurs caractéristiques des champs de mêmes clés primaires et de types logiquement définis présentés en annexe 3. Les associations sont transformées en tables lorsqu on est en présence de relations dites «n-n» symbolisées par (1,n) ou (0,n) en amont et en aval d une association. C est le cas lorsque deux entités A et B sont liées de la manière suivante : pour une entité A donnée, il existe zéro, une ou plusieurs entités B ; réciproquement, pour une entité B donnée, il existe zéro, une ou plusieurs entités A. Les entités : «auteur»-«référence» «référence»-«génomique» «patient»-«marqueur» «patient»-«médicament» «médicament»-«traitement» «médicament»-«résistance aux médicaments» - 10 -

sont liées par des associations donnant naissance à des tables de noms différents mais relativement explicites. Les champs sont généralement constitués des 2 clés primaires des 2 entités concernées et la réunion de ces clés constitue la clé primaire de la nouvelle table. Les autres associations correspondent à un lien symbolisé par des clés étrangères à l intérieur des tables. Ce modèle est représenté sous Microsoft Access en annexe 2. J ai alors entré ces informations sous MySQL, créant ainsi la structure de la base VIH. 3. Récupération des données 1. Perl Perl signifie Practical Extraction and Report Language que l on pourrait traduire par «langage pratique d extraction et d édition». C est un langage de programmation, qui permet la gestion des expressions régulières. Il est très utilisé en biologie pour parser des séquences. [3] [4]. 2. Contenu de la base Les données récupérées viennent des bases Lanl, Stanford et Swissprot [5]. Les programmes de récupération et de parsing des informations ont été écrits par Anne Vanet dans le langage perl. J ai ensuite traité ces données dans un programme sequence.pl, fourni en annexe 4, qui permet le remplissage des tables créées sous MySQL. Le principe général est simple. A partir d une séquence génomique donnée, on recherche l éventuelle existence d une séquence protéique associée. Dans le cas où elle existe, on insère cette séquence et les informations la concernant dans la table protéique. Dans les deux cas, on insère la séquence génomique et les informations associées dans la table génomique. Les données associées à la banque, aux publications, aux auteurs, au patient séquencé, aux traitements qu il suit, aux médicaments qu il prend sont insérées dans les tables correspondantes, tout en évitant les éventuels doublons. Pour ce faire, le programme remplit des listes d auteurs, de titres, de dates et de médicaments et compare les nouvelles informations à ces listes. Si ces informations sont déjà contenues dans les listes, on n insère pas dans les tables, sinon on insère et on complète les listes. - 11 -

4. Interface graphique 1. PHP et HTML MySLQ ne permet pas une visualisation claire des données qu il contient. Il est donc nécessaire de réaliser une interface graphique. Cela se fait très bien à l aide de PHP qui va chercher les informations écrites dans les tables et HTML qui réalise l interface proprement dite. PHP est le sigle mis pour Hypertext Preprocessor. C est un langage de scripts généraliste, facilement intégrable au HTML. Il est à noter la différence avec d autres scripts écrits dans d autres langages tels que Perl ou C. Au lieu d écrire un programme avec de nombreuses lignes de commandes afin d afficher une page HTML, on peut écrire du code HTML avec du code inclus à l intérieur afin de réaliser une action précise (afficher à l écran, par exemple). Le code PHP est inclus entre une balise de début et une balise de fin qui permettent au serveur Web de passer en mode PHP. Une des grandes forces de PHP est le support de nombreux systèmes de gestion de bases de données dont MySLQ [6] [7]. HTML mis pour HyperText Markup Language est un langage de «mark up» qui définit la structure logique d un document www diffusé sur le Web. Ce langage est basé sur la notion d environnement possédant un début et une fin. Un environnement est délimité par un marqueur lui-même délimité par < et >. [8] 2. Visualisation de la base J ai enfin réalisé des programmes.php afin de créer une interface graphique. Seul le premier de ces programmes est présenté ici, car cette interface encore est en cours de développement. En effet lorsque j ai commencé PHP et HTML, seules certaines tables étaient partiellement remplies et l interface porte donc sur ces tables. Je n ai pas eu le temps de la terminer. L idée de départ était de réaliser trois sortes d interface reliées entre elles par le programme base.php, détaillé en annexe 5, qui affiche une page d accueil. Une interface générale permet d accéder à toutes les informations de toutes les tables en choisissant certains critères de sélection. Une interface fasta permet d afficher des séquences alignées ce qui facilite les comparaisons dans un fichier de la forme - 12 -

> nom de la séquence ; id swissprot ; SEQUENCE Une interface «géographie» permet de remplir la table géographie en vue de l éventuel projet en Afrique. Le programme base.php renvoie la figure 4 suivante. Figure 4 : Page d accueil de l interface de la base de données HIV Pour récupérer les données contenues dans les tables, on utilise des fonctions qui sont des requêtes SQL intégrées à du code PHP (figure 5). Des formulaires font ensuite le liens entre l utilisateur et la base (figure 6). /* cette fonction permet d extraire la ligne de donnees de la table banque ou codeb vaut $code */ function extraire($code){ $base = "hiv"; $cx = mysql_connect("abigbug","root","") or die ("echec de connexion"); $db = mysql_select_db($base,$cx) or die ("echec d'ouverture de la base"); $req = "SELECT * FROM banque WHERE banque.codeb='$code'"; $res = mysql_query($req) or die ("echec d'execution de la requete"); return mysql_fetch_array($res, MYSQL_ASSOC); - 13 -

/* pour afficher la sequence nucleotidique correspondant a la reference donnee par $code (coder) */ function pagination2($code){ $base = "hiv"; $cx = mysql_connect("abigbug","root","") or die ("echec de connexion"); or die ("echec d'ouverture de la base"); $db = mysql_select_db($base,$cx) $req = "SELECT * FROM ref, genomique, pagination WHERE ref.coder='$code' AND pagination.coder=ref.coder AND genomique.codesg=pagination.codesg"; $res = mysql_query($req) return mysql_fetch_array($res, MYSQL_ASSOC); or die ("echec d'execution de la requete"); Figure 5 : Exemples de requêtes SQL intégrées à du code PHP. /* creation du formulaire de choix */ $infos = array( "table"=>"nom de la table : ","code"=>"nom de la colonne : ", "voeu"=>"valeur de la case : "); echo "<p align='center'> <b>entrez vos choix dans le formulaire qui suit.</b><hr>"; echo "<form action='extraire.php' method='post'> <table width='95%' border='0' cellspacing='10' cellpadding='2'>\n"; foreach($infos as $champ=>$info){ echo "<tr><td align='right'> <B> {$infos[$champ] </B></td>"; if ($infos[$champ] == "Nom de la table : "){ echo "<td><select name='table'> <option value='3d'>3d <option value='auteur'>auteur <option value='banque'>banque <option value='data'>date <option value='dosage'>dosage <option value='generalite'>généralite <option value='genomique'>génomique <option value='geo'>géographie <option value='marqueur'>marqueur <option value='medicament'>médicament <option value='patient'>patient <option value='patientfam'>patient famille <option value='patientmed'>patient médecine <option value='patientsex'>patient sexualité <option value='patientsoc'>patient société <option value='proteique'>protéique <option value='ref'>référence <option value='resistancemed'>résistancemed <option value='resistancesys'>résistancesys <option value='traitement'>traitement </select></td></tr>"; else{ echo "<td><input type='text' name='$champ' size='20'maxlength='20'></td><tr>"; Figure 6 :Exemple de formulaire de choix - 14 -

Conclusion Le développement de cette base de données sur le VIH s est inscrit dans un contexte utilitaire et aujourd hui,même si l interface n est pas encore utilisable, la quasi-totalité de la structure est conservée, la base remplie et utilisée au sein de l Atelier de BioInformatique, notamment pour des comparaisons de séquences. A ce jour, elle contient 77 832 séquences des produits du gène POL, dont on extrait 115 148 séquences protéiques, parmi lesquelles 41 535 protéases, 1 555 intégrases et 72 058 reverse transcriptases. On compte environ 37 690 patients, 45 713 traitements, 30 médicaments et 797 références bibliographiques pour 2 778 auteurs. Les tables concernant les patients sont peu remplies car les données sont souvent absentes et une partie d entre elles a été créée uniquement en vue d un éventuel séquençage en Afrique. La structure de la base est donc fonctionnelle et il est envisageable de l étendre aux produits des gènes GAG et ENV puis à d autres virus tels la grippe ou l hépatite B. - 15 -

Annexes ANNEXE 1 : DIAGRAMME ENTITES / ASSOCIATIONS...17 ANNEXE 2 : MODELE RELATIONNEL...18 ANNEXE 3 : DEFINITIONS DES TYPES ASSOCIES AUX CHAMPS...19 ANNEXE 4 : PROGRAMME DE REMPLISSAGE DES TABLES...20 ANNEXE 5 : EXEMPLE DE PROGRAMME DE L INTERFACE...24-16 -

Annexe 1 : Diagramme Entités / Associations - 17 -

Annexe 2 : Modèle Relationnel - 18 -

Annexe 3 : Définitions des types associés aux champs TABLE generalites TABLE 3D TABLE resistancesys code varchar(10) refpdb varchar(10) coders varchar(10) refpdb varchar(10) nom_inhib varchar(10) position int coders varchar(10) mutation varchar(10) coderm varchar(10) TABLE genomique niveau_res enum (0 à 5) nom_prot varchar(10) codesg varchar(10) longueur int TABLE proteique TABLE resistancemed codeg varchar(10) codesp varchar(10) coderm varchar(10) seq_nucleo text nom_prot varchar(10) position int sous_type varchar(10) nom_gene varchar(10) mutation varchar(10) codep varchar(10) seq_prot text niveau_res enum (0 à 5) codeb varchar(10) seq_complet bool coded varchar(10) codesg varchar(10) codep varchar(10) TABLE resistance TABLE banque coderm varchar(10) codeb varchar(20) TABLE date codem varchar(10) id_swissprot varchar(20) coded varchar(10) nom_lanl varchar(20) date_ent date TABLE medecine name_lanl varchar(20) date_ent_ori date codem varchar(10) au_nom_lanl varchar(20) date_mod date codet varchar(10) au_id_sw varchar(20) date_mod_ori date au_nom_sw varchar(20) TABLE reference acc_genbank varchar(20) TABLE marqueur coder varchar(10) acc_sw varchar(20) codemq varchar(10) titre varchar(10) nom_stanford varchar(20) nom varchar(10) infos text num_p_stan varchar(20) sequence text refmedline varchar(10) num_is_stan varchar(20) refpubmed varchar(10) tmt_stan varchar(20) TABLE patient_seq tps_tmt_stan varchar(20) codep varchar(10) TABLE pagination codemq varchar(10) codesg varchar(10) TABLE patient coder varchar(10) codep varchar(10) TABLE traitement sexe enum codet varchar(10) TABLE bibli date_naiss date duree varchar(10) coder varchar(10) codeg varchar(10) debut date codea varchar(10) test_depist varchar(10) fin date date_sero date pathologie text TABLE auteur date_postinf date codep varchar(10) codea varchar(10) nationalite varchar(10) nom varchar(10) TABLE medicament prenom varchar(10) TABLE geographie codem varchar(10) codeg varchar(10) nom varchar(10) TABLE dosage continent varchar(10) composition text coded varchar(10) pays varchar(10) presentation varchar(10) codem varchar(10) region varchar(10) type varchar(10) dosage int milieu enum (rur,urb) formule_chim text voie_inter bool dose_recom varchar(10) - 19 -

Annexe 4 : Programme de remplissage des tables sequences.pl #!/usr/bin/perl # Initialisation des variables %pleinseq1=();%pleinseq2=(); @champs=(); $ligne="";$seq1="";$seq2="";$nom1="";$nom2="";$debutnom1="";$seq2bis="";$longueur="";$lg=""; $sous_type="";$st=""; $k=0;$j=0;$a=0;$c=0;$d=0;$z=0;$t=0;$m=0; @oldtitre=("","");@oldauteur=("","");@olddate=(["",""]);@oldmedoc=("","") # Ouverture des fichiers open (DONNEE,"data") or die "Pb d'ouverture : $!" ; open (DONNEEFINALE,"data.final") or die "Pb d'ouverture : $!" ; open (RESULTAT, ">assemblage") or die "Pb d'ouverture : $!" ; # Appel de MySQL use DBI; $user="root"; $pass=""; $database="hiv"; $dsn="dbi:mysql:database=$database;host=localhost"; $dbh=dbi->connect($dsn,$user,$pass); # Remplissage du hash de Anne while ($ligne = <DONNEE>){ chomp ($ligne); if ($ligne =~ /^>/){ $seq1=""; $nom1=$ligne; else{ $seq1.=$ligne; $pleinseq1{$nom1=$seq1; # Remplissage du hash de Sophie while ($ligne = <DONNEEFINALE>){ chomp ($ligne); if ($ligne =~ /^>/){ $seq2=""; $nom2=$ligne; else{ $seq2.=$ligne; $pleinseq2{$nom2=$seq2; # Comparaison des sequences while (($nom1, $seq1) = each %pleinseq1){ ++$j; while (($nom2, $seq2) = each %pleinseq2){ $debutnom1 = substr ($nom1,o,74); $nom2 =~ s/;;/; ;/g; $nom2 =~ s/;;/; ;/g; # Cas d'egalite de 2 noms : il existe une sequence proteique extraire de la sequence genomique if ($debutnom1 eq $nom2){ print RESULTAT "$nom2\n$seq1\n$seq2\n"; $seq2bis = $seq2; $seq2bis =~ s/\.//g; $lg = length($seq2bis); - 20 -

# Determination : sequence complete ou non if ($lg == 99){$bool = 'oui'; else{$bool = 'non'; # Insertion dans la table proteique $sql1="insert into proteique values ('SP$a','reverse transcriptase','pol', '$seq2','$bool','sg$k','$champs[5]')"; $sth1=$dbh->prepare($sql1) or die "can't prepare $sql1: $dbh->errstr\n"; $sth1->execute or die "can't execute the query1: $sth1->errstr\n"; # Cas de non egalite : il n'existe pas de sequence proteique correspondant a la sequence genomique else{ print RESULTAT "$nom1\n$seq1\n" ; # Dans tous les cas on fait ce qui suit $nom1 =~ s/>//; @champs = split (';',$nom1); $longueur = length($seq1); # Comparaison des sous-types if ($champs[2] eq $champs[13] or $champs[2] ne "" and $champs[13] eq ""){ $sous_type = $champs[2]; elsif ($champs[2] eq "" and $champs[13] ne ""){ $sous_type = $champs[13]; $st = $sous-type; # Insertion dans la table banque $sql="insert into banque values ( 'B$k','$champs[0]','$champs[12]','$champs[14]', '$champs[15]','$champs[16]','$champs[17]','$champs[1]', '$champs[11]','$champs[4]','$champs[5]','$champs[6]', '$champs[7]','$champs[8]')"; $sth=$dbh->prepare($sql) or die "can't prepare $sql: $dbh->errstr\n"; $sth->execute or die "can't execute the query: $sth->errstr\n"; # Insertion dans la table genomique $sql2="insert into genomique values ('SG$k','$longueur','','$seq1','$champs[2]', '$champs[5]','b$k','d$d')"; $sth2=$dbh->prepare($sql2) or die "can't prepare $sql2: $dbh->errstr\n"; $sth2->execute or die "can't execute the query2: $sth2->errstr\n"; # Etude des dates pour enlever les doublons # ATTENTION a la premiere mise en marche du programme ( mais pas a chaque reinitialisation ) remplacer la date 2005-08-21 par la date du jour $drap = 0; for ($w = 0; $w < $#olddate+1; ++$w){ if (($olddate[$w][0] eq "$champs[40]") and ($olddate[$w][1] eq "$champs[41]")){ $drap = 1; last; else{ $drap = 0; if ($drap == 0){ # Insertion dans la table date $sql4="insert into date values ('D$d','2005-08-21','$champs[40]',curdate(), '$champs[41]')"; $sth4=$dbh->prepare($sql4) or die "can't prepare $sql4: $dbh->errstr\n"; $sth4->execute or die "can't execute the query4: $sth4->errstr\n"; push (@olddate,[$champs[40],$champs[41]]); ++$d; # Etude des ref et auteurs pour enlever les doublons @newtitre=();@newinfo=();@newauteur=();@newmedline=();@newpubmed=(); if ($champs[18] eq ""){ $champs[18] = 1; - 21 -