X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2FContactMapHolder.java;h=af083dd01ac3d8c78831c48136a761f51bd2979d;hb=8bcbf5c32f8091f2d5871e7eec4d4727c26d5c63;hp=ac1b267dad270ce1f4435408d37ca1609668fdfc;hpb=51ff7ec3b6914f3c69b35e91e69d10c88aaf5270;p=jalview.git diff --git a/src/jalview/datamodel/ContactMapHolder.java b/src/jalview/datamodel/ContactMapHolder.java index ac1b267..af083dd 100644 --- a/src/jalview/datamodel/ContactMapHolder.java +++ b/src/jalview/datamodel/ContactMapHolder.java @@ -5,6 +5,8 @@ import java.util.Collections; import java.util.HashMap; import java.util.Map; +import jalview.ws.datamodel.MappableContactMatrixI; + public class ContactMapHolder implements ContactMapHolderI { @@ -28,25 +30,38 @@ public class ContactMapHolder implements ContactMapHolderI { return null; } + if (cm instanceof MappableContactMatrixI) + { + if (_aa.sequenceRef != null) + { + return ((MappableContactMatrixI) cm) + .getMappableContactList(_aa.sequenceRef, column); + } + } + // TODO: could resolve sequence position to column position here + // TODO: what about for complexes - where contactMatrix may involve two or + // more sequences return cm.getContactList(column); } @Override public AlignmentAnnotation addContactList(ContactMatrixI cm) { - AlignmentAnnotation aa = new AlignmentAnnotation("Contact Matrix", - "Contact Matrix", new Annotation[0]); - aa.graph = AlignmentAnnotation.CUSTOMRENDERER; + + AlignmentAnnotation aa = new AlignmentAnnotation(cm.getAnnotLabel(), + cm.getAnnotDescr(), new Annotation[0]); + aa.graph = AlignmentAnnotation.CONTACT_MAP; aa.graphMin = cm.getMin(); aa.graphMax = cm.getMax(); aa.editable = false; - // aa.autoCalculated = true; + aa.calcId = cm.getType(); + contactmaps.put(aa.annotationId, cm); // TODO: contact matrices could be intra or inter - more than one refseq // possible! - if (cm.hasReferenceSeq()) + if (cm instanceof MappableContactMatrixI) { - aa.setSequenceRef(cm.getReferenceSeq()); + aa.setSequenceRef(((MappableContactMatrixI) cm).getReferenceSeq()); } return aa; } @@ -61,6 +76,21 @@ public class ContactMapHolder implements ContactMapHolderI public void addContactListFor(AlignmentAnnotation annotation, ContactMatrixI cm) { + // update annotation with data from contact map + annotation.graphMin = cm.getMin(); + annotation.graphMax = cm.getMax(); + annotation.editable = false; + annotation.graph = AlignmentAnnotation.CONTACT_MAP; + annotation.calcId = cm.getType(); + if (annotation.label == null || "".equals(annotation.label)) + { + annotation.label = cm.getAnnotLabel(); + + } + if (annotation.description == null || "".equals(annotation.description)) + { + annotation.description = cm.getAnnotDescr(); + } contactmaps.put(annotation.annotationId, cm); } }