I am trying to use BLAST+ v2.10.1 as part of a pipeline I've built. When I call it via subprocess I get this error:
ApplicationError: Non-zero return code 1 from 'C:\\Users\\my_username\\.spyder-py3\\my_pipeline\\Backend\\Executables\\NCBI\\blast-2.10.1+\\bin\\blastp.exe -out C:\\Users\\my_username\\.spyder-py3\\my_pipeline\\Backend\\Intermediate_files\\reverse_blast\\BLASTP_results\\AS6_Streptomyces_griseochromogenes_ATCC_14511\\json_AS6_Streptomyces_griseochromogenes_ATCC_14511__genome_number_1__genome_id_CP016279.1__for__results_reverse.xml -outfmt 5 -parse_deflines -query C:\\Users\\my_username\\.spyder-py3\\my_pipeline\\Backend\\Intermediate_files\\reverse_blast\\BLASTP_queries\\AS6_Streptomyces_griseochromogenes_ATCC_14511\\json_AS6_Streptomyces_griseochromogenes_ATCC_14511__genome_number_1__genome_id_CP016279.1__for_reverse_query.txt -db C:\\Users\\my_username\\.spyder-py3\\my_pipeline\\Backend\\Intermediate_files\\reverse_blast\\BLASTP_db\\AS6_Streptomyces_griseochromogenes_ATCC_14511\\json_AS6_Streptomyces_griseochromogenes_ATCC_14511__genome_number_1__genome_id_CP016279.1__for_reverse_db -evalue 1e-06 -num_threads 4', message 'Command line argument error: Argument "out". File is not accessible: `C:\\Users\\my_username\\.spyder-py3\\my_pipeline\\Backend\\Intermediate_files\\reverse_blast\\BLASTP_results\\AS6_Streptomyces_griseochromogenes_ATCC_14511\\json_AS6_Streptomyces_griseochromogenes_ATCC_14511__genome_number_1__genome_id_CP016279.1__for__results_reverse.xml\''
The pipeline takes a JSON file from a 3rd party software as input, but the files used above are all generated by my pipeline, and all the parent directories are made on the fly - I checked and the
C:\\Users\\my_username\\.spyder-py3\\my_pipeline\\Backend\\Intermediate_files\\reverse_blast\\BLASTP_results\\AS6_Streptomyces_griseochromogenes_ATCC_14511 directory that is meant to hold the results file was made as expected.
This is part of an reciprocal best hits assignment program, and when I do the forward BLASTP associated with this it always works. When I get to the reverse BLASTP call, I get the error above for the indicated xml file above only, generated from one of 5 tested JSON input files. The xml files generated from the other 4 tested JSON files don't cause any issues.
I find this very strange as all of the JSONs are generated by this 3rd party software and processed by my pipeline in the same way, so should be fairly standardised in terms of directory structure/location/formatting/etc - I would expect them to all fail or all pass.
I suspect its a BLAST+ issue, because as I understand you only need to supply a filepath to BLAST+
-out, and it makes the file for you as long as the directory structure is correct....
Looks like you are doing this on windows. While the directory is there, does that XML file exist? Based on the names it sounds like to should contain blast results but is that file empty by some chance?
Thanks for the message, and yup, I'm windows for now! No the file wasn't being written at all, but I sorted the issue. Turns out my filename was too long for file writing, for both my pipeline using python and BLAST+ (there goes my attempts to put all the info in one longggg file name :P).