/** * Gets all the annotations in a particular feature set * * @param featureSet * @return */ public static Set<SeqFeatureI> getAnnotations(SeqFeatureI featureSet) { HashSet<SeqFeatureI> result = new HashSet<SeqFeatureI>(); if (featureSet.isTranscript()) { if (featureSet.isContainedByRefSeq()) // only add if its fully in range result.add(featureSet); } else if (featureSet.isAnnotTop() && !featureSet.hasKids()) { // only add if its fully in range if (featureSet.isContainedByRefSeq()) result.add(featureSet); } else { for (int i = 0, size = featureSet.getFeatures().size(); i < size; i++) { SeqFeatureI feature = featureSet.getFeatureAt(i); if (feature.canHaveChildren()) { result.addAll(getAnnotations(feature)); } } } return result; }