EukPhylo/PTL2/Scripts-DEV/guidance.v2.02/libs/phylogeny/distributionPlusInvariant.h
Katzlab dd76ab1d12 Added PTL2 Scripts
These are PTL2 files from Auden 2/9
2023-02-14 11:20:52 -05:00

42 lines
1.7 KiB
C++

#ifndef __DISTPLUSINV
#define __DISTPLUSINV
/************************************************************
This class describes a combination of a predefined dsitrubtion ,
with an additional invariant category of probability _Pinv
This category is always the last rate category (i.e., rate(categories()) == 0)
************************************************************/
#include "definitions.h"
#include "distribution.h"
class distributionPlusInvariant : public distribution {
public:
explicit distributionPlusInvariant(
distribution* pDist, const MDOUBLE pInv, const MDOUBLE globalRate=1, MDOUBLE rateInvariantVal=1e-10);
explicit distributionPlusInvariant();
distributionPlusInvariant(const distributionPlusInvariant& other): _pBaseDist(NULL){(*this) = other;}
virtual distributionPlusInvariant& operator=(const distributionPlusInvariant& other);
distributionPlusInvariant* clone() const {return new distributionPlusInvariant(*this);}
virtual ~distributionPlusInvariant();
distribution* getBaseDistribution(){return _pBaseDist;}
//get/set the parameters of the mixture
const int categories() const;
void setGlobalRate(const MDOUBLE r) {_globalRate = r;}
MDOUBLE getGlobalRate() const {return _globalRate;}
virtual void setInvProb(const MDOUBLE p) {_Pinv = p;}
const MDOUBLE getInvProb() const {return _Pinv;}
//get distribution statistics
virtual const MDOUBLE getCumulativeProb(const MDOUBLE x) const;
virtual const MDOUBLE rates(const int category) const;
virtual const MDOUBLE ratesProb(const int i) const;
protected:
MDOUBLE _globalRate;
MDOUBLE _Pinv;
MDOUBLE _rateInvariantVal;
distribution* _pBaseDist;
};
#endif