From a665055e234b20c818820bddedf203b7fd138252 Mon Sep 17 00:00:00 2001 From: jprocter Date: Wed, 17 May 2006 16:48:49 +0000 Subject: [PATCH] Refactored code for creating annotation objects from a jnetfile object. --- src/jalview/io/JnetAnnotationMaker.java | 123 +++++++++++++++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100755 src/jalview/io/JnetAnnotationMaker.java diff --git a/src/jalview/io/JnetAnnotationMaker.java b/src/jalview/io/JnetAnnotationMaker.java new file mode 100755 index 0000000..9a397d7 --- /dev/null +++ b/src/jalview/io/JnetAnnotationMaker.java @@ -0,0 +1,123 @@ +package jalview.io; + +import jalview.datamodel.*; +import java.net.URL; +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.io.FileReader; + + +public class JnetAnnotationMaker +{ + /** + * adds the annotation parsed by prediction to al. + * @param prediction JPredFile + * @param al AlignmentI + * @param FirstSeq int - + * @param noMsa boolean + */ + public static void add_annotation(JPredFile prediction, AlignmentI al, + int FirstSeq, boolean noMsa) + throws Exception + { + int i = 0; + SequenceI[] preds = prediction.getSeqsAsArray(); + SequenceI seqRef = al.getSequenceAt(FirstSeq); + int width = preds[0].getSequence().length(); + int[] gapmap = al.getSequenceAt(FirstSeq).gapMap(); + if (gapmap.length != width) + { + throw (new Exception( + "Number of residues in supposed query sequence ('" + + al.getSequenceAt(FirstSeq).getName() + "'\n" + + al.getSequenceAt(FirstSeq).getSequence() + + ")\ndiffer from number of prediction sites in prediction (" + width + + ")")); + } + + AlignmentAnnotation annot; + Annotation[] annotations = null; + + while (i < preds.length) + { + String id = preds[i].getName().toUpperCase(); + + if (id.startsWith("LUPAS") || id.startsWith("JNET") || + id.startsWith("JPRED")) + { + annotations = new Annotation[al.getWidth()]; + + if (id.equals("JNETPRED") || id.equals("JNETPSSM") || + id.equals("JNETFREQ") || id.equals("JNETHMM") || + id.equals("JNETALIGN") || id.equals("JPRED")) + { + for (int j = 0; j < width; j++) + { + annotations[gapmap[j]] = new Annotation("", "", + preds[i].getCharAt(j), 0); + } + } + else if (id.equals("JNETCONF")) + { + for (int j = 0; j < width; j++) + { + float value = Float.parseFloat(preds[i].getCharAt( + j) + ""); + annotations[gapmap[j]] = new Annotation(preds[i].getCharAt( + j) + "", "", preds[i].getCharAt(j), + value); + } + } + else + { + for (int j = 0; j < width; j++) + { + annotations[gapmap[j]] = new Annotation(preds[i].getCharAt( + j) + "", "", ' ', 0); + } + } + + if (id.equals("JNETCONF")) + { + annot = new AlignmentAnnotation(preds[i].getName(), + "JNet Output", annotations, 0f, + 10f, + AlignmentAnnotation.BAR_GRAPH); + } + else + { + annot = new AlignmentAnnotation(preds[i].getName(), + "JNet Output", annotations); + } + + if (seqRef != null) + { + annot.createSequenceMapping(seqRef, 0); + seqRef.addAlignmentAnnotation(annot); + } + + al.addAnnotation(annot); + + if (noMsa) + { + al.deleteSequence(preds[i]); + } + } + + i++; + } + + //Hashtable scores = prediction.getScores(); + + /* addFloatAnnotations(al, gapmap, (Vector)scores.get("JNETPROPH"), + "JnetpropH", "Jnet Helix Propensity", 0f,1f,1); + + addFloatAnnotations(al, gapmap, (Vector)scores.get("JNETPROPB"), + "JnetpropB", "Jnet Beta Sheet Propensity", 0f,1f,1); + + addFloatAnnotations(al, gapmap, (Vector)scores.get("JNETPROPC"), + "JnetpropC", "Jnet Coil Propensity", 0f,1f,1); + */ + + } +} -- 1.7.10.2