/*
- * Jalview - A Sequence Alignment Editor and Viewer
- * Copyright (C) 2007 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
- *
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.4)
+ * Copyright (C) 2008 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.*;
public class AlignViewport
{
int startRes;
+
int endRes;
int startSeq;
+
int endSeq;
boolean cursorMode = false;
boolean showJVSuffix = true;
+
boolean showText = true;
+
boolean showColourText = false;
+
boolean showBoxes = true;
+
boolean wrapAlignment = false;
+
boolean renderGaps = true;
+
boolean showSequenceFeatures = false;
+
boolean showAnnotation = true;
+
boolean showConservation = true;
+
boolean showQuality = true;
+
boolean showConsensus = true;
+
boolean upperCasebold = false;
boolean colourAppliesToAllGroups = true;
+
ColourSchemeI globalColourScheme = null;
+
boolean conservationColourSelected = false;
+
boolean abovePIDThreshold = false;
SequenceGroup selectionGroup;
int charHeight;
+
int charWidth;
+
int wrappedWidth;
Font font = new Font("SansSerif", Font.PLAIN, 10);
+
boolean validCharWidth = true;
+
AlignmentI alignment;
ColumnSelection colSel = new ColumnSelection();
int threshold;
+
int increment;
NJTree currentTree = null;
boolean scaleAboveWrapped = true;
+
boolean scaleLeftWrapped = true;
+
boolean scaleRightWrapped = true;
// The following vector holds the features which are
public Hashtable featuresDisplayed;
boolean hasHiddenColumns = false;
+
boolean hasHiddenRows = false;
+
boolean showHiddenMarkers = true;
public Hashtable[] hconsensus;
+
AlignmentAnnotation consensus;
+
AlignmentAnnotation conservation;
+
AlignmentAnnotation quality;
boolean autocalculateConsensus = true;
public int ConsPercGaps = 25; // JBPNote : This should be a scalable property!
- private java.beans.PropertyChangeSupport changeSupport = new java.beans.
- PropertyChangeSupport(this);
+ private java.beans.PropertyChangeSupport changeSupport = new java.beans.PropertyChangeSupport(
+ this);
boolean ignoreGapsInConsensusCalculation = false;
boolean MAC = false;
Stack historyList = new Stack();
+
Stack redoList = new Stack();
String sequenceSetID;
setFont(font);
MAC = new jalview.util.Platform().isAMac();
-
+
if (applet != null)
{
String param = applet.getParameter("showFullId");
upperCasebold = true;
}
}
-
}
if (colour != null)
{
- globalColourScheme = ColourSchemeProperty.getColour(alignment, colour);
+ globalColourScheme = ColourSchemeProperty.getColour(alignment,
+ colour);
if (globalColourScheme != null)
{
globalColourScheme.setConsensus(hconsensus);
if (applet.getParameter("userDefinedColour") != null)
{
- ( (UserColourScheme) globalColourScheme).parseAppletParameter(
- applet.getParameter("userDefinedColour"));
+ ((UserColourScheme) globalColourScheme).parseAppletParameter(applet
+ .getParameter("userDefinedColour"));
}
}
if (hconsensus == null)
if (!alignment.isNucleotide())
{
conservation = new AlignmentAnnotation("Conservation",
- "Conservation of total alignment less than " +
- ConsPercGaps + "% gaps",
- new Annotation[1], 0f,
- 11f,
+ "Conservation of total alignment less than " + ConsPercGaps
+ + "% gaps", new Annotation[1], 0f, 11f,
AlignmentAnnotation.BAR_GRAPH);
conservation.hasText = true;
conservation.autoCalculated = true;
{
quality = new AlignmentAnnotation("Quality",
"Alignment Quality based on Blosum62 scores",
- new Annotation[1],
- 0f,
- 11f,
- AlignmentAnnotation.BAR_GRAPH);
+ new Annotation[1], 0f, 11f, AlignmentAnnotation.BAR_GRAPH);
quality.hasText = true;
quality.autoCalculated = true;
}
consensus = new AlignmentAnnotation("Consensus", "PID",
- new Annotation[1], 0f, 100f,
- AlignmentAnnotation.BAR_GRAPH);
+ new Annotation[1], 0f, 100f, AlignmentAnnotation.BAR_GRAPH);
consensus.hasText = true;
consensus.autoCalculated = true;
return showSequenceFeatures;
}
- class ConservationThread
- extends Thread
+ class ConservationThread extends Thread
{
AlignmentPanel ap;
+
public ConservationThread(AlignmentPanel ap)
{
this.ap = ap;
ap.paintAlignment(false);
}
Thread.sleep(200);
- }
- catch (Exception ex)
+ } catch (Exception ex)
{
ex.printStackTrace();
}
}
Conservation cons = new jalview.analysis.Conservation("All",
- jalview.schemes.ResidueProperties.propHash, 3,
- alignment.getSequences(), 0, alWidth - 1);
+ jalview.schemes.ResidueProperties.propHash, 3, alignment
+ .getSequences(), 0, alWidth - 1);
cons.calculate();
cons.verdict(false, ConsPercGaps);
minB = 0f;
maxR = 1.0f - minR;
maxG = 0.9f - minG;
- maxB = 0f - minB; // scalable range for colouring both Conservation and Quality
+ maxB = 0f - minB; // scalable range for colouring both Conservation and
+ // Quality
float min = 0f;
float max = 11f;
float vprop = value - min;
vprop /= max;
- conservation.annotations[i] =
- new Annotation(String.valueOf(c),
- String.valueOf(value), ' ', value,
- new Color(minR + (maxR * vprop),
- minG + (maxG * vprop),
- minB + (maxB * vprop)));
+ conservation.annotations[i] = new Annotation(String.valueOf(c),
+ String.valueOf(value), ' ', value, new Color(minR
+ + (maxR * vprop), minG + (maxG * vprop), minB
+ + (maxB * vprop)));
// Quality calc
if (quality != null)
{
- value = ( (Double) cons.quality.elementAt(i)).floatValue();
+ value = ((Double) cons.quality.elementAt(i)).floatValue();
vprop = value - qmin;
vprop /= qmax;
- quality.annotations[i] = new Annotation(" ", String.valueOf(value),
- ' ',
- value,
- new Color(minR + (maxR * vprop),
- minG + (maxG * vprop),
- minB + (maxB * vprop)));
+ quality.annotations[i] = new Annotation(" ", String
+ .valueOf(value), ' ', value, new Color(minR
+ + (maxR * vprop), minG + (maxG * vprop), minB
+ + (maxB * vprop)));
}
}
- }
- catch (OutOfMemoryError error)
+ } catch (OutOfMemoryError error)
{
System.out.println("Out of memory calculating conservation!!");
conservation = null;
consensusThread.start();
}
- class ConsensusThread
- extends Thread
+ class ConsensusThread extends Thread
{
AlignmentPanel ap;
+
public ConsensusThread(AlignmentPanel ap)
{
this.ap = ap;
}
Thread.sleep(200);
- }
- catch (Exception ex)
+ } catch (Exception ex)
{
ex.printStackTrace();
}
consensus.annotations = new Annotation[aWidth];
hconsensus = new Hashtable[aWidth];
- AAFrequency.calculate(alignment.getSequencesArray(),
- 0,
- alignment.getWidth(),
- hconsensus);
+ AAFrequency.calculate(alignment.getSequencesArray(), 0, alignment
+ .getWidth(), hconsensus);
for (int i = 0; i < aWidth; i++)
{
float value = 0;
if (ignoreGapsInConsensusCalculation)
{
- value = ( (Float) hconsensus[i].get(AAFrequency.PID_NOGAPS)).
- floatValue();
+ value = ((Float) hconsensus[i].get(AAFrequency.PID_NOGAPS))
+ .floatValue();
}
else
{
- value = ( (Float) hconsensus[i].get(AAFrequency.PID_GAPS)).
- floatValue();
+ value = ((Float) hconsensus[i].get(AAFrequency.PID_GAPS))
+ .floatValue();
}
- String maxRes = hconsensus[i].get(AAFrequency.MAXRESIDUE).toString();
- String mouseOver = hconsensus[i].get(AAFrequency.MAXRESIDUE) + " ";
+ String maxRes = hconsensus[i].get(AAFrequency.MAXRESIDUE)
+ .toString();
+ String mouseOver = hconsensus[i].get(AAFrequency.MAXRESIDUE)
+ + " ";
if (maxRes.length() > 1)
{
maxRes = "+";
}
- mouseOver += ( (int) value + "%");
+ mouseOver += ((int) value + "%");
consensus.annotations[i] = new Annotation(maxRes, mouseOver, ' ',
- value);
+ value);
}
if (globalColourScheme != null)
globalColourScheme.setConsensus(hconsensus);
}
- }
- catch (OutOfMemoryError error)
+ } catch (OutOfMemoryError error)
{
alignment.deleteAnnotation(consensus);
}
/**
- * get the consensus sequence as displayed under the PID consensus annotation row.
+ * get the consensus sequence as displayed under the PID consensus annotation
+ * row.
+ *
* @return consensus sequence as a new sequence object
*/
/**
- * get the consensus sequence as displayed under the PID consensus annotation row.
+ * get the consensus sequence as displayed under the PID consensus annotation
+ * row.
+ *
* @return consensus sequence as a new sequence object
*/
public SequenceI getConsensusSeq()
}
}
SequenceI sq = new Sequence("Consensus", seqs.toString());
- sq.setDescription("Percentage Identity Consensus " +
- ( (ignoreGapsInConsensusCalculation) ? " without gaps" :
- ""));
+ sq.setDescription("Percentage Identity Consensus "
+ + ((ignoreGapsInConsensusCalculation) ? " without gaps" : ""));
return sq;
}
{
if (res > alignment.getWidth() - 1)
{
- // log.System.out.println(" Corrected res from " + res + " to maximum " + (alignment.getWidth()-1));
+ // log.System.out.println(" Corrected res from " + res + " to maximum " +
+ // (alignment.getWidth()-1));
res = alignment.getWidth() - 1;
}
if (res < 0)
}
java.awt.Frame nullFrame;
- protected FeatureSettings featureSettings=null;
+
+ protected FeatureSettings featureSettings = null;
+
public void setFont(Font f)
{
font = f;
if (globalColourScheme != null)
{
globalColourScheme.setThreshold(globalColourScheme.getThreshold(),
- ignoreGapsInConsensusCalculation);
+ ignoreGapsInConsensusCalculation);
}
}
/**
* Property change listener for changes in alignment
- *
- * @param listener DOCUMENT ME!
+ *
+ * @param listener
+ * DOCUMENT ME!
*/
public void addPropertyChangeListener(
- java.beans.PropertyChangeListener listener)
+ java.beans.PropertyChangeListener listener)
{
changeSupport.addPropertyChangeListener(listener);
}
/**
* DOCUMENT ME!
- *
- * @param listener DOCUMENT ME!
+ *
+ * @param listener
+ * DOCUMENT ME!
*/
public void removePropertyChangeListener(
- java.beans.PropertyChangeListener listener)
+ java.beans.PropertyChangeListener listener)
{
changeSupport.removePropertyChangeListener(listener);
}
/**
* Property change listener for changes in alignment
- *
- * @param prop DOCUMENT ME!
- * @param oldvalue DOCUMENT ME!
- * @param newvalue DOCUMENT ME!
+ *
+ * @param prop
+ * DOCUMENT ME!
+ * @param oldvalue
+ * DOCUMENT ME!
+ * @param newvalue
+ * DOCUMENT ME!
*/
- public void firePropertyChange(String prop, Object oldvalue, Object newvalue)
+ public void firePropertyChange(String prop, Object oldvalue,
+ Object newvalue)
{
changeSupport.firePropertyChange(prop, oldvalue, newvalue);
}
hiddenRepSequences.put(repSequence, sg);
- //Hide all sequences except the repSequence
+ // Hide all sequences except the repSequence
SequenceI[] seqs = new SequenceI[sSize - 1];
int index = 0;
for (int i = 0; i < sSize; i++)
public void hideAllSelectedSeqs()
{
- if (selectionGroup == null || selectionGroup.getSize()<1)
+ if (selectionGroup == null || selectionGroup.getSize() < 1)
{
return;
}
selectionGroup = new SequenceGroup();
selectionGroup.setEndRes(alignment.getWidth() - 1);
}
- Vector tmp = alignment.getHiddenSequences().showAll(hiddenRepSequences);
+ Vector tmp = alignment.getHiddenSequences().showAll(
+ hiddenRepSequences);
for (int t = 0; t < tmp.size(); t++)
{
- selectionGroup.addSequence(
- (SequenceI) tmp.elementAt(t), false
- );
+ selectionGroup.addSequence((SequenceI) tmp.elementAt(t), false);
}
firePropertyChange("alignment", null, alignment.getSequences());
hasHiddenRows = false;
public int adjustForHiddenSeqs(int alignmentIndex)
{
- return alignment.getHiddenSequences().adjustForHiddenSeqs(alignmentIndex);
+ return alignment.getHiddenSequences().adjustForHiddenSeqs(
+ alignmentIndex);
}
/**
- * This method returns the a new SequenceI [] with
- * the selection sequence and start and end points adjusted
+ * This method returns the a new SequenceI [] with the selection sequence and
+ * start and end points adjusted
+ *
* @return String[]
*/
public SequenceI[] getSelectionAsNewSequence()
}
/**
- * This method returns the visible alignment as text, as
- * seen on the GUI, ie if columns are hidden they will not
- * be returned in the result.
- * Use this for calculating trees, PCA, redundancy etc on views
- * which contain hidden columns.
+ * This method returns the visible alignment as text, as seen on the GUI, ie
+ * if columns are hidden they will not be returned in the result. Use this for
+ * calculating trees, PCA, redundancy etc on views which contain hidden
+ * columns.
+ *
* @return String[]
*/
- public jalview.datamodel.CigarArray getViewAsCigars(boolean
- selectedRegionOnly)
+ public jalview.datamodel.CigarArray getViewAsCigars(
+ boolean selectedRegionOnly)
{
CigarArray selection = null;
SequenceI[] seqs = null;
iSize = selectionGroup.getSize();
seqs = selectionGroup.getSequencesInOrder(alignment);
start = selectionGroup.getStartRes();
- end = selectionGroup.getEndRes(); // inclusive for start and end in SeqCigar constructor
+ end = selectionGroup.getEndRes(); // inclusive for start and end in
+ // SeqCigar constructor
}
else
{
}
/**
- * return a compact representation of the current alignment selection to
- * pass to an analysis function
- * @param selectedOnly boolean true to just return the selected view
+ * return a compact representation of the current alignment selection to pass
+ * to an analysis function
+ *
+ * @param selectedOnly
+ * boolean true to just return the selected view
* @return AlignmentView
*/
jalview.datamodel.AlignmentView getAlignmentView(boolean selectedOnly)
{
// JBPNote:
- // this is here because the AlignmentView constructor modifies the CigarArray
+ // this is here because the AlignmentView constructor modifies the
+ // CigarArray
// object. Refactoring of Cigar and alignment view representation should
// be done to remove redundancy.
CigarArray aligview = getViewAsCigars(selectedOnly);
if (aligview != null)
{
return new AlignmentView(aligview,
- (selectedOnly && selectionGroup != null) ?
- selectionGroup.getStartRes() : 0);
+ (selectedOnly && selectionGroup != null) ? selectionGroup
+ .getStartRes() : 0);
}
return null;
}
/**
- * This method returns the visible alignment as text, as
- * seen on the GUI, ie if columns are hidden they will not
- * be returned in the result.
- * Use this for calculating trees, PCA, redundancy etc on views
- * which contain hidden columns.
+ * This method returns the visible alignment as text, as seen on the GUI, ie
+ * if columns are hidden they will not be returned in the result. Use this for
+ * calculating trees, PCA, redundancy etc on views which contain hidden
+ * columns.
+ *
* @return String[]
*/
public String[] getViewAsString(boolean selectedRegionOnly)
updateConservation(ap);
}
- //Reset endRes of groups if beyond alignment width
+ // Reset endRes of groups if beyond alignment width
int alWidth = alignment.getWidth();
Vector groups = alignment.getGroups();
if (groups != null)
resetAllColourSchemes();
- //AW alignment.adjustSequenceAnnotations();
+ // AW alignment.adjustSequenceAnnotations();
}
void resetAllColourSchemes()
{
if (cs instanceof ClustalxColourScheme)
{
- ( (ClustalxColourScheme) cs).
- resetClustalX(alignment.getSequences(),
- alignment.getWidth());
+ ((ClustalxColourScheme) cs).resetClustalX(alignment.getSequences(),
+ alignment.getWidth());
}
cs.setConsensus(hconsensus);
{
Alignment al = (Alignment) alignment;
Conservation c = new Conservation("All",
- ResidueProperties.propHash, 3,
- al.getSequences(), 0,
- al.getWidth() - 1);
+ ResidueProperties.propHash, 3, al.getSequences(), 0, al
+ .getWidth() - 1);
c.calculate();
c.verdict(false, ConsPercGaps);
SequenceGroup sg = (SequenceGroup) alignment.getGroups().elementAt(s);
if (sg.cs != null && sg.cs instanceof ClustalxColourScheme)
{
- ( (ClustalxColourScheme) sg.cs).resetClustalX(
- sg.getSequences(hiddenRepSequences), sg.getWidth());
+ ((ClustalxColourScheme) sg.cs).resetClustalX(sg
+ .getSequences(hiddenRepSequences), sg.getWidth());
}
sg.recalcConservation();
}
}
+
boolean centreColumnLabels;
+
public boolean getCentreColumnLabels()
{
return centreColumnLabels;
public void updateSequenceIdColours()
{
Vector groups = alignment.getGroups();
- for (int ig=0,igSize=groups.size(); ig<igSize; ig++)
+ for (int ig = 0, igSize = groups.size(); ig < igSize; ig++)
{
SequenceGroup sg = (SequenceGroup) groups.elementAt(ig);
- if (sg.idColour!=null)
+ if (sg.idColour != null)
{
Vector sqs = sg.getSequences(hiddenRepSequences);
- for (int s=0,sSize=sqs.size();s<sSize;s++)
+ for (int s = 0, sSize = sqs.size(); s < sSize; s++)
{
this.setSequenceColour((SequenceI) sqs.elementAt(s), sg.idColour);
- }
+ }
}
}
}