0

我想遍历一个列表(样本名称),并使用 ipython 的系统 shell 命令(“!”)对每个样本重复相同的命令。我以前做过这个没有问题,但是在这个特定的代码下不断收到一个 SyntaxError。如果您知道出了什么问题,请告诉我-谢谢!

这是示例代码(实际上有更多示例):

samples = ["ERR007200", "ERR007204", "ERR007208"]
def remove_ambMap():
    !samtools view -q 20 -b home/pathToFile/{samp}.realn.bam | samtools sort - {samp}
for samp in samples:
    remove_ambMap()

请注意,samtools 是 $PATH 中的一个程序,如果我执行指定文件路径的命令,它可以工作 - 抱歉,这将无法重现,因为您需要安装该程序并且这些是大量基因组文件 - 我我希望有人能够发现问题所在!

4

1 回答 1

1

对于此类任务,您将使用该subprocess模块;最简单的方法是使用该call方法shell=True

from subprocess import call

def remove_ambMap(samp):
    call('samtools view -q 20 -b home/pathToFile/{samp}.realn.bam '
         '| samtools sort - {samp}'.format(samp=samp), shell=True)

for samp in samples:
    remove_ambMap(samp)
于 2015-03-09T20:59:27.887 回答