snakemake如何在nas文件系统和群集节点之间传输数据

问题描述 投票:0回答:1

我们正在开发蛇形管道,我们需要在nas文件系统和群集节点之间传输数据。我们的集群的架构在每个节点中都有一个/ scratch目录。在启动规则之前,我们需要将数据从nas复制到节点/ scratch。这是我们使用的典型Slurm脚本的示例:

#!/bin/bash
############      SLURM CONFIGURATION      ###################
#SBATCH --partition=supermem
#SBATCH --job-name=Spades
#SBATCH --output=Spades-out
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=8
#SBATCH --mem-per-cpu=20G
#SBATCH --time=100:00:00
############################################################

path_to_dir="/data3/illumina-decontamination";
path_to_tmp="/scratch/user$SLURM_JOB_ID"; 
path_to_dest="/data3/projects/Spades";

module load bioinfo/SPAdes/3.11.1

###### create repertory on scratch
mkdir $path_to_tmp;

####### copy data from nas to /scratch node
scp -r nas3:$path_to_dir $path_to_tmp
echo "tranfert donnees master -> noeud"
cd $path_to_tmp/DATA/

###### Runnning
mkdir $path_to_tmp/DATA/SpadeAssembly
spades.py .... #command line

# transfer
scp -r $path_to_tmp/illumina-decontamination/Spade_*  nas3:$path_to_dest/;
echo "Transfert donnees node -> nas3";

#### remove tmp node
rm -r $path_to_tmp;
echo "Suppression des donnees sur le noeud";

我们正在测试阴影前缀选项,但是它不起作用。在蛇形制作中最优雅的方法是什么?我们希望我们的管道也可以在没有/ scratch的集群中工作。

谢谢。

朱莉

cluster-computing transfer snakemake
1个回答
0
投票

如果仅用于一条规则,则基本上可以将脚本转换为shell指令。

如果您需要为每个规则执行此操作,也许可以使shell prefix正常工作,但似乎仍然支持WIP

我可能会制作一个bash脚本来执行复制和写回输入和输出目标的操作。对于每个规则,您将

shell:
   '''
   my_copy.sh {input} {config[temp]}/rule/path/{wildcards.sample}
   # do work
   my_write_back.sh {config[temp]}/rule/results/{wildcards.sample} {output}
   '''

在另一个系统中,您可以从头更新临时位置,也可以将脚本更改为无操作(如果您在适当的地方工作)。我不认为您需要影子前缀...

抱歉,这不是一个直接的答案,希望它能激发一些想法。

© www.soinside.com 2019 - 2024. All rights reserved.