本文整理汇总了C++中Gene::getSequenceSummary方法的典型用法代码示例。如果您正苦于以下问题:C++ Gene::getSequenceSummary方法的具体用法?C++ Gene::getSequenceSummary怎么用?C++ Gene::getSequenceSummary使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Gene
的用法示例。
在下文中一共展示了Gene::getSequenceSummary方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: calculateLogLikelihoodRatioPerGroupingPerCategory
void FONSEModel::calculateLogLikelihoodRatioPerGroupingPerCategory(std::string grouping, Genome& genome, std::vector<double> &logAcceptanceRatioForAllMixtures)
{
int numGenes = genome.getGenomeSize();
//int numCodons = SequenceSummary::GetNumCodonsForAA(grouping);
double likelihood = 0.0;
double likelihood_proposed = 0.0;
double mutation[5];
double selection[5];
double mutation_proposed[5];
double selection_proposed[5];
std::string curAA;
Gene *gene;
SequenceSummary *sequenceSummary;
unsigned aaIndex = SequenceSummary::AAToAAIndex(grouping);
#ifdef _OPENMP
//#ifndef __APPLE__
#pragma omp parallel for private(mutation, selection, mutation_proposed, selection_proposed, curAA, gene, sequenceSummary) reduction(+:likelihood,likelihood_proposed)
#endif
for (unsigned i = 0u; i < numGenes; i++)
{
gene = &genome.getGene(i);
sequenceSummary = gene->getSequenceSummary();
if (sequenceSummary->getAACountForAA(aaIndex) == 0) continue;
// which mixture element does this gene belong to
unsigned mixtureElement = parameter->getMixtureAssignment(i);
// how is the mixture element defined. Which categories make it up
unsigned mutationCategory = parameter->getMutationCategory(mixtureElement);
unsigned selectionCategory = parameter->getSelectionCategory(mixtureElement);
unsigned expressionCategory = parameter->getSynthesisRateCategory(mixtureElement);
// get phi value, calculate likelihood conditional on phi
double phiValue = parameter->getSynthesisRate(i, expressionCategory, false);
// get current mutation and selection parameter
parameter->getParameterForCategory(mutationCategory, FONSEParameter::dM, grouping, false, mutation);
parameter->getParameterForCategory(selectionCategory, FONSEParameter::dOmega, grouping, false, selection);
// get proposed mutation and selection parameter
parameter->getParameterForCategory(mutationCategory, FONSEParameter::dM, grouping, true, mutation_proposed);
parameter->getParameterForCategory(selectionCategory, FONSEParameter::dOmega, grouping, true, selection_proposed);
likelihood += calculateLogLikelihoodRatioPerAA(*gene, grouping, mutation, selection, phiValue);
likelihood_proposed += calculateLogLikelihoodRatioPerAA(*gene, grouping, mutation_proposed, selection_proposed, phiValue);
}
//likelihood_proposed = likelihood_proposed + calculateMutationPrior(grouping, true);
//likelihood = likelihood + calculateMutationPrior(grouping, false);
logAcceptanceRatioForAllMixtures[0] = (likelihood_proposed - likelihood);
}
示例2: calculateLogLikelihoodRatioPerGene
void FONSEModel::calculateLogLikelihoodRatioPerGene(Gene& gene, unsigned geneIndex, unsigned k, double* logProbabilityRatio)
{
double likelihood = 0.0;
double likelihood_proposed = 0.0;
std::string curAA;
std::vector <unsigned> positions;
double mutation[5];
double selection[5];
SequenceSummary *seqsum = gene.getSequenceSummary();
// get correct index for everything
unsigned mutationCategory = parameter->getMutationCategory(k);
unsigned selectionCategory = parameter->getSelectionCategory(k);
unsigned expressionCategory = parameter->getSynthesisRateCategory(k);
double phiValue = parameter->getSynthesisRate(geneIndex, expressionCategory, false);
double phiValue_proposed = parameter->getSynthesisRate(geneIndex, expressionCategory, true);
/* This loop causes a compiler warning because i is an int, but openMP won't compile if I change i to unsigned.
Maybe worth looking into? */
#ifndef __APPLE__
#pragma omp parallel for private(mutation, selection, positions, curAA) reduction(+:likelihood,likelihood_proposed)
#endif
for (int i = 0; i < getGroupListSize(); i++)
{
curAA = getGrouping(i);
parameter->getParameterForCategory(mutationCategory, FONSEParameter::dM, curAA, false, mutation);
parameter->getParameterForCategory(selectionCategory, FONSEParameter::dOmega, curAA, false, selection);
likelihood += calculateLogLikelihoodRatioPerAA(gene, curAA, mutation, selection, phiValue);
likelihood_proposed += calculateLogLikelihoodRatioPerAA(gene, curAA, mutation, selection, phiValue_proposed);
}
//std::cout << logLikelihood << " " << logLikelihood_proposed << std::endl;
double stdDevSynthesisRate = parameter->getStdDevSynthesisRate(false);
double logPhiProbability = Parameter::densityLogNorm(phiValue, (-(stdDevSynthesisRate * stdDevSynthesisRate) / 2), stdDevSynthesisRate, true);
double logPhiProbability_proposed = Parameter::densityLogNorm(phiValue_proposed, (-(stdDevSynthesisRate * stdDevSynthesisRate) / 2), stdDevSynthesisRate, true);
double currentLogLikelihood = (likelihood + logPhiProbability);
double proposedLogLikelihood = (likelihood_proposed + logPhiProbability_proposed);
if (phiValue == 0) {
std::cout << "phiValue is 0\n";
}
if (phiValue_proposed == 0) {
std::cout << "phiValue_prop is 0\n";
}
logProbabilityRatio[0] = (proposedLogLikelihood - currentLogLikelihood) - (std::log(phiValue) - std::log(phiValue_proposed));
logProbabilityRatio[1] = currentLogLikelihood - std::log(phiValue_proposed);
if (std::isinf(logProbabilityRatio[1])) {
std::cout << "logprob1 inf\n";
}
logProbabilityRatio[2] = proposedLogLikelihood - std::log(phiValue);
if (std::isinf(logProbabilityRatio[2])) {
std::cout << "logprob2 inf\n";
}
//------------NOTE: Jeremy, Cedric changed the reverse jump to where we DON'T include it. I had my RFP
//LogLikelihood go to 0 because of now missing terms. I have added the code underneath to where we calculate it---/
logProbabilityRatio[3] = currentLogLikelihood;
logProbabilityRatio[4] = proposedLogLikelihood;
}