Structural Bioinformatics Library
Template C++ / Python API for developping structural bioinformatics applications.
T_WL_Data_Structure_Internal< Conformation, Bin_properties, DS_snapshot_ > Class Template Reference

bin management: main data structure used by Wang_landau algorithm More...

#include <WL_data_structure_internal.hpp>

Public Member Functions

virtual Snapshot_ptr update_increment ()
 update_increment is called after new points have been generated and accepted(or not) in the WL algo. it updates the increment by which the (log) density is increased when a new point is generated in a given bin. More...
 
void update_densities (const Bin_index &index)
 update_densities updates the density vector when a new point is sampled by the WL algorithm. More...
 
std::pair< bool, Snapshot_ptr > energy_out_of_range (const DS_conformation &conf)
 energy_out_of_range is called when a point is sampled in a not already existing bin. It should handle the creation of a new bin if supported. This should be modified to initialize Custom_per_bin_stats at propers values if needed. More...
 
void update_histogram (const DS_conformation &newpt, const DS_conformation &oldpt, const bool &accepted, const bool &boundary_check)
 update_histogram is called when a new point is sampled. It should be used to store some statistics on how the algorithm is working, which might be later used in update_parameters() More...
 
double & get_density (const Bin_index &index)
 get_density returns the density of a point More...
 
Bin_index get_bin_index_from_energy (const double &e)
 get_bin_index_from_energy finds the bin containing the energy e More...
 
Bin_index get_bin_index_from_energy (const double &e, const double &e1, const Bin_index &i1)
 get_bin_index_from_energy should uses that the point previously sampled should be in a bin close to the new newly sampled point More...
 
bool is_energy_in_range (const DS_conformation &conf)
 is_energy_in_range checks if a Bin_index is valid. More...
 

Protected Member Functions

Bin_index add_bin (Bin_energy_range bin)
 add_bin is a helper function which add a bin to the bin vector/ properties vector More...
 

Detailed Description

template<class Conformation, class Bin_properties = Bin_properties_Internal, template< class >class DS_snapshot_ = T_DS_snapshot_default>
class SBL::GT::T_WL_Data_Structure_Internal< Conformation, Bin_properties, DS_snapshot_ >

bin management: main data structure used by Wang_landau algorithm

  • manages bins (creation, index of bin for point, etc)
  • handles the flat histogram or 1/t policy
  • performs the DoS update for a new point
  • records all relevant stats

Member Function Documentation

◆ add_bin()

Bin_index add_bin ( Bin_energy_range  bin)
inlineprotected

add_bin is a helper function which add a bin to the bin vector/ properties vector

Parameters
bin
Returns

◆ energy_out_of_range()

std::pair<bool,Snapshot_ptr> energy_out_of_range ( const DS_conformation conf)
inline

energy_out_of_range is called when a point is sampled in a not already existing bin. It should handle the creation of a new bin if supported. This should be modified to initialize Custom_per_bin_stats at propers values if needed.

Parameters
conf
Returns
false is returned if this case is not supported. WL algorithm should then quit gracefully.

◆ get_bin_index_from_energy() [1/2]

Bin_index get_bin_index_from_energy ( const double &  e)
inline

get_bin_index_from_energy finds the bin containing the energy e

Parameters
e
Returns
return a Bin_index describing the bin contatining energy e. If no bin contains e, an invalid bin is returned (here -1)

◆ get_bin_index_from_energy() [2/2]

Bin_index get_bin_index_from_energy ( const double &  e,
const double &  e1,
const Bin_index &  i1 
)
inline

get_bin_index_from_energy should uses that the point previously sampled should be in a bin close to the new newly sampled point

Parameters
enew energy
e1previous energy
i1previous bin
Returns

◆ get_density()

double& get_density ( const Bin_index &  index)
inline

get_density returns the density of a point

Parameters
index
Returns

◆ is_energy_in_range()

bool is_energy_in_range ( const DS_conformation conf)
inline

is_energy_in_range checks if a Bin_index is valid.

Parameters
conf
Returns

◆ update_densities()

void update_densities ( const Bin_index &  index)
inline

update_densities updates the density vector when a new point is sampled by the WL algorithm.

Parameters
index

◆ update_histogram()

void update_histogram ( const DS_conformation newpt,
const DS_conformation oldpt,
const bool &  accepted,
const bool &  boundary_check 
)
inline

update_histogram is called when a new point is sampled. It should be used to store some statistics on how the algorithm is working, which might be later used in update_parameters()

Parameters
oldptprevious point in the algorithm
newptpoint sampled by the Point_generator
acceptedis the new point accepted after the metropolis test
boundary_checkis the result of the boundary check

◆ update_increment()

virtual Snapshot_ptr update_increment ( )
inlinevirtual

update_increment is called after new points have been generated and accepted(or not) in the WL algo. it updates the increment by which the (log) density is increased when a new point is generated in a given bin.