Program Listing for File optimizationResultWriter.h

Return to documentation for file (include/parpeoptimization/optimizationResultWriter.h)

#ifndef OPTIMIZATIONRESULTWRITER_H
#define OPTIMIZATIONRESULTWRITER_H

#include <string>

#include <H5Cpp.h>
#include <gsl/gsl-lite.hpp>

namespace parpe {

class OptimizationResultWriter {
public:
    OptimizationResultWriter(const H5::H5File &file,
                             std::string rootPath);

    OptimizationResultWriter(const std::string &filename,
                             bool overwrite,
                             std::string rootPath);

    OptimizationResultWriter& operator=(const OptimizationResultWriter& other) = delete;

    OptimizationResultWriter(OptimizationResultWriter const& other);

    virtual ~OptimizationResultWriter();

    virtual void logObjectiveFunctionEvaluation(
            gsl::span<const double> parameters,
            double objectiveFunctionValue,
            gsl::span<const double> objectiveFunctionGradient,
            int numIterations,
            int numFunctionCalls,
            double timeElapsedInSeconds);

    virtual void logOptimizerIteration(int numIterations,
                                       gsl::span<const double> parameters,
                                       double objectiveFunctionValue,
                                       gsl::span<const double> gradient,
                                       double wallSeconds,
                                       double cpuSeconds);

    void setLoggingEachIteration(bool logGradient);

    void setLoggingEachFunctionEvaluation(bool logGradient,
                                          bool logParameters);

    virtual void starting(gsl::span<const double> initialParameters);

    virtual void saveOptimizerResults(double finalNegLogLikelihood,
                                      gsl::span<const double> optimalParameters,
                                      double wallSec,
                                      double cpuSec,
                                      int exitStatus) const;

    H5::H5File const& getH5File() const;

    virtual std::string const& getRootPath() const;

    bool logParametersEachFunctionEvaluation = true;

    bool logGradientEachFunctionEvaluation = true;

    bool logGradientEachIteration = true;

    void setRootPath(std::string const& path);

protected:
    virtual void flushResultWriter() const;

private:
    virtual std::string getIterationPath(int iterationIdx) const;

    H5::H5File file = 0;

    std::string rootPath = "/";

};

} // namespace parpe

#endif // OPTIMIZATIONRESULTWRITER_H