Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Biological data toolkit. Sequence analysis, alignments, phylogenetic trees, diversity metrics (alpha/beta, UniFrac), ordination (PCoA), PERMANOVA, FASTA/Newick I/O, for microbiome analysis.
.claude/skills/scikit-bio/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-19 | ✗→✓ | ▲ Improved | — | — |
| case-14 | ✗→✓ | ▲ Improved | — | — |
| case-01 | ✗→✓ | ▲ Improved | — | — |
| case-15 | ✗→✓ | ▲ Improved | — | — |
| case-17 | ✗→✓ | ▲ Improved | — | — |
scikit-bio is a comprehensive Python library for working with biological data. Apply this skill for bioinformatics analyses spanning sequence manipulation, alignment, phylogenetics, microbial ecology, and multivariate statistics.
This skill should be used when the user:
Work with biological sequences using specialized classes for DNA, RNA, and protein data.
Key operations:
Common patterns:
pythonimport skbio # Read sequences from file seq = skbio.DNA.read('input.fasta') # Sequence operations rc = seq.reverse_complement() rna = seq.transcribe() protein = rna.translate() # Find motifs motif_positions = seq.find_with_regex('ATG[ACGT]{3}') # Check for properties has_degens = seq.has_degenerates() seq_no_gaps = seq.degap()
Important notes:
DNA, RNA, Protein classes for grammared sequences with validationSequence class for generic sequences without alphabet restrictionsPerform pairwise and multiple sequence alignments using dynamic programming algorithms.
Key capabilities:
TabularMSACommon patterns:
pythonfrom skbio.alignment import local_pairwise_align_ssw, TabularMSA # Pairwise alignment alignment = local_pairwise_align_ssw(seq1, seq2) # Access aligned sequences msa = alignment.aligned_sequences # Read multiple alignment from file msa = TabularMSA.read('alignment.fasta', constructor=skbio.DNA) # Calculate consensus consensus = msa.consensus()
Important notes:
local_pairwise_align_ssw for local alignments (faster, SSW-based)StripedSmithWaterman for protein alignmentsConstruct, manipulate, and analyze phylogenetic trees representing evolutionary relationships.
Key capabilities:
Common patterns:
pythonfrom skbio import TreeNode from skbio.tree import nj # Read tree from file tree = TreeNode.read('tree.nwk') # Construct tree from distance matrix tree = nj(distance_matrix) # Tree operations subtree = tree.shear(['taxon1', 'taxon2', 'taxon3']) tips = [node for node in tree.tips()] lca = tree.lowest_common_ancestor(['taxon1', 'taxon2']) # Calculate distances patristic_dist = tree.find('taxon1').distance(tree.find('taxon2')) cophenetic_matrix = tree.cophenetic_matrix() # Compare trees rf_distance = tree.robinson_foulds(other_tree)
Important notes:
nj() for neighbor joining (classic phylogenetic method)upgma() for UPGMA (assumes molecular clock)Calculate alpha and beta diversity metrics for microbial ecology and community analysis.
Key capabilities:
Common patterns:
pythonfrom skbio.diversity import alpha_diversity, beta_diversity import skbio # Alpha diversity 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) # Beta diversity 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) # Get available metrics from skbio.diversity import get_alpha_diversity_metrics print(get_alpha_diversity_metrics())
Important notes:
partial_beta_diversity() for computing specific sample pairs onlyReduce high-dimensional biological data to visualizable lower-dimensional spaces.
Key capabilities:
Common patterns:
pythonfrom skbio.stats.ordination import pcoa, cca # PCoA from distance matrix pcoa_results = pcoa(distance_matrix) pc1 = pcoa_results.samples['PC1'] pc2 = pcoa_results.samples['PC2'] # CCA with environmental variables cca_results = cca(species_matrix, environmental_matrix) # Save/load ordination results pcoa_results.write('ordination.txt') results = skbio.OrdinationResults.read('ordination.txt')
Important notes:
Perform hypothesis tests specific to ecological and biological data.
Key capabilities:
Common patterns:
pythonfrom skbio.stats.distance import permanova, anosim, mantel # Test if groups differ significantly permanova_results = permanova(distance_matrix, grouping, permutations=999) print(f"p-value: {permanova_results['p-value']}") # ANOSIM test anosim_results = anosim(distance_matrix, grouping, permutations=999) # Mantel test between two distance matrices mantel_results = mantel(dm1, dm2, method='pearson', permutations=999) print(f"Correlation: {mantel_results[0]}, p-value: {mantel_results[1]}")
Important notes:
Read and write 19+ biological file formats with automatic format detection.
Supported formats:
Common patterns:
pythonimport skbio # Read with automatic format detection seq = skbio.DNA.read('file.fasta', format='fasta') tree = skbio.TreeNode.read('tree.nwk') # Write to file seq.write('output.fasta', format='fasta') # Generator for large files (memory efficient) for seq in skbio.io.read('large.fasta', format='fasta', constructor=skbio.DNA): process(seq) # Convert formats seqs = list(skbio.io.read('input.fastq', format='fastq', constructor=skbio.DNA)) skbio.io.write(seqs, format='fasta', into='output.fasta')
Important notes:
into parameter specifiedverify=FalseCreate and manipulate distance/dissimilarity matrices with statistical methods.
Key capabilities:
Common patterns:
pythonfrom skbio import DistanceMatrix import numpy as np # Create from array data = np.array([[0, 1, 2], [1, 0, 3], [2, 3, 0]]) dm = DistanceMatrix(data, ids=['A', 'B', 'C']) # Access distances dist_ab = dm['A', 'B'] row_a = dm['A'] # Read from file dm = DistanceMatrix.read('distances.txt') # Use in downstream analyses pcoa_results = pcoa(dm) permanova_results = permanova(dm, grouping)
Important notes:
Work with feature tables (OTU/ASV tables) common in microbiome research.
Key capabilities:
Common patterns:
pythonfrom skbio import Table # Read BIOM table table = Table.read('table.biom') # Access data sample_ids = table.ids(axis='sample') feature_ids = table.ids(axis='observation') counts = table.matrix_data # Filter filtered = table.filter(sample_ids_to_keep, axis='sample') # Convert to/from pandas df = table.to_dataframe() table = Table.from_dataframe(df)
Important notes:
Work with protein language model embeddings for downstream analysis.
Key capabilities:
Common patterns:
pythonfrom skbio.embedding import ProteinEmbedding, ProteinVector # Create embedding from array embedding = ProteinEmbedding(embedding_array, sequence_ids) # Convert to distance matrix for analysis dm = embedding.to_distances(metric='euclidean') # PCoA visualization of embedding space pcoa_results = embedding.to_ordination(metric='euclidean', method='pcoa') # Export for machine learning array = embedding.to_array() df = embedding.to_dataframe()
Important notes:
bashuv pip install scikit-bio
partial_beta_diversity()For detailed API information, parameter specifications, and advanced usage examples, refer to references/api_reference.md which contains comprehensive documentation on:
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-10 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-11 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-18 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-08 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-04 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-23 | pass→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-12 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-07 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-19 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-16 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-14 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-01 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-20 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-15 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-21 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-17 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-05 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-06 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-03 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-22 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-09 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-02 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-13 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of +22 percentage points is the difference between those two pass rates over the 23 comparable cases.
The per-case answers from this run were removed by the retention sweep, so the case table below shows the verdicts without the text either arm produced. The counts above were recorded at the time and are unaffected. Answers are now kept for 180 days.
Other measured skills in the registry, with their headline benchmark lift.