JAL-3178 output nonpositional features in 'not positional' groups
[jalview.git] / src / jalview / io / FeaturesFile.java
index 70f2ac7..75fdc4c 100755 (executable)
@@ -49,9 +49,11 @@ import java.util.ArrayList;
 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
@@ -679,7 +681,20 @@ public class FeaturesFile extends AlignFile implements FeaturesSourceI
           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