Enoncé et réponses

publicité
Contrôle Continu de LV348
[durée: 2h00 - tous les documents sont autorisés]
Vous disposez dans votre répertoire du génome d’Eschericchia coli K12 au format genbank
dans le fichier Esco.gbk et des séquences des CDS au format fasta dans le fichier
Esco.cds. Vous disposez également du fichier fonctionsCC.py qui contient une fonction
qui à partir du nom d’un fichier de séquences au format fasta vous retourne une liste de
chaînes de caractères qui correspondent chacune à une séquence.
Pour chaque exercice, vous devrez écrire sur la copie les commandes utilisées (ou le code
Python), les résultats et les interprétations.
Exercice 1 [Python conseillé]
A partir du fichier Esco.cds, calculer le nombre de bases codantes dans le génome d’E. coli.
Sachant que la longueur du génome d’E. coli est de 4639675 pb, combien de pourcents de ce
génome sont codants ?
Dans le fichier fonctionsCC.py, on dispose de la fonction readFastas et on
ajoute la fonction lgCod qui à partir d’une liste de chaînes de caractères
retourne la somme des longueurs des chaînes .
def lgCod (seqs) :
l=0
for i in seqs:
l+=len(i)
return l
Puis, dans l’interpréteur python on lit les CDS.
import fonctionsCC
from fonctionsCC import *
cds = readFastas("Esco.cds")
cds est une liste de chaînes de caractères (string), chaque string correspond
à la séquence d’un CDS. Il y avait un bug dans la fonction readFastas (on
n’ajoutait pas le dernier CDS à la liste). On calcule la longueur totale en
pairesde bases du génome recouvert par les séquences codantes en
T.S.V.P.
considérant que les CDS ne se chevauchent pas.
lgcds = lgCod(cds)
print lgcds
4088532 (sans bug) OU 4087845 (avec bug)
ce qui correspond à un pourcentage codant pour le génome de 88,1%. Ce
fort pourcentage de codant est associé à l’absence d’introns dans les génes
bactériens ainsi qu’à des régions intergéniques courtes.
Exercice 2 [AWK conseillé]
1) A partir du fichier Esco.gbk, extraire les lignes CDS et stocker dans un fichier tmp1
uniquement les informations correspondant à leur positions sur le génomes. (Attention de ne
pas tenir compte des pseudogènes en éliminant les CDS décrits avec des "join").
Vous devez obtenir un fichier tmp1 contenant les lignes suivantes :
190..255
337..2799
2801..3733
3734..5020
5234..5530
complement(5683..6459)
complement(6529..7959)
8238..9191
9306..9893
complement(9928..10494)
...
On sélectionne les lignes de description de CDS qui commencent par 5
espaces suivis de CDS (on garde la deuxième colonne de ces lignes
uniquement c’est-à-dire la partie description des coordonnées) et on fait un
filtre négatif pour enlever les lignes qui contiennent join.
awk '/^
CDS/ {print $2}' Esco.gbk | grep -v join > tmp1
2) A partir du fichier tmp1 récupérer ensuite dans un fichier tmp2 les coordonnées de début
et de fin de chaque CDS. Vous devez obtenir un fichier tmp2 contenant les lignes suivantes :
190 255
337 2799
2801 3733
…
awk -F '[.()]' '{if ( $0 ~ /^c/ ) {print $2, $4} else {print
$1, $3}}' tmp1 > tmp2
3) A partir du fichier tmp2 calculer la longueur moyenne des CDS et afficher le résultat .
.
awk 'BEGIN {l=0; n=0} {l+=$2-$1+1; n+=1} END{l=l/n; print l}' tmp2
Le résultat donne une longueur moyenne de 950.353 paires de bases soit un
peu moins de 1 Kb.
Exercice 3 [Python conseillé]
Certains acides-aminés peuvent être codés par plusieurs codons. Par exemple, la Proline peutêtre codée par CCT, CCA, CCC et CCG. Ces codons sont dits “synonymes”. On s'intéresse à
l'usage de ces codons synonymes chez E. coli.
1) Ecrire une fonction python dans fonctionsCC.py (compteCodon) permettant de
calculer le nombre total d'occurences de chacun des codons dans un ensemble de séquences
passé en argument. Recopier le code de la fonction sur votre copie.
def compteCodon(listSeq):
codons={}
for seq in listSeq:
l=len(seq)
for ii in range(0,l-2,3):
co=seq[ii:ii+3]
if codons.has_key(co):
codons[co]=codons[co]+1
else:
codons[co]=1
return codons
2) Ecrire un script python utilisant la fonction readFastas et compteCodon pour
analyser et afficher dans le terminal le nombre total d'occurences de chacun des codons.
Ecrire le code du script sur votre copie. On désire un affichage de la forme (l’ordre dans
lequel les codons apparaissent n’a pas d’importance) :
ACC 31903
ATG 37841
ACA 9596
AAA 45910
ATC 34311
....
#!/usr/bin/python
from fonctionsCC import *
allSeq=readFastas("Esco.cds")
codons=compteCodon(allSeq)
.
for cc in codons.keys():
print cc, codons[cc]
3) On s'intéresse uniquement aux codons synonymes de la Proline. Peut-on dire que ces 4
codons sont utilisés de façon aléatoire (c’est-à-dire sont équiprobables)? Justifier.
./script.py | grep “^CC” (optionnel)
CCT 9518
CCG 31657
CCC 7439
CCA 11488
Hypothèse: H0, utilisation alétoire des 4 codons synonymes. On fait un test de
rejet de cet hypothèse à l’aide d’un chi-deux de conformité.
Dans R,
chisq.test(c(9518,31657,7439,11488), p=c(0.25,0.25,0.25,0.25))
Chi-squared test for given probabilities
data: c(9518, 31657, 7439, 11488)
X-squared = 25091.23, df = 3, p-value < 2.2e-16
La différence est très significative (p-value proche de 0), dons on rejette H0
avec un risque très faible de se tromper. L'utilisation des codons synonymes
n'est pas aléatoire. Il y a des codons “préférés”.
4) Plusieurs hypothèses ont été proposées pour expliquer ce résultat. En vous basant sur
certaines caractéristiques génomiques vues en TD, comment expliquer l'écart entre les codons
CCC et CCG ? Faire un schéma si cela est nécessaire.
Effet de la réplication/désamination:
Les CDS ne sont pas également répartis entre les deux brins du
chromosome bactérien. Ils se situent en excès sur le brin matrice des
fragments d'Okasaki.
le brin matrice des fragments d'Okasaki est particulièrement riche en
guanines (relativement à sa richesse en cytosines). Une hypothèse est qu’il
est plus sensible à la désamination hydrolytique (plus souvent simple brin)
mais cette hypothèse à elle seule n’explique pas tout.
la troisième position des codons de la Proline étant synonyme, elle est
particuièrement sensible au biais mutationnels du brin sur lequel se situe le
CDS donc plus de codons synonymes finissant en G.
D’autres hypothèses pouvaient être avancées comme un effet transcription,
un effet associé à la disponibilité des ARNt, …
.
Téléchargement