I run large BLAST jobs that can sometimes take days or weeks to complete. With other jobs I find I can see the output of the job as it is running, which lets me know it is working and how its progress is doing, however with BLAST it doesn't give any output until it is finished, which means I never really know it's working until it's done. I was wondering if there is any way to get BLAST to flush output as it is running, or some other way for it to show it is working? I am using Version 2.3.0.
I don't know if this helps but what I usually do is that I enable desktop notification on my PC; something like this:
This notification pops up; say every hour and tells me how many of the query sequences have been blasted so far (I already know how many were there in total). So, that provides me an idea of the progress without disturbing me from my current work. Here is a short bash script to achieve the same:
while true; do count=`ls -1 *.xml | wc -l` if [ $count != 0 ] then total_blastx_done=`grep "Iteration_query-def" *.xml -cH` notify-send "Blastx compltd: $total_blastx_done" sleep 900 fi done
Notice the following:
- my blastx output format is
grepthe tag "Iteration_query-def" from the xml file. This could be anything, but should be unique for each query sequence.
- Script looks for all xml files in the current folder where blast was fired and notify status of all of them.
sleepcommand takes no. of seconds as input i.e. how frequently you want yourself to be notified. In my case (script above, it is set to
900i.e every 15 minutes). You can set it accordingly.
- You can run the script in the background like mentioned below:
$ nohup sh count_blastx.sh &