Snakemake:在规则运行中使用正则表达式

时间:2018-08-02 15:28:23

标签: python snakemake

我是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}
        """)

1 个答案:

答案 0 :(得分:0)

您需要使用输入函数从配置中检索fastq的路径。您是否做了官方教程(http://snakemake.readthedocs.io/en/stable/tutorial/tutorial.html)?它恰好涵盖了该用例。对于现实生活中的最佳做法,我建议进一步看看https://github.com/snakemake-workflows/docs