Program Listing for File simulationResultWriter.h

Return to documentation for file (include/parpeamici/simulationResultWriter.h)

#ifndef PARPE_AMICI_SIMULATION_RESULT_WRITER_H
#define PARPE_AMICI_SIMULATION_RESULT_WRITER_H

#include <string>
#include <amici/amici.h>

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

namespace parpe {

class SimulationResultWriter {

public:

    SimulationResultWriter() = default;

    SimulationResultWriter(const H5::H5File &file, std::string rootPath);

    SimulationResultWriter(std::string const& hdf5FileName,
                           std::string  rootPath);

    // Implement me
    SimulationResultWriter(SimulationResultWriter const&) = delete;

    ~SimulationResultWriter();

    void createDatasets(hsize_t numSimulations);

    void createDatasets(int numberOfSimulations = 1);

    void saveSimulationResults(const amici::ExpData *edata,
                               const amici::ReturnData *rdata,
                               int simulationIdx);

    void saveTimepoints(gsl::span<const double> timepoints,
                        int simulationIdx) const;

    void saveMeasurements(gsl::span<const double> measurements, int nt,
                          int nytrue, int simulationIdx) const;

    void saveModelOutputs(gsl::span<const double> outputs, int nt,
                          int nytrue, int simulationIdx) const;

    void saveStates(gsl::span<const double> states, int nt, int nx,
                    int simulationIdx) const;

    void saveParameters(gsl::span<const double> parameters,
                    int simulationIdx) const;

    void saveLikelihood(double llh, int simulationIdx) const;

    H5::H5File reopenFile();

    bool saveX = false;
    bool saveLlh = false;
//    bool saveSllh = false;
    bool saveYSim = false;
    bool saveYMes = false;
    bool save_parameters_ = false;
//    bool saveK = false;

    std::string yMesPath;
    std::string ySimPath;
    std::string xPath;
    std::string llhPath;
    std::string timePath;
    std::string parametersPath;

private:
    void updatePaths();

    std::string rootPath;
    H5::H5File file;
};

} // namespace parpe

#endif