X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2FContactMatrix.java;h=b01dd6c0c92b877b21298510ee13455439d2d6dd;hb=eb3e681d6e82ccdd5d312d1981dfb306e7f479f0;hp=f2e207c596605079ab503ff49c08292d3daf5515;hpb=335e6b12c126bcb6825cd3f66422677db7cd91c7;p=jalview.git diff --git a/src/jalview/datamodel/ContactMatrix.java b/src/jalview/datamodel/ContactMatrix.java index f2e207c..b01dd6c 100644 --- a/src/jalview/datamodel/ContactMatrix.java +++ b/src/jalview/datamodel/ContactMatrix.java @@ -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 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 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;c0) { - 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; } }