else if (data.indexOf(">") > -1)
{
// FASTA, PIR file or BLC file
- boolean checkPIR = false;
+ boolean checkPIR = false,starterm=false;
if ((data.indexOf(">P1;") > -1) || (data.indexOf(">DL;") > -1))
{
// watch for PIR file attributes
else
{
// Is this a single line BLC file?
- source.nextLine();
+ String data1 = source.nextLine();
String data2 = source.nextLine();
+ if (checkPIR)
+ {
+ starterm = (data1!=null && data1.indexOf("*")>-1) || (data2!=null && data2.indexOf("*")>-1);
+ }
if (data2 != null && data.indexOf("*") > -1)
{
if (data.indexOf("*") == data2.indexOf("*"))
// TODO : AMSA File is indicated if there is annotation in the
// FASTA file - but FASTA will automatically generate this at the
// mo.
- break;
+ if (!checkPIR) {
+ break;
+ }
}
}
- // TODO final check for PIR content. require
+ // final check for PIR content. require
// >P1;title\n<blah>\nterminated sequence to occur at least once.
- // the PIR/fasta ambiguity may be the use case that is needed to have
+
+ // TODO the PIR/fasta ambiguity may be the use case that is needed to have
// a 'Parse as type XXX' parameter for the applet/application.
+ if (checkPIR)
+ {
+ String dta=null;
+ if (!starterm)
+ {
+ do {
+ try {
+ dta = source.nextLine();
+ } catch(IOException ex) {};
+ if (dta!=null && dta.indexOf("*")>-1)
+ {
+ starterm = true;
+ }
+ } while (dta!=null && !starterm);
+ }
+ if (starterm)
+ {
+ reply="PIR";
+ break;
+ } else {
+ reply="FASTA"; // probably a bad choice!
+ }
+ }
+ // read as a FASTA (probably)
break;
}
else if (data.indexOf("HEADER") == 0 || data.indexOf("ATOM") == 0)