JAL-3285 add unmerged code to AlignmentAnnotation
authortva <tva@10.205.251.175>
Wed, 5 Jun 2019 13:14:25 +0000 (14:14 +0100)
committertva <tva@10.205.251.175>
Wed, 5 Jun 2019 13:14:25 +0000 (14:14 +0100)
src/jalview/datamodel/AlignmentAnnotation.java

index 7858822..6ac5da8 100755 (executable)
@@ -341,245 +341,6 @@ public class AlignmentAnnotation
   }
 
   /**
-   * Copy constructor creates a new independent annotation row with the same
-   * associated sequenceRef
-   * 
-   * @param annotation
-   */
-  public AlignmentAnnotation(AlignmentAnnotation annotation)
-  {
-    setAnnotationId();
-    this.label = new String(annotation.label);
-    if (annotation.description != null)
-    {
-      this.description = new String(annotation.description);
-    }
-    this.graphMin = annotation.graphMin;
-    this.graphMax = annotation.graphMax;
-    this.graph = annotation.graph;
-    this.graphHeight = annotation.graphHeight;
-    this.graphGroup = annotation.graphGroup;
-    this.groupRef = annotation.groupRef;
-    this.editable = annotation.editable;
-    this.autoCalculated = annotation.autoCalculated;
-    this.hasIcons = annotation.hasIcons;
-    this.hasText = annotation.hasText;
-    this.height = annotation.height;
-    this.label = annotation.label;
-    this.padGaps = annotation.padGaps;
-    this.visible = annotation.visible;
-    this.centreColLabels = annotation.centreColLabels;
-    this.scaleColLabel = annotation.scaleColLabel;
-    this.showAllColLabels = annotation.showAllColLabels;
-    this.calcId = annotation.calcId;
-    if (annotation.properties != null)
-    {
-      properties = new HashMap<>();
-      for (Map.Entry<String, String> val : annotation.properties.entrySet())
-      {
-        properties.put(val.getKey(), val.getValue());
-      }
-    }
-    if (this.hasScore = annotation.hasScore)
-    {
-      this.score = annotation.score;
-    }
-    if (annotation.threshold != null)
-    {
-      threshold = new GraphLine(annotation.threshold);
-    }
-    Annotation[] ann = annotation.annotations;
-    if (annotation.annotations != null)
-    {
-      this.annotations = new Annotation[ann.length];
-      for (int i = 0; i < ann.length; i++)
-      {
-        if (ann[i] != null)
-        {
-          annotations[i] = new Annotation(ann[i]);
-          if (_linecolour != null)
-          {
-            _linecolour = annotations[i].colour;
-          }
-        }
-      }
-    }
-    if (annotation.sequenceRef != null)
-    {
-      this.sequenceRef = annotation.sequenceRef;
-      if (annotation.sequenceMapping != null)
-      {
-        Integer p = null;
-        sequenceMapping = new HashMap<>();
-        Iterator<Integer> pos = annotation.sequenceMapping.keySet()
-                .iterator();
-        while (pos.hasNext())
-        {
-          // could optimise this!
-          p = pos.next();
-          Annotation a = annotation.sequenceMapping.get(p);
-          if (a == null)
-          {
-            continue;
-          }
-          if (ann != null)
-          {
-            for (int i = 0; i < ann.length; i++)
-            {
-              if (ann[i] == a)
-              {
-                sequenceMapping.put(p, annotations[i]);
-              }
-            }
-          }
-        }
-      }
-      else
-      {
-        this.sequenceMapping = null;
-      }
-    }
-    // TODO: check if we need to do this: JAL-952
-    // if (this.isrna=annotation.isrna)
-    {
-      // _rnasecstr=new SequenceFeature[annotation._rnasecstr];
-    }
-    validateRangeAndDisplay(); // construct hashcodes, etc.
-  }
-
-  /**
-   * copy constructor with edit based on the hidden columns marked in colSel
-   * 
-   * @param alignmentAnnotation
-   * @param colSel
-   */
-  public AlignmentAnnotation(AlignmentAnnotation alignmentAnnotation,
-          HiddenColumns hidden)
-  {
-    this(alignmentAnnotation);
-    if (annotations == null)
-    {
-      return;
-    }
-    makeVisibleAnnotation(hidden);
-  }
-
-  /**
-   * Creates a new AlignmentAnnotation object.
-   * 
-   * @param label
-   *          DOCUMENT ME!
-   * @param description
-   *          DOCUMENT ME!
-   * @param annotations
-   *          DOCUMENT ME!
-   * @param min
-   *          DOCUMENT ME!
-   * @param max
-   *          DOCUMENT ME!
-   * @param winLength
-   *          DOCUMENT ME!
-   */
-  public AlignmentAnnotation(String label, String description,
-          Annotation[] annotations, float min, float max, int graphType)
-  {
-    setAnnotationId();
-    // graphs are not editable
-    editable = graphType == 0;
-
-    this.label = label;
-    this.description = description;
-    this.annotations = annotations;
-    graph = graphType;
-    graphMin = min;
-    graphMax = max;
-    validateRangeAndDisplay();
-  }
-
-  /**
-   * Score only annotation
-   * 
-   * @param label
-   * @param description
-   * @param score
-   */
-  public AlignmentAnnotation(String label, String description, double score)
-  {
-    this(label, description, null);
-    setScore(score);
-  }
-
-  /**
-   * Updates the _rnasecstr field Determines the positions that base pair and
-   * the positions of helices based on secondary structure from a Stockholm file
-   * 
-   * @param rnaAnnotation
-   */
-  private void _updateRnaSecStr(CharSequence rnaAnnotation)
-  {
-    try
-    {
-      _rnasecstr = Rna.getHelixMap(rnaAnnotation);
-      invalidrnastruc = -1;
-    } catch (WUSSParseException px)
-    {
-      // DEBUG System.out.println(px);
-      invalidrnastruc = px.getProblemPos();
-    }
-    if (invalidrnastruc > -1)
-    {
-      return;
-    }
-
-    if (_rnasecstr != null && _rnasecstr.length > 0)
-    {
-      // show all the RNA secondary structure annotation symbols.
-      isrna = true;
-      showAllColLabels = true;
-      scaleColLabel = true;
-      _markRnaHelices();
-    }
-    // System.out.println("featuregroup " + _rnasecstr[0].getFeatureGroup());
-
-  }
-
-  private void _markRnaHelices()
-  {
-    int mxval = 0;
-    // Figure out number of helices
-    // Length of rnasecstr is the number of pairs of positions that base pair
-    // with each other in the secondary structure
-    for (int x = 0; x < _rnasecstr.length; x++)
-    {
-
-      /*
-       * System.out.println(this.annotation._rnasecstr[x] + " Begin" +
-       * this.annotation._rnasecstr[x].getBegin());
-       */
-      // System.out.println(this.annotation._rnasecstr[x].getFeatureGroup());
-      int val = 0;
-      try
-      {
-        val = Integer.valueOf(_rnasecstr[x].getFeatureGroup());
-        if (mxval < val)
-        {
-          mxval = val;
-        }
-      } catch (NumberFormatException q)
-      {
-      }
-      ;
-
-      annotations[_rnasecstr[x].getBegin()].value = val;
-      annotations[_rnasecstr[x].getEnd()].value = val;
-
-      // annotations[_rnasecstr[x].getBegin()].displayCharacter = "" + val;
-      // annotations[_rnasecstr[x].getEnd()].displayCharacter = "" + val;
-    }
-    setScore(mxval);
-  }
-
-  /**
    * Checks if annotation labels represent secondary structures
    * 
    */
@@ -823,6 +584,38 @@ public class AlignmentAnnotation
     }
     return null;
   }
+  
+  /**
+   * Creates a new AlignmentAnnotation object.
+   * 
+   * @param label
+   *          DOCUMENT ME!
+   * @param description
+   *          DOCUMENT ME!
+   * @param annotations
+   *          DOCUMENT ME!
+   * @param min
+   *          DOCUMENT ME!
+   * @param max
+   *          DOCUMENT ME!
+   * @param winLength
+   *          DOCUMENT ME!
+   */
+  public AlignmentAnnotation(String label, String description,
+          Annotation[] annotations, float min, float max, int graphType)
+  {
+    setAnnotationId();
+    // graphs are not editable
+    editable = graphType == 0;
+
+    this.label = label;
+    this.description = description;
+    this.annotations = annotations;
+    graph = graphType;
+    graphMin = min;
+    graphMax = max;
+    validateRangeAndDisplay();
+  }
 
   /**
    * checks graphMin and graphMax, secondary structure symbols, sets graphType
@@ -903,6 +696,113 @@ public class AlignmentAnnotation
       }
     }
   }
+  
+  /**
+   * Copy constructor creates a new independent annotation row with the same
+   * associated sequenceRef
+   * 
+   * @param annotation
+   */
+  public AlignmentAnnotation(AlignmentAnnotation annotation)
+  {
+    setAnnotationId();
+    this.label = new String(annotation.label);
+    if (annotation.description != null)
+    {
+      this.description = new String(annotation.description);
+    }
+    this.graphMin = annotation.graphMin;
+    this.graphMax = annotation.graphMax;
+    this.graph = annotation.graph;
+    this.graphHeight = annotation.graphHeight;
+    this.graphGroup = annotation.graphGroup;
+    this.groupRef = annotation.groupRef;
+    this.editable = annotation.editable;
+    this.autoCalculated = annotation.autoCalculated;
+    this.hasIcons = annotation.hasIcons;
+    this.hasText = annotation.hasText;
+    this.height = annotation.height;
+    this.label = annotation.label;
+    this.padGaps = annotation.padGaps;
+    this.visible = annotation.visible;
+    this.centreColLabels = annotation.centreColLabels;
+    this.scaleColLabel = annotation.scaleColLabel;
+    this.showAllColLabels = annotation.showAllColLabels;
+    this.calcId = annotation.calcId;
+    if (annotation.properties != null)
+    {
+      properties = new HashMap<>();
+      for (Map.Entry<String, String> val : annotation.properties.entrySet())
+      {
+        properties.put(val.getKey(), val.getValue());
+      }
+    }
+    if (this.hasScore = annotation.hasScore)
+    {
+      this.score = annotation.score;
+    }
+    if (annotation.threshold != null)
+    {
+      threshold = new GraphLine(annotation.threshold);
+    }
+    Annotation[] ann = annotation.annotations;
+    if (annotation.annotations != null)
+    {
+      this.annotations = new Annotation[ann.length];
+      for (int i = 0; i < ann.length; i++)
+      {
+        if (ann[i] != null)
+        {
+          annotations[i] = new Annotation(ann[i]);
+          if (_linecolour != null)
+          {
+            _linecolour = annotations[i].colour;
+          }
+        }
+      }
+    }
+    if (annotation.sequenceRef != null)
+    {
+      this.sequenceRef = annotation.sequenceRef;
+      if (annotation.sequenceMapping != null)
+      {
+        Integer p = null;
+        sequenceMapping = new HashMap<>();
+        Iterator<Integer> pos = annotation.sequenceMapping.keySet()
+                .iterator();
+        while (pos.hasNext())
+        {
+          // could optimise this!
+          p = pos.next();
+          Annotation a = annotation.sequenceMapping.get(p);
+          if (a == null)
+          {
+            continue;
+          }
+          if (ann != null)
+          {
+            for (int i = 0; i < ann.length; i++)
+            {
+              if (ann[i] == a)
+              {
+                sequenceMapping.put(p, annotations[i]);
+              }
+            }
+          }
+        }
+      }
+      else
+      {
+        this.sequenceMapping = null;
+      }
+    }
+    // TODO: check if we need to do this: JAL-952
+    // if (this.isrna=annotation.isrna)
+    {
+      // _rnasecstr=new SequenceFeature[annotation._rnasecstr];
+    }
+    validateRangeAndDisplay(); // construct hashcodes, etc.
+  }
 
   /**
    * clip the annotation to the columns given by startRes and endRes (inclusive)
@@ -1262,6 +1162,37 @@ public class AlignmentAnnotation
   {
     return hasScore || !Double.isNaN(score);
   }
+  
+  /**
+   * Score only annotation
+   * 
+   * @param label
+   * @param description
+   * @param score
+   */
+  public AlignmentAnnotation(String label, String description, double score)
+  {
+    this(label, description, null);
+    setScore(score);
+  }
+
+  /**
+   * copy constructor with edit based on the hidden columns marked in colSel
+   * 
+   * @param alignmentAnnotation
+   * @param colSel
+   */
+  public AlignmentAnnotation(AlignmentAnnotation alignmentAnnotation,
+          HiddenColumns hidden)
+  {
+    this(alignmentAnnotation);
+    if (annotations == null)
+    {
+      return;
+    }
+    makeVisibleAnnotation(hidden);
+  }
+
 
   public void setPadGaps(boolean padgaps, char gapchar)
   {
@@ -1321,7 +1252,7 @@ public class AlignmentAnnotation
   /**
    * machine readable ID string indicating what generated this annotation
    */
-  private String calcId = "";
+  protected String calcId = "";
 
   /**
    * properties associated with the calcId
@@ -1722,7 +1653,7 @@ public class AlignmentAnnotation
           Iterable<AlignmentAnnotation> list, SequenceI seq, String calcId,
           String label)
   {
-    List<AlignmentAnnotation> aa = new ArrayList<>();
+    ArrayList<AlignmentAnnotation> aa = new ArrayList<>();
     for (AlignmentAnnotation ann : list)
     {
       if ((calcId == null || (ann.getCalcId() != null