*/
public class Gff3Helper extends GffHelperBase
{
+ public static final String ALLELES = "alleles";
+
protected static final String TARGET = "Target";
protected static final String ID = "ID";
*/
if ("-".equals(strand))
{
- System.err.println(
+ jalview.bin.Console.errPrintln(
"Skipping mapping from reverse complement as not yet supported");
return null;
}
List<String> targets = attributes.get(TARGET);
if (targets == null)
{
- System.err.println("'Target' missing in GFF");
+ jalview.bin.Console.errPrintln("'Target' missing in GFF");
return null;
}
String[] tokens = target.split(" ");
if (tokens.length < 3)
{
- System.err.println("Incomplete Target: " + target);
+ jalview.bin.Console.errPrintln("Incomplete Target: " + target);
continue;
}
}
} catch (NumberFormatException nfe)
{
- System.err.println("Invalid start or end in Target " + target);
+ jalview.bin.Console
+ .errPrintln("Invalid start or end in Target " + target);
}
}
}
/**
- * Return '=' as the name-value separator used in column 9 attributes.
- */
- @Override
- protected char getNameValueSeparator()
- {
- return '=';
- }
-
- /**
* Modifies the default SequenceFeature in order to set the Target sequence id
* as the description
*/
/*
* Ensembl returns dna variants as 'alleles'
*/
- desc = StringUtils.listToDelimitedString(attributes.get("alleles"),
+ desc = StringUtils.listToDelimitedString(attributes.get(ALLELES),
",");
}
desc = (String) sf.getValue(ID);
}
+ /*
+ * and decode comma, equals, semi-colon as required by GFF3 spec
+ */
+ desc = StringUtils.urlDecode(desc, GFF_ENCODABLE);
+
return desc;
}
}