Class TranslatedDistribution
- All Implemented Interfaces:
Serializable
,Distribution
,Changeable
getWeight
method returns the result of calling getWeight
on the underlying
distribution, having first translated the Symbol
parameter using
the supplied ReversibleTranslationTable
. All changes to the
underlying distribution are reflected by the TranslatedDistribution
.
The TranslatedDistribution
is not directly mutable: calling
setWeight
will result in a ChangeVetoException
.
However, a DistributionTrainer
may be registered for a
TranslatedDistribution
. Any counts received by this trainer
are untranslated then forwarded to the underlying distribution. It is
valid to add counts to both a TranslatedDistribution
and
its underlying distribution in a single training session, so
TranslatedDistribution
objects are useful for tying
parameters together when training Markov Models.
Example usage
Distribution d = DistributionFactory.DEFAULT.createDistribution(DNATools.getDNA()); d.setWeight(DNATools.a(), 0.7); d.setWeight(DNATools.c(), 0.1); d.setWeight(DNATools.g(), 0.1); d.setWeight(DNATools.t(), 0.1); Distribution complemented = new TranslatedDistribution( DNATools.complementTable(), d, DistributionFactory.DEFAULT ); System.out.println( "complemented.getWeight(DNATools.t()) = " + complemented.getWeight(DNATools.t()) ); // Should print 0.7
- Since:
- 1.1
- Author:
- Matthew Pocock, Thomas Down
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.biojava.bio.dist.Distribution
Distribution.NullModelForwarder
-
Field Summary
Fields inherited from interface org.biojava.bio.dist.Distribution
NULL_MODEL, WEIGHTS
-
Constructor Summary
ConstructorsConstructorDescriptionTranslatedDistribution
(ReversibleTranslationTable table, Distribution other, DistributionFactory distFact) Create a new TranslatedDistribution. -
Method Summary
Modifier and TypeMethodDescriptionThe alphabet from which this spectrum emits symbols.protected ChangeSupport
Called to retrieve the ChangeSupport for this object.Retrieve the null model Distribution that this Distribution recognizes.getTable()
Retrieve the translation table encapsulating the map from this emission spectrum to the underlying one.double
Return the probability that Symbol s is emitted by this spectrum.void
Register this distribution with a training context.Sample a symbol from this state's probability distribution.void
setNullModel
(Distribution dist) Set the null model Distribution that this Distribution recognizes.void
Set the probability or odds that Symbol s is emitted by this state.Methods inherited from class org.biojava.utils.AbstractChangeable
addChangeListener, addChangeListener, generateChangeSupport, hasListeners, hasListeners, isUnchanging, removeChangeListener, removeChangeListener
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.biojava.utils.Changeable
addChangeListener, addChangeListener, isUnchanging, removeChangeListener, removeChangeListener
-
Constructor Details
-
TranslatedDistribution
public TranslatedDistribution(ReversibleTranslationTable table, Distribution other, DistributionFactory distFact) throws IllegalAlphabetException Create a new TranslatedDistribution. Make these things via getDistribuiton.- Parameters:
table
- a ReversibleTranslationTable used to map the symbolsother
- the underlying ditributiondistFact
- a DistributionFactory used to create a delegate for stooring mapped weights- Throws:
IllegalAlphabetException
-
-
Method Details
-
getAlphabet
Description copied from interface:Distribution
The alphabet from which this spectrum emits symbols.- Specified by:
getAlphabet
in interfaceDistribution
- Returns:
- the Alphabet associated with this spectrum
-
getWeight
Description copied from interface:Distribution
Return the probability that Symbol s is emitted by this spectrum.
If the symbol is ambiguou, then it is the sum of the probability that each one of the matching symbols was emitted.
- Specified by:
getWeight
in interfaceDistribution
- Parameters:
sym
- the Symbol emitted- Returns:
- the probability of emitting that symbol
- Throws:
IllegalSymbolException
- if s is not from this state's alphabet
-
setWeight
Description copied from interface:Distribution
Set the probability or odds that Symbol s is emitted by this state.- Specified by:
setWeight
in interfaceDistribution
- Parameters:
sym
- the Symbol emittedweight
- the probability of emitting that symbol- Throws:
IllegalSymbolException
- if s is not from this state's alphabet, or if it is an ambiguity symbol and the implementation can't handle this caseChangeVetoException
- if this state does not allow weights to be tampered with, or if one of the listeners vetoed this change
-
sampleSymbol
Description copied from interface:Distribution
Sample a symbol from this state's probability distribution.- Specified by:
sampleSymbol
in interfaceDistribution
- Returns:
- the symbol sampled
-
getNullModel
Description copied from interface:Distribution
Retrieve the null model Distribution that this Distribution recognizes.- Specified by:
getNullModel
in interfaceDistribution
- Returns:
- the apropriate null model
-
setNullModel
Description copied from interface:Distribution
Set the null model Distribution that this Distribution recognizes.- Specified by:
setNullModel
in interfaceDistribution
- Parameters:
dist
- the new null model Distribution- Throws:
IllegalAlphabetException
- if the null model has the wrong alphabetChangeVetoException
- if this Distirbution doesn't support setting the null model, or if one of its listeners objects
-
getTable
Retrieve the translation table encapsulating the map from this emission spectrum to the underlying one.- Returns:
- a ReversibleTranslationtTable
-
registerWithTrainer
Description copied from interface:Distribution
Register this distribution with a training context.
This should be invoked from within dtc.addDistribution(). This method is responsible for constructing a suitable DistributionTrainer instance and registering it by calling dtc.registerDistributionTrainer(this, trainer). If the distribution is a view onto another distribution, it can force the other to be registered by calling dtc.addDistribution(other), and can then get on with registering it's own trainer.
- Specified by:
registerWithTrainer
in interfaceDistribution
- Parameters:
dtc
- the DistributionTrainerContext with witch to register a trainer
-
getChangeSupport
Description copied from class:AbstractChangeable
Called to retrieve the ChangeSupport for this object.Your implementation of this method should have the following structure:
It is usual for the forwarding listeners (someForwarder in this example) to be transient and lazily instantiated. Be sure to register invalid input: '&' unregister the forwarder in the code that does the ChangeEvent handling in setter methods.ChangeSupport cs = super.getChangeSupport(ct); if(someForwarder == null invalid input: '&'invalid input: '&' ct.isMatching(SomeInterface.SomeChangeType)) { someForwarder = new ChangeForwarder(... this.stateVariable.addChangeListener(someForwarder, VariableInterface.AChange); } return cs;
- Overrides:
getChangeSupport
in classAbstractChangeable
-