【问题标题】:BLAST Database allocation errorBLAST 数据库分配错误
【发布时间】:2011-11-22 18:01:20
【问题描述】:

我在 stackexchange 的生物信息学版本上问过这个问题,但由于我认为这是一个计算机问题,我想我应该在这里碰碰运气。

在大型数据库(所有人类蛋白质)上运行本地 BLAST (v2.2.24+) 时出现以下错误:

proteinsApplicationError: Command 'blast-2.2.24+/bin/blastp.exe -query "query.fasta" -
db "human-proteins.fasta" -out blastOutput.xml -evalue 0.01 -outfmt 5'       
returned     non-zero exit status 2, 'BLAST Database error: CSeqDBAtlas::MapMmap: 
While mapping file [human-proteins.fasta.psq] with 5550749 bytes allocated, caught 
exception:'

谷歌搜索时,我只找到了 seqdbatlas 的源代码:http://www.ncbi.nlm.nih.gov/IEB/ToolBox/CPP_DOC/lxr/source/src/objtools/blast/seqdb_reader/seqdbatlas.cpp,我在其中找到了:

1214         if (expt.length()) {
1215             // For now, if I can't memory map the file, I'll revert to
1216             // the old way: malloc a chunk of core and copy the data
1217             // into it.
1218             
1219             if (expt.find(": Cannot allocate memory") == expt.npos) {
1220                 expt = string("CSeqDBAtlas::MapMmap: While mapping file [") + 
                 (*m_Fname) + "] with " +
1221                     NStr::UInt8ToString(atlas->GetCurrentAllocationTotal()) +
1222                     " bytes allocated, caught exception:" + expt;
1223                 
1224                 SeqDB_ThrowException(CSeqDBException::eFileErr, expt);
1225             }
1226         }

我对 C++ 的了解是有限的,但我从中得到的是,PC 上没有足够的内存来在这么大的数据库上运行 BLAST。这是正确的,如果是这样,有没有办法在没有更大内存的计算机的情况下运行这个 BLAST?如果不正确,我得到的错误是什么?

提前致谢,尼克

【问题讨论】:

    标签: python memory mapping allocation blast


    【解决方案1】:

    通过将查询文件一分为二并使用 blast 2.2.25 而不是 2.2.24 来修复它

    【讨论】:

      猜你喜欢
      • 2013-06-27
      • 2013-10-16
      • 2018-02-19
      • 2021-03-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-18
      • 2020-09-01
      • 1970-01-01
      相关资源
      最近更新 更多