![]() |
Rosetta Utilities
2014.35
|
A histogram with fixed-width bins. More...
#include <Histogram.hh>
Public Types | |
enum | BinPlacement { left, center } |
enum | Interpolator { flat, linear, spline } |
![]() | |
typedef platform::Size | Size |
typedef platform::Size | size_type |
Public Member Functions | |
std::string | to_string (Interpolator const &interpolator) const |
Histogram (utility::vector1< Y > const &densities, const X first_bin, const X step_size, const bool periodic=false, const BinPlacement bin_placement=left, const Interpolator interp=linear) | |
Initialize a histogram with the given density distribution. More... | |
Histogram (Histogram const &h) | |
Copy Constructor. More... | |
Histogram (std::istream &file) | |
Generate Histogram from a file. More... | |
~Histogram () | |
destructor More... | |
utility::vector1< Y > | densities () const |
The densities array. More... | |
utility::vector1< Y > & | densities () |
X | first_bin () const |
The x-value of the left corner of the first bin. More... | |
X & | first_bin () |
X | last_bin () const |
The x-value of the left corner of the last bin. More... | |
X | last_bin_right () const |
The x-value of the right corner of the last bin. More... | |
X | step_size () const |
Return the distance between two bins. More... | |
X & | step_size () |
bool | periodic () const |
Return whether this histogram is periodic. More... | |
bool & | periodic () |
BinPlacement | bin_placement () const |
The bin placement. More... | |
BinPlacement & | bin_placement () |
Interpolator | interpolator () const |
Interpolator & | interpolator () |
X | minimum () const |
The smallest value for which we can interpolate. More... | |
X | maximum () const |
The largest value for which we can interpolate. More... | |
size_type | nbins () const |
The number of bins. More... | |
bool | interpolate (X const &x, Y &y) const |
Interpolates a density for a given x-value from the histogram. More... | |
bool | interpolate (X const &x, Y &y, Real &dy) const |
Interpolates a density for a given x-value from the histogram. More... | |
bool | derivative (X const &x, Y &dy) const |
The derivative of f(x), linearly interpolated. More... | |
bool | interpolate_spline (X const &x, Y &y, Real &dy) const |
![]() | |
void | ctor () |
virtual | ~ReferenceCount () |
Destructor. More... | |
Size | ref_count () const |
Reference count. More... | |
Protected Member Functions | |
void | set_params (std::map< std::string, std::string > const ¶ms) |
Set properties of this histogram from a map of strings. More... | |
platform::SSize | bin_number (X const &x, X &a) const |
get the number of the bin to the left of X. More... | |
bool | interpolate_flat (X const &x, Y &y) const |
Returns the density of the bin which x belongs to. More... | |
bool | interpolate_linear (X const &x, Y &y) const |
bool | derivative_linear (X const &x, Y &y) const |
The derivative of f(x), linearly interpolated. More... | |
![]() | |
ReferenceCount () | |
Default constructor. More... | |
ReferenceCount (ReferenceCount const &) | |
Copy constructor. More... | |
ReferenceCount & | operator= (ReferenceCount const &) |
Copy assignment. More... | |
Static Protected Member Functions | |
static void | read_from_db (std::istream &db_file, utility::vector1< Y > &energies, std::map< std::string, std::string > ¶ms) |
Read a score function from the minirosetta_database into an array. More... | |
Protected Attributes | |
utility::vector1< Y > | densities_ |
X | min_ |
the x value of densities_[0]. Not actually the minimum for BinPlacement other than left. More... | |
X | step_ |
bool | periodic_ |
BinPlacement | bin_placement_ |
Interpolator | interpolator_ |
utility::pointer::owning_ptr < numeric::interpolation::spline::Interpolator > | spline_interpolator_ |
A histogram with fixed-width bins.
Histograms are commonly used to approximate arbitrary functions. At their most basic level they just map X values to f(X) for discrete, regularly spaced values of X. Usually you then interpolate between the stored Y values so that all values of X can be evaluated.
When creating a histogram the range and bin width must be given. Several parameters can also be specified to set how the interpolation will work. After that the function can be approximated for arbitrary X values by calling interpolate(). The important parameters describing how to interpolate are:
Bins can be visualized as follows: w is the bin width; n is the number of bins; X_0 is the value of the first bin
X | The range of the function. Should support the operations expected of real types. Examples: numeric::Real, float, double |
Y | The domain of the function. Should support the operations expected of real types. |
enum numeric::interpolation::Histogram::BinPlacement |
enum numeric::interpolation::Histogram::Interpolator |
|
inline |
Initialize a histogram with the given density distribution.
densities | A vector giving the densities of each bin |
first_bin | The x-value of the first bin |
step_size | The width of each bin |
bin_placement | Indicate what x-value the bins are mapped to: the left corner, the center of the bin, or the right corner |
|
inline |
Copy Constructor.
|
inline |
Generate Histogram from a file.
The parameters for the histogram (eg range, step size, etc) are read from any
fields | in the file header present, otherwise they are set to default values and can be changed after instantiation. |
References numeric::interpolation::Histogram< typename, typename >::densities_, basic::options::OptionKeys::dna::specificity::params, numeric::interpolation::Histogram< typename, typename >::read_from_db(), and numeric::interpolation::Histogram< typename, typename >::set_params().
|
inline |
destructor
|
inlineprotected |
get the number of the bin to the left of X.
Takes periodicity and bin alignment into account. A periodic histogram will always return a number in [1,nbins] A nonperiodic histogram makes no guarentees that its return value will fall within the allowed bounds of 1 through nbins. You should do bounds checking elsewhere to assert that x is within the allowed range.
x[in] | The independent axis value |
a[out] | The alpha fraction: (x-x_l)/(x_u-x_l) for bin [x_l,x_u] |
x is in the domain of the histogram. For nonperiodic histograms, this means minimum() <= x < maximum()
References basic::options::OptionKeys::lh::fragpdb::bin, numeric::interpolation::Histogram< typename, typename >::first_bin(), numeric::modulo(), numeric::interpolation::Histogram< typename, typename >::nbins(), and numeric::interpolation::Histogram< typename, typename >::step_.
Referenced by numeric::interpolation::Histogram< typename, typename >::derivative_linear(), numeric::interpolation::Histogram< typename, typename >::interpolate_flat(), and numeric::interpolation::Histogram< typename, typename >::interpolate_linear().
|
inline |
The bin placement.
References numeric::interpolation::Histogram< typename, typename >::bin_placement_.
|
inline |
|
inline |
The densities array.
References numeric::interpolation::Histogram< typename, typename >::densities_.
|
inline |
|
inline |
The derivative of f(x), linearly interpolated.
For x between bins, this is just the slope of the interpolation line. For x on a bin the slope of the line to the right is used.
[in] | x | The point on the independant axis for which to get the derivative |
[out] | dy | An approximation of df/dx, cast to a Y. |
References numeric::interpolation::Histogram< typename, typename >::derivative_linear(), numeric::interpolation::Histogram< typename, typename >::flat, numeric::interpolation::Histogram< typename, typename >::interpolate_spline(), numeric::interpolation::Histogram< typename, typename >::interpolator_, numeric::interpolation::Histogram< typename, typename >::linear, numeric::interpolation::Histogram< typename, typename >::spline, numeric::interpolation::Histogram< typename, typename >::to_string(), and utility_exit_with_message.
|
inlineprotected |
The derivative of f(x), linearly interpolated.
For x between bins, this is just the slope of the interpolation line. For x on a bin the slope of the line to the right is used.
Note that the derivative will not be continuous when calculated in this way.
References numeric::interpolation::Histogram< typename, typename >::bin_number(), numeric::interpolation::Histogram< typename, typename >::bin_placement_, numeric::interpolation::Histogram< typename, typename >::center, numeric::interpolation::Histogram< typename, typename >::densities_, numeric::interpolation::Histogram< typename, typename >::interpolator_, numeric::interpolation::Histogram< typename, typename >::left, numeric::interpolation::Histogram< typename, typename >::maximum(), numeric::interpolation::Histogram< typename, typename >::minimum(), numeric::interpolation::Histogram< typename, typename >::nbins(), numeric::interpolation::Histogram< typename, typename >::periodic_, numeric::interpolation::Histogram< typename, typename >::step_, numeric::interpolation::Histogram< typename, typename >::to_string(), and utility_exit_with_message.
Referenced by numeric::interpolation::Histogram< typename, typename >::derivative().
|
inline |
The x-value of the left corner of the first bin.
References numeric::interpolation::Histogram< typename, typename >::min_.
Referenced by numeric::interpolation::Histogram< typename, typename >::bin_number().
|
inline |
|
inline |
Interpolates a density for a given x-value from the histogram.
Takes the periodicity and bin placement into account.
[in] | x | The independant axis value to be interpolated |
[out] | y | An approximation of f(x), as specified by the Interpolator |
References numeric::interpolation::Histogram< typename, typename >::flat, numeric::interpolation::Histogram< typename, typename >::interpolate_flat(), numeric::interpolation::Histogram< typename, typename >::interpolate_linear(), numeric::interpolation::Histogram< typename, typename >::interpolate_spline(), numeric::interpolation::Histogram< typename, typename >::interpolator_, numeric::interpolation::Histogram< typename, typename >::linear, numeric::interpolation::Histogram< typename, typename >::spline, numeric::interpolation::Histogram< typename, typename >::to_string(), and utility_exit_with_message.
|
inline |
Interpolates a density for a given x-value from the histogram.
Takes the periodicity and bin placement into account.
[in] | x | The independant axis value to be interpolated |
[out] | y | An approximation of f(x), as specified by the Interpolator |
[out] | dy | derivative of f(x). Note: only with spline interpolator for now |
References numeric::interpolation::Histogram< typename, typename >::interpolate_spline(), numeric::interpolation::Histogram< typename, typename >::interpolator_, numeric::interpolation::Histogram< typename, typename >::spline, numeric::interpolation::Histogram< typename, typename >::to_string(), and utility_exit_with_message.
|
inlineprotected |
Returns the density of the bin which x belongs to.
If x is outside of the range of bins, returns zero.
References basic::options::OptionKeys::lh::fragpdb::bin, numeric::interpolation::Histogram< typename, typename >::bin_number(), numeric::interpolation::Histogram< typename, typename >::densities_, numeric::interpolation::Histogram< typename, typename >::maximum(), numeric::interpolation::Histogram< typename, typename >::minimum(), numeric::interpolation::Histogram< typename, typename >::nbins(), and numeric::interpolation::Histogram< typename, typename >::periodic_.
Referenced by numeric::interpolation::Histogram< typename, typename >::interpolate().
|
inlineprotected |
References numeric::interpolation::Histogram< typename, typename >::bin_number(), numeric::interpolation::Histogram< typename, typename >::bin_placement_, numeric::interpolation::Histogram< typename, typename >::center, numeric::interpolation::Histogram< typename, typename >::densities_, numeric::interpolation::interpolated(), numeric::interpolation::Histogram< typename, typename >::interpolator_, numeric::interpolation::Histogram< typename, typename >::left, numeric::interpolation::Histogram< typename, typename >::maximum(), numeric::interpolation::Histogram< typename, typename >::minimum(), numeric::interpolation::Histogram< typename, typename >::nbins(), numeric::interpolation::Histogram< typename, typename >::periodic_, numeric::interpolation::Histogram< typename, typename >::step_, numeric::interpolation::Histogram< typename, typename >::to_string(), and utility_exit_with_message.
Referenced by numeric::interpolation::Histogram< typename, typename >::interpolate().
|
inline |
References numeric::interpolation::spline::Interpolator::interpolate(), and numeric::interpolation::Histogram< typename, typename >::spline_interpolator_.
Referenced by numeric::interpolation::Histogram< typename, typename >::derivative(), and numeric::interpolation::Histogram< typename, typename >::interpolate().
|
inline |
|
inline |
|
inline |
The x-value of the left corner of the last bin.
References numeric::interpolation::Histogram< typename, typename >::min_, numeric::interpolation::Histogram< typename, typename >::nbins(), and numeric::interpolation::Histogram< typename, typename >::step_.
|
inline |
The x-value of the right corner of the last bin.
References numeric::interpolation::Histogram< typename, typename >::min_, numeric::interpolation::Histogram< typename, typename >::nbins(), and numeric::interpolation::Histogram< typename, typename >::step_.
Referenced by numeric::interpolation::Histogram< typename, typename >::set_params().
|
inline |
The largest value for which we can interpolate.
All values of x where minimum()<=x<maximum() can be interpolated.
References numeric::interpolation::Histogram< typename, typename >::bin_placement_, numeric::interpolation::Histogram< typename, typename >::center, numeric::interpolation::Histogram< typename, typename >::flat, numeric::interpolation::Histogram< typename, typename >::interpolator_, numeric::interpolation::Histogram< typename, typename >::left, numeric::interpolation::Histogram< typename, typename >::linear, numeric::interpolation::Histogram< typename, typename >::min_, numeric::interpolation::Histogram< typename, typename >::nbins(), numeric::interpolation::Histogram< typename, typename >::spline, numeric::interpolation::Histogram< typename, typename >::step_, numeric::interpolation::Histogram< typename, typename >::to_string(), and utility_exit_with_message.
Referenced by numeric::interpolation::Histogram< typename, typename >::derivative_linear(), numeric::interpolation::Histogram< typename, typename >::interpolate_flat(), numeric::interpolation::Histogram< typename, typename >::interpolate_linear(), and numeric::interpolation::Histogram< typename, typename >::set_params().
|
inline |
The smallest value for which we can interpolate.
All values of x where minimum()<=x<maximum() can be interpolated.
References numeric::interpolation::Histogram< typename, typename >::bin_placement_, numeric::interpolation::Histogram< typename, typename >::center, numeric::interpolation::Histogram< typename, typename >::flat, numeric::interpolation::Histogram< typename, typename >::interpolator_, numeric::interpolation::Histogram< typename, typename >::left, numeric::interpolation::Histogram< typename, typename >::linear, numeric::interpolation::Histogram< typename, typename >::min_, numeric::interpolation::Histogram< typename, typename >::spline, numeric::interpolation::Histogram< typename, typename >::step_, numeric::interpolation::Histogram< typename, typename >::to_string(), and utility_exit_with_message.
Referenced by numeric::interpolation::Histogram< typename, typename >::derivative_linear(), numeric::interpolation::Histogram< typename, typename >::interpolate_flat(), numeric::interpolation::Histogram< typename, typename >::interpolate_linear(), and numeric::interpolation::Histogram< typename, typename >::set_params().
|
inline |
The number of bins.
References numeric::interpolation::Histogram< typename, typename >::densities_.
Referenced by numeric::interpolation::Histogram< typename, typename >::bin_number(), numeric::interpolation::Histogram< typename, typename >::derivative_linear(), numeric::interpolation::Histogram< typename, typename >::interpolate_flat(), numeric::interpolation::Histogram< typename, typename >::interpolate_linear(), numeric::interpolation::Histogram< typename, typename >::last_bin(), numeric::interpolation::Histogram< typename, typename >::last_bin_right(), numeric::interpolation::Histogram< typename, typename >::maximum(), and numeric::interpolation::Histogram< typename, typename >::set_params().
|
inline |
Return whether this histogram is periodic.
References numeric::interpolation::Histogram< typename, typename >::periodic_.
|
inline |
|
inlinestaticprotected |
Read a score function from the minirosetta_database into an array.
The scoring function should be represented as a list of Energies, one number per line. Lines begining with '#' are ignored as comments.
Files can contain parameter settings such as the range and step size. These are given by directives beginning with '@'.
References utility::io::oc::cerr, utility::io::getline(), basic::options::OptionKeys::key, line, and value.
Referenced by numeric::interpolation::Histogram< typename, typename >::Histogram().
|
inlineprotected |
Set properties of this histogram from a map of strings.
Input is validated before being stored. Invalid input results in a printed warning and the previous (probably default) value being used instead.
Parameters currently recognised:
References numeric::interpolation::spline::SplineGenerator::add_known_value(), numeric::interpolation::Histogram< typename, typename >::bin_placement_, numeric::interpolation::Histogram< typename, typename >::center, utility::io::oc::cerr, numeric::interpolation::Histogram< typename, typename >::densities_, numeric::eq_tol(), numeric::interpolation::Histogram< typename, typename >::flat, basic::options::OptionKeys::gen, numeric::interpolation::spline::SplineGenerator::get_interpolator(), numeric::interpolation::Histogram< typename, typename >::interpolator_, basic::options::OptionKeys::key, numeric::interpolation::Histogram< typename, typename >::last_bin_right(), numeric::interpolation::Histogram< typename, typename >::left, numeric::interpolation::Histogram< typename, typename >::linear, numeric::max(), numeric::interpolation::Histogram< typename, typename >::maximum(), numeric::min(), numeric::interpolation::Histogram< typename, typename >::min_, numeric::interpolation::Histogram< typename, typename >::minimum(), numeric::interpolation::Histogram< typename, typename >::nbins(), numeric::interpolation::Histogram< typename, typename >::periodic_, numeric::interpolation::Histogram< typename, typename >::spline, numeric::interpolation::Histogram< typename, typename >::spline_interpolator_, numeric::interpolation::Histogram< typename, typename >::step_, utility_exit_with_message, and value.
Referenced by numeric::interpolation::Histogram< typename, typename >::Histogram().
|
inline |
Return the distance between two bins.
References numeric::interpolation::Histogram< typename, typename >::step_.
|
inline |
|
inline |
References numeric::interpolation::Histogram< typename, typename >::flat, numeric::interpolation::Histogram< typename, typename >::linear, and numeric::interpolation::Histogram< typename, typename >::spline.
Referenced by numeric::interpolation::Histogram< typename, typename >::derivative(), numeric::interpolation::Histogram< typename, typename >::derivative_linear(), numeric::interpolation::Histogram< typename, typename >::interpolate(), numeric::interpolation::Histogram< typename, typename >::interpolate_linear(), numeric::interpolation::Histogram< typename, typename >::maximum(), and numeric::interpolation::Histogram< typename, typename >::minimum().
|
protected |
Referenced by numeric::interpolation::Histogram< typename, typename >::bin_placement(), numeric::interpolation::Histogram< typename, typename >::derivative_linear(), numeric::interpolation::Histogram< typename, typename >::interpolate_linear(), numeric::interpolation::Histogram< typename, typename >::maximum(), numeric::interpolation::Histogram< typename, typename >::minimum(), and numeric::interpolation::Histogram< typename, typename >::set_params().
|
protected |
Referenced by numeric::interpolation::Histogram< typename, typename >::densities(), numeric::interpolation::Histogram< typename, typename >::derivative_linear(), numeric::interpolation::Histogram< typename, typename >::Histogram(), numeric::interpolation::Histogram< typename, typename >::interpolate_flat(), numeric::interpolation::Histogram< typename, typename >::interpolate_linear(), numeric::interpolation::Histogram< typename, typename >::nbins(), and numeric::interpolation::Histogram< typename, typename >::set_params().
|
protected |
Referenced by numeric::interpolation::Histogram< typename, typename >::derivative(), numeric::interpolation::Histogram< typename, typename >::derivative_linear(), numeric::interpolation::Histogram< typename, typename >::interpolate(), numeric::interpolation::Histogram< typename, typename >::interpolate_linear(), numeric::interpolation::Histogram< typename, typename >::interpolator(), numeric::interpolation::Histogram< typename, typename >::maximum(), numeric::interpolation::Histogram< typename, typename >::minimum(), and numeric::interpolation::Histogram< typename, typename >::set_params().
|
protected |
the x value of densities_[0]. Not actually the minimum for BinPlacement other than left.
Referenced by numeric::interpolation::Histogram< typename, typename >::first_bin(), numeric::interpolation::Histogram< typename, typename >::last_bin(), numeric::interpolation::Histogram< typename, typename >::last_bin_right(), numeric::interpolation::Histogram< typename, typename >::maximum(), numeric::interpolation::Histogram< typename, typename >::minimum(), and numeric::interpolation::Histogram< typename, typename >::set_params().
|
protected |
Referenced by numeric::interpolation::Histogram< typename, typename >::derivative_linear(), numeric::interpolation::Histogram< typename, typename >::interpolate_flat(), numeric::interpolation::Histogram< typename, typename >::interpolate_linear(), numeric::interpolation::Histogram< typename, typename >::periodic(), and numeric::interpolation::Histogram< typename, typename >::set_params().
|
protected |
|
protected |
Referenced by numeric::interpolation::Histogram< typename, typename >::bin_number(), numeric::interpolation::Histogram< typename, typename >::derivative_linear(), numeric::interpolation::Histogram< typename, typename >::interpolate_linear(), numeric::interpolation::Histogram< typename, typename >::last_bin(), numeric::interpolation::Histogram< typename, typename >::last_bin_right(), numeric::interpolation::Histogram< typename, typename >::maximum(), numeric::interpolation::Histogram< typename, typename >::minimum(), numeric::interpolation::Histogram< typename, typename >::set_params(), and numeric::interpolation::Histogram< typename, typename >::step_size().