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 NormalizedScoringFunction

    java.lang.Object
      de.jstacs.scoringFunctions.AbstractNormalizableScoringFunction
          de.jstacs.scoringFunctions.NormalizedScoringFunction

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

    public final class NormalizedScoringFunction

extends AbstractNormalizableScoringFunction
implements Mutable

This class makes an unnormalized ScoringFunction to a normalized ScoringFunction. This class should be used only in cases when it is not possible to avoid its usage.

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
`NormalizedScoringFunction(NormalizableScoringFunction nsf, int starts)` Creates a new instance using a given NormalizableScoringFunction.
`NormalizedScoringFunction(StringBuffer xml)` 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.
`NormalizedScoringFunction` | `clone()` Creates a clone (deep copy) of the current `ScoringFunction` instance.
`int[]` | `determineNotSignificantPositions(double samples, double[] weightsLeft, double[] weightsRight, double[][][][] contrastLeft, double[][][][] contrastRight, double sign)` This method determines the number of not significant positions from each side of the motif using the the significance level `sign` and the contrast distributions of the left or right side, `contrastLeft` and `contrastRight`, respectively.
`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.
`NormalizableScoringFunction` | `getFunction()` This method returns the internal function.
`String` | `getInstanceName()` Returns a short instance name.
`double` | `getLogPriorTerm()` This method computes a value that is proportional to `NormalizableScoringFunction.getEss()` `* Math.log( `NormalizableScoringFunction.getNormalizationConstant()` ) + Math.log( prior ).`
`double` | `getLogScore(Sequence seq, int start)` Returns the logarithmic score for the `Sequence` `seq` beginning at position `start` in the `Sequence`.
`double` | `getLogScoreAndPartialDerivation(Sequence seq, int start, IntList indices, DoubleList partialDer)` Returns the logarithmic score for a `Sequence` beginning at position `start` in the `Sequence` and fills lists with the indices and the partial derivations.
`double` | `getNormalizationConstant()` Returns the sum of the scores over all sequences of the event space.
`static NormalizableScoringFunction` | `getNormalizedVersion(NormalizableScoringFunction nsf, int starts)` This method returns a normalized version of a NormalizableScoringFunction.
`int` | `getNumberOfParameters()` Returns the number of parameters in this `ScoringFunction`.
`int` | `getNumberOfRecommendedStarts()` This method returns the number of recommended optimization starts.
`double` | `getPartialNormalizationConstant(int parameterIndex)` Returns the partial normalization constant for the parameter with index `parameterIndex`.
`int` | `getSizeOfEventSpaceForRandomVariablesOfParameter(int index)` Returns the size of the event space of the random variables that are affected by parameter no.
`StrandedLocatedSequenceAnnotationWithLength.Strand` | `getStrand(Sequence seq, int startPos)` This method return the preferred `StrandedLocatedSequenceAnnotationWithLength.Strand` for a `Sequence` beginning at `startPos`.
`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` | `initializeHiddenUniformly()` This method initializes the hidden parameters of the internal `NormalizableScoringFunction` uniformly if it is a `AbstractMixtureScoringFunction`.
`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.
`boolean` | `isStrandScoringFunction()` This method returns `true` if the internal `NormalizableScoringFunction` is a `StrandScoringFunction` otherwise `false`.
`boolean` | `modify(double[] weightsLeft, double[] weightsRight, double[][][][] replacementLeft, double[][][][] replacementRight, int offsetLeft, int offsetRight)` Manually modifies the model.
`void` | `setParameters(double[] params, int start)` This method sets the internal parameters to the values of `params` between `start` and `start + `ScoringFunction.getNumberOfParameters()` - 1`
`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.AbstractNormalizableScoringFunction
`getAlphabetContainer, getInitialClassParam, getLength, getLogScore, getLogScoreAndPartialDerivation, isNormalized`

Methods inherited from class java.lang.Object
`equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Constructor Detail

### NormalizedScoringFunction

    public NormalizedScoringFunction(NormalizableScoringFunction nsf,
                                     int starts)
                              throws Exception

  Creates a new instance using a given NormalizableScoringFunction.

  Parameters:
    `nsf` - the function to be used internal
    `starts` - the number of recommended starts (`ScoringFunction.getNumberOfRecommendedStarts()`)
  Throws:
    `Exception`

### NormalizedScoringFunction

    public NormalizedScoringFunction(StringBuffer xml)
                              throws NonParsableException

  This is the constructor for `Storable`.

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

Method Detail

### getNormalizedVersion

    public static final NormalizableScoringFunction getNormalizedVersion(NormalizableScoringFunction nsf,
                                                                         int starts)
                                                                  throws Exception

  This method returns a normalized version of a NormalizableScoringFunction. Either it returns a clone of `nsf` or an instance of NormalizedScoringFunction using `nsf` and `starts`.

  Parameters:
    `nsf` - the NormalizableScoringFunction to be normalized
    `starts` - the number of recommended starts for a NormalizedScoringFunction
  Returns:
    a normalized scoring function
  Throws:
    `Exception`

### clone

    public NormalizedScoringFunction 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`

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

  Specified by:
    `getSizeOfEventSpaceForRandomVariablesOfParameter` in interface `NormalizableScoringFunction`
  Parameters:
    `index` - the index of the parameter
  Returns:
    the size of the event space

### getNormalizationConstant

    public double getNormalizationConstant()

  Description copied from interface: `NormalizableScoringFunction`
  Returns the sum of the scores over all sequences of the event space.

  Specified by:
    `getNormalizationConstant` in interface `NormalizableScoringFunction`
  Returns:
    the normalization constant Z

### getPartialNormalizationConstant

    public double getPartialNormalizationConstant(int parameterIndex)
                                           throws Exception

  Description copied from interface: `NormalizableScoringFunction`
  Returns the partial normalization constant for the parameter with index `parameterIndex`. This is the partial derivation of the normalization constant for the parameter with index `parameterIndex`, in LaTex notation: `\frac{\partial Z(\lambda)}{\partial \lambda_{index}}`.

  Specified by:
    `getPartialNormalizationConstant` in interface `NormalizableScoringFunction`
  Parameters:
    `parameterIndex` - the index of the parameter
  Returns:
    the partial normalization constant
  Throws:
    `Exception` - if something went wrong with the normalization
  See Also:
    `NormalizableScoringFunction.getNormalizationConstant()`

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

  Specified by:
    `getEss` in interface `NormalizableScoringFunction`
  Returns:
    the equivalent sample size.

### getLogPriorTerm

    public double getLogPriorTerm()

  Description copied from interface: `NormalizableScoringFunction`
  This method computes a value that is proportional to

  `NormalizableScoringFunction.getEss()` `* Math.log( `NormalizableScoringFunction.getNormalizationConstant()` ) + Math.log( prior ).`

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

  Specified by:
    `getLogPriorTerm` in interface `NormalizableScoringFunction`
  Returns:
    a value that is proportional to `NormalizableScoringFunction.getEss()` `* Math.log( `NormalizableScoringFunction.getNormalizationConstant()` ) + Math.log( prior ).`
  See Also:
    `NormalizableScoringFunction.getEss()`, `NormalizableScoringFunction.getNormalizationConstant()`

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

  Specified by:
    `addGradientOfLogPriorTerm` in interface `NormalizableScoringFunction`
  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()`

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

  Specified by:
    `initializeFunction` in interface `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

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

  Specified by:
    `initializeFunctionRandomly` in interface `ScoringFunction`
  Parameters:
    `freeParams` - indicates whether the (reduced) parameterization is used
  Throws:
    `Exception` - if something went wrong

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

### getInstanceName

    public String getInstanceName()

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

  Specified by:
    `getInstanceName` in interface `ScoringFunction`
  Returns:
    a short instance name

### getLogScore

    public double getLogScore(Sequence seq,
                              int start)

  Description copied from interface: `ScoringFunction`
  Returns the logarithmic score for the `Sequence` `seq` beginning at position `start` in the `Sequence`.

  Specified by:
    `getLogScore` in interface `ScoringFunction`
  Parameters:
    `seq` - the `Sequence`
    `start` - the start position in the `Sequence`
  Returns:
    the logarithmic score for the `Sequence`

### getLogScoreAndPartialDerivation

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

  Description copied from interface: `ScoringFunction`
  Returns the logarithmic score for a `Sequence` beginning at position `start` in the `Sequence` and fills lists with the indices and the partial derivations.

  Specified by:
    `getLogScoreAndPartialDerivation` in interface `ScoringFunction`
  Parameters:
    `seq` - the `Sequence`
    `start` - the start position in the `Sequence`
    `indices` - an `IntList` of indices, after method invocation the list should contain the indices i where `\frac{\partial \log score(seq)}{\partial \lambda_i}` is not zero
    `partialDer` - a `DoubleList` of partial derivations, after method invocation the list should contain the corresponding `\frac{\partial \log score(seq)}{\partial \lambda_i}`
  Returns:
    the logarithmic score for the `Sequence`

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

  Specified by:
    `getNumberOfParameters` in interface `ScoringFunction`
  Returns:
    the number of parameters in this `ScoringFunction`
  See Also:
    `ScoringFunction.UNKNOWN`

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

  Specified by:
    `getCurrentParameterValues` in interface `ScoringFunction`
  Returns:
    the current parameter values
  Throws:
    `Exception` - if no parameters exist (yet)

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

  Specified by:
    `setParameters` in interface `ScoringFunction`
  Parameters:
    `params` - the new parameters
    `start` - the start index in `params`

### 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[][])`.

  Specified by:
    `isInitialized` in interface `ScoringFunction`
  Returns:
    `true` if the model is initialized, `false` otherwise

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

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

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

### toString

    public String toString()

  Overrides:
    `toString` in class `Object`

### getFunction

    public NormalizableScoringFunction getFunction()
                                            throws CloneNotSupportedException

  This method returns the internal function.

  Returns:
    the internal function
  Throws:
    `CloneNotSupportedException` - if the internal function could not be cloned

### determineNotSignificantPositions

    public int[] determineNotSignificantPositions(double samples,
                                                  double[] weightsLeft,
                                                  double[] weightsRight,
                                                  double[][][][] contrastLeft,
                                                  double[][][][] contrastRight,
                                                  double sign)

  Description copied from interface: `Mutable`
  This method determines the number of not significant positions from each side of the motif using the the significance level `sign` and the contrast distributions of the left or right side, `contrastLeft` and `contrastRight`, respectively. The contrast array have four dimensions.
  1. The first is used for the possibility of having different contrast (caused by different flanking models).
  2. The second is used for the order of the contrast.
  3. The third is used for the (encoded) context.
  4. The fourth is used for the the realization of the random variable
  For example, if we have only one flanking model which is a homogeneous Markov model of order 0 for a `DNAAlphabet`, the contrast array has the dimension `new double[1][1][1][4]`. For the same example but with order 1, the contrast array has the dimension `new double[1][1][4][4]`. Left and right contrast can have different dimensions.

  Specified by:
    `determineNotSignificantPositions` in interface `Mutable`
  Parameters:
    `samples` - the summed weights of `Sequence` containing this motif
    `weightsLeft` - the weights for the left contrast distributions
    `weightsRight` - the weights for the right contrast distributions
    `contrastLeft` - the left contrast distributions
    `contrastRight` - the right contrast distributions
    `sign` - the significance level
  Returns:
    a two dimensional array containing at position 0 the number of not significant positions from the left side using `contrastLeft` and at position 1 the number of not significant positions from the right side using `contrastRight`
  See Also:
    `Mutable.modify(double[], double[], double[][][][], double[][][][], int, int)`

### modify

    public boolean modify(double[] weightsLeft,
                          double[] weightsRight,
                          double[][][][] replacementLeft,
                          double[][][][] replacementRight,
                          int offsetLeft,
                          int offsetRight)

  Description copied from interface: `Mutable`
  Manually modifies the model. The two offsets `offsetLeft` and `offsetRight` define how many positions the left or right border positions shall be moved. Negative numbers indicate moves to the left while positive numbers correspond to moves to the right.

  Specified by:
    `modify` in interface `Mutable`
  Parameters:
    `weightsLeft` - the weights for the left replacement distributions
    `weightsRight` - the weights for the left replacement distributions
    `replacementLeft` - the replacement distribution for the left side
    `replacementRight` - the replacement distribution for the right side
    `offsetLeft` - the offset on the left side
    `offsetRight` - the offset on the right side
  Returns:
    `true` if the motif model was modified otherwise `false`

### isStrandScoringFunction

    public boolean isStrandScoringFunction()

  This method returns `true` if the internal `NormalizableScoringFunction` is a `StrandScoringFunction` otherwise `false`.

  Returns:
    `true` if the internal `NormalizableScoringFunction` is a `StrandScoringFunction` otherwise `false`

### getStrand

    public StrandedLocatedSequenceAnnotationWithLength.Strand getStrand(Sequence seq,
                                                                        int startPos)

  This method return the preferred `StrandedLocatedSequenceAnnotationWithLength.Strand` for a `Sequence` beginning at `startPos`.

  Parameters:
    `seq` - the sequence
    `startPos` - the start position
  Returns:
    the preferred `StrandedLocatedSequenceAnnotationWithLength.Strand`

### initializeHiddenUniformly

    public void initializeHiddenUniformly()

  This method initializes the hidden parameters of the internal `NormalizableScoringFunction` uniformly if it is a `AbstractMixtureScoringFunction`.

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