分别爆破多个数据库

时间:2014-05-30 19:05:03

标签: bash blast

我是生物信息学的新手。我试图找到200多个基因组中的蛋白质列表(我的查询)。我想分别得到每个基因组的结果。我试着写一个bash脚本,但它不起作用。

我希望它一次只能运行2个tblastn实例。此代码执行超过200个tblastn实例。 database_names.txt包含具有位置的数据库的名称。

#!/bin/bash
while read line
do
   EXT="_results.txt"
   OUTPUT="$line$EXT"
   tblastn -query tf_total.fasta -db $line -out $OUTPUT -outfmt 10 &
done < database_names.txt

以下是database_names.txt

的前3行
genome1/genome1_blast_db_v1
genome2/genome2_blast_db_v1
genome3/genome3_blast_db_v1

以下是错误消息

Command line argument error: Argument "out". File is not accessible:  
Error: (CArgException::eSynopsis) Too many positional arguments (1), the offending value: _results.csv  
Error: (CArgException::eSynopsis) Application's initialization failed

1 个答案:

答案 0 :(得分:1)

这很可能是因为database_names.txt中有空行。

在空行中,您最终会运行

tblastn -query tf_total.fasta -db -out _result.csv -outfmt 10

我确定你会发现同样的错误信息。

要缓解它,请跳过空白行并引用变量:

#!/bin/bash
while read line
do
   [[ -z $line ]] && continue
   EXT="_results.txt"
   OUTPUT="$line$EXT"
   tblastn -query tf_total.fasta -db "$line" -out "$OUTPUT" -outfmt 10
done < database_names.txt