Entering edit mode
4.3 years ago
sam.vanbergen8
•
0
How can I for example print the molecular weight for each DNA record in a dictionary generated with SeqIO.index()
?
I know I need to use SeqUtils.molecular_weight()
but I don't know how.
Generating a fasta file:
from Bio.SeqUtils import molecular_weight
from Bio.Alphabet.IUPAC import protein, unambiguous_dna
from Bio.Seq import Seq
from Bio.SeqRecord import SeqRecord
import Bio.SeqIO
def generate_sequence(min_len, max_len, alphabet):
length = random.randint(min_len, max_len)
return Seq(''.join(random.choices(alphabet.letters, k=length)), alphabet=alphabet)
def generate_seq_records(nr_seqs, min_len, max_len, alphabet):
records = list()
for i in range(1, nr_seqs + 1):
seq_id = f'seq_{i:03d}'
seq = generate_sequence(min_len, max_len, alphabet)
records.append(SeqRecord(seq, id=seq_id, description=f'fragment {i}'))
return records
Bio.SeqIO.write(generate_seq_records(20, 3, 8, unambiguous_dna), 'dna_fragments.fasta', 'fasta')
My code:
record_dict = SeqIO.index('dna_fragments.fasta', 'fasta')
for record in record_dict:
print(record_dict.get_raw(record).decode())
Output:
>seq_001 fragment 1
CGTTTTTG
>seq_002 fragment 2
TAAGGAAA
etc.
What I want:
>seq_001 fragment 1
CGTTTTTG
'molecular weight 1'
>seq_002 fragment 2
TAAGGAAA
'molecular weight 2'
etc.