スネークメークファイルにこのルールがあります。起動時に、入力ファイルはyamlファイルにあるすべての入力から読み込まれます。私は、bwaの各プロセスに1つのユニットキーを設定することを期待しています。 ここにルールとYamlファイル(完全ではない)とドライランの結果があります。 スネークメイクアライメントコマンドのyaml解釈を理解してください
rule bwa_mem:
input:
dt=expand("trim/{sample}/",sample=config['units']),
forward_paired=expand("trim/{sample}/{sample}_forward_paired.fq.gz",sample=config['units']),
reverse_paired=expand("trim/{sample}/{sample}_reverse_paired.fq.gz",sample=config['units']),
forward_unpaired=expand("trim/{sample}/{sample}_forward_unpaired.fq.gz",sample=config['units']),
reverse_unpaired=expand("trim/{sample}/{sample}_reverse_unpaired.fq.gz",sample=config['units']),
output:
temp("mapped_reads/sam/{unit}.sam")
params:
genome= config["reference"]['genome_fasta']
log:
"mapped_reads/log/{unit}_bwa_mem.log"
benchmark:
"benchmarks/bwa/mem/{unit}.txt"
threads: 8
shell:
'/illumina/software/PROG2/bwa-0.7.15/bwa mem '\
'-t {threads} {params.genome} {input.forward_paired} {input.reverse_paired} {input.forward_unpaired} {input.reverse_unpaired} 2> {log} > {output}'
そして、このYAMLファイルの設定:
'samples':
'432':
- '432_L001'
- '432_L002'
'433':
- '433_L002'
- '433_L001'
'434':
- '434_L001'
- '434_L002'
'435':
- '435_L002'
- '435_L001'
....
'units':
'432_L001':
- '/illumina/runs/FASTQ/RAW/432_CGATGT_L001_R1_001.fastq.gz'
- '/illumina/runs/FASTQ/RAW/432_CGATGT_L001_R2_001.fastq.gz'
'432_L002':
- '/illumina/runs/FASTQ/RAW/432_CGATGT_L002_R1_001.fastq.gz'
- '/illumina/runs/FASTQ/RAW/432_CGATGT_L002_R2_001.fastq.gz'
'433_L001':
- '/illumina/runs/FASTQ/RAW/433_CAGATC_L001_R1_001.fastq.gz'
- '/illumina/runs/FASTQ/RAW/433_CAGATC_L001_R2_001.fastq.gz'
'433_L002':
- '/illumina/runs/FASTQ/RAW/433_CAGATC_L002_R1_001.fastq.gz'
- '/illumina/runs/FASTQ/RAW/433_CAGATC_L002_R2_001.fastq.gz'
'434_L001':
- '/illumina/runs/FASTQ/RAW/434_GTGAAA_L001_R1_001.fastq.gz'
- '/illumina/runs/FASTQ/RAW/434_GTGAAA_L001_R2_001.fastq.gz'
'434_L002':
- '/illumina/runs/FASTQ/RAW/434_GTGAAA_L002_R1_001.fastq.gz'
- '/illumina/runs/FASTQ/RAW/434_GTGAAA_L002_R2_001.fastq.gz'
'435_L001':
- '/illumina/runs/FASTQ/RAW/435_ACAGTG_L001_R1_001.fastq.gz'
- '/illumina/runs/FASTQ/RAW/435_ACAGTG_L001_R2_001.fastq.gz'
私は彼がコマンドは、すべての入力ファイルを報告し、これは単位上の任意の要素について
rule bwa_mem:
input: trim/432_L001/432_L001_reverse_unpaired.fq.gz, trim/432_L002/4
32_L002_reverse_unpaired.fq.gz, trim/433_L001/433_L001_reverse_unpaired.f
q.gz, trim/433_L002/433_L002_reverse_unpaired.fq.gz, trim/434_L001/434_L0
01_reverse_unpaired.fq.gz, trim/434_L002/434_L002_reverse_unpaired.fq.gz,
trim/435_L001/435_L001_reverse_unpaired.fq.gz, trim/435_L002/435_L002_re
verse_unpaired.fq.gz, trim/436_L001/436_L001_reverse_unpaired.fq.gz, trim
/436_L002/436_L002_reverse_unpaired.fq.gz, trim/437_L001/437_L001_reverse
_unpaired.fq.gz, trim/437_L002/437_L002_reverse_unpaired.fq.gz, trim/438_
L003/438_L003_reverse_unpaired.fq.gz, trim/438_L004/438_L004_reverse_unpa
ired.fq.gz, trim/lane1_L001/lane1_L
001_reverse_paired.fq.gz, trim/lane2_L002/lane2_L002_reverse_paired.fq.gz
, trim/lane8_L008/
output: mapped_reads/sam/441_L004.sam
log: mapped_reads/log/441_L004_bwa_mem.log
jobid: 208
benchmark: benchmarks/bwa/mem/441_L004.txt
wildcards: unit=441_L004
をもたらしたBWA実行しようとします..どこで私は間違いをしたのですか?
BWAは、ワイルドカードを使用して、代わりに{}のサンプルを評価する必要があります。 {サンプル}の評価は、ここでは表示されない「すべての」ルールで行う必要があります。また、サンプルとユニットの3次ネストも考慮してください。サンプルの第2レベルは、第1レベルの単位に相当します。私はこれを単純に拡張パターンと組み合わせることができると思います。現在のシステムでは、チェックサンプル[X] [Y] == units [X]を必要としますが、参照の形式は1つだけです。これはもはや必要ありません。 – TBoyarski