无需从头开始即可在 Snakemake 工作流程的多组输入之间切换

问题描述 投票:0回答:1

我正在构建 Snakemake 工作流程来分析外显子组测序数据。

工作流程需要一组一个样本的输入文件;有时,我需要处理其他样本,但是当我对工作流程进行小修改时,我该如何做才能拾取前向样本?

我不希望 Snakemake 从一开始就运行整个过程,因为这会花费相当长的时间。我希望它可以从我所做的更改重新开始。令人沮丧的是,在第二个样本上运行该过程似乎会覆盖第一次运行的记录,因此我只能从头开始分析第一个样本。

我正在尝试将

Snakefile
复制到其他地方,并为其准备一个新的
configfile
。我认为这不是一个好主意,为每个
Snakefile
构建 conda 环境花费了我很多时间。

workflow snakemake
1个回答
0
投票

令人沮丧的是,在第二个样本上运行该过程似乎 覆盖第一次运行的记录,所以只能开始 从头开始分析第一个样本。

这看起来像是规则中定义路径的方式存在问题。您是否在输出和输入中使用通配符来区分样本?路径应从样本名称派生,因此它是唯一的,因此在运行其他样本的工作流程时不会重写。

让我们看一个简单的例子,有 2 个样本:A、B。

SAMPLE_TO_USE = "A" # taken from the config or some other way

rule all:
    input:
        result=f"results/{SAMPLE_TO_USE}.txt",

rule do_something_with_sample:
    input:
        fastq="data/{sample}.fastq",
    output:
        result="results/{sample}.txt",
    ...

当您在配置中提供要使用示例

A
时,第一条规则 (
all
) 将请求生成“results/A.txt”。然后当你想使用样本
B
时,第一条规则(
all
)将请求生成“results/B.txt”。

其次,您可以使用

snakemake --conda-prefix {DIR}
{DIR]
中安装conda envs。这样,您只需对所有工作流程使用一个中央 {DIR},即可将已安装的 conda env 从一次运行共享到其他运行。

© www.soinside.com 2019 - 2024. All rights reserved.