JAL-2629 fix hmmsearch/jackhmmer assigning incorrect evalues and scores
[jalview.git] / src / jalview / hmmer / HMMSearch.java
index bf58a27..a06f186 100644 (file)
@@ -196,11 +196,13 @@ public class HMMSearch extends HmmerCommand
         else if (MessageManager.getString(REPORTING_CUTOFF_KEY)
                 .equals(name))
         {
-          if (CUTOFF_EVALUE.equals(arg.getValue()))
+          if (MessageManager.getString(CUTOFF_EVALUE)
+                  .equals(arg.getValue()))
           {
             useEvalueCutoff = true;
           }
-          else if (CUTOFF_SCORE.equals(arg.getValue()))
+          else if (MessageManager.getString(CUTOFF_SCORE)
+                  .equals(arg.getValue()))
           {
             useScoreCutoff = true;
           }
@@ -229,16 +231,11 @@ public class HMMSearch extends HmmerCommand
         }
         else if (MessageManager.getString(DATABASE_KEY).equals(name))
         {
-          dbFound = true;
-          dbPath = arg.getValue();
-          if (!MessageManager.getString(THIS_ALIGNMENT_KEY)
-                  .equals(dbPath))
+          databaseFile = new File(arg.getValue());
+          if (!arg.getValue().isEmpty())
           {
-            int pos = dbPath.lastIndexOf(File.separator);
-            databaseName = dbPath.substring(pos + 1);
-            databaseFile = new File(dbPath);
+            searchAlignment = false;
           }
-          searchAlignment = false;
         }
         else if (MessageManager.getString(RETURN_N_NEW_SEQ).equals(name))
         {
@@ -276,7 +273,10 @@ public class HMMSearch extends HmmerCommand
       AlignmentI copy = new Alignment(al);
       deleteHmmSequences(copy);
 
-      sequencesHash = stashSequences(copy.getSequencesArray());
+      if (searchAlignment)
+      {
+        sequencesHash = stashSequences(copy.getSequencesArray());
+      }
 
       exportStockholm(copy.getSequencesArray(), databaseFile, null);
 
@@ -491,10 +491,11 @@ public class HMMSearch extends HmmerCommand
     while (!"  ------ inclusion threshold ------".equals(line)
             && !"".equals(line))
     {
-      SequenceI seq = seqs[index];
       Scanner scanner = new Scanner(line);
       String evalue = scanner.next();
       String score = scanner.next();
+      checkSequenceOrder(index, scanner);
+      SequenceI seq = seqs[index];
       addScoreAnnotations(evalue, score, seq);
       scanner.close();
       line = br.readLine();
@@ -536,4 +537,29 @@ public class HMMSearch extends HmmerCommand
     }
   }
 
+  private void checkSequenceOrder(int index, Scanner scanner)
+  {
+    String seqName = null;
+
+    for (int i = 0; i < 8; i++)
+    {
+      seqName = scanner.next();
+    }
+
+    if (!seqs[index].getName().equals(seqName))
+    {
+      SequenceI temp = seqs[index];
+
+      for (int j = 0; j < seqs.length; j++)
+      {
+        if (seqs[j].getName().equals(seqName))
+        {
+          seqs[index] = seqs[j];
+          seqs[j] = temp;
+          break;
+        }
+      }
+    }
+  }
+    
 }