【发布时间】:2018-01-16 16:52:11
【问题描述】:
我是 SLURM 的新手。我想并行处理文件列表assembled_reads/*.sorted.bam。使用下面的代码,但是只有一个进程被反复使用。
#!/bin/bash
#
#SBATCH --job-name=****
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=24
#SBATCH --partition=short
#SBATCH --time=12:00:00
#SBATCH --array=1-100
#SBATCH --mem-per-cpu=16000
#SBATCH --mail-type=FAIL
#SBATCH --mail-user=****@***.edu
srun hostname
for FILE in assembled_reads/*.sorted.bam; do
echo ${FILE}
OUTFILE=$(basename ${FILE} .sorted.bam).raw.snps.indels.g.vcf
PLDY=$(awk -F "," '$1=="$FILE"{print $4}' metadata.csv)
PLDYNUM=$( [[$PLDY = "haploid" ]] && echo "1" || echo "2")
srun java -Djava.io.tmpdir="tmp" -jar GenomeAnalysisTK.jar \
-R scaffs_HAPSgracilaria92_50REF.fasta \
-T HaplotypeCaller \
-I ${${SLURM_ARRAY_TASK_ID}} \
--emitRefConfidence GVCF \
-ploidy $PLDYNUM \
-nt 1 \
-nct 24 \
-o $OUTFILE
sleep 1 # pause to be kind to the scheduler
done
【问题讨论】:
-
见下面 damienfrancois 的回答。您可能可以使用确定文件数量的包装脚本,然后使用
--array参数提交他的答案中显示的脚本,以指定包装脚本中确定的文件数量。 -
此外,快速的 Google 搜索将显示运行 GATK 的示例 Nextflow 管道,有些甚至可能已经带有基本的 SLURM 配置。有些列出了here
标签: bash parallel-processing slurm