X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FAlignViewport.java;h=51478f22f04a367394e66acf9f4c36762d364b72;hb=efc31b4a8d5cee63555586804a2b79c06bdb5a14;hp=cef87f7ca9b76497471470ebd6fca82a902742c9;hpb=e5127e5f27f02c8f328539eaac68eabfbee1d135;p=jalview.git diff --git a/src/jalview/appletgui/AlignViewport.java b/src/jalview/appletgui/AlignViewport.java index cef87f7..51478f2 100755 --- a/src/jalview/appletgui/AlignViewport.java +++ b/src/jalview/appletgui/AlignViewport.java @@ -1,11 +1,32 @@ +/* + * Jalview - A Sequence Alignment Editor and Viewer + * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ + package jalview.appletgui; +import java.util.*; + import java.awt.*; -import jalview.bin.*; + import jalview.analysis.*; +import jalview.bin.*; import jalview.datamodel.*; import jalview.schemes.*; -import java.util.*; public class AlignViewport { @@ -16,10 +37,10 @@ public class AlignViewport int endSeq; boolean showFullId = true; - boolean showText=true; - boolean showColourText=false; - boolean showBoxes=true; - boolean wrapAlignment=false; + boolean showText = true; + boolean showColourText = false; + boolean showBoxes = true; + boolean wrapAlignment = false; boolean renderGaps = true; boolean showSequenceFeatures = false; boolean showAnnotation = true; @@ -34,13 +55,13 @@ public class AlignViewport SequenceGroup selectionGroup = new SequenceGroup(); - int charHeight; - int charWidth; - int chunkWidth; - int chunkHeight; + int charHeight; + int charWidth; + int chunkWidth; + int chunkHeight; - Font font = new Font("SansSerif",Font.PLAIN,10); - AlignmentI alignment; + Font font = new Font("SansSerif", Font.PLAIN, 10); + AlignmentI alignment; ColumnSelection colSel = new ColumnSelection(); @@ -50,60 +71,70 @@ public class AlignViewport NJTree currentTree = null; boolean scaleAboveWrapped = true; - boolean scaleLeftWrapped = true; + boolean scaleLeftWrapped = true; boolean scaleRightWrapped = true; public AlignViewport(AlignmentI al, JalviewLite applet) { setAlignment(al); this.startRes = 0; - this.endRes = al.getWidth()-1; + this.endRes = al.getWidth() - 1; this.startSeq = 0; - this.endSeq = al.getHeight()-1; + this.endSeq = al.getHeight() - 1; setFont(font); - - if(applet!=null) + if (applet != null) { String param = applet.getParameter("showFullId"); if (param != null) + { showFullId = Boolean.valueOf(param).booleanValue(); + } param = applet.getParameter("showAnnotation"); if (param != null) + { showAnnotation = Boolean.valueOf(param).booleanValue(); + } param = applet.getParameter("showConservation"); if (param != null) + { showConservation = Boolean.valueOf(param).booleanValue(); + } param = applet.getParameter("showQuality"); if (param != null) + { showQuality = Boolean.valueOf(param).booleanValue(); + } param = applet.getParameter("showConsensus"); if (param != null) + { showConsensus = Boolean.valueOf(param).booleanValue(); + } } // We must set conservation and consensus before setting colour, // as Blosum and Clustal require this to be done updateConservation(); updateConsensus(); - if(applet!=null && applet.getParameter("defaultColour")!=null) + if (applet != null && applet.getParameter("defaultColour") != null) { globalColourScheme = ColourSchemeProperty.getColour(alignment, applet.getParameter("defaultColour")); - if(globalColourScheme!=null) - globalColourScheme.setConsensus( vconsensus ); - } - } - + if (globalColourScheme != null) + { + globalColourScheme.setConsensus(vconsensus); + } + } + } - public void showSequenceFeatures(boolean b) - { - showSequenceFeatures = b; - } + public void showSequenceFeatures(boolean b) + { + showSequenceFeatures = b; + } public Vector vconsensus; AlignmentAnnotation consensus; @@ -117,19 +148,21 @@ public class AlignViewport Conservation cons = new jalview.analysis.Conservation("All", jalview.schemes.ResidueProperties.propHash, 3, alignment.getSequences(), 0, - alignment.getWidth()-1); + alignment.getWidth() - 1); cons.calculate(); cons.verdict(false, ConsPercGaps); cons.findQuality(); int alWidth = alignment.getWidth(); - Annotation [] annotations = new Annotation[alWidth]; - Annotation [] qannotations = new Annotation[alWidth]; + Annotation[] annotations = new Annotation[alWidth]; + Annotation[] qannotations = new Annotation[alWidth]; String sequence = cons.getConsSequence().getSequence(); - float minR,minG,minB, maxR,maxG,maxB; + float minR, minG, minB, maxR, maxG, maxB; minR = 0.3f; minG = 0.0f; minB = 0f; - maxR = 1.0f-minR; maxG=0.9f-minG; maxB=0f-minB; // scalable range for colouring both Conservation and Quality + maxR = 1.0f - minR; + maxG = 0.9f - minG; + maxB = 0f - minB; // scalable range for colouring both Conservation and Quality float min = 0f; float max = 11f; float qmin = cons.qualityRange[0].floatValue(); @@ -139,107 +172,131 @@ public class AlignViewport { float value = 0; try + { + value = Integer.parseInt(sequence.charAt(i) + ""); + } + catch (Exception ex) + { + if (sequence.charAt(i) == '*') { - value = Integer.parseInt(sequence.charAt(i) + ""); + value = 11; } - catch (Exception ex) + if (sequence.charAt(i) == '+') { - if (sequence.charAt(i) == '*') value = 11; - if (sequence.charAt(i) == '+') value = 10; + value = 10; } - float vprop = value-min; - vprop/=max; + } + float vprop = value - min; + vprop /= max; + annotations[i] = new Annotation(sequence.charAt(i) + "", - "Conservation graph", ' ', value, new Color(minR+maxR*vprop, minG+maxG*vprop, minB+maxB*vprop)); + "", ' ', value, + new Color(minR + maxR * vprop, + minG + maxG * vprop, + minB + maxB * vprop)); // Quality calc - value = ((Double) cons.quality.elementAt(i)).floatValue(); + value = ( (Double) cons.quality.elementAt(i)).floatValue(); vprop = value - qmin; - vprop/=qmax; + vprop /= qmax; qannotations[i] = new Annotation(" ", - String.valueOf(value), ' ', value, new Color(minR+maxR*vprop, minG+maxG*vprop, minB+maxB*vprop)); + String.valueOf(value), ' ', value, + new + Color(minR + maxR * vprop, + minG + maxG * vprop, + minB + maxB * vprop)); } - if(conservation==null) + if (conservation == null) { conservation = new AlignmentAnnotation("Conservation", - "Conservation of total alignment less than "+ConsPercGaps+"% gaps", + "Conservation of total alignment less than " + + ConsPercGaps + "% gaps", annotations, 0f, // cons.qualityRange[0].floatValue(), 11f, // cons.qualityRange[1].floatValue() 1); - if(showConservation) - alignment.addAnnotation(conservation); + if (showConservation) + { + alignment.addAnnotation(conservation); + } quality = new AlignmentAnnotation("Quality", "Alignment Quality based on Blosum62 scores", qannotations, cons.qualityRange[0].floatValue(), cons.qualityRange[1].floatValue(), 1); - if(showQuality) + if (showQuality) + { alignment.addAnnotation(quality); + } } - else { + else + { conservation.annotations = annotations; quality.annotations = qannotations; quality.graphMax = cons.qualityRange[1].floatValue(); } - } public void updateConsensus() { - Annotation [] annotations = new Annotation[alignment.getWidth()]; + Annotation[] annotations = new Annotation[alignment.getWidth()]; // 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(); + if (vconsensus == null) + { + vconsensus = alignment.getAAFrequency(); + } else { - Vector temp = alignment.getAAFrequency(); - vconsensus.removeAllElements(); - Enumeration e = temp.elements(); - while(e.hasMoreElements()) - { - vconsensus.addElement(e.nextElement()); - } + Vector temp = alignment.getAAFrequency(); + vconsensus.removeAllElements(); + Enumeration e = temp.elements(); + while (e.hasMoreElements()) + { + vconsensus.addElement(e.nextElement()); + } } Hashtable hash = null; - for (int i = 0; i2) - { - mouseOver = "["+maxRes+"] "; - maxRes = "+ "; - } + hash = (Hashtable) vconsensus.elementAt(i); + float value = new Float(hash.get("maxCount").toString()).floatValue(); + value /= new Float(hash.get("size").toString()).floatValue(); + + value *= 100; + String maxRes = hash.get("maxResidue") + " "; + String mouseOver = hash.get("maxResidue") + " "; + if (maxRes.length() > 2) + { + mouseOver = "[" + maxRes + "] "; + maxRes = "+ "; + } - mouseOver += (int)value+"%"; - annotations[i] = new Annotation(maxRes, mouseOver, ' ', value); + mouseOver += (int) value + "%"; + annotations[i] = new Annotation(maxRes, mouseOver, ' ', value); } - if(consensus==null) - { - consensus = new AlignmentAnnotation("Consensus", - "PID", annotations, 0f, 100f, 1); - if(showConsensus) - alignment.addAnnotation(consensus); - } - else - consensus.annotations = annotations; + if (consensus == null) + { + consensus = new AlignmentAnnotation("Consensus", + "PID", annotations, 0f, 100f, 1); + if (showConsensus) + { + alignment.addAnnotation(consensus); + } + } + else + { + consensus.annotations = annotations; + } } - public SequenceGroup getSelectionGroup() { return selectionGroup; @@ -250,42 +307,44 @@ public class AlignViewport selectionGroup = sg; } + public boolean getConservationSelected() + { + return conservationColourSelected; + } - public boolean getConservationSelected() - { - return conservationColourSelected; - } - - public void setConservationSelected(boolean b) - { - conservationColourSelected = b; - } + public void setConservationSelected(boolean b) + { + conservationColourSelected = b; + } - public boolean getAbovePIDThreshold() - { - return abovePIDThreshold; - } + public boolean getAbovePIDThreshold() + { + return abovePIDThreshold; + } - public void setAbovePIDThreshold(boolean b) - { - abovePIDThreshold = b; - } + public void setAbovePIDThreshold(boolean b) + { + abovePIDThreshold = b; + } - public int getStartRes() { + public int getStartRes() + { return startRes; } - public int getEndRes() { + public int getEndRes() + { return endRes; } - public int getStartSeq() { + public int getStartSeq() + { return startSeq; } public void setGlobalColourScheme(ColourSchemeI cs) { - globalColourScheme = cs; + globalColourScheme = cs; } public ColourSchemeI getGlobalColourScheme() @@ -293,37 +352,50 @@ public class AlignViewport return globalColourScheme; } - - public void setStartRes(int res) { + public void setStartRes(int res) + { this.startRes = res; } - public void setStartSeq(int seq) { + + public void setStartSeq(int seq) + { this.startSeq = seq; } - public void setEndRes(int res) { - if (res > alignment.getWidth()-1) { + + public void setEndRes(int res) + { + if (res > alignment.getWidth() - 1) + { // log.System.out.println(" Corrected res from " + res + " to maximum " + (alignment.getWidth()-1)); - res = alignment.getWidth()-1; + res = alignment.getWidth() - 1; } - if (res < 0) { + if (res < 0) + { res = 0; } this.endRes = res; } - public void setEndSeq(int seq) { - if (seq > alignment.getHeight()) { + + public void setEndSeq(int seq) + { + if (seq > alignment.getHeight()) + { seq = alignment.getHeight(); } - if (seq < 0) { + if (seq < 0) + { seq = 0; } this.endSeq = seq; } - public int getEndSeq() { + + public int getEndSeq() + { return endSeq; } - public void setFont(Font f) { + public void setFont(Font f) + { font = f; java.awt.Frame temp = new java.awt.Frame(); temp.addNotify(); @@ -332,52 +404,76 @@ public class AlignViewport setCharWidth(fm.charWidth('M')); } - public Font getFont() { + public Font getFont() + { return font; } - public void setCharWidth(int w) { + + public void setCharWidth(int w) + { this.charWidth = w; } - public int getCharWidth() { + + public int getCharWidth() + { return charWidth; } - public void setCharHeight(int h) { + + public void setCharHeight(int h) + { this.charHeight = h; } - public int getCharHeight() { + + public int getCharHeight() + { return charHeight; } - public void setChunkWidth(int w) { + + public void setChunkWidth(int w) + { this.chunkWidth = w; } - public int getChunkWidth() { + + public int getChunkWidth() + { return chunkWidth; } - public void setChunkHeight(int h) { + + public void setChunkHeight(int h) + { this.chunkHeight = h; } - public int getChunkHeight() { + + public int getChunkHeight() + { return chunkHeight; } - public AlignmentI getAlignment() { + + public AlignmentI getAlignment() + { return alignment; } - public void setAlignment(AlignmentI align) { + + public void setAlignment(AlignmentI align) + { this.alignment = align; } - public void setWrapAlignment(boolean state) { + public void setWrapAlignment(boolean state) + { wrapAlignment = state; } - public void setShowText(boolean state) { + + public void setShowText(boolean state) + { showText = state; } - public void setRenderGaps(boolean state){ + public void setRenderGaps(boolean state) + { renderGaps = state; } - public boolean getColourText() { return showColourText; @@ -388,80 +484,114 @@ public class AlignViewport showColourText = state; } - public void setShowBoxes(boolean state) { + public void setShowBoxes(boolean state) + { showBoxes = state; } - public boolean getWrapAlignment() { - return wrapAlignment; + public boolean getWrapAlignment() + { + return wrapAlignment; } - public boolean getShowText() { + + public boolean getShowText() + { return showText; } - public boolean getShowBoxes() { + + public boolean getShowBoxes() + { return showBoxes; } - public char getGapCharacter() { + public char getGapCharacter() + { return getAlignment().getGapCharacter(); } - public void setGapCharacter(char gap) { - if (getAlignment() != null) { + + public void setGapCharacter(char gap) + { + if (getAlignment() != null) + { getAlignment().setGapCharacter(gap); } } - public void setThreshold(int thresh) { + + public void setThreshold(int thresh) + { threshold = thresh; } - public int getThreshold() { + + public int getThreshold() + { return threshold; } - public void setIncrement(int inc) { + + public void setIncrement(int inc) + { increment = inc; } - public int getIncrement() { + + public int getIncrement() + { return increment; } - public int getIndex(int y) { - int y1 = 0; + + public int getIndex(int y) + { + int y1 = 0; int starty = getStartSeq(); - int endy = getEndSeq(); + int endy = getEndSeq(); - for (int i = starty; i <= endy; i++) { - if (i < alignment.getHeight() && alignment.getSequenceAt(i) != null) { + for (int i = starty; i <= endy; i++) + { + if (i < alignment.getHeight() && alignment.getSequenceAt(i) != null) + { int y2 = y1 + getCharHeight(); - if (y>=y1 && y <=y2) { + if (y >= y1 && y <= y2) + { return i; } - y1 = y2; - } else { + y1 = y2; + } + else + { return -1; } } return -1; } - public ColumnSelection getColumnSelection() { + public ColumnSelection getColumnSelection() + { return colSel; } - public void resetSeqLimits(int height) { - setEndSeq(height/getCharHeight()); + public void resetSeqLimits(int height) + { + setEndSeq(height / getCharHeight()); } - public void setCurrentTree(NJTree tree) { - currentTree = tree; + + public void setCurrentTree(NJTree tree) + { + currentTree = tree; } - public NJTree getCurrentTree() { + + public NJTree getCurrentTree() + { return currentTree; } - public void setColourAppliesToAllGroups(boolean b) - { colourAppliesToAllGroups = b; } + { + colourAppliesToAllGroups = b; + } public boolean getColourAppliesToAllGroups() - {return colourAppliesToAllGroups; } + { + return colourAppliesToAllGroups; + } public boolean getShowFullId() { @@ -484,22 +614,33 @@ public class AlignViewport } public boolean getScaleAboveWrapped() - { return scaleAboveWrapped;} + { + return scaleAboveWrapped; + } public boolean getScaleLeftWrapped() - { return scaleLeftWrapped; } + { + return scaleLeftWrapped; + } public boolean getScaleRightWrapped() - { return scaleRightWrapped; } + { + return scaleRightWrapped; + } public void setScaleAboveWrapped(boolean b) - { scaleAboveWrapped = b; } + { + scaleAboveWrapped = b; + } public void setScaleLeftWrapped(boolean b) - { scaleLeftWrapped = b; } + { + scaleLeftWrapped = b; + } public void setScaleRightWrapped(boolean b) - { scaleRightWrapped = b; } - + { + scaleRightWrapped = b; + } }