Merge branch 'develop' into bug/JAL-4421_customise_volume_name_of_DMG_installers
[jalview.git] / src / jalview / viewmodel / PaSiMapModel.java
index 4bb6d8a..a0e5174 100644 (file)
@@ -28,6 +28,7 @@ import jalview.datamodel.AlignmentView;
 import jalview.datamodel.Point;
 import jalview.datamodel.SequenceI;
 import jalview.datamodel.SequencePoint;
+import jalview.gui.PairwiseAlignPanel;
 import jalview.viewmodel.AlignmentViewport;
 
 import java.util.List;
@@ -42,8 +43,6 @@ public class PaSiMapModel
 
   private final SequenceI[] seqs;
 
-  private final SimilarityParamsI similarityParams;
-
   /*
    * options - score model, nucleotide / protein
    */
@@ -71,22 +70,21 @@ public class PaSiMapModel
    * @param params
    */
   public PaSiMapModel(AlignmentViewport seqData, SequenceI[] sqs, boolean nuc,
-          ScoreModelI modelName, SimilarityParamsI params)
+          ScoreModelI modelName)
   {
     inputData = seqData;
     seqs = sqs;
     nucleotide = nuc;
     scoreModel = modelName;
-    similarityParams = params;
   }
 
   /**
    * Performs the PaSiMap calculation (in the same thread) and extracts result data
    * needed for visualisation by PaSiMapPanel
    */
-  public void calculate()
+  public void calculate(PairwiseAlignPanel pap)
   {
-    pasimap = new PaSiMap(inputData, scoreModel, similarityParams);
+    pasimap = new PaSiMap(inputData, scoreModel, pap);
     pasimap.run(); // executes in same thread, wait for completion
 
     // Now find the component coordinates
@@ -99,12 +97,12 @@ public class PaSiMapModel
 
     int width = pasimap.getWidth();
     int height = pasimap.getHeight();
-    top = height;
+    top = width;
 
     points = new Vector<>();
     Point[] scores = pasimap.getComponents(width - 1, width - 2, width - 3, 1);
 
-    for (int i = 0; i < top; i++)
+    for (int i = 0; i < height; i++)
     {
       SequencePoint sp = new SequencePoint(seqs[i], scores[i]);
       points.add(sp);
@@ -156,7 +154,7 @@ public class PaSiMapModel
     // note: actual indices for components are dim1-1, etc (patch for JAL-1123)
     Point[] scores = pasimap.getComponents(dim1 - 1, dim2 - 1, dim3 - 1, 1);
 
-    for (int i = 0; i < pasimap.getWidth(); i++)
+    for (int i = 0; i < pasimap.getHeight(); i++)
     {
       points.get(i).coord = scores[i];
     }
@@ -167,6 +165,11 @@ public class PaSiMapModel
     return pasimap.getDetails();
   }
 
+  public String getAlignmentOutput()
+  {
+    return pasimap.getAlignmentOutput();
+  }
+
   public AlignmentViewport getInputData()
   {
     return inputData;
@@ -193,7 +196,7 @@ public class PaSiMapModel
     }
     else
     {
-      for (int d = 1, dmax = pasimap.component(1).length; d <= dmax; d++)
+      for (int d = 1, dmax = (int) pasimap.getDim(); d <= dmax; d++)
       {
         csv.append("," + d);
       }
@@ -202,10 +205,20 @@ public class PaSiMapModel
     for (int s = 0; s < seqs.length; s++)
     {
       csv.append("\"" + seqs[s].getName() + "\"");
-      Point p = points.get(s).coord;
-      csv.append(",").append(p.x);
-      csv.append(",").append(p.y);
-      csv.append(",").append(p.z);
+      if (!transformed)
+      {
+       double[] fl = pasimap.component(s);
+       for (int d = fl.length - 1; d >= 0; d--)
+       {
+         csv.append(",");
+         csv.append(fl[d]);
+       }
+      } else {
+        Point p = points.get(s).coord;
+        csv.append(",").append(p.x);
+        csv.append(",").append(p.y);
+        csv.append(",").append(p.z);
+      }
       csv.append("\n");
     }
     return csv.toString();
@@ -221,16 +234,6 @@ public class PaSiMapModel
     this.scoreModel = sm;
   }
 
-  /**
-   * Answers the parameters configured for pairwise similarity calculations
-   * 
-   * @return
-   */
-  public SimilarityParamsI getSimilarityParameters()
-  {
-    return similarityParams;
-  }
-
   public List<SequencePoint> getSequencePoints()
   {
     return points;