add HMMER colour scheme
[jalview.git] / src / jalview / datamodel / HiddenMarkovModel.java
index f614013..e214373 100644 (file)
@@ -290,10 +290,22 @@ public class HiddenMarkovModel
     int symbolIndex;
     int nodeIndex;
     Double probability;
+    if (symbol == '-')
+    {
+      return 0d;
+    }
     symbolIndex = symbolIndexLookup.get(symbol);
-    nodeIndex = nodeLookup.get(alignColumn);
-    probability = getNode(nodeIndex).getMatchEmissions().get(symbolIndex);
-    return probability;
+    if (nodeLookup.containsKey(alignColumn + 1))
+    {
+      nodeIndex = nodeLookup.get(alignColumn + 1);
+      probability = getNode(nodeIndex).getMatchEmissions().get(symbolIndex);
+      probability = Math.pow(Math.E, -probability);
+      return probability;
+    }
+    else
+    {
+      return 0d;
+    }
 
   }
 
@@ -310,10 +322,23 @@ public class HiddenMarkovModel
     int symbolIndex;
     int nodeIndex;
     Double probability;
+    if (symbol == '-')
+    {
+      return 0d;
+    }
     symbolIndex = symbolIndexLookup.get(symbol);
-    nodeIndex = nodeLookup.get(alignColumn);
-    probability = getNode(nodeIndex).getInsertEmissions().get(symbolIndex);
-    return probability;
+    if (nodeLookup.containsKey(alignColumn + 1))
+    {
+      nodeIndex = nodeLookup.get(alignColumn + 1);
+      probability = getNode(nodeIndex).getInsertEmissions()
+              .get(symbolIndex);
+      probability = Math.pow(Math.E, -probability);
+      return probability;
+    }
+    else
+    {
+      return 0d;
+    }
 
   }
   
@@ -332,10 +357,18 @@ public class HiddenMarkovModel
     int nodeIndex;
     Double probability;
     transitionIndex = getTransitionType(transition);
-    nodeIndex = nodeLookup.get(alignColumn);
-    probability = getNode(nodeIndex).getStateTransitions()
+    if (nodeLookup.containsKey(alignColumn + 1))
+    {
+      nodeIndex = nodeLookup.get(alignColumn + 1);
+      probability = getNode(nodeIndex).getStateTransitions()
             .get(transitionIndex);
-    return probability;
+      probability = Math.pow(Math.E, -probability);
+      return probability;
+    }
+    else
+    {
+      return 0d;
+    }
 
   }