45   parameters = m_parameters->full_parameter(parameters);
 
   46   return m_function(xx, m_inputs, parameters);
 
   62 void cbl::statistics::Model::stats_from_chains (
const std::vector<std::vector<double>> xx, std::vector<std::vector<double>> &median_model, std::vector<std::vector<double>> &low_model, std::vector<std::vector<double>> &up_model, 
const int start, 
const int thin) 
 
   65   if (m_dimension==Dim::_1D_) {
 
   67     sz2 = int(xx[0].size());
 
   69   else if (m_dimension==Dim::_2D_) {
 
   70     sz1 = int(xx[0].size());
 
   71     sz2 = int(xx[1].size());
 
   74     ErrorCBL(
"wrong size for xx vector!", 
"stats_from_chains", 
"Model.cpp");
 
   76   vector<double> _median(sz1*sz2, 0);
 
   77   vector<double> _low(sz1*sz2, 0);
 
   78   vector<double> _up(sz1*sz2, 0);
 
   80   vector<vector<double>> models(floor((m_parameters->chain_size()-start)/thin)*m_parameters->chain_nwalkers(), vector<double>(0));
 
   82 #pragma omp parallel num_threads(omp_get_max_threads()) 
   84 #pragma omp for schedule(static,2)     
   85     for (
size_t j=start; j<m_parameters->chain_size(); j+=thin) {
 
   87       for (
size_t i=0; i<m_parameters->chain_nwalkers(); i++) {
 
   89     vector<double> parameters(m_parameters->nparameters());
 
   90     for (
size_t k=0; k<m_parameters->nparameters(); k++)
 
   91       parameters[k] = m_parameters->chain_value(k, j, i);
 
   93     models[(j-start)/thin*m_parameters->chain_nwalkers()+i] = 
flatten(this->
operator()(xx, parameters));
 
   98   vector<vector<double>> tr_models = 
transpose(models);
 
  100   for (
size_t i=0; i<tr_models.size(); i++) {
 
  101     vector<double> vv = tr_models[i];
 
  102     sort(vv.begin(), vv.end());
 
  103     int low = vv.size()*0.16;
 
  104     int up = vv.size()*0.84;
 
  105     int median = vv.size()*0.5;
 
  106     _median[i] = vv[median];
 
  111   median_model = 
reshape(_median, sz1, sz2);
 
  112   low_model = 
reshape(_low, sz1, sz2);
 
  113   up_model = 
reshape(_up, sz1, sz2);
 
The class ModelParameters.
 
void set_parameters(const std::shared_ptr< ModelParameters > parameters)
set the model parameters
 
std::vector< std::vector< double > > operator()(const std::vector< std::vector< double >> xx, std::vector< double > ¶meters) const
evalueate the model function at xx, for Model1D
 
void stats_from_chains(const std::vector< std::vector< double >> xx, std::vector< std::vector< double >> &median_model, std::vector< std::vector< double >> &low_model, std::vector< std::vector< double >> &up_model, const int start=0, const int thin=1)
compute the median and percentiles of the model from MCMC chains
 
The global namespace of the  CosmoBolognaLib
 
int ErrorCBL(const std::string msg, const std::string functionCBL, const std::string fileCBL, const cbl::glob::ExitCode exitCode=cbl::glob::ExitCode::_error_)
throw an exception: it is used for handling exceptions inside the CosmoBolognaLib
 
std::vector< T > flatten(std::vector< std::vector< T >> matrix)
flatten a  matrix in a vector of size
 
std::vector< std::vector< T > > transpose(std::vector< std::vector< T >> matrix)
transpose a matrix
 
std::vector< std::vector< T > > reshape(std::vector< T > vec, const int size1, const int size2)
reshape a vector into a matrix of given number of rows and columns