将cds序列翻译成蛋白序列 , 由于不同的物种或者特殊的细胞器(线粒体等)的密码子存在差异,我们不能随便默认的进行翻译,这里的biopython可以根据我们的需要使用不同的密码子进行蛋白翻译,密码子见:
1.普通的密码子翻译,rna翻译成蛋白质
>>> from Bio.Seq import Seq >>> from Bio.Alphabet import IUPAC >>> messenger_rna = Seq("AUGGCCAUUGUAAUGGGCCGCUGAAAGGGUGCCCGAUAG", IUPAC.unambiguous_rna) >>> messenger_rna Seq('AUGGCCAUUGUAAUGGGCCGCUGAAAGGGUGCCCGAUAG', IUPACUnambiguousRNA()) >>> messenger_rna.translate() Seq('MAIVMGR*KGAR*', HasStopCodon(IUPACProtein(), '*'))
2. cds序列翻译成蛋白序列
>>> from Bio.Seq import Seq >>> from Bio.Alphabet import IUPAC >>> coding_dna = Seq("ATGGCCATTGTAATGGGCCGCTGAAAGGGTGCCCGATAG", IUPAC.unambiguous_dna) >>> coding_dna Seq('ATGGCCATTGTAATGGGCCGCTGAAAGGGTGCCCGATAG', IUPACUnambiguousDNA()) >>> coding_dna.translate() Seq('MAIVMGR*KGAR*', HasStopCodon(IUPACProtein(), '*'))
3.指定密码子翻译成蛋白序列
>>> coding_dna.translate(table="Vertebrate Mitochondrial") Seq('MAIVMGRWKGAR*', HasStopCodon(IUPACProtein(), '*'))
或者用序号
>>> coding_dna.translate(table=2) Seq('MAIVMGRWKGAR*', HasStopCodon(IUPACProtein(), '*'))
密码子表信息见:https://www.ncbi.nlm.nih.gov/Taxonomy/Utils/wprintgc.cgi
更多python编程可以学习:python语言入门到精通
批量运行示例代码:
from Bio.Seq import Seq
from Bio import SeqIO
from Bio.Alphabet import IUPAC
from Bio.SeqRecord import SeqRecord
import sys, os, argparse, os.path,re,math,time
parser = argparse.ArgumentParser(description='This script is used to translate cds to pep')
#parser.add_argument('-m','--map',help='Please input ref mapped id file',required=True)
parser.add_argument('-f','--fasta',help='Please fasta file',required=True)
parser.add_argument('-o','--out_dir',help='Please input complete out_put directory path',default = os.getcwd(),required=False)
parser.add_argument('-t','--table',type=int,default=1,help=' genetic code :https://www.ncbi.nlm.nih.gov/Taxonomy/Utils/wprintgc.cgi, default table id 1',required=False)
parser.add_argument('-n','--name',default ='pep',required=False,help='Please specify the output, pep')
################################################################################
args = parser.parse_args()
dout=''
if os.path.exists(args.out_dir):
dout=os.path.abspath(args.out_dir)
else:
os.mkdir(args.out_dir)
dout=os.path.abspath(args.out_dir)
output_handle = open(dout+'/'+args.name+'.fa', "w")
for rec in SeqIO.parse(args.fasta, "fasta"):
rec.seq=rec.seq.translate(table=args.table)
SeqIO.write(rec, output_handle, "fasta")
output_handle.close()
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!