【发布时间】:2019-05-23 08:33:28
【问题描述】:
我是使用snakemake 的新手,在snakemake 中进行映射时遇到一个简单的问题。我有几对 _1.fastq.gz 和 _2.fastq.gz,我想为大约 10 对 fastq.gz 做对端映射。所以我为此写了一个snakemake文件。
import os
import snakemake.io
import glob
(SAMPLES,READS,) = glob_wildcards("raw/{sample}_{read}.fastq.gz")
READS=["1","2"]
REF="/data/data/reference/refs/ucsc.hg19.fasta.gz"
rule all:
input: expand("raw/{sample}.bam",sample=SAMPLES)
rule bwa_map:
input:
ref=REF,
r1=expand("raw/{sample}_{read}.fastq.gz",sample=SAMPLES,read=READS),
r2=expand("raw/{sample}_{read}.fastq.gz",sample=SAMPLES,read=READS)
output: "raw/{sample}.bam"
shell: "bwa mem -M -t 8 {input.ref} {input.r1} {input.r2} | samtools view -Sbh - > {output}"
错误:
RuleException:
CalledProcessError in line 17 of /data/data/Samples/snakemake-example/WGS-test/step2.smk:
Command ' set -euo pipefail; bwa mem -M -t 8 /data/data/reference/refs/ucsc.hg19.fasta.gz raw/sub1_1.fastq.gz raw/sub1_2.fastq.gz raw/sub2_1.fastq.gz raw/sub2_2.fastq.gz raw/sub1_1.fastq.gz raw/sub1_2.fastq.gz raw/sub2_1.fastq.gz raw/sub2_2.fastq.gz raw/sub1_1.fastq.gz raw/sub1_2.fastq.gz raw/sub2_1.fastq.gz raw/sub2_2.fastq.gz raw/sub1_1.fastq.gz raw/sub1_2.fastq.gz raw/sub2_1.fastq.gz raw/sub2_2.fastq.gz | samtools view -Sbh - > raw/sub2.bam ' returned non-zero exit status 1.
File "/data/data/Samples/snakemake-example/WGS-test/step2.smk", line 17, in __rule_bwa_map
File "/root/miniconda3/envs/bioinfo/lib/python3.6/concurrent/futures/thread.py", line 56, in run
我想要的输出就像生成所有 10 个 bam 文件一样
sub1.bam sub2.bam sub3.bam ...
看起来像是把所有的 fastq 文件放到一个命令中。如何在不使用硬代码方法的情况下将它们分开并自动成对运行。请指教。
【问题讨论】:
-
这是snakemake初学者的常见问题(例如stackoverflow.com/q/50828233/1878788):
expand通常只在需要从多个“上游”规则实例收集结果的规则输入中需要.all规则通常用于进行此收集。
标签: python bioinformatics snakemake snakeyaml