perl模块中的Formatdb错误消息

时间:2014-07-09 15:56:39

标签: perl blast

我正在使用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,它没有这个问题。

1 个答案:

答案 0 :(得分:1)

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

一个可能的问题是你的第一个示例fasta序列。 “>”之间不应该有空格和“orf00002”。这可能会导致错误。

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

如果您找不到任何明显的问题,请尝试制作一个只包含一个或两个fasta序列的小型数据库,直到您开始工作,然后重新添加其他序列。

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