Hello SEQAnswers,
I need to set up a BLAST database on a server. There are many different databases that need to be set up, but ultimately, all of their data is in NCBI's nr and nt databases. There will also be a lot of shared data between these databases. Rather than individually maintaining all of these databases, which poses many issues, I'm looking into uses BLAST aliases. Ideally, I want to simply maintain nt and nr as the sole data sources, and create a series of aliases that use data from them.
I believe I have it working, though there are serious issues with performance. Below are results from running a simple BLAST query on several databases (and using time to measure running time). The databases are nt, an alias for a subset of nt, and a normal BLAST database with only this subset of data:
nt
real 0m7.824s
user 0m39.986s
sys 0m2.744s
alias
real 0m3.473s
user 0m3.555s
sys 0m0.869s
subset
real 0m0.589s
user 0m0.214s
sys 0m0.039s
Note that "user" is probably the best metric to use here for efficiency. While it's nice that it's faster to BLAST against the alilas than the entire nt database (and also nice that it only returns results from the subset), the running time is clearly much longer than for just the subset itself. For this individual query, it's not a huge problem, but for larger/many queries, the performance overhead could easily add up.
So, as far as I know, I either have to deal with the poor performance of aliases, or I have to deal with managing several separate BLAST databases, leading to much more expensive maintenance. Does anyone know of a nice solution to this problem?
I need to set up a BLAST database on a server. There are many different databases that need to be set up, but ultimately, all of their data is in NCBI's nr and nt databases. There will also be a lot of shared data between these databases. Rather than individually maintaining all of these databases, which poses many issues, I'm looking into uses BLAST aliases. Ideally, I want to simply maintain nt and nr as the sole data sources, and create a series of aliases that use data from them.
I believe I have it working, though there are serious issues with performance. Below are results from running a simple BLAST query on several databases (and using time to measure running time). The databases are nt, an alias for a subset of nt, and a normal BLAST database with only this subset of data:
nt
real 0m7.824s
user 0m39.986s
sys 0m2.744s
alias
real 0m3.473s
user 0m3.555s
sys 0m0.869s
subset
real 0m0.589s
user 0m0.214s
sys 0m0.039s
Note that "user" is probably the best metric to use here for efficiency. While it's nice that it's faster to BLAST against the alilas than the entire nt database (and also nice that it only returns results from the subset), the running time is clearly much longer than for just the subset itself. For this individual query, it's not a huge problem, but for larger/many queries, the performance overhead could easily add up.
So, as far as I know, I either have to deal with the poor performance of aliases, or I have to deal with managing several separate BLAST databases, leading to much more expensive maintenance. Does anyone know of a nice solution to this problem?
Comment