0

我是生物信息学的新手。我正在尝试在 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
4

1 回答 1

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
于 2014-05-30T19:54:32.573 回答