test HMMER colour scheme
[jalview.git] / src / jalview / schemes / HMMERColourScheme.java
diff --git a/src/jalview/schemes/HMMERColourScheme.java b/src/jalview/schemes/HMMERColourScheme.java
new file mode 100644 (file)
index 0000000..b2d0742
--- /dev/null
@@ -0,0 +1,108 @@
+package jalview.schemes;
+
+import jalview.datamodel.AnnotatedCollectionI;
+import jalview.datamodel.HiddenMarkovModel;
+import jalview.datamodel.SequenceCollectionI;
+import jalview.datamodel.SequenceI;
+
+import java.awt.Color;
+import java.util.Map;
+
+public class HMMERColourScheme extends ResidueColourScheme
+{
+
+  AnnotatedCollectionI alignment;
+
+  HiddenMarkovModel hmm;
+  
+  boolean peptideSpecific;
+
+  boolean nucleotideSpecific;
+
+  public HMMERColourScheme(HiddenMarkovModel markov)
+  {
+    hmm = markov;
+  }
+  public HMMERColourScheme()
+  {
+
+  }
+
+  @Override
+  public Color findColour(char symbol, int position, SequenceI seq,
+          String consensusResidue, float pid)
+  {
+    if (hmm ==null)
+    {
+      return new Color(255, 255, 255);
+    }
+    return findColour(symbol, position);
+  }
+
+  public Color findColour(char symbol, int position)
+  {
+
+
+    Double probability;
+    probability = hmm.getMatchEmissionProbability(position, symbol);
+    // Double redModifier = Math.pow(probability, 0.9);
+    Double doubleGreenModifier;
+    float greenModifier;
+    if (probability < 0.5)
+    {
+      doubleGreenModifier = probability;
+      greenModifier = doubleGreenModifier.floatValue();
+    }
+    else
+    {
+      doubleGreenModifier = Math.pow(probability, 1 / 1.9);
+      greenModifier = doubleGreenModifier.floatValue();
+    }
+    // Double blueModifier = Math.pow(probability, 0.9);
+    return new Color(1f, 1f - greenModifier, 0.f);
+
+  }
+
+  @Override
+  public void alignmentChanged(AnnotatedCollectionI collection,
+          Map<SequenceI, SequenceCollectionI> hiddenReps)
+  {
+
+    collection.setHMM(hmm);
+  }
+
+  @Override
+  public ColourSchemeI getInstance(AnnotatedCollectionI sg,
+          Map<SequenceI, SequenceCollectionI> hiddenRepSequences)
+  {
+    
+    
+    
+    
+
+    HMMERColourScheme markov = new HMMERColourScheme(sg.getHMM());
+    return markov;
+  }
+
+  @Override
+  public boolean isApplicableTo(AnnotatedCollectionI ac)
+  {
+      return true;
+
+  }
+
+  @Override
+  public String getSchemeName()
+  {
+
+    return JalviewColourScheme.HMMER.name();
+  }
+
+  @Override
+  public boolean isSimple()
+  {
+    // TODO Auto-generated method stub
+    return false;
+  }
+
+}