SampledMultispot::GibbsSampler Class Reference
[Storm classes]

Draw samples from the spot states given the spots positions and some data. More...

#include <sampled_multispot.h>

List of all members.

Public Member Functions

 GibbsSampler (const vector< vector< double > > &pixel_intensities_, const vector< vector< double > > &spot_intensities_, const vector< Vector< 4 > > &spots_, const Matrix< 3 > A_, const Vector< 3 > pi_, double variance_, int sample_iterations_)
void set_variance (double v)
void reset ()
template<class T >
void next (T &rng)
const vector< vector< State > > & sample () const
const vector< vector< double > > & sample_intensities () const

Private Attributes

const vector< vector< double > > & pixel_intensities
const vector< vector< double > > & spot_intensities
const vector< Vector< 4 > > spots
const Matrix< 3 > A
const Vector< 3 > pi
const double base_variance
double variance
const int sample_iterations
const int num_frames
const int num_pixels
const vector< int > O
vector< vector< State > > current_sample
vector< vector< double > > current_sample_intensities

Detailed Description

Draw samples from the spot states given the spots positions and some data.

Variable naming matches that in FitSpots.

Definition at line 207 of file sampled_multispot.h.


Constructor & Destructor Documentation

SampledMultispot::GibbsSampler::GibbsSampler ( const vector< vector< double > > &  pixel_intensities_,
const vector< vector< double > > &  spot_intensities_,
const vector< Vector< 4 > > &  spots_,
const Matrix< 3 >  A_,
const Vector< 3 >  pi_,
double  variance_,
int  sample_iterations_ 
) [inline]

Definition at line 226 of file sampled_multispot.h.

References assert_same_size(), pixel_intensities, and spot_intensities.

00233     :pixel_intensities(pixel_intensities_), //pixel_intensities: [frame][pixels]
00234      spot_intensities(spot_intensities_),   //spot_intensities: [spot][pixel]
00235      spots(spots_),
00236      A(A_),
00237      pi(pi_),
00238      base_variance(variance_),
00239      variance(variance_),
00240      sample_iterations(sample_iterations_),
00241      num_frames(pixel_intensities.size()),
00242      num_pixels(pixel_intensities[0].size()),
00243         //Observations vector. As usual for this application, the observations are just
00244         //numbered integers which refer to data held elsewhere.
00245      O(sequence(num_frames)),
00246         //Start all spots OFF, so the intensity is 0. OFF is 1 or 2, not 0!!!
00247         //sample_list: [sample][spot][frame]: list of samples drawn using Gibbs sampling
00248      current_sample(spots.size(), vector<State>(num_frames, 2)), //current sample [spot][frame]
00249         //pixel intensities assosciated with the current sample [frame][pixel]
00250      current_sample_intensities(num_frames, vector<double>(num_pixels))
00251     {
00252         //Check a bunch of stuff
00253         assert_same_size(pixel_intensities);
00254         assert_same_size(spot_intensities);
00255 
00256     }


Member Function Documentation

void SampledMultispot::GibbsSampler::set_variance ( double  v  )  [inline]

Update the noide variance.

Used for adding thermal noise.

Parameters:
v noise variance.

Definition at line 260 of file sampled_multispot.h.

References variance.

00261     {
00262         variance = v;
00263     }

void SampledMultispot::GibbsSampler::reset (  )  [inline]

Reset the gibbs sampler oro the initial state (all spots off).

Definition at line 267 of file sampled_multispot.h.

References base_variance, current_sample, current_sample_intensities, num_frames, num_pixels, and variance.

00268     {
00269         vector<State> off(num_frames, 2);
00270         fill(current_sample.begin(), current_sample.end(), off);
00271 
00272         vector<double> black(num_pixels);
00273         fill(current_sample_intensities.begin(), current_sample_intensities.end(), black);
00274         variance = base_variance;
00275     }

template<class T >
void SampledMultispot::GibbsSampler::next ( T &  rng  )  [inline]

Get the next sample.

Parameters:
rng Random number generator

Definition at line 279 of file sampled_multispot.h.

References A, SampledMultispot::add_spot(), current_sample, current_sample_intensities, forward_algorithm_delta(), O, pi, pixel_intensities, SampledMultispot::remove_spot(), sample_iterations, spot_intensities, spots, and variance.

00280     {
00281         for(int j=0; j < sample_iterations; j++)
00282             for(int k=0; k < (int) spots.size(); k++)
00283             {
00284                 //Subtract off the spot we're interested in.
00285                 remove_spot(current_sample_intensities, spot_intensities[k], current_sample[k]);
00286 
00287                 //Now current_sample_intensities is the image value for every spot in every frame,
00288                 //except the current spot, which is always set to off. This allows us to add it in 
00289                 //easily.
00290                 SpotWithBackground B(current_sample_intensities, spot_intensities[k], pixel_intensities, variance);
00291                 vector<array<double, 3> > delta = forward_algorithm_delta(A, pi, B, O);
00292                 current_sample[k] = backward_sampling<3,State, T>(A, delta, rng);
00293 
00294                 //Put the newly sampled spot in
00295                 add_spot(current_sample_intensities, spot_intensities[k], current_sample[k]);
00296             }
00297     }

const vector<vector<State> >& SampledMultispot::GibbsSampler::sample (  )  const [inline]

Retrieve the current sample.

Definition at line 305 of file sampled_multispot.h.

References current_sample.

00306     {
00307         return current_sample;
00308     }

const vector<vector<double> >& SampledMultispot::GibbsSampler::sample_intensities (  )  const [inline]

Retrieve the intensities for the current sample.

Definition at line 310 of file sampled_multispot.h.

References current_sample_intensities.

00311     {
00312         return current_sample_intensities;
00313     }


Member Data Documentation

const vector<vector<double> >& SampledMultispot::GibbsSampler::pixel_intensities [private]

Definition at line 209 of file sampled_multispot.h.

Referenced by GibbsSampler(), and next().

const vector<vector<double> >& SampledMultispot::GibbsSampler::spot_intensities [private]

Definition at line 210 of file sampled_multispot.h.

Referenced by GibbsSampler(), and next().

const vector<Vector<4> > SampledMultispot::GibbsSampler::spots [private]

Definition at line 211 of file sampled_multispot.h.

Referenced by next().

const Matrix<3> SampledMultispot::GibbsSampler::A [private]

Definition at line 212 of file sampled_multispot.h.

Referenced by next().

const Vector<3> SampledMultispot::GibbsSampler::pi [private]

Definition at line 213 of file sampled_multispot.h.

Referenced by next().

Definition at line 214 of file sampled_multispot.h.

Referenced by reset().

Definition at line 215 of file sampled_multispot.h.

Referenced by next(), reset(), and set_variance().

Definition at line 217 of file sampled_multispot.h.

Referenced by next().

Definition at line 218 of file sampled_multispot.h.

Referenced by reset().

Definition at line 218 of file sampled_multispot.h.

Referenced by reset().

const vector<int> SampledMultispot::GibbsSampler::O [private]

Definition at line 219 of file sampled_multispot.h.

Referenced by next().

Definition at line 221 of file sampled_multispot.h.

Referenced by next(), reset(), and sample().

Definition at line 222 of file sampled_multispot.h.

Referenced by next(), reset(), and sample_intensities().


The documentation for this class was generated from the following file:
Generated on Wed Nov 2 18:00:04 2011 for BCUBED by  doxygen 1.6.3