cMHN 1.2
C++ library for learning MHNs with pRC
Loading...
Searching...
No Matches
calculate_score.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: BSD-2-Clause
2
3#ifndef cMHN_COMMON_CALCULATE_SCORE_H
4#define cMHN_COMMON_CALCULATE_SCORE_H
5
6#include <map>
7
10#include <cmhn/common/score.hpp>
13
14#include <prc.hpp>
15
16namespace cMHN
17{
30 template<class T, pRC::Size D, class S>
32 std::map<S, T> const &pD, cMHN::Score<T> const &Score,
34 {
35 T score = pRC::zero();
36
37 auto const pTheta = calculatePTheta(op);
38
39 for(auto const &[k, v] : pD)
40 {
41 score += Score.pointwiseScore(v, pTheta(k));
42 }
43
44 score += Regulator.score(log(op.bigTheta()));
45
46 return score;
47 }
48
65 template<pRC::Size RP, class T, pRC::Size D, class S>
66 T calculateScore(TT::MHNOperator<T, D> const &op, std::map<S, T> const &pD,
68 T const &toleranceSolverP = 1e-4)
69 {
70 T score = pRC::zero();
71
72 auto const pTheta = calculatePTheta<RP>(op, toleranceSolverP);
73
74 for(auto const &[k, v] : pD)
75 {
76 score += Score.pointwiseScore(v, pTheta(k));
77 }
78
79 score += Regulator.score(log(op.bigTheta()));
80
81 return score;
82 }
83}
84
85#endif // cMHN_COMMON_CALCULATE_SCORE_H
Class storing all relevant information for a regulator.
Definition regulator.hpp:30
auto score(pRC::Tensor< T, D, D > const &theta) const
Definition regulator.hpp:48
Class storing all relevant information for a score.
Definition score.hpp:28
auto pointwiseScore(T const &pDE, T const &pThetaE) const
Definition score.hpp:45
Class storing an MHN operator represented by a theta matrix (for TT calculations)
Definition mhn_operator.hpp:24
constexpr auto & bigTheta(pRC::Index const i, pRC::Index const j) const
Definition mhn_operator.hpp:34
Class storing an MHN operator represented by a theta matrix (for non TT calculations)
Definition mhn_operator.hpp:24
constexpr auto & bigTheta(pRC::Index const i, pRC::Index const j) const
Definition mhn_operator.hpp:34
Definition value.hpp:12
Definition calculate_pTheta.hpp:20
T calculateScore(nonTT::MHNOperator< T, D > const &op, std::map< S, T > const &pD, cMHN::Score< T > const &Score, cMHN::Regulator< T, D > const &Regulator)
Calculate score of a theta matrix given some data distribution pD.
Definition calculate_score.hpp:31
decltype(expand(pRC::makeConstantSequence< pRC::Size, D, 2 >(), [](auto const ... Ns) { return pRC::Tensor< T, Ns... >{};})) calculatePTheta(nonTT::MHNOperator< T, D > const &op)
Calculates the vector pTheta given a nonTT MHN Operator.
Definition calculate_pTheta.hpp:39
static constexpr auto zero()
Definition zero.hpp:12