de.jstacs.scoringFunctions.mix.motifSearch
Class MixtureDuration

java.lang.Object
  extended by de.jstacs.scoringFunctions.AbstractNormalizableScoringFunction
      extended by de.jstacs.scoringFunctions.mix.motifSearch.PositionScoringFunction
          extended by de.jstacs.scoringFunctions.mix.motifSearch.DurationScoringFunction
              extended by de.jstacs.scoringFunctions.mix.motifSearch.MixtureDuration
All Implemented Interfaces:
NormalizableScoringFunction, ScoringFunction, Storable, Cloneable

public class MixtureDuration
extends DurationScoringFunction

This class implements a mixture of DurationScoringFunctions.

Author:
Jens Keilwagen

Field Summary
 
Fields inherited from class de.jstacs.scoringFunctions.mix.motifSearch.DurationScoringFunction
delta, ess, max, min
 
Fields inherited from class de.jstacs.scoringFunctions.mix.motifSearch.PositionScoringFunction
internal
 
Fields inherited from class de.jstacs.scoringFunctions.AbstractNormalizableScoringFunction
alphabets, length, r
 
Fields inherited from interface de.jstacs.scoringFunctions.ScoringFunction
UNKNOWN
 
Constructor Summary
MixtureDuration(int starts, DurationScoringFunction... function)
          The main constructor of a MixtureDuration.
MixtureDuration(StringBuffer source)
          This is the constructor for Storable.
 
Method Summary
 void addGradientOfLogPriorTerm(double[] grad, int start)
          This method computes the gradient of NormalizableScoringFunction.getLogPriorTerm() for each parameter of this model.
 void adjust(int[] length, double[] weight)
          This method adjust the parameter based on the given statistic.
 MixtureDuration clone()
          Creates a clone (deep copy) of the current ScoringFunction instance.
protected  void fromXML(StringBuffer rep)
          This method is called in the constructor for the Storable interface to create a scoring function from a StringBuffer.
 double[] getCurrentParameterValues()
          Returns a double array of dimension ScoringFunction.getNumberOfParameters() containing the current parameter values.
 String getInstanceName()
          Returns a short instance name.
 double getLogPriorTerm()
          This method computes a value that is proportional to NormalizableScoringFunction.getEss() * NormalizableScoringFunction.getLogNormalizationConstant() + Math.log( prior ) where prior is the prior for the parameters of this model.
 double getLogScore(int... values)
          This method enables the user to get the log-score without using a sequence object.
 double getLogScoreAndPartialDerivation(IntList indices, DoubleList partialDer, int... values)
          This method enables the user to get the log-score and the partial derivations without using a sequence object.
 int getNumberOfParameters()
          Returns the number of parameters in this ScoringFunction.
 int getNumberOfRecommendedStarts()
          This method returns the number of recommended optimization starts.
protected  String getRNotation(String distributionName)
          This method returns the distribution in R notation.
 void initializeFunction(int index, boolean freeParams, Sample[] data, double[][] weights)
          This method creates the underlying structure of the ScoringFunction.
 void initializeFunctionRandomly(boolean freeParams)
          This method initializes the ScoringFunction randomly.
 void initializeUniformly()
          This method set special parameters that lead to an uniform distribution.
 boolean isInitialized()
          This method can be used to determine whether the model is initialized.
 boolean isNormalized()
          This method indicates whether the implemented score is already normalized to 1 or not.
 void modify(int delta)
          This method modifies the underlying AlphabetContainer.
 void setParameters(double[] params, int start)
          This method sets the internal parameters to the values of params between start and start + ScoringFunction.getNumberOfParameters() - 1
 StringBuffer toXML()
          This method returns an XML representation as StringBuffer of an instance of the implementing class.
 
Methods inherited from class de.jstacs.scoringFunctions.mix.motifSearch.DurationScoringFunction
getEss, getLogNormalizationConstant, getLogPartialNormalizationConstant, getMax, getMin, getNumberOfPossibilities, getSizeOfEventSpaceForRandomVariablesOfParameter, isPossible, next, reset, toString
 
Methods inherited from class de.jstacs.scoringFunctions.mix.motifSearch.PositionScoringFunction
getInternalPosition, getLogScore, getLogScoreAndPartialDerivation, getLogScoreAndPartialDerivationForInternal, getLogScoreForInternal, getValuesFromSequence
 
Methods inherited from class de.jstacs.scoringFunctions.AbstractNormalizableScoringFunction
getAlphabetContainer, getInitialClassParam, getLength, getLogScore, getLogScoreAndPartialDerivation, getNumberOfStarts, isNormalized
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

MixtureDuration

public MixtureDuration(int starts,
                       DurationScoringFunction... function)
                throws WrongAlphabetException,
                       CloneNotSupportedException,
                       IllegalArgumentException
The main constructor of a MixtureDuration.

Parameters:
starts - the number of recommended starts
function - the DurationScoringFunctions for the components
Throws:
CloneNotSupportedException - if at least one element of functions could not be cloned
IllegalArgumentException - if the starts is smaller than zero (0)
WrongAlphabetException - if at least one element of function has an AlphabetContainer that is not equal to those of the other elements of function

MixtureDuration

public MixtureDuration(StringBuffer source)
                throws NonParsableException
This is the constructor for Storable. Creates a new MixtureDuration out of a StringBuffer.

Parameters:
source - the XML representation as StringBuffer
Throws:
NonParsableException - if the XML representation could not be parsed
Method Detail

clone

public MixtureDuration clone()
                      throws CloneNotSupportedException
Description copied from interface: ScoringFunction
Creates a clone (deep copy) of the current ScoringFunction instance.

Specified by:
clone in interface ScoringFunction
Overrides:
clone in class PositionScoringFunction
Returns:
the cloned instance of the current ScoringFunction
Throws:
CloneNotSupportedException - if something went wrong while cloning the ScoringFunction

adjust

public void adjust(int[] length,
                   double[] weight)
Description copied from class: DurationScoringFunction
This method adjust the parameter based on the given statistic.

Specified by:
adjust in class DurationScoringFunction
Parameters:
length - an array containing length values
weight - an array containing corresponding weight values

getLogScore

public double getLogScore(int... values)
Description copied from class: PositionScoringFunction
This method enables the user to get the log-score without using a sequence object.

Specified by:
getLogScore in class PositionScoringFunction
Parameters:
values - the values
Returns:
the score

getLogScoreAndPartialDerivation

public double getLogScoreAndPartialDerivation(IntList indices,
                                              DoubleList partialDer,
                                              int... values)
Description copied from class: PositionScoringFunction
This method enables the user to get the log-score and the partial derivations without using a sequence object.

Specified by:
getLogScoreAndPartialDerivation in class PositionScoringFunction
Parameters:
indices - a list for the indices of the parameters
partialDer - a list of the partial derivations
values - the values
Returns:
the score

addGradientOfLogPriorTerm

public void addGradientOfLogPriorTerm(double[] grad,
                                      int start)
                               throws Exception
Description copied from interface: NormalizableScoringFunction
This method computes the gradient of NormalizableScoringFunction.getLogPriorTerm() for each parameter of this model. The results are added to the array grad beginning at index start.

Parameters:
grad - the array of gradients
start - the start index in the grad array, where the partial derivations for the parameters of this models shall be entered
Throws:
Exception - if something went wrong with the computing of the gradients
See Also:
NormalizableScoringFunction.getLogPriorTerm()

getLogPriorTerm

public double getLogPriorTerm()
Description copied from interface: NormalizableScoringFunction
This method computes a value that is proportional to

NormalizableScoringFunction.getEss() * NormalizableScoringFunction.getLogNormalizationConstant() + Math.log( prior )

where prior is the prior for the parameters of this model.

Returns:
a value that is proportional to NormalizableScoringFunction.getEss() * NormalizableScoringFunction.getLogNormalizationConstant() + Math.log( prior ).
See Also:
NormalizableScoringFunction.getEss(), NormalizableScoringFunction.getLogNormalizationConstant()

getCurrentParameterValues

public double[] getCurrentParameterValues()
                                   throws Exception
Description copied from interface: ScoringFunction
Returns a double array of dimension ScoringFunction.getNumberOfParameters() containing the current parameter values. If one likes to use these parameters to start an optimization it is highly recommended to invoke ScoringFunction.initializeFunction(int, boolean, Sample[], double[][]) before. After an optimization this method can be used to get the current parameter values.

Returns:
the current parameter values
Throws:
Exception - if no parameters exist (yet)

getInstanceName

public String getInstanceName()
Description copied from interface: ScoringFunction
Returns a short instance name.

Returns:
a short instance name

getNumberOfParameters

public int getNumberOfParameters()
Description copied from interface: ScoringFunction
Returns the number of parameters in this ScoringFunction. If the number of parameters is not known yet, the method returns ScoringFunction.UNKNOWN.

Returns:
the number of parameters in this ScoringFunction
See Also:
ScoringFunction.UNKNOWN

initializeFunction

public void initializeFunction(int index,
                               boolean freeParams,
                               Sample[] data,
                               double[][] weights)
                        throws Exception
Description copied from interface: ScoringFunction
This method creates the underlying structure of the ScoringFunction.

Parameters:
index - the index of the class the ScoringFunction models
freeParams - indicates whether the (reduced) parameterization is used
data - the samples
weights - the weights of the sequences in the samples
Throws:
Exception - if something went wrong

initializeUniformly

public void initializeUniformly()
Description copied from class: DurationScoringFunction
This method set special parameters that lead to an uniform distribution.

Specified by:
initializeUniformly in class DurationScoringFunction

initializeFunctionRandomly

public void initializeFunctionRandomly(boolean freeParams)
                                throws Exception
Description copied from interface: ScoringFunction
This method initializes the ScoringFunction randomly. It has to create the underlying structure of the ScoringFunction.

Parameters:
freeParams - indicates whether the (reduced) parameterization is used
Throws:
Exception - if something went wrong

isInitialized

public boolean isInitialized()
Description copied from interface: ScoringFunction
This method can be used to determine whether the model is initialized. If the model is not initialized you should invoke the method ScoringFunction.initializeFunction(int, boolean, Sample[], double[][]).

Returns:
true if the model is initialized, false otherwise

isNormalized

public boolean isNormalized()
Description copied from interface: NormalizableScoringFunction
This method indicates whether the implemented score is already normalized to 1 or not. The standard implementation returns false.

Specified by:
isNormalized in interface NormalizableScoringFunction
Overrides:
isNormalized in class AbstractNormalizableScoringFunction
Returns:
true if the implemented score is already normalized to 1, false otherwise

setParameters

public void setParameters(double[] params,
                          int start)
Description copied from interface: ScoringFunction
This method sets the internal parameters to the values of params between start and start + ScoringFunction.getNumberOfParameters() - 1

Parameters:
params - the new parameters
start - the start index in params

getRNotation

protected String getRNotation(String distributionName)
Description copied from class: DurationScoringFunction
This method returns the distribution in R notation.

Specified by:
getRNotation in class DurationScoringFunction
Parameters:
distributionName - the name of the distribution, e.g., "p"
Returns:
the distribution in R notation
See Also:
REnvironment

modify

public void modify(int delta)
Description copied from class: DurationScoringFunction
This method modifies the underlying AlphabetContainer. This might be necessary if the motif length changed.

Overrides:
modify in class DurationScoringFunction
Parameters:
delta - the change
See Also:
Mutable.modify(int, int), MutableMotifDiscoverer.modifyMotif(int, int, int)

getNumberOfRecommendedStarts

public int getNumberOfRecommendedStarts()
Description copied from interface: ScoringFunction
This method returns the number of recommended optimization starts. The standard implementation returns 1.

Specified by:
getNumberOfRecommendedStarts in interface ScoringFunction
Overrides:
getNumberOfRecommendedStarts in class AbstractNormalizableScoringFunction
Returns:
the number of recommended optimization starts

fromXML

protected void fromXML(StringBuffer rep)
                throws NonParsableException
Description copied from class: AbstractNormalizableScoringFunction
This method is called in the constructor for the Storable interface to create a scoring function from a StringBuffer.

Overrides:
fromXML in class DurationScoringFunction
Parameters:
rep - the XML representation as StringBuffer
Throws:
NonParsableException - if the StringBuffer could not be parsed
See Also:
AbstractNormalizableScoringFunction.AbstractNormalizableScoringFunction(StringBuffer)

toXML

public StringBuffer toXML()
Description copied from interface: Storable
This method returns an XML representation as StringBuffer of an instance of the implementing class.

Specified by:
toXML in interface Storable
Overrides:
toXML in class DurationScoringFunction
Returns:
the XML representation