42 #include <Bpp/Numeric/Matrix/MatrixTools.h> 45 #include <Bpp/Seq/Container/SequenceContainerTools.h> 60 AbstractParameterAliasable(
"RN95s."),
75 double f = 2 * (gamma + delta);
83 double alphaP = (2 *
alpha_ * piA + ((0.5 - piA <
gamma_) ? 0.5 - piA :
gamma_)) / (0.5 - piA);
84 addParameter_(
new Parameter(
"RN95s.thetaA", piA,
new IntervalConstraint(0, 0.5,
false,
false),
true));
85 addParameter_(
new Parameter(
"RN95s.gamma",
gamma_,
new IntervalConstraint(0, 0.5,
false,
false),
true));
86 addParameter_(
new Parameter(
"RN95s.alphaP", alphaP,
new IntervalConstraint(1, 1,
false),
true));
94 freq_[0] = getParameterValue(
"thetaA");
95 double alphaP = getParameterValue(
"alphaP");
96 gamma_ = getParameterValue(
"gamma");
136 for (
unsigned int i = 0; i < 4; i++)
194 catch (ZeroDivisionException& e)
196 ApplicationTools::displayMessage(
"Singularity during diagonalization. Taylor series used instead.");
204 for (
size_t i = 0; i <
size_; i++)
205 for (
size_t j = 0; j <
size_; j++)
473 setParameterValue(
"thetaA", (freqs[0] + freqs[3]) / 2);
bool enableEigenDecomposition()
Tell if eigenValues and Vectors must be computed.
RowMatrix< double > exchangeability_
The exchangeability matrix of the model, defined as . When the model is reversible, this matrix is symetric.
const Matrix< double > & getdPij_dt(double d) const
bool isNonSingular_
boolean value for non-singularity of rightEigenVectors_
This class implements a state map where all resolved states are modeled.
RowMatrix< double > rightEigenVectors_
The matrix made of right eigen vectors (by column).
const Matrix< double > & getPij_t(double d) const
Vdouble eigenValues_
The vector of eigen values.
double dPij_dt(size_t i, size_t j, double d) const
Vdouble freq_
The vector of equilibrium frequencies.
Partial implementation of the SubstitutionModel interface.
double d2Pij_dt2(size_t i, size_t j, double d) const
void updateMatrices()
Diagonalize the matrix, and fill the eigenValues_, iEigenValues_, leftEigenVectors_ and rightEigenVe...
RowMatrix< double > leftEigenVectors_
The matrix made of left eigen vectors (by row) if rightEigenVectors_ is non-singular.
RowMatrix< double > generator_
The generator matrix of the model.
double rate_
The rate of the model (default: 1). The generator (and all its vectorial components) is independent o...
double Pij_t(size_t i, size_t j, double d) const
RN95s(const NucleicAlphabet *alphabet, double alpha=1, double beta=1, double gamma=1, double delta=1)
std::vector< RowMatrix< double > > vPowGen_
vector of the powers of generator_ for Taylor development (if rightEigenVectors_ is singular)...
size_t size_
The size of the generator, i.e. the number of states.
const Matrix< double > & getd2Pij_dt2(double d) const
void setFreq(std::map< int, double > &)
This method takes the average value between observed and .
bool isDiagonalizable_
boolean value for diagonalizability in R of the generator_
Vdouble iEigenValues_
The vector of the imaginary part of the eigen values.