File: betaDistributionFixedCategoriesWithOmegaUniform.cpp

package info (click to toggle)
fastml 3.11-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 5,772 kB
  • sloc: cpp: 48,522; perl: 3,588; ansic: 819; makefile: 386; python: 83; sh: 55
file content (52 lines) | stat: -rw-r--r-- 1,878 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include "betaDistributionFixedCategoriesWithOmegaUniform.h"
#include "errorMsg.h"
#include "gammaUtilities.h"
#include "matrixUtils.h"


betaDistributionFixedCategoriesOmegaUniform::betaDistributionFixedCategoriesOmegaUniform(const betaDistributionFixedCategoriesOmegaUniform& other)
: _betaDistr(other._betaDistr),_omegaDistr(other._omegaDistr){
	
}

betaDistributionFixedCategoriesOmegaUniform::betaDistributionFixedCategoriesOmegaUniform(int betaDistrCatNum,MDOUBLE alpha,MDOUBLE beta,
																						 int omegaCatNum,MDOUBLE omegaLowerBound,MDOUBLE omegaUpperBound)
{
	_betaDistr.setBetaParameters(betaDistrCatNum,alpha,beta);
	_omegaDistr.setGlobalRate(1.0);
	_omegaDistr.setUniformParameters(omegaCatNum,omegaLowerBound,omegaUpperBound);
	
}

void betaDistributionFixedCategoriesOmegaUniform::setBetaParameters(int in_number_of_categories, MDOUBLE alpha,  MDOUBLE beta)
{
	_betaDistr.setBetaParameters(in_number_of_categories,alpha,beta);
}



void betaDistributionFixedCategoriesOmegaUniform::change_number_of_categories(int in_number_of_categories)
{
	_betaDistr.change_number_of_categories(in_number_of_categories); 
}


const MDOUBLE betaDistributionFixedCategoriesOmegaUniform::ratesProb(const int i_rate) const {
	int noBetaDistCat = _betaDistr.categories();
	if (i_rate < _betaDistr.categories())
		return _betaDistr.ratesProb(i_rate);
	else return _omegaDistr.ratesProb(i_rate - noBetaDistCat); //omega prob
}


const MDOUBLE betaDistributionFixedCategoriesOmegaUniform::rates(const int i) const {
	int noBetaDistCat = _betaDistr.categories();
	if (i < noBetaDistCat)
		return _betaDistr.rates(i);
	else return _omegaDistr.rates(i - noBetaDistCat); //omega

}

const MDOUBLE betaDistributionFixedCategoriesOmegaUniform::getCumulativeProb(const MDOUBLE x) const {
	return _betaDistr.getCumulativeProb(x);
}