Chapter 5. Descriptors

Table of Contents

5.1. Shoot based
5.1.1. Taxonomy
5.1.2. Geometry
5.1.3. Reverse branch order pipe area
5.1.4. Estimated sap wood
5.2. Tree wide
5.2.1. Max branching order
5.2.2. Average tip cross area

The QSM plug-in provides a set of additional descriptors. Most of them are taken from Hackenberg, Jan, and Jean-Daniel Bontemps.Improving quantitative structure models with filters based on allometric scaling theory.” Applied Geomatics 15.4 (2023)“.

5.1. Shoot based

The shoot based descriptors can be taken from the QSM inspector or can be used in RGG with its descriptor key, as following:

import static  de.grogra.qsm.utils.Descriptors.*;

...

public void test(){
    println((*F[GROWTH_LENGTH]*)); //print all growth length in the XL console
    println(sum((*F[GROWTH_LENGTH]*))); //print sum of all growth length in the XL console
    [
        f:F,(f[TIP]) ==>f Sphere(0.01); // add a sphere on top of each tip of the tree. 
    ]
}

5.1.1. Taxonomy

Following common assumption, we consider a branch to be a chain of apically linked shoots. Every lateral shoot describes a new branch, which is a child branch of the branch of the parent shoot of the new shoot. To display the different relationships in a GroIMP graph, successor and branch edges are used. A apical shoot is linked to its parent with a successor edge and a lateral shoot with a branch edge. Following the concept of QSM and tree taxonomy we assume each shoot can only have one apical child and therefore each shoot can only have one successor (the child connected with a successor edge).

5.1.1.1. Branch order

For each shoot the branch order describes the taxonomical distance from the branch of this shoot to the root of the tree. Therefore the trunk has a branch oder of 0, the branches emerging from the trunk a branch oder of 1.

descriptor key: (*F*)[BO]

Formal definition:

The branch order of a shoot s1 is described as following:

BO(s1) = BO(axisParent(s1)) + 1

axisParent(s1) returns the shoot from which the branch of s1 was laterally emerged. (This is a GroIMP core function: javadoc )

5.1.1.2. Reverse branch order

The reverse branch order of a shoot describes the highest number of continuously connected branches emerging from this shoot.

descriptor key: (*F*)[RBO]

Formal definition:

  • children(s1) describes all shoots directly connected to s1 with s1 as source.

  • isApical(sx) is true if the incomming connectio is a successor edge. (the shoot is the apical child / on the same branch)

5.1.1.3. Trend

The trend of a shoot describes its position on the branch based on the number of shoots preceding it on the same branch.

descriptor key: (*F*)[TREND]

Formal definition:

  • isApical(sx) is true if the incomming connectio is a successor edge. (the shoot is the apical child / on the same branch)

  • parent(s1) represents the node that is connected to s1 with s1 as target.

5.1.1.4. Reverse trend

Analog to the trend the reverse trend describes the position of a shoot on its branch based on the number of shoots succeeding it on the same branch.

descriptor key: (*F*)[RTREND]

Formal definition:

  • parent(s1) represents the node that is connected to s1 with s1 as target.

  • hasSuccessor(s1) is true if one of the children of s1 is linked by successor edge.

5.1.1.5. Root distance

The root distance of a shoot is the number of shoots preceding it in.

descriptor key: (*F*)[ROOT_DISTANCE]

Formal definition:

  • parent(s1) represents the node that is connected to s1 with s1 as target.

  • hasParent(s1) is true if s1 has an incoming edge.

5.1.1.6. Number of direct children

The number of direct children (both apical and lateral) of a given shoot.

descriptor key: (*F*)[CHILD_COUNT]

Formal definition:

CHILD_COUNT(s1) = |children(s1)|

  • children(s1) describes all shoots directly connected to s1 with s1 as source.

5.1.1.7. Is tip

A Tip describes a shoot without any children, in terms of a mathematical tree graph it is considered a leaf.

descriptor key: (*F*)[TIP]

Formal definition:

if CHILD_COUNT(s1) is 0.

5.1.1.8. is apical tip

A Shoot is considered an apical tip if it has no apical child.

descriptor key: (*F*)[ATIP]

Formal definition:

if !hasSuccessor(s1).

  • hasSuccessor(s1) is true if one of the children of s1 is linked by successor edge.

5.1.1.9. Longest tip distance

The number of shoots on the longest ongoing path from the given shoot to a tip.

descriptor key: (*F*)[MAX_TIP_DISTANCE]

Formal definition:

  • children(s1) describes all shoots directly connected to s1 with s1 as source.

5.1.1.10. Shortest tip distance

The number of shoots on the shortest ongoing path from the given shoot to a tip.

descriptor key: (*F*)[MIN_TIP_DISTANCE]

Formal definition:

  • children(s1) describes all shoots directly connected to s1 with s1 as source.

5.1.1.11. Absolute tip distance

The sum of the number of shoots all paths form the given shoot to every tips. Since every path starts at the same position, shoots are counted for each tip they are supporting.

descriptor key: (*F*)[ABSOLUTE_TIP_DISTANCE]

Formal definition:

  • children(s1) describes all shoots directly connected to s1 with s1 as source.

5.1.1.12. Average tip distance

The average distance from the given shoot to its supported tips.

descriptor key: (*F*)[AVERAGE_TIP_DISTANCE]

Formal definition:

5.1.2. Geometry

5.1.2.1. Growth length

The growth length (introduces by Hackenberg et al.) describes sum of the length of all shoots following the given shoot and the shoot it self.

descriptor key: (*F*)[GROWTH_LENGTH]

Formal definition:

  • children(s1) describes all shoots directly connected to s1 with s1 as source.

5.1.2.2. Growth volume

The growth volume (introduces by Hackenberg et al.) describes sum of the volume of all shoots following the given shoot and the shoot it self.

descriptor key: (*F*)[GROWTH_VOLUME]

Formal definition:

  • children(s1) describes all shoots directly connected to s1 with s1 as source.

5.1.3. Reverse branch order pipe area

5.1.3.1. Number of supported tips

The amount of tips following the given shoot, in Hackenberg et al. this as the Reverse Branch Order Pipe Area.

descriptor key: (*F*)[SUPPORTED_TIPS] or (*F*)[RBOPA]

Formal definition:

  • children(s1) describes all shoots directly connected to s1 with s1 as source.

5.1.3.2. Proxy volume

The proxy volume (Hackenberg et al.) describes the assumed volume of a shoot using the Reverse Branch Order Pipe Area as the cut trough area of the shoot.

descriptor key: (*F*)[PROXY_VOLUME]

Formal definition:

PROXY_VOLUME(s1) = RBOPA(s1) * length(s1)

5.1.3.3. Vessel volume

The Vessel volume (Hackenberg et al.) is calculated analog to the growth volume but based on the proxy volume.

descriptor key: (*F*)[VESSEL_VOLUME]

Formal definition:

  • children(s1) describes all shoots directly connected to s1 with s1 as source.

5.1.3.4. Reverse branch order pipe radius

Following the definition of Hackenberg et al. the reverse branch order pipe radius is the square root of the reverse branch order pipe area

descriptor key: (*F*)[RBOPR]

Formal definition:

5.1.4. Estimated sap wood

Based on the number of supported tips and the average cross section area of a tip a pipe model can be applied to estimate the sap wood of a shoot.

5.1.4.1. Estimated sap wood area

Following the idea of a pipe model the cross section area of sap wood of a branch is the sum of the cross section area of the supported tips, to simplify the approach at this place, the average cross section area of the tips is used.

descriptor key: (*F*)[SAPWOOD_AREA]

Formal definition:

SAPWOOD_AREA(s1) = SUPPORTED_TIPS(s1) * average_tip_area

  • average_tip_area a tree wide descriptor

5.1.4.2. Estimated sap wood radius

The radius based on the estimated sap wood area

descriptor key: (*F*)[SAPWOOD_RADIUS]

Formal definition:

5.1.4.3. Estimated sap wood volume

The volume based on the estimated sap wood area

descriptor key: (*F*)[SAPWOOD_VOLUME]

Formal definition:

SAPWOOD_VOLUME(s1) = SAPWOOD_AREA(s1) * length(s1)