我需要通過 slurm 為集群提交許多作業。每個作業從不同的檔案夾中獲取不同的輸入檔案。我的問題是輸出不完整,前 8 個組合后的輸出不斷覆寫之前的輸出。我懷疑作業陣列不是從提供的兩個變數的組合中正確創建的。這是我的代碼示例:
#!/bin/bash
#SBATCH --array=1-57
#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: Br\nBn\nBo\n
# 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根據不同組合的spc和chr變化,一共給出57個檔案。57 個作業 [array] 與sbatch一起提交,以便在我的分配中一次運行 12 個作業。
通過回圈遍歷覆寫輸出的示例代碼中的兩個變數spc和chr創建的SLURM_ARRAY_TASK_ID作業陣列有什么問題?謝謝!
uj5u.com熱心網友回復:
我認為,這個問題可能與您如何獲得$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.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/437213.html
上一篇:計算距離列均值的新資料框變數
下一篇:Terraform-操作區域變數
