void printArcProbs(std::ostream& resStream, int nSamples, int nStepsPerSample, bool printSamples = false) { //ParentsetMap<Real> transScores; ArcMap<double> cumArcProbs(pof_.n); ArcMap<Real> arcUnnormProbs(pof_.n); cumArcProbs.setAll(0.0); for (int i = 0; i < nSamples; ++i) { for (int j = 0; j < nStepsPerSample; ++j) { //nAccepts += po_.mcmcPOStep(scores_, marginUnnormProb_); //nAccepts += po_.mcmcPOStep(marginProbComputer, marginUnnormProb_); //nAccepts += mcmcStep(); //nAccepts += po_.mcmcPOStep(probComputer, marginUnnormProb_); //++nSteps; mcmcStep(); } //translateParentsetMap(pof_, subsetDirectory_, po_, scores_, transScores); calcUnnormArcProbs(pof_, scores_, po_, arcUnnormProbs); //probComputer.calcUnnormArcProbs(po_, arcUnnormProbs); //Arc arct; //arct.head = po_.getIndex(arc.head); //arct.tail = po_.getIndex(arc.tail); //Real arcUnnormProb = calcUnnormProb(pof_, subsetDirectory_, transScores, po_, arct); Arc arc; arc.setFirst(); do { double p = to<double>(arcUnnormProbs[arc] / marginUnnormProb_); if (printSamples) resStream << " " << p; cumArcProbs[arc] += p; } while (arc.next(pof_.n)); if (printSamples) { resStream << std::endl; } } if (!printSamples) { Arc arc; arc.setFirst(); do { double p = cumArcProbs[arc] / nSamples; resStream << arc << " " << p << std::endl; } while (arc.next(pof_.n)); } }
void printAllProbs(std::ostream& resStream) { Arc arc; arc.setFirst(); do { double p = calcProb(arc); resStream << arc << " " << p << std::endl; } while (arc.next(pof_.n)); }
void printArcProbs(std::ostream& resStream) { Real cumMarginalProb = 0; ArcMap<Real> cumArcProbs(pof_.n); ArcMap<Real> probs(pof_.n); cumArcProbs.setAll(0.0); typename POF::OrderEnumerator poe(pof_); do { Real marginalProb = calcUnnormProb(pof_, scores_, poe.getOrder(), NullArc); calcUnnormArcProbs(pof_, scores_, poe.getOrder(), probs); cumMarginalProb += marginalProb; Arc arc; arc.setFirst(); do { cumArcProbs[arc] += probs[arc]; } while (arc.next(pof_.n)); } while(poe.next()); Arc arc; arc.setFirst(); do { double p = to<double>(cumArcProbs[arc] / cumMarginalProb); resStream << arc << " " << p << std::endl; } while (arc.next(pof_.n)); }
void printAllProbs(std::ostream& resStream, int nSamples, int nStepsPerSample, bool printSamples = false) { double* samples = NULL; if (printSamples) samples = new double[nSamples]; Arc arc; arc.setFirst(); do { double p = calcProb(nSamples, nStepsPerSample, arc, samples); resStream << arc << " " << p; if (printSamples) for (int i = 0; i < nSamples; ++i) resStream << " " << samples[i]; resStream << std::endl; } while (arc.next(pof_.n)); if (printSamples) delete[] samples; }