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;
public List<Argument> selectDefaultArgs()
{
List<ArgumentI> rgs = new ArrayList<ArgumentI>();
- for (ArgumentI argi: service.getParamStore().getServiceParameters())
+ for (ArgumentI argi : service.getParamStore().getServiceParameters())
{
if (argi instanceof OptionI)
{
List<String> 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);
}
{
return "calculating consensus secondary structure prediction using JPred service";
}
- private static HashMap<String, String[]> jpredRowLabels = new HashMap<String,String[]>();
- private static HashSet<String>jpredRes_graph,jpredRes_ssonly;
+
+ private static HashMap<String, String[]> jpredRowLabels = new HashMap<String, String[]>();
+
+ private static HashSet<String> 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.
JpredAlignment jpres = (JpredAlignment) msascoreset;
int alWidth = alignViewport.getAlignment().getWidth();
ArrayList<AlignmentAnnotation> ourAnnot = new ArrayList<AlignmentAnnotation>();
- 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",
+ "<html>Prediction of Solvent Accessibility<br/>levels are<ul><li>0 - Exposed</li><li>3 - 25% or more S.A. accessible</li><li>6 - 5% or more S.A. accessible</li><li>9 - Buried (<5% exposed)</li></ul>",
+ 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)
{
// created a valid annotation from the data
ourAnnot.add(annotation);
+ // annotation.validateRangeAndDisplay();
}
}
}
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++)
{
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 '"
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()
{