如何通过两个循环调试SLURM的作业阵列



我需要通过slurm为集群提交许多作业。每个作业从不同的文件夹中获取不同的输入文件。我的问题是输出不完整,前8个组合之后的输出一直覆盖前8个。我怀疑作业数组不是根据提供的两个变量的组合正确创建的。这是我的代码示例:

#!/bin/bash
#SBATCH --array=1-57%12         
#SBATCH --time=0            
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=12
#SBATCH --mem=6G
#SBATCH --output=/storage/proj/AltSp/logs/Lastz_Intron.log
DIR_OUT="/storage/proj/AltSp/data/annotation/Lastz/Br"
mkdir -p ${DIR_OUT}
QUERY="/storage/proj/AltSp/data/annotation/Introns.txt"
Species=/storage/proj/AltSp/data/Species.list   #3 lines: BrnBnnBon
# Chroms=/storage/proj/AltSp/genomes/Br/chromosomes.list # 20 lines: A1 ~ A20, one at a line
# Chroms=/storage/proj/AltSp/genomes/Bn/chromosomes.list # 18 lines: B1 ~ B18, one at a line
# Chroms=/storage/proj/AltSp/genomes/Bo/chromosomes.list # 19 lines: C1 ~ C19, one at a line
# REF is changing according to spc and chr
for spc in $(cat ${Species}); do
chr=$(head -n ${SLURM_ARRAY_TASK_ID} genomes/${spc}/chromosomes.list | tail -1)
REF="/storage/proj/AltSp/genomes/${spc}/${chr}.fasta"

lastz ${REF} ${QUERY} K=3000 H=2200 --format=axt+ > ${DIR_OUT}/introns_vs_${spc}-${chr}.axt
done
Outputs files are:
introns_vs_Br-A01.axt
introns_vs_Br-A02.axt
...
introns_vs_Br-A08.axt

spc在一个文件中,一行中有一个名称/字符串;chr在多个文件中,每个文件的一行中也有一个名称/字符串;REF根据不同组合的spcchr进行更改,总共提供57个文件。57个作业[array]使用sbatch提交,以便在我的分配中一次运行12个作业。

通过循环遍历我的示例代码中的两个变量spcchr创建的SLUM_ARRAY_TASK_ID作业数组有什么问题?谢谢

我认为,这个问题可能与如何获得$chr有关。要进行验证,请将${SLURM_ARRAY_TASK_ID}添加到作业输出文件中。例如,像这样:

lastz ${REF} ${QUERY} K=3000 H=2200 --format=axt+ > ${DIR_OUT}/introns_vs_${spc}-${chr}-task${SLURM_ARRAY_TASK_ID}.axt

因此,如果生成57个输出,那么问题与如何获得$chr有关。

最新更新