如何使用Snakemake的expand函数生成指定格式的路径字符串?
Snakemake expand函数用法问题
你的嵌套列表:
list_ranges=[[0,9],[10,19],[20,29],[30,33]]
你当前的代码会生成笛卡尔积(每个range1元素和所有range2元素组合),得到16个结果,不符合需求。以下是两种正确写法:
方法1:用zip参数实现配对组合
通过zip参数告诉Snakemake按顺序配对两个列表的元素,而非生成笛卡尔积:
expand( "/user/Temp_dir/Ranges_{range1}-{range2}.tpm", zip, range1=[x[0] for x in list_ranges], range2=[x[-1] for x in list_ranges] )
方法2:直接解包子列表
遍历list_ranges的子列表,将每个子列表的元素直接对应到模板变量:
expand( "/user/Temp_dir/Ranges_{a}-{b}.tpm", zip, a_b=list_ranges )
以上两种写法都会生成你需要的4个目标路径:
/user/Temp_dir/Ranges_0-9.tpm /user/Temp_dir/Ranges_10-19.tpm /user/Temp_dir/Ranges_20-29.tpm /user/Temp_dir/Ranges_30-33.tpm
内容的提问来源于stack exchange,提问作者chippycentra
相关产品推荐
相关产品推荐

