Shy*_*_LA 4 python parallel-processing bioinformatics
我不是程序员,因此简单的答案将不胜感激.我是医学博士,参与了生物信息学项目.
假设我有一个Python脚本,abc.py我有一个文本文件,commandline.txt有113个命令行,每行1个,这个脚本可以并行运行.我希望每个这些作业都在其自己的目录中运行,该目录名为scatter.001,scatter.002,...,scatter.113(每个只有一个唯一的编号),要在我执行的目录中创建来自的脚本.
我正在运行,Windows 7与Python 2.7.
这样做的命令行是什么?(python xyz\abc.py .......)
PS:
-p 100 -m 10000000 -e 10 -k I:\Exome\Invex\analyses\PatientSet.load_maf.pkl ,UBE2Q1,RNF17,RNF10,REM1,PMM2,ZNF709,ZNF708,ZNF879,DISC1,RPL37,ZNF700,ZNF707,CAMK4,ZC3H10,ZC3H13,RNF115,ZC3H14,SPN,HMGCLL1,CEACAM5,GRIN1,DHX8,NUP98,XPC,SP4,SP5,CAMKV,SPPL3,RAB40C,RAB40A,COL7A1,GTSE1,OVCH1,FAM183B,KIAA0831,SPPL2B,ITGA8,ITGA9,MYO3B,ATP2A2,ITGA1,ITGA2,ITGA3,ITGA5,RIT1,ITGA7,TRHR,LOC100132288,DENND4A,DENND4B,TAP2,GAP43,PAMR1,HRH2,HRH3,HRH1,FBXL18,FAM169B,GHDC,SDK1,SDK2,THSD4,THSD1,ZFP161,CHST8,COL4A5,COL4A4,COL4A3,COL4A2,COL4A1,CHST1,CHST5,CHST4,ITGAX I:\Exome\Invex\analyses\First7.final_analysis_set.maf I:\Exome\Invex\temp\unzipped_power_files First7 I:\Exome\Invex\analyses\First7.individual_set.txt I:\Exome\Invex\hg19.fasta I:\Exome\Invex\hg19_encoded_by_trinucleotide.fasta I:\Exome\Invex\TCGA.hg19.June2011.gaf I:\Exome\Invex\hg19 I:\Exome\Invex\pph2_whpss_reduced I:\Exome\Invex\cosmic_num_times_each_chr_pos_mutated.tab
Run Code Online (Sandbox Code Playgroud)
这是commandline.txt中一行的示例.我有113条这样的行,在文件中..
如果你这样做,你将进入Windows shell编程,没有人这样做.(我的意思是有人这样做,但他们是一个非常小的团体.)
如果您编写第二个python脚本循环遍历要传递给第二个脚本的参数,并使用这些参数调用functoin,那将是最简单的.
from subprocess import Popen
from os import mkdir
argfile = open('commandline.txt')
for number, line in enumerate(argfile):
newpath = 'scatter.%03i' % number
mkdir(newpath)
cmd = '../abc.py ' + line.strip()
print 'Running %r in %r' % (cmd, newpath)
Popen(cmd, shell=True, cwd=newpath)
Run Code Online (Sandbox Code Playgroud)
这将创建一个目录,并将该命令作为该目录中的单独进程运行.因为它不会在启动另一个子进程之前等待子进程完成,所以这给出了你想要的并列性.
串联版本只是在它启动另一个子进程之前等待.在循环结束时添加一行:
p = Popen(cmd, shell=True, cwd=newpath)
p.wait()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10430 次 |
| 最近记录: |