X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2FContactMatrix.java;h=f2e207c596605079ab503ff49c08292d3daf5515;hb=a5928e2c1b9e2cea8d9c43f3d03f9cce2604f3b2;hp=801b29247810391a8e636c9a261791c21e54a198;hpb=c3d17bf8cd43fe710f94a1111e845a0c435bb0c9;p=jalview.git diff --git a/src/jalview/datamodel/ContactMatrix.java b/src/jalview/datamodel/ContactMatrix.java index 801b292..f2e207c 100644 --- a/src/jalview/datamodel/ContactMatrix.java +++ b/src/jalview/datamodel/ContactMatrix.java @@ -1,11 +1,14 @@ package jalview.datamodel; -import jalview.ws.params.InvalidArgumentException; - +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 class ContactMatrix implements ContactMatrixI +public abstract class ContactMatrix implements ContactMatrixI { /** * are contacts reflexive ? @@ -27,7 +30,7 @@ public class ContactMatrix implements ContactMatrixI { if (left < 0 || right < 0) { - throw new Error(new InvalidArgumentException( + throw new Error(new RuntimeException( "Cannot have negative indices for contact left=" + left + " right=" + right + " strength=" + strength)); } @@ -73,7 +76,6 @@ public class ContactMatrix implements ContactMatrixI } } - @Override public ContactListI getContactList(final int column) { @@ -87,6 +89,12 @@ public class ContactMatrix implements ContactMatrixI int p = column; @Override + public int getPosition() + { + return p; + } + + @Override public int getContactHeight() { return width; @@ -137,4 +145,79 @@ public class ContactMatrix implements ContactMatrixI { return max; } + + @Override + public boolean hasReferenceSeq() + { + // TODO Auto-generated method stub + return false; + } + + @Override + public SequenceI getReferenceSeq() + { + // TODO Auto-generated method stub + return null; + } + + @Override + public String getAnnotLabel() + { + return "Contact Matrix"; + } + + @Override + public String getAnnotDescr() + { + return "Contact Matrix"; + } + + public static String contactToFloatString(ContactMatrixI cm) + { + StringBuilder sb = new StringBuilder(); + for (int c=0;c0) { + sb.append('\t'); + } + sb.append(cl.getContactAt(h)); + } + } + } + return sb.toString(); + } + + public static float[][] fromFloatStringToContacts(String values, int cols, + int rows) + { + float[][] vals = new float[cols][rows]; + StringTokenizer tabsep = new StringTokenizer(values,""+'\t'); + int c=0,r=0; + + while (tabsep.hasMoreTokens()) + { + double elem = Double.valueOf(tabsep.nextToken()); + vals[c][r++]=(float) elem; + if (r>=vals[c].length) + { + r=0; + c++; + } + if (c>=vals.length) + { + + break; + } + } + if (tabsep.hasMoreElements()) + { + Console.warn("Ignoring additional elements for Float string to contact matrix parsing."); + } + + return vals; + } }