2016-07-29 33 views
0

Ich versuche, dieses Bit PBS-Code auszuführen, wo ich Teil 2 nach Abschluss von Teil1 ausführen möchte, aber aus irgendeinem Grund führt Teil2 nach Abschluss Teil1 nicht ausführen. Wie kann ich das Teil 2 auf einmal ausführen lassen?Wie PBS Skript ketten?

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

Teil1

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} 

Teil2

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

Haben Sie versucht zu untersuchen, warum der zweite Befehl nicht gestartet wurde (konnte nicht abgeschlossen werden)? Wenn Sie dies getan haben, teilen Sie bitte die Ergebnisse. Wie es aussieht, gibt es viele unnötige Details und viele wichtige Informationen fehlen in diesem Beitrag. –

+0

Nein, das habe ich noch nicht herausgefunden. – MAPK

Antwort

0

Wie jedes Programm, ein Shell-Skript "nicht funktioniert", wenn es gibt einen Unterschied zwischen Absicht und Tat. In Ihrem Fall sieht es so aus, als würden die Variablen nicht so eingestellt, wie Sie es beabsichtigen.

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

Wenn Sie SAMPS wollen die gesamte Zeichenfolge haben, einschließlich Leerzeichen, Zitat es:

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

(Ich empfehle nicht darunter führende und nachfolgende Leerzeichen Es ist einfach genug, wenn Sie hinzufügen verwenden. die Variable.)

Als allgemeine Debugging-Technik zeigt Ihnen $ bash -x scriptname, wie Ihre Variablen erweitert werden. Sie können auch set -x und set +x in Ihrem Skript streuen, um es in Problembereichen ausführlicher zu machen.

HTH.