X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignViewport.java;h=7fd746127eacd37f5c314def3b16c276386a7a18;hb=31a5f9724e7ba5c8f67a6db9a0c0f2356cd81b9d;hp=5535dbbaf3bbb5690e0dba43835e47134b7ebcfa;hpb=90925a374cc14797c3e353f30af938a2eec025a8;p=jalview.git diff --git a/src/jalview/gui/AlignViewport.java b/src/jalview/gui/AlignViewport.java index 5535dbb..7fd7461 100755 --- a/src/jalview/gui/AlignViewport.java +++ b/src/jalview/gui/AlignViewport.java @@ -75,19 +75,21 @@ public class AlignViewport showSequenceFeatures = b; } + public Vector vconsensus; AlignmentAnnotation consensus; AlignmentAnnotation conservation; AlignmentAnnotation quality; + public int ConsPercGaps = 25; // JBPNote : This should be a scalable property! + public void updateConservation() { - int percGaps = 100; // JBPNote : This should be a scalable property! Conservation cons = new jalview.analysis.Conservation("All", - jalview.schemes.ResidueProperties.propHash, 1, + jalview.schemes.ResidueProperties.propHash, 3, alignment.getSequences(), 0, - alignment.getWidth()); + alignment.getWidth()-1); cons.calculate(); - cons.verdict(false, percGaps); + cons.verdict(false, ConsPercGaps); cons.findQuality(); int alWidth = alignment.getWidth(); Annotation [] annotations = new Annotation[alWidth]; @@ -123,14 +125,14 @@ public class AlignViewport value = ((Double) cons.quality.get(i)).floatValue(); vprop = value - qmin; vprop/=qmax; - qannotations[i] = new Annotation(sequence.charAt(i) + "", - new String().valueOf(value), ' ', value, new Color(minR+maxR*vprop, minG+maxG*vprop, minB+maxB*vprop)); + qannotations[i] = new Annotation(" ", + String.valueOf(value), ' ', value, new Color(minR+maxR*vprop, minG+maxG*vprop, minB+maxB*vprop)); } if(conservation==null) { conservation = new AlignmentAnnotation("Conservation", - "Conservation of total alignment less than "+percGaps+"% gaps", + "Conservation of total alignment less than "+ConsPercGaps+"% gaps", annotations, 0f, // cons.qualityRange[0].floatValue(), 11f, // cons.qualityRange[1].floatValue() @@ -156,11 +158,25 @@ public class AlignViewport { Annotation [] annotations = new Annotation[alignment.getWidth()]; - Vector cons = alignment.getAAFrequency(); + // this routine prevents vconsensus becoming a new object each time + // consenus is calculated. Important for speed of Blosum62 + // and PID colouring of alignment + if(vconsensus == null) + vconsensus = alignment.getAAFrequency(); + else + { + Vector temp = alignment.getAAFrequency(); + vconsensus.clear(); + Enumeration e = temp.elements(); + while(e.hasMoreElements()) + { + vconsensus.add(e.nextElement()); + } + } Hashtable hash = null; - for (int i = 0, alWidth=alignment.getWidth(); i