Art Poon
|
Hi Francesc, Try this: Code:DataSet ds = ReadDataFile ("/Applications/HyPhy/data/p51.aa");
DataSetFilter dsf = CreateFilter (ds, 1);
equalFreqs = {20,1}+0.05;
myMatrix = {20,20};
/* fill these with your own values, or, if many cells are constrained to the same value
then you can be clever and write a loop statement over those cells */
_numericRateMatrix =
{
{0, 0.167653, 4.43521, 5.56325, 0.597923, 1.8685, 0.005, 0.005, 0.592784, 0.16024, 0.005, 0.617509, 1.00981, 0.005, 0.0744808, 8.5942, 24.1422, 24.8094, 0.005, 0.005}
{0.167653, 0, 0.005, 0.005, 0.362959, 0.0489798, 0.005, 0.005, 0.005, 0.005, 0.005, 0.0604932, 0.005, 0.005, 2.86364, 1.12195, 0.005, 0.005, 5.49894, 8.34835}
{4.43521, 0.005, 0, 12.1233, 0.005, 10.3969, 2.31779, 0.145124, 0.894313, 0.005, 0.005, 29.4087, 0.005, 0.005, 0.0674539, 0.427881, 0.630395, 2.91786, 0.005, 2.28154}
{5.56325, 0.005, 12.1233, 0, 0.005, 14.7801, 0.005, 0.0390512, 23.9626, 0.129839, 0.005, 0.201526, 0.005, 3.20656, 0.0251632, 0.005, 0.458743, 2.19952, 0.005, 0.005}
{0.597923, 0.362959, 0.005, 0.005, 0, 0.005, 0.005, 1.48288, 0.005, 7.48781, 0.005, 0.005, 0.0342252, 0.005, 0.005, 4.27939, 0.114512, 2.28, 0.005, 4.12728}
{1.8685, 0.0489798, 10.3969, 14.7801, 0.005, 0, 0.005, 0.005, 0.279425, 0.0489798, 0.0489798, 0.0604932, 0.005, 0.0604932, 13.4379, 6.27966, 0.0489798, 2.79622, 2.8258, 0.005}
{0.005, 0.005, 2.31779, 0.005, 0.005, 0.005, 0, 0.005, 0.22406, 1.76382, 0.005, 8.59876, 13.9444, 18.5465, 6.84405, 0.725157, 0.95956, 0.827479, 0.005, 47.4889}
{0.005, 0.005, 0.145124, 0.0390512, 1.48288, 0.005, 0.005, 0, 0.817481, 9.10246, 17.3064, 0.987028, 0.005, 0.0342252, 1.34069, 0.740091, 9.36345, 24.8231, 0.005, 0.114512}
{0.592784, 0.005, 0.894313, 23.9626, 0.005, 0.279425, 0.22406, 0.817481, 0, 0.005, 4.09564, 10.6655, 0.111928, 13.0705, 39.8897, 0.005, 4.04802, 0.128065, 0.005, 0.005}
{0.16024, 0.005, 0.005, 0.129839, 7.48781, 0.0489798, 1.76382, 9.10246, 0.005, 0, 11.3839, 0.005, 9.83095, 2.89048, 0.586757, 6.14396, 0.005, 2.95344, 1.37031, 0.005}
{0.005, 0.005, 0.005, 0.005, 0.005, 0.0489798, 0.005, 17.3064, 4.09564, 11.3839, 0, 0.201526, 0.005, 0.005, 3.28652, 0.392575, 7.41313, 14.7683, 0.005, 0.579198}
{0.617509, 0.0604932, 29.4087, 0.201526, 0.005, 0.0604932, 8.59876, 0.987028, 10.6655, 0.005, 0.201526, 0, 0.344848, 0.342068, 0.16024, 14.5699, 4.54206, 0.0744808, 0.005, 5.06475}
{1.00981, 0.005, 0.005, 0.005, 0.0342252, 0.005, 13.9444, 0.005, 0.111928, 9.83095, 0.005, 0.344848, 0, 3.04502, 0.404723, 14.249, 4.33701, 0.005, 0.005, 0.005}
{0.005, 0.005, 0.005, 3.20656, 0.005, 0.0604932, 18.5465, 0.0342252, 13.0705, 2.89048, 0.005, 0.342068, 3.04502, 0, 10.6746, 0.16024, 0.203091, 0.005, 0.0443298, 0.005}
{0.0744808, 2.86364, 0.0674539, 0.0251632, 0.005, 13.4379, 6.84405, 1.34069, 39.8897, 0.586757, 3.28652, 0.16024, 0.404723, 10.6746, 0, 8.35024, 0.928203, 0.279425, 5.96564, 0.005}
{8.5942, 1.12195, 0.427881, 0.005, 4.27939, 6.27966, 0.725157, 0.740091, 0.005, 6.14396, 0.392575, 14.5699, 14.249, 0.16024, 8.35024, 0, 6.34079, 0.862637, 1.10156, 0.933142}
{24.1422, 0.005, 0.630395, 0.458743, 0.114512, 0.0489798, 0.95956, 9.36345, 4.04802, 0.005, 7.41313, 4.54206, 4.33701, 0.203091, 0.928203, 6.34079, 0, 0.005, 0.005, 0.490608}
{24.8094, 0.005, 2.91786, 2.19952, 2.28, 2.79622, 0.827479, 24.8231, 0.128065, 2.95344, 14.7683, 0.0744808, 0.005, 0.005, 0.279425, 0.862637, 0.005, 0, 0.005, 1.35482}
{0.005, 5.49894, 0.005, 0.005, 0.005, 2.8258, 0.005, 0.005, 0.005, 1.37031, 0.005, 0.005, 0.005, 0.0443298, 5.96564, 1.10156, 0.005, 0.005, 0, 0.005}
{0.005, 8.34835, 2.28154, 0.005, 4.12728, 0.005, 47.4889, 0.114512, 0.005, 0.005, 0.579198, 5.06475, 0.005, 0.005, 0.005, 0.933142, 0.490608, 1.35482, 0.005, 0}
};
/*--------------------------------------------------------------------------------------------*/
function PopulateModelMatrix (ModelMatrixName&, EFV)
{
ModelMatrixName = {20,20};
if (categoriesUsed)
{
for (ri = 0; ri < 20; ri = ri+1)
{
for (ci = ri+1; ci < 20; ci = ci+1)
{
ModelMatrixName[ri][ci] := _numericRateMatrix__[ri__][ci__] * c * t;
ModelMatrixName[ci][ri] := _numericRateMatrix__[ri__][ci__] * c * t;
}
}
}
else
{
for (ri = 0; ri < 20; ri = ri+1)
{
for (ci = ri+1; ci < 20; ci = ci+1)
{
ModelMatrixName[ri][ci] := _numericRateMatrix__[ri__][ci__] * t;
ModelMatrixName[ci][ri] := _numericRateMatrix__[ri__][ci__] * t;
}
}
}
return 1;
}
/*--------------------------------------------------------------------------------------------*/
MULTIPLY_BY_FREQS = PopulateModelMatrix ("myMatrix",equalFreqs);
Model myModel = (myMatrix, equalFreqs, MULTIPLY_BY_FREQS);
FREQUENCY_SENSITIVE = 0;
UseModel (myModel);
Cheers, - Art.
|