将CDS的FASTA文件翻译为考虑开放阅读框的蛋白质
我有一个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'