JAL-4124 decouple mappable contact matrix mapping logic from underlying contact matri...
[jalview.git] / src / jalview / datamodel / ContactMatrix.java
index 48b6e6b..32fa5b1 100644 (file)
@@ -1,17 +1,12 @@
 package jalview.datamodel;
 
-import java.awt.Color;
-import java.math.BigInteger;
 import java.util.ArrayList;
-import java.util.BitSet;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Spliterator;
 import java.util.StringTokenizer;
 
 import jalview.bin.Console;
 
-public abstract class ContactMatrix implements ContactMatrixI
+public abstract class ContactMatrix extends GroupSetHolder implements ContactMatrixI
 {
   /**
    * are contacts reflexive ?
@@ -107,26 +102,7 @@ public abstract class ContactMatrix implements ContactMatrixI
       @Override
       public double getContactAt(int column)
       {
-        List<Float> clist;
-        Float cl = null;
-        if (symmetric)
-        {
-          if (p < column)
-          {
-            clist = contacts.get(p);
-            cl = clist.get(column);
-          }
-          else
-          {
-            clist = contacts.get(column);
-            cl = clist.get(p);
-          }
-        }
-        else
-        {
-          clist = contacts.get(p);
-          cl = clist.get(column);
-        }
+        Float cl = getFloatElementAt(column, p);
         if (cl == null)
         {
           // return 0 not NaN ?
@@ -136,7 +112,41 @@ public abstract class ContactMatrix implements ContactMatrixI
       }
     });
   }
-
+  private Float getFloatElementAt(int column, int p)
+  {
+    
+    List<Float> clist;
+    Float cl = null;
+    if (symmetric)
+    {
+      if (p < column)
+      {
+        clist = contacts.get(p);
+        cl = clist.get(column);
+      }
+      else
+      {
+        clist = contacts.get(column);
+        cl = clist.get(p);
+      }
+    }
+    else
+    {
+      clist = contacts.get(p);
+      cl = clist.get(column);
+    }
+    return cl;
+  }
+  @Override
+  public double getElementAt(int column, int row)
+  {
+    Float cl = getFloatElementAt(column, row);
+    if (cl!=null)
+    {
+      return cl;
+    }
+    throw(new RuntimeException("Out of Bounds "+column+","+row));
+  }
   @Override
   public float getMin()
   {
@@ -160,17 +170,6 @@ public abstract class ContactMatrix implements ContactMatrixI
   {
     return "Contact Matrix";
   }
-  GroupSet grps = new GroupSet();
-  @Override
-  public GroupSetI getGroupSet()
-  {
-    return grps;
-  }
-  @Override
-  public void setGroupSet(GroupSet makeGroups)
-  {
-    grps = makeGroups;
-  }
   public static String contactToFloatString(ContactMatrixI cm)
   {
     StringBuilder sb = new StringBuilder();