将CDS的FASTA文件翻译为考虑开放阅读框的蛋白质

1 投票
1 回答
751 浏览
提问于 2025-04-17 20:49

我有一个FASTA文件,里面是一些核苷酸序列。我需要把这些序列翻译成蛋白质,但要考虑三种阅读框(也就是从不同的位置开始读取,比如+1是'ATG',+2是'TG',+3是'G')。这段简单的代码使用BioPython在+1阅读框下工作得很好。但是对于另外两个阅读框,它的翻译结果就不一样了。有没有办法在BioPython中指定阅读框呢?

输入文件

>contig20
TGGATCGGCGAGACCGACTCCGAGCGCGCCGACGTCGCCAAGGGATGGGCGTCCCTCCAGGTAAACCAACCCT
CTTCCCATCAAATTCTTTTTACCATGCAATATAGTCGTCGGTGTCGATCACTGTCATGCATATGGATTGGATT
AAACATGTCGCGGTCTCGTCGTTGCACGTTTCTTTCTTGCTTAACCACCTACCAATAGCAGCTGGTTGTAGCT
AGGTCGCTGCTGGGGATTGAAATCTTCAGCTTTAAGATGACAGCGACGACGCCATGGTCGGTCGCCCGGTCGT
GATCACCTACTCCAATTTACTGGAAAAATGATGATTTGTAAACGTGCATGCATGTTCCTTCAACCTTTTGTTA

期望的输出文件

>contig20 Translated - Frame 3
DRRDRLRARRRRQGMGVPPGKPTLFPSNSFYHAI*SSVSITVMHMDWIKHVAVSSLHVSFLLNHLPIAAG
CS*VAAGD*NLQL*DDSDDAMVGRPVVITYSNLLEK**FVNVHACSFNLLL

脚本

from Bio.SeqRecord import SeqRecord
def make_protein_record(nuc_record):
"""Returns a new SeqRecord with the translated sequence (default table)."""
    return SeqRecord(seq = nuc_record.seq.translate(), \
                 id = "trans_" + nuc_record.id, \
                 description = "translation of CDS, using default table")

from Bio import SeqIO
proteins = (make_protein_record(nuc_rec) for nuc_rec in \
        SeqIO.parse("file.fasta", "fasta"))
SeqIO.write(proteins, "translations.fasta", "fasta")

1 个回答

1

你难道不能直接这样做吗

from Bio.Seq import translate

contig = 'TGGATCGGCGAGACCGACTCCGAGCGCGCCGACGTCGCCAAGGGATGGGCGTCCCTCCAGGTAAACCAACCCT'
print 'ORF 1'
print translate(contig)
print 'ORF 2'
print translate(contig[1:])
print 'ORF 3'
print translate(contig[2:])

这样做会得到

'ORF 1'
'WIGETDSERADVAKGWASLQVNQP'
'ORF 2'
'GSARPTPSAPTSPRDGRPSR*TNP'
'ORF 3'
'DRRDRLRARRRRQGMGVPPGKPT'

撰写回答