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>

Classes

class  Initial_Parameters
 

Public Types

typedef T_DS_conformation< ConformationDS_conformation
 
using DS_snapshot = DS_snapshot_< Bin_properties >
 
typedef std::unique_ptr< DS_snapshotSnapshot_ptr
 

Public Member Functions

 T_WL_Data_Structure_Internal ()
 
 T_WL_Data_Structure_Internal (Initial_Parameters parameters)
 
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...
 
virtual void reset_increment ()
 
void update_densities (const Bin_index &index)
 update_densities updates the density vector when a new point is sampled by the WL algorithm. More...
 
virtual void display_state ()
 
std::pair< bool, Snapshot_ptrenergy_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...
 
bool is_bin_index_valid (Bin_index index)
 
unsigned int get_number_of_bins ()
 
virtual Snapshot_ptr create_snapshot ()
 
virtual void restore_state (const DS_snapshot *snap)
 
Initial_Parameters get_params () const
 

Public Attributes

std::vector< Bin_energy_rangebin_ranges
 
std::vector< Bin_properties > bin_properties
 
double increment
 
int gamma_index
 
uint64_t num_steps
 
bool exp_regime
 
std::vector< std::pair< uint64_t, uint64_t > > climbs
 
std::vector< std::pair< uint64_t, uint64_t > > descents
 
bool is_climbing = false
 
bool is_descending = false
 

Protected Member Functions

double gamma (unsigned int n)
 
void reset_gamma ()
 
void update_density (double &density)
 
double get_gamma ()
 
double get_gamma_index ()
 
virtual void reset_histogram ()
 
virtual std::list< Bin_energy_rangeget_new_bins_ranges (const double &energy)
 
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...
 
virtual bool flat_hist () const
 

Protected Attributes

Initial_Parameters mParams
 
double averageInterbinSize
 
uint64_t h_tot
 

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 Typedef Documentation

◆ DS_conformation

◆ DS_snapshot

using DS_snapshot = DS_snapshot_<Bin_properties>

◆ Snapshot_ptr

typedef std::unique_ptr<DS_snapshot> Snapshot_ptr

Constructor & Destructor Documentation

◆ T_WL_Data_Structure_Internal() [1/2]

◆ T_WL_Data_Structure_Internal() [2/2]

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

◆ create_snapshot()

◆ display_state()

virtual void display_state ( )
inlinevirtual

◆ 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.

◆ flat_hist()

virtual bool flat_hist ( ) const
inlineprotectedvirtual

◆ gamma()

double gamma ( unsigned int  n)
inlineprotected

◆ 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

◆ get_gamma()

double get_gamma ( )
inlineprotected

◆ get_gamma_index()

double get_gamma_index ( )
inlineprotected

◆ get_new_bins_ranges()

virtual std::list<Bin_energy_range> get_new_bins_ranges ( const double &  energy)
inlineprotectedvirtual

◆ get_number_of_bins()

unsigned int get_number_of_bins ( )
inline

◆ get_params()

Initial_Parameters get_params ( ) const
inline

◆ is_bin_index_valid()

bool is_bin_index_valid ( Bin_index  index)
inline

◆ 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

◆ reset_gamma()

void reset_gamma ( )
inlineprotected

◆ reset_histogram()

virtual void reset_histogram ( )
inlineprotectedvirtual

◆ reset_increment()

virtual void reset_increment ( )
inlinevirtual

◆ restore_state()

virtual void restore_state ( const DS_snapshot snap)
inlinevirtual

◆ 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_density()

void update_density ( double &  density)
inlineprotected

◆ 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.

Member Data Documentation

◆ averageInterbinSize

double averageInterbinSize
protected

◆ bin_properties

std::vector<Bin_properties> bin_properties

◆ bin_ranges

std::vector<Bin_energy_range> bin_ranges

◆ climbs

std::vector<std::pair<uint64_t,uint64_t> > climbs

◆ descents

std::vector<std::pair<uint64_t,uint64_t> > descents

◆ exp_regime

bool exp_regime

◆ gamma_index

int gamma_index

◆ h_tot

uint64_t h_tot
protected

◆ increment

double increment

◆ is_climbing

bool is_climbing = false

◆ is_descending

bool is_descending = false

◆ mParams

Initial_Parameters mParams
protected

◆ num_steps

uint64_t num_steps