0

(サンプル名の) リストを反復処理し、ipython のシステム シェル コマンド ("!") を使用して、サンプルごとに同じコマンドを繰り返します。以前にこれを問題なく実行しましたが、この特定のコードで 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 に答える