如何链接PBS脚本?

时间:2016-07-29 10:13:04

标签: bash sh bioinformatics hpc pbs

我正在尝试运行这段PBS代码,我想在完成第1部分之后运行第2部分,但由于某种原因,在完成第1部分之后它不会执行第2部分。如何让它一次执行第2部分?

#!/bin/bash -l
#PBS -N AOGC_Contest
#PBS -l walltime=10:00:00
#PBS -l mem=10gb
#PBS -J 0-2

cd /mypath

##module load java ##AN commented out
##module load gatk ##AN commented out


SNP=/mypath/file.vcf
TMPDIR=/mypath/Contest/data/test_tmpdir/
FASTA=/mypath/Contest/data/hg19.fasta
CONTAMINATION=/mypath/Contest/data/test_contamination/
POPFILE=/mypath/Contest/data/hg19_CHR_FIXED.vcf

BAMS=( /mypath//S05-F13-P01_C06A1ACXX-1-13.ReCal.sort.bam /mypath//S08-F10-P01_C06A1ACXX-2-13.ReCal.sort.bam /mypath//AOGC-02-0010_C0J43ACXX-4-13.ReCal.sort.bam ) 

SAMPS=( S05-F13-P01 S08-F10-P01 AOGC-02-0010 ) 

BAM=${BAMS[$PBS_ARRAY_INDEX]}
SAM=${SAMPS[$PBS_ARRAY_INDEX]}

#BAM=${BAMS[1]}
#SAM=${SAMPS[1]}

echo "$SAM"

part1的

java -jar GenomeAnalysisTK.jar \
-T SelectVariants \
-U ALLOW_SEQ_DICT_INCOMPATIBILITY \
-R ${FASTA} \
-V $SNP  \
-o ${TMPDIR}/${SAM}_${PBS_ARRAY_INDEX}.vcf \
-nt 4 \
--excludeNonVariants \
--removeUnusedAlternates \
--keepOriginalAC \
--keepOriginalDP \
-sn ${SAM}

第2部分

java -jar GenomeAnalysisTK.jar \
-T ContEst \
-U ALLOW_SEQ_DICT_INCOMPATIBILITY \
-I ${BAM} \
-R ${FASTA} \
--popfile ${POPFILE}  \
--genotypes:VCF4 ${TMPDIR}/${SAM}_$PBS_ARRAY_INDEX.vcf  \
-o ${CONTAMINATION}/contamination_${SAM}_${PBS_ARRAY_INDEX}.txt

1 个答案:

答案 0 :(得分:0)

与任何程序一样,shell脚本"不起作用"意图和事实之间存在一些差异。在您的情况下,我认为变量不是按照您的意图设置的。

$ SAMPS=( S05-F13-P01 S08-F10-P01 AOGC-02-0010 ) 
$ echo $SAMPS
S05-F13-P01

如果您希望SAMPS拥有整个字符串,包括空格,请引用它:

$ SAMPS='S05-F13-P01 S08-F10-P01 AOGC-02-0010'
$ echo $SAMPS
S05-F13-P01 S08-F10-P01 AOGC-02-0010

(我不建议包括前导和尾随空格。使用变量时,添加起来很容易。)

作为一种常规调试技术,$ bash -x scriptname将向您展示如何扩展变量。您还可以在脚本中添加set -xset +x,使其在问题区域更加详细。

HTH。