Multi-variate spherical gaussian kernel PDF. More...
#include <vpdfl_gaussian_kernel_pdf.h>
Public Member Functions | |
vpdfl_gaussian_kernel_pdf () | |
Dflt ctor. | |
virtual | ~vpdfl_gaussian_kernel_pdf () |
Destructor. | |
virtual vpdfl_sampler_base * | new_sampler () const |
Create a sampler object on the heap. | |
virtual double | operator() (const vnl_vector< double > &x) const |
Probability density at x. | |
virtual double | log_p (const vnl_vector< double > &x) const |
Log of probability density at x. | |
virtual void | gradient (vnl_vector< double > &g, const vnl_vector< double > &x, double &p) const |
Gradient of PDF at x. | |
virtual void | nearest_plausible (vnl_vector< double > &x, double log_p_min) const |
Compute nearest point to x which has a density above a threshold. | |
short | version_no () const |
Version number for I/O. | |
virtual vcl_string | is_a () const |
Name of the class. | |
virtual bool | is_class (vcl_string const &s) const |
Does the name of the class match the argument?. | |
virtual vpdfl_pdf_base * | clone () const |
Create a copy on the heap and return base class pointer. | |
virtual void | print_summary (vcl_ostream &os) const |
Print class to os. | |
virtual void | b_write (vsl_b_ostream &bfs) const |
Save class to binary file stream. | |
virtual void | b_read (vsl_b_istream &bfs) |
Load class from binary file stream. | |
void | set_centres (const vnl_vector< double > *x, int n, double width) |
Initialise so all kernels have the same width. | |
void | set_centres (const vnl_vector< double > *x, int n, const vnl_vector< double > &width) |
Initialise so all kernels have given width. | |
const vcl_vector< vnl_vector < double > > & | centre () const |
Position of kernel centres. | |
const vnl_vector< double > & | width () const |
Width of each kernel. | |
bool | all_same_width () const |
True if all kernels have the same width. | |
const vnl_vector< double > & | mean () const |
Mean of distribution. | |
const vnl_vector< double > & | variance () const |
Variance of each dimension. | |
int | n_dims () const |
Number of dimensions. | |
virtual int | n_peaks () const |
Number of peaks of distribution. | |
virtual const vnl_vector < double > & | peak (int) const |
Position of the i'th peak. | |
virtual void | gradient_logp (vnl_vector< double > &g, const vnl_vector< double > &x) const |
Gradient and value of log(p(x)) at x. | |
virtual double | log_prob_thresh (double pass_proportion) const |
Compute threshold for PDF to pass a given proportion. | |
virtual bool | is_valid_pdf () const |
Return true if the object represents a valid PDF. | |
Protected Member Functions | |
void | calc_mean_var () |
Compute mean/variance given current centres and widths. | |
void | set_mean (const vnl_vector< double > &m) |
void | set_variance (const vnl_vector< double > &v) |
Protected Attributes | |
vcl_vector< vnl_vector< double > > | x_ |
Position of kernel centres. | |
vnl_vector< double > | width_ |
Width of each kernel. | |
bool | all_same_width_ |
True if all kernels have the same width. |
Multi-variate spherical gaussian kernel PDF.
Definition at line 16 of file vpdfl_gaussian_kernel_pdf.h.
vpdfl_gaussian_kernel_pdf::vpdfl_gaussian_kernel_pdf | ( | ) |
Dflt ctor.
Definition at line 23 of file vpdfl_gaussian_kernel_pdf.cxx.
vpdfl_gaussian_kernel_pdf::~vpdfl_gaussian_kernel_pdf | ( | ) | [virtual] |
Destructor.
Definition at line 29 of file vpdfl_gaussian_kernel_pdf.cxx.
bool vpdfl_kernel_pdf::all_same_width | ( | ) | const [inline, inherited] |
True if all kernels have the same width.
Definition at line 63 of file vpdfl_kernel_pdf.h.
void vpdfl_gaussian_kernel_pdf::b_read | ( | vsl_b_istream & | bfs | ) | [virtual] |
Load class from binary file stream.
Reimplemented from vpdfl_kernel_pdf.
Definition at line 156 of file vpdfl_gaussian_kernel_pdf.cxx.
void vpdfl_gaussian_kernel_pdf::b_write | ( | vsl_b_ostream & | bfs | ) | const [virtual] |
Save class to binary file stream.
Reimplemented from vpdfl_kernel_pdf.
Definition at line 145 of file vpdfl_gaussian_kernel_pdf.cxx.
void vpdfl_kernel_pdf::calc_mean_var | ( | ) | [protected, inherited] |
Compute mean/variance given current centres and widths.
Definition at line 33 of file vpdfl_kernel_pdf.cxx.
const vcl_vector<vnl_vector<double> >& vpdfl_kernel_pdf::centre | ( | ) | const [inline, inherited] |
Position of kernel centres.
Definition at line 57 of file vpdfl_kernel_pdf.h.
vpdfl_pdf_base * vpdfl_gaussian_kernel_pdf::clone | ( | ) | const [virtual] |
Create a copy on the heap and return base class pointer.
Implements vpdfl_pdf_base.
Definition at line 126 of file vpdfl_gaussian_kernel_pdf.cxx.
void vpdfl_gaussian_kernel_pdf::gradient | ( | vnl_vector< double > & | g, |
const vnl_vector< double > & | x, | ||
double & | p | ||
) | const [virtual] |
Gradient of PDF at x.
Implements vpdfl_pdf_base.
Definition at line 78 of file vpdfl_gaussian_kernel_pdf.cxx.
void vpdfl_pdf_base::gradient_logp | ( | vnl_vector< double > & | g, |
const vnl_vector< double > & | x | ||
) | const [virtual, inherited] |
Gradient and value of log(p(x)) at x.
Gradient of log(p(x)) at x.
Computes gradient df/dx of f(x)=log(p(x)) at x. Result is vector of same dimensionality as x. Default baseclass implementation uses gradient() to compute grad/p
Computes gradient df/dx of f(x)=log(p(x)) at x. Default baseclass implementation uses gradient() to compute grad/p
Reimplemented in vpdfl_axis_gaussian.
Definition at line 127 of file vpdfl_pdf_base.cxx.
vcl_string vpdfl_gaussian_kernel_pdf::is_a | ( | ) | const [virtual] |
Name of the class.
Reimplemented from vpdfl_kernel_pdf.
Definition at line 98 of file vpdfl_gaussian_kernel_pdf.cxx.
bool vpdfl_gaussian_kernel_pdf::is_class | ( | vcl_string const & | s | ) | const [virtual] |
Does the name of the class match the argument?.
Reimplemented from vpdfl_kernel_pdf.
Definition at line 108 of file vpdfl_gaussian_kernel_pdf.cxx.
bool vpdfl_pdf_base::is_valid_pdf | ( | ) | const [virtual, inherited] |
Return true if the object represents a valid PDF.
This will return false, if n_dims() is 0, for example just ofter default construction.
Reimplemented in vpdfl_mixture.
Definition at line 141 of file vpdfl_pdf_base.cxx.
double vpdfl_gaussian_kernel_pdf::log_p | ( | const vnl_vector< double > & | x | ) | const [virtual] |
Log of probability density at x.
This value is also the Normalised Mahalanobis distance from the centroid to the given vector.
Implements vpdfl_pdf_base.
Definition at line 60 of file vpdfl_gaussian_kernel_pdf.cxx.
double vpdfl_pdf_base::log_prob_thresh | ( | double | pass_proportion | ) | const [virtual, inherited] |
Compute threshold for PDF to pass a given proportion.
Reimplemented in vpdfl_gaussian, and vpdfl_axis_gaussian.
Definition at line 40 of file vpdfl_pdf_base.cxx.
const vnl_vector<double>& vpdfl_pdf_base::mean | ( | ) | const [inline, inherited] |
Mean of distribution.
Definition at line 46 of file vpdfl_pdf_base.h.
int vpdfl_pdf_base::n_dims | ( | ) | const [inline, inherited] |
Number of dimensions.
Definition at line 52 of file vpdfl_pdf_base.h.
virtual int vpdfl_pdf_base::n_peaks | ( | ) | const [inline, virtual, inherited] |
Number of peaks of distribution.
Definition at line 55 of file vpdfl_pdf_base.h.
void vpdfl_gaussian_kernel_pdf::nearest_plausible | ( | vnl_vector< double > & | x, |
double | log_p_min | ||
) | const [virtual] |
Compute nearest point to x which has a density above a threshold.
If log_p(x)>log_p_min then x unchanged. Otherwise x is moved (typically up the gradient) until log_p(x)>=log_p_min.
x | This may be modified to the nearest plausible position. |
log_p_min | lower threshold for log_p(x) |
Implements vpdfl_pdf_base.
Definition at line 88 of file vpdfl_gaussian_kernel_pdf.cxx.
vpdfl_sampler_base * vpdfl_gaussian_kernel_pdf::new_sampler | ( | ) | const [virtual] |
Create a sampler object on the heap.
Caller is responsible for deletion.
Implements vpdfl_pdf_base.
Definition at line 68 of file vpdfl_gaussian_kernel_pdf.cxx.
double vpdfl_gaussian_kernel_pdf::operator() | ( | const vnl_vector< double > & | x | ) | const [virtual] |
Probability density at x.
Reimplemented from vpdfl_pdf_base.
Definition at line 36 of file vpdfl_gaussian_kernel_pdf.cxx.
virtual const vnl_vector<double>& vpdfl_pdf_base::peak | ( | int | ) | const [inline, virtual, inherited] |
Position of the i'th peak.
Definition at line 58 of file vpdfl_pdf_base.h.
void vpdfl_gaussian_kernel_pdf::print_summary | ( | vcl_ostream & | os | ) | const [virtual] |
Print class to os.
Reimplemented from vpdfl_kernel_pdf.
Definition at line 136 of file vpdfl_gaussian_kernel_pdf.cxx.
void vpdfl_kernel_pdf::set_centres | ( | const vnl_vector< double > * | x, |
int | n, | ||
double | width | ||
) | [inherited] |
Initialise so all kernels have the same width.
width is essentially the sd on the kernels
Definition at line 65 of file vpdfl_kernel_pdf.cxx.
void vpdfl_kernel_pdf::set_centres | ( | const vnl_vector< double > * | x, |
int | n, | ||
const vnl_vector< double > & | width | ||
) | [inherited] |
Initialise so all kernels have given width.
width[i] is essentially the sd on kernel i
Definition at line 78 of file vpdfl_kernel_pdf.cxx.
void vpdfl_pdf_base::set_mean | ( | const vnl_vector< double > & | m | ) | [inline, protected, inherited] |
Reimplemented in vpdfl_gaussian.
Definition at line 35 of file vpdfl_pdf_base.h.
void vpdfl_pdf_base::set_variance | ( | const vnl_vector< double > & | v | ) | [inline, protected, inherited] |
Definition at line 36 of file vpdfl_pdf_base.h.
const vnl_vector<double>& vpdfl_pdf_base::variance | ( | ) | const [inline, inherited] |
Variance of each dimension.
Definition at line 49 of file vpdfl_pdf_base.h.
short vpdfl_gaussian_kernel_pdf::version_no | ( | ) | const |
Version number for I/O.
Reimplemented from vpdfl_kernel_pdf.
Definition at line 117 of file vpdfl_gaussian_kernel_pdf.cxx.
const vnl_vector<double>& vpdfl_kernel_pdf::width | ( | ) | const [inline, inherited] |
Width of each kernel.
Definition at line 60 of file vpdfl_kernel_pdf.h.
bool vpdfl_kernel_pdf::all_same_width_ [protected, inherited] |
True if all kernels have the same width.
Definition at line 34 of file vpdfl_kernel_pdf.h.
vnl_vector<double> vpdfl_kernel_pdf::width_ [protected, inherited] |
Width of each kernel.
Definition at line 31 of file vpdfl_kernel_pdf.h.
vcl_vector<vnl_vector<double> > vpdfl_kernel_pdf::x_ [protected, inherited] |
Position of kernel centres.
Definition at line 28 of file vpdfl_kernel_pdf.h.