Communitygithub.com

scikit-bio

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, entrées/sorties FASTA/Newick, pour l'analyse du microbiome.

Qu'est-ce que scikit-bio ?

scikit-bio est une bibliothèque Python complète conçue pour l'analyse de données biologiques. Cette compétence est idéale pour les bioinformaticiens et les écologistes microbiens qui travaillent avec des séquences (ADN, ARN, protéines), des alignements, des arbres phylogénétiques et des analyses de diversité. Elle prend en charge de nombreux formats de fichiers biologiques (FASTA, FASTQ, GenBank, Newick, BIOM) et offre des outils pour les statistiques multivariées comme l'ordination (PCoA, CCA, RDA) et les tests d'hypothèses (PERMANOVA, ANOSIM, Mantel). Utilisez cette compétence pour l'analyse du microbiome, l'écologie des communautés, la phylogénétique et toute tâche nécessitant une manipulation avancée des données biologiques, le tout avec une intégration transparente dans l'écosystème Python (pandas, NumPy, polars).

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/K-Dense-AI/scientific-agent-skills/tree/main/skills/scikit-bio

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait scikit-bio ?

Vue d'ensemble

scikit-bio est une bibliothèque Python complète pour travailler avec des données biologiques. Appliquez 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 lorsque l'utilisateur :

  • Travaille avec des séquences biologiques (ADN, ARN, protéines)
  • 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 des analyses d'ordination (PCoA, CCA, RDA)
  • Exécute des tests statistiques sur des données biologiques/écologiques (PERMANOVA, ANOSIM, Mantel)
  • Analyse les données du microbiome ou de l'écologie des communautés
  • Travaille avec des encodages de protéines provenant de modèles de langage
  • A besoin de manipuler des tableaux de données biologiques

Capacités principales

1. Manipulation de séquences

Travaillez avec des séquences biologiques à l'aide de classes spécialisées pour l'ADN, l'ARN et les protéines.

Opérations clés :

  • Lire/écrire des séquences à partir des 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)
  • Recherche de motifs et de patrons à l'aide d'expressions régulières
  • Calcul de distances (Hamming, basées sur les k-mers)
  • Gestion des scores de qualité et des métadonnées des séquences

Patrons courants :

import skbio

# Lire des séquences depuis un fichier
seq = skbio.DNA.read('input.fasta')

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

# Rechercher 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()

Remarques importantes :

  • Utilisez les classes DNA, RNA, Protein pour les séquences grammaticalisées avec validation
  • Utilisez la classe Sequence pour les séquences génériques sans restriction d'alphabet
  • Les scores de qualité sont automatiquement chargés à partir des fichiers FASTQ dans les métadonnées positionnelles
  • Types de métadonnées : niveau 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 à l'aide du moteur pair_align (introduit dans scikit-bio 0.7.0), un aligneur dynamique polyvalent et efficace.

Capacités clés :

  • Alignement global, local et semi-global (extrémités libres configurables) en une seule fonction
  • Wrappers pratiques pair_align_nucl (similaire à BLASTN) et pair_align_prot (similaire à BLASTP)
  • Score configurable : tuple de correspondance/non-correspondance ou matrice de substitution nommée ; pénalités de gap linéaires ou affines
  • Les résultats PairAlignPath portent des chaînes CIGAR et se convertissent en séquences alignées
  • Stockage et manipulation d'alignements de séquences multiples avec TabularMSA

Patrons courants :

from skbio import DNA, Protein
from skbio.alignment import pair_align_nucl, pair_align_prot, pair_align, TabularMSA

# Alignement nucléotidique avec les valeurs par défaut de type BLASTN
seq1, seq2 = DNA('ACTACCAGATTACTTACGGATCAGG'), DNA('CGAAACTACTAGATTACGGATCTTA')
aln = pair_align_nucl(seq1, seq2)
aln.score                                  # score d'alignement (float)
path = aln.paths[0]                        # PairAlignPath (repr montre CIGAR)
aligned_seqs = path.to_aligned((seq1, seq2))  # liste de chaînes avec gaps

# Construire un TabularMSA à partir du chemin d'alignement + des séquences originales
msa = TabularMSA.from_path_seqs(path, (seq1, seq2))

# Personnaliser l'algorithme via pair_align (mode par défaut='global')
aln = pair_align(seq1, seq2, mode='local')                       # Smith-Waterman
aln = pair_align(seq1, seq2, sub_score=(2, -3), gap_cost=(5, 2)) # gaps affines
aln = pair_align(seq1, seq2, sub_score='NUC.4.4', gap_cost=3)    # matrice de substitution, gap linéaire

# Alignement de protéines (similaire à BLASTP, BLOSUM62)
aln = pair_align_prot(Protein('HEAGAWGHEE'), Protein('PAWHEAE'))

# Lire un alignement multiple depuis un fichier et résumer
msa = TabularMSA.read('alignment.fasta', constructor=DNA)
consensus = msa.consensus()

Remarques importantes :

  • pair_align remplace le wrapper SSW supprimé (local_pairwise_align_ssw, StripedSmithWaterman) et les aligneurs Python purs obsolètes (global_pairwise_align, local_pairwise_align_nucleotide, etc.)
  • Le résultat est un PairAlignResult qui se décompresse également en score, paths, matrices (utilisez keep_matrices=True pour conserver la matrice DP)
  • sub_score accepte un tuple (match, mismatch) ou un nom de matrice (par exemple, 'NUC.4.4', 'BLOSUM62') ; gap_cost accepte un nombre unique (linéaire) ou un tuple (ouverture, extension) (affine)
  • Analysez les chaînes CIGAR externes avec PairAlignPath.from_cigar('1I8M2D5M2I') ; notez un alignement existant avec align_score(...) et construisez une matrice de distance à partir d'un MSA avec align_dists(...)

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)
  • Réarrangement d'arbres par échange de voisins les plus proches (nni)
  • Manipulation d'arbres (élagage, ré-enracinement, parcours)
  • Calculs de distances (patristique via cophenet, Robinson-Foulds via compare_rfd)
  • Visualisation ASCII
  • Entrées/sorties au format Newick

Patrons courants :

from skbio import TreeNode
from skbio.tree import nj, upgma, gme, bme, rf_dists

# Lire un arbre depuis un fichier
tree = TreeNode.read('tree.nwk')

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

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

# Calculer les distances
patristic_dist = tree.find('taxon1').distance(tree.find('taxon2'))
cophenetic_dm = tree.cophenet()           # matrice de distances patristiques entre les feuilles

# Comparer deux arbres (Robinson-Foulds)
rf_distance = tree.compare_rfd(other_tree)
# Distances RF par paires entre plusieurs arbres -> DistanceMatrix
rf_dm = rf_dists([tree, other_tree, third_tree])

Remarques importantes :

  • Utilisez nj() pour le neighbor joining (méthode phylogénétique classique)
  • Utilisez upgma() pour UPGMA/WPGMA (suppose une horloge moléculaire)
  • GME et BME sont très évolutifs pour les grands arbres ; affinez la topologie avec nni()
  • cophenet() (anciennement tip_tip_distances) renvoie la matrice de distances patristiques ; compare_rfd() est la méthode de Robinson-Foulds (compare_wrfd/compare_cophenet pour les variantes pondérées/cophénétiques)
  • lca() est l'ancêtre commun le plus récent ; lowest_common_ancestor reste comme alias
  • Les arbres peuvent être enracinés ou non ; certaines métriques nécessitent un enracinement spécifique

4. Analyse de la diversité

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

Capacités clés :

  • Diversité alpha : richesse (sobs, observed_features, chao1, ace), Shannon, Simpson, nombres de Hill (hill), PD de Faith (faith_pd), PD généralisé (phydiv), é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 un arbre en entrée)
  • Rarefaction et sous-échantillonnage
  • Intégration avec l'ordination et les tests statistiques

Patrons courants :

from skbio.diversity import alpha_diversity, beta_diversity

# Diversité alpha (les métriques phylogénétiques prennent taxa= pour le mappage nom de feuille)
alpha = alpha_diversity('shannon', counts_matrix, ids=sample_ids)
faith_pd = alpha_diversity('faith_pd', counts_matrix, ids=sample_ids,
                           tree=tree, taxa=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, taxa=feature_ids)

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

Remarques importantes :

  • Les comptages doivent être des entiers représentant des abondances, pas des fréquences relatives
  • L'argument pour les métriques phylogénétiques est taxa= (renommé de otu_ids dans la version 0.6.0 ; l'ancien nom est un alias obsolète) ; observed_otus est maintenant observed_features (ou sobs)
  • counts_matrix peut être toute entrée de type tableau (tableau NumPy, DataFrame pandas/polars, table BIOM ou AnnData) via le système de distribution
  • Les métriques phylogénétiques (PD de Faith, UniFrac) nécessitent un arbre et un mappage taxons-vers-feuille
  • Utilisez partial_beta_diversity() pour des paires d'échantillons spécifiques, ou block_beta_diversity() pour de grands calculs décomposés en blocs
  • La diversité alpha renvoie une pandas.Series, la diversité bêta renvoie une DistanceMatrix

5. Méthodes d'ordination

Réduisez les données biologiques de haute dimension dans des espaces de dimension inférieure visualisables.

Capacités clés :

  • PCoA (Analyse en coordonnées principales) à partir de matrices de distance
  • CA (Analyse des correspondances) pour les tableaux de contingence
  • CCA (Analyse des correspondances canonique) avec contraintes environnementales
  • RDA (Analyse de redondance) pour les relations linéaires
  • Projection biplot pour l'interprétation des caractéristiques

Patrons courants :

from skbio.stats.ordination import pcoa, cca
import skbio

# PCoA à partir d'une matrice de distance (limiter les dimensions pour les grandes matrices)
pcoa_results = pcoa(distance_matrix, dimensions=3)
pc1 = pcoa_results.samples['PC1']
pc2 = pcoa_results.samples['PC2']

# Nuage de points intégré coloré par une colonne de métadonnées
fig = pcoa_results.plot(sample_metadata, column='bodysite')

# 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')

Remarques importantes :

  • PCoA fonctionne avec toute matrice de distance/dissimilarité ; passez dimensions comme un entier (nombre) ou un flottant dans (0, 1] (fraction de variance cumulée à conserver)
  • OrdinationResults expose des attributs basés sur pandas : samples, features, eigvals, proportion_explained, biplot_scores, sample_constraints
  • CCA révèle les facteurs environnementaux de la composition de la communauté
  • OrdinationResults.plot() produit une figure matplotlib ; les résultats s'intègrent également avec seaborn/plotly

6. Tests statistiques

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

Capacités clés :

  • PERMANOVA : test des différences de groupes à l'aide de matrices de distance
  • ANOSIM : test alternatif pour les différences de groupes
  • PERMDISP : test de l'homogénéité des dispersions de groupes
  • Test de Mantel : corrélation entre matrices de distance
  • Bioenv : trouver les variables environnementales corrélées aux distances
  • Abondance différentielle : ancom, dirmult_ttest et dirmult_lme (effets mixtes longitudinaux) dans skbio.stats.composition

Patrons 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"valeur p : {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"Corrélation : {mantel_results[0]}, valeur p : {mantel_results[1]}")

# Abondance différentielle sur une table de caractéristiques (comptages bruts recommandés)
from skbio.stats.composition import dirmult_ttest
da = dirmult_ttest(counts_table, grouping, treatment='caseA', reference='control')

Remarques importantes :

  • Les tests de permutation fournissent des tests de signification non paramétriques
  • Utilisez 999 permutations ou plus pour des valeurs p robustes
  • PERMANOVA est sensible aux différences de dispersion ; associez à PERMDISP
  • Les tests de Mantel évaluent la corrélation matricielle (par exemple, distance géographique vs génétique)
  • Fournissez aux tests d'abondance différentielle des comptages bruts, pas des proportions pré-normalisées, pour préserver l'information de magnitude

7. Entrées/sorties de fichiers et conversion de format

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

Formats pris en charge :

  • Séquences : FASTA, FASTQ, GenBank, EMBL, QSeq
  • Alignements : Clustal, PHYLIP, Stockholm
  • Arbres : Newick
  • Tableaux : 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

Patrons courants :

import skbio

# Lire avec détection automatique de 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')

Remarques 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 lorsque le paramètre into est spécifié
  • Certains objets peuvent être écrits dans plusieurs formats
  • Prise en charge 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 :

  • Stockage de données symétriques (DistanceMatrix, diagonale nulle) ou par paires générales (PairwiseMatrix)
  • Indexation et découpage basés sur les IDs
  • Intégration avec la diversité, l'ordination et les tests statistiques
  • Lecture/écriture en format texte délimité

Patrons 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 depuis un fichier
dm = DistanceMatrix.read('distances.txt')

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

Remarques importantes :

  • DistanceMatrix applique la symétrie et une diagonale nulle ; c'est une sous-classe de SymmetricMatrix
  • PairwiseMatrix (renommé de DissimilarityMatrix, qui est conservé comme alias obsolète) permet des valeurs générales/asymétriques
  • Les IDs permettent l'intégration avec les métadonnées et les connaissances biologiques

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

adaptyv

How to use the Adaptyv Bio Foundry API and Python SDK for protein experiment design, submission, and results retrieval. Use this skill whenever the user mentions Adaptyv, Foundry API, protein binding assays, protein screening experiments, BLI/SPR assays, thermostability assays, or wants to submit protein sequences for experimental characterization. Also trigger when code imports `adaptyv`, `adaptyv_sdk`, or `FoundryClient`, or references `foundry-api-public.adaptyvbio.com`.

aeon

This skill should be used for time series machine learning tasks including classification, regression, clustering, forecasting, anomaly detection, segmentation, and similarity search. Use when working with temporal data, sequential patterns, or time-indexed observations requiring specialized algorithms beyond standard ML approaches. Particularly suited for univariate and multivariate time series analysis with scikit-learn compatible APIs.

alphagenome

Look up precomputed AlphaGenome Atlas effects for any GRCh38 single-nucleotide variant (AVI score with Phred and 18 SHAP feature attributions, plus raw and quantile scores for RNA-seq, DNase, ATAC, ChIP-TF, ChIP-histone, CAGE, PRO-cap, splicing, polyadenylation and contact-map tracks), score variants or scan windows on demand with the AlphaGenome model for human and mouse (variant scoring, in silico mutagenesis, REF-versus-ALT track prediction), and build Atlas website deep links. Use when the user mentions AlphaGenome, AlphaGenome Atlas, AVI or AlphaGenome Variant Impact, DeepMind variant effect prediction, or wants to prioritise or mechanistically interpret non-coding, regulatory, splicing, enhancer, promoter, or chromatin-accessibility effects of SNVs from a VCF, credible set, or region. Research use only; not a clinical tool.

analytical-method-validation

Plan, execute, and document validation, verification, and transfer of analytical procedures under the governing framework - ICH Q2(R2) and Q14, USP <1220>/<1225>/<1226>, ICH M10 bioanalytical, CLSI EP, or ISO/IEC 17025. Use for HPLC, LC-MS/MS, GC, CE, ICP-MS, dissolution, qNMR, qPCR, NIR, and ligand binding or cell-based assays whenever the question is whether a procedure is fit for its intended purpose. Triggers include

anndata

Data structure for annotated matrices in single-cell analysis. Use when working with .h5ad files or integrating with the scverse ecosystem. This is the data format skill—for analysis workflows use scanpy; for probabilistic models use scvi-tools; for population-scale queries use cellxgene-census.

arbor

Autonomously improve a real artifact (code, training recipe, agent harness, data pipeline, prompt) against an objective and an evaluator, using Hypothesis Tree Refinement (HTR) from the Arbor paper. Use this whenever someone wants to iteratively optimize something over many experiments without overfitting — e.g.

arboreto

Infer gene regulatory networks (GRNs) from gene expression data using scalable algorithms (GRNBoost2, GENIE3). Use when analyzing transcriptomics data (bulk RNA-seq, single-cell RNA-seq) to identify transcription factor-target gene relationships and regulatory interactions. Supports distributed computation for large-scale datasets.

astropy

Core Python library for astronomy and astrophysics workflows that need Astropy APIs, including units/quantities, coordinates, FITS I/O, tables, time systems, WCS, and cosmology. Use when implementing or debugging astronomical data analysis code with Astropy.

autoskill

Observe the user

benchling-integration

Benchling Python SDK and REST API integration for registry entities, inventory, ELN entries, workflows, Benchling Apps, and Data Warehouse queries. Use when automating lab data with benchling-sdk or the v2 API.

bgpt-paper-search

Search scientific papers and retrieve structured experimental data extracted from full-text studies via the BGPT MCP server. Returns 25+ fields per paper including methods, results, sample sizes, quality scores, and conclusions. Use for literature reviews, evidence synthesis, and finding experimental details not available in abstracts alone.

bids

>

biopython

Comprehensive molecular biology toolkit. Use for sequence manipulation, file parsing (FASTA/GenBank/PDB), phylogenetics, and programmatic NCBI/PubMed access (Bio.Entrez). Best for batch processing, custom bioinformatics pipelines, BLAST automation. For quick lookups use gget; for multi-service integration use bioservices.

bioservices

Unified Python interface to 40+ bioinformatics services. Use when querying multiple databases (UniProt, KEGG, ChEMBL, Reactome) in a single workflow with consistent API. Best for cross-database analysis, ID mapping across services. For quick single-database lookups use gget; for sequence/file manipulation use biopython.

bulk-rnaseq

End-to-end bulk RNA-seq orchestrator — takes raw FASTQ reads through QC and trimming (FastQC, fastp/Trim Galore), alignment and quantification (STAR, Salmon, featureCounts), assembles a gene-level counts matrix, then hands off to differential expression (pydeseq2), pathway/GSEA enrichment (pathway-enrichment), and publication figures (scientific-visualization). Use whenever the user has bulk RNA-seq reads or quant output and wants a complete, reproducible differential-expression workflow — e.g.

cellxgene-census

Query the CZ CELLxGENE Census programmatically for versioned public single-cell and spatial transcriptomics data. Use when you need population-scale cell metadata, gene expression slices, Census summary counts, source H5AD URIs/downloads, embeddings, spatial Census data, or reference atlas comparisons across organisms, tissues, diseases, assays, and cell types. For analyzing your own local single-cell data use scanpy, anndata, or scvi-tools.

cirq

Google quantum computing framework. Use when targeting Google Quantum AI hardware, designing noise-aware circuits, or running quantum characterization experiments. Best for Google hardware, noise modeling, and low-level circuit design. For IBM hardware use qiskit; for quantum ML with autodiff use pennylane; for physics simulations use qutip.

citation-management

Comprehensive citation management for academic research. Search OpenAlex, PubMed, and Google Scholar for papers, extract accurate metadata, validate citations, and generate properly formatted BibTeX entries. This skill should be used when you need to find papers, verify citation information, convert DOIs to BibTeX, or ensure reference accuracy in scientific writing.

clinical-decision-support

Prepare and validate research-only clinical decision-support evaluation, evidence-profile, cohort, survival, biomarker/model, privacy, and governance artifacts. Use for aggregate or synthetic research documentation and traceability—not patient care or live clinical operation.

clinical-reports

Create safety-bounded draft structures and run local deterministic checks for clinical case, diagnostic, trial, safety, and aggregate research reports. Use only with synthetic, de-identified, or aggregate inputs and verified source-fact manifests; every output requires qualified review.

Skills associés