public Color textColour2 = Color.white;
- private boolean ignoreGapsInConsensusCalculation=true;
+ /**
+ * consensus calculation property
+ */
+ private boolean ignoreGapsInConsensus=true;
+ /**
+ * consensus calculation property
+ */
+ private boolean showSequenceLogo=false;
+
+ /**
+ * @return the includeAllConsSymbols
+ */
+ public boolean isShowSequenceLogo()
+ {
+ return showSequenceLogo;
+ }
+
/**
* Creates a new SequenceGroup object.
textColour2 = seqsel.textColour2;
thresholdTextColour = seqsel.thresholdTextColour;
width = seqsel.width;
- ignoreGapsInConsensusCalculation = seqsel.ignoreGapsInConsensusCalculation;
+ ignoreGapsInConsensus = seqsel.ignoreGapsInConsensus;
if (seqsel.conserve!=null)
{
recalcConservation(); // safer than
public void setName(String name)
{
groupName = name;
+ // TODO: URGENT: update dependent objects (annotation row)
}
public void setDescription(String desc)
}
/**
- * calculate residue conservation for group
+ * Max Gaps Threshold for performing a conservation calculation
+ * TODO: make this a configurable property - or global to an alignment view
+ */
+ private int consPercGaps=25;
+ /**
+ * calculate residue conservation for group - but only if necessary.
*/
public void recalcConservation()
{
try
{
- Hashtable cnsns[] = AAFrequency.calculate(sequences, startRes, endRes + 1);
+ Hashtable cnsns[] = AAFrequency.calculate(sequences, startRes, endRes + 1, showSequenceLogo);
if (consensus != null)
{
_updateConsensusRow(cnsns);
ResidueProperties.propHash, 3, sequences, startRes,
endRes + 1);
c.calculate();
- c.verdict(false, 25);
+ c.verdict(false, consPercGaps);
if (conservation!=null)
{
_updateConservationRow(c);
{
getConservation();
}
+ // update Labels
+ conservation.label = "Conservation for "+getName();
+ conservation.description = "Conservation for group "+getName()+" less than " + consPercGaps
+ + "% gaps";
// preserve width if already set
int aWidth = (conservation.annotations!=null) ? (endRes<conservation.annotations.length ? conservation.annotations.length : endRes+1) : endRes+1;
- c.completeAnnotations(conservation,null, aWidth);
+ conservation.annotations = null;
+ conservation.annotations = new Annotation[aWidth]; // should be alignment width
+ c.completeAnnotations(conservation,null, startRes, endRes+1);
}
-
+ public Hashtable[] consensusData = null;
private void _updateConsensusRow(Hashtable[] cnsns)
{
if (consensus==null)
{
getConsensus();
}
+ consensus.label = "Consensus for "+getName();
+ consensus.description = "Percent Identity";
+ consensusData = cnsns;
// preserve width if already set
int aWidth = (consensus.annotations!=null) ? (endRes<consensus.annotations.length ? consensus.annotations.length : endRes+1) : endRes+1;
consensus.annotations = null;
consensus.annotations = new Annotation[aWidth]; // should be alignment width
- AAFrequency.completeConsensus(consensus,cnsns,startRes,endRes,ignoreGapsInConsensusCalculation); // TODO: setting container for ignoreGapsInConsensusCalculation);
+ AAFrequency.completeConsensus(consensus,cnsns,startRes,endRes+1,ignoreGapsInConsensus, showSequenceLogo); // TODO: setting container for ignoreGapsInConsensusCalculation);
}
/**
- * DOCUMENT ME!
- *
- * @param s
- * DOCUMENT ME!
- * @param recalc
- * DOCUMENT ME!
+ * @param s sequence to either add or remove from group
+ * @param recalc flag passed to delete/addSequence to indicate if group properties should be recalculated
*/
public void addOrRemove(SequenceI s, boolean recalc)
{
this.showUnconserved = displayNonconserved;
}
AlignmentAnnotation consensus=null,conservation=null;
+
+ /**
+ * flag indicating if consensus histogram should be rendered
+ */
+ private boolean showConsensusHistogram;
+
+
/**
*
* @return automatically calculated consensus row
}
if (consensus==null)
{
- consensus = new AlignmentAnnotation("Consensus for "+getName(), "PID",
+ consensus = new AlignmentAnnotation("","",
new Annotation[1], 0f, 100f, AlignmentAnnotation.BAR_GRAPH);
- consensus.hasText = true;
- consensus.autoCalculated = true;
- consensus.groupRef = this;
}
+ consensus.hasText = true;
+ consensus.autoCalculated = true;
+ consensus.groupRef = this;
+ consensus.label = "Consensus for "+getName();
+ consensus.description = "Percent Identity";
return consensus;
}
/**
* @return autoCalculated annotation row
*/
public AlignmentAnnotation getConservationRow() {
- int ConsPercGaps = 25;
if (conservation == null) {
- conservation = new AlignmentAnnotation("Conservation",
- "Conservation of total alignment less than " + ConsPercGaps
- + "% gaps", new Annotation[1], 0f, 11f,
+ conservation = new AlignmentAnnotation("","", new Annotation[1], 0f, 11f,
AlignmentAnnotation.BAR_GRAPH);
+ }
+
conservation.hasText = true;
conservation.autoCalculated = true;
conservation.groupRef = this;
- }
-
+ conservation.label = "Conservation for "+getName();
+ conservation.description = "Conservation for group "+getName()+" less than " + consPercGaps
+ + "% gaps";
return conservation;
}
SequenceI sq = new Sequence("Group"+getName()+" Consensus", seqs.toString());
sq.setDescription("Percentage Identity Consensus "
- + ((ignoreGapsInConsensusCalculation) ? " without gaps" : ""));
+ + ((ignoreGapsInConsensus) ? " without gaps" : ""));
return sq;
}
public void setIgnoreGapsConsensus(boolean state)
{
- if (this.ignoreGapsInConsensusCalculation!=state && consensus!=null)
+ if (this.ignoreGapsInConsensus!=state && consensus!=null)
{
- ignoreGapsInConsensusCalculation = state;
+ ignoreGapsInConsensus = state;
recalcConservation();
}
- ignoreGapsInConsensusCalculation = state;
+ ignoreGapsInConsensus = state;
+ }
+ public boolean getIgnoreGapsConsensus()
+ {
+ return ignoreGapsInConsensus;
+ }
+ /**
+ * @param includeAllConsSymbols the includeAllConsSymbols to set
+ */
+ public void setIncludeAllConsSymbols(boolean includeAllConsSymbols)
+ {
+ if (this.showSequenceLogo!=includeAllConsSymbols && consensus!=null) {
+ this.showSequenceLogo = includeAllConsSymbols;
+ recalcConservation();
+ }
+ this.showSequenceLogo = includeAllConsSymbols;
+ }
+
+
+ /**
+ *
+ * @param showConsHist flag indicating if the consensus histogram for this group should be rendered
+ */
+ public void setShowConsensusHistogram(boolean showConsHist)
+ {
+
+ if (showConsensusHistogram!=showConsHist && consensus!=null) {
+ this.showConsensusHistogram = showConsHist;
+ recalcConservation();
+ }
+ this.showConsensusHistogram = showConsHist;
+ }
+ /**
+ * @return the showConsensusHistogram
+ */
+ public boolean isShowConsensusHistogram()
+ {
+ return showConsensusHistogram;
+ }
}
-}