【问题标题】:How to use every line in .txt file as new input for snakemake如何使用.txt文件中的每一行作为snakemake的新输入
【发布时间】:2022-07-06 15:29:32
【问题描述】:

我有一个文件“filenames.txt”:

a.txt
b.txt
c.txt
d.txt

我想在snakemake 中使用这些行作为输入。有谁知道我该怎么做?

【问题讨论】:

  • 这能回答你的问题吗? Snakemake - How do I use each line of a file as an input?(参考答案第二部分)
  • 我对snakemake一无所知,因此无法真正回答您的问题。但是你有没有试过用谷歌搜索dynamic importdynamic file names 或类似的东西?快速搜索会为我产生几个结果,包括:stackoverflow.com/questions/57327210/…(这是一种稍微不同的方法,它将读取目录中的所有 .txt 文件,但需要考虑一下)。使用您的方法,我假设您可以读取原始文件名.txt,然后遍历每一行,并在循环内读取每个文件。

标签: snakemake


【解决方案1】:

您可以在蛇文件中使用 python。以下是获取文件名列表的方法:

with open('filenames.txt') as fh:
    filenames = [line.strip() for line in fh]

那么,我不确定您打算如何使用这些文件名。 如果您希望您的工作流程创建这些文件,则应将其设为顶部 all 规则的 input 部分:

rule all:
    input: filenames

而且你当然应该有一个可以创建这样一个文件的规则:

rule create_file:
    output: "{letter}.txt"
    shell:
        """
        touch {output[0]}
        """

【讨论】:

    猜你喜欢
    • 2021-10-23
    • 2022-08-06
    • 1970-01-01
    • 1970-01-01
    • 2013-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多