python - Snakemake:如何在 config.yml 文件中保存和访问示例详细信息?

标签 python snakemake

当示例名称未写入 snakemake 工作流程时,任何人都可以帮助我了解是否可以从 config.yml 文件访问示例详细信息?这样我就可以为不同的项目重复使用工作流,并且只调整配置文件。让我举个例子:

我有四个属于同一类的样本,应该一起分析。它们被称为 sample1-4。每个示例都带有一些更多信息,但为了简单起见,我们假设它只是一个名称标签,例如 S1、S2 等。

我的 config.yml 文件可能如下所示:

samples: ["sample1","sample2","sample3","sample4"]

sample1:
  tag: "S1"
sample2:
  tag: "S2"
sample3:
  tag: "S3"
sample4:
  tag: "S4"

这是我们使用的 snakefile 的示例:

configfile: "config.yaml"

rule final: 
  input: expand("{sample}.txt", sample=config["samples"])

rule rule1:
  output:  "{sample}.txt"
  params:  tag=config["{sample}"]["tag"]
  shell:   """
           touch {output}
           echo {params.tag} > {output}

rule1 试图做的是创建一个以每个样本命名的文件,该样本保存在配置文件的 samples 变量中。到目前为止没问题。然后,我想将示例标签打印到该文件中。正如上面所写的代码,运行 snakemake 将失败,因为 config["{sample}"] 将逐字查找 {sample} 变量在不存在的配置文件中,因为我需要将其替换为运行规则的当前样本,例如示例 1

有谁知道这是否可以做到,如果可以,我该怎么做?

理想情况下,我想进一步压缩信息(见下文),但这还需要进一步的努力。

samples:
    sample1:
        tag: "S1"
    sample2:
        tag: "S2"
    sample3:
        tag: "S3"
    sample4:
        tag: "S4"

最佳答案

我建议使用制表符分隔的文件来存储样本信息。

示例.tab:

Sample     Tag      
1          S1   
2          S2

您可以将此文件的路径存储在配置文件中,并在您的 Snakefile 中读取它。

配置文件:

sample_file: "sample.tab"

蛇文件:

configfile: "config.yaml"

sample_file = config["sample_file"]

samples = read_table(sample_file)['Sample']
tags    = read_table(sample_file)['Tag']

这样您就可以对任意数量的 sample 和任意数量的色谱柱重复使用您的工作流程。

除此之外,在 Snakemake 中,通常你可以通过将大括号加倍来转义大括号,也许你可以试试。

祝你好运!

关于python - Snakemake:如何在 config.yml 文件中保存和访问示例详细信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48174374/

相关文章:

python - 使用 __init__.py 组织导入

python - 多页抓取期间出现 NoneType 错误

python - 对 'quote-new' 进行反向操作,未找到参数 '()' 和关键字参数 '{}'。尝试了 0 个模式 : []

python - 如何在关键字 wildcard_constraints 中使用通配符

python - Snakemake PICARD合并bam文件

snakemake - Snakemake 如何处理由于并行运行的规则同时附加到单个文件而可能发生的损坏?

python - 在Python循环中从列表中删除元素的奇怪行为

python - 显示异常错误的位置

solver - "Select jobs to execute..."永远运行

python - 具有Python脚本,conda和集群的SnakeMake规则