de.jstacs.sequenceScores.statisticalModels.differentiable.mixture.motif
Class SkewNormalLikeDurationDiffSM

java.lang.Object
  extended by de.jstacs.sequenceScores.differentiable.AbstractDifferentiableSequenceScore
      extended by de.jstacs.sequenceScores.statisticalModels.differentiable.AbstractDifferentiableStatisticalModel
          extended by de.jstacs.sequenceScores.statisticalModels.differentiable.mixture.motif.PositionDiffSM
              extended by de.jstacs.sequenceScores.statisticalModels.differentiable.mixture.motif.DurationDiffSM
                  extended by de.jstacs.sequenceScores.statisticalModels.differentiable.mixture.motif.SkewNormalLikeDurationDiffSM
All Implemented Interfaces:
DifferentiableSequenceScore, SequenceScore, DifferentiableStatisticalModel, StatisticalModel, Storable, Cloneable

public class SkewNormalLikeDurationDiffSM
extends DurationDiffSM

This class implements a skew normal like discrete truncated distribution.

Author:
Jens Keilwagen

Field Summary
 
Fields inherited from class de.jstacs.sequenceScores.statisticalModels.differentiable.mixture.motif.DurationDiffSM
delta, ess, max, min
 
Fields inherited from class de.jstacs.sequenceScores.statisticalModels.differentiable.mixture.motif.PositionDiffSM
internal
 
Fields inherited from class de.jstacs.sequenceScores.differentiable.AbstractDifferentiableSequenceScore
alphabets, length, r
 
Fields inherited from interface de.jstacs.sequenceScores.differentiable.DifferentiableSequenceScore
UNKNOWN
 
Constructor Summary
SkewNormalLikeDurationDiffSM(int min, int max, boolean trainMean, double hyperMeanMean, double hyperMeanSigma, boolean trainPrecision, double hyperPrec1, double hyperPrec2, boolean trainSkew, double hyperSkewMean, double hyperSkewStdev, int starts)
          This is the constructor that allows the most flexible handling of the parameters.
SkewNormalLikeDurationDiffSM(int min, int max, double param0, double param1, double param2)
          This is the main constructor if the parameters are fixed.
SkewNormalLikeDurationDiffSM(StringBuffer source)
          This is the constructor for Storable.
 
Method Summary
 void addGradientOfLogPriorTerm(double[] grad, int start)
          This method computes the gradient of DifferentiableStatisticalModel.getLogPriorTerm() for each parameter of this model.
 void adjust(int[] length, double[] weight)
          This method adjust the parameter based on the given statistic.
 SkewNormalLikeDurationDiffSM clone()
          Creates a clone (deep copy) of the current DifferentiableSequenceScore 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 DifferentiableSequenceScore.getNumberOfParameters() containing the current parameter values.
 String getInstanceName()
          Should return a short instance name such as iMM(0), BN(2), ...
 double getLogPriorTerm()
          This method computes a value that is proportional to
 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 DifferentiableSequenceScore.
 int getNumberOfRecommendedStarts()
          This method returns the number of recommended optimization starts.
protected  String getRNotation(String distributionName, NumberFormat nf)
          This method returns the distribution in R notation.
 void initializeFunction(int index, boolean freeParams, DataSet[] data, double[][] weights)
          This method creates the underlying structure of the DifferentiableSequenceScore.
 void initializeFunctionRandomly(boolean freeParams)
          This method initializes the DifferentiableSequenceScore 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 instance 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 + DifferentiableSequenceScore.getNumberOfParameters() - 1
 void setParameters(double par0, double par1, double par2)
          this method can be used to set the parameters even if the parameters are not allowed to be optimized.
 StringBuffer toXML()
          This method returns an XML representation as StringBuffer of an instance of the implementing class.
 
Methods inherited from class de.jstacs.sequenceScores.statisticalModels.differentiable.mixture.motif.DurationDiffSM
getESS, getLogNormalizationConstant, getLogPartialNormalizationConstant, getMax, getMin, getNumberOfPossibilities, getSizeOfEventSpaceForRandomVariablesOfParameter, isPossible, next, reset, toString
 
Methods inherited from class de.jstacs.sequenceScores.statisticalModels.differentiable.mixture.motif.PositionDiffSM
getInternalPosition, getLogScoreAndPartialDerivation, getLogScoreAndPartialDerivationForInternal, getLogScoreFor, getLogScoreForInternal, getValuesFromSequence
 
Methods inherited from class de.jstacs.sequenceScores.statisticalModels.differentiable.AbstractDifferentiableStatisticalModel
emitDataSet, getInitialClassParam, getLogProbFor, getLogProbFor, getLogProbFor, getLogScoreFor, getLogScoreFor, getMaximalMarkovOrder, isNormalized
 
Methods inherited from class de.jstacs.sequenceScores.differentiable.AbstractDifferentiableSequenceScore
getAlphabetContainer, getCharacteristics, getLength, getLogScoreAndPartialDerivation, getLogScoreAndPartialDerivation, getLogScoreFor, getLogScoreFor, getNumberOfStarts, getNumericalCharacteristics
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface de.jstacs.sequenceScores.differentiable.DifferentiableSequenceScore
getLogScoreAndPartialDerivation, getLogScoreAndPartialDerivation
 
Methods inherited from interface de.jstacs.sequenceScores.SequenceScore
getAlphabetContainer, getCharacteristics, getLength, getLogScoreFor, getLogScoreFor, getNumericalCharacteristics
 

Constructor Detail

SkewNormalLikeDurationDiffSM

public SkewNormalLikeDurationDiffSM(int min,
                                    int max,
                                    double param0,
                                    double param1,
                                    double param2)
This is the main constructor if the parameters are fixed.

Parameters:
min - the minimal value
max - the maximal value
param0 - the fixed parameter value for the first parameter (mean)
param1 - the fixed parameter value for the second parameter (precision)
param2 - the fixed parameter value for the third parameter (skew)

SkewNormalLikeDurationDiffSM

public SkewNormalLikeDurationDiffSM(int min,
                                    int max,
                                    boolean trainMean,
                                    double hyperMeanMean,
                                    double hyperMeanSigma,
                                    boolean trainPrecision,
                                    double hyperPrec1,
                                    double hyperPrec2,
                                    boolean trainSkew,
                                    double hyperSkewMean,
                                    double hyperSkewStdev,
                                    int starts)
This is the constructor that allows the most flexible handling of the parameters.

Parameters:
min - the minimal value
max - the maximal value
trainMean - a switch whether to optimize the first parameter
hyperMeanMean - the mean hyper parameter for the first parameter
hyperMeanSigma - the standard deviation hyper parameter for the first parameter
trainPrecision - a switch whether to optimize the second parameter
hyperPrec1 - the first hyper parameter for the precision (first parameter of the transformed gamma density); this is value is used to determine the ess: hyperPrec1 = 0.5*ess
hyperPrec2 - the second hyper parameter for the precision (second parameter of the transformed gamma density)
trainSkew - a switch whether to optimize the third parameter
hyperSkewMean - the mean hyper parameter for the third parameter
hyperSkewStdev - the standard deviation hyper parameter for the third parameter
starts - the number of recommended starts

SkewNormalLikeDurationDiffSM

public SkewNormalLikeDurationDiffSM(StringBuffer source)
                             throws NonParsableException
This is the constructor for Storable. Creates a new SkewNormalLikeDurationDiffSM 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 SkewNormalLikeDurationDiffSM clone()
                                   throws CloneNotSupportedException
Description copied from interface: DifferentiableSequenceScore
Creates a clone (deep copy) of the current DifferentiableSequenceScore instance.

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

initializeFunction

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

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

adjust

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

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

initializeFunctionRandomly

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

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

fromXML

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

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

getInstanceName

public String getInstanceName()
Description copied from interface: SequenceScore
Should return a short instance name such as iMM(0), BN(2), ...

Returns:
a short instance name

getCurrentParameterValues

public double[] getCurrentParameterValues()
                                   throws Exception
Description copied from interface: DifferentiableSequenceScore
Returns a double array of dimension DifferentiableSequenceScore.getNumberOfParameters() containing the current parameter values. If one likes to use these parameters to start an optimization it is highly recommended to invoke DifferentiableSequenceScore.initializeFunction(int, boolean, DataSet[], 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)

getLogScore

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

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

getLogScoreAndPartialDerivation

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

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

getNumberOfParameters

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

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

setParameters

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

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

setParameters

public void setParameters(double par0,
                          double par1,
                          double par2)
this method can be used to set the parameters even if the parameters are not allowed to be optimized.

Parameters:
par0 - the first parameter (for the mean or maximum)
par1 - the second parameter (for the precision)
par2 - the third parameter (for the skew)

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 DurationDiffSM
Returns:
the XML representation

getRNotation

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

Specified by:
getRNotation in class DurationDiffSM
Parameters:
distributionName - the name of the distribution, e.g., "p"
nf - the NumberFormat to be used, can be null
Returns:
the distribution in R notation
See Also:
REnvironment

getLogPriorTerm

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

DifferentiableStatisticalModel.getESS() * DifferentiableStatisticalModel.getLogNormalizationConstant() + Math.log( prior )

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

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

addGradientOfLogPriorTerm

public void addGradientOfLogPriorTerm(double[] grad,
                                      int start)
                               throws Exception
Description copied from interface: DifferentiableStatisticalModel
This method computes the gradient of DifferentiableStatisticalModel.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:
DifferentiableStatisticalModel.getLogPriorTerm()

isInitialized

public boolean isInitialized()
Description copied from interface: SequenceScore
This method can be used to determine whether the instance is initialized. If the instance is initialized you should be able to invoke SequenceScore.getLogScoreFor(Sequence).

Returns:
true if the instance is initialized, false otherwise

isNormalized

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

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

initializeUniformly

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

Specified by:
initializeUniformly in class DurationDiffSM

modify

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

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

getNumberOfRecommendedStarts

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

Specified by:
getNumberOfRecommendedStarts in interface DifferentiableSequenceScore
Overrides:
getNumberOfRecommendedStarts in class AbstractDifferentiableSequenceScore
Returns:
the number of recommended optimization starts