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

如何在Snakemake中遍历嵌套列表元素以规范输出命名?

解决Snakemake中RUN与对应索引样本的路径配对问题

直接用列表推导式+expand就能搞定,不需要拆分SAMPLES列表,完美对应索引配对,同时生成单个样本的路径:

RUN_ID = ["run1", "run2"]
SAMPLES = [["A", "B", "C"], ["D","E","F"]]

# 生成目标路径列表
output_paths = [
    path 
    for run, samples_sub in zip(RUN_ID, SAMPLES) 
    for path in expand("results/{run}/{sample}.txt", run=run, sample=samples_sub)
]

原理说明

  • zip(RUN_ID, SAMPLES) 严格保证run1对应["A","B","C"],run2对应["D","E","F"],不会乱配对;
  • 内层的expand会把每个子列表里的样本单独展开,生成results/run1/A.txt、results/run1/B.txt这类单个样本的路径,而非把整个子列表塞进去;
  • 列表推导式把所有路径整合到一个列表里,直接可以用在rule all的input或者其他规则的output里。

如果要直接写在规则里,也可以这么用:

rule all:
    input:
        [
            path 
            for run, samples_sub in zip(RUN_ID, SAMPLES) 
            for path in expand("results/{run}/{sample}.txt", run=run, sample=samples_sub)
        ]

这种方式完全自动化,不用手动拆分SAMPLES,也不会出现错误配对的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 22:46:02