cMHN 1.0
C++ library for learning MHNs with pRC
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{
32 template<class T, pRC::Size D, class S>
34 std::map<S, T> const &pD, cMHN::Score<T> const &Score,
35 cMHN::Regulator<T, D> const &Regulator, T const &toleranceSolverP = 1e-4)
36 {
37 T score = pRC::zero();
38
39 auto const pTheta = calculatePTheta(op, toleranceSolverP);
40
41 for(auto const &[k, v] : pD)
42 {
43 score += Score.pointwiseScore(v, pTheta(k));
44 }
45
46 score -= Regulator.score(log(op.theta()));
47
48 return score;
49 }
50
67 template<pRC::Size RP, class T, pRC::Size D, class S>
69 std::map<S, T> const &pD, cMHN::Score<T> const &Score,
70 cMHN::Regulator<T, D> const &Regulator, T const &toleranceSolverP = 1e-4)
71 {
72 T score = pRC::zero();
73
74 auto const pTheta = calculatePTheta<RP>(op, toleranceSolverP);
75
76 for(auto const &[k, v] : pD)
77 {
78 score += Score.pointwiseScore(v, pTheta(k));
79 }
80
81 score -= Regulator.score(log(op.theta()));
82
83 return score;
84 }
85}
86
87#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:27
auto pointwiseScore(T const &pDE, T const &pThetaE) const
Definition: score.hpp:44
Class storing an MHN operator represented by a theta matrix (for TT calculations)
Definition: mhn_operator.hpp:23
constexpr auto & theta(pRC::Index const i, pRC::Index const j) const
Definition: mhn_operator.hpp:33
Class storing an MHN operator represented by a theta matrix (for non TT calculations)
Definition: mhn_operator.hpp:23
constexpr auto & theta(pRC::Index const i, pRC::Index const j) const
Definition: mhn_operator.hpp:33
pRC::Float<> T
Definition: externs_nonTT.hpp:1
Definition: calculate_pTheta.hpp:15
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, T const &toleranceSolverP=1e-4)
Calculate score of a theta matrix given some data distribution pD.
Definition: calculate_score.hpp:33
X calculatePTheta(nonTT::MHNOperator< T, D > const &op, X const &pInit, T const &toleranceSolver)
Calculates the vector pTheta given a nonTT MHN Operator and a tolerance.
Definition: calculate_pTheta.hpp:33