2016-07-29 2 views
0

Я пытаюсь запустить этот бит кода PBS, где я хочу запустить часть 2 после завершения part1, но по какой-то причине он не выполняет part2 после завершения part1. Как я могу выполнить эту часть 2 за один раз?Как связать скрипт PBS?

#!/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} 

part2

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 
+2

Вы пытались выяснить, почему вторая команда не запустилась (не удалось завершить)? Если да, пожалуйста, поделитесь результатами. В его нынешнем виде есть много ненужных деталей и много важной информации, отсутствующей в этом посте. –

+0

Нет, я еще не смог понять это. – MAPK

ответ

0

Как и любая программа, сценарий оболочки "не работает", когда есть какая-то разница между намерением и фактом. В вашем случае мне кажется, что переменные не устанавливаются так, как вы планируете.

$ 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 -x и set +x в своем скрипте, чтобы сделать его более подробным в проблемных областях.

HTH.

Смежные вопросы