2014-10-30 2 views
1

У меня есть этот скрипт, который отлично работает, когда я называю его sh, но он терпит неудачу, когда я использую qsub. Может кто-нибудь, пожалуйста, помогите мне отладить это? Я не могу найти ответ на сайтепеременные оболочки в qsub

#!/bin/bash 
#$ -S /bin/bash 
#$ -V 
#$ -cwd 
#$ -l h_vmem=6G 
#$ -N MHCIp 

if [ $# -lt 2 ] 
then 
    echo need 2 arguments 
    echo "USAGE : qsub run_MHCIprediction.sh <input_peptide_file> <MHCI_allele_file>" 
    exit 0 
fi 

input_file=$1 
allele_file=$2 
output_prefix=`echo ${input_file} | awk -F"." '{print $1}'` 

while read -u 10 allele strip_allele 
do 
    /inside/depot4/users/arjun/tools/IEDB/mhc_i/src/predict_binding.py \ 
      IEDB_recommended \ 
      ${allele} \ 
      9 \ 
      ${input_file} > ${output_prefix}"_"${strip_allele}".tsv" 
done 10<${allele_file} 

input_file содержит значения, такие как

>pept1 
ABDGSHADSDJASDAJ 
>pept2 
AHSYEHDBDJSJAKSK 

allele_file выглядит

HLA-A*01:01 HLA-A_01_01 
HLA-B*03:02 HLA-B_03_02 
+0

Является ли это 'sh' или' bash' скрипт? – Cyrus

+0

Пожалуйста, разместите строку, которую вы используете для qsub скрипта, и ошибку, которую вы получите, когда она выполняется в PBS. – dbeer

ответ

1

В случае, если кто-то проходит через это, сценарий в вопрос заключается в сценариях предсказания привязки класса I по MHC класса , а ошибка возникает, когда скрипт пытается читать из stdin, который передается из/dev/null/в контексте LSF, и конечный результат добавляет пустую строку в конец списка аргументов.

Соответствующий раздел кода выглядит так, и линия вам надо добавить «арг = фильтр (None, аргументы)»

... 
     parser = OptionParser(usage=usage) 
     parser.add_option("-m", dest="filename_mhc", 
          help="FILE containing a single MHC sequence in fasta format.", metavar="FILE") 
     (options, args) = parser.parse_args() 

     # If there's input ready, do something, else do something 
     # else. Note timeout is zero so select won't block at all. 
     if sys.stdin in select.select([sys.stdin], [], [], 0)[0]: 
      infile = sys.stdin.readline().strip() 
      args.append(infile) 

     args = filter(None, args) #strip blank arguments that might be introduced by LSF 

     if (len(args) == 0):        self.commandline_help() 
... 
+0

Хороший улов. Я забыл «самостоятельно ответить», когда понял. – Arjun