import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
+import java.util.Set;
/**
* Parses and writes features files, which may be in Jalview, GFF2 or GFF3
FeatureRenderer fr, String[] featureTypes,
SequenceI[] sequences, boolean includeNonPositional)
{
- List<String> featureGroups = fr.getFeatureGroups();
+ /*
+ * get all positional feature groups
+ */
+ Set<String> featureGroups = new HashSet<>(fr.getFeatureGroups());
+
+ /*
+ * add non-positional feature groups, just in case any are not
+ * also positional feature groups
+ */
+ for (SequenceI seq : sequences)
+ {
+ Set<String> nonPosGroups = seq.getFeatures().getFeatureGroups(false);
+ featureGroups.addAll(nonPosGroups);
+ }
/*
* sort groups alphabetically, and ensure that features with a