File: betaOmegaDistribution.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 (61 lines) | stat: -rw-r--r-- 1,610 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
53
54
55
56
57
58
59
60
61
// $Id: betaOmegaDistribution.cpp 962 2006-11-07 15:13:34Z privmane $

#include "betaOmegaDistribution.h"
#include "gammaUtilities.h"
#include "betaUtilities.h"
#include "errorMsg.h"
#include "logFile.h"
#include <cmath>


betaOmegaDistribution::betaOmegaDistribution() 
{
	_omega=1;
	_betaProb = 0.5;
}

// note that the order of initalization makes a diffrence.
betaOmegaDistribution::betaOmegaDistribution(const betaOmegaDistribution& other) : 
	_betaDistr(other._betaDistr),
	_omega(other._omega),
	_betaProb(other._betaProb){
}

betaOmegaDistribution::betaOmegaDistribution(MDOUBLE alpha,MDOUBLE beta,int in_number_of_categories,MDOUBLE betaProb,MDOUBLE omega) :distribution(){
	_omega = omega;
	_betaProb = betaProb;
	_betaDistr.setGlobalRate(1.0);
	_betaDistr.setBetaParameters(in_number_of_categories,alpha,beta);
}

betaOmegaDistribution::~betaOmegaDistribution() {}


void betaOmegaDistribution::setBetaOmegaParameters(int in_number_of_categories,MDOUBLE alpha, MDOUBLE beta,MDOUBLE betaProb,MDOUBLE omega){
	_omega = omega;
	_betaProb = betaProb;
	_betaDistr.setBetaParameters(in_number_of_categories, alpha,  beta);

}
const MDOUBLE betaOmegaDistribution::ratesProb(const int i) const {
	if (i < _betaDistr.categories())
		return _betaDistr.ratesProb(i)*_betaProb;
	else return (1-_betaProb); //omega prob
}


const MDOUBLE betaOmegaDistribution::rates(const int i) const {
	if (i < _betaDistr.categories())
		return _betaDistr.rates(i);
	else return _omega; //omega
}



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