69 std::shared_ptr<data::Data>
m_data = NULL;
78 std::shared_ptr<statistics::Model>
m_model = NULL;
98 void m_set_prior (std::vector<statistics::PriorDistribution> prior_distribution);
150 ErrorCBL(
"no fit range has been set!",
"data_fit",
"Modelling.h");
159 std::shared_ptr<statistics::Likelihood>
likelihood ();
165 std::shared_ptr<statistics::Posterior>
posterior ();
187 { (void)parameter; (void)value;
ErrorCBL(
"",
"set_parameter_from_string",
"Modelling.h"); }
197 {
return ErrorCBL(
"",
"get_parameter_from_string ("+parameter+
")",
"Modelling.h"); }
252 void set_fit_range (
const double xmin,
const double xmax,
const double ymin,
const double ymax);
259 void set_data (
const std::shared_ptr<data::Data> dataset) {
m_data = move(dataset); }
354 void maximize_likelihood (
const std::vector<double> start,
const std::vector<std::vector<double>> parameter_limits,
const unsigned int max_iter=10000,
const double tol=1.e-6,
const double epsilon=1.e-3);
388 void maximize_posterior (
const std::vector<double> start,
const unsigned int max_iter=10000,
const double tol=1.e-6,
const double epsilon=1.e-3,
const int seed=666);
408 void sample_posterior (
const int chain_size,
const int nwalkers,
const int seed=666,
const double aa=2,
const bool parallel=
true);
444 void sample_posterior (
const int chain_size,
const int nwalkers,
const double radius,
const std::vector<double> start,
const unsigned int max_iter=10000,
const double tol=1.e-6,
const double epsilon=1.e-3,
const int seed=666,
const double aa=2,
const bool parallel=
true);
469 void sample_posterior (
const int chain_size,
const int nwalkers, std::vector<double> &value,
const double radius,
const int seed=666,
const double aa=2,
const bool parallel=
true);
490 void sample_posterior (
const int chain_size,
const std::vector<std::vector<double>> chain_value,
const int seed=666,
const double aa=2,
const bool parallel=
true);
515 void sample_posterior (
const int chain_size,
const int nwalkers,
const std::string input_dir,
const std::string input_file,
const int seed=666,
const double aa=2,
const bool parallel=
true);
549 void importance_sampling (
const std::string input_dir,
const std::string input_file,
const int seed=666,
const std::vector<size_t> column={},
const int header_lines_to_skip=1,
const bool is_FITS_format=
false,
const bool apply_to_likelihood=
false);
578 void write_chain (
const std::string output_dir,
const std::string output_file,
const int start=0,
const int thin=1,
const bool is_FITS_format=
false,
const int prec=5,
const int ww=14);
597 void read_chain (
const std::string input_dir,
const std::string input_file,
const int nwalkers,
const std::vector<size_t> columns={},
const int skip_header=1,
const bool fits=
false);
637 void show_results (
const int start=0,
const int thin=1,
const int nbins=50,
const bool show_mode=
false,
const int ns=-1);
696 void write_results (
const std::string output_dir,
const std::string root_file,
const int start=0,
const int thin=1,
const int nbins=50,
const bool fits=
false,
const bool compute_mode=
false,
const int ns=-1);
711 virtual void write_model (
const std::string output_dir,
const std::string output_file,
const std::vector<double> xx,
const std::vector<double> parameters);
730 virtual void write_model (
const std::string output_dir,
const std::string output_file,
const std::vector<double> xx,
const std::vector<double> yy,
const std::vector<double> parameters);
742 virtual void write_model_at_bestfit (
const std::string output_dir,
const std::string output_file,
const std::vector<double> xx);
758 virtual void write_model_at_bestfit (
const std::string output_dir,
const std::string output_file,
const std::vector<double> xx,
const std::vector<double> yy);
774 virtual void write_model_from_chains (
const std::string output_dir,
const std::string output_file,
const std::vector<double> xx,
const int start=0,
const int thin=1);
794 virtual void write_model_from_chains (
const std::string output_dir,
const std::string output_file,
const std::vector<double> xx,
const std::vector<double> yy,
const int start=0,
const int thin=1);
808 double reduced_chi2 (
const std::vector<double> parameter={});
std::shared_ptr< statistics::Model > m_response_func
response function for the computation of the super-sample covariance
void write_results(const std::string output_dir, const std::string root_file, const int start=0, const int thin=1, const int nbins=50, const bool fits=false, const bool compute_mode=false, const int ns=-1)
write the results of the MCMC sampling to file
std::shared_ptr< statistics::Model > get_response_function()
return the response function used to compute the super-sample covariance
bool m_fit_range
check if fit range has been set
virtual double get_parameter_from_string(const std::string parameter) const
get the value of a parameter providing its name string
double reduced_chi2(const std::vector< double > parameter={})
the reduced
void importance_sampling(const std::string input_dir, const std::string input_file, const int seed=666, const std::vector< size_t > column={}, const int header_lines_to_skip=1, const bool is_FITS_format=false, const bool apply_to_likelihood=false)
perform importance sampling
std::shared_ptr< statistics::ModelParameters > likelihood_parameters()
return the likelihood parameters
void reset_fit_range()
reset the fit range
std::shared_ptr< data::Data > m_data
input data to be modelled
std::shared_ptr< data::Data > data_fit()
return the dataset
void maximize_likelihood(const std::vector< double > start, const std::vector< std::vector< double >> parameter_limits, const unsigned int max_iter=10000, const double tol=1.e-6, const double epsilon=1.e-3)
function that maximizes the posterior, finds the best-fit parameters and stores them in the model
void write_chain(const std::string output_dir, const std::string output_file, const int start=0, const int thin=1, const bool is_FITS_format=false, const int prec=5, const int ww=14)
write the chains obtained after the MCMC sampling
void m_set_prior(std::vector< statistics::PriorDistribution > prior_distribution)
set the internal variable m_parameter_priors
std::vector< std::shared_ptr< statistics::PriorDistribution > > m_parameter_priors
prior
virtual void set_parameter_from_string(const std::string parameter, const double value)
set the value of a parameter providing its name string
void show_results(const int start=0, const int thin=1, const int nbins=50, const bool show_mode=false, const int ns=-1)
show the results of the MCMC sampling on screen
std::shared_ptr< statistics::Posterior > m_posterior
posterior
std::shared_ptr< statistics::Likelihood > m_likelihood
likelihood
void read_chain(const std::string input_dir, const std::string input_file, const int nwalkers, const std::vector< size_t > columns={}, const int skip_header=1, const bool fits=false)
read the chains
virtual void write_model_from_chains(const std::string output_dir, const std::string output_file, const std::vector< double > xx, const int start=0, const int thin=1)
write the model at xx computing 16th, 50th and 84th percentiles from the chains
std::shared_ptr< statistics::PriorDistribution > get_prior(const int i)
get the internal variable m_parameter_priors
virtual ~Modelling()=default
default destructor
virtual void write_model(const std::string output_dir, const std::string output_file, const std::vector< double > xx, const std::vector< double > parameters)
write the model at xx for given parameters
void m_set_posterior(const int seed)
set the interal variable m_posterior
void set_data(const std::shared_ptr< data::Data > dataset)
set the dataset
Modelling()=default
default constuctor
void set_likelihood(const statistics::LikelihoodType likelihood_type, const std::vector< size_t > x_index={0, 2}, const int w_index=-1, const double prec=1.e-10, const int Nres=-1)
set the likelihood function
std::shared_ptr< data::Data > data()
return the dataset
std::shared_ptr< statistics::Posterior > posterior()
return the posterior parameters
void sample_posterior(const int chain_size, const int nwalkers, const int seed=666, const double aa=2, const bool parallel=true)
sample the posterior, initializing the chains by drawing from the prior distributions
void m_isSet_response()
check if the response function used to compute the super-sample covariance is set
void set_fit_range(const double xmin, const double xmax)
set the fit range
std::shared_ptr< statistics::Likelihood > likelihood()
return the likelihood parameters
std::shared_ptr< data::Data > m_data_fit
input data restricted to the range used for the fit
std::shared_ptr< statistics::Model > m_model
input model
virtual void write_model_at_bestfit(const std::string output_dir, const std::string output_file, const std::vector< double > xx)
write the model at xx with best-fit parameters obtained from posterior maximization
std::shared_ptr< statistics::ModelParameters > posterior_parameters()
return the posterior parameters
void maximize_posterior(const std::vector< double > start, const unsigned int max_iter=10000, const double tol=1.e-6, const double epsilon=1.e-3, const int seed=666)
function that maximizes the posterior, finds the best-fit parameters and stores them in the model
LikelihoodType
the type of likelihood function
std::function< double(std::vector< double > &, const std::shared_ptr< void >)> Likelihood_function
definition of a function for computation of the Likelihood
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