BLAST Database allocation error
I asked this question on the bioinformatics version of stackexchange, but since I think it is a computer problem I thought I should try my luck here.
When running local BLAST (v2.2.24+) on a big database (all human proteins) I get the following error:
proteinsApplicationError: Command 'blast-2.2.24+/bin/blastp.exe -query "query.fasta" -
db "human-proteins.fasta" -out blastOut开发者_Go百科put.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:'
When googling I only got to the source code of seqdbatlas: http://www.ncbi.nlm.nih.gov/IEB/ToolBox/CPP_DOC/lxr/source/src/objtools/blast/seqdb_reader/seqdbatlas.cpp in which I found:
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 }
My knowledge of C++ is limited, but what I get from this is that there isn't enough memory on the PC to run BLAST over that size of a database. Is this correct and if so, is there a way to run this BLAST without getting a computer with a bigger memory? If it's not correct, what is the error that I'm getting?
Thanks in advance, Niek
Fixed it by breaking the query file up in two and using blast 2.2.25 instead of 2.2.24
精彩评论