Program Listing for File hierarchicalOptimizationAnalyticalParameterProvider.h¶
↰ Return to documentation for file (include/parpeamici/hierarchicalOptimizationAnalyticalParameterProvider.h
)
#ifndef HIERARCHICALOPTIMIZATIONANALYTICALPARAMETERPROVIDER_H
#define HIERARCHICALOPTIMIZATIONANALYTICALPARAMETERPROVIDER_H
#include <vector>
#include <map>
#include <H5Cpp.h>
namespace parpe {
class AnalyticalParameterProvider
{
public:
virtual ~AnalyticalParameterProvider() = default;
virtual std::vector<int> getConditionsForParameter(
int parameterIndex) const = 0;
virtual std::vector<int> const& getObservablesForParameter(
int parameterIndex,
int conditionIdx) const = 0;
virtual std::vector<int> getOptimizationParameterIndices() const = 0;
};
class AnalyticalParameterProviderDefault : public AnalyticalParameterProvider
{
public:
AnalyticalParameterProviderDefault() = default;
std::vector<int> getConditionsForParameter(
int parameterIndex) const override;
std::vector<int> const& getObservablesForParameter(
int parameterIndex,
int conditionIdx) const override;
std::vector<int> getOptimizationParameterIndices() const override;
// TODO private
std::vector<std::vector<int>> conditionsForParameter;
std::vector<int> optimizationParameterIndices;
// x[scalingIdx][conditionIdx] -> std::vector of observableIndices
std::vector<std::map<int, std::vector<int>>> mapping;
};
class AnalyticalParameterHdf5Reader : public AnalyticalParameterProvider
{
public:
AnalyticalParameterHdf5Reader() = default;
AnalyticalParameterHdf5Reader(const H5::H5File& file,
std::string analyticalParameterIndicesPath,
std::string mapPath);
AnalyticalParameterHdf5Reader(AnalyticalParameterHdf5Reader const&) =
delete;
std::vector<int> getConditionsForParameter(
int parameterIndex) const override;
std::vector<int> const& getObservablesForParameter(
int parameterIndex,
int conditionIdx) const override;
std::vector<int> getOptimizationParameterIndices() const override;
~AnalyticalParameterHdf5Reader() override;
private:
int getNumAnalyticalParameters() const;
void readParameterConditionObservableMappingFromFile();
std::vector<int> readRawMap(const H5::DataSet &dataset,
hsize_t& nRows,
hsize_t& nCols) const;
H5::H5File file;
std::string rootPath;
std::string mapPath;
std::string analyticalParameterIndicesPath;
// x[scalingIdx][conditionIdx] -> std::vector of observableIndices
std::vector<std::map<int, std::vector<int>>> mapping;
};
}
#endif // HIERARCHICALOPTIMIZATIONANALYTICALPARAMETERPROVIDER_H