0

我正在使用 Unus,它是用于系统发育分析的 Perl 包。在这个包中使用了blast-2.2.25,因为该包使用了formatdb程序,如下:

if ( ( grep { $self->{'program'} eq $_ } qw(blastn tblastx tblastn) )
    && !( -e $self->{'db'} . ".nin" || -e $self->{'db'} . ".nal" ) )
{
    system( $self->{'formatdb'}, '-i', $self->{'db'}, '-o', 'T', '-p', 'F' ) == 0
      or LOGDIE "Error running formatdb: $!";

}
elsif ( ( grep { $self->{'program'} eq $_ } qw(blastp blastx) )
    && !( -e $self->{'db'} . ".pin" || -e $self->{'db'} . ".pal" ) )
{
    system( $self->{'formatdb'}, '-i', $self->{'db'}, '-o', 'T', '-p', 'T' ) == 0
      or LOGDIE "Error running formatdb: $!";
}

但是,有一个持续的错误消息阻止 Unus。

[formatdb] WARNING: Cannot add sequence number 6 (lcl|XamC:6) because it has zero-length.
[formatdb] WARNING: Cannot add sequence number 1 (lcl|Xam_:1) because it has zero-length.
[formatdb] FATAL ERROR: Fatal error when adding sequence to BLAST database.
[formatdb] WARNING: Cannot add sequence number 41 (lcl|Xamc:41) because it has zero-length.
[formatdb] FATAL ERROR: Fatal error when adding sequence to BLAST database.
[formatdb] WARNING: Cannot add sequence number 7 (lcl|XamF:7) because it has zero-length.
[formatdb] WARNING: Cannot add sequence number 144 (lcl|Xam0:144) because it has zero-length.

我检查了序列,它们没有零长度。Unus 正在运行 27 个黄单胞菌基因组。此外,输入序列是在 glimmer3 中使用提取程序后获得的。输入序列的示例是:

> orf00002  3568 4905  len=1338
GTGATTGTTTTTAAAGGAAATTTAGGGGCCGAAACCCTGTGTTTACCGCCCTGTTTTCTC
ACAAACAAGCTGTGGATAAGCGAAAGCACCTCCACAGGCCCTATTTTTATCCACATGTTA
TCCCCTGCCTGTCCGGTCATTCCTGGCGGCCATGTCTGCACGGTTTCATGCCGATCCCGT
ATCCTTCGAACCGACCGGCATGCCGGATTACAGCCCAGAGCACACCGATCGATGCATGTA
GTGCGGTTGTCCATTCATCGGCTTCGTCGGTTTCAAACCGTCGAGCTTCATCCCTCCAGT
GCCTTGAATCTGCTGACCGGCGACAACGGCGCGGGCAAGACCAGCGTGCTCGAAGCGCTA
CACCTGATGGCTTACGGCCGCAGCTTCCGCGGGCGCGTCCGCGACGGCCTGATCCAACAA
GGCGCCAACGACCTCGAAGTGTTCGTGGAGTGGAAAGAAGGCGGCGGCGCTGCGGTCGAG
CGGACGCGTCGGGCTGGCTTGCGTCATAGCGGGCAGGAATGGACAGGGCGCCTGGACGGG
GAAGACGTGGCGCAGCTTGGCTCTCTTTGCGCTGCGCTGGCAGTGGTGACGTTCGAGCCC
GGCAGCCACGTATTGATCAGTGGCGGTGGTGAACCCCGCCGCCGTTTTCTGGATTGGGGC
CTGTTCCACGTGGAACCCGATTTTCTAACCTTGTGGCGCCGCTATGCGCGAGCCCTCAAA

>orf00004  5020 7464  len=2445
ATGACCGACGAACAAAACACCCCGCCAACACCCAACGGCACCTACGACTCCAGCAAGATC
ACCGTGCTGCGTGGCCTGGAAGCCGTCCGCAAGCGTCCCGGCATGTATATCGGCGACGTC
CATGACGGCACCGGCCTGCATCACATGGTGTTCGAGGTGGTCGACAACTCGGTCGACGAA
GCCCTTGCCGGGCATGCCGACGACATCGTGGTAAAAATCCTGGCCGATGGCTCGGTGGCG
GTCTCCGACAACGGGCGCGGCGTGCCGGTCGACATCCACAAGGAAGAAGGCGTGTCGGCG
GCCGAGGTGATCCTCACCGTGCTCCACGCCGGCGGCAAGTTCGACGACAACAGCTACAAG
GTCTCCGGCGGCCTGCACGGCGTTGGCGTCTCGGTGGTCAACGCGTTGTCAGAGCACCTG
TGGCTGGATATCTGGCGCGACGGCTTCCACTACCAGCAGGAATACGCGCTGGGCGAGCCG
CAGTACCCGCTCAAGCAGCTGGAAGCCTCGACCAAGCGCGGTACCACGCTGCGCTTCAAG
CCGTCCGTGGCCATCTTCAGCGACGTCGAGTTCCATTACGACATCCTGGCGCGGCGCCTG
CGCGAGCTGTCCTTCCTCAATTCTGGCGTCAAGATCACCTTGATCGACGAGCGCGGCGAA
GGCCGTCGCGACGATTTCCATTACGAAGGCGGCATCCGCAGCTTCGTGGAGCATCTGGCG
CAGCTGAAGTCGCCGCTGCACCCGAATGTGATCTCGGTGACCGGCGAGCACAACGGCATC
ATGGTGGACGTGGCCCTGCAATGGACCGACGCCTACCAGGAAACCATGTACTGCTTCACC

我可以做些什么来解决这个问题?或者我应该更改 Unus 使用 formatdb 的部分中的代码吗?最后,我之前用过带有 4 个志贺氏菌基因组的 Unus,它没有这个问题。

4

1 回答 1

1

该错误看起来好像来自 formatdb 本身而不是 Unus,因此修改 Unus 可能无济于事。尽管 fasta 文件表面上看起来不错,但 formatdb 表示它对此并不满意。

一个可能的问题是在您的第一个示例 fasta 序列中。">" 和 "orf00002" 之间不应有空格。这可能会导致错误。

如果不是,请尝试检查您的 fasta 文件是否有特殊字符,尤其是 Unix/Windows/Mac 行尾,或其他格式兼容性问题。Notepad++ 有助于显示其他不可见的特殊字符。

如果您找不到任何明显的问题,请尝试创建一个仅包含一两个 fasta 序列的小型数据库,直到您可以正常工作,然后再添加其他人。

关于特殊字符,如果 formatdb 在检查/修改您可以找到的内容后仍然抱怨,请考虑检查字符编码问题。这在我身上发生过一次blastn。在我的(复制/粘贴)命令中,我有一个“o”字符,对我来说,它看起来就像一个普通的“o”字符,但在我用键盘生成的“o”替换它之前,blastn 拒绝工作。事实证明,复制的字符是用 Unicode 或 ANSI(不记得)编码的,而 blastn 或 bash 无法处理它。

于 2014-07-22T21:27:24.243 回答