X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fio%2FFeaturesFile.java;h=7e62f6bc1a6e7ba4fd6bcadc0b1b5b183b824172;hb=7428d315297907b3bb52ddb099a348acffb87636;hp=9a4dc0e023ee79e8ee79b2c37324d855bb8e6dd0;hpb=3b3c59cfa50e942d2fa5b367b7117cade9459ce7;p=jalview.git diff --git a/src/jalview/io/FeaturesFile.java b/src/jalview/io/FeaturesFile.java index 9a4dc0e..7e62f6b 100755 --- a/src/jalview/io/FeaturesFile.java +++ b/src/jalview/io/FeaturesFile.java @@ -20,6 +20,19 @@ */ package jalview.io; +import java.awt.Color; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Map.Entry; +import java.util.TreeMap; + import jalview.analysis.AlignmentUtils; import jalview.analysis.SequenceIdMatcher; import jalview.api.AlignViewportI; @@ -44,18 +57,6 @@ import jalview.util.MapList; import jalview.util.ParseHtmlBodyAndLinks; import jalview.util.StringUtils; -import java.awt.Color; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.TreeMap; - /** * Parses and writes features files, which may be in Jalview, GFF2 or GFF3 * format. These are tab-delimited formats but with differences in the use of @@ -74,11 +75,7 @@ import java.util.TreeMap; */ public class FeaturesFile extends AlignFile implements FeaturesSourceI { - /* - * map-valued attributes are prefixed with this for output to GFF3; - * the prefix is removed if found on reading - */ - public static final String MAP_ATTRIBUTE_PREFIX = "jvmap_"; + private static final String EQUALS = "="; private static final String TAB_REGEX = "\\t"; @@ -92,8 +89,6 @@ public class FeaturesFile extends AlignFile implements FeaturesSourceI private static final String ID_NOT_SPECIFIED = "ID_NOT_SPECIFIED"; - private static final String NOTE = "Note"; - protected static final String GFF_VERSION = "##gff-version"; private AlignmentI lastmatchedAl = null; @@ -352,7 +347,8 @@ public class FeaturesFile extends AlignFile implements FeaturesSourceI String line; while ((line = nextLine()) != null) { - if (line.toUpperCase().startsWith(ENDFILTERS)) + // TODO: use .trim().equalsIgnoreCase here instead ? + if (line.toUpperCase(Locale.ROOT).startsWith(ENDFILTERS)) { return; } @@ -742,7 +738,6 @@ public class FeaturesFile extends AlignFile implements FeaturesSourceI if (mf != null) { - MapList mapping = mf.mapping.getMap(); for (SequenceFeature sf : mf.features) { /* @@ -758,9 +753,7 @@ public class FeaturesFile extends AlignFile implements FeaturesSourceI found.add(sf); int begin = sf.getBegin(); int end = sf.getEnd(); - int[] range = mf.mapping.getTo() == seq.getDatasetSequence() - ? mapping.locateInTo(begin, end) - : mapping.locateInFrom(begin, end); + int[] range = mf.getMappedPositions(begin, end); SequenceFeature sf2 = new SequenceFeature(sf, range[0], range[1], group, sf.getScore()); complementary.add(sf2); @@ -1192,7 +1185,7 @@ public class FeaturesFile extends AlignFile implements FeaturesSourceI { String formatted = StringUtils.urlEncode(value.toString(), GffHelperI.GFF_ENCODABLE); - sb.append(key).append("=").append(formatted); + sb.append(key).append(EQUALS).append(formatted); } } } @@ -1201,7 +1194,7 @@ public class FeaturesFile extends AlignFile implements FeaturesSourceI * Formats the map entries as * *
-   * jvmap_key={key1=value1,key2=value2,...}
+   * key=key1=value1,key2=value2,...
    * 
* * and appends this to the string buffer @@ -1222,7 +1215,7 @@ public class FeaturesFile extends AlignFile implements FeaturesSourceI * AbstractMap.toString would be a shortcut here, but more reliable * to code the required format in case toString changes in future */ - sb.append(MAP_ATTRIBUTE_PREFIX).append(key).append("={"); + sb.append(key).append(EQUALS); boolean first = true; for (Entry entry : map.entrySet()) { @@ -1231,12 +1224,11 @@ public class FeaturesFile extends AlignFile implements FeaturesSourceI sb.append(","); } first = false; - sb.append(entry.getKey().toString()).append("="); + sb.append(entry.getKey().toString()).append(EQUALS); String formatted = StringUtils.urlEncode(entry.getValue().toString(), GffHelperI.GFF_ENCODABLE); sb.append(formatted); } - sb.append("}"); } /**