.. _program_listing_file_include_parpeamici_hierarchicalOptimizationAnalyticalParameterProvider.h: Program Listing for File hierarchicalOptimizationAnalyticalParameterProvider.h ============================================================================== |exhale_lsh| :ref:`Return to documentation for file ` (``include/parpeamici/hierarchicalOptimizationAnalyticalParameterProvider.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #ifndef HIERARCHICALOPTIMIZATIONANALYTICALPARAMETERPROVIDER_H #define HIERARCHICALOPTIMIZATIONANALYTICALPARAMETERPROVIDER_H #include #include #include namespace parpe { class AnalyticalParameterProvider { public: virtual ~AnalyticalParameterProvider() = default; virtual std::vector getConditionsForParameter( int parameterIndex) const = 0; virtual std::vector const& getObservablesForParameter( int parameterIndex, int conditionIdx) const = 0; virtual std::vector getOptimizationParameterIndices() const = 0; }; class AnalyticalParameterProviderDefault : public AnalyticalParameterProvider { public: AnalyticalParameterProviderDefault() = default; std::vector getConditionsForParameter( int parameterIndex) const override; std::vector const& getObservablesForParameter( int parameterIndex, int conditionIdx) const override; std::vector getOptimizationParameterIndices() const override; // TODO private std::vector> conditionsForParameter; std::vector optimizationParameterIndices; // x[scalingIdx][conditionIdx] -> std::vector of observableIndices std::vector>> 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 getConditionsForParameter( int parameterIndex) const override; std::vector const& getObservablesForParameter( int parameterIndex, int conditionIdx) const override; std::vector getOptimizationParameterIndices() const override; ~AnalyticalParameterHdf5Reader() override; private: int getNumAnalyticalParameters() const; void readParameterConditionObservableMappingFromFile(); std::vector 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>> mapping; }; } #endif // HIERARCHICALOPTIMIZATIONANALYTICALPARAMETERPROVIDER_H