Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## de.jstacs.scoringFunctions
Class CMMScoringFunction

    java.lang.Object
      de.jstacs.scoringFunctions.AbstractNormalizableScoringFunction
          de.jstacs.scoringFunctions.AbstractVariableLengthScoringFunction
              de.jstacs.scoringFunctions.CMMScoringFunction

All Implemented Interfaces:
  NormalizableScoringFunction, ScoringFunction, VariableLengthScoringFunction, Storable, Cloneable

    public class CMMScoringFunction

extends AbstractVariableLengthScoringFunction

This scoring function implements a cyclic Markov model of arbitrary order and periodicity for any sequence length. The scoring function uses the parametrization of Meila.

Author:
  Jens Keilwagen

Field Summary

Fields inherited from class de.jstacs.scoringFunctions.AbstractNormalizableScoringFunction
`alphabets, length, r`

Fields inherited from interface de.jstacs.scoringFunctions.ScoringFunction
`UNKNOWN`

Constructor Summary
`CMMScoringFunction(AlphabetContainer alphabets, double[] frameHyper, double[][][] hyper, boolean plugIn, boolean optimize, int starts, int initFrame)` This constructor allows to create an instance with specific hyper-parameters for all conditional distributions.
`CMMScoringFunction(AlphabetContainer alphabets, int order, int period, double classEss, double[] sumOfHyperParams, boolean plugIn, boolean optimize, int starts, int initFrame)` The main constructor.
`CMMScoringFunction(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.
`CMMScoringFunction` | `clone()` Creates a clone (deep copy) of the current `ScoringFunction` instance.
`protected void` | `fromXML(StringBuffer xml)` 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.
`double` | `getEss()` Returns the equivalent sample size (ess) of this model, i.e. the equivalent sample size for the class or component that is represented by this model.
`static double[][][]` | `getHyperParams(int alphabetSize, int length, double ess, double[] frameProb, double[][][] prob)` This method returns the hyper-parameters for a model given some a-priori probabilities.
`String` | `getInstanceName()` Returns a short instance name.
`double` | `getLogNormalizationConstant(int length)` This method returns the logarithm of the normalization constant for a given sequence length.
`double` | `getLogPartialNormalizationConstant(int parameterIndex, int length)` This method returns the logarithm of the partial normalization constant for a given parameter index and a sequence length.
`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(Sequence seq, int start, int length)` This method computes the logarithm of the score for a given subsequence.
`double` | `getLogScoreAndPartialDerivation(Sequence seq, int start, int length, IntList indices, DoubleList dList)` This method computes the logarithm of the score and the partial derivations for a given subsequence.
`int` | `getNumberOfParameters()` Returns the number of parameters in this `ScoringFunction`.
`int` | `getNumberOfRecommendedStarts()` This method returns the number of recommended optimization starts.
`int` | `getSizeOfEventSpaceForRandomVariablesOfParameter(int index)` Returns the size of the event space of the random variables that are affected by parameter no.
`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.
`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` | `setFrameParameterOptimization(boolean optimize)` This method enables the user to choose whether the frame parameters should be optimized or not.
`void` | `setParameterOptimization(boolean optimize)` This method enables the user to choose whether the parameters should be optimized or not.
`void` | `setParameters(double[] params, int start)` This method sets the internal parameters to the values of `params` between `start` and `start + `ScoringFunction.getNumberOfParameters()` - 1`
`void` | `setStatisticForHyperparameters(int[] length, double[] weight)` This method sets the hyperparameters for the model parameters by evaluating the given statistic.
`String` | `toString()`
`StringBuffer` | `toXML()` This method returns an XML representation as `StringBuffer` of an instance of the implementing class.

Methods inherited from class de.jstacs.scoringFunctions.AbstractVariableLengthScoringFunction
`getLogNormalizationConstant, getLogPartialNormalizationConstant, getLogScore, getLogScoreAndPartialDerivation`

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`

Methods inherited from interface de.jstacs.scoringFunctions.NormalizableScoringFunction
`getInitialClassParam`

Methods inherited from interface de.jstacs.scoringFunctions.ScoringFunction
`getAlphabetContainer, getLength, getLogScore, getLogScoreAndPartialDerivation`

Constructor Detail

### CMMScoringFunction

    public CMMScoringFunction(AlphabetContainer alphabets,
                              int order,
                              int period,
                              double classEss,
                              double[] sumOfHyperParams,
                              boolean plugIn,
                              boolean optimize,
                              int starts,
                              int initFrame)

  The main constructor.

  Parameters:
    `alphabets` - the alphabet container
    `order` - the oder of the model (has to be non-negative)
    `period` - the period
    `classEss` - the ess of the class
    `sumOfHyperParams` - the sum of the hyper parameter for each order (length has to be `order`+1, each entry has to be non-negative), the sum also sums over the period
    `plugIn` - a switch which enables to used the MAP-parameters as plug-in parameters
    `optimize` - a switch which enables to optimize or fix the parameters
    `starts` - the number of recommended starts
    `initFrame` - the frame which should be used for plug-in initialization, negative for random initialization
  See Also:
    `getHyperParams(int, int, double, double[], double[][][])`, `CMMScoringFunction(AlphabetContainer, double[], double[][][], boolean, boolean, int, int)`

### CMMScoringFunction

    public CMMScoringFunction(AlphabetContainer alphabets,
                              double[] frameHyper,
                              double[][][] hyper,
                              boolean plugIn,
                              boolean optimize,
                              int starts,
                              int initFrame)

  This constructor allows to create an instance with specific hyper-parameters for all conditional distributions.

  Parameters:
    `alphabets` - the alphabet container
    `frameHyper` - the hyper-parameters for the frame, the length of this array also defines the period of the model
    `hyper` - the hyper-parameters for each frame
    `plugIn` - a switch which enables to used the MAP-parameters as plug-in parameters
    `optimize` - a switch which enables to optimize or fix the parameters
    `starts` - the number of recommended starts
    `initFrame` - the frame which should be used for plug-in initialization, negative for random initialization

### CMMScoringFunction

    public CMMScoringFunction(StringBuffer source)
                       throws NonParsableException

  This is the constructor for `Storable`.

  Parameters:
    `source` - the xml representation
  Throws:
    `NonParsableException` - if the representation could not be parsed.

Method Detail

### getHyperParams

    public static double[][][] getHyperParams(int alphabetSize,
                                              int length,
                                              double ess,
                                              double[] frameProb,
                                              double[][][] prob)

  This method returns the hyper-parameters for a model given some a-priori probabilities.

  Parameters:
    `alphabetSize` - the size of the alphabet
    `length` - the expected sequence length
    `ess` - the equivalent sample size (ess) of the model
    `frameProb` - the a-priori probabilities for each frame
    `prob` - the a-priori probabilities for each frame and order
  Returns:
    specific hyper-parameters

### clone

    public CMMScoringFunction 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 `AbstractNormalizableScoringFunction`
  Returns:
    the cloned instance of the current `ScoringFunction`
  Throws:
    `CloneNotSupportedException` - if something went wrong while cloning the `ScoringFunction`

### getInstanceName

    public String getInstanceName()

  Description copied from interface: `ScoringFunction`
  Returns a short instance name.

  Returns:
    a short instance name

### getLogScore

    public double getLogScore(Sequence seq,
                              int start,
                              int length)

  Description copied from interface: `VariableLengthScoringFunction`
  This method computes the logarithm of the score for a given subsequence.

  Parameters:
    `seq` - the `Sequence`
    `start` - the start index in the `Sequence`
    `length` - the length of the `Sequence` beginning at `start`
  Returns:
    the logarithm of the score for the subsequence
  See Also:
    `ScoringFunction.getLogScore(Sequence, int)`

### getLogScoreAndPartialDerivation

    public double getLogScoreAndPartialDerivation(Sequence seq,
                                                  int start,
                                                  int length,
                                                  IntList indices,
                                                  DoubleList dList)

  Description copied from interface: `VariableLengthScoringFunction`
  This method computes the logarithm of the score and the partial derivations for a given subsequence.

  Parameters:
    `seq` - the `Sequence`
    `start` - the start index in the `Sequence`
    `length` - the end index in the `Sequence`
    `indices` - an `IntList` of indices, after method invocation the list should contain the indices i where is not zero
    `dList` - a `DoubleList` of partial derivations, after method invocation the list should contain the corresponding that are not zero
  Returns:
    the logarithm of the score
  See Also:
    `ScoringFunction.getLogScoreAndPartialDerivation(Sequence, int, IntList, DoubleList)`

### 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`

### 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`

### toXML

    public StringBuffer toXML()

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

  Returns:
    the XML representation

### getCurrentParameterValues

    public double[] getCurrentParameterValues()

  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

### initializeFunction

    public void initializeFunction(int index,
                                   boolean freeParams,
                                   Sample[] data,
                                   double[][] weights)

  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

### initializeFunctionRandomly

    public void initializeFunctionRandomly(boolean freeParams)

  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

### fromXML

    protected void fromXML(StringBuffer xml)
                    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`.

  Specified by:
    `fromXML` in class `AbstractNormalizableScoringFunction`
  Parameters:
    `xml` - the XML representation as `StringBuffer`
  Throws:
    `NonParsableException` - if the `StringBuffer` could not be parsed
  See Also:
    `AbstractNormalizableScoringFunction.AbstractNormalizableScoringFunction(StringBuffer)`

### getSizeOfEventSpaceForRandomVariablesOfParameter

    public int getSizeOfEventSpaceForRandomVariablesOfParameter(int index)

  Description copied from interface: `NormalizableScoringFunction`
  Returns the size of the event space of the random variables that are affected by parameter no. `index`, i.e. the product of the sizes of the alphabets at the position of each random variable affected by parameter `index`. For DNA alphabets this corresponds to 4 for a PWM, 16 for a WAM except position 0, ...

  Parameters:
    `index` - the index of the parameter
  Returns:
    the size of the event space

### getLogNormalizationConstant

    public double getLogNormalizationConstant(int length)

  Description copied from interface: `VariableLengthScoringFunction`
  This method returns the logarithm of the normalization constant for a given sequence length.

  Parameters:
    `length` - the sequence length
  Returns:
    the logarithm of the normalization constant
  See Also:
    `NormalizableScoringFunction.getLogNormalizationConstant()`

### getLogPartialNormalizationConstant

    public double getLogPartialNormalizationConstant(int parameterIndex,
                                                     int length)
                                              throws Exception

  Description copied from interface: `VariableLengthScoringFunction`
  This method returns the logarithm of the partial normalization constant for a given parameter index and a sequence length.

  Parameters:
    `parameterIndex` - the index of the parameter
    `length` - the sequence length
  Returns:
    the logarithm of the partial normalization constant
  Throws:
    `Exception` - if something went wrong
  See Also:
    `NormalizableScoringFunction.getLogPartialNormalizationConstant(int)`

### getEss

    public double getEss()

  Description copied from interface: `NormalizableScoringFunction`
  Returns the equivalent sample size (ess) of this model, i.e. the equivalent sample size for the class or component that is represented by this model.

  Returns:
    the equivalent sample size.

### toString

    public String toString()

  Overrides:
    `toString` in class `Object`

### 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()`

### addGradientOfLogPriorTerm

    public void addGradientOfLogPriorTerm(double[] grad,
                                          int start)

  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
  See Also:
    `NormalizableScoringFunction.getLogPriorTerm()`

### 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

### 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

### 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

### setParameterOptimization

    public void setParameterOptimization(boolean optimize)

  This method enables the user to choose whether the parameters should be optimized or not.

  Parameters:
    `optimize` - the switch for optimization of the parameters

### setFrameParameterOptimization

    public void setFrameParameterOptimization(boolean optimize)

  This method enables the user to choose whether the frame parameters should be optimized or not.

  Parameters:
    `optimize` - the switch for optimization of the frame parameters

### setStatisticForHyperparameters

    public void setStatisticForHyperparameters(int[] length,
                                               double[] weight)
                                        throws Exception

  Description copied from interface: `VariableLengthScoringFunction`
  This method sets the hyperparameters for the model parameters by evaluating the given statistic. The statistic can be interpreted as follows: The model has seen a number of sequences. From these sequences it is only known how long (`length`) and how often ( `weight`) they have been seen.

  Parameters:
    `length` - the non-negative lengths of the sequences
    `weight` - the non-negative weight for the corresponding sequence
  Throws:
    `Exception` - if something went wrong
  See Also:
    `Mutable`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD