de.jstacs.sequenceScores.statisticalModels.trainable.discrete.inhomogeneous
Class FSDAGModelForGibbsSampling

java.lang.Object
  extended by de.jstacs.sequenceScores.statisticalModels.trainable.AbstractTrainableStatisticalModel
      extended by de.jstacs.sequenceScores.statisticalModels.trainable.discrete.DiscreteGraphicalTrainSM
          extended by de.jstacs.sequenceScores.statisticalModels.trainable.discrete.inhomogeneous.InhomogeneousDGTrainSM
              extended by de.jstacs.sequenceScores.statisticalModels.trainable.discrete.inhomogeneous.DAGTrainSM
                  extended by de.jstacs.sequenceScores.statisticalModels.trainable.discrete.inhomogeneous.FSDAGTrainSM
                      extended by de.jstacs.sequenceScores.statisticalModels.trainable.discrete.inhomogeneous.FSDAGModelForGibbsSampling
All Implemented Interfaces:
InstantiableFromParameterSet, GibbsSamplingModel, SamplingComponent, SequenceScore, StatisticalModel, TrainableStatisticalModel, Storable, Cloneable

public class FSDAGModelForGibbsSampling
extends FSDAGTrainSM
implements GibbsSamplingModel

This is the class for a fixed structure directed acyclic graphical model (see FSDAGTrainSM) that can be used in a Gibbs sampling.

Author:
Berit Haldemann, Jens Keilwagen
See Also:
AbstractMixtureTrainSM

Field Summary
protected  int[] counter
          The counter for the sampling steps of each sampling.
protected  File[] paramsFile
          The files for saving the parameters during the sampling.
protected  BufferedReader reader
          The reader for the paramsFile after a sampling.
protected  int samplingIndex
          The index of the current sampling.
protected  BufferedWriter writer
          The writer for the paramsFile in a sampling.
 
Fields inherited from class de.jstacs.sequenceScores.statisticalModels.trainable.discrete.inhomogeneous.DAGTrainSM
constraints
 
Fields inherited from class de.jstacs.sequenceScores.statisticalModels.trainable.discrete.inhomogeneous.InhomogeneousDGTrainSM
DEFAULT_STREAM, sostream
 
Fields inherited from class de.jstacs.sequenceScores.statisticalModels.trainable.discrete.DiscreteGraphicalTrainSM
params, trained
 
Fields inherited from class de.jstacs.sequenceScores.statisticalModels.trainable.AbstractTrainableStatisticalModel
alphabets, length
 
Constructor Summary
FSDAGModelForGibbsSampling(FSDAGModelForGibbsSamplingParameterSet params)
          The default constructor.
FSDAGModelForGibbsSampling(StringBuffer representation)
          This is the constructor for the Storable interface.
 
Method Summary
 void acceptParameters()
          This methods accepts the drawn parameters.
 FSDAGModelForGibbsSampling clone()
          In this method the reader is set to null and the paramsFile is cloned.
 void drawParameters(DataSet data, double[] weights)
          This method draws the parameter of the model from the likelihood or the posterior, respectively.
 void drawParameters(DataSet data, double[] weights, int[][] graph)
          This method draws the parameters of the model from the a posteriori density.
 void extendSampling(int sampling, boolean extend)
          This method allows to extend a sampling.
protected  void finalize()
           
protected  StringBuffer getFurtherModelInfos()
          Returns further model information as a StringBuffer.
 void initForSampling(int starts)
          This method initializes the instance for the sampling.
 boolean isInSamplingMode()
          This method returns true if the object is currently used in a sampling, otherwise false.
 boolean parseNextParameterSet()
          This method allows the user to parse the next set of parameters (from a file).
 boolean parseParameterSet(int sampling, int n)
          This method allows the user to parse the set of parameters with index n of a certain sampling (from a file).
 void samplingStopped()
          This method is the opposite of the method SamplingComponent.extendSampling(int, boolean).
protected  void setFurtherModelInfos(StringBuffer xml)
          This method replaces the internal model information with those from a StringBuffer.
 void train(DataSet data, double[] weights)
          Trains the TrainableStatisticalModel object given the data as DataSet using the specified weights.
 void train(DataSet data, double[] weights, int[][] graph)
          Computes the model with structure graph.
 
Methods inherited from class de.jstacs.sequenceScores.statisticalModels.trainable.discrete.inhomogeneous.FSDAGTrainSM
getInstanceName, getMaximalMarkovOrder, getStructure, getXMLTag, set, train
 
Methods inherited from class de.jstacs.sequenceScores.statisticalModels.trainable.discrete.inhomogeneous.DAGTrainSM
checkAcyclic, createConstraints, emitDataSet, estimateParameters, getLogPriorTerm, getLogProbFor, getNumericalCharacteristics, toString
 
Methods inherited from class de.jstacs.sequenceScores.statisticalModels.trainable.discrete.inhomogeneous.InhomogeneousDGTrainSM
check, setOutputStream
 
Methods inherited from class de.jstacs.sequenceScores.statisticalModels.trainable.discrete.DiscreteGraphicalTrainSM
fromXML, getCurrentParameterSet, getDescription, getESS, isInitialized, toXML
 
Methods inherited from class de.jstacs.sequenceScores.statisticalModels.trainable.AbstractTrainableStatisticalModel
getAlphabetContainer, getCharacteristics, getLength, getLogProbFor, getLogProbFor, getLogScoreFor, getLogScoreFor, getLogScoreFor, getLogScoreFor, getLogScoreFor, toString, train
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

paramsFile

protected File[] paramsFile
The files for saving the parameters during the sampling.


counter

protected int[] counter
The counter for the sampling steps of each sampling.


samplingIndex

protected int samplingIndex
The index of the current sampling.


writer

protected BufferedWriter writer
The writer for the paramsFile in a sampling.


reader

protected BufferedReader reader
The reader for the paramsFile after a sampling.

Constructor Detail

FSDAGModelForGibbsSampling

public FSDAGModelForGibbsSampling(FSDAGModelForGibbsSamplingParameterSet params)
                           throws CloneNotSupportedException,
                                  IllegalArgumentException,
                                  NonParsableException
The default constructor.

Parameters:
params - the parameter set
Throws:
CloneNotSupportedException - if the parameter set could not be cloned
IllegalArgumentException - if the parameter set is not instantiated
NonParsableException - if the parameter set is not parsable

FSDAGModelForGibbsSampling

public FSDAGModelForGibbsSampling(StringBuffer representation)
                           throws NonParsableException
This is the constructor for the Storable interface. Creates a new FSDAGModelForGibbsSampling out of its XML representation.

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

clone

public FSDAGModelForGibbsSampling clone()
                                 throws CloneNotSupportedException
In this method the reader is set to null and the paramsFile is cloned.

Specified by:
clone in interface SequenceScore
Specified by:
clone in interface TrainableStatisticalModel
Overrides:
clone in class DAGTrainSM
Returns:
an object, that is a copy of the current AbstractTrainableStatisticalModel (the member-AlphabetContainer isn't deeply cloned since it is assumed to be immutable). The type of the returned object is defined by the class X directly inherited from AbstractTrainableStatisticalModel. Hence X's clone()-method should work as:
1. Object o = (X)super.clone();
2. all additional member variables of o defined by X that are not of simple data-types like int, double, ... have to be deeply copied
3. return o
Throws:
CloneNotSupportedException - if something went wrong while cloning
See Also:
DAGTrainSM.clone(), Object.clone()

parseNextParameterSet

public boolean parseNextParameterSet()
Description copied from interface: SamplingComponent
This method allows the user to parse the next set of parameters (from a file).

Specified by:
parseNextParameterSet in interface SamplingComponent
Returns:
true if the parameters could be parsed, otherwise false
See Also:
SamplingComponent.parseParameterSet(int, int)

parseParameterSet

public boolean parseParameterSet(int sampling,
                                 int n)
                          throws NumberFormatException,
                                 IOException
Description copied from interface: SamplingComponent
This method allows the user to parse the set of parameters with index n of a certain sampling (from a file). The internal numbering should start with 0. The parameter set with index 0 is the initial (random) parameter set. It is recommended that a series of parameter sets is accessed by the following lines:

for( sampling = 0; sampling < numSampling; sampling++ )
{

boolean b = parseParameterSet( sampling, n );
while( b )
{
//do something
b = parseNextParameterSet();
}
}

Specified by:
parseParameterSet in interface SamplingComponent
Parameters:
sampling - the index of the sampling
n - the index of the parameter set
Returns:
true if the parameter set could be parsed
Throws:
NumberFormatException
IOException
See Also:
SamplingComponent.parseNextParameterSet()

initForSampling

public void initForSampling(int starts)
                     throws IOException
Description copied from interface: SamplingComponent
This method initializes the instance for the sampling. For instance this method can be used to create new files where all parameter sets are stored.

Specified by:
initForSampling in interface SamplingComponent
Parameters:
starts - the number of different sampling starts that will be done
Throws:
IOException - if something went wrong
See Also:
File.createTempFile(String, String, java.io.File )

extendSampling

public void extendSampling(int sampling,
                           boolean extend)
                    throws IOException
Description copied from interface: SamplingComponent
This method allows to extend a sampling.

Specified by:
extendSampling in interface SamplingComponent
Parameters:
sampling - the index of the sampling
extend - whether to append the sampled parameters to an existing file or to overwrite the file
Throws:
IOException - if the file could not be handled correctly

drawParameters

public void drawParameters(DataSet data,
                           double[] weights)
                    throws Exception
Description copied from class: DAGTrainSM
This method draws the parameter of the model from the likelihood or the posterior, respectively.

Specified by:
drawParameters in interface GibbsSamplingModel
Overrides:
drawParameters in class DAGTrainSM
Parameters:
data - the given data
weights - the weights for the sequences in the data
Throws:
Exception - if something went wrong while counting or drawing
See Also:
ConstraintManager.countInhomogeneous(de.jstacs.data.AlphabetContainer, int, DataSet, double[], boolean, de.jstacs.sequenceScores.statisticalModels.trainable.discrete.Constraint...), ConstraintManager.drawFreqs(double, InhCondProb...)

samplingStopped

public void samplingStopped()
                     throws IOException
Description copied from interface: SamplingComponent
This method is the opposite of the method SamplingComponent.extendSampling(int, boolean). It can be used for closing any streams of writer, ...

Specified by:
samplingStopped in interface SamplingComponent
Throws:
IOException - if something went wrong
See Also:
SamplingComponent.extendSampling(int, boolean)

getFurtherModelInfos

protected StringBuffer getFurtherModelInfos()
Description copied from class: DiscreteGraphicalTrainSM
Returns further model information as a StringBuffer.

Overrides:
getFurtherModelInfos in class DAGTrainSM
Returns:
further model information like parameters of the distribution etc. in XML format
See Also:
DiscreteGraphicalTrainSM.toXML()

setFurtherModelInfos

protected void setFurtherModelInfos(StringBuffer xml)
                             throws NonParsableException
Description copied from class: DiscreteGraphicalTrainSM
This method replaces the internal model information with those from a StringBuffer.

Overrides:
setFurtherModelInfos in class DAGTrainSM
Parameters:
xml - contains the model information like parameters of the distribution etc. in XML format
Throws:
NonParsableException - if the StringBuffer could not be parsed
See Also:
DiscreteGraphicalTrainSM.fromXML(StringBuffer)

isInSamplingMode

public boolean isInSamplingMode()
Description copied from interface: SamplingComponent
This method returns true if the object is currently used in a sampling, otherwise false.

Specified by:
isInSamplingMode in interface SamplingComponent
Returns:
true if the object is currently used in a sampling, otherwise false

drawParameters

public void drawParameters(DataSet data,
                           double[] weights,
                           int[][] graph)
                    throws Exception
Description copied from class: FSDAGTrainSM
This method draws the parameters of the model from the a posteriori density. For drawing from the prior you have to set the data and their weights to null. Furthermore this method enables you to specify a new graph structure.

Overrides:
drawParameters in class FSDAGTrainSM
Parameters:
data - a DataSet or null
weights - the (positive) weights for each sequence of the DataSet or null
graph - the graph or null for the current graph
Throws:
Exception - if something went wrong
See Also:
DAGTrainSM.drawParameters(DataSet, double[]), DAGTrainSM.checkAcyclic(int, int[][])

train

public void train(DataSet data,
                  double[] weights)
           throws Exception
Description copied from interface: TrainableStatisticalModel
Trains the TrainableStatisticalModel object given the data as DataSet using the specified weights. The weight at position i belongs to the element at position i. So the array weight should have the number of sequences in the data set as dimension. (Optionally it is possible to use weight == null if all weights have the value one.)
This method should work non-incrementally. That means the result of the following series: train(data1); train(data2) should be a fully trained model over data2 and not over data1+data2. All parameters of the model were given by the call of the constructor.

Specified by:
train in interface TrainableStatisticalModel
Overrides:
train in class FSDAGTrainSM
Parameters:
data - the given sequences as DataSet
weights - the weights of the elements, each weight should be non-negative
Throws:
Exception - if the training did not succeed (e.g. the dimension of weights and the number of sequences in the data set do not match)
See Also:
DataSet.getElementAt(int), DataSet.ElementEnumerator

train

public void train(DataSet data,
                  double[] weights,
                  int[][] graph)
           throws Exception
Description copied from class: FSDAGTrainSM
Computes the model with structure graph.

Overrides:
train in class FSDAGTrainSM
Parameters:
data - the DataSet
weights - the weights for the sequences in the DataSet
graph - the graph
Throws:
Exception - if something went wrong

finalize

protected void finalize()
                 throws Throwable
Overrides:
finalize in class Object
Throws:
Throwable

acceptParameters

public void acceptParameters()
                      throws IOException
Description copied from interface: SamplingComponent
This methods accepts the drawn parameters. Internally the drawn parameters should be saved (to a file).

Specified by:
acceptParameters in interface SamplingComponent
Throws:
IOException - if the file could not be handled correctly