我是一名生物学学生,这是第一次在服务器上运行阵列工作的经验,所以请耐心等待我。 我正在尝试提交PBS脚本,以便在每个输入文件上执行blast任务。我的输入文件名是file1.fa file2.fa file3.fa file4.fa file5.fa file6.fa。 PBS脚本如下所示:
#!/bin/bash
#PBS -N run_x3
#PBS -l ncpus=4
#PBS -l mem=30G
#PBS -l walltime=200:00:00
#PBS -J 1-6
#PBS -o stdout_file
#PBS -e stderr_file
cd /home/mary/software/ncbi-blast-2.2.30+/bin
./blastx -query file_${1 2 3 4 5 6}.fa -db uni_database -out blast_file{1 2 3 4 5 6}.xml -evalue 1e-3 -outfmt 5 -show_gis -num_alignments 15 -num_threads 3
我以qsub run_x3.sh的身份运行作业。但出现以下错误: /var/spool/torque/mom_priv/jobs/1007-1.chpc.SC:line 12:file _ $ {1 2 3 4 5 6} .fa:bad substitution
如果您能帮助我解决问题,我将非常感谢。另外,如果PBS文件中出现错误,请告诉我。正如我前面提到的,我没有足够的计算机知识来解决这个问题。
非常感谢您,并期待收到您的回复。
最佳, 玛丽
答案 0 :(得分:0)
我假设您打算用$ {1 2 3 4 5 6}做的事情是评估正在执行的数组ID。如果是这样,您可以使用$ PBS_ARRAYID:
./blastx -query_file_${PBS_ARRAYID} ...
这将给你1个工作1,2个工作2,等等。具体来说,不要把
./blastx file1.fa
写
./blastx file${PBS_ARRAY_ID}.fa
使每个作业运行都是唯一的。