让 Snakemake 很好地处理基于日期时间的文件名
Getting Snakemake to work nicely with datetime-based filenames
我正在处理一个大型数据集,其中每个文件(在线存储)都有一个 URL 看起来像
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)`
做这样的事情的正确方法是什么?
我认为最直接的方法是创建一个元数据 table,每一行代表文件名和下载 URL,并使用它来查询 URL 中的下载 URL =12=]根据文件名
或者您可以指定rule all
中的所有文件:
rule all:
input:
[fname(dt) for dt in dts]
然后rule download
:
rule download:
output: "{file}"
shell: "wget -O url.com/{output}"
我正在处理一个大型数据集,其中每个文件(在线存储)都有一个 URL 看起来像
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)`
做这样的事情的正确方法是什么?
我认为最直接的方法是创建一个元数据 table,每一行代表文件名和下载 URL,并使用它来查询 URL 中的下载 URL =12=]根据文件名
或者您可以指定rule all
中的所有文件:
rule all:
input:
[fname(dt) for dt in dts]
然后rule download
:
rule download:
output: "{file}"
shell: "wget -O url.com/{output}"