Python Snakemake:仅扩展通配符的子集
我找不到解决这个可能很容易的问题的方法: 我有一个snakefile,它首先生成以下文件:Python Snakemake:仅扩展通配符的子集,python,bioinformatics,snakemake,Python,Bioinformatics,Snakemake,我找不到解决这个可能很容易的问题的方法: 我有一个snakefile,它首先生成以下文件: 数据/样本1_P1.txt 数据/样本1_P2.txt 数据/样本2_P1.txt 数据/样本2_P2.txt 在下一步中,它只是将文件连接到一个文件concatenated/concatenated.txt 这是最小的、可重复的示例: pairs = {"P1" : "P1", "P2" : "P2"} samples = { "sample1": "sample1", "samp
- 数据/样本1_P1.txt
- 数据/样本1_P2.txt
- 数据/样本2_P1.txt
- 数据/样本2_P2.txt
concatenated/concatenated.txt
这是最小的、可重复的示例:
pairs = {"P1" : "P1", "P2" : "P2"}
samples = {
"sample1": "sample1",
"sample2": "sample2"
}
rule all:
input: "concatenated/concatenated.txt"
rule get_txt_files:
output:
"data/{sample}_{pair}.txt"
shell:
"""
echo 1 > {output}
"""
rule concatenate:
input:
expand("data/{sample}_{pair}.txt", sample=samples, \
pair=pairs)
output:
"concatenated/concatenated.txt"
shell:
"cat {input} > {output};"
我的问题很简单:如何修改规则连接
,使其连接具有相同示例名称的文件
预期的产出将是:
- 串联/sample1.txt
- 串联/sample2.txt
- 数据/样本1/样本1\u P1
- 数据/样本1/样本1\u P2
- 数据/样本2/样本2_P1
- 数据/样本2/样本2\u P2
pairs = {"P1" : "P1", "P2" : "P2"}
samples = {
"sample1": "sample1",
"sample2": "sample2"
}
rule all:
input: expand("data/{sample}/{sample}_{pair}.txt", sample=samples, pair = pairs)
rule get_txt_files:
output:
"data/{sample}_{pair}.txt"
shell:
"""
echo 1 > {output}
"""
rule reorganise:
input:
expand("data/{{sample}}_{pair}.txt", \
pair=pairs)
output:
"data/{sample}/{sample}_{pair}.txt"
shell:
"mv {input} data/{wildcards.sample}/.;"
你能发现问题吗
提前多谢
rule concatenate:
input:
expand("data/{{sample}}_{pair}.txt", pair=pairs)
output:
"concatenated/{sample}.txt"
shell:
"cat {input} > {output};"
在评论中回答问题:
from snakemake.io import expand # automatically imported in Snakemake
expand("data/{{sample}}_{pair}.txt", pair="A B C".split())
# ['data/{sample}_A.txt', 'data/{sample}_B.txt', 'data/{sample}_C.txt']
rule all:input:expand(“concatenated/{sample}.txt”,sample=samples)
谢谢。我没有意识到{{}}
符号。它是否基本上具有在直接环境中不解析的功能(即此处的扩展功能)?没问题;它是常规Python,用于避免格式化:“{hi}}}{u{hi}.format(hi=“hei”)
变为“{hi}uhei”。我再次更新了我的问题。我对snakemake如何使用通配符有点困惑。我将非常感谢您在第二个问题上的帮助。您必须描述您的问题:您得到了什么输出?你希望或期待什么?请创建一个新问题:)我已将问题发布在此处: