Merge branch 'develop' into bug/JAL-4235_gradle_task_jalviewjsTranspile_does_not_fail...
[jalview.git] / src / jalview / ws / datamodel / MappableContactMatrixI.java
index 4abaa5d..3f294d0 100644 (file)
@@ -4,6 +4,7 @@ import jalview.datamodel.ContactListI;
 import jalview.datamodel.ContactMatrixI;
 import jalview.datamodel.Mapping;
 import jalview.datamodel.SequenceI;
+import jalview.util.MapList;
 
 public interface MappableContactMatrixI extends ContactMatrixI
 {
@@ -11,21 +12,67 @@ public interface MappableContactMatrixI extends ContactMatrixI
   boolean hasReferenceSeq();
 
   SequenceI getReferenceSeq();
+
   /**
    * remaps the matrix to a new reference sequence
-   * @param dsq 
-   * @param sqmpping - mapping from current reference to new reference - 1:1 only
+   * 
+   * @param dsq
+   * @param sqmpping
+   *          - mapping from current reference to new reference - 1:1 only
    * @return new ContactMatrixI instance with updated mapping
    */
   MappableContactMatrixI liftOver(SequenceI dsq, Mapping sqmpping);
-  
+
   /**
    * like ContactMatrixI.getContactList(int column) but
-   * @param localFrame - sequence or other object that this contact matrix is associated with
-   * @param column - position in localFrame
+   * 
+   * @param localFrame
+   *          - sequence or other object that this contact matrix is associated
+   *          with
+   * @param column
+   *          - position in localFrame
    * @return ContactListI that returns contacts w.r.t. localFrame
    */
-  
+
   ContactListI getMappableContactList(SequenceI localFrame, int column);
 
+  /**
+   * 
+   * Similar to AlignedCodonFrame.getMappingBetween
+   * 
+   * @param sequenceRef
+   *          - a reference sequence mappable to this contactMatrix - may be
+   *          null
+   * @return null or the MapList mapping to the coordinates of the reference
+   *         sequence (or if hasReferenceSeq() is false, and sequenceRef is
+   *         null, any mapping present)
+   * 
+   */
+  MapList getMapFor(SequenceI sequenceRef);
+
+  /**
+   * Locate a position in the mapped sequence for a single column in the matrix. 
+   * this to resolve positions corresponding to column clusters
+   * 
+   * @param localFrame
+   *          - sequence derivced from reference sequence
+   * @param column
+   *          - matrix row/column
+   * @return sequence position(s) corresponding to column in contact matrix
+   */
+  int[] getMappedPositionsFor(SequenceI localFrame, int column);
+
+  /**
+   * Locate a position in the mapped sequence for a contiguous range of columns in the matrix 
+   * use this to resolve positions corresponding to column clusters
+   * 
+   * @param localFrame
+   *          - sequence derivced from reference sequence
+   * @param column
+   *          - matrix row/column
+   * @return sequence position(s) corresponding to column in contact matrix
+   */
+  int[] getMappedPositionsFor(SequenceI localFrame, int from, int to);
+
+  ContactMatrixI getMappedMatrix();
 }