biopython

Par mkurman · zorai

Boîte à outils complète de biologie moléculaire. À utiliser pour la manipulation de séquences, le parsing de fichiers (FASTA/GenBank/PDB), la phylogénétique et l'accès programmatique à NCBI/PubMed (Bio.Entrez). Idéal pour le traitement par lots, les pipelines bioinformatiques personnalisés et l'automatisation de BLAST. Pour des recherches rapides, utiliser gget ; pour une intégration multi-services, utiliser bioservices.

npx skills add https://github.com/mkurman/zorai --skill biopython

Biopython : Biologie Moléculaire Computationnelle en Python

Vue d'ensemble

Biopython est un ensemble complet d'outils Python librement disponibles pour le calcul biologique. Il fournit des fonctionnalités pour la manipulation de séquences, les entrées/sorties de fichiers, l'accès aux bases de données, la bioinformatique structurale, la phylogénétique et de nombreuses autres tâches de bioinformatique. La version actuelle est Biopython 1.85 (sortie janvier 2025), qui supporte Python 3 et requiert NumPy.

Quand utiliser cette compétence

Utilisez cette compétence pour :

  • Travailler avec des séquences biologiques (ADN, ARN ou protéine)
  • Lire, écrire ou convertir des formats de fichiers biologiques (FASTA, GenBank, FASTQ, PDB, mmCIF, etc.)
  • Accéder aux bases de données NCBI (GenBank, PubMed, Protein, Gene, etc.) via Entrez
  • Exécuter des recherches BLAST ou analyser les résultats BLAST
  • Effectuer des alignements de séquences (alignements pairés ou multiples)
  • Analyser les structures protéiques à partir de fichiers PDB
  • Créer, manipuler ou visualiser des arbres phylogénétiques
  • Trouver des motifs de séquences ou analyser les patrons de motifs
  • Calculer les statistiques de séquences (contenu GC, poids moléculaire, température de fusion, etc.)
  • Effectuer des tâches de bioinformatique structurale
  • Travailler avec des données de génétique des populations
  • Toute autre tâche de biologie moléculaire computationnelle

Capacités principales

Biopython est organisé en sous-paquets modulaires, chacun adressant des domaines spécifiques de la bioinformatique :

  1. Manipulation de séquences - Bio.Seq et Bio.SeqIO pour la manipulation de séquences et les entrées/sorties
  2. Analyse d'alignements - Bio.Align et Bio.AlignIO pour les alignements pairés et multiples
  3. Accès aux bases de données - Bio.Entrez pour l'accès programmatique aux bases de données NCBI
  4. Opérations BLAST - Bio.Blast pour exécuter et analyser les recherches BLAST
  5. Bioinformatique structurale - Bio.PDB pour travailler avec les structures protéiques 3D
  6. Phylogénétique - Bio.Phylo pour la manipulation et visualisation d'arbres phylogénétiques
  7. Fonctionnalités avancées - Motifs, génétique des populations, utilitaires de séquences, et plus

Installation et configuration

Installez Biopython en utilisant pip (requiert Python 3 et NumPy) :

uv pip install biopython

Pour l'accès aux bases de données NCBI, définissez toujours votre adresse e-mail (requise par NCBI) :

from Bio import Entrez
Entrez.email = "your.email@example.com"

# Optionnel : clé API pour des limites de débit plus élevées (10 req/s au lieu de 3 req/s)
Entrez.api_key = "your_api_key_here"

Utilisation de cette compétence

Cette compétence fournit une documentation complète organisée par domaine de fonctionnalité. Lors de la réalisation d'une tâche, consultez la documentation de référence pertinente :

1. Manipulation de séquences (Bio.Seq & Bio.SeqIO)

Référence : references/sequence_io.md

À utiliser pour :

  • Créer et manipuler des séquences biologiques
  • Lire et écrire des fichiers de séquences (FASTA, GenBank, FASTQ, etc.)
  • Convertir entre les formats de fichiers
  • Extraire des séquences de fichiers volumineux
  • Traduction de séquences, transcription et complémentaire inverse
  • Travailler avec des objets SeqRecord

Exemple rapide :

from Bio import SeqIO

# Lire les séquences depuis un fichier FASTA
for record in SeqIO.parse("sequences.fasta", "fasta"):
    print(f"{record.id}: {len(record.seq)} bp")

# Convertir GenBank en FASTA
SeqIO.convert("input.gb", "genbank", "output.fasta", "fasta")

2. Analyse d'alignements (Bio.Align & Bio.AlignIO)

Référence : references/alignment.md

À utiliser pour :

  • Alignement de séquences pairées (global et local)
  • Lire et écrire des alignements multiples de séquences
  • Utiliser les matrices de substitution (BLOSUM, PAM)
  • Calculer les statistiques d'alignement
  • Personnaliser les paramètres d'alignement

Exemple rapide :

from Bio import Align

# Alignement pairé
aligner = Align.PairwiseAligner()
aligner.mode = 'global'
alignments = aligner.align("ACCGGT", "ACGGT")
print(alignments[0])

3. Accès aux bases de données (Bio.Entrez)

Référence : references/databases.md

À utiliser pour :

  • Rechercher dans les bases de données NCBI (PubMed, GenBank, Protein, Gene, etc.)
  • Télécharger des séquences et des enregistrements
  • Récupérer des informations de publications
  • Trouver des enregistrements connexes entre les bases de données
  • Téléchargement en lot avec limitation de débit appropriée

Exemple rapide :

from Bio import Entrez
Entrez.email = "your.email@example.com"

# Rechercher PubMed
handle = Entrez.esearch(db="pubmed", term="biopython", retmax=10)
results = Entrez.read(handle)
handle.close()
print(f"Trouvé {results['Count']} résultats")

4. Opérations BLAST (Bio.Blast)

Référence : references/blast.md

À utiliser pour :

  • Exécuter des recherches BLAST via les services web NCBI
  • Exécuter des recherches BLAST locales
  • Analyser la sortie XML BLAST
  • Filtrer les résultats par E-value ou identité
  • Extraire les séquences de résultats

Exemple rapide :

from Bio.Blast import NCBIWWW, NCBIXML

# Exécuter la recherche BLAST
result_handle = NCBIWWW.qblast("blastn", "nt", "ATCGATCGATCG")
blast_record = NCBIXML.read(result_handle)

# Afficher les meilleurs résultats
for alignment in blast_record.alignments[:5]:
    print(f"{alignment.title}: E-value={alignment.hsps[0].expect}")

5. Bioinformatique structurale (Bio.PDB)

Référence : references/structure.md

À utiliser pour :

  • Analyser les fichiers de structure PDB et mmCIF
  • Naviguer dans la hiérarchie des structures protéiques (SMCRA : Structure/Model/Chain/Residue/Atom)
  • Calculer les distances, angles et dièdres
  • Attribution de structure secondaire (DSSP)
  • Superposition de structures et calcul RMSD
  • Extraire les séquences des structures

Exemple rapide :

from Bio.PDB import PDBParser

# Analyser la structure
parser = PDBParser(QUIET=True)
structure = parser.get_structure("1crn", "1crn.pdb")

# Calculer la distance entre carbones alpha
chain = structure[0]["A"]
distance = chain[10]["CA"] - chain[20]["CA"]
print(f"Distance : {distance:.2f} Å")

6. Phylogénétique (Bio.Phylo)

Référence : references/phylogenetics.md

À utiliser pour :

  • Lire et écrire des arbres phylogénétiques (Newick, NEXUS, phyloXML)
  • Construire des arbres à partir de matrices de distance ou d'alignements
  • Manipulation d'arbres (élagage, réenracinement, échellonnage)
  • Calculer les distances phylogénétiques
  • Créer des arbres consensus
  • Visualiser les arbres

Exemple rapide :

from Bio import Phylo

# Lire et visualiser l'arbre
tree = Phylo.read("tree.nwk", "newick")
Phylo.draw_ascii(tree)

# Calculer la distance
distance = tree.distance("Species_A", "Species_B")
print(f"Distance : {distance:.3f}")

7. Fonctionnalités avancées

Référence : references/advanced.md

À utiliser pour :

  • Motifs de séquences (Bio.motifs) - Trouver et analyser les patrons de motifs
  • Génétique des populations (Bio.PopGen) - Fichiers GenePop, calculs Fst, tests Hardy-Weinberg
  • Utilitaires de séquences (Bio.SeqUtils) - Contenu GC, température de fusion, poids moléculaire, analyse protéique
  • Analyse de restriction (Bio.Restriction) - Trouver les sites d'enzymes de restriction
  • Clustering (Bio.Cluster) - Clustering K-means et hiérarchique
  • Diagrammes de génomes (GenomeDiagram) - Visualiser les caractéristiques génomiques

Exemple rapide :

from Bio.SeqUtils import gc_fraction, molecular_weight
from Bio.Seq import Seq

seq = Seq("ATCGATCGATCG")
print(f"Contenu GC : {gc_fraction(seq):.2%}")
print(f"Poids moléculaire : {molecular_weight(seq, seq_type='DNA'):.2f} g/mol")

Directives générales de flux de travail

Lire la documentation

Lorsqu'un utilisateur pose une question sur une tâche Biopython spécifique :

  1. Identifier le module pertinent en fonction de la description de la tâche
  2. Lire le fichier de référence approprié en utilisant l'outil Read
  3. Extraire les patrons de code pertinents et les adapter aux besoins spécifiques de l'utilisateur
  4. Combiner plusieurs modules lorsque la tâche l'exige

Exemples de patrons de recherche pour les fichiers de référence :

# Trouver des informations sur des fonctions spécifiques
grep -n "SeqIO.parse" references/sequence_io.md

# Trouver des exemples de tâches spécifiques
grep -n "BLAST" references/blast.md

# Trouver des informations sur des concepts spécifiques
grep -n "alignment" references/alignment.md

Écrire du code Biopython

Suivez ces principes lors de l'écriture de code Biopython :

  1. Importer les modules explicitement

    from Bio import SeqIO, Entrez
    from Bio.Seq import Seq
  2. Définir l'email Entrez lors de l'utilisation des bases de données NCBI

    Entrez.email = "your.email@example.com"
  3. Utiliser les formats de fichiers appropriés - Vérifier quel format convient le mieux à la tâche

    # Formats courants : "fasta", "genbank", "fastq", "clustal", "phylip"
  4. Gérer les fichiers correctement - Fermer les handles après utilisation ou utiliser les gestionnaires de contexte

    with open("file.fasta") as handle:
        records = SeqIO.parse(handle, "fasta")
  5. Utiliser les itérateurs pour les fichiers volumineux - Éviter de charger tout en mémoire

    for record in SeqIO.parse("large_file.fasta", "fasta"):
        # Traiter un enregistrement à la fois
  6. Gérer les erreurs gracieusement - Les opérations réseau et l'analyse de fichiers peuvent échouer

    try:
        handle = Entrez.efetch(db="nucleotide", id=accession)
    except HTTPError as e:
        print(f"Erreur : {e}")

Patrons courants

Patron 1 : Récupérer une séquence depuis GenBank

from Bio import Entrez, SeqIO

Entrez.email = "your.email@example.com"

# Récupérer la séquence
handle = Entrez.efetch(db="nucleotide", id="EU490707", rettype="gb", retmode="text")
record = SeqIO.read(handle, "genbank")
handle.close()

print(f"Description : {record.description}")
print(f"Longueur de la séquence : {len(record.seq)}")

Patron 2 : Pipeline d'analyse de séquences

from Bio import SeqIO
from Bio.SeqUtils import gc_fraction

for record in SeqIO.parse("sequences.fasta", "fasta"):
    # Calculer les statistiques
    gc = gc_fraction(record.seq)
    length = len(record.seq)

    # Trouver les ORF, traduire, etc.
    protein = record.seq.translate()

    print(f"{record.id}: {length} bp, GC={gc:.2%}")

Patron 3 : BLAST et récupération des meilleurs résultats

from Bio.Blast import NCBIWWW, NCBIXML
from Bio import Entrez, SeqIO

Entrez.email = "your.email@example.com"

# Exécuter BLAST
result_handle = NCBIWWW.qblast("blastn", "nt", sequence)
blast_record = NCBIXML.read(result_handle)

# Obtenir les numéros d'accession des meilleurs résultats
accessions = [aln.accession for aln in blast_record.alignments[:5]]

# Récupérer les séquences
for acc in accessions:
    handle = Entrez.efetch(db="nucleotide", id=acc, rettype="fasta", retmode="text")
    record = SeqIO.read(handle, "fasta")
    handle.close()
    print(f">{record.description}")

Patron 4 : Construire un arbre phylogénétique à partir de séquences

from Bio import AlignIO, Phylo
from Bio.Phylo.TreeConstruction import DistanceCalculator, DistanceTreeConstructor

# Lire l'alignement
alignment = AlignIO.read("alignment.fasta", "fasta")

# Calculer les distances
calculator = DistanceCalculator("identity")
dm = calculator.get_distance(alignment)

# Construire l'arbre
constructor = DistanceTreeConstructor()
tree = constructor.nj(dm)

# Visualiser
Phylo.draw_ascii(tree)

Bonnes pratiques

  1. Toujours lire la documentation de référence pertinente avant d'écrire du code
  2. Utiliser grep pour rechercher dans les fichiers de référence des fonctions ou exemples spécifiques
  3. Valider les formats de fichiers avant l'analyse
  4. Gérer les données manquantes gracieusement - Tous les enregistrements n'ont pas tous les champs
  5. Mettre en cache les données téléchargées - Ne pas télécharger les mêmes séquences à plusieurs reprises
  6. Respecter les limites de débit NCBI - Utiliser les clés API et les délais appropriés
  7. Tester avec de petits jeux de données avant de traiter les fichiers volumineux
  8. Maintenir Biopython à jour pour obtenir les dernières fonctionnalités et corrections de bugs
  9. Utiliser les tables de codes génétiques appropriées pour la traduction
  10. Documenter les paramètres d'analyse pour la reproductibilité

Résolution des problèmes courants

Problème : « No handlers could be found for logger 'Bio.Entrez' »

Solution : C'est juste un avertissement. Définir Entrez.email pour le supprimer.

Problème : « HTTP Error 400 » depuis NCBI

Solution : Vérifier que les IDs/numéros d'accession sont valides et correctement formatés.

Problème : « ValueError: EOF » lors de l'analyse de fichiers

Solution : Vérifier que le format du fichier correspond à la chaîne de format spécifiée.

Problème : L'alignement échoue avec « sequences are not the same length »

Solution : S'assurer que les séquences sont alignées avant d'utiliser AlignIO ou MultipleSeqAlignment.

Problème : Les recherches BLAST sont lentes

Solution : Utiliser BLAST local pour les recherches à grande échelle, ou mettre en cache les résultats.

Problème : Avertissements de l'analyseur PDB

Solution : Utiliser PDBParser(QUIET=True) pour supprimer les avertissements, ou investiguer la qualité de la structure.

Ressources supplémentaires

Référence rapide

Pour localiser les informations dans les fichiers de référence, utilisez ces patrons de recherche :

# Rechercher des fonctions spécifiques
grep -n "function_name" references/*.md

# Trouver des exemples de tâches spécifiques
grep -n "example" references/sequence_io.md

# Trouver toutes les occurrences d'un module
grep -n "Bio.Seq" references/*.md

Résumé

Biopython fournit des outils complets pour la biologie moléculaire computationnelle. Lors de l'utilisation de cette compétence :

  1. Identifier le domaine de la tâche (séquences, alignements, bases de données, BLAST, structures, phylogénétique ou avancé)
  2. Consulter le fichier de référence approprié dans le répertoire references/
  3. Adapter les exemples de code au cas d'usage spécifique
  4. Combiner plusieurs modules si nécessaire pour les flux de travail complexes
  5. Suivre les bonnes pratiques pour la gestion des fichiers, la vérification des erreurs et la gestion des données

La documentation de référence modulaire assure des informations détaillées et consultables pour chaque capacité Biopython majeure.

Skills similaires