TD 1 Biais de codons



Documents pareils
Initiation à la programmation en Python

Cours 3 : Python, les conditions

CHAPITRE 3 LA SYNTHESE DES PROTEINES

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

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

Licence Sciences et Technologies Examen janvier 2010

Projet de programmation (IK3) : TP n 1 Correction

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

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

Le prototype de la fonction main()

STAGE IREM 0- Premiers pas en Python

Les bases du langage Python

TP 1. Prise en main du langage Python

Représentation d un entier en base b

Comment reproduire les résultats de l article : POP-Java : Parallélisme et distribution orienté objet

1 Lecture de fichiers

Algorithmique I. Algorithmique I p.1/??

Initiation à l algorithmique

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

Découverte de Python

Introduction à MATLAB R

Chapitre 2 Devine mon nombre!

Java Licence Professionnelle CISII,

Conférence technique internationale de la FAO

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

Exonet : sauvegarde automatisée d une base de données

Algorithmique et Programmation, IMA

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Calculabilité Cours 3 : Problèmes non-calculables.

Cours de C. Petits secrets du C & programmation avancée. Sébastien Paumier

Présentation du langage et premières fonctions

TD de Biochimie 4 : Coloration.

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Cours 7 : Utilisation de modules sous python

Module http MMS AllMySMS.com Manuel d intégration

Les arbres binaires de recherche

L informatique en BCPST

TD3: tableaux avancées, première classe et chaînes

Master1 ère année. Réseaux avancés I. TP nº5 filière ISICG

Exercice sur les Dockers

L envoi d un formulaire par courriel. Configuration requise Mail Texte Mail HTML Check-list

LES DECIMALES DE π BERNARD EGGER

Introduction aux bases de données: application en biologie

Services bancaires par Internet aux entreprises. Guide pratique pour : Rapports de solde Version

PPe jaune. Domingues Almeida Nicolas Collin Leo Ferdioui Lamia Sannier Vincent [PPE PROJET FTP]

MIS 102 Initiation à l Informatique

1 Recherche en table par balayage

2 Comment fonctionne un ordinateur, dans les grandes lignes

Saisie sur un ordinateur OS/390 Ici sur jedi.informatik.uni-leipzig.de ou

Fiche technique logiciel #SAMBC (Windows 2000 / XP / Vista)

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

WDpStats Procédure d installation

Cours d initiation à la programmation en C++ Johann Cuenin

AWS avancé. Surveiller votre utilisation d EC2

COMMENT TROUVER VOS FUTURS CLIENTS À L INTERNATIONAL? 05/03/2015 Creditsafe France

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

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

TP JAVASCRIPT OMI4 TP5 SRC

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

Utilisation d objets : String et ArrayList

TP 4 de familiarisation avec Unix

Client windows Nagios Event Log

MESURES PHYSIQUES 1 è année Informatique Scientifique version 2.2. Python 3. Exercices corrigés

SIP. Plan. Introduction Architecture SIP Messages SIP Exemples d établissement de session Enregistrement

USTL - Licence ST-A 1ère année Initiation à la programmation TP 1

1 Description générale de VISFIELD

Services bancaires par Internet aux entreprises. Guide pratique pour : Transfert de fichiers Version

Séance 0 : Linux + Octave : le compromis idéal

Premiers Pas en Programmation Objet : les Classes et les Objets

I. Introduction aux fonctions : les fonctions standards

Quels sont les espaces disponibles sur l ordinateur pour stocker ses documents et comment accéder facilement au dossier «My Documents»?

MYRIAD. l ADN isolé n est à présent plus brevetable!

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

d un site web universitas friburgensis Objectifs de l atelier

Compilation (INF 564)

Cours d algorithmique pour la classe de 2nde

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server

Atelier Le gestionnaire de fichier

Fiche technique logiciel #VDJ (Windows 2000 / XP / Vista)

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

Le service FTP. M.BOUABID, Page 1 sur 5

SERVEUR WEB. Christian Dupaty BTS Systèmes Numériques Lycée Fourcade Gardanne Académie d Aix Marseille

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

Initiation à Excel. Frédéric Gava (MCF)

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Module 16 : Les fonctions de recherche et de référence

Installer Joomla Pearson France Joomla! Le guide officiel Jennifer Marriott, Elin Waring

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Installation d ORACLE 10g sous Debian Etch

Python - introduction à la programmation et calcul scientifique

Petit guide pour l installation de CVW sous Linux

Cours 1. I- Généralités sur R II- Les fonctions de R et autres objets III-Les vecteurs

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

France SMS+ MT Premium Description

Chapitre 1 I:\ Soyez courageux!

TRAVAUX PRATIQUES Programmation Système Langage C / Système UNIX. 2 e année Génie Informatique

Génétique et génomique Pierre Martin

Mon premier rpm. 7 juin Avant de commencer RPM URPMI RPMBUILD... 2

Transcription:

Module LV348 Version enseignant TD 1 page 1/7 TD 1 Biais de codons Revu dernièrement par Mathilde Carpentier, Cyril Gallut et Joël Pothier Version du 15 janvier 2014 L objectif de ce TP est de prendre en main le langage python et de revoir quelques notions fondamentales sur l ADN (complémentarité, phase de lecture, traduction et usage du code génétique. La question biologique posée porte sur l usage du code génétique. 1 Les données Nous allons travailler sur le génome complet de la bactérie Escherichia coli. Nous allons télécharger son génome complet sur le site ftp du NCBI ftp://ftp.ncbi.nlm.nih.gov/. Ce serveur propose les génomes de très nombreux organismes. Il y a en effet maintenant environ 1000 génomes complets séquencés, et des millions de séquences dispersées. Différents fichiers sont proposés pour chaque génome, ils correspondent à différents formats des données. Nous allons utiliser le fichier.fna, c est-à-dire la séquence nucléique du génome complet au format fasta. L adresse du fichier est : ftp://ftp.ncbi.nlm.nih.gov/genomes/bacteria/escherichia_coli_ K_12_substr MG1655/NC_000913.fna 1 Le format fasta est un format texte pour les séquences nucléiques (ADN) ou protéiques. Une séquence de ce format comporte une ligne de description commençant par un ">" puis les lignes de la séquence. La fin d une séquence est atteinte lorsque la fin du fichier est atteinte ou lorsqu une autre séquence commence, c est-à-dire que l on rencontre une ligne commençant par un ">". La ligne de description comporte un identifiant de la séquence dans la banque d où elle provient. Exemple de séquence au format fasta : >NC_010473 :163816-163951 small RNA [gene=tff] [locus_tag=ecdh10b_0148] CGGACTTCCGATCCATTTCGTATACACAGACTGGACGGAAGCGACAATCTCACTTTGTGTAACAACACAC ACGTATCGGCACATATTCCGGGGTGCCCTTTGGGGTCGGTAATATGGGATACGTGGAGGCATAACC 2 Exercices Tous les exercices sont à faire en python. 2.1 Lecture des fichiers Ecrivez une fonction python permettant de lire un fichier fasta ne contenant qu une séquence et qui retourne la séquence lue sous la forme d une chaî,e de caractères.. Présentation de python : fonction, for, ouverture, fermeture et lecture de fichier. 1. Il vaut mieux ne pas prendre...escherichia_coli_k_12_substr DH10B/NC_010473.fna car elle contient un Y

Module LV348 Version enseignant TD 1 page 2/7 1 # lecture d un fichier au format fasta 2 # version 1: la sequence est 3 #recuperee sous la forme d une chaine de caracteres 4 #------------------------------------------------------------------------ 5 def readfasta(file): 6 infile=open(file, r ) 7 seq="" 8 name = "" 9 tmp=infile.readlines() 10 infile.close() 11 12 #name =tmp[0][1:-1] # pour eliminer le > du debut et le \n de fin 13 for x in tmp[1:] : 14 seq=seq+x[:-1] 15 16 #return (name,seq) # la fonction retourne le nom et la sequence 17 return seq # la fonction retourne la sequence./code/lecture.py 2.2 Le brin complémentaire Comme vous l avez peut être remarqué, il n y a qu un seul des deux brins d ADN dans le fichier fasta. Ecrivez une fonction python retournant le brin complémentaire d une séquence nucléique donnée en argument. Python : while et dictionnaire Bio : complémentarité des brins 1 # donne le complementaire inverse de la sequence seq 2 def complement(seq): 3 compl = { A : T, C : G, G : C, T : A } 4 cseq= 5 i = len(seq) -1 6 while i >= 0 : 7 cseq = cseq + compl.get(seq[i], N ) 8 i -= 1 9 return cseq./code/complementaire.py 2.3 Détection des CDS Ecrivez une fonction python qui retourne la liste de toutes les sous séquences commençant par le codon "start" et se terminant par un codon "stop" en phase (n oubliez pas le brin complémentaire). Ces séquences sont nommées CDS (Coding sequences). Note : Si plusieurs start sont trouvés dans la même phase de lecture avant un stop, le CDS débute au premier start ; les CDS peuvent se chevaucher (sur différentes phases, et éventuellement sur le brin d ADN complémentaire),

Module LV348 Version enseignant TD 1 page 3/7 Encore des dico, introduction des autres types énumérés : liste et tuple. Question plus bio : les phases de lectures, détection des CDS. Pour info, les ORFs sont les séquences entre 2 STOP en phase et non un START et un STOP C est le premier algo un peu compliqué, bien y réfléchir. 1 # Retourne la liste des orf de la seq 2 # 3 def findorf(seq): 4 start = ("ATG") 5 stop = ("TAA","TAG","TGA") 6 startlist = [-1,-1,-1] 7 orflist = [] 8 for i in range(len(seq)-2): 9 if seq[i:i+3] in start: 10 if startlist[i%3] == -1: 11 startlist[i%3] = i 12 elif seq[i:i+3] in stop: 13 if startlist[i%3]!= -1: 14 # Attention n inclus pas le stop 15 orflist.append(seq[startlist[i%3]:i]) 16 startlist[i%3] = -1 17 return orflist./code/orf.py 2.4 Traduction Ecrivez une fonction python qui à partir d une séquence nucléique retourne la séquence protéique correspondante (en utilisant le code génétique à une lettre qui vous a été donné et qui se trouve au lien suivant : http://www.snv.jussieu.fr/bmedia/codegenet/codegenet.htm). Cette fonction ne nous servira pas vraiment mais elle permet d introduire le code génétique et de parler de redondance. 1 # effectue la traduction de la sequence seq 2 def traduction(seq): 3 code = {"TTT":"F","TTC":"F","TTA":"L","TTG":"L","TCT":"S","TCC":"S", 4 "TCA":"S","TCG":"S","TAT":"Y","TAC":"Y","TAA":"*","TAG":"*", 5 "TGT":"C","TGC":"C","TGA":"*","TGG":"W","CTT":"L","CTC":"L", 6 "CTA":"L","CTG":"L","CCT":"P","CCC":"P","CCA":"P","CCG":"P", 7 "CAT":"H","CAC":"H","CAA":"Q","CAG":"Q","CGT":"R","CGC":"R", 8 "CGA":"R","CGG":"R","ATT":"I","ATC":"I","ATA":"I","ATG":"M", 9 "ACT":"T","ACC":"T","ACA":"T","ACG":"T","AAT":"N","AAC":"N", 10 "AAA":"K","AAG":"K","AGT":"S","AGC":"S","AGA":"R","AGG":"R", 11 "GTT":"V","GTC":"V","GTA":"V","GTG":"V","GCT":"A","GCC":"A", 12 "GCA":"A","GCG":"A","GAT":"D","GAC":"D","GAA":"E","GAG":"E", 13 "GGT":"G","GGC":"G","GGA":"G","GGG":"G"} 14 tradseq = 15 for i in range(0,len(seq)-2,3): 16 tradseq += code.get(seq[i:i+3], X )

Module LV348 Version enseignant TD 1 page 4/7 17 return tradseq./code/traduction.py 2.5 Usage des codons Ecrivez un programme python qui calcule la fréquence d utilisation de chaque codon pour chaque acide aminé d une liste de séquences nucléiques donnée en argument. Appliquez là aux CDS détectées. Par exemple, l usage des codons pour les cds détectées sur le génome d E. coli que vous avez téléchargé est A GCA: 22.47% GCC: 26.81% GCG: 33.03% GCT: 17.70% 1 # calcul la frequence de chaque codon par acide amine 2 def calcul_freq_codon_aa(lesseq): 3 freq_par_aa = { 4 "A":{"GCT":0,"GCC":0,"GCA":0,"GCG":0}, 5 "C":{"TGT":0,"TGC":0}, 6 "D":{"GAT":0,"GAC":0}, 7 "E":{"GAA":0,"GAG":0}, 8 "F":{"TTT":0,"TTC":0}, 9 "G":{"GGT":0,"GGC":0,"GGA":0,"GGG":0}, 10 "H":{"CAT":0,"CAC":0}, 11 "I":{"ATT":0,"ATC":0,"ATA":0}, 12 "K":{"AAA":0,"AAG":0}, 13 "L":{"CTT":0,"CTC":0,"CTA":0,"CTG":0,"TTA":0,"TTG":0}, 14 "M":{"ATG":0}, 15 "N":{"AAT":0,"AAC":0}, 16 "P":{"CCT":0,"CCC":0,"CCA":0,"CCG":0}, 17 "Q":{"CAA":0,"CAG":0}, 18 "R":{"AGA":0,"AGG":0}, 19 "R":{"CGT":0,"CGC":0,"CGA":0,"CGG":0}, 20 "S":{"TCT":0,"TCC":0,"TCA":0,"TCG":0,"AGT":0,"AGC":0}, 21 "T":{"ACT":0,"ACC":0,"ACA":0,"ACG":0}, 22 "V":{"GTT":0,"GTC":0,"GTA":0,"GTG":0}, 23 "W":{"TGG":0}, 24 "Y":{"TAT":0,"TAC":0}} 25 #1) compter les codons 26 codon={} 27 for s in lesseq: 28 for i in range(0,len(s)-2,3): 29 if s[i:i+3] in codon : 30 codon[s[i:i+3]]+=1 31 else : 32 codon[s[i:i+3]]=1 33 #2) Calculer les frequences par aa 34 for aa in freq_par_aa :

Module LV348 Version enseignant TD 1 page 5/7 35 freqtotal = 0.0 36 # calcul la frequence cumulee des codon par aa pour normaliser 37 for cod in freq_par_aa[aa] : 38 freqtotal += codon[cod] 39 # calcul la frequence de chaque codon par acide amine 40 for cod in freq_par_aa[aa] : 41 freq_par_aa[aa][cod] = (codon[cod]/freqtotal)*100 42 return freq_par_aa./code/usage_codon.py 3 Bonus Ecrivez un programme python qui calcul le N c (effective number of codons) pour les CDS détectés. Ecrivez un programme python qui calcul le CAI (codon adaptation index) pour les CDS détectés. Comparez les valeurs. 3.1 Conclusion Observez la distribution globale des codons, la composition globale des séquences en acides aminés (faire des graphiques à l aide de gnuplot ou d un tableur). Sachant que le code génétique est redondant, nous voulons analyser si les codons codant pour un même acide aminé sont utilisés de manière aléatoire ou non. Calculez aussi l usage global des codons pour chaque acide aminé, c est-à-dire le pourcentage de chaque codon possible pour un acide aminé. L usage des codons vous semble-t-il uniforme pour chaque acides aminé? Question subsidiaire : comment vérifieriez-vous statistiquement cette hypothèse de non-uniformité? Faites le si possible. Pour conclure, il est conseillé de lire la page : http://fr.wikipedia.org/wiki/biais_ d usage_du_code Toutes les fonctions python sont dans TD1_Corrections.py dans le répertoire code 1 #!/usr/bin/python 2 # -*- coding: utf-8 -*- 3 4 import getopt 5 import sys # permet la lecture des arguments de la ligne de commande. 6 import math # permet d utiliser les fonctions math (pow) 7 8 from ORF import * 9 from complementaire import * 10 from compoaa import * 11 from compte_codon import * 12 from lecture import * 13 from traduction import * 14 from usage_codon import * 15

Module LV348 Version enseignant TD 1 page 6/7 16 # ############################################################################### 17 ################################### main ####################################### 18 def main(): 19 20 opt, args = getopt.getopt(sys.argv[1:], "h", ["help"]) 21 # for o, a in opt: 22 # if o in ( -h, --help ): 23 # print aide 24 # return 0 25 if len(sys.argv) <= 1: 26 print "Veuillez donner un fichier fasta en entree" 27 return 0 28 29 # if len(sys.argv) == 1: 30 # print "Bienvenue. Veuillez indiquer le nom d une banque de sã c quences au format FASTA (nom du fichier ) :" 31 # banque_nom = raw_input() 32 # else: 33 # banque_nom = sys.argv[1] 34 35 infile = sys.argv[1] # recupere le nom du fichier a partir de la ligne de commande 36 37 #QUESTION 1 38 ns = readfasta(infile) # lit la sequence dans le fichier fasta 39 #QUESTION 2 40 c_ns = complement(ns) # calcul la sequence inverse complementaire 41 #QUESTION 3 42 orfs = findorf(ns) # recherche les orfs dans la sequence 43 orfs.extend(findorf(c_ns)) # recherche les orfs dans la sequence inverse complementaire 44 print "Nombre d orfs : direct, inverse" 45 print len(orfs) 46 #print orfs 47 #QUESTION 4 48 print "Exemple d une orf traduite" 49 print traduction(orfs[1]) 50 #QUESTION 5 51 freq_codon_aa=calcul_freq_codon_aa(orfs) 52 print 53 54 55 print "Usage des codons par acide amine :" 56 for aa in sorted(freq_codon_aa.keys()): 57 tmp = 58 for codon in sorted(freq_codon_aa[aa]): 59 tmp = tmp + %s: %.2f%s % (codon, freq_codon_aa[aa][codon], % ) 60 print aa, tmp 61 print 62 63 64 if name == " main ":

Module LV348 Version enseignant TD 1 page 7/7 65 sys.exit(main())./code/td1_correctionexos.py Il y a aussi des calculs de CAI dans /code/cai.py.