You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Snakemake使用checkpoint无需建文件夹 提取表头作为rule all通配符方案

解决方案

核心思路是使用Snakemake原生的checkpoint机制处理「上游规则输出动态决定下游通配符取值」的场景,全程不会生成额外文件夹,完全符合需求。

完整修改后代码

import pandas as pd

# 将生成fruit_file.csv的规则标记为checkpoint,标识其输出会影响后续通配符解析
checkpoint create_file:
    output:
        fruit = 'fruit_file.csv'
    run:
        # 此处保留你原本生成fruit_file.csv的逻辑
        pass

# 定义解析函数:checkpoint执行完成后读取表头,返回可用的fruit取值列表
def get_fruit_names(wildcards):
    ck_output = checkpoints.create_file.get().output.fruit
    df = pd.read_csv(ck_output, sep='\t', header=0)
    return df.columns.tolist()[2:]

rule all:
    input: 
        final_report = expand('report_{fruit}.txt', fruit=get_fruit_names)

# 调整next规则,每个fruit对应一个独立的输出实例,由Snakemake自动匹配调度
rule next:
    input:
        fruit = 'fruit_file.csv'
    output:
        report = 'report_{fruit}.txt'
    run:
        # 可通过wildcards.fruit直接获取当前任务对应的水果名,执行你的生成逻辑
        shell(f"touch {output.report}")

方案说明

  • 不会生成额外文件夹的原因:官方示例出现文件夹是因为示例将通配符放在了目录层级(如{sample}/output.txt),本方案中通配符仅出现在文件名部分,全程没有新增目录的逻辑,自然不会产生多余文件夹。
  • 该方案完全遵循Snakemake的调度逻辑,支持并行执行、断点重跑,适配你提到的100-200个通配符取值的场景不会有额外性能开销。

内容的提问来源于stack exchange,提问作者Rikke Jacobsen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 08:36:02