*/
package jalview.analysis;
-import java.util.Locale;
-
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import java.util.Map.Entry;
import java.util.NoSuchElementException;
import jalview.datamodel.Alignment;
import jalview.datamodel.AlignmentAnnotation;
import jalview.datamodel.AlignmentI;
+import jalview.datamodel.ContactMatrixI;
import jalview.datamodel.DBRefEntry;
import jalview.datamodel.GeneLociI;
import jalview.datamodel.IncompleteCodonException;
*/
final Iterable<AlignmentAnnotation> matchedAlignmentAnnotations = al
.findAnnotations(seq, dsann.getCalcId(), dsann.label);
- if (!matchedAlignmentAnnotations.iterator().hasNext())
+ boolean found = false;
+ if (matchedAlignmentAnnotations != null)
+ {
+ for (AlignmentAnnotation matched : matchedAlignmentAnnotations)
+ {
+ if (dsann.description.equals(matched.description))
+ {
+ found = true;
+ break;
+ }
+ }
+ }
+ if (!found)
{
result.add(dsann);
if (labelForCalcId != null)
startRes = selectionGroup.getStartRes();
endRes = selectionGroup.getEndRes();
}
- copyAnn.restrict(startRes, endRes);
+ copyAnn.restrict(startRes, endRes + 0);
/*
* Add to the sequence (sets copyAnn.datasetSequence), unless the
*/
if (!seq.hasAnnotation(ann))
{
+ ContactMatrixI cm = seq.getDatasetSequence()
+ .getContactMatrixFor(ann);
+ if (cm != null)
+ {
+ seq.addContactListFor(copyAnn, cm);
+ }
seq.addAlignmentAnnotation(copyAnn);
}
// adjust for gaps
copyAnn.visible = true;
}
}
+
}
/**
}
}
+ public static AlignmentAnnotation getFirstSequenceAnnotationOfType(
+ AlignmentI al, int graphType)
+ {
+ AlignmentAnnotation[] anns = al.getAlignmentAnnotation();
+ if (anns != null)
+ {
+ for (AlignmentAnnotation aa : anns)
+ {
+ if (aa.sequenceRef != null && aa.graph == graphType)
+ return aa;
+ }
+ }
+ return null;
+ }
+
/**
* Returns true if either sequence has a cross-reference to the other
*