X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2FContactMatrix.java;h=48b6e6b45b3476fc97548fbd3ad4bf47ada00b9d;hb=5830d3c07ab8e6597cd38b3370f0c4121348f771;hp=b4f7c078217fccfe0783386188db28b9a2888c09;hpb=c2dd443026847395d0c9dc824c6c90457de9a675;p=jalview.git diff --git a/src/jalview/datamodel/ContactMatrix.java b/src/jalview/datamodel/ContactMatrix.java index b4f7c07..48b6e6b 100644 --- a/src/jalview/datamodel/ContactMatrix.java +++ b/src/jalview/datamodel/ContactMatrix.java @@ -1,7 +1,15 @@ 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 { @@ -142,28 +150,73 @@ public abstract class ContactMatrix implements ContactMatrixI } @Override - public boolean hasReferenceSeq() + public String getAnnotLabel() { - // TODO Auto-generated method stub - return false; + return "Contact Matrix"; } @Override - public SequenceI getReferenceSeq() + public String getAnnotDescr() { - // TODO Auto-generated method stub - return null; + return "Contact Matrix"; } - + GroupSet grps = new GroupSet(); @Override - public String getAnnotLabel() + public GroupSetI getGroupSet() { - return "Contact Matrix"; + return grps; } - @Override - public String getAnnotDescr() + public void setGroupSet(GroupSet makeGroups) { - return "Contact Matrix"; + grps = makeGroups; + } + public static String contactToFloatString(ContactMatrixI cm) + { + StringBuilder sb = new StringBuilder(); + for (int c = 0; c < cm.getWidth(); c++) + { + ContactListI cl = cm.getContactList(c); + if (cl != null) + { + for (int h = 0; h <= cl.getContactHeight(); h++) + { + if (sb.length() > 0) + { + 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; } }