Snakemake 仅限本地
Snakemake Local-Only
我的 objective 很简单:我想只在本地保留某些规则并且 不 将输出上传到我们的 Amazon S3 存储桶。
在文档中,我看到 keep_local=True
,它在处理后将远程文件保存在本地驱动器上。但是,这不是我想要的,因为这不会阻止规则将输出上传到 Amazon S3。
Snakemake 目前充当 Amazon S3 和我的本地驱动器之间的镜像。
作为参考,这就是我们使用 Snakemake 设置 Amazon S3 的方式。
# run command
snakemake --default-remote-provider S3 --default-remote-prefix '$s3' --use-conda --cores 32 --rerun-incomplete --printshellcmds
# inside Snakemake
S3 = S3RemoteProvider(access_key_id=config["s3_params"]["access_key_id"], secret_access_key=config["s3_params"]["secret_access_key"])
# example of rule all
#Runs all rules
rule all:
input:
expand(["{sample}.demultiplex_fastqc.zip",
"{sample}.demultiplex_fastqc.html"],
sample=samples["sample"]),
expand(["{sample}.adapterTrim.round2.rmRep.metrics"],
sample=samples["sample"])
# etc...
至少有两个选项:
- 继续使用
snakemake --default-remote-provider S3 --default-remote-prefix '$s3'
并将应该保存在本地的文件用local(some_file)
: 包装起来
rule some_rule:
output:
local("my_file.txt") # will not be uploaded to s3
- 使用不带
s3
的 snakemake
作为默认提供程序,并使用 S3.remote
: 显式包装远程文件
from snakemake.remote.S3 import RemoteProvider as S3RemoteProvider
S3 = S3RemoteProvider()
rule some_rule:
output:
S3.remote("my_file.txt") # will be uploaded to S3
我的 objective 很简单:我想只在本地保留某些规则并且 不 将输出上传到我们的 Amazon S3 存储桶。
在文档中,我看到 keep_local=True
,它在处理后将远程文件保存在本地驱动器上。但是,这不是我想要的,因为这不会阻止规则将输出上传到 Amazon S3。
Snakemake 目前充当 Amazon S3 和我的本地驱动器之间的镜像。
作为参考,这就是我们使用 Snakemake 设置 Amazon S3 的方式。
# run command
snakemake --default-remote-provider S3 --default-remote-prefix '$s3' --use-conda --cores 32 --rerun-incomplete --printshellcmds
# inside Snakemake
S3 = S3RemoteProvider(access_key_id=config["s3_params"]["access_key_id"], secret_access_key=config["s3_params"]["secret_access_key"])
# example of rule all
#Runs all rules
rule all:
input:
expand(["{sample}.demultiplex_fastqc.zip",
"{sample}.demultiplex_fastqc.html"],
sample=samples["sample"]),
expand(["{sample}.adapterTrim.round2.rmRep.metrics"],
sample=samples["sample"])
# etc...
至少有两个选项:
- 继续使用
snakemake --default-remote-provider S3 --default-remote-prefix '$s3'
并将应该保存在本地的文件用local(some_file)
: 包装起来
rule some_rule:
output:
local("my_file.txt") # will not be uploaded to s3
- 使用不带
s3
的snakemake
作为默认提供程序,并使用S3.remote
: 显式包装远程文件
from snakemake.remote.S3 import RemoteProvider as S3RemoteProvider
S3 = S3RemoteProvider()
rule some_rule:
output:
S3.remote("my_file.txt") # will be uploaded to S3