import java.io.IOException;
-import jalview.bin.Cache;
-
/**
* A class that provides selective parsing of the GenBank flatfile format.
* <p>
String line = nextLine();
while (line != null)
{
- if (line.startsWith(DEFINITION))
+ if (line.startsWith("LOCUS"))
+ {
+ line = parseLocus(line);
+ }
+ else if (line.startsWith(DEFINITION))
{
line = parseDefinition(line);
}
*/
String parseLocus(String line) throws IOException
{
- String[] tokens = line.substring(2).split(";");
+ String[] tokens = line.split(WHITESPACE);
/*
- * first is primary accession
+ * first should be "LOCUS"
*/
- String token = tokens[0].trim();
- if (!token.isEmpty())
+ if (tokens.length < 2 || !"LOCUS".equals(tokens[0]))
{
- this.accession = token;
+ return nextLine();
}
-
/*
- * second token is 'SV versionNo'
+ * second is primary accession
*/
- if (tokens.length > 1)
+ String token = tokens[1].trim();
+ if (!token.isEmpty())
{
- token = tokens[1].trim();
- if (token.startsWith("SV"))
- {
- String[] bits = token.trim().split(WHITESPACE);
- this.version = bits[bits.length - 1];
- }
+ this.accession = token;
}
- /*
- * seventh token is 'length BP'
- */
- if (tokens.length > 6)
- {
- token = tokens[6].trim();
- String[] bits = token.trim().split(WHITESPACE);
- try
- {
- this.length = Integer.valueOf(bits[0]);
- } catch (NumberFormatException e)
- {
- Cache.log.error("bad length read in flatfile, line: " + line);
- }
- }
+ // not going to guess the rest just yet, but third is length with unit (bp)
return nextLine();
}