void FONSEModel::calculateLogLikelihoodRatioForHyperParameters(Genome &genome, unsigned iteration, std::vector <double> & logProbabilityRatio) { double lpr = 0.0; unsigned selectionCategory = getNumSynthesisRateCategories(); std::vector<double> currentStdDevSynthesisRate(selectionCategory, 0.0); std::vector<double> currentMphi(selectionCategory, 0.0); std::vector<double> proposedStdDevSynthesisRate(selectionCategory, 0.0); std::vector<double> proposedMphi(selectionCategory, 0.0); for (unsigned i = 0u; i < selectionCategory; i++) { currentStdDevSynthesisRate[i] = getStdDevSynthesisRate(i, false); currentMphi[i] = -((currentStdDevSynthesisRate[i] * currentStdDevSynthesisRate[i]) / 2); proposedStdDevSynthesisRate[i] = getStdDevSynthesisRate(i, true); proposedMphi[i] = -((proposedStdDevSynthesisRate[i] * proposedStdDevSynthesisRate[i]) / 2); // take the Jacobian into account for the non-linear transformation from logN to N distribution lpr -= (std::log(currentStdDevSynthesisRate[i]) - std::log(proposedStdDevSynthesisRate[i])); } logProbabilityRatio.resize(1); #ifdef _OPENMP //#ifndef __APPLE__ #pragma omp parallel for reduction(+:lpr) #endif for (unsigned i = 0u; i < genome.getGenomeSize(); i++) { unsigned mixture = getMixtureAssignment(i); mixture = getSynthesisRateCategory(mixture); double phi = getSynthesisRate(i, mixture, false); lpr += Parameter::densityLogNorm(phi, proposedMphi[mixture], proposedStdDevSynthesisRate[mixture], true) - Parameter::densityLogNorm(phi, currentMphi[mixture], currentStdDevSynthesisRate[mixture], true); } logProbabilityRatio[0] = lpr; }
void FONSEModel::printHyperParameters() { for (unsigned i = 0u; i < getNumSynthesisRateCategories(); i++) { my_print("stdDevSynthesisRate posterior estimate for selection category %: %\n", i, getStdDevSynthesisRate(i)); } my_print("\t current stdDevSynthesisRate proposal width: %\n", getCurrentStdDevSynthesisRateProposalWidth()); }
void FONSEModel::printHyperParameters() { for(unsigned i = 0u; i < getNumSynthesisRateCategories(); i++) { std::cout << "stdDevSynthesisRate posterior estimate for selection category " << i << ": " << getStdDevSynthesisRate(i) << std::endl; } std::cout << "\t current stdDevSynthesisRate proposal width: " << getCurrentStdDevSynthesisRateProposalWidth() << std::endl; }