1 #ifndef STAN_SERVICES_SAMPLE_MCMC_WRITER_HPP
2 #define STAN_SERVICES_SAMPLE_MCMC_WRITER_HPP
23 template <
class Model,
24 class SampleWriter,
class DiagnosticWriter,
28 SampleWriter& sample_writer_;
29 DiagnosticWriter& diagnostic_writer_;
30 MessageWriter& message_writer_;
45 DiagnosticWriter& diagnostic_writer,
46 MessageWriter& message_writer)
47 : sample_writer_(sample_writer),
48 diagnostic_writer_(diagnostic_writer),
49 message_writer_(message_writer) {
73 std::vector<std::string> names;
77 model.constrained_param_names(names,
true,
true);
79 sample_writer_(names);
102 std::vector<double> values;
107 Eigen::VectorXd model_values;
109 std::stringstream ss;
110 model.write_array(rng,
111 const_cast<Eigen::VectorXd&>(sample.
cont_params()),
115 if (ss.str().length() > 0)
116 message_writer_(ss.str());
118 for (
int i = 0; i < model_values.size(); ++i)
119 values.push_back(model_values(i));
121 sample_writer_(values);
132 sample_writer_(
"Adaptation terminated");
152 std::vector<std::string> names;
157 std::vector<std::string> model_names;
158 model.unconstrained_param_names(model_names,
false,
false);
162 diagnostic_writer_(names);
179 std::vector<double> values;
185 diagnostic_writer_(values);
203 template <
class Writer>
206 std::string title(
" Elapsed Time: ");
207 std::stringstream ss;
213 ss << title << warmDeltaT <<
" seconds (Warm-up)";
217 ss << std::string(title.size(),
' ') << sampleDeltaT
218 <<
" seconds (Sampling)";
222 ss << std::string(title.size(),
' ')
223 << warmDeltaT + sampleDeltaT
224 <<
" seconds (Total)";
239 write_timing(warmDeltaT, sampleDeltaT, diagnostic_writer_);
240 write_timing(warmDeltaT, sampleDeltaT, message_writer_);
mcmc_writer writes out headers and samples
void write_timing(double warmDeltaT, double sampleDeltaT, Writer &writer)
Internal method.
void write_timing(double warmDeltaT, double sampleDeltaT)
Print timing information to all streams.
virtual void write_sampler_state(interface_callbacks::writer::base_writer &writer)
void sample(stan::mcmc::base_mcmc *sampler, int num_warmup, int num_samples, int num_thin, int refresh, bool save, stan::services::sample::mcmc_writer< Model, SampleRecorder, DiagnosticRecorder, MessageRecorder > &mcmc_writer, stan::mcmc::sample &init_s, Model &model, RNG &base_rng, const std::string &prefix, const std::string &suffix, std::ostream &o, StartTransitionCallback &callback, interface_callbacks::writer::base_writer &info_writer, interface_callbacks::writer::base_writer &error_writer)
Probability, optimization and sampling library.
virtual void get_sampler_diagnostic_names(std::vector< std::string > &model_names, std::vector< std::string > &names)
mcmc_writer(SampleWriter &sample_writer, DiagnosticWriter &diagnostic_writer, MessageWriter &message_writer)
Constructor.
virtual void get_sampler_params(std::vector< double > &values)
void write_adapt_finish(stan::mcmc::base_mcmc *sampler)
Prints additional info to the streams.
void get_sample_params(std::vector< double > &values)
void write_diagnostic_params(stan::mcmc::sample &sample, stan::mcmc::base_mcmc *sampler)
Print diagnostic params to the diagnostic stream.
virtual void get_sampler_diagnostics(std::vector< double > &values)
double cont_params(int k) const
virtual void get_sampler_param_names(std::vector< std::string > &names)
void write_diagnostic_names(stan::mcmc::sample sample, stan::mcmc::base_mcmc *sampler, Model &model)
Print diagnostic names.
void write_sample_params(RNG &rng, stan::mcmc::sample &sample, stan::mcmc::base_mcmc &sampler, Model &model)
Outputs samples.
void write_sample_names(stan::mcmc::sample &sample, stan::mcmc::base_mcmc *sampler, Model &model)
Outputs parameter string names.
void get_sample_param_names(std::vector< std::string > &names)