thanks much appreciated
Hi,
I'm thinking of splitting the database to smaller chunks. And, blast my sequences against them each on a separate process. My only concern is the results (which I will merge later).
Would the resulting e-value be affected by database content when smaller subsets are used? I have a hunch that it would not matter when all the subset results later becomes concatenated. Please correct me if I'm wrong.
1 answer
The statistics of BLAST scores are described in this article. It's quite mathematics-heavy, but also quite readable; just take your time and re-read several times.
The short answer is that yes, e-values are dependent on database size. If you think about it intuitively, there's a higher probability of finding a match in a large database than in a smaller database.
That said, it is possible to re-calculate e-values by combining the results when the database is split. This is implemented in, for example, mpiBLAST. It would be a good idea to study their website, code and publication to see how they handle the problem.
See also the discussion of recalculating e-value in this paper or do a quick web search for "BLAST split database e-value calculate" - it's quite a widely-discussed issue.
Totally agree with the answer but you can set manually the database size using the parameter "-z". On that way, you can split the db file into smaller pieces, make your queries and then merge results.
Oops my hunch was wrong. Anyways any easy way to count the number of letters, N (total letters) of a database?
Please validate if the nr database atm is 5784003470 letters in size
try grep -v '^>' something.fasta | grep -o [ACTGNactg] | wc -l for fasta files before building database
When I said "database size" I refered to the total number of sequences in your database, I didn't refer to the total number of residues on it.
Log in to answer this question.