X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fdatamodel%2FContactMatrixI.java;h=546e9791da1bf75860813b662a2de04e920c58b9;hb=80b889f0cca49103e1b20ed806755a0719789906;hp=d9afc7febc951491a60c6130d550cc70c00ed243;hpb=c2dd443026847395d0c9dc824c6c90457de9a675;p=jalview.git diff --git a/src/jalview/datamodel/ContactMatrixI.java b/src/jalview/datamodel/ContactMatrixI.java index d9afc7f..546e979 100644 --- a/src/jalview/datamodel/ContactMatrixI.java +++ b/src/jalview/datamodel/ContactMatrixI.java @@ -1,5 +1,10 @@ package jalview.datamodel; +import java.awt.Color; +import java.util.Arrays; +import java.util.BitSet; +import java.util.List; + public interface ContactMatrixI { @@ -9,18 +14,115 @@ public interface ContactMatrixI float getMax(); - boolean hasReferenceSeq(); - - SequenceI getReferenceSeq(); - String getAnnotDescr(); String getAnnotLabel(); /** - * string indicating how the contactMatrix should be rendered - stored in calcId - * @return + * string indicating how the contactMatrix should be rendered - stored in + * calcId + * + * @return */ String getType(); + int getWidth(); + + int getHeight(); + + public GroupSetI getGroupSet(); + + /// proxy methods to simplify use of the interface + /// Mappable contact matrices can override these to perform mapping + + default public boolean hasGroupSet() + { + return getGroupSet() != null; + } + + default boolean hasGroups() + { + return hasGroupSet() && getGroupSet().hasGroups(); + } + + default BitSet getGroupsFor(int column) + { + if (!hasGroupSet()) + { + BitSet colbitset = new BitSet(); + colbitset.set(column); + return colbitset; + } + return getGroupSet().getGroupsFor(column); + } + + default List getGroups() + { + if (!hasGroupSet()) + { + return Arrays.asList(); + } + return getGroupSet().getGroups(); + } + + default boolean hasTree() + { + return hasGroupSet() ? getGroupSet().hasTree() : false; + } + + /** + * Newick representation of clustered matrix + * + * @return null unless hasTree is true + */ + default String getNewick() + { + return hasGroupSet() ? getGroupSet().getNewick() : null; + } + + default String getTreeMethod() + { + return hasGroupSet() ? getGroupSet().getTreeMethod() : null; + } + + default boolean hasCutHeight() + { + return hasGroupSet() ? getGroupSet().hasCutHeight() : false; + } + + default double getCutHeight() + { + return hasGroupSet() ? getGroupSet().getCutHeight() : 0; + } + + default void updateGroups(List colGroups) + { + if (hasGroupSet()) + { + getGroupSet().updateGroups(colGroups); + } + } + + default void setColorForGroup(BitSet bs, Color color) + { + if (hasGroupSet()) + { + getGroupSet().setColorForGroup(bs, color); + } + } + + default Color getColourForGroup(BitSet bs) + { + if (hasGroupSet()) + { + return getGroupSet().getColourForGroup(bs); + } + else + { + return Color.white; + } + } + + void setGroupSet(GroupSet makeGroups); + }