X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2FSequenceGroup.java;h=39ee2cb7d71c089e8eb6b5f6e221463ba6e8bdc2;hb=refs%2Fheads%2Ffeatures%2Fhmmer_statistics;hp=463b909ad8ef1c96ba00c06f208f1e056548e25d;hpb=3b239d86dc3a1bf3aa07c0ad3d38aeca57b54ada;p=jalview.git diff --git a/src/jalview/datamodel/SequenceGroup.java b/src/jalview/datamodel/SequenceGroup.java index 463b909..39ee2cb 100755 --- a/src/jalview/datamodel/SequenceGroup.java +++ b/src/jalview/datamodel/SequenceGroup.java @@ -51,6 +51,8 @@ public class SequenceGroup implements AnnotatedCollectionI boolean colourText = false; + HiddenMarkovModel hmm; + /** * True if the group is defined as a group on the alignment, false if it is * just a selection. @@ -100,6 +102,8 @@ public class SequenceGroup implements AnnotatedCollectionI */ private boolean ignoreGapsInConsensus = true; + private boolean ignoreBelowBackground = true; + /** * consensus calculation property */ @@ -124,10 +128,18 @@ public class SequenceGroup implements AnnotatedCollectionI AlignmentAnnotation conservation = null; + AlignmentAnnotation informationContent = null; + private boolean showConsensusHistogram; private AnnotatedCollectionI context; + private boolean showHMMSequenceLogo; + + private boolean normaliseHMMSequenceLogo; + + private boolean showInformationHistogram; + /** * Creates a new SequenceGroup object. */ @@ -199,6 +211,9 @@ public class SequenceGroup implements AnnotatedCollectionI 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; @@ -207,6 +222,7 @@ public class SequenceGroup implements AnnotatedCollectionI thresholdTextColour = seqsel.thresholdTextColour; width = seqsel.width; ignoreGapsInConsensus = seqsel.ignoreGapsInConsensus; + ignoreBelowBackground = seqsel.ignoreBelowBackground; if (seqsel.conserve != null) { recalcConservation(); // safer than @@ -548,7 +564,8 @@ public class SequenceGroup implements AnnotatedCollectionI */ public boolean recalcConservation(boolean defer) { - if (cs == null && consensus == null && conservation == null) + if (cs == null && consensus == null && conservation == null + && informationContent == null) { return false; } @@ -559,6 +576,12 @@ public class SequenceGroup implements AnnotatedCollectionI { ProfilesI cnsns = AAFrequency.calculate(sequences, startRes, endRes + 1, showSequenceLogo); + if (informationContent != null) + { + // _updateInformationRow(cnsns, sequences.size()); TODO don't know what + // to do here + upd = true; + } if (consensus != null) { _updateConsensusRow(cnsns, sequences.size()); @@ -654,6 +677,30 @@ public class SequenceGroup implements AnnotatedCollectionI // ignoreGapsInConsensusCalculation); } + private void _updateInformationRow(ProfilesI cnsns, long nseq) + { + 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 + 1, + ignoreGapsInConsensus, showSequenceLogo, nseq); // TODO: setting + // container + // for + // ignoreGapsInConsensusCalculation); + } + /** * @param s * sequence to either add or remove from group @@ -1187,6 +1234,20 @@ public class SequenceGroup implements AnnotatedCollectionI 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 @@ -1457,4 +1518,44 @@ public class SequenceGroup implements AnnotatedCollectionI { return (startRes <= apos && endRes >= apos) && sequences.contains(seq); } + + public boolean isShowInformationHistogram() + { + return showInformationHistogram; + } + + public void setShowInformationHistogram(boolean state) + { + if (showInformationHistogram != state && informationContent != 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; + } + }