package jalview.ws.jws2;
import jalview.api.AlignCalcWorkerI;
+import jalview.bin.Cache;
import jalview.datamodel.SequenceFeature;
import jalview.datamodel.SequenceI;
import jalview.gui.AlignFrame;
+import jalview.schemes.GraduatedColor;
import jalview.ws.jws2.jabaws2.Jws2Instance;
import jalview.ws.params.WsParamSetI;
+import java.awt.Color;
+import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import compbio.data.sequence.Range;
import compbio.data.sequence.Score;
if (immediate || !calcMan.isWorking(this) && scoremanager != null)
{
boolean dispFeatures = false;
+ Map<String,Object> fc=new Hashtable<String, Object>();
for (String seqId : seqNames.keySet())
{
SequenceI dseq, seq = seqNames.get(seqId);
}
;
ScoreHolder scores = scoremanager.getAnnotationForSequence(seqId);
-
+ float last=Float.NaN,val=Float.NaN;
for (Score scr : scores.scores)
{
{
sf = new SequenceFeature(typeName + "(" + scr.getMethod()
+ ")", "Disordered Region", base + rn.from, base
- + rn.to, vals.next().floatValue(), methodName);
+ + rn.to, val=vals.next().floatValue(), methodName);
}
else
{
base + rn.to, methodName);
}
dseq.addSequenceFeature(sf);
+ if (last!=val && last!=Float.NaN)
+ {
+ fc.put(sf.getType(),sf);
+ }
+ last=val;
dispFeatures = true;
}
}
{
SequenceFeature sf = new SequenceFeature(typeName + "("
+ scr.getMethod() + ")", "Disordered Region", start,
- start, vals.next().floatValue(), methodName);
+ start, val=vals.next().floatValue(), methodName);
+ if (last!=val && last!=Float.NaN)
+ {
+ fc.put(sf.getType(),sf);
+ }
+ last=val;
dseq.addSequenceFeature(sf);
dispFeatures = true;
}
{
if (dispFeatures)
{
+ jalview.gui.FeatureRenderer fr = ((jalview.gui.AlignmentPanel) ap).cloneFeatureRenderer();
// TODO: configure feature display settings for added types if they don't already exist
-
+ for (String ft:fc.keySet())
+ {
+ Cache.log.debug("Set graduated feature for new type:"+ft);
+ Object gc=fr.getFeatureStyle(ft);
+ if (gc instanceof Color)
+ {
+ // set graduated color as fading to white for minimum, and autoscaling to values on alignment
+ GraduatedColor ggc=new GraduatedColor(Color.white, (Color)gc,Float.MIN_VALUE, Float.MAX_VALUE);
+ ggc.setAutoScaled(true);
+ fr.setColour(ft, ggc);
+ }
+ }
+ af.alignPanel.updateFeatureRendererFrom(fr);
af.alignPanel.av.setShowSequenceFeatures(true);
ap.paintAlignment(true);
}
}
- /*
- * else { ap.paintAlignment(true); }
- */
}
}