Agent skill
bio-seq-objects
Install this agent skill to your Project
npx add-skill https://github.com/FreedomIntelligence/OpenClaw-Medical-Skills/tree/main/skills/bio-seq-objects
SKILL.md
name: bio-seq-objects description: Create and manipulate Seq, MutableSeq, and SeqRecord objects using Biopython. Use when creating sequences from strings, modifying sequence data in-place, or building annotated sequence records. tool_type: python primary_tool: Bio.Seq measurable_outcome: Execute skill workflow successfully with valid output within 15 minutes. allowed-tools:
- read_file
- run_shell_command
Seq Objects
Create and manipulate biological sequence objects using Biopython.
Required Imports
from Bio.Seq import Seq, MutableSeq
from Bio.SeqRecord import SeqRecord
Core Objects
Seq - Immutable Sequence
The basic sequence object. Immutable like Python strings.
seq = Seq('ATGCGATCGATCG')
Seq objects support string-like operations:
len(seq) # Length
seq[0] # First base
seq[-1] # Last base
seq[0:10] # Slice (returns Seq)
str(seq) # Convert to string
'ATG' in seq # Membership test
seq.count('G') # Count occurrences
seq.find('ATG') # Find position (-1 if not found)
seq.upper() # Uppercase
seq.lower() # Lowercase
seq * 3 # Repeat sequence
seq.strip() # Remove leading/trailing whitespace
MutableSeq - Mutable Sequence
For in-place modifications when performance matters.
mut_seq = MutableSeq('ATGCGATCG')
mut_seq[0] = 'C' # Modify single position
mut_seq[0:3] = 'GGG' # Replace slice
mut_seq.append('A') # Add to end
mut_seq.insert(0, 'G') # Insert at position
mut_seq.pop() # Remove and return last
mut_seq.remove('G') # Remove first occurrence
mut_seq.reverse() # Reverse in place
Convert between types:
seq = Seq(mut_seq) # MutableSeq to Seq
mut_seq = MutableSeq(seq) # Seq to MutableSeq
SeqRecord - Annotated Sequence
Sequence with metadata for file I/O and analysis.
record = SeqRecord(
Seq('ATGCGATCG'),
id='gene1',
name='example_gene',
description='An example gene sequence'
)
SeqRecord attributes:
record.seq # The Seq object
record.id # Identifier string
record.name # Name string
record.description # Description string
record.features # List of SeqFeature objects
record.annotations # Dict of annotations
record.letter_annotations # Per-letter annotations (quality scores)
record.dbxrefs # Database cross-references
SeqRecord Methods
Transform entire records while preserving metadata:
# Reverse complement (preserves ID, updates features)
rc_record = record.reverse_complement(id='gene1_rc', description='reverse complement')
# Translate to protein (creates new SeqRecord with protein)
protein_record = record.translate(id='gene1_protein')
# Quick format output (returns string in file format)
fasta_str = record.format('fasta')
genbank_str = record.format('genbank')
Slicing preserves features (adjusted to new coordinates):
# Slice SeqRecord - features are clipped/adjusted automatically
subset = record[10:50] # Features outside range are dropped
Code Patterns
Create Seq from String
dna = Seq('ATGCGATCGATCG')
rna = Seq('AUGCGAUCGAUCG')
protein = Seq('MRCRS')
Create SeqRecord for File Output
record = SeqRecord(Seq('ATGCGATCG'), id='seq1', description='My sequence')
Create SeqRecord with Annotations
record = SeqRecord(Seq('ATGCGATCG'), id='gene1', description='Example')
record.annotations['organism'] = 'Homo sapiens'
record.annotations['molecule_type'] = 'DNA'
Build SeqRecord from Parsed Data
from Bio.SeqFeature import SeqFeature, FeatureLocation
record = SeqRecord(Seq('ATGCGATCGATCG'), id='gene1')
feature = SeqFeature(FeatureLocation(0, 9), type='CDS', qualifiers={'product': ['Example protein']})
record.features.append(feature)
Batch Create SeqRecords
sequences = ['ATGC', 'GCTA', 'TTAA']
records = [SeqRecord(Seq(s), id=f'seq_{i}') for i, s in enumerate(sequences)]
Copy a SeqRecord
from copy import deepcopy
new_record = deepcopy(record)
new_record.id = 'modified_copy'
Modify SeqRecord Sequence
record = SeqRecord(Seq('ATGCGATCG'), id='seq1')
record.seq = Seq('GGGGGATCG') # Replace entire sequence
Join Sequences into One SeqRecord
combined_seq = seq1 + Seq('NNNN') + seq2 # With linker
combined_record = SeqRecord(combined_seq, id='combined')
Transform SeqRecord with reverse_complement
# Reverse complement a gene sequence
record = SeqRecord(Seq('ATGCGATCGATCG'), id='gene1', description='Forward strand')
rc_record = record.reverse_complement(id=f'{record.id}_rc', description='Reverse complement')
# Features are remapped to new coordinates
Translate SeqRecord to Protein
# Translate coding sequence
cds_record = SeqRecord(Seq('ATGCGATCGATCGTAA'), id='cds1', description='Coding sequence')
protein_record = cds_record.translate(id=f'{cds_record.id}_protein', to_stop=True)
Quick Output with format()
record = SeqRecord(Seq('ATGCGATCG'), id='seq1', description='Example sequence')
print(record.format('fasta'))
# >seq1 Example sequence
# ATGCGATCG
Common Errors
| Error | Cause | Solution |
|---|---|---|
TypeError: 'Seq' object does not support item assignment |
Trying to modify immutable Seq | Use MutableSeq instead |
TypeError: SeqRecord object argument must be a Seq object |
Passed string instead of Seq | Wrap string in Seq() |
| Missing annotations in output | Didn't set required annotations | Add molecule_type to annotations for GenBank output |
Decision Tree
Need to work with sequence data?
├── Just doing string-like operations?
│ └── Use Seq
├── Need to modify sequence in-place?
│ └── Use MutableSeq
├── Need metadata (ID, description, features)?
│ └── Use SeqRecord
└── Need to write to file?
└── Use SeqRecord with appropriate annotations
Related Skills
- sequence-io/read-sequences - Parse files to get SeqRecord objects
- sequence-io/write-sequences - Write SeqRecord objects to files
- transcription-translation - Transform Seq objects (DNA to protein)
- reverse-complement - Get reverse complement of Seq
- sequence-slicing - Slice and extract from Seq/SeqRecord
- database-access/entrez-fetch - Fetch sequences from NCBI as SeqRecords
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
vcf-annotator
Annotate VCF variants with VEP, ClinVar, gnomAD frequencies, and ancestry-aware context. Generates prioritised variant reports.
chemist-analyst
Analyzes events through chemistry lens using molecular structure, reaction mechanisms, thermodynamics, kinetics, and analytical techniques (spectroscopy, chromatography, mass spectrometry). Provides insights on chemical processes, material properties, reaction pathways, synthesis, and analytical methods. Use when: Chemical reactions, material analysis, synthesis planning, process optimization, environmental chemistry. Evaluates: Molecular structure, reaction mechanisms, yield, selectivity, safety, environmental impact.
bio-alignment-io
Read, write, and convert multiple sequence alignment files using Biopython Bio.AlignIO. Supports Clustal, PHYLIP, Stockholm, FASTA, Nexus, and other alignment formats for phylogenetics and conservation analysis. Use when reading, writing, or converting alignment file formats.
sleep-analyzer
分析睡眠数据、识别睡眠模式、评估睡眠质量,并提供个性化睡眠改善建议。支持与其他健康数据的关联分析。
metabolomics-workbench-database
Access NIH Metabolomics Workbench via REST API (4,200+ studies). Query metabolites, RefMet nomenclature, MS/NMR data, m/z searches, study metadata, for metabolomics and biomarker discovery.
bio-hi-c-analysis-matrix-operations
Balance, normalize, and transform Hi-C contact matrices using cooler and cooltools. Apply iterative correction (ICE), compute expected values, and generate observed/expected matrices. Use when normalizing or transforming Hi-C matrices.
Didn't find tool you were looking for?