我是sankemake的新手,我试图运行此代码,但出现错误。 我的输入目录结构如下:
Library:
-MMETSP1:
SRR1_1.fastq.gz
SRR1_2.fastq.gz
-MMETSP2:
SRR2_1.fastq.gz
SRR2_2.fastq.gz
所以我要为每个目录运行两次规则。为此,我在所有规则中都使用了expand函数,并且我有两个工作要由snakemake进行计数。对我来说很好。但是我的探究不是要在目录中检索fasta文件。 为此,我在执行命令时使用了正则表达式,但是它不起作用。 有谁可以帮助我吗。 预先谢谢您!
#!/usr/bin/python
import os
import glob
import sys
SALMON_BY_LIBRARY_DIR = OUT_DIR + "salmon_by_library_out"
salmon = config["software"]["salmon"]
(LIBRARY, FASTQ, SENS) = glob_wildcards(LIBRARY_DIR + "{mmetsp}/{reads}_{type}.fastq.gz")
rule all:
input:
salmon_by_library_out = expand(SALMON_BY_LIBRARY_DIR + "/" + "{mmetsp}", zip, mmetsp=LIBRARY),
rule salmon_by_library:
input:
transcript = TRINITY_DIR + "/Trinity.fasta",
fastq = LIBRARY_DIR + "{mmetsp}",
output:
salmon_out = directory(SALMON_BY_LIBRARY_DIR + "/" + "{mmetsp}"),
log:
OUT_DIR + "{mmetsp}/salmon.log"
threads:
config["threads"]["salmon"]
params:
trimmomatic_dir = directory(TRIMMOMATIC_DIR)
run:
shell(""" mkdir -p {output.salmon_out}/index """)
shell("""
{salmon}
index \
-t {input.transcript} \
-i {output.salmon_out}/index \
--type quasi \
-k 31 \
-p {threads} > {log} &&
{salmon}
quant \
-i {output.salmon_out}/index \
-l A \
-1 {input.fastq}/*_1.fastq.gz \
-2 {input.fastq}/*_2.fastq.gz \
-o {output.salmon_out} \
-p {threads} > {log}
""")
答案 0 :(得分:0)
您需要使用输入函数从配置中检索fastq的路径。您是否做了官方教程(http://snakemake.readthedocs.io/en/stable/tutorial/tutorial.html)?它恰好涵盖了该用例。对于现实生活中的最佳做法,我建议进一步看看https://github.com/snakemake-workflows/docs。