From: jprocter Date: Mon, 28 Feb 2005 10:45:52 +0000 (+0000) Subject: partial implementation of JNet server prediction. X-Git-Tag: Release_2_0~631 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=893d172cea331f799692ce4ee93e9c080e644547;p=jalview.git partial implementation of JNet server prediction. --- diff --git a/build.xml b/build.xml index c10f726..be92845 100755 --- a/build.xml +++ b/build.xml @@ -15,9 +15,11 @@ + + @@ -47,13 +49,14 @@ - + + - + @@ -61,12 +64,23 @@ - + - + + + + + + + + + + java -classpath ${run.classpath} jalview.bin.Jalview + + diff --git a/src/jalview/io/JPredFile.java b/src/jalview/io/JPredFile.java index cc8fb56..9ecb54a 100755 --- a/src/jalview/io/JPredFile.java +++ b/src/jalview/io/JPredFile.java @@ -17,7 +17,7 @@ public class JPredFile Vector ids; Vector conf; Hashtable Scores; // Hash of names and score vectors - + Hashtable Symscores; // indexes of symbol annotation properties in sequenceI vector public JPredFile(String inStr) { super(inStr); @@ -50,109 +50,118 @@ public class JPredFile noSeqs = 0; Vector seq_entries = new Vector(); Vector ids = new Vector(); - + Hashtable Symscores = new Hashtable(); while ( (line = nextLine()) != null) { // Concise format allows no comments or non comma-formatted data StringTokenizer str = new StringTokenizer(line, ":"); String id = ""; String seq = ""; - if (str.hasMoreTokens()) + if (!str.hasMoreTokens()) { - id = str.nextToken(); - String seqsym = str.nextToken(); - StringTokenizer symbols = new StringTokenizer(seqsym, ","); - // decide if we have more than just alphanumeric symbols - int numSymbols = symbols.countTokens(); - if (seq.length() != (2 * numSymbols)) + continue; + } + + id = str.nextToken(); + String seqsym = str.nextToken(); + StringTokenizer symbols = new StringTokenizer(seqsym, ","); + // decide if we have more than just alphanumeric symbols + int numSymbols = symbols.countTokens(); + + if (numSymbols==0) { + continue; + } + + if (seqsym.length() != (2 * numSymbols)) + { + // Set of scalars for some property + if (Scores.containsKey(id)) { - // Set of scalars for some property - if (Scores.containsKey(id)) + int i = 1; + while (Scores.containsKey(id + "_" + i)) { - int i = 1; - while (Scores.containsKey(id + "_" + i)) - { - i++; - } - id = id + "_" + i; + i++; } - Vector scores = new Vector(numSymbols); - // Typecheck from first entry - int i = 0; - String ascore = symbols.nextToken(); - try - { - // store elements as floats... - do - { - Float score = new Float(ascore); - scores.set(i, (Object) score); - ascore = symbols.nextToken(); - } - while (++i < numSymbols); + id = id + "_" + i; + } + Vector scores = new Vector(); + // Typecheck from first entry + int i = 0; + String ascore="dead"; + try + { + // store elements as floats... + while (symbols.hasMoreTokens()) { + ascore = symbols.nextToken(); + Float score = new Float(ascore); + scores.addElement( (Object) score); } - catch (Exception e) + } + catch (Exception e) + { + // or just keep them as strings + i = scores.size(); + for (int j = 0; j < i; j++) { - // or just keep them as strings - for (int j = 0; j < i; j++) - { - scores.set(j, - (Object) - ( (Float) scores.get(j)).toString()); - } - do + scores.set(j, + (Object) ( (Float) scores.get(j)).toString()); + } + scores.addElement((Object) ascore); + while (symbols.hasMoreTokens()) { { - scores.set(i, ascore); ascore = symbols.nextToken(); + scores.addElement( (Object) ascore); } - while (++i < numSymbols); } Scores.put(id, scores); } - else + } else + if (id.equals("jnetconf")) + { + id = "Prediction Confidence"; + this.conf = new Vector(numSymbols); + for (int i = 0; i < numSymbols; i++) { - if (id.equals("jnetconf")) - { - id = "Prediction Confidence"; - this.conf = new Vector(numSymbols); - for (int i = 0; i < numSymbols; i++) - { - conf.set(i, (Object) symbols.nextToken()); + conf.set(i, (Object) symbols.nextToken()); + } + } + else + { + // Sequence or a prediction string (rendered as sequence) + + StringBuffer newseq = new StringBuffer(); + + for (int i = 0; i < numSymbols; i++) { + newseq.append(symbols.nextToken()); + } + + if (id.indexOf(";") > -1) { + seq_entries.addElement(newseq); + int i=1; + String name = id.substring(id.indexOf(";")+1); + while (ids.lastIndexOf(name)>-1) { + name = id.substring(id.indexOf(";")+1)+"_"+1; } + ids.addElement(name); + noSeqs++; } else { - // Sequence or a prediction string (rendered as sequence) - - StringBuffer newseq = new StringBuffer(); - for (int i = 0; i < numSymbols; i++) - { - newseq.append(symbols.nextToken()); - } - if (id.indexOf(";") > -1) - { - seq_entries.addElement(newseq); - ids.addElement(id.substring(id.indexOf(";"))); - noSeqs++; - } - else - { - if (id.equals("JNETPRED")) - { - id = "Predicted Secondary Structure"; - } - seq_entries.addElement(newseq); - ids.addElement(id); + if (id.equals("JNETPRED")) { + id = "Predicted Secondary Structure"; } + seq_entries.addElement( newseq.toString() ); + ids.addElement(id); + Symscores.put((Object) id, (Object) new Integer(ids.size()-1)); } - } - } } + if (noSeqs < 1) { - throw new IOException("JpredFile Parser: No sequence in the prediction!"); + throw new IOException( + "JpredFile Parser: No sequence in the prediction!"); } maxLength = seq_entries.elementAt(0).toString().length(); for (int i = 0; i < ids.size(); i++) @@ -161,11 +170,14 @@ public class JPredFile Sequence newSeq = new Sequence(ids.elementAt(i).toString(), seq_entries.elementAt(i).toString(), 1, - seq_entries.elementAt(i).toString().length()); - if (!isValidProteinSequence(newSeq.getSequence())) + seq_entries.elementAt(i).toString(). + length()); + if (!Symscores.containsKey(ids.elementAt(i)) + && !isValidProteinSequence(newSeq.getSequence())) { - throw new IOException("JPredConcise: Not a valid protein sequence - (" - + ids.elementAt(i).toString() + ")"); + throw new IOException( + "JPredConcise: Not a valid protein sequence - (" + + ids.elementAt(i).toString() + ")"); } if (maxLength != seq_entries.elementAt(i).toString().length()) @@ -183,54 +195,75 @@ public class JPredFile * print * * @return String - */ + */ - public String print() - { - return "Not Supported"; - } -} -/* -StringBuffer out = new StringBuffer(); - -out.append("START PRED\n"); -for (int i = 0; i < s[0].sequence.length(); i++) -{ - out.append(s[0].sequence.substring(i, i + 1) + " "); - out.append(s[1].sequence.substring(i, i + 1) + " "); - out.append(s[1].score[0].elementAt(i) + " "); - out.append(s[1].score[1].elementAt(i) + " "); - out.append(s[1].score[2].elementAt(i) + " "); - out.append(s[1].score[3].elementAt(i) + " "); - - out.append("\n"); -} -out.append("END PRED\n"); -return out.toString(); -} + public String print() + { + return "Not Supported"; + } public static void main(String[] args) -{ - try - { - BLCFile blc = new BLCFile(args[0], "File"); - DrawableSequence[] s = new DrawableSequence[blc.seqs.size()]; - for (int i = 0; i < blc.seqs.size(); i++) { - s[i] = new DrawableSequence( (Sequence) blc.seqs.elementAt(i)); + try + { + JPredFile blc = new JPredFile(args[0], "File"); + for (int i = 0; i < blc.seqs.size(); i++) + { + System.out.println( ( (Sequence) blc.seqs.elementAt(i)).getName() + + "\n" + + ( (Sequence) blc.seqs.elementAt(i)).getSequence() + + "\n"); + } + } + catch (java.io.IOException e) + { + System.out.println("Exception " + e); + e.printStackTrace(); + } } - String out = BLCFile.print(s); - - AlignFrame af = new AlignFrame(null, s); - af.resize(700, 500); - af.show(); - System.out.println(out); - } - catch (java.io.IOException e) - { - System.out.println("Exception " + e); } -} -} -*/ + /* + StringBuffer out = new StringBuffer(); + + out.append("START PRED\n"); + for (int i = 0; i < s[0].sequence.length(); i++) + { + out.append(s[0].sequence.substring(i, i + 1) + " "); + out.append(s[1].sequence.substring(i, i + 1) + " "); + out.append(s[1].score[0].elementAt(i) + " "); + out.append(s[1].score[1].elementAt(i) + " "); + out.append(s[1].score[2].elementAt(i) + " "); + out.append(s[1].score[3].elementAt(i) + " "); + + out.append("\n"); + } + out.append("END PRED\n"); + return out.toString(); + } + + public static void main(String[] args) + { + try + { + BLCFile blc = new BLCFile(args[0], "File"); + DrawableSequence[] s = new DrawableSequence[blc.seqs.size()]; + for (int i = 0; i < blc.seqs.size(); i++) + { + s[i] = new DrawableSequence( (Sequence) blc.seqs.elementAt(i)); + } + String out = BLCFile.print(s); + + AlignFrame af = new AlignFrame(null, s); + af.resize(700, 500); + af.show(); + System.out.println(out); + } + catch (java.io.IOException e) + { + System.out.println("Exception " + e); + } + } + + } + */