From 6fc163433164d93374330fa0a603eea1e1fd42b3 Mon Sep 17 00:00:00 2001 From: Jim Procter Date: Sun, 4 Dec 2016 10:45:41 +0000 Subject: [PATCH] =?utf8?q?JAL-2349=20interfaces=20and=20logic=20for=20adding?= =?utf8?q?=20contact=20matrices=20as=20an=20alignment=E2=80=99s=20annotation?= =?utf8?q?=20row?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- src/jalview/api/AlignViewportI.java | 3 +++ src/jalview/datamodel/Alignment.java | 31 ++++++++++++++++++++++++++ src/jalview/datamodel/AlignmentI.java | 12 ++++++++++ src/jalview/datamodel/ContactListI.java | 14 ++++++++++++ src/jalview/datamodel/ContactMatrixI.java | 8 +++++++ src/jalview/viewmodel/AlignmentViewport.java | 7 ++++++ 6 files changed, 75 insertions(+) create mode 100644 src/jalview/datamodel/ContactListI.java create mode 100644 src/jalview/datamodel/ContactMatrixI.java 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); + } } -- 1.7.10.2