如何解决Snakemake:在一个规则中的每个输入文件之前插入样本名称
我正在尝试为生物信息学工具 FMAP 创建规则文件。 https://github.com/jiwoongbio/FMAP
我一直在为 FMAP_table.pl
脚本创建规则。这是我目前的规则:
rule fmap_table:
input:
expand(str(CLASSIFY_FP/"mapping"/"{sample}_abundance.txt"),sample=Samples.keys())
output:
str(CLASSIFY_FP/'mapping'/'abundance_table.txt')
shell:
"""
perl /media/data/FMAP/FMAP_table.pl {input} > {output}
"""
我希望我的列名称仅包含示例名称,而不是整个路径。这可以在这样的脚本中完成
perl FMAP_table.pl [options] [name1=]abundance1.txt [[name2=]abundance2.txt [...]] > abundance_table.txt
我的问题是如何为每个示例文件选择示例名称、示例路径并在中间添加 =。
我的样本是这样命名的SAMPLE111_S1_abundance.txt这是我想自动实现的格式:
perl /media/data/FMAP/FMAP_table.pl SAMPLE111_S1 = SAMPLE111_S1_abundance.txt SAMPLE112_S2 = SAMPLE112_S2.abundance.txt [etc.] > abundance.txt"
谢谢
解决方法
我可能会添加一个参数来构建它,也可能在外部构建 dict 中的文件名:
FMAP_INPUTS = {sample: str(CLASSIFY_FP/"mapping"/"{sample}_abundance.txt")
for sample in Samples.keys()}
rule fmap:
input: FMAP_INPUTS.values()
output:
str(CLASSIFY_FP/'mapping'/'abundance_table.txt')
params:
names=" ".join(f"{s}={f}" for s,f in FMAP_INPUTS.items())
shell:
"""
perl /media/data/FMAP/FMAP_table.pl {params.names} > {output}
"""
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。