|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.biojava.utils.AbstractChangeable
org.biojava.bio.dist.TranslatedDistribution
public class TranslatedDistribution
A translated view of some underlying distribution. The 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.
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
| 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 | |
|---|---|
TranslatedDistribution(ReversibleTranslationTable table,
Distribution other,
DistributionFactory distFact)
Create a new TranslatedDistribution. |
|
| Method Summary | |
|---|---|
Alphabet |
getAlphabet()
The alphabet from which this spectrum emits symbols. |
protected ChangeSupport |
getChangeSupport(ChangeType ct)
Called to retrieve the ChangeSupport for this object. |
Distribution |
getNullModel()
Retrieve the null model Distribution that this Distribution recognizes. |
ReversibleTranslationTable |
getTable()
Retrieve the translation table encapsulating the map from this emission spectrum to the underlying one. |
double |
getWeight(Symbol sym)
Return the probability that Symbol s is emitted by this spectrum. |
void |
registerWithTrainer(DistributionTrainerContext dtc)
Register this distribution with a training context. |
Symbol |
sampleSymbol()
Sample a symbol from this state's probability distribution. |
void |
setNullModel(Distribution dist)
Set the null model Distribution that this Distribution recognizes. |
void |
setWeight(Symbol sym,
double weight)
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 Detail |
|---|
public TranslatedDistribution(ReversibleTranslationTable table,
Distribution other,
DistributionFactory distFact)
throws IllegalAlphabetException
table - a ReversibleTranslationTable used to map the symbolsother - the underlying ditributiondistFact - a DistributionFactory used to create a delegate for
stooring mapped weights
IllegalAlphabetException| Method Detail |
|---|
public Alphabet getAlphabet()
Distribution
getAlphabet in interface Distribution
public double getWeight(Symbol sym)
throws IllegalSymbolException
DistributionReturn 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.
getWeight in interface Distributionsym - the Symbol emitted
IllegalSymbolException - if s is not from this state's alphabet
public void setWeight(Symbol sym,
double weight)
throws IllegalSymbolException,
ChangeVetoException
Distribution
setWeight in interface Distributionsym - the Symbol emittedweight - the probability of emitting that symbol
IllegalSymbolException - if s is not from this state's alphabet, or
if it is an ambiguity symbol and the implementation can't handle
this case
ChangeVetoException - if this state does not allow weights
to be tampered with, or if one of the listeners vetoed this changepublic Symbol sampleSymbol()
Distribution
sampleSymbol in interface Distributionpublic Distribution getNullModel()
Distribution
getNullModel in interface Distribution
public void setNullModel(Distribution dist)
throws IllegalAlphabetException,
ChangeVetoException
Distribution
setNullModel in interface Distributiondist - the new null model Distribution
IllegalAlphabetException - if the null model has the wrong alphabet
ChangeVetoException - if this Distirbution doesn't support setting
the null model, or if one of its listeners objectspublic ReversibleTranslationTable getTable()
public void registerWithTrainer(DistributionTrainerContext dtc)
DistributionRegister 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.
registerWithTrainer in interface Distributiondtc - the DistributionTrainerContext with witch to register a trainerprotected ChangeSupport getChangeSupport(ChangeType ct)
AbstractChangeable
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 & unregister the
forwarder in the code that does the ChangeEvent handling in setter methods.
ChangeSupport cs = super.getChangeSupport(ct);
if(someForwarder == null && ct.isMatching(SomeInterface.SomeChangeType)) {
someForwarder = new ChangeForwarder(...
this.stateVariable.addChangeListener(someForwarder, VariableInterface.AChange);
}
return cs;
getChangeSupport in class AbstractChangeable
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||