我的目标很简单:我想保持某些规则仅限于本地,而不是,而不是上传输出到我们的亚马逊S3桶。
在文档中,我看到了keep_local=True,它在处理后将远程文件保存在本地驱动器上。然而,这不是我想要的,因为这并不能阻止规则将输出上传到亚马逊S3。
Snakemake目前就像亚马逊S3和我的本地硬盘之间的一面镜子。
作为参考,这就是我们如何建立亚马逊S3与Snakemake。
# 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...发布于 2022-02-05 05:04:11
至少有两种选择:
local(some_file)继续使用
rule some_rule:
    output:
        local("my_file.txt") # will not be uploaded to s3s3的snakemake作为默认提供程序,并显式地使用s3包装远程文件。from snakemake.remote.S3 import RemoteProvider as S3RemoteProvider
S3 = S3RemoteProvider()
rule some_rule:
    output:
        S3.remote("my_file.txt") # will be uploaded to S3https://stackoverflow.com/questions/70992946
复制相似问题