Biopython local BLAST database error
Question: I am trying to run blastx locally with the "nr" database using Biopython's
NcbiblastxCommandline tool but I always get the following error regarding the
protein database search path:

    
    
    >>> from Bio.Blast.Applications import NcbiblastxCommandline
    >>> nr = "/Users/Priya/Documents/Python/ncbi-blast-2.2.26+/bin/nr.pal"
    >>> infile = "/Users/Priya/Documents/Python/Tutorials/opuntia.txt"
    >>> blastx = "/Users/Priya/Documents/Python/ncbi-blast-2.2.26+/bin/blastx"
    >>> outfile = "/Users/Priya/Documents/Python/Tutorials/opuntia_python_local.xml"
    >>> blastx_cline = NcbiblastxCommandline(blastx, query = infile, db = nr, evalue = 0.001, out = outfile)
    >>> stdout, stderr = blastx_cline()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File     "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Bio/Application/__init__.py", line 443, in __call__
    stdout_str, stderr_str)
    Bio.Application.ApplicationError: Command '/Users/Priya/Documents/Python/ncbi-blast-2.2.26+/bin/blastx -out /Users/Priya/Documents/Python/Tutorials/opuntia_python_local.xml -query /Users/Priya/Documents/Python/Tutorials/opuntia.txt -db /Users/Priya/Documents/Python/ncbi-blast-2.2.26+/bin/nr.pal -evalue 0.001' returned non-zero exit status 2, 'BLAST Database error: No alias or index file found for protein database [/Users/Priya/Documents/Python/ncbi-blast-2.2.26+/bin/nr.pal] in search path [/Users/Priya::]'
    

I am not sure how to change the path to point to the nr database that I
downloaded, but I thought I pointed to it correctly since I can run this code
from the command line without any problems:

    
    
    Priyas-iMac:~ Priya$ /Users/priya/Documents/Python/ncbi-blast-2.2.26+/bin/blastx -query /Users/priya/Documents/Python/Tutorials/opuntia.txt -db /Users/priya/Documents/Python/ncbi-blast-2.2.26+/bin/nr -out /Users/priya/Documents/Python/Tutorials/opuntia_local.xml -evalue 0.001 -outfmt 5
    

The above command line code creates an xml file of the blast results as I
would expect.

Any help solving this problem with the Biopython NCBI command line tools would
be greatly appreciated!


Answer: Your `nr` variable ends in `nr.pal`. `nr` (without `.pal`) should be fine. If
removing `pal` doesn't work. You can try setting up an `.ncbirc` file in your
home directory which has this:

    
    
    [BLAST]
    BLASTDB=/directory/path/to/blast/databases
    

It basically sets up an environment variable for blast database lookups.
Afterwards, you can simply use `nr` (no path required) in your `nr` variable.

By the way, you can check the command line constructed by
`NcbiblastxCommandline` using `print blastx_cline`. My guess is it's not the
same as the one you typed manually.

EDIT: Check out <http://www.biostars.org/> for bioinformatics-specific
questions similar to StackExchange's format.

