Input: Phylogenetic tree T
|
Bandwidth b
|
Hyperparameter H for MLP |
Divide T into K = ⌈h/b⌉ bands B1, . . ., BK
|
for
k = K
to 2 do
|
for
j = 1 to |Bk| do
|
if
A(Nkj) is not NULL then
|
S(A(Nkj)) ← S(A(Nkj)) ∪ {Nkj} |
else
|
Insert a new (pseudo) node to Bk−1
|
end if
|
end for
|
for
j = 1 to |Bk−1| do
|
vkj ← NULL vector |
for
N
in
S(Nk−1,j) do
|
if
V(N) is not NULL then
|
vkj ← [vkj, V(N)] (append V(N) to vkj) |
end if
|
end for
|
if
vkj is not NULL vector then
|
|
end if
|
end for
|
end for |
v11 ← NULL vector |
for
N
in
B1
do
|
if
V(N) is not NULL then
|
v11 ← [v11, V(N)] (append V(N) to v11) |
end if
|
end for |
|
Output: The PhyNN model f that accepts the abundances on all leaf nodes as input and yields z as output |