*/
private boolean ignoreGapsInConsensus = true;
+ private boolean ignoreBelowBackground = true;
+
/**
* consensus calculation property
*/
AlignmentAnnotation conservation = null;
+ AlignmentAnnotation information = null;
+
private boolean showConsensusHistogram;
private AnnotatedCollectionI context;
+ private boolean showHMMSequenceLogo;
+
+ private boolean normaliseHMMSequenceLogo;
+
+ private boolean showInformationHistogram;
+
/**
* Creates a new SequenceGroup object.
*/
showSequenceLogo = seqsel.showSequenceLogo;
normaliseSequenceLogo = seqsel.normaliseSequenceLogo;
showConsensusHistogram = seqsel.showConsensusHistogram;
+ showHMMSequenceLogo = seqsel.showHMMSequenceLogo;
+ normaliseHMMSequenceLogo = seqsel.normaliseHMMSequenceLogo;
+ showInformationHistogram = seqsel.showInformationHistogram;
idColour = seqsel.idColour;
outlineColour = seqsel.outlineColour;
seqrep = seqsel.seqrep;
thresholdTextColour = seqsel.thresholdTextColour;
width = seqsel.width;
ignoreGapsInConsensus = seqsel.ignoreGapsInConsensus;
+ ignoreBelowBackground = seqsel.ignoreBelowBackground;
if (seqsel.conserve != null)
{
recalcConservation(); // safer than
*/
public boolean recalcConservation(boolean defer)
{
- if (cs == null && consensus == null && conservation == null)
+ if (cs == null && consensus == null && conservation == null
+ && information == null)
{
return false;
}
{
ProfilesI cnsns = AAFrequency.calculate(sequences, startRes,
endRes + 1, showSequenceLogo);
+ if (information != null)
+ {
+ HiddenMarkovModel hmm = information.sequenceRef.getHMM();
+
+ ProfilesI info = AAFrequency.calculateHMMProfiles(hmm,
+ (endRes + 1) - startRes, startRes, endRes + 1,
+ showHMMSequenceLogo, ignoreBelowBackground);
+ _updateInformationRow(info, sequences.size());
+ upd = true;
+ }
if (consensus != null)
{
_updateConsensusRow(cnsns, sequences.size());
public ProfilesI consensusData = null;
+ public ProfilesI informationData = null;
+
private void _updateConsensusRow(ProfilesI cnsns, long nseq)
{
if (consensus == null)
}
/**
+ * Recalculates the information content on the HMM annotation.
+ *
+ * @param cnsns
+ * @param nseq
+ */
+ private void _updateInformationRow(ProfilesI cnsns, long nseq)
+ {
+ if (information == null)
+ {
+ getInformation();
+ }
+ information.label = "Information for " + getName();
+ information.description = "Percent Identity";
+ informationData = cnsns;
+ // preserve width if already set
+ int aWidth = (information.annotations != null)
+ ? (endRes < information.annotations.length
+ ? information.annotations.length : endRes + 1)
+ : endRes + 1;
+ information.annotations = null;
+ information.annotations = new Annotation[aWidth]; // should be alignment
+ // width
+
+ AAFrequency.completeInformation(information, cnsns, startRes,
+ endRes + 1, ignoreBelowBackground, showSequenceLogo, nseq); // TODO:
+ // setting
+ // container
+ // for
+ // ignoreGapsInInformationCalculation);
+ }
+
+ /**
* @param s
* sequence to either add or remove from group
* @param recalc
}
/**
+ *
+ * @return information content annotation.
+ */
+ public AlignmentAnnotation getInformation()
+ {
+ // TODO get or calculate and get information annotation row for this group
+ int aWidth = this.getWidth();
+ // pointer
+ // possibility
+ // here.
+ if (aWidth < 0)
+ {
+ return null;
+ }
+ if (information == null)
+ {
+ information = new AlignmentAnnotation("", "", new Annotation[1], 0f,
+ 6.25f, AlignmentAnnotation.BAR_GRAPH);
+ information.hasText = true;
+ information.autoCalculated = false;
+ information.groupRef = this;
+ information.label = getName() + "_HMM";
+ information.description = "Information content, measured in bits";
+ }
+ return information;
+ }
+
+ /**
* set this alignmentAnnotation object as the one used to render consensus
* annotation
*
return ignoreGapsInConsensus;
}
+ public void setIgnoreBelowBackground(boolean state)
+ {
+ if (this.ignoreBelowBackground != state)
+ {
+ ignoreBelowBackground = state;
+ }
+ ignoreBelowBackground = state;
+ }
+
+ public boolean getIgnoreBelowBackground()
+ {
+ return true;
+ }
+
/**
* @param showSequenceLogo
* indicates if a sequence logo is shown for consensus annotation
{
return (startRes <= apos && endRes >= apos) && sequences.contains(seq);
}
+
+ public boolean isShowInformationHistogram()
+ {
+ return showInformationHistogram;
+ }
+
+ public void setShowInformationHistogram(boolean state)
+ {
+ if (showInformationHistogram != state && information != null)
+ {
+ this.showInformationHistogram = state;
+ // recalcConservation(); TODO don't know what to do here next
+ }
+ this.showInformationHistogram = state;
+
+ }
+
+ public boolean isShowHMMSequenceLogo()
+ {
+ // TODO Auto-generated method stub
+ return showHMMSequenceLogo;
+ }
+
+ public void setshowHMMSequenceLogo(boolean state)
+ {
+ showHMMSequenceLogo = state;
+
+ }
+
+ public boolean isNormaliseHMMSequenceLogo()
+ {
+ // TODO Auto-generated method stub
+ return normaliseHMMSequenceLogo;
+ }
+
+ public void setNormaliseHMMSequenceLogo(boolean state)
+ {
+ normaliseSequenceLogo = state;
+ }
+
}