src/hg/blastToPsl/blastToPsl.c 1.23

1.23 2009/04/12 03:47:20 markd
added support for PSI BLAST madness
Index: src/hg/blastToPsl/blastToPsl.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/blastToPsl/blastToPsl.c,v
retrieving revision 1.22
retrieving revision 1.23
diff -b -B -U 4 -r1.22 -r1.23
--- src/hg/blastToPsl/blastToPsl.c	22 Aug 2007 02:49:47 -0000	1.22
+++ src/hg/blastToPsl/blastToPsl.c	12 Apr 2009 03:47:20 -0000	1.23
@@ -64,8 +64,10 @@
   "               n >= 4 dumps the result of each query\n"
   "  -eVal=n n is e-value threshold to filter results. Format can be either\n"
   "          an integer, double or 1e-10. Default is no filter.\n"
   "  -pslx - create PSLX output (includes sequences for blocks)\n" 
+  "\n"
+  "Output only results of last round from PSI BLAST\n"
   );
 }
 
 static boolean isProteinSeqs(unsigned flags)
@@ -336,17 +338,21 @@
 pslFree(&psl);
 }
 
 void processQuery(struct blastQuery *bq, unsigned flags, FILE* pslFh, FILE* scoreFh)
-/* process one query  */
+/* process one query. Each gaped block becomes an psl. Chaining is left
+ * to other programs.  Only output last round from PSI BLAST */
 {
 struct blastGappedAli* ba;
 struct blastBlock *bb;
 for (ba = bq->gapped; ba != NULL; ba = ba->next)
     {
+    if (ba->psiRound == bq->psiRounds)
+        {
     for (bb = ba->blocks; bb != NULL; bb = bb->next)
         processBlock(bb, flags, pslFh, scoreFh);
     }
+    }
 }
 
 static unsigned getBlastAlgo(struct blastFile *bf)
 /* determine blast algorithm */