X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2FSequence.java;h=5ae7195f09b0e7ea75a30f7636a743bda9639919;hb=265e81c0b3599a09c312f17188e3a892e9d96c4e;hp=3bd7b4b71968551aca235cc435e161269fa700d9;hpb=ca47e4d0e1176893b414fba3fbe8a308e24cc52e;p=jalview.git diff --git a/src/jalview/datamodel/Sequence.java b/src/jalview/datamodel/Sequence.java index 3bd7b4b..5ae7195 100755 --- a/src/jalview/datamodel/Sequence.java +++ b/src/jalview/datamodel/Sequence.java @@ -20,17 +20,10 @@ */ package jalview.datamodel; -import jalview.analysis.AlignSeq; -import jalview.datamodel.features.SequenceFeatures; -import jalview.datamodel.features.SequenceFeaturesI; -import jalview.util.Comparison; -import jalview.util.DBRefUtils; -import jalview.util.MapList; -import jalview.util.StringUtils; - import java.util.ArrayList; import java.util.Arrays; import java.util.BitSet; +import java.util.Collection; import java.util.Collections; import java.util.Enumeration; import java.util.Iterator; @@ -39,6 +32,13 @@ import java.util.ListIterator; import java.util.Vector; import fr.orsay.lri.varna.models.rna.RNA; +import jalview.analysis.AlignSeq; +import jalview.datamodel.features.SequenceFeatures; +import jalview.datamodel.features.SequenceFeaturesI; +import jalview.util.Comparison; +import jalview.util.DBRefUtils; +import jalview.util.MapList; +import jalview.util.StringUtils; /** * @@ -1415,6 +1415,7 @@ public class Sequence extends ASequence implements SequenceI @Override public void addDBRef(DBRefEntry entry) { + // TODO JAL-3980 maintain as sorted list if (datasetSequence != null) { datasetSequence.addDBRef(entry); @@ -1425,6 +1426,7 @@ public class Sequence extends ASequence implements SequenceI { dbrefs = new DBModList<>(); } + // TODO JAL-3979 LOOK UP RATHER THAN SWEEP FOR EFFICIENCY for (int ib = 0, nb = dbrefs.size(); ib < nb; ib++) { @@ -1623,6 +1625,13 @@ public class Sequence extends ASequence implements SequenceI _aa.adjustForAlignment(); // uses annotation's own record of // sequence-column mapping datasetSequence.addAlignmentAnnotation(_aa); + + // transfer contact matrices + ContactMatrixI cm = getContactMatrixFor(aa); + if (cm != null) + { + datasetSequence.addContactListFor(_aa, cm); + } } } } @@ -1810,18 +1819,16 @@ public class Sequence extends ASequence implements SequenceI } private List getAlignmentAnnotations(String calcId, - String label, String description, boolean nullWildcard) + String label, String description, boolean ignoreDescription) { List result = new ArrayList<>(); if (this.annotation != null) { for (AlignmentAnnotation ann : annotation) { - if (((nullWildcard && calcId == null) - || (ann.calcId != null && ann.calcId.equals(calcId))) - && ((nullWildcard && label == null) - || (ann.label != null && ann.label.equals(label))) - && ((nullWildcard && description == null) + if ((ann.calcId != null && ann.calcId.equals(calcId)) + && (ann.label != null && ann.label.equals(label)) + && ((ignoreDescription && description == null) || (ann.description != null && ann.description.equals(description)))) @@ -2107,4 +2114,52 @@ public class Sequence extends ASequence implements SequenceI // otherwise, sequence was completely hidden return 0; } + + //// + //// Contact Matrix Holder Boilerplate + //// + ContactMapHolderI cmholder = new ContactMapHolder(); + + @Override + public Collection getContactMaps() + { + return cmholder.getContactMaps(); + } + + @Override + public ContactMatrixI getContactMatrixFor(AlignmentAnnotation ann) + { + return cmholder.getContactMatrixFor(ann); + } + + @Override + public ContactListI getContactListFor(AlignmentAnnotation _aa, int column) + { + return cmholder.getContactListFor(_aa, column); + } + + @Override + public AlignmentAnnotation addContactList(ContactMatrixI cm) + { + AlignmentAnnotation aa = cmholder.addContactList(cm); + + Annotation _aa[] = new Annotation[getLength()]; + Annotation dummy = new Annotation(0.0f); + for (int i = 0; i < _aa.length; _aa[i++] = dummy) + { + ; + } + aa.annotations = _aa; + aa.setSequenceRef(this); + aa.createSequenceMapping(this, getStart(), false); + addAlignmentAnnotation(aa); + return aa; + } + + @Override + public void addContactListFor(AlignmentAnnotation annotation, + ContactMatrixI cm) + { + cmholder.addContactListFor(annotation, cm); + } }