Librairie contenant un ensemble d'objets et de fonctions dédiés à la manipulation des données de biologie moléculaire
Lecture et écriture
de fichiers (fasta/q, genbank…)Interrogation
directe desbases de données
(NCBI…)Lancement
simplifiéd'outils
usuels (Blast, Clustal…)
Importer les objets Biopython :
from Bio.Seq import Seq, SeqRecord # Objets Séquence
from Bio import SeqIO # Entrée Sortie Séquence
from Bio import AlignIO # Entrée/Sortie Alignements
Séquences#
Objet Seq
: séquence (suite de bases) + alphabet
L'alphabet définit le type de la séquence : ADN, Protéine, ARN...
from Bio import Seq
ma_sequence = Seq("ATTGCGCGAG")
Parfois utile de spécifier l'alphabet :
DNAAlphabet()
, ProteinAlphabet()
, RNAAlphabet()
from Bio.Seq import Seq
from Bio.Alphabet import ProteinAlphabet
ma_sequence = Seq("ACGHA", ProteinAlphabet())
L'object Seq
se comporte comme une chaîne de caractères (= liste non modifiable)
-
Ajout avec
+
ma_sequence = ma_sequence + "TATATA"
-
Test d'appartenance avec
in
Au début et à la finif "ATG" in ma_sequence
if ma_sequence.startswith("ATG") if ma_sequence.endswith("TAA")
-
Accès aux bases avec [ ] (index à partir de 0 !)
print(ma_sequence[0])
-
Longueur
len(ma_sequence)
-
Position d'une sous-chaîne
pos = ma_sequence.find("ATG")
-
Nombre d'occurrences d'un élément (sans superpositions)
nombre_a = ma_sequence.count("A")
Seq
fournit aussi des fonctions spécifiques :
-
Complément inverse
rev_compl = ma_sequence.reverse_complement()
-
Traduction
ma_proteine = ma_seq.translate()
SeqRecord#
Objet SeqRecord
: Seq
+ identifiants + description + informations optionnelles (annotations et features)
from Bio.SeqRecord import SeqRecord
Attributs :
.seq
: objetSeq
.id
: identifiant.name
: nom commun, par ex. accession.description
: la description.letter_annotations
: dictionnaire des annotations par lettre (qualités…).annotations
: dictionnaire des annotations (keywords, comments…).features
: liste de SeqFeature.dbxrefs
: cross-références aux bases de données
from Bio.Seq import Seq
from Bio.SeqRecord import SeqRecord
mon_record = SeqRecord(Seq("ATAGC"), id="mySeq", description="test")
mon_record.name = "maSeq"
SeqIO#
SeqIO
: Ensemble de fonctions pour la lecture et écriture de séquences sous différents formats (fasta/q, GenBank, EMBL…)
from Bio import SeqIO
Les fonctions de SeqIO
retournent des objets SeqRecord
Lecture#
-
Lire un fichier avec UNE séquence :
SeqIO.read(chemin/objet fichier, format)
from Bio import SeqIO mon_record = SeqIO.read("seq.fasta", "fasta")
Renvoie un
SeqRecord
-
Lire un fichier avec PLUSIEURS séquences :
SeqIO.parse(chemin/objet fichier, format)
Renvoie un itérateur de
SeqRecord
from Bio import SeqIO records = SeqIO.parse(chemin/objet fichier, format) for mon_record in records: print(mon_record.id)
Warning
attention : on ne peut parcourir l'itérateur qu'une seule fois
Récupérer toutes les séquences dans une liste :
liste_records = list(SeqIO.parse(chemin, format)
Récupérer toutes les séquences dans un dictionnaire dont les clés sont les id des SeqRecord :
dico_records = SeqIO.to_dict(SeqIO.parse(chemin, format))
Ecriture#
Obtenir une séquence dans un format choisi à partir d'un SeqRecord
:
record.format(format)
Écrire un SeqRecord
dans un fichier :
fd.write(record.format("fasta"))
Écrire un ensemble de SeqRecord
dans un fichier :
SeqIO.write(liste_seqrecords, chemin, format)
Conversion#
Convertir des séquences d'un format à un autre directement
SeqIO.convert(chemin_in, format_in, chemin_out, format_out)
(Renvoie le nombre de séquences converties)
Pratique 8#
On va travailler sur le fichier GenBank sequence.gb
Exercice A#
Créer un programme python exo8_a.py
qui prend en argument (paramètre) le fichier de séquences au format Genbank et qui crée un nouveau fichier avec les séquences converties au format fasta.
Exercice B#
Créer un programme python exo8_b.py
qui prend en argument (paramètre) le fichier de séquences au format Genbank et qui donne la longueur de chaque séquence en écrivant à l'écran pour chaque séquence : "La séquence ... a pour longueur ... "
Exercice C#
Créer un programme python exo8_c.py
qui prend en argument (paramètre) le fichier de séquences au format Genbank et qui crée deux nouveaux fichiers, un avec le complément inverse des séquences au format fasta et un avec les séquences traduites en séquences protéiques au format fasta.