Esempio n. 1
0
	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));
		}
	}
Esempio n. 2
0
	void printAllProbs(std::ostream& resStream) {
		Arc arc; arc.setFirst();
		do {
			double p = calcProb(arc);
			resStream << arc << "   " << p << std::endl;
		} while (arc.next(pof_.n));
	}
Esempio n. 3
0
	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));
	}
Esempio n. 4
0
	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;
	}