/*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.6)
- * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7)
+ * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle
*
* This file is part of Jalview.
*
/** DOCUMENT ME!! */
public Hashtable[] hconsensus;
-
+
public Hashtable[] hStrucConsensus;
-
+
AlignmentAnnotation consensus;
-
+
AlignmentAnnotation strucConsensus;
AlignmentAnnotation conservation;
AlignmentAnnotation[] groupConservation;
boolean autoCalculateConsensus = true;
-
- boolean autoCalculateStrucConsensus = true;
+ boolean autoCalculateStrucConsensus = true;
/** DOCUMENT ME!! */
public int ConsPercGaps = 25; // JBPNote : This should be a scalable property!
showConsensusHistogram = Cache.getDefault("SHOW_CONSENSUS_HISTOGRAM",
true);
showSequenceLogo = Cache.getDefault("SHOW_CONSENSUS_LOGO", false);
+ normaliseSequenceLogo = Cache.getDefault("NORMALISE_CONSENSUS_LOGO", false);
showGroupConsensus = Cache.getDefault("SHOW_GROUP_CONSENSUS", false);
// TODO: add menu option action that nulls or creates consensus object
// depending on if the user wants to see the annotation or not in a
new Annotation[1], 0f, 100f, AlignmentAnnotation.BAR_GRAPH);
consensus.hasText = true;
consensus.autoCalculated = true;
-
- //TODO check if this can done accordingly
- strucConsensus = new AlignmentAnnotation("StrucConsensus", "PID",
- new Annotation[1], 0f, 100f, AlignmentAnnotation.BAR_GRAPH);
- strucConsensus.hasText = true;
- strucConsensus.autoCalculated = true;
+ if (alignment.isNucleotide() && alignment.hasRNAStructure())
+ {
+ strucConsensus = new AlignmentAnnotation("StrucConsensus", "PID",
+ new Annotation[1], 0f, 100f, AlignmentAnnotation.BAR_GRAPH);
+ strucConsensus.hasText = true;
+ strucConsensus.autoCalculated = true;
+ }
+
if (Cache.getDefault("SHOW_IDENTITY", true))
{
alignment.addAnnotation(consensus);
- //TODO: Make own if for structure
- alignment.addAnnotation(strucConsensus);
+ // TODO: Make own if for structure
+ if (alignment.isNucleotide() && alignment.hasRNAStructure())
+ {
+ alignment.addAnnotation(strucConsensus);
+ }
}
-
+
}
if (jalview.bin.Cache.getProperty("DEFAULT_COLOUR") != null)
ConservationThread conservationThread;
ConsensusThread consensusThread;
-
+
StrucConsensusThread strucConsensusThread;
boolean consUpdateNeeded = false;
static boolean UPDATING_CONSENSUS = false;
-
+
static boolean UPDATING_STRUC_CONSENSUS = false;
static boolean UPDATING_CONSERVATION = false;
boolean updatingConsensus = false;
-
+
boolean updatingStrucConsensus = false;
boolean updatingConservation = false;
consensus.annotations = new Annotation[aWidth];
hconsensus = new Hashtable[aWidth];
- AAFrequency.calculate(alignment.getSequencesArray(), 0,
- alignment.getWidth(), hconsensus, true);
+ AAFrequency.calculate(alignment.getSequencesArray(), 0, alignment
+ .getWidth(), hconsensus, true);
updateAnnotation(true);
if (globalColourScheme != null)
{
}
}
}
-
- //--------START Structure Conservation
+
+ // --------START Structure Conservation
public void updateStrucConsensus(final AlignmentPanel ap)
{
- // see note in mantis : issue number 8585
+ // see note in mantis : issue number 8585
if (strucConsensus == null || !autoCalculateStrucConsensus)
{
return;
public void run()
{
- updatingStrucConsensus = true;
+ updatingStrucConsensus = true;
while (UPDATING_STRUC_CONSENSUS)
{
try
strucConsensus.annotations = new Annotation[aWidth];
hStrucConsensus = new Hashtable[aWidth];
-
- AlignmentAnnotation[] aa = ap.av.getAlignment().getAlignmentAnnotation();
- AlignmentAnnotation rnaStruc = null;
- for(int i=0; i<aa.length;i++){
- if(aa[i].getRNAStruc() != null){
- rnaStruc=aa[i];
- break;
- }
- }
-
- AlignmentAnnotation rna = ap.av.getAlignment().getAlignmentAnnotation()[0];
+
+ AlignmentAnnotation[] aa = ap.av.getAlignment()
+ .getAlignmentAnnotation();
+ AlignmentAnnotation rnaStruc = null;
+ for (int i = 0; i < aa.length; i++)
+ {
+ if (aa[i].getRNAStruc() != null)
+ {
+ rnaStruc = aa[i];
+ break;
+ }
+ }
+
+ AlignmentAnnotation rna = ap.av.getAlignment()
+ .getAlignmentAnnotation()[0];
StructureFrequency.calculate(alignment.getSequencesArray(), 0,
alignment.getWidth(), hStrucConsensus, true, rnaStruc);
- //TODO AlignmentAnnotation rnaStruc!!!
+ // TODO AlignmentAnnotation rnaStruc!!!
updateAnnotation(true);
if (globalColourScheme != null)
{
// it will either return or wait until one calculation is finished.
if (immediate
|| (!updatingStrucConsensus && strucConsensus != null && hStrucConsensus != null))
- {
- StructureFrequency.completeConsensus(strucConsensus, hStrucConsensus, 0,
- hStrucConsensus.length, false,
+ {
+ StructureFrequency.completeConsensus(strucConsensus,
+ hStrucConsensus, 0, hStrucConsensus.length, false,
showSequenceLogo);
}
}
}
- //--------END Structure Conservation
+
+ // --------END Structure Conservation
/**
* get the consensus sequence as displayed under the PID consensus annotation
/**
* Set the selection group for this window.
*
- * @param sg - group holding references to sequences in this alignment view
- *
+ * @param sg
+ * - group holding references to sequences in this alignment view
+ *
*/
public void setSelectionGroup(SequenceGroup sg)
{
/**
* GUI state
+ *
* @return true if conservation based shading is enabled
*/
public boolean getConservationSelected()
/**
* GUI state
+ *
* @param b
* enable conservation based shading
*/
/**
* GUI state
+ *
* @return true if percent identity threshold is applied to shading
*/
public boolean getAbovePIDThreshold()
* GUI state
*
*
- * @param b indicate if percent identity threshold is applied to shading
+ * @param b
+ * indicate if percent identity threshold is applied to shading
*/
public void setAbovePIDThreshold(boolean b)
{
{
if (alignment != null && alignment.getCodonFrames() != null)
{
- StructureSelectionManager.getStructureSelectionManager(Desktop.instance)
- .removeMappings(alignment.getCodonFrames());
+ StructureSelectionManager.getStructureSelectionManager(
+ Desktop.instance).removeMappings(alignment.getCodonFrames());
}
this.alignment = align;
if (alignment.getCodonFrames() != null)
{
- StructureSelectionManager.getStructureSelectionManager(Desktop.instance).addMappings(
- alignment.getCodonFrames());
+ StructureSelectionManager.getStructureSelectionManager(
+ Desktop.instance).addMappings(alignment.getCodonFrames());
}
}
public jalview.datamodel.CigarArray getViewAsCigars(
boolean selectedRegionOnly)
{
- return new jalview.datamodel.CigarArray(alignment, (hasHiddenColumns ? colSel : null), (selectedRegionOnly ? selectionGroup : null));
+ return new jalview.datamodel.CigarArray(alignment,
+ (hasHiddenColumns ? colSel : null),
+ (selectedRegionOnly ? selectionGroup : null));
}
/**
* boolean true to just return the selected view
* @return AlignmentView
*/
- public jalview.datamodel.AlignmentView getAlignmentView(boolean selectedOnly)
+ public jalview.datamodel.AlignmentView getAlignmentView(
+ boolean selectedOnly)
{
return getAlignmentView(selectedOnly, false);
}
-
+
/**
* 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
* @param markGroups
- * boolean true to annotate the alignment view with groups on the alignment (and intersecting with selected region if selectedOnly is true)
+ * boolean true to annotate the alignment view with groups on the
+ * alignment (and intersecting with selected region if selectedOnly
+ * is true)
* @return AlignmentView
*/
- public jalview.datamodel.AlignmentView getAlignmentView(boolean selectedOnly, boolean markGroups)
+ public jalview.datamodel.AlignmentView getAlignmentView(
+ boolean selectedOnly, boolean markGroups)
{
- return new AlignmentView(alignment, colSel, selectionGroup, hasHiddenColumns, selectedOnly, markGroups);
+ return new AlignmentView(alignment, colSel, selectionGroup,
+ hasHiddenColumns, selectedOnly, markGroups);
}
/**
{
updateConsensus(ap);
}
- if(autoCalculateStrucConsensus)
+ if (autoCalculateStrucConsensus)
{
- updateStrucConsensus(ap);
+ updateStrucConsensus(ap);
}
// Reset endRes of groups if beyond alignment width
{
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();
}
/**
* checks current SelectionGroup against record of last hash value, and
* updates record.
- * @param b update the record of last hash value
+ *
+ * @param b
+ * update the record of last hash value
*
* @return true if SelectionGroup changed since last call (when b is true)
*/
boolean isSelectionGroupChanged(boolean b)
{
- int hc = (selectionGroup == null || selectionGroup.getSize()==0) ? -1 : selectionGroup.hashCode();
- if (hc!=-1 && hc != sgrouphash)
+ int hc = (selectionGroup == null || selectionGroup.getSize() == 0) ? -1
+ : selectionGroup.hashCode();
+ if (hc != -1 && hc != sgrouphash)
{
- if (b) {sgrouphash = hc;}
+ if (b)
+ {
+ sgrouphash = hc;
+ }
return true;
}
return false;
}
/**
- * checks current colsel against record of last hash value, and optionally updates
- * record.
-
- * @param b update the record of last hash value
+ * checks current colsel against record of last hash value, and optionally
+ * updates record.
+ *
+ * @param b
+ * update the record of last hash value
* @return true if colsel changed since last call (when b is true)
*/
boolean isColSelChanged(boolean b)
{
- int hc = (colSel == null || colSel.size()==0) ? -1 : colSel.hashCode();
- if (hc!=-1 && hc != colselhash)
+ int hc = (colSel == null || colSel.size() == 0) ? -1 : colSel
+ .hashCode();
+ if (hc != -1 && hc != colselhash)
{
- if (b) {colselhash = hc;}
+ if (b)
+ {
+ colselhash = hc;
+ }
return true;
}
return false;
* should consensus profile be rendered by default
*/
public boolean showSequenceLogo = false;
-
+ /**
+ * should consensus profile be rendered normalised to row height
+ */
+ public boolean normaliseSequenceLogo = false;
/**
* should consensus histograms be rendered by default
*/
public StructureSelectionManager getStructureSelectionManager()
{
- return StructureSelectionManager.getStructureSelectionManager(Desktop.instance);
+ return StructureSelectionManager
+ .getStructureSelectionManager(Desktop.instance);
}
/**
*
* @param pdbEntries
- * @return a series of SequenceI arrays, one for each PDBEntry, listing which sequence in the alignment holds a reference to it
+ * @return a series of SequenceI arrays, one for each PDBEntry, listing which
+ * sequence in the alignment holds a reference to it
*/
public SequenceI[][] collateForPDB(PDBEntry[] pdbEntries)
{
ArrayList<SequenceI[]> seqvectors = new ArrayList<SequenceI[]>();
- for (PDBEntry pdb: pdbEntries) {
- ArrayList<SequenceI> seqs = new ArrayList<SequenceI>();
- for (int i = 0; i < alignment.getHeight(); i++)
- {
- Vector pdbs = alignment.getSequenceAt(i)
- .getDatasetSequence().getPDBId();
- if (pdbs == null)
- continue;
- SequenceI sq;
- for (int p = 0; p < pdbs.size(); p++)
+ for (PDBEntry pdb : pdbEntries)
+ {
+ ArrayList<SequenceI> seqs = new ArrayList<SequenceI>();
+ for (int i = 0; i < alignment.getHeight(); i++)
{
- PDBEntry p1 = (PDBEntry) pdbs.elementAt(p);
- if (p1.getId().equals(pdb.getId()))
+ Vector pdbs = alignment.getSequenceAt(i).getDatasetSequence()
+ .getPDBId();
+ if (pdbs == null)
+ continue;
+ SequenceI sq;
+ for (int p = 0; p < pdbs.size(); p++)
{
- if (!seqs.contains(sq=alignment.getSequenceAt(i)))
- seqs.add(sq);
+ PDBEntry p1 = (PDBEntry) pdbs.elementAt(p);
+ if (p1.getId().equals(pdb.getId()))
+ {
+ if (!seqs.contains(sq = alignment.getSequenceAt(i)))
+ seqs.add(sq);
- continue;
+ continue;
+ }
}
}
- }
- seqvectors.add(seqs.toArray(new SequenceI[seqs.size()]));
+ seqvectors.add(seqs.toArray(new SequenceI[seqs.size()]));
}
return seqvectors.toArray(new SequenceI[seqvectors.size()][]);
}
+
+
+ public boolean isNormaliseSequenceLogo()
+ {
+ return normaliseSequenceLogo;
+ }
+
+ public void setNormaliseSequenceLogo(boolean state)
+ {
+ normaliseSequenceLogo = state;
+ }
}