JAL-4134 column grouping model and methods moved to their own object held by by Conta...
[jalview.git] / src / jalview / ws / datamodel / alphafold / PAEContactMatrix.java
index d48d539..0ba9584 100644 (file)
@@ -23,6 +23,8 @@ import jalview.datamodel.ContactListI;
 import jalview.datamodel.ContactListImpl;
 import jalview.datamodel.ContactListProviderI;
 import jalview.datamodel.ContactMatrixI;
+import jalview.datamodel.GroupSet;
+import jalview.datamodel.GroupSetI;
 import jalview.datamodel.Mapping;
 import jalview.datamodel.SequenceDummy;
 import jalview.datamodel.SequenceI;
@@ -94,12 +96,14 @@ public class PAEContactMatrix extends MappableContactMatrix<PAEContactMatrix> im
    * @param newRefSeq
    * @param newFromMapList
    * @param elements2
+   * @param grps2 
    */
   public PAEContactMatrix(SequenceI newRefSeq,
-          MapList newFromMapList, float[][] elements2)
+          MapList newFromMapList, float[][] elements2, GroupSet grps2)
   {
     this(newRefSeq,elements2);
     toSeq = newFromMapList;
+    grps= grps2;
   }
 
   /**
@@ -307,127 +311,7 @@ public class PAEContactMatrix extends MappableContactMatrix<PAEContactMatrix> im
   {
     return length;
   }
-  List<BitSet> groups=null;
-  @Override
-  public boolean hasGroups()
-  {
-    return groups!=null;
-  }
-  String newick=null;
-  @Override
-  public String getNewick()
-  {
-    return newick;
-  }
-  @Override
-  public boolean hasTree()
-  {
-    return newick!=null && newick.length()>0;
-  }
-  boolean abs;
-  double thresh;
-  String treeType=null;
-  public void makeGroups(float thresh,boolean abs)
-  {
-    AverageDistanceEngine clusterer = new AverageDistanceEngine(null, null, this);
-    double height = clusterer.findHeight(clusterer.getTopNode());
-    newick = new jalview.io.NewickFile(clusterer.getTopNode(),false,true).print();
-    treeType = "UPGMA";
-    Console.trace("Newick string\n"+newick);
-
-    List<BinaryNode> nodegroups;
-    if (abs ? height > thresh : 0 < thresh && thresh < 1)
-    {
-      float cut = abs ? (float) (thresh / height) : thresh;
-      Console.debug("Threshold "+cut+" for height="+height);
-
-      nodegroups = clusterer.groupNodes(cut);
-    }
-    else
-    {
-      nodegroups = new ArrayList<BinaryNode>();
-      nodegroups.add(clusterer.getTopNode());
-    }
-    this.abs=abs;
-    this.thresh=thresh;
-    groups = new ArrayList<>();
-    for (BinaryNode root:nodegroups)
-    {
-      BitSet gpset=new BitSet();
-      for (BinaryNode leaf:clusterer.findLeaves(root))
-      {
-        gpset.set((Integer)leaf.element());
-      }
-      groups.add(gpset);
-    }
-  }
-  @Override
-  public void updateGroups(List<BitSet> colGroups)
-  {
-    if (colGroups!=null)
-    {
-      groups=colGroups;
-    }    
-  }
-  @Override
-  public BitSet getGroupsFor(int column)
-  {
-    if (groups != null)
-    {
-      for (BitSet gp : groups)
-      {
-        if (gp.get(column))
-        {
-          return gp;
-        }
-      }
-    }
-    return super.getGroupsFor(column);
-  }
-
-  HashMap<BitSet,Color> colorMap = new HashMap<>();
-  @Override 
-  public Color getColourForGroup(BitSet bs)
-  {
-    if (bs==null) {
-      return Color.white;
-    }
-    Color groupCol=colorMap.get(bs);
-    if (groupCol==null)
-    {
-      return Color.white;
-    }
-    return groupCol;
-  }
-  @Override 
-  public void setColorForGroup(BitSet bs,Color color)
-  {
-    colorMap.put(bs,color);
-  }
-  public void restoreGroups(List<BitSet> newgroups, String treeMethod,
-          String tree, double thresh2)
-  {
-    treeType=treeMethod;
-    groups = newgroups;
-    thresh=thresh2;
-    newick =tree;
-    
-  }
-  @Override
-  public boolean hasCutHeight() {
-    return groups!=null && thresh!=0;
-  }
-  @Override
-  public double getCutHeight()
-  {
-    return thresh;
-  }
-  @Override
-  public String getTreeMethod()
-  {
-    return treeType;
-  }
-
+  
   public static void validateContactMatrixFile(String fileName) throws FileFormatException,IOException
   {
     FileInputStream infile=null;
@@ -458,7 +342,8 @@ public class PAEContactMatrix extends MappableContactMatrix<PAEContactMatrix> im
   protected PAEContactMatrix newMappableContactMatrix(
           SequenceI newRefSeq, MapList newFromMapList)
   {
-      return new PAEContactMatrix(newRefSeq, newFromMapList,
-              elements);
+    PAEContactMatrix pae=new PAEContactMatrix(newRefSeq, newFromMapList,
+              elements, new GroupSet(grps));
+    return pae;
   } 
 }