Phylogenetic trees

Phylogenetic trees

using TensorDec
normalize_markov! = function(w,A,B,C) 
    for i in 1:size(A,2) 
        l = sum(A[j,i] for j in 1:size(A,1) ) 
        A[:,i] /= l
        w[i] *= l
    end
    for i in 1:size(B,2) 
        l = sum(B[j,i] for j in 1:size(B,1) ) 
        B[:,i] /=l
        w[i] *= l
    end
    for i in 1:size(C,2) 
        l = sum(C[j,i] for j in 1:size(B,1) ) 
        C[:,i] /=l
        w[i] *= l
    end
    w, A,B,C
end
(::#1) (generic function with 1 method)
A = rand(4,4); B = rand(4,4); C = rand(4,4); w = rand(4);
normalize_markov!(w,A,B,C)
fill(1.,4)'*A, fill(1.,4)'*B, fill(1.,4)'*C
([1.0 1.0 1.0 1.0], [1.0 1.0 1.0 1.0], [1.0 1.0 1.0 1.0])
t = tensor(w,A,B,C)
4×4×4 Array{Float64,3}:
[:, :, 1] =
 0.320077  0.420908  0.475253  0.247127
 0.213319  0.307566  0.588408  0.224455
 0.1917    0.293001  0.582306  0.187666
 0.45846   0.610626  0.921451  0.340751

[:, :, 2] =
 0.280598  0.356095  0.414781  0.172266
 0.216832  0.321847  0.615896  0.18891 
 0.201625  0.311211  0.630846  0.181488
 0.507995  0.679081  1.01114   0.339524

[:, :, 3] =
 0.163092  0.203824  0.24255   0.0909542
 0.134334  0.201202  0.388134  0.11168  
 0.125966  0.195363  0.400887  0.111561 
 0.321378  0.430591  0.64321   0.210276 

[:, :, 4] =
 0.265587  0.350888  0.358595  0.221097
 0.145616  0.191792  0.314945  0.15979 
 0.124797  0.175718  0.291309  0.116509
 0.307703  0.387446  0.502116  0.224392
wd, Ad, Bd, Cd = decompose(t)
normalize_markov!(wd,Ad,Bd,Cd)
([8.75104, 1.73324, 9.71851, 0.723709], [0.0946489 0.661463 0.253254 0.204076; 0.266164 0.118039 0.155807 0.382351; 0.286631 0.114663 0.135711 0.132622; 0.352556 0.105835 0.455228 0.280951], [0.0846472 0.203291 0.287103 0.132316; 0.188458 0.309878 0.32835 0.0826015; 0.589626 0.279492 0.258835 0.306848; 0.137268 0.207338 0.125712 0.478235], [0.306021 0.405378 0.277047 0.428301; 0.345862 0.111032 0.323644 0.0907689; 0.222999 0.00489305 0.206897 0.00596532; 0.125118 0.478697 0.192412 0.474965])
w
4-element Array{Float64,1}:
 0.723709
 8.75104 
 9.71851 
 1.73324
wd
4-element Array{Float64,1}:
 8.75104 
 1.73324 
 9.71851 
 0.723709
A
4×4 Array{Float64,2}:
 0.204076  0.0946489  0.253254  0.661463
 0.382351  0.266164   0.155807  0.118039
 0.132622  0.286631   0.135711  0.114663
 0.280951  0.352556   0.455228  0.105835
Ad
4×4 Array{Float64,2}:
 0.0946489  0.661463  0.253254  0.204076
 0.266164   0.118039  0.155807  0.382351
 0.286631   0.114663  0.135711  0.132622
 0.352556   0.105835  0.455228  0.280951
norm(t-tensor(wd,Ad,Bd,Cd))
6.380155789400488e-14