prodigal用于预测原核生物cds,平常会用来预测核苷酸序列的cds并且翻译成氨基酸序列,但是需要一条一条的执行,量大的话很麻烦,需要一直修改命令。
该软件使用时的命令格式为
prodigal -i /your/inputpath/1234_genomic.fasta -g 11 -a /your/outputpath/1234_prodigal_protein.faa
-i为输入的核苷酸序列文件,-g为密码子表(默认为11),-a为输出的氨基酸序列文件。这里我的习惯是序列文件名1234保持不变,用genomic代表基因组核苷酸序列,用prodigal_protein代表是使用prodigal预测翻译的氨基酸序列。批量执行的时候就需要不断的修改“1234”的内容。
为了进步一简化命令,希望只使用一个用户参数即可执行代码。如:
./prodigal.py -i input_folder #只输出文件夹名称作为用户参数
下面是代码,初学Python,这几行折腾了一下午。
#!/usr/bin/python
#20200829 By fujch Mail fujch@foxmail.com
#This code is for processing prodigal with multiple species
import os
import getopt
import sys
opts,args = getopt.getopt(sys.argv[1:],'-i:',['inputpath='])
for opt_name,opt_value in opts:
if opt_name in ('-i','--inputpath'):
path1 = '/home/prodigal/input/'+opt_value
path2 = '/home/prodigal/output/'+opt_value
if not os.path.exists(path2):
os.makedirs(path2)#自动创建输出文件夹
files = os.listdir(path1)
for file in files:
ifile = os.path.splitext(file)[0]#提取文件名且不带后缀名
ifile_str = str(ifile)
ofile_str = ifile_str[0:-8]+"_prodigal_protein.faa"
os.system("prodigal -i %s/%s -g 11 -a %s/%s" %(path1,file,path2,ofile_str))
代码可能有啰嗦的地方,救急能用就行,哈哈。
可以根据自己的需求修改代码适用不同的软件。