snakemake

时间:2018-02-15 12:08:22

标签: snakemake

我通过两组条形码解复用测序读数。首先,我使用一组条形码来解复用到样本中,接下来,必须使用第二组条形码再次解复用每个样本以获得一些子样本。在每个步骤中,都不知道将生成多少文件,因为我不知道我的所有条形码是否都在读取文件中。似乎使用动态规则的情况。对于我的玩具示例而言,解复用的第一阶段非常简单,其中afile.csv是一个名称列表,例如>prod1.fastq,每行一个产品:

rule all:
input: dynamic("{product}.fastq")

rule demux:
input: "afile.csv"
output: dynamic("{product}.fastq")
shell: '''
        cd demux
        cat ../{input} | sed "s/>//g" | xargs touch
        cd ..
       '''  

现在,我想到了另一个规则demux2,在这个玩具示例中,每个产品创建2个文件。我一直在尝试失败:

rule all:
input: dynamic("{product2}.fastq")

rule demux:
input: "afile.csv"
output: dynamic("{product}.fastq")
shell: '''
        cd demux
        echo {input}
        cat ../{input} | sed "s/>//g" | xargs touch
        cd ..
       '''  

rule demux2:
input: dynamic("{product}.fastq")
output: dynamic("{product2}.fastq")
shell: '''
    echo {input} | sed 's/.fastq/_ITS1.fastq/g' | xargs touch
    echo {input} | sed 's/.fastq/_ITS2.fastq/g' | xargs touch
    ''' 

或者替代方案:

rule all:
input: dynamic("{product}_{its}.fastq")

rule demux:
input: "afile.csv"
output: dynamic("{product}.fastq")
shell: '''
        cd demux
        echo {input}
        cat ../{input} | sed "s/>//g" | xargs touch
        cd ..
       '''  

rule demux2:
input: dynamic("{product}.fastq")
output: dynamic("{product}_{its}.fastq")
shell: '''
    echo {input} | sed 's/.fastq/_ITS1.fastq/g' | xargs touch
    echo {input} | sed 's/.fastq/_ITS2.fastq/g' | xargs touch
    ''' 

关于如何解决这个问题的任何想法。在下一个流程中它很容易,但我想在snakemake中进行,这是使用测序数据最常见的情况之一......

0 个答案:

没有答案