| 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 |
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)
seq[0]
seq[-1]
seq[0:10]
str(seq)
'ATG' in seq
seq.count('G')
seq.find('ATG')
seq.upper()
seq.lower()
seq * 3
seq.strip()
MutableSeq - Mutable Sequence
For in-place modifications when performance matters.
mut_seq = MutableSeq('ATGCGATCG')
mut_seq[0] = 'C'
mut_seq[0:3] = 'GGG'
mut_seq.append('A')
mut_seq.insert(0, 'G')
mut_seq.pop()
mut_seq.remove('G')
mut_seq.reverse()
Convert between types:
seq = Seq(mut_seq)
mut_seq = MutableSeq(seq)
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
record.id
record.name
record.description
record.features
record.annotations
record.letter_annotations
record.dbxrefs
SeqRecord Methods
Transform entire records while preserving metadata:
rc_record = record.reverse_complement(id='gene1_rc', description='reverse complement')
protein_record = record.translate(id='gene1_protein')
fasta_str = record.format('fasta')
genbank_str = record.format('genbank')
Slicing preserves features (adjusted to new coordinates):
subset = record[10:50]
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')
Join Sequences into One SeqRecord
combined_seq = seq1 + Seq('NNNN') + seq2
combined_record = SeqRecord(combined_seq, id='combined')
Transform SeqRecord with reverse_complement
record = SeqRecord(Seq('ATGCGATCGATCG'), id='gene1', description='Forward strand')
rc_record = record.reverse_complement(id=f'{record.id}_rc', description='Reverse complement')
Translate SeqRecord to Protein
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'))
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 - Fetch sequences from NCBI as SeqRecords