JAL-4090 JAL-1551 spotlessApply
[jalview.git] / src / jalview / datamodel / ContactMatrix.java
index f2e207c..b01dd6c 100644 (file)
@@ -1,14 +1,13 @@
 package jalview.datamodel;
 
-import java.math.BigInteger;
 import java.util.ArrayList;
 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 ?
@@ -104,26 +103,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 ?
@@ -134,30 +114,53 @@ public abstract class ContactMatrix implements ContactMatrixI
     });
   }
 
-  @Override
-  public float getMin()
+  private Float getFloatElementAt(int column, int p)
   {
-    return min;
+
+    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 float getMax()
+  public double getElementAt(int column, int row)
   {
-    return max;
+    Float cl = getFloatElementAt(column, row);
+    if (cl != null)
+    {
+      return cl;
+    }
+    throw (new RuntimeException("Out of Bounds " + column + "," + row));
   }
 
   @Override
-  public boolean hasReferenceSeq()
+  public float getMin()
   {
-    // TODO Auto-generated method stub
-    return false;
+    return min;
   }
 
   @Override
-  public SequenceI getReferenceSeq()
+  public float getMax()
   {
-    // TODO Auto-generated method stub
-    return null;
+    return max;
   }
 
   @Override
@@ -175,17 +178,29 @@ public abstract class ContactMatrix implements ContactMatrixI
   public static String contactToFloatString(ContactMatrixI cm)
   {
     StringBuilder sb = new StringBuilder();
-    for (int c=0;c<cm.getWidth();c++)
+    for (int c = 0; c < cm.getWidth(); c++)
     {
-      ContactListI cl=cm.getContactList(c);
-      if (cl!=null) {
-      for (int h=0;h<=cl.getContactHeight();h++)
+      ContactListI cl = cm.getContactList(c);
+      long lastsb = -1;
+      if (cl != null)
       {
-        if (sb.length()>0) {
-          sb.append('\t');
+        for (int h = 0; h <= cl.getContactHeight(); h++)
+        {
+          if (sb.length() > 0)
+          {
+            if (sb.length() - lastsb > 320)
+            {
+              // newline
+              sb.append('\n');
+              lastsb = sb.length();
+            }
+            else
+            {
+              sb.append('\t');
+            }
+          }
+          sb.append(cl.getContactAt(h));
         }
-        sb.append(cl.getContactAt(h));
-      }
       }
     }
     return sb.toString();
@@ -195,29 +210,27 @@ public abstract class ContactMatrix implements ContactMatrixI
           int rows)
   {
     float[][] vals = new float[cols][rows];
-    StringTokenizer tabsep = new StringTokenizer(values,""+'\t');
-    int c=0,r=0;
-    
+    StringTokenizer tabsep = new StringTokenizer(values, "" + '\t' + '\n');
+    int c = 0, r = 0;
     while (tabsep.hasMoreTokens())
     {
       double elem = Double.valueOf(tabsep.nextToken());
-      vals[c][r++]=(float) elem;
-      if (r>=vals[c].length)
+      vals[c][r++] = (float) elem;
+      if (r >= vals[c].length)
       {
-        r=0;
+        r = 0;
         c++;
       }
-      if (c>=vals.length)
+      if (c >= vals.length)
       {
-        
         break;
       }
     }
     if (tabsep.hasMoreElements())
     {
-      Console.warn("Ignoring additional elements for Float string to contact matrix parsing.");
+      Console.warn(
+              "Ignoring additional elements for Float string to contact matrix parsing.");
     }
-      
     return vals;
   }
 }