This is a test version of Biostars. For the public version, visit https://www.biostars.org.
extract molecular weight from SeqIO.index()

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.
biopython

0 answers

No answers yet.

Log in to answer this question.