From: Jim Procter Date: Sun, 4 Dec 2016 10:45:41 +0000 (+0000) Subject: JAL-2349 interfaces and logic for adding contact matrices as an alignment’s annotatio... X-Git-Tag: Release_2_11_3_0~23^2~60^2~9^2~34 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=6fc163433164d93374330fa0a603eea1e1fd42b3;hp=f78498c4f07003986667e0e55e1574788a470c2d;p=jalview.git JAL-2349 interfaces and logic for adding contact matrices as an alignment’s annotation row --- diff --git a/src/jalview/api/AlignViewportI.java b/src/jalview/api/AlignViewportI.java index 72542b3..cb11886 100644 --- a/src/jalview/api/AlignViewportI.java +++ b/src/jalview/api/AlignViewportI.java @@ -26,6 +26,7 @@ import jalview.datamodel.AlignmentI; import jalview.datamodel.AlignmentView; import jalview.datamodel.CigarArray; import jalview.datamodel.ColumnSelection; +import jalview.datamodel.ContactListI; import jalview.datamodel.ProfilesI; import jalview.datamodel.SearchResultsI; import jalview.datamodel.SequenceCollectionI; @@ -445,4 +446,6 @@ public interface AlignViewportI extends ViewStyleI * @return search results or null */ SearchResultsI getSearchResults(); + + ContactListI getContactList(AlignmentAnnotation _aa, int column); } diff --git a/src/jalview/datamodel/Alignment.java b/src/jalview/datamodel/Alignment.java index d651c1d..758e1cb 100755 --- a/src/jalview/datamodel/Alignment.java +++ b/src/jalview/datamodel/Alignment.java @@ -30,6 +30,7 @@ import jalview.util.MessageManager; import java.util.ArrayList; import java.util.Collections; import java.util.Enumeration; +import java.util.HashMap; import java.util.HashSet; import java.util.Hashtable; import java.util.List; @@ -1946,4 +1947,34 @@ public class Alignment implements AlignmentI } return new int[] { startPos, endPos }; } + + Map contactmaps = new HashMap(); + @Override + public + ContactListI getContactListFor(AlignmentAnnotation _aa, int column) + { + ContactMatrixI cm = contactmaps.get(_aa.annotationId); + if (cm == null) + { + return null; + } + return cm.getContactList(column); + } + + @Override + public AlignmentAnnotation addContactList(ContactMatrixI cm) + { + Annotation _aa[] = new Annotation[getWidth()]; + Annotation dummy = new Annotation(0.0f); + for (int i = 0; i < _aa.length; _aa[i++] = dummy) + { + ; + } + AlignmentAnnotation aa = new AlignmentAnnotation("Contact Matrix", + "Contact Matrix", _aa); + aa.graph = AlignmentAnnotation.CUSTOMRENDERER; + contactmaps.put(aa.annotationId, cm); + addAnnotation(aa); + return aa; + } } diff --git a/src/jalview/datamodel/AlignmentI.java b/src/jalview/datamodel/AlignmentI.java index 7274e5f..8ddba6c 100755 --- a/src/jalview/datamodel/AlignmentI.java +++ b/src/jalview/datamodel/AlignmentI.java @@ -556,4 +556,16 @@ public interface AlignmentI extends AnnotatedCollectionI * @return */ public int[] getVisibleStartAndEndIndex(List hiddenCols); + + /** + * resolve a contact list instance (if any) associated with the annotation row + * and column position + * + * @param _aa + * @param column + * @return + */ + ContactListI getContactListFor(AlignmentAnnotation _aa, int column); + + AlignmentAnnotation addContactList(ContactMatrixI cm); } diff --git a/src/jalview/datamodel/ContactListI.java b/src/jalview/datamodel/ContactListI.java new file mode 100644 index 0000000..c08c07b --- /dev/null +++ b/src/jalview/datamodel/ContactListI.java @@ -0,0 +1,14 @@ +package jalview.datamodel; + +import java.awt.Color; + +public interface ContactListI +{ + + int getColumnWidth(); + + int getContactHeight(); + + Color getColorForScore(int column); + +} diff --git a/src/jalview/datamodel/ContactMatrixI.java b/src/jalview/datamodel/ContactMatrixI.java new file mode 100644 index 0000000..9a7f138 --- /dev/null +++ b/src/jalview/datamodel/ContactMatrixI.java @@ -0,0 +1,8 @@ +package jalview.datamodel; + +public interface ContactMatrixI +{ + + ContactListI getContactList(int column); + +} diff --git a/src/jalview/viewmodel/AlignmentViewport.java b/src/jalview/viewmodel/AlignmentViewport.java index fecccb0..cb9dd67 100644 --- a/src/jalview/viewmodel/AlignmentViewport.java +++ b/src/jalview/viewmodel/AlignmentViewport.java @@ -35,6 +35,7 @@ import jalview.datamodel.AlignmentView; import jalview.datamodel.Annotation; import jalview.datamodel.CigarArray; import jalview.datamodel.ColumnSelection; +import jalview.datamodel.ContactListI; import jalview.datamodel.HiddenSequences; import jalview.datamodel.ProfilesI; import jalview.datamodel.SearchResultsI; @@ -2872,4 +2873,10 @@ public abstract class AlignmentViewport implements AlignViewportI, { return searchResults; } + + @Override + public ContactListI getContactList(AlignmentAnnotation _aa, int column) + { + return alignment.getContactListFor(_aa, column); + } }