This is a test version of Biostars. For the public version, visit https://www.biostars.org.
BLASTP error - too many positional arguments

Hello!

I am trying to obtain the functional annotation of multiple protein files in a folder using BLASTP. I am using Parallel to parallelize the job. I first tried with the following command:

ls *.faa | parallel -a - blastp -query {} -db /cluster/project/magna/ncbi/nr -outfmt 6 -num_threads 16 -max_target_seqs 1 -evalue 1e-05 -out {.}.out

It worked, but it did not give me the taxonomic and functional annotations. Therefore, I tried another command:

ls *.faa | parallel -a - blastp -query {} -db /cluster/project/magna/ncbi/nr -outfmt '6 std salltitles' -num_threads 16 -max_target_seqs 1 -evalue 1e-05 -out {.}.out

However, I obtained the following error:

Error:  (CArgException::eSynopsis) Too many positional arguments (1), the offending value: std

I tried retyping the dashes but it did not work.

I also tried:

 ls *.faa | parallel -a - blastp -query {} -db /cluster/project/magna/ncbi/nr -outfmt "6 std salltitles" -num_threads 16 -max_target_seqs 1 -evalue 1e-05 -out {.}.out

And obtained the same error.

Does anyone know how to solve it?

Thank you so much!

parallel blast blastp

If you are using a cluster (which may be the case, looking at the file path) why not submit multiple jobs via job scheduler instead of using parallel? Or are you trying to use parallel as a scheduler? With nr database you are going to need significant amount of RAM for each job, something to keep in mind.

With -max_target_seqs 1 you are not guaranteed to get the "best" hit, in case you want that (-max_target_seqs 1 in NCBI standalone BLAST does not do what you think it does ).

Hi! Yes, I am using a cluster with lsf. There are too many fasta files, approximately 60, so I want to run blastp for all of them using a single command in a sh file. The first job using -outfmt 6 worked pretty well, the issue comes when I try to change it to '6 std salltitles'

Thanks for the tip on -max_target_seqs 1 !!

I am not a parallel user but you can add --dry-run to your parallel command to see what command lines will be created. You can then diagnose the issue you are facing. It must be something with how ' or " are being interpreted.

Hi! Your hint worked. I posted the solution below. Thank you so, so much for taking the time to help.

1 answer

Hi! Here is the solution

ls *.faa | parallel "blastp -query {} -db /cluster/project/magna/ncbi/nr -outfmt '6 std salltitles' -num_threads 16 -max_target_seqs 1 -evalue 1e-05 -out {.}.out"

Have a beautiful day!

Paula

Log in to answer this question.