2016-11-18 18 views
2

bcl2fastqを実行して、bcl形式からfastqファイルを生成したいとします。シーケンシングモードとどのように多くのインデックスを使用して、それはREAD1、READ2、index1のかREAD1のいずれかを生成することができ、READ2、index1の、INDEX2に関して設定シーケンシングによってsnakemake:ルールからの出力の可変数を処理する方法

など

私がしたいのか行うこのようconfig.yamlファイルの読み出し出力番号情報を入れて、次のとおりです。

readids: ['I1','I2','R1','R2'] 

、それが生成する必要がありますどのように多くの読み取り出力(fastq.gzファイル)に自動的にルールのフィギュアを出してみましょう。

達成するために出力セクションを作成するにはどうすればよいですか?

以下は私が持っているもので、何とか毎回このルールから1つのファイルしか出力できません。実際には、このルールをI1、I2、R1、R2それぞれについて4回実行しますが、これは私が望むものではありません。それを45行で修正する方法は? 45行目の{readid}は、I1,I2,R1,R2のいずれかとする。

39 rule bcl2fastq:                                     
40  input: 
41   "/data/MiniSeq/test" 
42  params: 
43   prefix="0_fastq" 
44  output: 
45   "0_fastq/{runid}_S0_L001_{readid}_001.fastq.gz" 
46  log: 
47   "0_fastq/bcl2fastq_log.txt" 
48  shell: 
49   """ 
50   bcl2fastq -R {input} -o {params.prefix} --create-fastq-for-index-reads --barcode-mismatches 1 --use-bases-mask {config[bcl2mask]} --minimum-trimmed 
    -read-length 1 --mask-short-adapter-reads 1 --no-bgzf-compression &> {log} 
52   
53   """ 

答えて

5

expand() functionは、基本的に指定された変数を入力し、出力ファイルのリストを返します。あなただけの(二重の中括弧を使用)「の書式を乗り切る」する必要があり、ワイルドカードをエスケープするように注意する必要があります。

だからあなたの場合には

output: 
     expand("0_fastq/{{runid}}_S0_L001_{readid}_001.fastq.gz", readid=config['readids']) 

これは設定で指定した値でreadid置き換えます[ 'readids ']を実行して、runidを残してください。

アンドレアス

+3

お返事ありがとうございました。私はドキュメントで二重中括弧の使い方を見逃していました。これは重要なポイントであり、その使用法をよりよく説明するためにいくつかの文章を追加するほうが良いでしょう。 – olala

関連する問題