문제

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 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:'

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top