De l'alignement des séquences à la phylogénie

Documents pareils
CHAPITRE 3 LA SYNTHESE DES PROTEINES

Introduction aux bases de données: application en biologie

Bibliographie Introduction à la bioinformatique

Initiation à la programmation en Python

Cours 3 : Python, les conditions

TP 1. Prise en main du langage Python

STAGE IREM 0- Premiers pas en Python

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

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Module Analyse de Génomes Master 2 module FMBS 326 Immunoinformatique

GMIN206 Info. Biologique et Outils bioinformatiques. Elodie Cassan

TD de Biochimie 4 : Coloration.

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

Contrôle de l'expression génétique :

Chapitre 2 Devine mon nombre!

2 Comment fonctionne un ordinateur, dans les grandes lignes

Big data et sciences du Vivant L'exemple du séquençage haut débit

Découverte de Python

La gestion de données dans le cadre d une application de recherche d alignement de séquence : BLAST.

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

Contrôle de l'expression génétique : Les régulations post-transcriptionnelles

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

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Algorithmique et Programmation, IMA

L informatique en BCPST

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Hépatite chronique B Moyens thérapeutiques


Présentation du langage et premières fonctions

Les OGM. 5 décembre Nicole Mounier

Univers Vivant Révision. Notions STE

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Identification de nouveaux membres dans des familles d'interleukines

Bases moléculaires des mutations Marc Jeanpierre

MABioVis. Bio-informatique et la

présentée DEVANT L UNIVERSITÉ DE RENNES 1 pour obtenir le grade de : DOCTEUR DE L UNIVERSITÉ DE RENNES 1 PAR Emilie GUÉRIN TITRE DE LA THÈSE :

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

Cellules procaryotes Service histologie Pr.k.mebarek

Base de données bibliographiques Pubmed-Medline

Les chaînes de caractères

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Séquence 6. Mais ces espèces pour autant ne sont pas identiques et parfois d ailleurs ne se ressemblent pas vraiment.

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

! Séquence et structure des macromolécules. " Séquences protéiques (UniProt) " Séquences nucléotidiques (EMBL / ENA, Genbank, DDBJ)

Formavie Différentes versions du format PDB Les champs dans les fichiers PDB Le champ «ATOM» Limites du format PDB...

Travaux dirigés de Microbiologie Master I Sciences des Génomes et des Organismes Janvier 2015

VI- Expression du génome

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Langage Java. Classe de première SI

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

Conventions d écriture et outils de mise au point

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

LA MITOSE CUEEP - USTL DÉPARTEMENT SCIENCES BAHIJA DELATTRE

GOL502 Industries de services

Séquence 2. L expression du patrimoine génétique. Sommaire

Initiation à la Programmation en Logique avec SISCtus Prolog

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

MODE OPERATOIRE OPENOFFICE BASE

CATALOGUE DES PRESTATIONS DE LA

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Traitement de texte : Quelques rappels de quelques notions de base

Université d Evry-Val d Essonne Ecole Doctorale des Génomes Aux Organismes. Thèse

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

Introduction à la Génomique Fonctionnelle

Module 5 La maturation de l ARN et le contrôle post-transcriptionnel chez les eucaryotes

Introduction à l algorithmique et à la programmation M1102 CM n 3

PROJET ALGORITHMIQUE ET PROGRAMMATION II

Tout savoir sur le clavier

ULBI 101 Biologie Cellulaire L1. Le Système Membranaire Interne

TP Wireshark. Première approche de Wireshark. 1 ) Lancer Wireshark (double clic sur l icône sur le bureau). La fenêtre

Plan du cours. Historique du langage Nouveautés de Java 7

Les bases de données transcriptionnelles en ligne

"! "#$ $ $ ""! %#& """! '& ( ")! )*+

Connaître la version de SharePoint installée

Mise en place d une plateforme de gestion de matériels biologiques : quels avantages pour les chercheurs?

Configurer la supervision pour une base MS SQL Server Viadéis Services

Journée SITG, Genève 15 octobre Nicolas Lachance-Bernard M.ATDR Doctorant, Laboratoire de systèmes d information géographique

Paris Airports - Web API Airports Path finding

Algorithmique et programmation : les bases (VBA) Corrigé

Cours Informatique Master STEP

I. Introduction aux fonctions : les fonctions standards

Cours d algorithmique pour la classe de 2nde

Détection des duplications en tandem au niveau nucléique à l'aide de la théorie des flots

Recherche dans un tableau

1. Structure d'un programme FORTRAN 95

INF 321 : mémento de la syntaxe de Java

THEME : CLES DE CONTROLE. Division euclidienne

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

MASTER (LMD) MANAGEMENT DE PROJET ET INNOVATION EN BIOTECHNOLOGIE

TUTORIAL REUTERS. Utilisation de l'utilitaire de recherche Reuters

Université de Montréal. Développement d outils pour l analyse de données de ChIP-seq et l identification des facteurs de transcription

Compléments de documentation Scilab : affichage de texte et formatage de nombres

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

Micro-ordinateurs, informations, idées, trucs et astuces utiliser le Bureau à distance

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Algorithmique avec Algobox

Transcription:

Bio-informatique De l'alignement des séquences à la phylogénie Jean-Baptiste Lamy Maître de conférence bureau 149, LIM&BIO jibalamy@free.fr

Introduction Au premier semestre : 3 x 2h de cours 1 x 2h de TD 4 x 2h de TP sur ordinateur 2

Introduction Définitions : Bioinformatique : analyse des séquences biologiques (ADN, protéines,...) : séquençage du génome, puces à ADN, phylogénie,... Informatique biomédicale : représentation et traitement des données et connaissances biomédicales : système d'information hospitalier, aide à la décision,... 3

Introduction Contenu : Introduction à la bio-informatique Séquençage du génome Recherche des séquences codantes Rappel sur les bases de données Programmation en langage Python Méthodes d'alignement de séquences Alignements de séquences d'adn et d'arn Alignements de séquences protéiques Alignements multiples Recherche par séquence (BLAST) Phylogénie Construction d'arbres phylogénétiques 4

Introduction à la bio-informatique in situ : dans le milieu naturel in vivo : dans l'organisme vivant in vitro : en éprouvette In sillico : simulation sur ordinateur Domaine de recherche nouveau... mais de plus en plus indispensable! 5

Introduction à la bio-informatique Principales activités : Acquisition des données biologiques : Comment passer d'un échantillon d'adn à un fichier sur son ordinateur? Organisation de ces données : Comment représenter les données biologiques dans un ordinateur? Comment mettre les données biologiques à disposition d'autres chercheurs? Traitement des données : Comment comparer deux séquences d'adn? Comment relier des données issues de sources différentes, par exemple une séquence d'adn avec une séquence protéique? Présentation des résultats Comment présenter le résultat de l'alignement de deux séquences de 10 000 paires de bases? 6

À quoi ça sert? Le séquençage du génome n'est que la première étape

À quoi ça sert? Il faut à présent interpréter les séquences Localiser les gènes (parties codantes) Identifier leurs fonctions Comprendre leurs mécanismes de régulation Objectifs : Comprendre le fonctionnement des cellules et des organismes Comprendre le fonctionnement des maladies Retracer l'évolution des organismes (phylogénie) 8

Les organismes vivants Ancienne classification basée sur la structure (observation au microscope, etc) : Procaryotes : êtres vivants ayant une seule cellule sans noyau Bactéries Archébactéries Eucaryotes : êtres vivants composés d'une ou plusieurs cellules avec un noyau et des organites (mitochondries, ribosomes,...) Animaux Plantes Champignons Protistes (Eucaryotes unicellulaire, ex : amibe) 9

Les organismes vivants Nouvelle classification basée sur la phylogénie (comparaison des génomes) : Bactéries Archées Eucaryotes Animaux Plantes Champignons Protistes Il y a autant de différence entre bactéries et archées qu'entre bactérie et eucaryotes, mais elles ne se voient pas au microscope! 10

Différentes échelles Environnement Population Individu Cellules Protéines ARNm / ADN 11

Expression des gènes transcription ADN traduction ARNm Protéine 12

Différents niveaux moléculaires GATCACC TCACTAC GGGTCA GGGGAA GGAAAG GGGAAC TGAGAG ATTT.. Génome ADN Transcriptome GAUCAC CUCACU ACGGGU CAGGGG AAGGAA AGGGGA ACUGAG AGAUUU.. ARN régulation Protéome Protéines enzymes Métabolome F60-64 env13 ZT50 es4075 MaxEnt 3 8 [Ev-36586,It50,En1] (0.050,200.00,0.200,1400.00,2,Cmp) 1: TOF MSMS 631.30ES+ (596.29) 100 N N O O N O O O P O P O P O N N O O O O O Métabolites, Hormones,... F 201.11 175.09 (329.16) ymax 819.38 y2 312.12 % 187.12 G L 330.13 b 401.24 516.25 762.36 y1 932.44 1033.48 y3 825.42 1259.57 0 M/z 200 400 600 800 1000 1200

Définitions Génome : l ensemble du matériel génétique (ADN) d'un individu/espèce Transcriptome : l ensemble des ARN messagers transcrits à partir du génome Protéome : l'ensemble des protéines exprimés Métabolome : l ensemble des composés organiques d'un être vivant (hors ADN / ARN / protéine), quel que soit leur nature : sucres, lipides, acides aminés, ou leur fonction : métabolites, hormones,... 14

Définitions Génotype : information stockée dans les gènes d'un individu Phénotype : caractéristique observée chez un individu : caractéristique anatomique, morphologique, physiologique, biochimique,... (ex : couleur des yeux) Des génotypes différents peuvent donner des phénotypes identiques Allèle récessif / allèle dominant Des génotypes identiques peuvent donner des phénotypes différents Rôle de l'environnement, qui fera que certains gènes seront plus ou moins exprimés Rôle de l'éducation Rôle des informations stockées en-dehors du génome 15

Séquences Séquence : Séquence d'adn Séquence d'arn Séquence protéique Les séquences ont un sens de lecture : GAT TAG Attention la séquence ne fait pas tout! Ce qui détermine l'effet biologique est la structure tridimentionnelle Le repliement des ADN, ARNm et protéine dépend de leur séquence, mais aussi de leur environnement 16

Séquences nucléotidiques Une séquence génomique est une suite de nucléotides composant une macromolécule Une chaîne de bases azotées : A : Adénine C : Cytosine G : Guanine T : Thymine (+ des bases rares, ex Inosine, C ou G méthylé,...) La séquence des régions codantes des gènes dicte la suite des acides aminés qui composent la protéine, dont dépend son repliement et ses fonctions 17

Séquences nucléotidiques Généralement, des séquences similaires conduisent à des protéines de structures et de fonctions similaires L inverse n est pas toujours vrai! L'évolution repose, en grande partie, sur la duplication d'une séquence donnée puis sa modification (suite à des mutations) Quelques problèmes typiques de génomique : Recherche d homologie dans des séquences Rassembler un ADN fragmenté en plusieurs séquences (fragment assembly) Comparer deux séquences issues de différents laboratoires Trouver des régions similaires à plusieurs séquences Observer les relations entre plusieurs séquences 18

Séquençage Le séquençage du génome humain s'est achevé en 2004 Séquençage public vs séquençage privé Brevet sur les séquences? => Le génome humain est disponible librement sur Internet 19

Tailles des génomes Organisme Taille génome (Million de pb) Gènes protéiques estimés Virus Virus de la grippe 0,01 3 Bactéries Mycoplasma pneumoniae 0,816 689 Escherichia coli 4,64 4243 Nanoarchaeum equitans 0,49 536 Sulfolobus solfataricus 3 2977 Saccharomyces cerevisiae 12 5863 118 16 548 Arabidopsis thaliana (plante) 119 28 159 Populus trichocarpa (peuplier) 485 45 500 Archaea Eucaryote (levure) Drosophila melanogaster (insecte) Zea mais (maïs) 2 500 Mus musculus (souris) 3 400 30 000 Homo sapiens (homme) 3 400 26 517 Amoeba dubia 675 000

L'idéal du biologiste Le séquençage du génome (on l'a!), L'ensemble des gènes et leur position sur le génome, L ensemble des ARMm de chaque gène, La protéine produite par chaque ARMm, La structure 3D et fonction de chaque protéine, Les mécanismes cellulaires auxquels participent les protéines, Les mécanismes de régulation de l'expression des transcrits et des protéines Pourquoi telle protéine est-elle produite à tel moment? 21

Bio-informatique Recherche de régions codantes

Cadres de lecture ouverts L'étape suivant le séquençage du génome est la recherche des gènes et des régions codantes Une région codante : Commence par un codon start : ATG Se termine par un codon stop : TAA, TAG ou TGA Exemple : ACGGTATGAACAGGCTATGCCCTAGCATCACCACTTAACCG... 23

Cadres de lecture ouverts L'étape suivant le séquençage du génome est la recherche des gènes et des régions codantes Une région codante : Commence par un codon start : ATG Se termine par un codon stop : TAA, TAG ou TGA Exemple : ACGGTATGAACAGGCTATGCCCTAGCATCACCACTTAACCG... Où est le stop qui va avec ce codon start? 24

Cadres de lecture ouverts La traduction de l'arnm en protéine se fait par codon de 3 bases => Lecture 3 par 3 ACGGTATGAACAGGCTATGCCCTAGCATCACCACTTAACCG... Et l'autre start? 25

Cadres de lecture ouverts La traduction de l'arnm en protéine se fait par codon de 3 bases => Lecture 3 par 3 ACGGTATGAACAGGCTATGCCCTAGCATCACCACTTAACCG... Une 2ème protéine est possible! 26

Cadres de lecture ouverts Il y a 3 phases de lecture possibles Il y a 2 brins d'adn Attention la notion de «brin codant» est valable pour un gène donné, pas pour un chromosome! => 6 manières différentes de lire l'adn! ACGGTATGAACAGGCTCCAGTCCAGGCATAACCATTAACCG TGCCATACTTGTCCGAGGTCAGGTCCGTATTGGTAATTGGC 27

Cadres de lecture ouverts ACGGTATGAACAGGCTCCAGTCCAGGCATAACCATTAACCG 0 3 6 9 12 15 18 21 24 27 30 33 36 TGCCATACTTGTCCGAGGTCAGGTCCGTATTGGTAATTGGC Les positions des bases correspondant à la première phase de lecture sont les multiples de 3 + 1 (1, 4, 7, 10, 13 ) Les positions des bases correspondant à la seconde phase de lecture sont les multiples de 3 + 2 (2, 5, 8, 11, 14 ) Les positions des bases correspondant à la troisième phase de lecture sont les multiples de 3 (0, 3, 6, 9, 12...) 28

Cadres de lecture ouverts ACGGTATGAACAGGCTCCAGTCCAGGCATAACCATTAACCG 0 3 6 9 12 15 18 21 24 27 30 33 36 TGCCATACTTGTCCGAGGTCAGGTCCGTATTGGTAATTGGC Pour cela, on peut utiliser l'opération modulo (reste de la division entière, que l'on écrit «%») : 3 % 3 = 0 4 % 3 = 1 18 % 3 = 0 20 % 3 = 2 => le codon qui commence en position 20 est sur le troisième cadre de lecture (on commence à 0) 29

Cadres de lecture ouverts Toutes les régions qui commencent par un start et se termine par un stop ne sont pas systématiquement codantes Certaines régions ne sont pas transcrits en ARNm (absence de site promoteur) Mais la détermination des ARNm est beaucoup plus difficiles : Les codons start et stop correspondent à des séquences précises et bien définies Les sites promoteurs correspondent à des motifs moins précis et plus difficiles à repérer => On recherche directement les régions qui commencent par un start et se termine par un stop, que l'on appelle «cadres de lecture ouverts» (Open Reading Frames, ORF) Les ORF sont des «régions codantes candidates» Cf TP, programme ORF finder http://www.ncbi.nlm.nih.gov/projects/gorf/ 30

Recherche de régions codantes Comment vérifier qu'un ORF correspond bien à une séquence codante? Approche banque de données : rechercher si la séquence de l'orf ressemble à une séquence présente dans les banques de données de séquences connues (BLAST) Approche statistique (cf TP) : un ORF ne contient pas de codon stop ; plus l'orf est long plus la probabilité de ne pas avoir de codon stop est faible Quelle est la probabilité qu'un codon tiré au hasard soit un codon stop? 31

Recherche de régions codantes Quelle est la probabilité qu'un codon tiré au hasard soit un codon stop? Nombre de codons stop : 3 Nombre de codons possibles : 4 x 4 x 4 = 64 => Proba = 3 / 64 = 4,7 % Quelle est la probabilité qu'un codon tiré au hasard ne soit pas un stop? 32

Recherche de régions codantes Quelle est la probabilité qu'un codon tiré au hasard soit un codon stop? Nombre de codons stop : 3 Nombre de codons possibles : 4 x 4 x 4 = 64 => Proba = 3 / 64 = 4,7 % Quelle est la probabilité qu'un codon tiré au hasard ne soit pas un stop? Proba = 100 4,7 = 95,3 % Quelle est la probabilité qu'il n'y est pas de codon stop dans un ORF de 100 codons tirés au hasard? 33

Recherche de régions codantes Quelle est la probabilité qu'un codon tiré au hasard soit un codon stop? Nombre de codons stop : 3 Nombre de codons possibles : 4 x 4 x 4 = 64 => Proba = 3 / 64 = 4,7 % Quelle est la probabilité qu'un codon tiré au hasard ne soit pas un stop? Proba = 100 4,7 = 95,3 % Quelle est la probabilité qu'il n'y est pas de codon stop dans un une suite de 100 codons tirés au hasard? Proba = (95,3 %)100 = 0,8 % => un ORF de 100 codons (donc sans codon stop au milieu) est rarement le fruit du hasard! 34

Recherche de régions codantes Procaryote : la détermination des séquences codantes est relativement facile Eucaryote : la détermination des séquences codantes est beaucoup plus difficile : Beaucoup d'adn non codant Problème des introns Attention car les introns peuvent éliminer un codon stop et / ou décaler le cadre de lecture! 35

Bases de données (rappel)

Banques et bases de données Base de données : gros volume de données structurées de manière à en faciliter le stockage et l'utilisation Banque de données : base de données orientée vers la consultation et le recueil des données En bio-informatique, beaucoup de banques et bases de données sont disponibles en ligne Beaucoup de logiciels spécifiques pour : Faciliter l'accès aux données Envoyer des données dans les bases Convertir des données du format d'une base au format d'une autre base Relier différentes bases entre elles... 37

Bases de données disponibles Séquences de nucléotides (ADN / ARN) et de protéines : EMBL : http://www.ebi.ac.uk/embl/ Nucleotide (anciennement appelé GenBank) http://www.ncbi.nlm.nih.gov/sites/entrez?db=nucleotide DNA Database of Japan Contiennent toutes les séquences de nucléotides librement disponibles et leur traduction en protéines Les 3 banques sont synchronisées => même contenu Séquences de protéines : Uniprot (protéine avec annotation de la séquence) www.uniprot.org Dans ces bases : 1 entrée par gène ou par protéine 38

Bases de données disponibles Domaines, familles et fonctions des protéines : Prosite : http://www.expasy.ch/prosite/ Pfam : http://pfam.sanger.ac.uk/ Structures des protéines : PDB (BrookHaven Protein DataBank) http://www.rcsb.org/pdb/home/home.do 1 entrée par expérience => plusieurs entrées pour une même protéine Bases spécifiques d'un organisme : Flybase (Drosophile) : http://flybase.org/ 39

Format FASTA Il existe différents formats pour les séquences Le format FASTA est l'un des plus utilisés et des plus simples Exemple de séquence en format FASTA : Entrée de SwissProt Numéro unique d accession Informations diverses (nom, espèce, ) >sp P05231 IL6_HUMAN Interleukin-6 precursor (IL-6) - Homo sapiens (Human). MNSFSTSAFGPVAFSLGLLLVLPAAFPAPVPPGEDSKDVAAPHRQPLTSSERIDKQIRYI LDGISALRKETCNKSNMCESSKEALAENNLNLPKMAEKDGCFQSGFNEETCLVKIITGLL EFEVYLEYLQNRFESSEEQARAVQMSTKVLIQFLQKKAKNLDAITTPDPTTNASLLTKLQ AQNQWLQDMTTHLILRSFKEFLQSSLRALRQM 40

Exemple de contenu EMBL Identification de la séquence Numéro unique d accession (Accession Number - AC) Données taxinomiques Références bibliographiques Annotations Références croisées avec d autres banques de données Mots-clefs ID AC DT DT DT DE DE GN OS OC OC OX RN RP RX RA RA RA RT RT RL CC CC CC CC CC CC CC DR DR.. DR DR... DR KW KW IL6_HUMAN STANDARD; PRT; 212 AA. P05231; 13-AUG-1987 (Rel. 05, Created) 13-AUG-1987 (Rel. 05, Last sequence update) 01-MAR-2002 (Rel. 41, Last annotation update) Interleukin-6 precursor (IL-6) (B-cell stimulatory factor 2) (BSF-2) (Interferon beta-2) (Hybridoma growth factor). IL6 OR IFNB2. Homo sapiens (Human). Eukaryota; Metazoa; Chordata; Craniata; Vertebrata; Euteleostomi; Mammalia; Eutheria; Primates; Catarrhini; Hominidae; Homo. NCBI_TaxID=9606; [1] SEQUENCE FROM N.A., AND PARTIAL SEQUENCE. MEDLINE=87065033; PubMed=3491322; [NCBI, ExPASy, EBI, Israel, Japan] Hirano T., Yasukawa K., Harada H., Taga T., Watanabe Y., Matsuda T., Kashiwamura S.-I., Nakajima K., Koyama K., Iwamatsu A., Tsunasawa S., Sakiyama F., Matsui H., Takahara Y., Taniguchi T., Kishimoto T.; "Complementary DNA for a novel human interleukin (BSF-2) that induces B lymphocytes to produce immunoglobulin."; Nature 324:73-76(1986). -!- FUNCTION: IL6 IS A CYTOKINE WITH A WIDE VARIETY OF BIOLOGICAL FUNCTIONS: IT PLAYS AN ESSENTIAL ROLE IN THE FINAL DIFFERENTIATION OF B-CELLS INTO IG-SECRETING CELLS, IT INDUCES MYELOMA AND PLASMACYTOMA GROWTH, IT INDUCES NERVE CELLS DIFFERENTIATION, IN HEPATOCYTES IT INDUCES ACUTE PHASE REACTANTS. -!- SUBCELLULAR LOCATION: Secreted. -!- SIMILARITY: BELONGS TO THE IL-6 SUPERFAMILY. EMBL; X04430; CAA28026.1; -. [EMBL / GenBank / DDBJ] [CoDingSequence] EMBL; M14584; AAA52728.1; -. [EMBL / GenBank / DDBJ] [CoDingSequence] PDB; 1IL6; 04-FEB-98. [ExPASy / RCSB] PDB; 2IL6; 04-FEB-98. [ExPASy / RCSB] Pfam; PF00489; IL6; 1. Cytokine; Glycoprotein; Growth factor; Signal; Polymorphism; 3D-structure.

Exemple de contenu EMBL Annotation de la séquence FT FT FT FT FT FT FT FT FT FT FT FT FT FT SQ Séquence Fin de l entrée // SIGNAL CHAIN DISULFID DISULFID CARBOHYD VARIANT VARIANT MUTAGEN MUTAGEN MUTAGEN MUTAGEN MUTAGEN SEQUENCE MNSFSTSAFG LDGISALRKE EFEVYLEYLQ AQNQWLQDMT 1 30 72 101 73 32 29 212 78 111 73 32 INTERLEUKIN-6. N-LINKED (GLCNAC...). P -> S. /FTId=VAR_013075. 162 162 D -> V. /FTId=VAR_013076. 173 173 A->V: ALMOST NO LOSS OF ACTIVITY. 185 185 W->R: NO LOSS OF ACTIVITY. 204 204 S->P: 13% ACTIVITY. 210 210 R->K,E,Q,T,A,P: LOSS OF ACTIVITY. 212 212 M->T,N,S,R: LOSS OF ACTIVITY. 212 AA; 23718 MW; 1F1ED1FE1B734079 CRC64; PVAFSLGLLL VLPAAFPAPV PPGEDSKDVA APHRQPLTSS ERIDKQIRYI TCNKSNMCES SKEALAENNL NLPKMAEKDG CFQSGFNEET CLVKIITGLL NRFESSEEQA RAVQMSTKVL IQFLQKKAKN LDAITTPDPT TNASLLTKLQ THLILRSFKE FLQSSLRALR QM

Qualité des données Il est très important de savoir évaluer la qualité des données Y compris pour les données que l'on récupère sur Internet! Y compris pour les logiciels! Quelques critères d'évaluation : Transparence : Les informations «de base» (auteur, date,...) sont-elles disponibles? Les sources sont-elles disponibles? Les références? Auteur : Qui est à l'origine des données? Quel est son statut? A-t-il des intérêts particuliers? Date et péremption : Les données sont-elles récentes? Sont-elles à jour? 43

Qualité des données Faire attention aux résultats produits par des logiciels!!! Parfois des approximations : diminution de la qualité des résultats au profit de la rapidité Recherche d une solution parmi un ensemble infini de possibilités Ce n est pas toujours la solution la meilleure qui est trouvée! Faire attention aux séquences issues des banques de données!!! Les données se sont pas toujours fiables ou à jour. Différence entre réalité mathématique et réalité biologique Cf TP L3 sur la séquence de l'insuline humaine Les ordinateurs ne font pas de biologie, ils calculent... vite! 44

Qualité des données Pour les séquences protéiques : Les bases de séquences protéiques (Uniprot, EMBL, Nucléotide) contiennent généralement des séquences protéiques calculées à partir des séquences d'adn => ce sont donc des séquences protéiques immatures (qui correspondent à la sortie du ribosome) Les bases de structures protéiques (PDB) contiennent des données expérimentales (RMN, cristallographie, rayon X,...) => ce sont donc des séquences matures (incluant les modifications post-traductionnelles : clivage de peptide signal, formation de ponts disulfures,...) 45

Programmation en langage Python

Présentation de Python Python est un langage de programmation Facile à apprendre De plus en plus utilisé En général Et en bioinformatique en particulier Disponible en logiciel libre À télécharger ici : http://www.python.org Multiplateforme : Linux, Windows, Mac Un grand nombre de modules complémentaires sont disponibles Entre autre pour la bioinformatique 47

Présentation de Python Programmation impérative L'utilisateur donne des ordres à l'ordinateur 2 possibilités d'utilisation : ligne de commande / fichier Interface en ligne de commande Taper «python» dans un terminal La touche <entrée> valide les commandes En appuyant sur la touche <haut>, on peut récupérer la commande précédente pour la modifier On peut appuyer plusieurs fois sur <haut> Création de fichiers de code source Les commandes sont écrites dans un fichier «.py» Une fois le fichier terminé, on l'exécute dans un terminal : python nom_du_fichier.py 48

Le génie de la programmation Appelez-moi «ordinateur»! 49

Le génie de la programmation Ordinateur, calcule 2 + 2! Ok, calcul effectué sans erreur. Tu ne m'as pas donné le résultat? Tu ne m'as pas demandé de l'afficher. 50

Le génie de la programmation Ordinateur, calcule 2 + 2 et affiche le résulat! 4. Ajoute encore 2 à ce résultat! Tu ne m'a pas demandé de le garder en mémoire. Je ne m'en souviens plus donc recommence de zéro! 51

Le génie de la programmation Ordinateur, calcule 2 + 2 et appelle ce résultat «r»! Affiche «r»! 4. Ajoute 2 à «r»! Affiche «r»! 6. 52

Le génie de la programmation r=2+2 print(r) 4. r=r+2 print(r) 6. Ne jamais laisser le «génie» avoir le dernier mot! 53

Présentation de Python Commentaires Les lignes qui commencent par # sont des commentaires et ne sont pas prises en compte par Python : # Ceci est un commentaire qui n'est pas pris # en compte par Python! Les commentaires sont destinés aux humains, pas à l'ordinateur Ils facilitent la lecture et la compréhension du programme par d'autres personnes (ou par soi-même quelques années plus tard!) Affichage La fonction print() permet d'écrire à l'écran (dans le terminal) print(2 + 2) print("bonjour") En ligne de commande, le print() peut être omis 2+2 54

Les variables Une variable est un nom auquel on associe une valeur La valeur est souvent connu seulement à l'exécution du programme (par exemple elle résulte d'un calcul) Chaque variable a un nom Le nom commence par une lettre, il peut contenir des lettres, des chiffres et des _ (éviter les accents), mais jamais d'espace! On les remplace par _ Attention majuscules et minuscules sont différenciées! Il est important de trouver des noms parlants On crée une variable en lui donnant une valeur, avec = age = 36 On obtient la valeur d'une variable en donnant son nom print(age) La valeur de la variable peut être modifiée avec = age = 37 age = age + 1 55

Les types de données Principaux types de données Nombre entier (int) : ex 8 Flottant (nombre à virgule, float) : 64.5 Chaîne de caractères (texte, string / str) : "Lamy" Booléen (bool) : True, False Liste de plusieurs valeurs (list) : [1, 2, 3] Dictionnaires (dict) Quel est le type de donnée de la variable suivante? telephone = "01 48 38 73 34" 56

Opérations Python peut effectuer les opérations courantes : Addition : + Soustraction : Multiplication : * Division : / Puissance : ** Modulo : % Ces opérations peuvent s'appliquer sur différents types de donnée somme = 2 + 2 concatenation = "ACT" + "GCC" queue_poly_a = "A" * 20 57

Chaînes de caractères Caractères spéciaux Retour à la ligne : "\n" Tabulation : "\t" Antislash : "\\" Chaînes avec des guillemets à l'intérieur Tripler les guillemets extérieurs : """Il dit "Bonjour".""" Alterner guillemets doubles et simples : 'Il dit "Bonjour".' «Antislasher» les guillemets à l'intérieur de la chaîne : "Il dit \"Bonjour\"." 58

Chaînes de caractères Opérations sur les chaînes Exemples : arn = "GCCUGCUUA" Obtenir la longueur d'une chaîne (= le nombre de caractères) len(arn) => 9 Obtenir un caractère de la chaîne arn[0] => "G" Obtenir une partie de la chaîne arn[0:3] => "GCC" Rechercher si une chaîne est incluse dans une autre "GCCUGCUUA".find("UGC") => 3 # Trouvé en position 3 (-1 si pas trouvé) Passer une chaîne en minuscule ou en majuscule "AttCgcG".lower() "AttCgcG".upper() Demander à l'utilisateur de saisir une chaîne saisie = raw_input("entrez un nom : ") 59

Conversions Il est souvent nécessaire de convertir d'un type de donnée vers une autre Les fonctions int(), float() et str() permettent de convertir une valeur vers un entier, un flottant et une chaîne de caractère int("8") str(8) => 8 => "8" raw_input() retourne toujours une chaîne de caractères ; il faut penser à la transformer en entier ou en flottant si l'on demande la saisie d'un nombre! age = int(raw_input("entrez votre âge : ")) poids = float(raw_input("entrez votre poids : ")) 60

Listes Les listes contiennent zéros, un ou plusieurs éléments Les éléments peuvent être de types différents Les listes sont créées avec des crochets, les éléments sont donnés à l'intérieur des crochets et séparés par des virgules [0, "Lamy", True] [ ] # Exemple de liste vide (zéro élément) Pour obtenir un élément d'une liste, on utilise aussi des crochets animaux = ["éléphant", "girafe", "rhinocéros", "gazelle"] animaux[2] => "rhinocéros" Le premier élément est numéroté 0 Il est aussi possible de compter à partir de la fin : le dernier élément est alors numéroté -1, l'avant dernier -2, etc len() permet d'obtenir le nombre d'élément len(animaux) 61

Listes Les listes peuvent être modifiées Exemples animaux = ["éléphant", "girafe", "rhinocéros", "gazelle"] Ajouter un élément à la fin animaux.append("lion") Ajouter un élément à une position donnée animaux.insert(0, "hippopotame") Enlever un élément animaux.remove("gazelle") Enlever un élément à une position donnée del animaux[-2] Que contient alors la liste animaux? 62

Conditions Les conditions permettent d'exécuter des commandes seulement dans certaines situations if condition: commande exécuté si la condition est vraie commande exécuté si la condition est vraie suite du programme (exécuté que la condition soit vraie ou fausse) Attention à l'indentation (= les espaces blancs en début de ligne) La condition est une comparaison utilisant l'un des opérateurs suivants : Inférieur à : < Supérieur à : > Inférieur ou égal à : <= Supérieur ou égal à : >= Égal à : == (ne pas confondre avec le = simple qui définit les variables) Différent de :!= 63

Conditions Exemple de condition : age = int(raw_input("veuillez saisir votre âge : ")) if age >= 65 : print("vous êtes une personne âgée.") print("l'année prochaine vous aurez " + str(age + 1) + " ans.") Ici il n'y a qu'une seule commande à exécuté si la condition est vraie, dans ce cas il est possible de tout mettre sur une seule ligne : if age >= 65 : print("vous êtes une personne âgée.") 64

Conditions Il est possible d'ajouter plusieurs conditions successives, et un bloc par défaut (else = sinon) if condition1: commande exécuté si condition1 est vraie commande exécuté si condition1 est vraie elif condition2: commande exécuté si condition1 est fausse et condition2 est vraie... else: commande exécuté si condition1 et condition2 sont fausses suite du programme (exécuté que les conditions soient vraies ou fausses) 65

Conditions Exemple de condition : age = int(raw_input("veuillez saisir votre âge : ")) if age == 0 : print("vous êtes un nouveau-né.") elif age < 18 : print("vous êtes un enfant.") elif age >= 65 : print("vous êtes une personne âgée.") else : print("vous êtes un adulte.") print("l'année prochaine vous aurez " + str(age + 1) + " ans.") 66

Conditions Les conditions peuvent être imbriquées : age = int(raw_input("veuillez saisir votre âge : ")) poids = float(raw_input("veuillez saisir votre poids : ")) if age == 0 : print("vous êtes un nouveau-né.") if poids > 10.0 : print("je pense qu'il y a une erreur sur le poids!") Les opérateurs and et or permettent de combiner plusieurs conditions entre elles if (age < 18) or (age > 65) : print("vous ne travaillez probablement pas.") 67

Boucles Une boucle permet d'exécuter plusieurs fois les mêmes commandes La boucle parcourt une liste for variable in liste : commande répétée plusieurs fois commande répétée plusieurs fois suite du programme (exécuté une seule fois) La liste peut être une variable, ou bien une liste d'indice générée avec la fonction range() range(4) => [0, 1, 2, 3] 68

Boucles Exemples animaux = ["éléphant", "biche", "rhinocéros", "brochet"] environnements = ["savane", "forêt", "savane", "rivière"] Afficher un animal par ligne for animal in animaux : print(animal) print("c'est fini!") Afficher un animal par ligne avec son numéro for i in range(len(animaux)) : print("numéro " + str(i) + " : " + animaux[i]) print("c'est fini!") Afficher un animal par ligne avec son environnement for i in range(len(animaux)) : print(animaux[i] + " dans la " + environnements[i]) 69

Boucles Boucles et conditions Il est possible de mélanger boucles et conditions La commande break permet d'interrompre la boucle Que fait le programme suivant? À quoi sert le break dans ce programme? sequence_nucléotidique = "ACGAC " for base in sequence_nucléotidique : if base == "T" : print("c'est un ADN!") break elif base == "U" : print("c'est un ARN!") break 70

Boucles Programme-type n 1 : compter les éléments d'une liste satisfaisant certains critères compteur = 0 for élément in liste : if élément satisfait la condition : compteur = compteur + 1 print(str(compteur) + " éléments trouvés") Exemple : compter les acides aminés aromatiques d'une protéine proteine = "MIWRAVHRF..." nb_aromatique = 0 for aa in proteine : if (aa == "F") or (aa == "Y") or (aa == "W") or (aa == "H"): nb_aromatique = nb_aromatique + 1 print(str(nb_aromatique) + " acides aminés aromatiques dans la protéine") 71

Boucles Programme-type n 2 : garder seulement les éléments d'une liste satisfaisant certains critères nouvelle_liste = [ ] for élément in liste : if élément satisfait la condition : nouvelle_liste.append(élément) print(nouvelle_liste) Exemple : garder seulement les nombres pairs nombres = [1, 4, 7, 8, 12, 15] nombres_pairs = [ ] for nombre in nombres : if nombre % 2 == 0 : nombres_pairs.append(nombre) print(nombres_pairs) 72

Boucles Programme-type n 3 : créer une nouvelle liste à partir d'une liste existante nouvelle_liste = [ ] for élément in liste : calculer nouvel_élément à partir de élément nouvelle_liste.append(nouvel_élément) print(nouvelle_liste) Exemple : mettre les noms d'animaux au pluriel animaux = ["girafe", "lion", "éléphant"] couples_danimaux = [ ] for animal in animaux : couples_danimaux.append("deux " + animal + "s") print(couples_danimaux) 73

Boucles Les programmes-types n 2 et 3 peuvent aussi s'appliquer à des chaînes de caractère Exemple : calculer un ADN complémentaire adn = "GCATTC..." adn_complementaire = "" # Chaîne vide for base in adn : if base == "A" : base_complementaire = "T" elif base == "T" : base_complementaire = "A" elif base == "C" : base_complementaire = "G" elif base == "G" : base_complementaire = "C" adn_complementaire = adn_complementaire + base_complementaire print(adn_complementaire) 74

Séquences biologiques en Python Le module BioPython permet de gérer les séquences biologiques Charger des séquences Depuis des fichiers FASTA Depuis Internet Effectuer la transcription et la traduction Effectuer des alignements Rechercher des motifs dans des séquences Etc. http://biopython.org 75

Séquences biologiques en Python Deux types de donnée pour les séquences en Python : Seq : une séquence anonyme (une suite de base / d'acide aminé) SeqRecord : une séquence nommé, incluant : La séquence proprement dite (un «Seq») Le nom du gène / de la protéine Le nom de l'espèce auquel cette séquence appartient L'identifiant de la séquence, SeqRecord : séquence nommée >sp P05231 IL6_HUMAN Interleukin-6 precursor (IL-6) - Homo sapiens (Human). MNSFSTSAFGPVAFSLGLLLVLPAAFPAPVPPGEDSKDVAAPHRQPLTSSERIDKQIRYI LDGISALRKETCNKSNMCESSKEALAENNLNLPKMAEKDGCFQSGFNEETCLVKIITGLL EFEVYLEYLQNRFESSEEQARAVQMSTKVLIQFLQKKAKNLDAITTPDPTTNASLLTKLQ AQNQWLQDMTTHLILRSFKEFLQSSLRALRQM Seq : séquence anonyme Un fichier FASTA correspond à un (ou plusieurs) SeqRecord 76

Séquences biologiques en Python Chaque séquence est associée à un alphabet Il y a des alphabets différents pour les ADN, les ARN et les protéines ADN : ATCG ARN : AUCG De plus, plusieurs alphabets sont disponibles pour un même type de séquence : ADN non-ambigu : ATCG ADN ambigu : ATCGRYWSMKHBVDN R = A ou G H = A, C ou T,... En général on travaille sur des séquences en alphabet non-ambigu Ces alphabets ont été standardisés par l'iupac (International Union of Pure and Applied Chemistry) 77

Séquences biologiques en Python Les alphabets IUPAC sont disponibles : IUPAC.unambiguous_dna IUPAC.unambiguous_rna IUPAC.ambiguous_dna IUPAC.ambiguous_rna IUPAC.protein Pour créer une séquence (anonyme) d'adn : adn = Seq("ATGC", IUPAC.unambiguous_dna) Pour charger une séquence (nommé) d'adn depuis un fichier FASTA : adn = read("fichier.fasta", format="fasta") (note : l'alphabet est déduit automatiquement en général) Pour obtenir la séquence anonyme (Seq) : adn_anonyme = adn.seq 78