Skip to content

Commit 9074177

Browse files
committed
2 parents e1dd8fd + 1e7636f commit 9074177

2 files changed

Lines changed: 62 additions & 1 deletion

File tree

index.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -306,11 +306,15 @@ Les solutions des exercices seront mises en ligne le jeudi 4 juin 2020.
306306

307307
Souvenez-vous par ailleurs que vous aurez un QCM noté à faire après la séance du vendredi 5 juin 2020.
308308

309-
*Ajout du 09/0/6/2020* :
309+
*Ajout du 09/06/2020* :
310310

311311
- La [vidéo](https://www.youtube.com/watch?v=_YOTDfST7z0) de notre visio du 5 juin 2020 sur NumPy si vous souhaitez y revenir.
312312
- Lien vers le [QCM](https://moodlesupd.script.univ-paris-diderot.fr/mod/quiz/view.php?id=247229) à faire avant le 18 juin 2020.
313313

314+
*Ajout du 10/06/2020* :
315+
316+
- La [vidéo](https://youtu.be/IM7419iEpAA) de correction de l'exercice 13.6.3 comptage des mots de 2 lettres (avec des dictionnaires).
317+
314318
### Séance 6
315319

316320
Initialement prévue le Jeudi 26 mars : 9h - 12h
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
# Dictionnaire correspondance nucléotides (en majuscule car constante).
2+
NUCLEOTIDES_COMPL = {"A" : "T", "T" : "A", "G" : "C", "C" : "G"}
3+
4+
# Lecture des séquences du fichier multiFASTA.
5+
with open('S_cerevisiae_chromosomes.fna', 'r') as filin:
6+
# Dictionnaire - stockage séquences chromosomiques.
7+
chromosome = {}
8+
# Parcours fichier multiFASTA.
9+
for line in filin:
10+
# Ligne identifiant FASTA.
11+
if line.startswith('>'):
12+
# Conservation "BK*" uniquement.
13+
split_comment_line = line.strip().split(' ')
14+
chr_id = split_comment_line[0].lstrip('>')
15+
# Création clé dictionnaire.
16+
chromosome[chr_id] = ''
17+
else:
18+
# Ligne séquence FASTA, ajout séquence majuscule ds dictionnaire.
19+
chromosome[chr_id] += line.strip().upper()
20+
21+
# Ouverture lecture fichier GFF (https://fr.wikipedia.org/wiki/General_feature_format)
22+
# et du fichier de sortie multiFASTA.
23+
with open('S_cerevisiae_annotations.gff', 'r') as filin, \
24+
open('S_cerevisiae_cds.fasta', 'w') as filout:
25+
# Parcours fichier GFF.
26+
for line in filin:
27+
# Nettoyage retour à la ligne puis split() sur les tabulations.
28+
champs = line.strip().split("\t")
29+
# On évite les lignes de commentaire et on ne traite que les CDS.
30+
if not line.startswith("#") and champs[2] == 'CDS':
31+
# id du chromosome.
32+
chr_id = champs[0]
33+
# Attention, les listes Python commence à 0 !
34+
debut = int(champs[3]) - 1
35+
# Attention, dans les tranches, le 2ème élément n'est pas inclus !
36+
fin = int(champs[4])
37+
# Sens du brin.
38+
brin = champs[6]
39+
# Récupération de l'id de la CDS.
40+
attributs = champs[8].split(";")
41+
id_cds = attributs[0].split("=")[1]
42+
# Récupération de la séquence.
43+
sequence = chromosome[chr_id][debut:fin]
44+
# Traitement brin complémentaire.
45+
if brin == '-':
46+
seq_tmp = ''
47+
# Parcours de la séquence.
48+
for base in sequence:
49+
# On construit le brin complémentaire.
50+
seq_tmp += NUCLEOTIDES_COMPL[base]
51+
# Puis on l'inverse.
52+
sequence = seq_tmp[::-1]
53+
# Ecriture identifiant dans le fichier de sortie.
54+
filout.write("> {}\n".format(id_cds))
55+
# Ecriture séquence (60 nucléotides par ligne).
56+
for n in range(0, len(sequence), 60):
57+
filout.write("{}\n".format(sequence[n:n+60]))

0 commit comments

Comments
 (0)