de.jstacs.scoringFunctions.mix
Class StrandScoringFunction

java.lang.Object
  extended by de.jstacs.scoringFunctions.AbstractNormalizableScoringFunction
      extended by de.jstacs.scoringFunctions.mix.AbstractMixtureScoringFunction
          extended by de.jstacs.scoringFunctions.mix.StrandScoringFunction
All Implemented Interfaces:
Mutable, NormalizableScoringFunction, ScoringFunction, Storable, Cloneable

public class StrandScoringFunction
extends AbstractMixtureScoringFunction
implements Mutable

This class enables the user to search on both strand. So the motif can be found on the forward or on the reverse complementary strand.

Author:
Jens Keilwagen
See Also:
ComplementableDiscreteAlphabet, AlphabetContainer.isReverseComplementable()

Nested Class Summary
static class StrandScoringFunction.InitMethod
          This enum defines the different types of plug-in initialization of a StrandScoringFunction.
 
Field Summary
 
Fields inherited from class de.jstacs.scoringFunctions.mix.AbstractMixtureScoringFunction
componentScore, dList, freeParams, function, hiddenParameter, hiddenPotential, iList, logGammaSum, logHiddenNorm, logHiddenPotential, norm, optimizeHidden, paramRef, partNorm
 
Fields inherited from class de.jstacs.scoringFunctions.AbstractNormalizableScoringFunction
alphabets, length, r
 
Fields inherited from interface de.jstacs.scoringFunctions.ScoringFunction
UNKNOWN
 
Constructor Summary
StrandScoringFunction(NormalizableScoringFunction function, double forwardPartOfESS, int starts, boolean plugIn, StrandScoringFunction.InitMethod initMethod)
          This constructor creates a StrandScoringFunction that optimizes the usage of each strand.
StrandScoringFunction(NormalizableScoringFunction function, int starts, boolean plugIn, StrandScoringFunction.InitMethod initMethod, double forward)
          This constructor creates a StrandScoringFunction that has a fixed frequency for the strand usage.
StrandScoringFunction(StringBuffer xml)
          This is the constructor for Storable.
 
Method Summary
protected  void extractFurtherInformation(StringBuffer xml)
          This method is the opposite of AbstractMixtureScoringFunction.getFurtherInformation().
protected  void fillComponentScores(Sequence seq, int start)
          Fills the internal array AbstractMixtureScoringFunction.componentScore with the logarithmic scores of the components given a Sequence.
 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.
 double getForwardProbability()
          This methoth returns the a-priori probability for the forward strand.
protected  StringBuffer getFurtherInformation()
          This method is used to append further information of the instance to the XML representation.
 double getHyperparameterForHiddenParameter(int index)
          This method returns the hyperparameter for the hidden parameter with index index.
 String getInstanceName()
          Returns a short instance name.
protected  double getLogNormalizationConstantForComponent(int i)
          Computes the logarithm of the normalization constant for the component i.
 double getLogPartialNormalizationConstant(int parameterIndex)
          Returns the logarithm of the partial normalization constant for the parameter with index parameterIndex.
 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.
static double[][][] getReverseComplementDistributions(ComplementableDiscreteAlphabet abc, double[][][] condDistr)
          This method computes the reverse complement distributions for given conditional distributions.
 StrandedLocatedSequenceAnnotationWithLength.Strand getStrand(Sequence seq, int startPos)
          This method returns the preferred StrandedLocatedSequenceAnnotationWithLength.Strand for a given subsequence.
protected  void init(boolean freeParams)
          This method creates the underlying structure for the parameters.
protected  void initializeUsingPlugIn(int index, boolean freeParams, Sample[] data, double[][] weights)
          This method initializes the functions using the data in some way.
static boolean isStrandScoringFunction(NormalizableScoringFunction nsf)
          Check whether a NormalizableScoringFunction is a StrandScoringFunction.
 boolean modify(int offsetLeft, int offsetRight)
          Manually modifies the model.
protected  void setForwardProb(double forward)
          This method can be used to set the forward strand probability.
 String toString()
           
 
Methods inherited from class de.jstacs.scoringFunctions.mix.AbstractMixtureScoringFunction
addGradientOfLogPriorTerm, clone, cloneFunctions, computeHiddenParameter, computeLogGammaSum, determineIsNormalized, fromXML, getCurrentParameterValues, getFunction, getFunctions, getIndexOfMaximalComponentFor, getIndices, getLogNormalizationConstant, getLogPriorTerm, getLogScore, getNumberOfComponents, getNumberOfParameters, getNumberOfRecommendedStarts, getProbsForComponent, getScoringFunctions, getSizeOfEventSpaceForRandomVariablesOfParameter, getXMLTag, initializeFunction, initializeFunctionRandomly, initializeHiddenPotentialRandomly, initializeHiddenUniformly, initWithLength, isInitialized, isNormalized, precomputeNorm, setHiddenParameters, setParameters, setParametersForFunction, toXML
 
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

StrandScoringFunction

public StrandScoringFunction(NormalizableScoringFunction function,
                             double forwardPartOfESS,
                             int starts,
                             boolean plugIn,
                             StrandScoringFunction.InitMethod initMethod)
                      throws CloneNotSupportedException,
                             WrongAlphabetException
This constructor creates a StrandScoringFunction that optimizes the usage of each strand.

Parameters:
function - the ScoringFunction
forwardPartOfESS - the part of the full ESS that should be used as hyperparameter for the forward strand
starts - the number of starts the should be done in an optimization
plugIn - whether the initial parameters for an optimization should be related to the data or randomly drawn
initMethod - only used if plugIn==true
whether the initial parameters for an optimization should be related to the data of the forward strand, the backward strand or both strands
Throws:
CloneNotSupportedException - if function could not be cloned
WrongAlphabetException - if the alphabet of function is not AlphabetContainer.isReverseComplementable() and, hence, cannot be used for a strand mixture
See Also:
StrandScoringFunction.InitMethod

StrandScoringFunction

public StrandScoringFunction(NormalizableScoringFunction function,
                             int starts,
                             boolean plugIn,
                             StrandScoringFunction.InitMethod initMethod,
                             double forward)
                      throws CloneNotSupportedException,
                             WrongAlphabetException
This constructor creates a StrandScoringFunction that has a fixed frequency for the strand usage.

Parameters:
function - the ScoringFunction
starts - the number of starts the should be done in an optimization
plugIn - whether the initial parameters for an optimization should be related to the data or randomly drawn
initMethod - only used if plugIn==true
whether the initial parameters for an optimization should be related to the data of the forward strand, the backward strand or both strands
forward - the probability of a motif to be on the forward strand
Throws:
CloneNotSupportedException - if function could not be cloned
WrongAlphabetException - if the alphabet of function is not AlphabetContainer.isReverseComplementable() and, hence, cannot be used for a strand mixture
See Also:
StrandScoringFunction.InitMethod

StrandScoringFunction

public StrandScoringFunction(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

setForwardProb

protected void setForwardProb(double forward)
This method can be used to set the forward strand probability.

Parameters:
forward - the forward strand probability in (0,1)

getLogNormalizationConstantForComponent

protected double getLogNormalizationConstantForComponent(int i)
Description copied from class: AbstractMixtureScoringFunction
Computes the logarithm of the normalization constant for the component i.

Specified by:
getLogNormalizationConstantForComponent in class AbstractMixtureScoringFunction
Parameters:
i - the index of the component
Returns:
the logarithm of the normalization constant of the component

getLogPartialNormalizationConstant

public double getLogPartialNormalizationConstant(int parameterIndex)
                                          throws Exception
Description copied from interface: NormalizableScoringFunction
Returns the logarithm of the partial normalization constant for the parameter with index parameterIndex. This is the logarithm of the partial derivation of the normalization constant for the parameter with index parameterIndex,
\[\log \frac{\partial Z(\underline{\lambda})}{\partial \lambda_{parameterindex}}\]
.

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

getHyperparameterForHiddenParameter

public double getHyperparameterForHiddenParameter(int index)
Description copied from class: AbstractMixtureScoringFunction
This method returns the hyperparameter for the hidden parameter with index index.

Specified by:
getHyperparameterForHiddenParameter in class AbstractMixtureScoringFunction
Parameters:
index - the index of the hidden parameter
Returns:
the hyperparameter for the hidden parameter

getForwardProbability

public double getForwardProbability()
This methoth returns the a-priori probability for the forward strand.

Returns:
the a-priori probability for the forward strand

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.

initializeUsingPlugIn

protected void initializeUsingPlugIn(int index,
                                     boolean freeParams,
                                     Sample[] data,
                                     double[][] weights)
                              throws Exception
Description copied from class: AbstractMixtureScoringFunction
This method initializes the functions using the data in some way.

Specified by:
initializeUsingPlugIn in class AbstractMixtureScoringFunction
Parameters:
index - the class index
freeParams - if true, the (reduced) parameterization is used
data - the data
weights - the weights for the data
Throws:
Exception - if the initialization could not be done
See Also:
ScoringFunction.initializeFunction(int, boolean, Sample[], double[][])

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

fillComponentScores

protected void fillComponentScores(Sequence seq,
                                   int start)
Description copied from class: AbstractMixtureScoringFunction
Fills the internal array AbstractMixtureScoringFunction.componentScore with the logarithmic scores of the components given a Sequence.

Specified by:
fillComponentScores in class AbstractMixtureScoringFunction
Parameters:
seq - the sequence
start - the start position in seq

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}$ that are not zero
Returns:
the logarithmic score for the Sequence

getFurtherInformation

protected StringBuffer getFurtherInformation()
Description copied from class: AbstractMixtureScoringFunction
This method is used to append further information of the instance to the XML representation. This method is designed to allow subclasses to add information to the XML representation.

Overrides:
getFurtherInformation in class AbstractMixtureScoringFunction
Returns:
the further information as XML code in a StringBuffer
See Also:
AbstractMixtureScoringFunction.extractFurtherInformation(StringBuffer)

extractFurtherInformation

protected void extractFurtherInformation(StringBuffer xml)
                                  throws NonParsableException
Description copied from class: AbstractMixtureScoringFunction
This method is the opposite of AbstractMixtureScoringFunction.getFurtherInformation(). It extracts further information of the instance from a XML representation.

Overrides:
extractFurtherInformation in class AbstractMixtureScoringFunction
Parameters:
xml - the StringBuffer containing the information to be extracted as XML code
Throws:
NonParsableException - if the StringBuffer could not be parsed
See Also:
AbstractMixtureScoringFunction.getFurtherInformation()

init

protected void init(boolean freeParams)
Description copied from class: AbstractMixtureScoringFunction
This method creates the underlying structure for the parameters.

Overrides:
init in class AbstractMixtureScoringFunction
Parameters:
freeParams - indicates whether to use only free parameters or all parameters

toString

public String toString()
Overrides:
toString in class Object

modify

public boolean modify(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:
offsetLeft - the offset on the left side
offsetRight - the offset on the right side
Returns:
true if the motif model was modified otherwise false

getReverseComplementDistributions

public static double[][][] getReverseComplementDistributions(ComplementableDiscreteAlphabet abc,
                                                             double[][][] condDistr)
This method computes the reverse complement distributions for given conditional distributions. This method is used to determine the context of a motif.

Parameters:
abc - the alphabet
condDistr - the conditional distribution
Returns:
the complement of the conditional distribution that can be used for computing a combing conditional distribution

getStrand

public StrandedLocatedSequenceAnnotationWithLength.Strand getStrand(Sequence seq,
                                                                    int startPos)
This method returns the preferred StrandedLocatedSequenceAnnotationWithLength.Strand for a given subsequence.

Parameters:
seq - the sequence
startPos - the start position
Returns:
the StrandedLocatedSequenceAnnotationWithLength.Strand of this subsequence
See Also:
AbstractMixtureScoringFunction.getIndexOfMaximalComponentFor(Sequence, int)

isStrandScoringFunction

public static boolean isStrandScoringFunction(NormalizableScoringFunction nsf)
Check whether a NormalizableScoringFunction is a StrandScoringFunction.

Parameters:
nsf - the original NormalizableScoringFunction
Returns:
true if the NormalizableScoringFunction is a StrandScoringFunction