#include "Arc.h" Arc::Arc(float from_node_curprob, float from_node_priorprob, float from_node_odds, float to_node_curprob, float to_node_priorprob, float to_node_odds, float sufficient_lambda, float necessary_lambda) { suffLambda = sufficient_lambda; necLambda = necessary_lambda; fNodePriorProb = from_node_priorprob; fNodeCurProb = from_node_curprob; fNodeOdds = from_node_odds; tNodePriorProb = to_node_priorprob; tNodeCurProb = to_node_curprob; tNodeOdds = to_node_odds; effect_lambda = 0; } void Arc::calcEffectiveLambda() { probHypTrue = (suffLambda * tNodeOdds ) / (1 + (suffLambda * tNodeOdds)); probHypFalse = (necLambda * fNodeOdds ) / (1 + (necLambda * fNodeOdds)); if(fNodeCurProb > fNodePriorProb) { probHypCompTrue = tNodePriorProb + ((fNodeCurProb - fNodePriorProb) * ((probHypTrue - tNodePriorProb) / (1-fNodePriorProb))); } else { probHypCompTrue = probHypFalse + (fNodeCurProb * (tNodePriorProb - probHypFalse)) /fNodePriorProb; } oddsHypCompTrue = probHypCompTrue / (1 - probHypCompTrue) ; effect_lambda = oddsHypCompTrue / tNodeOdds ; } float Arc::getEffectLambda() { return effect_lambda; }