我正在使用一个大型数据集,其中每个文件(在线存储)都有一个类似于
import datetime
def fname(dt: datetime.datetime):
return "dataset-" + dt.strftime("%Y%m%d-%H%M%S") + ".gz"
def url(dt: datetime.datetime):
return "url.com/" + fname(dt)
在我的 Snakefile
中,我有一个我想要使用的日期时间列表。对于每个我需要从互联网上下载相应的文件(使用 wget
或类似的)。
rule download:
output: # would like to specify `fname(dt)`
shell: # would like to `wget -O url(dt)`
做这样的事情的正确方法是什么?
回答1
我认为最直接的方法是创建一个元数据table,每行代表文件名和下载URL,并使用它根据文件名查询rule download
中的下载URL
或者您可以在 rule all
中指定所有文件:
rule all:
input:
[fname(dt) for dt in dts]
然后 rule download
:
rule download:
output: "{file}"
shell: "wget -O url.com/{output}"