From 04f45d8c1e6e2c9e6f0ce9887402262102a56191 Mon Sep 17 00:00:00 2001 From: jprocter Date: Mon, 2 Jul 2012 07:40:33 +0100 Subject: [PATCH] JAL-974 create graduated feature colours for annotation with scores. --- src/jalview/ws/jws2/AADisorderClient.java | 40 ++++++++++++++++++++++++----- 1 file changed, 33 insertions(+), 7 deletions(-) diff --git a/src/jalview/ws/jws2/AADisorderClient.java b/src/jalview/ws/jws2/AADisorderClient.java index baec458..c5c7a13 100644 --- a/src/jalview/ws/jws2/AADisorderClient.java +++ b/src/jalview/ws/jws2/AADisorderClient.java @@ -1,14 +1,19 @@ 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; @@ -55,6 +60,7 @@ public class AADisorderClient extends JabawsAlignCalcWorker implements if (immediate || !calcMan.isWorking(this) && scoremanager != null) { boolean dispFeatures = false; + Map fc=new Hashtable(); for (String seqId : seqNames.keySet()) { SequenceI dseq, seq = seqNames.get(seqId); @@ -65,7 +71,7 @@ public class AADisorderClient extends JabawsAlignCalcWorker implements } ; ScoreHolder scores = scoremanager.getAnnotationForSequence(seqId); - + float last=Float.NaN,val=Float.NaN; for (Score scr : scores.scores) { @@ -81,7 +87,7 @@ public class AADisorderClient extends JabawsAlignCalcWorker implements { 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 { @@ -90,6 +96,11 @@ public class AADisorderClient extends JabawsAlignCalcWorker implements base + rn.to, methodName); } dseq.addSequenceFeature(sf); + if (last!=val && last!=Float.NaN) + { + fc.put(sf.getType(),sf); + } + last=val; dispFeatures = true; } } @@ -100,7 +111,12 @@ public class AADisorderClient extends JabawsAlignCalcWorker implements { 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; } @@ -110,15 +126,25 @@ public class AADisorderClient extends JabawsAlignCalcWorker implements { 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); } - */ } } -- 1.7.10.2