我正在尝试使用 Tibanna 在 AWS 上运行 Snakemake 工作流程。样本列表存储在 TSV 文件中:
samples.tsv
。
然而,由于某种原因,创建 EC2 实例时,此 samples.tsv
并未复制到 EC2 实例,因此在 EC2 实例上生成文件未找到错误。
有没有人有解决办法?
我尝试了几件事但没有成功:
samples: samples.tsv
添加到 config.yaml
--precommand 'aws s3 cp ...'
唯一可行的方法可能是显式地将
samples.tsv
添加到每个规则的 input:
中。然而,这看起来相当麻烦,需要重写大部分规则。
我认为任何共享文件、要分析的样本都应该在 S3 存储桶中可用,才能正常工作。
aws s3api create-bucket --bucket $BUCKET_NAME --region $REGION --acl private
tibanna deploy_unicorn -g unicorn -b $BUCKET_NAME
tibanna add_user -u $USER -g unicorn
创建此存储桶后,您需要上传文件:
aws s3 cp yourdir/ s3://$BUCKET_NAME --recursive
aws s3 cp .secrets.yaml s3://$BUCKET_NAME/tibanna-compute/
aws s3 cp config.yaml s3://$BUCKET_NAME/tibanna-compute/
然后你在snakemake中的规则应该:
from snakemake.remote.S3 import RemoteProvider as S3RemoteProvider
import yaml
import os
import subprocess
S3 = S3RemoteProvider(access_key_id=config["access_key_id"], secret_access_key=config["secret_access_key"])
STEM = config["samples"]
INPUT = config["input"]
OUTPUT = config["output"]
BUCKET = config["bucket"]
rule bwa_index:
input:
S3.remote(f"{BUCKET}/ref/Homo_sapiens_assembly38.fasta")
output:
f"ref/Homo_sapiens_assembly38.fasta",
f"ref/Homo_sapiens_assembly38.fasta.bwt",
f"ref/Homo_sapiens_assembly38.fasta.amb",
f"ref/Homo_sapiens_assembly38.fasta.ann",
f"ref/Homo_sapiens_assembly38.fasta.pac",
f"ref/Homo_sapiens_assembly38.fasta.sa",
conda:
"envs/bwa.yaml"
threads: 8
resources:
mem_mb=8000,
disk_mb=12000
group: "group8Gb"
shell:
"mv {input} {output[0]} && bwa index {output}"