Ejemplo n.º 1
0
 private double parentSum(DuoBaumLevel level, int sampleA, int sampleB, int state) {
   int marker = level.marker();
   double fwdValue = level.forwardValuesSum() * level.forwardValue(state);
   int edgeAB1 = level.edgeAB1(state);
   int edgeA2 = level.edgeA2(state);
   int edgeB2 = level.edgeB2(state);
   double tpAB1 = dag.condEdgeProb(marker, edgeAB1);
   double tpA2 = dag.condEdgeProb(marker, edgeA2);
   double tpB2 = dag.condEdgeProb(marker, edgeB2);
   byte symbolAB1 = dag.symbol(marker, edgeAB1);
   byte symbolA2 = dag.symbol(marker, edgeA2);
   byte symbolB2 = dag.symbol(marker, edgeB2);
   double epA = gl.gl(marker, sampleA, symbolAB1, symbolA2);
   double epB = gl.gl(marker, sampleB, symbolAB1, symbolB2);
   return fwdValue / ((epA * epB) * (tpAB1 * tpA2 * tpB2));
 }