Skip to content

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 des bases 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

    if "ATG" in ma_sequence
    
    Au début et à la fin
    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 : objet Seq
  • .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.