From: j.procter@dundee.ac.uk Date: Fri, 18 Jul 2014 12:30:29 +0000 (+0100) Subject: JAL-1379 new look JPred results X-Git-Tag: Jalview_2_9~179^2~8 X-Git-Url: http://source.jalview.org/gitweb/?p=jalview.git;a=commitdiff_plain;h=2ada5fb71ea7f372826f2f91cb4bfe33b4a4c660 JAL-1379 new look JPred results --- diff --git a/src/jalview/ws/jws2/JPred301Client.java b/src/jalview/ws/jws2/JPred301Client.java index 71cbb7e..8328d45 100644 --- a/src/jalview/ws/jws2/JPred301Client.java +++ b/src/jalview/ws/jws2/JPred301Client.java @@ -30,6 +30,7 @@ import jalview.ws.params.OptionI; import jalview.ws.params.WsParamSetI; import jalview.ws.uimodel.AlignAnalysisUIText; +import java.awt.Color; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; @@ -50,14 +51,14 @@ public class JPred301Client extends JabawsMsaInterfaceAlignCalcWorker public List selectDefaultArgs() { List rgs = new ArrayList(); - for (ArgumentI argi: service.getParamStore().getServiceParameters()) + for (ArgumentI argi : service.getParamStore().getServiceParameters()) { if (argi instanceof OptionI) { List o = ((OptionI) argi).getPossibleValues(); if (o.contains("-pred-nohits")) { - OptionI cpy = ((OptionI)argi).copy(); + OptionI cpy = ((OptionI) argi).copy(); cpy.setValue("-pred-nohits"); rgs.add(cpy); } @@ -88,15 +89,20 @@ public class JPred301Client extends JabawsMsaInterfaceAlignCalcWorker { return "calculating consensus secondary structure prediction using JPred service"; } - private static HashMap jpredRowLabels = new HashMap(); - private static HashSetjpredRes_graph,jpredRes_ssonly; + + private static HashMap jpredRowLabels = new HashMap(); + + private static HashSet jpredRes_graph, jpredRes_ssonly; { - jpredRes_ssonly=new HashSet(); + jpredRes_ssonly = new HashSet(); jpredRes_ssonly.add("jnetpred".toLowerCase()); - jpredRes_graph=new HashSet(); + jpredRes_ssonly.add("jnetpssm".toLowerCase()); + jpredRes_ssonly.add("jnethmm".toLowerCase()); + jpredRes_graph = new HashSet(); jpredRes_graph.add("jnetconf".toLowerCase()); - + jpredRes_graph.add("jnet burial".toLowerCase()); } + /** * update the consensus annotation from the sequence profile data using * current visualization settings. @@ -110,27 +116,62 @@ public class JPred301Client extends JabawsMsaInterfaceAlignCalcWorker JpredAlignment jpres = (JpredAlignment) msascoreset; int alWidth = alignViewport.getAlignment().getWidth(); ArrayList ourAnnot = new ArrayList(); - for (FastaSequence fsq:jpres.getJpredSequences()) + char[] sol = new char[jpres.getJpredSequences().get(0).getLength()]; + boolean firstsol = true; + for (FastaSequence fsq : jpres.getJpredSequences()) { String[] k = jpredRowLabels.get(fsq.getId()); - if (k==null) + if (k == null) + { + k = new String[] + { fsq.getId(), "JNet Output" }; + } + if (fsq.getId().startsWith("JNETSOL")) + { + char amnt = (fsq.getId().endsWith("25") ? "3" : fsq.getId() + .endsWith("5") ? "6" : "9").charAt(0); + char[] vseq = fsq.getSequence().toCharArray(); + for (int spos = 0, sposL = fsq.getLength(); spos < sposL; spos++) + { + if (firstsol) + { + sol[spos] = '0'; + } + if (vseq[spos] == 'B' && (sol[spos]=='0' || sol[spos] < amnt)) + { + sol[spos] = amnt; + } + } + firstsol = false; + } + else { - k = new String[] { fsq.getId(), "JNet Output"}; + createAnnotationRowFromString( + ourAnnot, + getCalcId(), + alWidth, + k[0], + k[1], + jpredRes_graph.contains(fsq.getId()) ? AlignmentAnnotation.BAR_GRAPH + : AlignmentAnnotation.NO_GRAPH, 0f, 9f, + fsq.getSequence()); } - createAnnotationRowFromString(ourAnnot, getCalcId(), alWidth, - k[0],k[1], - jpredRes_graph.contains(fsq.getId()) ? AlignmentAnnotation.BAR_GRAPH : AlignmentAnnotation.NO_GRAPH, 0f, 0f, - fsq.getSequence()); } - for (FastaSequence fsq: jpres.getSequences()) + createAnnotationRowFromString( + ourAnnot, + getCalcId(), + alWidth, + "Jnet Burial", + "Prediction of Solvent Accessibility
levels are
  • 0 - Exposed
  • 3 - 25% or more S.A. accessible
  • 6 - 5% or more S.A. accessible
  • 9 - Buried (<5% exposed)
", + AlignmentAnnotation.BAR_GRAPH, 0f, 9f, new String(sol)); + for (FastaSequence fsq : jpres.getSequences()) { if (fsq.getId().equalsIgnoreCase("QUERY")) { createAnnotationRowFromString(ourAnnot, getCalcId(), alWidth, "Query", "JPred Reference Sequence", - AlignmentAnnotation.NO_GRAPH, 0f, 0f, - fsq.getSequence()); + AlignmentAnnotation.NO_GRAPH, 0f, 0f, fsq.getSequence()); } } if (ourAnnot.size() > 0) @@ -161,6 +202,7 @@ public class JPred301Client extends JabawsMsaInterfaceAlignCalcWorker { // created a valid annotation from the data ourAnnot.add(annotation); + // annotation.validateRangeAndDisplay(); } } } @@ -169,11 +211,19 @@ public class JPred301Client extends JabawsMsaInterfaceAlignCalcWorker AlignmentAnnotation annotation, String sourceData, int alWidth, int rowType) { - if (sourceData.length()==0 && alWidth>0) + if (sourceData.length() == 0 && alWidth > 0) { return false; } Annotation[] elm = new Annotation[alWidth]; + boolean ssOnly = jpredRes_ssonly.contains(annotation.label + .toLowerCase()); + boolean graphOnly = rowType != AlignmentAnnotation.NO_GRAPH; + if (!ssOnly && !graphOnly) + { + // for burial 'B' + annotation.showAllColLabels = true; + } for (int i = 0, iSize = sourceData.length(); i < iSize; i++) { @@ -189,13 +239,15 @@ public class JPred301Client extends JabawsMsaInterfaceAlignCalcWorker switch (rowType) { case AlignmentAnnotation.NO_GRAPH: - elm[i] = new Annotation("" + annot, "" + annot, annot, Float.NaN); + elm[i] = ssOnly ? new Annotation("", "", annot, Float.NaN, + colourSS(annot)) : new Annotation("" + annot, "" + annot, + '\0', Float.NaN); break; default: try { elm[i] = new Annotation("" + annot, "" + annot, annot, - Integer.valueOf(annot)); + Integer.valueOf(""+annot)); } catch (Exception x) { System.err.println("Expected numeric value in character '" @@ -210,6 +262,18 @@ public class JPred301Client extends JabawsMsaInterfaceAlignCalcWorker return true; } + private Color colourSS(char annot) + { + switch (annot) + { + case 'H': + return jalview.renderer.AnnotationRenderer.HELIX_COLOUR; + case 'E': + return jalview.renderer.AnnotationRenderer.SHEET_COLOUR; + } + return jalview.renderer.AnnotationRenderer.GLYPHLINE_COLOR; + } + @Override public String getCalcId() {