Skip to content
Back to skills

Biology Biopython

ASecurity

Bioinformatics with Biopython for sequence manipulation, file parsing, BLAST, and phylogenetics. Use when working with DNA/RNA/protein sequences or biological databases.

  • 10 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 29, 2026
ai-agentspythongoapidatabase

Works with

  • api

Security analysis

A100/100

Scanned September 29, 2026

npx -y skills add FOURTEEN1416/academic-agent-toolkit --skill biology-biopython --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Biology Biopython?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Biology Biopython
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/fourteen1416-biology-biopython/badge)](https://www.skillsdirectory.com/skills/fourteen1416-biology-biopython)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: biology-biopython
description: Bioinformatics with Biopython for sequence manipulation, file parsing, BLAST, and phylogenetics. Use when working with DNA/RNA/protein sequences or biological databases.
metadata:
  category: domain
  trigger-keywords: "sequence,FASTA,genome,protein,BLAST,phylogenetic,biopython,bioinformatics,gene,DNA,RNA"
  applicable-stages: "9,10,12"
  priority: "4"
  version: "1.0"
  author: researchclaw
  references: "adapted from K-Dense-AI/claude-scientific-skills"
---

## Biopython Bioinformatics Best Practice

### Sequence Manipulation
1. Create sequences: `from Bio.Seq import Seq; seq = Seq("ATGCGA")`
2. Complement: `seq.complement()`; Reverse complement: `seq.reverse_complement()`
3. Transcription: `seq.transcribe()` (DNA to RNA)
4. Translation: `seq.translate()` (DNA/RNA to protein)
5. GC content: `from Bio.SeqUtils import gc_fraction; gc_fraction(seq)`
6. Molecular weight: `from Bio.SeqUtils import molecular_weight`

### File Parsing (SeqIO)
1. Read FASTA: `for rec in SeqIO.parse("file.fasta", "fasta"): ...`
2. Read GenBank: `for rec in SeqIO.parse("file.gb", "genbank"): ...`
3. Read single record: `rec = SeqIO.read("file.fasta", "fasta")`
4. Write sequences: `SeqIO.write(records, "output.fasta", "fasta")`
5. Convert formats: `SeqIO.convert("input.gb", "genbank", "output.fasta", "fasta")`
6. Index large files: `idx = SeqIO.index("large.fasta", "fasta")` for random access

### BLAST Operations
1. Online BLAST: `from Bio.Blast import NCBIWWW; result = NCBIWWW.qblast("blastn", "nt", seq)`
2. Parse results: `from Bio.Blast import NCBIXML; records = NCBIXML.parse(result)`
3. Local BLAST: run via subprocess, parse XML output with NCBIXML
4. Always set `Entrez.email` before any NCBI access
5. Filter results by e-value (typically < 1e-5) and coverage

### NCBI Database Access (Entrez)
1. Always set email: `Entrez.email = "your@email.com"`
2. Search: `handle = Entrez.esearch(db="pubmed", term="query")`
3. Fetch records: `handle = Entrez.efetch(db="nucleotide", id="ID", rettype="fasta")`
4. Use API key for higher rate limits (10 req/s vs 3 req/s)
5. Respect NCBI rate limits; add delays between batch requests

### Phylogenetics (Bio.Phylo)
1. Read trees: `from Bio import Phylo; tree = Phylo.read("tree.nwk", "newick")`
2. Draw trees: `Phylo.draw(tree)` or `Phylo.draw_ascii(tree)`
3. Supported formats: newick, nexus, phyloxml
4. Traverse clades: `for clade in tree.find_clades(): ...`
5. Calculate distances: `tree.distance(clade1, clade2)`

### Structure Analysis (Bio.PDB)
1. Parse PDB: `parser = PDBParser(); structure = parser.get_structure("id", "file.pdb")`
2. Hierarchy: Structure > Model > Chain > Residue > Atom
3. Get atoms: iterate through `structure.get_atoms()`
4. Calculate distances: use atom coordinate vectors
5. For mmCIF files: use `MMCIFParser()` instead of `PDBParser()`

### Common Pitfalls
1. Always handle `SeqIO.parse` as an iterator — it exhausts after one pass
2. Check sequence alphabet compatibility before operations
3. Large files: use `SeqIO.index()` not `SeqIO.to_dict()` to avoid memory issues
4. Set proper timeout for remote BLAST queries (can take minutes)
5. Validate parsed data — missing annotations are common in public databases

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…