package test.dr.evomodel.substmodel;
import dr.evolution.tree.TreeUtils;
import dr.evomodel.siteratemodel.GammaSiteRateModel;
import dr.evomodel.substmodel.FrequencyModel;
import dr.evomodel.substmodel.nucleotide.HKY;
import dr.evolution.datatype.Nucleotides;
import dr.evomodel.branchratemodel.BranchRateModel;
import dr.evomodel.branchratemodel.DefaultBranchRateModel;
import dr.inference.markovjumps.MarkovJumpsCore;
import dr.inference.model.Parameter;
/**
* @author Marc A. Suchard
*/
public class VariableBranchCompleteHistorySimulatorTest extends CompleteHistorySimulatorTest {
public int N = 5000;
public void setUp() throws Exception {
super.setUp();
}
public void testHKYVariableSimulation() {
System.out.println("Starting HKY variable branch simulation");
Parameter kappa = new Parameter.Default(1, 2.0);
double[] pi = {0.45, 0.05, 0.25, 0.25};
Parameter freqs = new Parameter.Default(pi);
FrequencyModel f = new FrequencyModel(Nucleotides.INSTANCE, freqs);
HKY hky = new HKY(kappa, f);
int stateCount = hky.getDataType().getStateCount();
Parameter mu = new Parameter.Default(1, 0.5);
Parameter alpha = new Parameter.Default(1, 0.5);
GammaSiteRateModel siteModel = new GammaSiteRateModel("gammaModel", mu, alpha, 4, null);
siteModel.setSubstitutionModel(hky);
BranchRateModel branchRateModel = new DefaultBranchRateModel();
double analyticResult = TreeUtils.getTreeLength(tree, tree.getRoot()) * mu.getParameterValue(0);
int nSites = 200;
double[] register1 = new double[stateCount * stateCount];
double[] register2 = new double[stateCount * stateCount];
MarkovJumpsCore.fillRegistrationMatrix(register1, stateCount); // Count all jumps
// Move some jumps from 1 to 2
register1[1 * stateCount + 2] = 0;
register2[1 * stateCount + 2] = 1;
register1[1 * stateCount + 3] = 0;
register2[1 * stateCount + 3] = 1;
register1[2 * stateCount + 3] = 0;
register2[2 * stateCount + 3] = 1;
double[] branchValues = { 10.0, 10.0, 10.0, 10.0, 10.0 };
Parameter branchValuesParam = new Parameter.Default(branchValues);
runSimulation(N, tree, siteModel, branchRateModel, nSites,
new double[][] {register1, register2}, analyticResult, kappa, branchValuesParam);
}
public void testCodonSimulation() {
// Do nothing
}
}