import jalview.analysis.AlignSeq;
+import java.util.ArrayList;
import java.util.Enumeration;
+import java.util.List;
import java.util.Vector;
import fr.orsay.lri.varna.models.rna.RNA;
/**
* This annotation is displayed below the alignment but the positions are tied
* to the residues of this sequence
+ *
+ * TODO: change to List<>
*/
- Vector annotation;
+ Vector<AlignmentAnnotation> annotation;
/**
* The index of the sequence in a MSA
AlignmentAnnotation[] ret = new AlignmentAnnotation[annotation.size()];
for (int r = 0; r < ret.length; r++)
{
- ret[r] = (AlignmentAnnotation) annotation.elementAt(r);
+ ret[r] = annotation.elementAt(r);
}
return ret;
datasetSequence.updatePDBIds();
if (annotation != null)
{
- Vector<AlignmentAnnotation> _annot = annotation;
- annotation = null;
- for (AlignmentAnnotation aa : _annot)
+ for (AlignmentAnnotation aa : annotation)
{
- aa.sequenceRef = datasetSequence;
- aa.adjustForAlignment(); // uses annotation's own record of
+ AlignmentAnnotation _aa = new AlignmentAnnotation(aa);
+ _aa.sequenceRef = datasetSequence;
+ _aa.adjustForAlignment(); // uses annotation's own record of
// sequence-column mapping
- datasetSequence.addAlignmentAnnotation(aa);
+ datasetSequence.addAlignmentAnnotation(_aa);
}
}
}
return anns;
}
+ /**
+ * Returns a list of any annotations on the sequence that match the given
+ * calcId (source) and label (type). Null values do not match.
+ *
+ * @param calcId
+ * @param label
+ * @return
+ */
+ @Override
+ public List<AlignmentAnnotation> getAlignmentAnnotations(String calcId,
+ String label)
+ {
+ List<AlignmentAnnotation> result = new ArrayList<AlignmentAnnotation>();
+ if (annotation != null)
+ {
+ for (AlignmentAnnotation ann : annotation)
+ {
+ if (ann.calcId != null && ann.calcId.equals(calcId)
+ && ann.label != null && ann.label.equals(label))
+ {
+ result.add(ann);
+ }
+ }
+ }
+ return result;
+ }
+
public boolean updatePDBIds()
{
if (datasetSequence != null)