X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2Ffeatures%2FSequenceFeatures.java;h=6adb93e9c3529a5a83bc4cd73c63a6d7bf4b4641;hb=eb3e681d6e82ccdd5d312d1981dfb306e7f479f0;hp=08f3847cbe6ff68246bfe00a8043d8d2eac053ce;hpb=4ffae060863956975d45807b6776dc7a5cf337b8;p=jalview.git diff --git a/src/jalview/datamodel/features/SequenceFeatures.java b/src/jalview/datamodel/features/SequenceFeatures.java index 08f3847..6adb93e 100644 --- a/src/jalview/datamodel/features/SequenceFeatures.java +++ b/src/jalview/datamodel/features/SequenceFeatures.java @@ -20,14 +20,8 @@ */ package jalview.datamodel.features; -import jalview.datamodel.ContiguousI; -import jalview.datamodel.SequenceFeature; -import jalview.io.gff.SequenceOntologyFactory; -import jalview.io.gff.SequenceOntologyI; - import java.util.ArrayList; import java.util.Collections; -import java.util.Comparator; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -35,6 +29,11 @@ import java.util.Map.Entry; import java.util.Set; import java.util.TreeMap; +import intervalstore.api.IntervalI; +import jalview.datamodel.SequenceFeature; +import jalview.io.gff.SequenceOntologyFactory; +import jalview.io.gff.SequenceOntologyI; + /** * A class that stores sequence features in a way that supports efficient * querying by type and location (overlap). Intended for (but not limited to) @@ -45,30 +44,6 @@ import java.util.TreeMap; */ public class SequenceFeatures implements SequenceFeaturesI { - /** - * a comparator for sorting features by start position ascending - */ - private static Comparator FORWARD_STRAND = new Comparator() - { - @Override - public int compare(ContiguousI o1, ContiguousI o2) - { - return Integer.compare(o1.getBegin(), o2.getBegin()); - } - }; - - /** - * a comparator for sorting features by end position descending - */ - private static Comparator REVERSE_STRAND = new Comparator() - { - @Override - public int compare(ContiguousI o1, ContiguousI o2) - { - return Integer.compare(o2.getEnd(), o1.getEnd()); - } - }; - /* * map from feature type to structured store of features for that type * null types are permitted (but not a good idea!) @@ -113,7 +88,8 @@ public class SequenceFeatures implements SequenceFeaturesI String type = sf.getType(); if (type == null) { - System.err.println("Feature type may not be null: " + sf.toString()); + jalview.bin.Console + .errPrintln("Feature type may not be null: " + sf.toString()); return false; } @@ -176,8 +152,8 @@ public class SequenceFeatures implements SequenceFeaturesI return new ArrayList<>(); } - return getAllFeatures(featureTypes.toArray(new String[featureTypes - .size()])); + return getAllFeatures( + featureTypes.toArray(new String[featureTypes.size()])); } /** @@ -247,7 +223,7 @@ public class SequenceFeatures implements SequenceFeaturesI List types = new ArrayList<>(); for (String theType : type) { - if (featureStore.containsKey(theType)) + if (theType != null && featureStore.containsKey(theType)) { types.add(featureStore.get(theType)); } @@ -345,8 +321,8 @@ public class SequenceFeatures implements SequenceFeaturesI for (Entry featureType : featureStore.entrySet()) { - Set featureGroups = featureType.getValue().getFeatureGroups( - positionalFeatures); + Set featureGroups = featureType.getValue() + .getFeatureGroups(positionalFeatures); for (String group : groups) { if (featureGroups.contains(group)) @@ -414,8 +390,9 @@ public class SequenceFeatures implements SequenceFeaturesI @Override public float getMinimumScore(String type, boolean positional) { - return featureStore.containsKey(type) ? featureStore.get(type) - .getMinimumScore(positional) : Float.NaN; + return featureStore.containsKey(type) + ? featureStore.get(type).getMinimumScore(positional) + : Float.NaN; } /** @@ -424,8 +401,9 @@ public class SequenceFeatures implements SequenceFeaturesI @Override public float getMaximumScore(String type, boolean positional) { - return featureStore.containsKey(type) ? featureStore.get(type) - .getMaximumScore(positional) : Float.NaN; + return featureStore.containsKey(type) + ? featureStore.get(type).getMaximumScore(positional) + : Float.NaN; } /** @@ -435,11 +413,12 @@ public class SequenceFeatures implements SequenceFeaturesI * @param features * @param forwardStrand */ - public static void sortFeatures(List features, + public static void sortFeatures(List features, final boolean forwardStrand) { - Collections.sort(features, forwardStrand ? FORWARD_STRAND - : REVERSE_STRAND); + Collections.sort(features, + forwardStrand ? IntervalI.COMPARE_BEGIN_ASC_END_DESC + : IntervalI.COMPARE_END_DESC); } /**