# How do you construct a self-similar binary structured-tree?

Computational Science Asked on January 4, 2022

Please excuse me if this question somehow looks trivial or not really interesting, but I recently have a hard time to convince someone else that my algorithm for constructing a self-similar binary structured-tree (read more here: https://doi.org/10.1002/cnm.3229) is correct. So, the algorithm is summarized in these 4 steps:

1. Get root and threshold radii marked as $$r_{text{root}}$$ and $$r_{text{threshold}}$$ respectively.
2. Scale parent radius ($$r_{p}$$) with $$alpha$$ and $$beta$$ and define daughters radii as:

$$r_{text{left}} = alpha r_{p}$$

$$r_{text{right}} = beta r_{p}$$

1. From Ma et. al. paper (https://doi.org/10.1002/cnm.3229):

The bifurcating procedure halts if the radius of the current vessel is less than $$r_{text{threshold}}$$ and it is set as a terminal branch.

My problem is that based on my understanding the above algorithm works like this:

• When I stand at $$r_{p}$$ and I want to decide if should I bifurcate or not, I calculate $$r_{text{left}}$$ and $$r_{text{right}}$$ based on step 2 in the above procedure.
• Then I compare $$r_{text{left}}$$ and $$r_{text{right}}$$ with $$r_{text{threshold}}$$ and if they are greater than $$r_{text{threshold}}$$, I insert left and right nodes in my structured-tree.

But I have a lengthy discussion with someone else that argues that I need to only compare $$r_{p}$$ with $$r_{text{threshold}}$$ not $$r_{text{left}}$$ and $$r_{text{right}}$$ and in the original paper the purpose of authors from current vessel is $$r_{p}$$. In my understanding it doesn’t make sense because in the original paper referenced here (https://doi.org/10.1002/cnm.3229) authors calculate $$r_{text{left}}$$ and $$r_{text{right}}$$ at step 2 and then decide to bifurcate or not, but if they want to decide to bifurcate solely based on $$r_{p}$$ so why even step 2 is there cause in that situation we don’t need $$r_{text{left}}$$ and $$r_{text{right}}$$ to decide to bifurcate or not. Any idea or suggestion is appreciated here.

The other person's argument sounds to me like a reorganization of your algorithm. It will produce slightly different results, but in the end achieve the same goal. Let me demonstrate with a simple tree of one parent of radius 1, two children of radii (alpha=)0.3 and (beta=)0.7 against a threshold of 0.5.

Your suggestion would produce the tree below

     1
Null_|_0.7
Null_|_Null


Their suggestion would produce a slightly different tree

                 1
0.3________|________0.7
Null_|_Null      0.21____|____0.49
Null_|_Null  Null_|_Null


I am putting Null because I am not exactly sure how you handle your data structures, maybe you don't create the leaves at all. In that case, visualization would be different.

The main point is that the first tree is a subtree of the second tree. Hence, this becomes a philosophical problem. Which one of the trees describes the phenomenon better? I would argue that your interpretation is the correct one, because I don't agree with creating children which are below the prescribed threshold, since they will not survive. But the argument "the parents who are below the threshold cannot produce off-springs" is equally valid.

The citation you pulled

The bifurcating procedure halts if the radius of the current vessel is less than threshold and it is set as a terminal branch.

seems to agree with the second interpretation, e.g. "the parents who are below the threshold cannot produce off-spring."

Looking at the algorithm, they definitely compute radii of the children before they talk about the stopping criteria. It may be bad writing but definitely supports your interpretation.

The problem is we can not know what they actually did in their research without access to their codes and they don't seem to provide it. How do you feel about reaching out to them and requesting some of their codes? In my experience, many researchers are happy to share their code -unless it is proprietary or poorly written research software, e.g. the incurable plague of academia- as it is a way to get some exposure.

Answered by Abdullah Ali Sivas on January 4, 2022

## Related Questions

### Numerical minimization of the action in python

2  Asked on July 21, 2021 by murt_

### How can I detect lost of precision due to rounding in both floating point addition and multiplication?

2  Asked on July 19, 2021

### Where does the floating point error come from? (Finite difference using matrix multiplication versus shifts and adding.)

1  Asked on July 18, 2021 by willie-wong

### Going From Blender Structure defined by triangles to full 3D mesh (Using GMSH?)

1  Asked on July 18, 2021 by aleksander-bach-lorentzen

### Help with Fourier beam propagation method

1  Asked on July 17, 2021

### discretizing surface integral using nodal DG method

1  Asked on July 15, 2021 by david1998

### Linearising Nonlinear Coupled Partial Differential Equations – Alfvénic Diffusion

0  Asked on July 15, 2021 by hanno-jacobs

### Forming a particular (averaged) block matrix with numpy

1  Asked on July 15, 2021

### Numerically solving the equation of motion for inflation in cosmology

2  Asked on July 14, 2021

### Classical global estimate for $H^1$ error

1  Asked on July 12, 2021

### Writing code on the CPU while developing, running it on the GPU when live – which approach?

2  Asked on July 10, 2021

### How to compute gradient of a cell having a boundary face?

1  Asked on July 10, 2021

### Boundary conditions for an FEM approximation of the Laplace operator

0  Asked on July 9, 2021 by pimpom

### How can I color my Mandelbrot set like this?

1  Asked on July 8, 2021

### Where could error terms that blow up in SWE come from?

1  Asked on July 7, 2021

### How can I plot piece-wise defined function in some easily-accessed open-source tool?

6  Asked on July 6, 2021 by user664

### Python scipy NLLS optimization : Parameter estimate hugely off, but the visualisation looks fine

0  Asked on June 30, 2021 by isquare1

### Rule of thumb for sparse vs dense matrix storage

3  Asked on June 30, 2021 by josh_eime