|
||||||||||
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.AbstractDistribution
public abstract class AbstractDistribution
An abstract implementation of Distribution.
You will need to override getWeight()
for a simple
implementation. You may also wish to override the other methods if the
default implementation is not suitable.
The registerWithTrainer
method registers
an IgnoreCountsTrainer
. To make an AbstractDistribution
subclass trainable, this method must be overridden.
Nested Class Summary |
---|
Nested classes/interfaces inherited from interface org.biojava.bio.dist.Distribution |
---|
Distribution.NullModelForwarder |
Field Summary | |
---|---|
protected ChangeForwarder |
nullModelForwarder
Forwarder for modifications to the null model. |
Fields inherited from interface org.biojava.bio.dist.Distribution |
---|
NULL_MODEL, WEIGHTS |
Constructor Summary | |
---|---|
AbstractDistribution()
|
Method Summary | |
---|---|
boolean |
equals(Object o)
|
protected ChangeSupport |
getChangeSupport(ChangeType ct)
Called to retrieve the ChangeSupport for this object. |
double |
getWeight(Symbol sym)
Retrieve the weight for this distribution. |
protected abstract double |
getWeightImpl(AtomicSymbol sym)
Override this method to implement getting the weight for an atomic symbol. |
int |
hashCode()
|
void |
registerWithTrainer(DistributionTrainerContext dtc)
Register an IgnoreCountsTrainer instance as the trainer for this distribution. |
Symbol |
sampleSymbol()
Sample a symbol from this state's probability distribution. |
void |
setNullModel(Distribution nullModel)
Set the null model Distribution that this Distribution recognizes. |
protected abstract void |
setNullModelImpl(Distribution nullModel)
Implement this to set the null model. |
void |
setWeight(Symbol sym,
double weight)
Set the weight of a given symbol in this distribution. |
protected abstract void |
setWeightImpl(AtomicSymbol sym,
double weight)
Implement this to actually set the weight. |
Methods inherited from class org.biojava.utils.AbstractChangeable |
---|
addChangeListener, addChangeListener, generateChangeSupport, hasListeners, hasListeners, isUnchanging, removeChangeListener, removeChangeListener |
Methods inherited from class java.lang.Object |
---|
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface org.biojava.bio.dist.Distribution |
---|
getAlphabet, getNullModel |
Methods inherited from interface org.biojava.utils.Changeable |
---|
addChangeListener, addChangeListener, isUnchanging, removeChangeListener, removeChangeListener |
Field Detail |
---|
protected transient ChangeForwarder nullModelForwarder
Constructor Detail |
---|
public AbstractDistribution()
Method Detail |
---|
protected 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
protected abstract void setWeightImpl(AtomicSymbol sym, double weight) throws IllegalSymbolException, ChangeVetoException
Do not inform any listeners. This has already been done for you. Just update state.
sym
- the AtomicSymbol to update forweight
- the new weight for that symbol
IllegalSymbolException
- if the symbol is not known
ChangeVetoException
- if the change is to be preventedpublic final void setWeight(Symbol sym, double weight) throws IllegalSymbolException, ChangeVetoException
This implementation informs all listeners of the change, and then calls setWeightImpl to make the actual change. Sub-classes should over-ride setWeightImpl to implement the actual storage of the weights.
setWeight
in interface Distribution
sym
- the Symbol to set the weight forweight
- it's new weight
IllegalSymbolException
- if sym is not known
ChangeVetoException
- if the update was preventedprotected abstract void setNullModelImpl(Distribution nullModel) throws IllegalAlphabetException, ChangeVetoException
You should not inform any change listeners in this method. All of that work has been done for you.
nullModel
- the new null model Distribution
IllegalAlphabetException
- if the null model is for the wrong alphabet
ChangeVetoException
- if your implementation wishes to block this
opperationpublic final void setNullModel(Distribution nullModel) throws IllegalAlphabetException, ChangeVetoException
Distribution
setNullModel
in interface Distribution
nullModel
- 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 final double getWeight(Symbol sym) throws IllegalSymbolException
Performs the standard munge to handle ambiguity symbols. The actual weights for each atomic symbol should be calculated by the getWeightImpl functions.
getWeight
in interface Distribution
sym
- the Symbol to find the probability of
IllegalSymbolException
- if for any reason the symbols within amb
are not recognized by this stateprotected abstract double getWeightImpl(AtomicSymbol sym) throws IllegalSymbolException
sym
- the AtomicSymbol to get the weight for
IllegalSymbolException
- if sym is not knownpublic Symbol sampleSymbol()
Distribution
sampleSymbol
in interface Distribution
public void registerWithTrainer(DistributionTrainerContext dtc)
registerWithTrainer
in interface Distribution
dtc
- the context to register withpublic int hashCode()
hashCode
in class Object
public boolean equals(Object o)
equals
in class Object
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |