0

ファイル(スプレッドシートなど)からデータを取得し、キーのループで反復処理できる辞書を作成し、対応する値を各キーのコマンドに挿入できるようにしたいと考えています。意味が分からなかったらすみません、以下で詳しく説明します。

バイオインフォマティクス パイプラインで実行しているサンプルがいくつかあり、プロセスを自動化しようとしています。手順の 1 つは、次のシェル コマンドで実行されるファイルに「読み取りグループ」情報を追加することです。

picard-tools AddOrReplaceReadGroups I=input.bam O=output.bam RGID=IDXX RGLB=LBXX RGPL=PLXX RGPU=PUXX RGSM=SMXX VALIDATION_STRINGENCY=SILENT SORT_ORDER=座標 CREATE_INDEX=true

サンプル ID ごとに、異なる RGID、RGLB、GRPL、RGPU、および RGSM があります (および異なる入力ファイルですが、その情報を呼び出す方法は既に知っています)。各サンプル ID と、対応する RGLB、GRPL、RGPU、および RGSM がコマンドに挿入されます。これを行う簡単な方法はありますか?私は少し読んでいて、辞書がおそらく道のりのように思えますが、辞書を生成して独立した値をコマンドに呼び出す方法が明確ではありません。

4

1 に答える 1

0

これは非常に簡単なはずですが、その方法は入力ファイルの形式によって異なります。基本的に次のようなものが必要になります。

import subprocess # This is how we're going to call the commands.

samples = {} # Empty dict
with open('inputfile','r') as f:
    for line in f:
        # Extract sampleID, other things depending on file format...

        samples[sampleID] = [rgid, rglb, grpl, rgpu, rgsm] # Populate dict

for sampleID in samples:
    rgid, rglb, grpl, rgpu, rgsm = samples[sampleID]

    # Now you can run your commands using the subprocess module.
    # Remember to add a change based on sampleID if e.g. the IO files differ.
    subprocess.call(['picard-tools', 'AddOrReplaceReadGroups', 'I=input.bam', 
        'O=output.bam', 'RGID=%s' % rgid, 'RGLB=%s' % rglb, 'RGPL=%s' %rgpl,
        'RGPU=%s' % rgpu, 'RGSM=%s' % rgsm, 'VALIDATION_STRINGENCY=SILENT', 
        'SORT_ORDER=coordinate', 'CREATE_INDEX=true'])
于 2013-03-07T18:45:45.063 に答える