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!

Was it helpful?

Solution

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.

OTHER TIPS

It seems that the command that works lists a different db than the one being called from within the code sample:

# In the code
-db /Users/Priya/Documents/Python/ncbi-blast-2.2.26+/bin/nr.pal

vs.

# From the command line
-db /Users/priya/Documents/Python/ncbi-blast-2.2.26+/bin/nr

Try changing the assignment of that path to nr in line 2 so that it reflects the path without '.pal' that you use from the command line.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top