scikit-bio

Par mkurman · zorai

Boîte à outils pour données biologiques. Analyse de séquences, alignements, arbres phylogénétiques, métriques de diversité (alpha/bêta, UniFrac), ordination (PCoA), PERMANOVA, I/O FASTA/Newick, pour l'analyse du microbiome.

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

scikit-bio

Aperçu

scikit-bio est une bibliothèque Python complète pour travailler avec des données biologiques. Utilisez cette compétence pour des analyses bioinformatiques couvrant la manipulation de séquences, l'alignement, la phylogénétique, l'écologie microbienne et les statistiques multivariées.

Quand utiliser cette compétence

Cette compétence doit être utilisée quand l'utilisateur :

  • Travaille avec des séquences biologiques (ADN, ARN, protéine)
  • A besoin de lire/écrire des formats de fichiers biologiques (FASTA, FASTQ, GenBank, Newick, BIOM, etc.)
  • Effectue des alignements de séquences ou recherche des motifs
  • Construit ou analyse des arbres phylogénétiques
  • Calcule des métriques de diversité (diversité alpha/bêta, distances UniFrac)
  • Effectue une analyse d'ordination (PCoA, CCA, RDA)
  • Lance des tests statistiques sur des données biologiques/écologiques (PERMANOVA, ANOSIM, Mantel)
  • Analyse des données de microbiome ou d'écologie communautaire
  • Travaille avec des embeddings protéiques provenant de modèles de langage
  • A besoin de manipuler des tables de données biologiques

Capacités fondamentales

1. Manipulation de séquences

Travaillez avec des séquences biologiques en utilisant des classes spécialisées pour les données ADN, ARN et protéiques.

Opérations clés :

  • Lire/écrire des séquences à partir de formats FASTA, FASTQ, GenBank, EMBL
  • Découpage, concaténation et recherche de séquences
  • Complément inverse, transcription (ADN→ARN) et traduction (ARN→protéine)
  • Trouver des motifs et des modèles en utilisant regex
  • Calculer des distances (Hamming, basées sur k-mers)
  • Gérer les scores de qualité et les métadonnées de séquence

Modèles courants :

import skbio

# Lire les séquences à partir d'un fichier
seq = skbio.DNA.read('input.fasta')

# Opérations sur les séquences
rc = seq.reverse_complement()
rna = seq.transcribe()
protein = rna.translate()

# Trouver des motifs
motif_positions = seq.find_with_regex('ATG[ACGT]{3}')

# Vérifier les propriétés
has_degens = seq.has_degenerates()
seq_no_gaps = seq.degap()

Notes importantes :

  • Utilisez les classes DNA, RNA, Protein pour les séquences avec validation
  • Utilisez la classe Sequence pour les séquences génériques sans restrictions d'alphabet
  • Les scores de qualité sont chargés automatiquement à partir des fichiers FASTQ dans les métadonnées positionnelles
  • Types de métadonnées : au niveau de la séquence (ID, description), positionnel (par base), intervalle (régions/caractéristiques)

2. Alignement de séquences

Effectuez des alignements de séquences par paires et multiples en utilisant des algorithmes de programmation dynamique.

Capacités clés :

  • Alignement global (Needleman-Wunsch avec variante semi-globale)
  • Alignement local (Smith-Waterman)
  • Schémas de notation configurables (correspondance/non-correspondance, pénalités de gaps, matrices de substitution)
  • Conversion de chaînes CIGAR
  • Stockage et manipulation d'alignements multiples avec TabularMSA

Modèles courants :

from skbio.alignment import local_pairwise_align_ssw, TabularMSA

# Alignement par paires
alignment = local_pairwise_align_ssw(seq1, seq2)

# Accéder aux séquences alignées
msa = alignment.aligned_sequences

# Lire l'alignement multiple à partir d'un fichier
msa = TabularMSA.read('alignment.fasta', constructor=skbio.DNA)

# Calculer le consensus
consensus = msa.consensus()

Notes importantes :

  • Utilisez local_pairwise_align_ssw pour les alignements locaux (plus rapide, basé sur SSW)
  • Utilisez StripedSmithWaterman pour les alignements de protéines
  • Les pénalités de gaps affines sont recommandées pour les séquences biologiques
  • Peut convertir entre les formats d'alignement scikit-bio, BioPython et Biotite

3. Arbres phylogénétiques

Construisez, manipulez et analysez des arbres phylogénétiques représentant les relations évolutives.

Capacités clés :

  • Construction d'arbres à partir de matrices de distance (UPGMA, WPGMA, Neighbor Joining, GME, BME)
  • Manipulation d'arbres (élagage, réenracinement, traversée)
  • Calculs de distances (patristic, cophenetic, Robinson-Foulds)
  • Visualisation ASCII
  • I/O en format Newick

Modèles courants :

from skbio import TreeNode
from skbio.tree import nj

# Lire l'arbre à partir d'un fichier
tree = TreeNode.read('tree.nwk')

# Construire l'arbre à partir d'une matrice de distance
tree = nj(distance_matrix)

# Opérations sur l'arbre
subtree = tree.shear(['taxon1', 'taxon2', 'taxon3'])
tips = [node for node in tree.tips()]
lca = tree.lowest_common_ancestor(['taxon1', 'taxon2'])

# Calculer les distances
patristic_dist = tree.find('taxon1').distance(tree.find('taxon2'))
cophenetic_matrix = tree.cophenetic_matrix()

# Comparer les arbres
rf_distance = tree.robinson_foulds(other_tree)

Notes importantes :

  • Utilisez nj() pour neighbor joining (méthode phylogénétique classique)
  • Utilisez upgma() pour UPGMA (suppose une horloge moléculaire)
  • GME et BME sont très évolutifs pour les grands arbres
  • Les arbres peuvent être enracinés ou non enracinés ; certaines métriques nécessitent un enracinement spécifique

4. Analyse de diversité

Calculez les métriques de diversité alpha et bêta pour l'écologie microbienne et l'analyse communautaire.

Capacités clés :

  • Diversité alpha : richesse, entropie de Shannon, indice de Simpson, Faith's PD, équitabilité de Pielou
  • Diversité bêta : Bray-Curtis, Jaccard, UniFrac pondéré/non pondéré, distances euclidiennes
  • Métriques de diversité phylogénétique (nécessitent l'entrée d'un arbre)
  • Raréfaction et sous-échantillonnage
  • Intégration avec l'ordination et les tests statistiques

Modèles courants :

from skbio.diversity import alpha_diversity, beta_diversity
import skbio

# Diversité alpha
alpha = alpha_diversity('shannon', counts_matrix, ids=sample_ids)
faith_pd = alpha_diversity('faith_pd', counts_matrix, ids=sample_ids,
                          tree=tree, otu_ids=feature_ids)

# Diversité bêta
bc_dm = beta_diversity('braycurtis', counts_matrix, ids=sample_ids)
unifrac_dm = beta_diversity('unweighted_unifrac', counts_matrix,
                           ids=sample_ids, tree=tree, otu_ids=feature_ids)

# Obtenir les métriques disponibles
from skbio.diversity import get_alpha_diversity_metrics
print(get_alpha_diversity_metrics())

Notes importantes :

  • Les comptages doivent être des entiers représentant les abondances, pas des fréquences relatives
  • Les métriques phylogénétiques (Faith's PD, UniFrac) nécessitent un arbre et un mappage d'ID OTU
  • Utilisez partial_beta_diversity() pour calculer seulement des paires d'échantillons spécifiques
  • La diversité alpha retourne une Series, la diversité bêta retourne une DistanceMatrix

5. Méthodes d'ordination

Réduisez les données biologiques de haute dimension à des espaces de basse dimension visualisables.

Capacités clés :

  • PCoA (Analyse en Coordonnées Principales) à partir de matrices de distance
  • CA (Analyse Factorielle des Correspondances) pour tables de contingence
  • CCA (Analyse Canonique des Correspondances) avec contraintes environnementales
  • RDA (Analyse de Redondance) pour les relations linéaires
  • Projection de biplot pour l'interprétation des caractéristiques

Modèles courants :

from skbio.stats.ordination import pcoa, cca

# PCoA à partir d'une matrice de distance
pcoa_results = pcoa(distance_matrix)
pc1 = pcoa_results.samples['PC1']
pc2 = pcoa_results.samples['PC2']

# CCA avec variables environnementales
cca_results = cca(species_matrix, environmental_matrix)

# Sauvegarder/charger les résultats d'ordination
pcoa_results.write('ordination.txt')
results = skbio.OrdinationResults.read('ordination.txt')

Notes importantes :

  • PCoA fonctionne avec n'importe quelle matrice de distance/dissimilarité
  • CCA révèle les facteurs environnementaux responsables de la composition communautaire
  • Les résultats d'ordination incluent les valeurs propres, la proportion expliquée et les coordonnées d'échantillons/caractéristiques
  • Les résultats s'intègrent avec les bibliothèques de traçage (matplotlib, seaborn, plotly)

6. Tests statistiques

Effectuez des tests d'hypothèse spécifiques aux données écologiques et biologiques.

Capacités clés :

  • PERMANOVA : tester les différences de groupes en utilisant les matrices de distance
  • ANOSIM : test alternatif pour les différences de groupes
  • PERMDISP : tester l'homogénéité des dispersions de groupes
  • Test de Mantel : corrélation entre les matrices de distance
  • Bioenv : trouver les variables environnementales corrélées avec les distances

Modèles courants :

from skbio.stats.distance import permanova, anosim, mantel

# Tester si les groupes diffèrent significativement
permanova_results = permanova(distance_matrix, grouping, permutations=999)
print(f"p-value: {permanova_results['p-value']}")

# Test ANOSIM
anosim_results = anosim(distance_matrix, grouping, permutations=999)

# Test de Mantel entre deux matrices de distance
mantel_results = mantel(dm1, dm2, method='pearson', permutations=999)
print(f"Correlation: {mantel_results[0]}, p-value: {mantel_results[1]}")

Notes importantes :

  • Les tests de permutation fournissent des tests de signification non paramétriques
  • Utilisez 999+ permutations pour des p-values robustes
  • PERMANOVA sensible aux différences de dispersion ; à associer avec PERMDISP
  • Les tests de Mantel évaluent la corrélation matricielle (ex. distance géographique vs génétique)

7. I/O fichiers et conversion de formats

Lisez et écrivez plus de 19 formats de fichiers biologiques avec détection automatique de format.

Formats pris en charge :

  • Séquences : FASTA, FASTQ, GenBank, EMBL, QSeq
  • Alignements : Clustal, PHYLIP, Stockholm
  • Arbres : Newick
  • Tables : BIOM (HDF5 et JSON)
  • Distances : matrices carrées délimitées
  • Analyse : BLAST+6/7, GFF3, résultats d'ordination
  • Métadonnées : TSV/CSV avec validation

Modèles courants :

import skbio

# Lire avec détection automatique du format
seq = skbio.DNA.read('file.fasta', format='fasta')
tree = skbio.TreeNode.read('tree.nwk')

# Écrire dans un fichier
seq.write('output.fasta', format='fasta')

# Générateur pour les grands fichiers (efficace en mémoire)
for seq in skbio.io.read('large.fasta', format='fasta', constructor=skbio.DNA):
    process(seq)

# Convertir les formats
seqs = list(skbio.io.read('input.fastq', format='fastq', constructor=skbio.DNA))
skbio.io.write(seqs, format='fasta', into='output.fasta')

Notes importantes :

  • Utilisez des générateurs pour les grands fichiers afin d'éviter les problèmes de mémoire
  • Le format peut être détecté automatiquement quand le paramètre into est spécifié
  • Certains objets peuvent être écrits dans plusieurs formats
  • Support du piping stdin/stdout avec verify=False

8. Matrices de distance

Créez et manipulez des matrices de distance/dissimilarité avec des méthodes statistiques.

Capacités clés :

  • Stocker des données symétriques (DistanceMatrix) ou asymétriques (DissimilarityMatrix)
  • Indexation et découpage basés sur les ID
  • Intégration avec la diversité, l'ordination et les tests statistiques
  • Lire/écrire le format texte délimité

Modèles courants :

from skbio import DistanceMatrix
import numpy as np

# Créer à partir d'un tableau
data = np.array([[0, 1, 2], [1, 0, 3], [2, 3, 0]])
dm = DistanceMatrix(data, ids=['A', 'B', 'C'])

# Accéder aux distances
dist_ab = dm['A', 'B']
row_a = dm['A']

# Lire à partir d'un fichier
dm = DistanceMatrix.read('distances.txt')

# Utiliser dans les analyses en aval
pcoa_results = pcoa(dm)
permanova_results = permanova(dm, grouping)

Notes importantes :

  • DistanceMatrix impose la symétrie et une diagonale nulle
  • DissimilarityMatrix permet les valeurs asymétriques
  • Les ID permettent l'intégration avec les métadonnées et les connaissances biologiques
  • Compatible avec pandas, numpy et scikit-learn

9. Tables biologiques

Travaillez avec des tables de caractéristiques (tables OTU/ASV) communes dans la recherche microbiome.

Capacités clés :

  • I/O au format BIOM (HDF5 et JSON)
  • Intégration avec pandas, polars, AnnData, numpy
  • Techniques d'augmentation de données (phylomix, mixup, méthodes compositionnelles)
  • Filtrage et normalisation d'échantillons/caractéristiques
  • Intégration des métadonnées

Modèles courants :

from skbio import Table

# Lire la table BIOM
table = Table.read('table.biom')

# Accéder aux données
sample_ids = table.ids(axis='sample')
feature_ids = table.ids(axis='observation')
counts = table.matrix_data

# Filtrer
filtered = table.filter(sample_ids_to_keep, axis='sample')

# Convertir vers/à partir de pandas
df = table.to_dataframe()
table = Table.from_dataframe(df)

Notes importantes :

  • Les tables BIOM sont standard dans les workflows QIIME 2
  • Les lignes représentent généralement des échantillons, les colonnes des caractéristiques (OTUs/ASVs)
  • Prend en charge les représentations sparse et dense
  • Le format de sortie configurable (pandas/polars/numpy)

10. Embeddings protéiques

Travaillez avec les embeddings des modèles de langage protéique pour l'analyse en aval.

Capacités clés :

  • Stocker les embeddings provenant de modèles de langage protéique (ESM, ProtTrans, etc.)
  • Convertir les embeddings en matrices de distance
  • Générer des objets d'ordination pour la visualisation
  • Exporter vers numpy/pandas pour les workflows ML

Modèles courants :

from skbio.embedding import ProteinEmbedding, ProteinVector

# Créer un embedding à partir d'un tableau
embedding = ProteinEmbedding(embedding_array, sequence_ids)

# Convertir en matrice de distance pour l'analyse
dm = embedding.to_distances(metric='euclidean')

# Visualisation PCoA de l'espace embedding
pcoa_results = embedding.to_ordination(metric='euclidean', method='pcoa')

# Exporter pour l'apprentissage automatique
array = embedding.to_array()
df = embedding.to_dataframe()

Notes importantes :

  • Les embeddings comblent le fossé entre les modèles de langage protéique et la bioinformatique traditionnelle
  • Compatible avec l'écosystème de distance/ordination/statistiques de scikit-bio
  • SequenceEmbedding et ProteinEmbedding fournissent des fonctionnalités spécialisées
  • Utile pour le clustering de séquences, la classification et la visualisation

Bonnes pratiques

Installation

uv pip install scikit-bio

Considérations de performance

  • Utilisez des générateurs pour les grands fichiers de séquences afin de minimiser l'utilisation de la mémoire
  • Pour les arbres phylogénétiques massifs, préférez GME ou BME à NJ
  • Les calculs de diversité bêta peuvent être parallélisés avec partial_beta_diversity()
  • Le format BIOM (HDF5) est plus efficace que JSON pour les grandes tables

Intégration avec l'écosystème

  • Les séquences interopèrent avec Biopython via les formats standards
  • Les tables s'intègrent avec pandas, polars et AnnData
  • Les matrices de distance sont compatibles avec scikit-learn
  • Les résultats d'ordination sont visualisables avec matplotlib/seaborn/plotly
  • Fonctionne de manière transparente avec les artefacts QIIME 2 (BIOM, arbres, matrices de distance)

Workflows courants

  1. Analyse de diversité microbiome : Lire la table BIOM → Calculer la diversité alpha/bêta → Ordination (PCoA) → Tests statistiques (PERMANOVA)
  2. Analyse phylogénétique : Lire les séquences → Aligner → Construire la matrice de distance → Construire l'arbre → Calculer les distances phylogénétiques
  3. Traitement des séquences : Lire FASTQ → Filtrer la qualité → Réduire/nettoyer → Trouver les motifs → Traduire → Écrire FASTA
  4. Génomique comparative : Lire les séquences → Alignement par paires → Calculer les distances → Construire l'arbre → Analyser les clades

Documentation de référence

Pour les informations détaillées sur l'API, les spécifications de paramètres et les exemples d'utilisation avancée, consultez references/api_reference.md qui contient la documentation complète sur :

  • Les signatures de méthode complètes et les paramètres pour toutes les capacités
  • Des exemples de code étendus pour les workflows complexes
  • Le dépannage des problèmes courants
  • Les conseils d'optimisation des performances
  • Les modèles d'intégration avec d'autres bibliothèques

Ressources supplémentaires

Skills similaires