Alterlab Biopython logo

Alterlab Biopython

Community
AlterLab-IEU
alterlab-biopython

Manipulate biological sequences, parse FASTA/GenBank/PDB files, run phylogenetics, and access NCBI/PubMed programmatically via Biopython (Bio.SeqIO, Bio.Entrez, Bio.PDB, Bio.Blast). Use when scripting custom bioinformatics pipelines, batch-processing sequence files, automating BLAST, or fetching records from Entrez — for quick one-off database lookups use gget, for unified multi-service integration use bioservices. Part of the AlterLab Academic Skills suite.

Overview

PublisherAlterLab-IEU
RepositoryAlterLab-Academic-Skills
Skill namealterlab-biopython
Stars
84
Forks
16
Bundled files
8
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 8 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by AlterLab-IEU on GitHub. Read the source before you install it.

Installation

Install the Alterlab Biopython AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/AlterLab-IEU/AlterLab-Academic-Skills/tree/main/skills/bioinformatics/alterlab-biopython
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/AlterLab-IEU/AlterLab-Academic-Skills.git /tmp/AlterLab-Academic-Skills
mkdir -p .claude/skills
cp -r /tmp/AlterLab-Academic-Skills/skills/bioinformatics/alterlab-biopython .claude/skills/alterlab-biopython
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Alterlab Biopython in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Alterlab Biopython on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Alterlab Biopython is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Biopython: Computational Molecular Biology in Python

Overview

Biopython is a comprehensive set of freely available Python tools for biological computation. It provides functionality for sequence manipulation, file I/O, database access, structural bioinformatics, phylogenetics, and many other bioinformatics tasks. The current version is Biopython 1.88 (August 2026), which supports Python 3.10–3.14 and requires NumPy.

Removed / changed APIs to watch for

  • Command-line wrappers are gone. Bio.Application and everything built on it — Bio.Blast.Applications (Ncbiblastn/p/x…Commandline, NcbimakeblastdbCommandline) and Bio.Align.Applications (ClustalOmegaCommandline, MuscleCommandline) — were deprecated in 1.78 and removed in 1.86. Call the executables through subprocess (see references/blast.md and references/alignment.md).
  • PairwiseAligner gap scores changed in 1.86. The default gap score is now -1 (was 0), so an aligner left at defaults returns far fewer, non-degenerate alignments. The gap attributes were also renamed to insertion/deletion forms (open_internal_insertion_score, …); the *_gap_score names still work as meta-attributes. The alphabet attribute is deprecated and unused.
  • Bio.pairwise2 is deprecated — use Bio.Align.PairwiseAligner.
  • Bio.Blast.NCBIXML is declared obsolete as of the 1.89 development line in favour of the Bio.Blast parser added in 1.84 (Blast.parse/Blast.read, Blast.qblast). It still ships and works in 1.88; prefer the new API for new code.
  • Security fixes worth upgrading for: 1.87 fixed CVE-2025-68463 in Bio.Entrez.Parser, and 1.88 removed an eval in the Bio.Nexus parser that allowed code execution from a malicious NEXUS file. Treat downloaded records as untrusted input and keep Biopython current.

When to Use This Skill

Use this skill when:

  • Working with biological sequences (DNA, RNA, or protein)
  • Reading, writing, or converting biological file formats (FASTA, GenBank, FASTQ, PDB, mmCIF, etc.)
  • Accessing NCBI databases (GenBank, PubMed, Protein, Gene, etc.) via Entrez
  • Running BLAST searches or parsing BLAST results
  • Performing sequence alignments (pairwise or multiple sequence alignments)
  • Analyzing protein structures from PDB files
  • Creating, manipulating, or visualizing phylogenetic trees
  • Finding sequence motifs or analyzing motif patterns
  • Calculating sequence statistics (GC content, molecular weight, melting temperature, etc.)
  • Performing structural bioinformatics tasks
  • Working with population genetics data
  • Any other computational molecular biology task

Does NOT Trigger

ScenarioUse Instead
Running local BLAST+ / makeblastdb from the command line, or DIAMONDalterlab-blast
A one-line lookup of a gene, sequence, or structurealterlab-gget
One call across many web services (UniProt + KEGG + ChEMBL in a pipeline)alterlab-bioservices
SAM/BAM/CRAM record access, pileups, and read filteringalterlab-pysam
Building an ML phylogeny from unaligned sequences (MAFFT + IQ-TREE)alterlab-phylogenetics

Core Capabilities

Biopython is organized into modular sub-packages, each addressing specific bioinformatics domains:

  1. Sequence Handling - Bio.Seq and Bio.SeqIO for sequence manipulation and file I/O
  2. Alignment Analysis - Bio.Align and Bio.AlignIO for pairwise and multiple sequence alignments
  3. Database Access - Bio.Entrez for programmatic access to NCBI databases
  4. BLAST Operations - Bio.Blast for running and parsing BLAST searches
  5. Structural Bioinformatics - Bio.PDB for working with 3D protein structures
  6. Phylogenetics - Bio.Phylo for phylogenetic tree manipulation and visualization
  7. Advanced Features - Motifs, population genetics, sequence utilities, and more

Installation and Setup

Install Biopython (requires Python 3 and NumPy). On this machine, prefer running scripts with uv run:

bash
# Ad-hoc: run a script with Biopython available, no venv to manage
uv run --with biopython script.py

# Or add it to a project
uv add biopython

For NCBI database access, always set your email address (required by NCBI):

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

# Optional: API key for higher rate limits (10 req/s instead of 3 req/s)
Entrez.api_key = "your_api_key_here"

Using This Skill

This skill provides comprehensive documentation organized by functionality area. When working on a task, consult the relevant reference documentation:

1. Sequence Handling (Bio.Seq & Bio.SeqIO)

Reference: references/sequence_io.md

Use for:

  • Creating and manipulating biological sequences
  • Reading and writing sequence files (FASTA, GenBank, FASTQ, etc.)
  • Converting between file formats
  • Extracting sequences from large files
  • Sequence translation, transcription, and reverse complement
  • Working with SeqRecord objects

Quick example:

python
from Bio import SeqIO

# Read sequences from FASTA file
for record in SeqIO.parse("sequences.fasta", "fasta"):
    print(f"{record.id}: {len(record.seq)} bp")

# Convert GenBank to FASTA
SeqIO.convert("input.gb", "genbank", "output.fasta", "fasta")

2. Alignment Analysis (Bio.Align & Bio.AlignIO)

Reference: references/alignment.md

Use for:

  • Pairwise sequence alignment (global and local)
  • Reading and writing multiple sequence alignments
  • Using substitution matrices (BLOSUM, PAM)
  • Calculating alignment statistics
  • Customizing alignment parameters

Quick example:

python
from Bio import Align

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

3. Database Access (Bio.Entrez)

Reference: references/databases.md

Use for:

  • Searching NCBI databases (PubMed, GenBank, Protein, Gene, etc.)
  • Downloading sequences and records
  • Fetching publication information
  • Finding related records across databases
  • Batch downloading with proper rate limiting

Quick example:

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

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

4. BLAST Operations (Bio.Blast)

Reference: references/blast.md

Use for:

  • Running BLAST searches via NCBI web services
  • Running local BLAST searches
  • Parsing BLAST XML output
  • Filtering results by E-value or identity
  • Extracting hit sequences

Quick example (the Bio.Blast API introduced in 1.84 — NCBI requires a contact email):

python
from Bio import Blast

Blast.email = "your.email@example.com"
result_stream = Blast.qblast("blastn", "nt", "ATCGATCGATCG")
blast_record = Blast.read(result_stream)

# Each hit's alignments are Bio.Align objects; scores live in .annotations
for hit in blast_record[:5]:
    print(f"{hit.target.id}: E-value={hit[0].annotations['evalue']}")

5. Structural Bioinformatics (Bio.PDB)

Reference: references/structure.md

Use for:

  • Parsing PDB and mmCIF structure files
  • Navigating protein structure hierarchy (SMCRA: Structure/Model/Chain/Residue/Atom)
  • Calculating distances, angles, and dihedrals
  • Secondary structure assignment (DSSP)
  • Structure superimposition and RMSD calculation
  • Extracting sequences from structures

Quick example:

python
from Bio.PDB import PDBParser

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

# Calculate distance between alpha carbons
chain = structure[0]["A"]
distance = chain[10]["CA"] - chain[20]["CA"]
print(f"Distance: {distance:.2f} Å")

6. Phylogenetics (Bio.Phylo)

Reference: references/phylogenetics.md

Use for:

  • Reading and writing phylogenetic trees (Newick, NEXUS, phyloXML)
  • Building trees from distance matrices or alignments
  • Tree manipulation (pruning, rerooting, ladderizing)
  • Calculating phylogenetic distances
  • Creating consensus trees
  • Visualizing trees

Quick example:

python
from Bio import Phylo

# Read and visualize tree
tree = Phylo.read("tree.nwk", "newick")
Phylo.draw_ascii(tree)

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

7. Advanced Features

Reference: references/advanced.md

Use for:

  • Sequence motifs (Bio.motifs) - Finding and analyzing motif patterns
  • Population genetics (Bio.PopGen) - GenePop files, Fst calculations, Hardy-Weinberg tests
  • Sequence utilities (Bio.SeqUtils) - GC content, melting temperature, molecular weight, protein analysis
  • Restriction analysis (Bio.Restriction) - Finding restriction enzyme sites
  • Clustering (Bio.Cluster) - K-means and hierarchical clustering
  • Genome diagrams (GenomeDiagram) - Visualizing genomic features

Quick example:

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

seq = Seq("ATCGATCGATCG")
print(f"GC content: {gc_fraction(seq):.2%}")
print(f"Molecular weight: {molecular_weight(seq, seq_type='DNA'):.2f} g/mol")

General Workflow Guidelines

Reading Documentation

When a user asks about a specific Biopython task:

  1. Identify the relevant module based on the task description
  2. Read the appropriate reference file using the Read tool
  3. Extract relevant code patterns and adapt them to the user's specific needs
  4. Combine multiple modules when the task requires it

Example search patterns for reference files:

bash
# Find information about specific functions
grep -n "SeqIO.parse" references/sequence_io.md

# Find examples of specific tasks
grep -n "BLAST" references/blast.md

# Find information about specific concepts
grep -n "alignment" references/alignment.md

Writing Biopython Code

Follow these principles when writing Biopython code:

  1. Import modules explicitly

    python
    from Bio import SeqIO, Entrez
    from Bio.Seq import Seq
  2. Set Entrez email when using NCBI databases

    python
    Entrez.email = "your.email@example.com"
  3. Use appropriate file formats - Check which format best suits the task

    python
    # Common formats: "fasta", "genbank", "fastq", "clustal", "phylip"
  4. Handle files properly - Close handles after use or use context managers

    python
    with open("file.fasta") as handle:
        records = SeqIO.parse(handle, "fasta")
  5. Use iterators for large files - Avoid loading everything into memory

    python
    for record in SeqIO.parse("large_file.fasta", "fasta"):
        # Process one record at a time
  6. Handle errors gracefully - Network operations and file parsing can fail

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

Common Patterns

Pattern 1: Fetch Sequence from GenBank

python
from Bio import Entrez, SeqIO

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

# Fetch sequence
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"Sequence length: {len(record.seq)}")

Pattern 2: Sequence Analysis Pipeline

python
from Bio import SeqIO
from Bio.SeqUtils import gc_fraction

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

    # Find ORFs, translate, etc.
    protein = record.seq.translate()

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

Pattern 3: BLAST and Fetch Top Hits

python
from Bio import Blast, Entrez, SeqIO

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

# Run BLAST (Bio.Blast API, Biopython >= 1.84)
result_stream = Blast.qblast("blastn", "nt", sequence)
blast_record = Blast.read(result_stream)

# Get top hit accessions (hit.target is a SeqRecord)
accessions = [hit.target.name for hit in blast_record[:5]]

# Fetch sequences
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}")

Pattern 4: Build Phylogenetic Tree from Sequences

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

# Read alignment
alignment = AlignIO.read("alignment.fasta", "fasta")

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

# Build tree
constructor = DistanceTreeConstructor()
tree = constructor.nj(dm)

# Visualize
Phylo.draw_ascii(tree)

Best Practices

  1. Always read relevant reference documentation before writing code
  2. Use grep to search reference files for specific functions or examples
  3. Validate file formats before parsing
  4. Handle missing data gracefully - Not all records have all fields
  5. Cache downloaded data - Don't repeatedly download the same sequences
  6. Respect NCBI rate limits - Use API keys and proper delays
  7. Test with small datasets before processing large files
  8. Keep Biopython updated to get latest features and bug fixes
  9. Use appropriate genetic code tables for translation
  10. Document analysis parameters for reproducibility

Troubleshooting Common Issues

Issue: "No handlers could be found for logger 'Bio.Entrez'"

Solution: This is just a warning. Set Entrez.email to suppress it.

Issue: "HTTP Error 400" from NCBI

Solution: Check that IDs/accessions are valid and properly formatted.

Issue: "ValueError: EOF" when parsing files

Solution: Verify file format matches the specified format string.

Issue: Alignment fails with "sequences are not the same length"

Solution: Ensure sequences are aligned before using AlignIO or MultipleSeqAlignment.

Issue: BLAST searches are slow

Solution: Use local BLAST for large-scale searches, or cache results.

Issue: PDB parser warnings

Solution: Use PDBParser(QUIET=True) to suppress warnings, or investigate structure quality.

Additional Resources

Quick Reference

To locate information in reference files, use these search patterns:

bash
# Search for specific functions
grep -n "function_name" references/*.md

# Find examples of specific tasks
grep -n "example" references/sequence_io.md

# Find all occurrences of a module
grep -n "Bio.Seq" references/*.md

Summary

Biopython provides comprehensive tools for computational molecular biology. When using this skill:

  1. Identify the task domain (sequences, alignments, databases, BLAST, structures, phylogenetics, or advanced)
  2. Consult the appropriate reference file in the references/ directory
  3. Adapt code examples to the specific use case
  4. Combine multiple modules when needed for complex workflows
  5. Follow best practices for file handling, error checking, and data management

The modular reference documentation ensures detailed, searchable information for every major Biopython capability.

Part of the AlterLab Academic Skills suite.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Alterlab Biopython AI skill do?

Manipulate biological sequences, parse FASTA/GenBank/PDB files, run phylogenetics, and access NCBI/PubMed programmatically via Biopython (Bio.SeqIO, Bio.Entrez, Bio.PDB, Bio.Blast). Use when scripting custom bioinformatics pipelines, batch-processing sequence files, automating BLAST, or fetching records from Entrez — for quick one-off database lookups use gget, for unified multi-service integration use bioservices. Part of the AlterLab Academic Skills suite.

Why use Alterlab Biopython on TypingMind?

Because you install it once and use it with any model. Alterlab Biopython is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Alterlab Biopython in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/AlterLab-IEU/AlterLab-Academic-Skills/tree/main/skills/bioinformatics/alterlab-biopython. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Alterlab Biopython?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Alterlab Biopython?

As many as you like. As long as a model supports skills, you can use Alterlab Biopython with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Alterlab Biopython AI skill free?

Yes. It is published on GitHub by AlterLab-IEU under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇