Katzlab dd76ab1d12 Added PTL2 Scripts
These are PTL2 files from Auden 2/9
2023-02-14 11:20:52 -05:00

59 lines
2.1 KiB
C++

// $Id: stochasticProcess.h 2511 2007-11-04 12:08:50Z cohenofi $
#ifndef ___STOCHASTIC_PROCESS
#define ___STOCHASTIC_PROCESS
#include "pijAccelerator.h"
#include "distribution.h"
#include <cassert>
class stochasticProcess{
public:
explicit stochasticProcess(const distribution *in_distr,const pijAccelerator *pijAccelerator, bool isReversible = true);
explicit stochasticProcess() {
_distr=NULL; _pijAccelerator=NULL; _isReversible=true;
}
stochasticProcess(const stochasticProcess& other);
virtual stochasticProcess* clone() const {return new stochasticProcess(*this);}
const int alphabetSize() const {return _pijAccelerator->alphabetSize();} // The alphabet size is the same as the matrix Pij size
virtual const int categories() const {return _distr->categories();}
virtual const MDOUBLE rates(const int i) const {return _distr->rates(i);}
virtual const MDOUBLE ratesProb(const int i) const {return _distr->ratesProb(i);}
virtual const MDOUBLE Pij_t(const int i, const int j, const MDOUBLE t) const {
if (t!=0) return _pijAccelerator->Pij_t(i,j,t);
return (i==j)? 1 : 0;
}
const MDOUBLE freq(const int i) const {assert(i>=0);return _pijAccelerator->freq(i);} // P(i)
const MDOUBLE dPij_dt(const int i,const int j,const MDOUBLE t) const { return _pijAccelerator->dPij_dt(i,j,t);}
const MDOUBLE d2Pij_dt2(const int i, const int j, const MDOUBLE t) const { return _pijAccelerator->d2Pij_dt2(i,j,t);}
virtual distribution* distr() const {return _distr;} // @@@@ this const is a lie !!!
virtual const pijAccelerator* getPijAccelerator() const {return _pijAccelerator;}
virtual void setDistribution(const distribution* in_distr);
stochasticProcess& operator=(const stochasticProcess &otherStoc);
virtual ~stochasticProcess();
virtual void setGlobalRate(const MDOUBLE x) {_distr->setGlobalRate(x);}
virtual MDOUBLE getGlobalRate() const {return _distr->getGlobalRate();}
const bool isReversible() const {return _isReversible;}
protected:
distribution *_distr;
pijAccelerator *_pijAccelerator;
bool _isReversible;
};
#endif
// Stochastic process is composed of two objects: a distribution of rates and a Pij accelerator.