Skip to contents

Runs all Real Twig steps

Usage

run_rtwig(
  file,
  twig_radius,
  backend = "multisession",
  metrics = TRUE,
  version = NULL,
  smooth = TRUE,
  standardize = FALSE
)

Arguments

file

file path to QSM (.mat, .csv, .json)

twig_radius

Twig radius in millimeters

backend

Parallel backend for multi-core processing. Defaults to "multisession" (all platforms), but can be set to "multicore" (MacOS & Linux), "cluster" (all platforms), or a "package::backend" string.

metrics

Calculate tree metrics? Defaults to TRUE.

version

Defaults to NULL. If using a specific version of TreeQSM, the user can specify the version (e.g. 2.4.1, 2.0, etc.).

smooth

Defaults to TRUE, if using TreeQSM. Can be set to FALSE.

standardize

Standardize QSM cylinder data? Defaults to FALSE. Can be set to TRUE.

Value

Returns cylinder data frame or list if metrics is true.

Examples

# \donttest{

## TreeQSM
file <- system.file("extdata/QSM.mat", package = "rTwig")
qsm <- run_rtwig(file, twig_radius = 4.23)
#> Importing TreeQSM .mat
#> Updating Cylinder Ordering
#> Calculating Total Children
#> Building Cylinder Network
#> Verifying Topology
#> Calculating Growth Length
#> Calculating Reverse Branch Order
#> Calculating Branch Segments
#> Calculating Alternate Branch Numbers
#> Calculating Distance From Base
#> Calculating Average Distance To Twigs
#> Smoothing QSM
#> Generating Branch Paths
#> Starting Parallel Workers
#> Correcting Branch Paths
#> Updating Cylinder Radii
#> Done!
#> Calculating Branch Metrics
#> Calculating Segment Metrics
#> Calculating Tree Metrics
#> Generating Point Cloud
#> Calculating Crown Metrics
#> Calculating Tree Distributions
#> Calculating Branch Distributions
#> Calculating Segment Distributions
#> Calculating Stem Taper
#> Calculating Spreads
#> Calculating Alternate Branch Metrics
str(qsm$cylinder)
#> Classes ‘tidytable’, ‘tbl’, ‘data.table’ and 'data.frame':	1136 obs. of  29 variables:
#>  $ radius            : num  0.0465 0.0454 0.0442 0.0437 0.0429 ...
#>  $ length            : num  0.09392 0.07216 0.06654 0.00938 0.06795 ...
#>  $ start.x           : num  0.768 0.769 0.768 0.769 0.769 ...
#>  $ start.y           : num  -16.4 -16.4 -16.4 -16.3 -16.3 ...
#>  $ start.z           : num  254 254 254 254 254 ...
#>  $ axis.x            : num  0.009949 -0.022059 0.016224 -0.000391 0.012068 ...
#>  $ axis.y            : num  0.091165 0.019722 0.034392 -0.000295 0.023483 ...
#>  $ axis.z            : num  0.996 1 0.999 1 1 ...
#>  $ end.x             : num  0.769 0.768 0.769 0.769 0.77 ...
#>  $ end.y             : num  -16.4 -16.4 -16.3 -16.3 -16.3 ...
#>  $ end.z             : num  254 254 254 254 254 ...
#>  $ added             : num  0 0 0 0 0 0 0 0 0 0 ...
#>  $ BranchOrder       : int  0 0 0 0 0 0 0 0 0 0 ...
#>  $ reverseBranchOrder: num  20 20 20 20 20 20 20 20 20 20 ...
#>  $ PositionInBranch  : int  1 2 3 4 5 6 7 8 9 10 ...
#>  $ segment           : int  1 1 1 1 1 1 1 1 1 1 ...
#>  $ parentSegment     : int  0 0 0 0 0 0 0 0 0 0 ...
#>  $ mad               : num  0.00072 0.000538 0.000523 0.000335 0.000438 ...
#>  $ SurfCov           : num  0.875 1 1 1 1 1 1 1 1 1 ...
#>  $ UnmodRadius       : num  0.0465 0.0454 0.0442 0.0437 0.0429 ...
#>  $ OldRadius         : num  0.0465 0.0454 0.0442 0.0437 0.0429 ...
#>  $ growthLength      : num  32.8 32.7 32.6 32.6 32.6 ...
#>  $ branch            : int  1 1 1 1 1 1 1 1 1 1 ...
#>  $ branch_alt        : int  0 0 0 0 0 0 0 0 0 0 ...
#>  $ parent            : num  0 1 2 3 4 5 6 7 8 9 ...
#>  $ extension         : int  1 2 3 4 5 6 7 8 9 10 ...
#>  $ totalChildren     : int  1 1 1 1 1 1 1 1 1 1 ...
#>  $ distanceFromBase  : num  0.0939 0.1661 0.2326 0.242 0.31 ...
#>  $ distanceToTwig    : num  3.4 3.31 3.24 3.17 3.16 ...
#>  - attr(*, ".internal.selfref")=<externalptr> 

## SimpleForest
file <- system.file("extdata/QSM.csv", package = "rTwig")
qsm <- run_rtwig(file, twig_radius = 4.23)
#> Updating Branch Ordering
#> Calculating Total Children
#> Building Cylinder Network
#> Verifying Topology
#> Calculating Distance From Base
#> Calculating Average Distance To Twigs
#> Generating Branch Paths
#> Starting Parallel Workers
#> Correcting Branch Paths
#> Updating Cylinder Radii
#> Done!
#> Calculating Branch Metrics
#> Calculating Segment Metrics
#> Calculating Tree Metrics
#> Generating Point Cloud
#> Calculating Crown Metrics
#> Calculating Tree Distributions
#> Calculating Branch Distributions
#> Calculating Segment Distributions
#> Calculating Stem Taper
#> Calculating Spreads
#> Calculating Alternate Branch Metrics
str(qsm)
#> List of 2
#>  $ cylinder:Classes ‘tidytable’, ‘tbl’, ‘data.table’ and 'data.frame':	1149 obs. of  26 variables:
#>   ..$ ID                  : int [1:1149] 1 2 3 4 5 6 7 8 9 10 ...
#>   ..$ parentID            : num [1:1149] 0 1 2 3 4 5 6 7 8 9 ...
#>   ..$ startX              : num [1:1149] 0.761 0.759 0.771 0.768 0.765 ...
#>   ..$ startY              : num [1:1149] -16.4 -16.4 -16.4 -16.3 -16.4 ...
#>   ..$ startZ              : num [1:1149] 254 254 254 254 254 ...
#>   ..$ endX                : num [1:1149] 0.759 0.771 0.768 0.765 0.769 ...
#>   ..$ endY                : num [1:1149] -16.4 -16.4 -16.3 -16.4 -16.4 ...
#>   ..$ endZ                : num [1:1149] 254 254 254 254 254 ...
#>   ..$ axisX               : num [1:1149] -0.0286 0.2148 -0.0473 -0.0498 0.0678 ...
#>   ..$ axisY               : num [1:1149] -0.078889 0.163918 0.03933 -0.011114 -0.000265 ...
#>   ..$ axisZ               : num [1:1149] 0.996 0.963 0.998 0.999 0.998 ...
#>   ..$ length              : num [1:1149] 0.0497 0.0529 0.0535 0.0525 0.0528 ...
#>   ..$ growthLength        : num [1:1149] 31.4 31.4 31.3 31.3 31.2 ...
#>   ..$ averagePointDistance: num [1:1149] 0.00589 0.00378 0.00205 0.00246 0.00251 ...
#>   ..$ segmentID           : num [1:1149] 1 1 1 1 1 1 1 1 1 1 ...
#>   ..$ parentSegmentID     : num [1:1149] 0 0 0 0 0 0 0 0 0 0 ...
#>   ..$ branchOrder         : int [1:1149] 0 0 0 0 0 0 0 0 0 0 ...
#>   ..$ reverseBranchOrder  : int [1:1149] 18 18 18 18 18 18 18 18 18 18 ...
#>   ..$ UnmodRadius         : num [1:1149] 0.0472 0.0479 0.0469 0.0467 0.0453 ...
#>   ..$ branch_alt          : num [1:1149] 0 0 0 0 0 0 0 0 0 0 ...
#>   ..$ positionInBranch    : int [1:1149] 1 2 3 4 5 6 7 8 9 10 ...
#>   ..$ branchID            : int [1:1149] 1 1 1 1 1 1 1 1 1 1 ...
#>   ..$ totalChildren       : int [1:1149] 1 1 1 1 1 1 1 1 1 1 ...
#>   ..$ distanceFromBase    : num [1:1149] 0.0497 0.1027 0.1562 0.2086 0.2614 ...
#>   ..$ distanceToTwig      : num [1:1149] 3.43 3.38 3.33 3.27 3.22 ...
#>   ..$ radius              : num [1:1149] 0.0472 0.047 0.0469 0.0467 0.0453 ...
#>   ..- attr(*, ".internal.selfref")=<externalptr> 
#>  $ metrics :List of 24
#>   ..$ branch               :Classes ‘grouped_tt’, ‘tidytable’, ‘tbl’, ‘data.table’ and 'data.frame':	65 obs. of  20 variables:
#>   .. ..$ branch          : int [1:65] 1 2 3 4 5 6 7 8 9 10 ...
#>   .. ..$ parent_branch   : int [1:65] 0 1 1 1 1 5 1 1 1 9 ...
#>   .. ..$ branch_order    : int [1:65] 0 1 1 1 1 2 1 1 1 2 ...
#>   .. ..$ reverse_order   : int [1:65] 18 1 1 1 2 1 1 1 4 1 ...
#>   .. ..$ diameter_base_cm: num [1:65] 9.44 0.9 1.03 2.37 2.37 ...
#>   .. ..$ diameter_mid_cm : num [1:65] 1.978 0.43 0.469 0.924 0.851 ...
#>   .. ..$ diameter_tip_cm : num [1:65] 0.846 0.846 0.846 1.235 1.691 ...
#>   .. ..$ volume_m3       : num [1:65] 1.20e-02 9.12e-06 1.91e-05 1.74e-04 1.42e-04 ...
#>   .. ..$ area_m2         : num [1:65] 0.72188 0.00418 0.00808 0.03567 0.02961 ...
#>   .. ..$ length_m        : num [1:65] 4.321 0.153 0.274 0.615 0.501 ...
#>   .. ..$ height_m        : num [1:65] 0 3.23 3.19 3.17 3.16 ...
#>   .. ..$ angle_deg       : num [1:65] 0 46.5 61.5 81.8 86.6 ...
#>   .. ..$ azimuth_deg     : num [1:65] -109.9 126.8 165 -164.2 -30.7 ...
#>   .. ..$ zenith_deg      : num [1:65] 4.82 81.98 19.69 95.58 64.21 ...
#>   .. ..$ growth_length   : num [1:65] 31.4264 0.0939 0.2738 0.615 0.5729 ...
#>   .. ..$ cylinders       : int [1:65] 122 6 12 24 21 3 6 23 33 2 ...
#>   .. ..$ segments        : int [1:65] 18 2 1 1 2 1 1 1 4 1 ...
#>   .. ..$ children        : int [1:65] 139 4 11 23 21 2 5 22 35 1 ...
#>   .. ..$ base_distance_m : num [1:65] 0.0497 4.2489 4.0634 3.7686 3.6042 ...
#>   .. ..$ twig_distance_m : num [1:65] 3.4286 0.0939 0.2738 0.615 0.4527 ...
#>   .. ..- attr(*, ".internal.selfref")=<externalptr> 
#>   .. ..- attr(*, "groups")= chr "branch"
#>   ..$ segment              :Classes ‘grouped_tt’, ‘tidytable’, ‘tbl’, ‘data.table’ and 'data.frame':	133 obs. of  18 variables:
#>   .. ..$ segment         : num [1:133] 1 2 3 4 5 6 7 8 9 10 ...
#>   .. ..$ parent_segment  : num [1:133] 0 1 2 3 4 5 6 7 8 9 ...
#>   .. ..$ branch_order    : int [1:133] 0 0 0 0 0 0 0 0 0 0 ...
#>   .. ..$ reverse_order   : int [1:133] 18 17 16 15 14 13 12 11 10 9 ...
#>   .. ..$ diameter_base_cm: num [1:133] 9.44 7.39 7.17 6.91 6.91 ...
#>   .. ..$ diameter_mid_cm : num [1:133] 4.0815 3.5959 3.5827 0.0691 0.0691 ...
#>   .. ..$ diameter_tip_cm : num [1:133] 7.59 7.18 7.16 6.91 6.91 ...
#>   .. ..$ volume_m3       : num [1:133] 0.00743 0.001477 0.000356 0.000199 0.000204 ...
#>   .. ..$ area_m2         : num [1:133] 0.3544 0.0817 0.0199 0.0115 0.0118 ...
#>   .. ..$ length_m        : num [1:133] 1.3525 0.3593 0.0884 0.0531 0.0543 ...
#>   .. ..$ height_m        : num [1:133] 0 1.34 1.7 1.78 1.83 ...
#>   .. ..$ angle_deg       : num [1:133] 0 34.8 17.1 31.9 44.9 ...
#>   .. ..$ azimuth_deg     : num [1:133] -109.9 161.6 52.8 -160 116 ...
#>   .. ..$ zenith_deg      : num [1:133] 4.82 19.44 11.09 10.02 45.04 ...
#>   .. ..$ cylinders       : int [1:133] 28 8 2 1 1 1 4 3 4 11 ...
#>   .. ..$ children        : int [1:133] 29 9 3 2 2 2 5 4 5 12 ...
#>   .. ..$ base_distance_m : num [1:133] 0.0497 1.4079 1.7562 1.8534 1.9077 ...
#>   .. ..$ twig_distance_m : num [1:133] 3.43 2.17 1.84 1.82 1.77 ...
#>   .. ..- attr(*, ".internal.selfref")=<externalptr> 
#>   .. ..- attr(*, "groups")= chr "segment"
#>   ..$ cloud                : num [1:12262, 1:3] 0.787 0.796 0.803 0.807 0.807 ...
#>   ..$ tree                 :Classes ‘tidytable’, ‘tbl’, ‘data.table’ and 'data.frame':	1 obs. of  30 variables:
#>   .. ..$ tree_volume_m3         : num 0.0218
#>   .. ..$ stem_volume_m3         : num 0.012
#>   .. ..$ branch_volume_m3       : num 0.00975
#>   .. ..$ tree_height_m          : num 3.67
#>   .. ..$ tree_length_m          : num 31.4
#>   .. ..$ stem_length_m          : num 4.32
#>   .. ..$ branch_length_m        : num 27.1
#>   .. ..$ branches               : int 65
#>   .. ..$ branches_alt           : int 19
#>   .. ..$ max_branch_order       : int 4
#>   .. ..$ max_reverse_order      : int 18
#>   .. ..$ twigs                  : int 65
#>   .. ..$ twig_length_m          : num 15
#>   .. ..$ tree_area_m2           : num 2.31
#>   .. ..$ stem_area_m2           : num 0.722
#>   .. ..$ branch_area_m2         : num 1.59
#>   .. ..$ dbh_qsm_cm             : num 7.39
#>   .. ..$ dbh_raw_cm             : num 7.39
#>   .. ..$ crown_diameter_mean_m  : num 1.52
#>   .. ..$ crown_diameter_max_m   : num 2.3
#>   .. ..$ crown_diameter_min_m   : num 0.905
#>   .. ..$ crown_projected_area_m2: num 3.27
#>   .. ..$ crown_base_height_m    : num 2.27
#>   .. ..$ crown_length_m         : num 1.4
#>   .. ..$ crown_ratio            : num 0.381
#>   .. ..$ crown_area_m2          : num 9.89
#>   .. ..$ crown_volume_m3        : num 0.00233
#>   .. ..$ start_x                : num -0.0286
#>   .. ..$ start_y                : num -0.0789
#>   .. ..$ start_z                : num 0.996
#>   .. ..- attr(*, ".internal.selfref")=<externalptr> 
#>   ..$ tree_height_dist     :Classes ‘tidytable’, ‘tbl’, ‘data.table’ and 'data.frame':	4 obs. of  4 variables:
#>   .. ..$ height_class_m: int [1:4] 1 2 3 4
#>   .. ..$ volume_m3     : num [1:4] 0.00583 0.00616 0.00725 0.00251
#>   .. ..$ area_m2       : num [1:4] 0.271 0.493 1.008 0.542
#>   .. ..$ length_m      : num [1:4] 1 4.53 14.56 11.33
#>   .. ..- attr(*, ".internal.selfref")=<externalptr> 
#>   ..$ tree_diameter_dist   :Classes ‘tidytable’, ‘tbl’, ‘data.table’ and 'data.frame':	10 obs. of  4 variables:
#>   .. ..$ diameter_class_cm: num [1:10] 1 2 3 4 5 6 7 8 9 10
#>   .. ..$ volume_m3        : num [1:10] 0.000461 0.001691 0.00263 0.004425 0.000752 ...
#>   .. ..$ area_m2          : num [1:10] 0.2043 0.463 0.4336 0.4998 0.0731 ...
#>   .. ..$ length_m         : num [1:10] 7.217 10.498 5.754 4.515 0.566 ...
#>   .. ..- attr(*, ".internal.selfref")=<externalptr> 
#>   ..$ tree_zenith_dist     :Classes ‘tidytable’, ‘tbl’, ‘data.table’ and 'data.frame':	14 obs. of  4 variables:
#>   .. ..$ zenith_class_deg: num [1:14] 10 20 30 40 50 60 70 80 90 100 ...
#>   .. ..$ volume_m3       : num [1:14] 0.00862 0.00327 0.00229 0.00131 0.00189 ...
#>   .. ..$ area_m2         : num [1:14] 0.462 0.286 0.26 0.204 0.273 ...
#>   .. ..$ length_m        : num [1:14] 2.34 2.88 3.25 3.63 4.35 ...
#>   .. ..- attr(*, ".internal.selfref")=<externalptr> 
#>   ..$ tree_azimuth_dist    :Classes ‘tidytable’, ‘tbl’, ‘data.table’ and 'data.frame':	36 obs. of  4 variables:
#>   .. ..$ azimuth_class_deg: num [1:36] 10 20 30 40 50 60 70 80 90 100 ...
#>   .. ..$ volume_m3        : num [1:36] 2.87e-04 5.77e-04 3.01e-04 2.20e-04 5.84e-05 ...
#>   .. ..$ area_m2          : num [1:36] 0.0467 0.0499 0.0378 0.0362 0.0164 ...
#>   .. ..$ length_m         : num [1:36] 0.789 0.638 0.725 0.71 0.416 ...
#>   .. ..- attr(*, ".internal.selfref")=<externalptr> 
#>   ..$ branch_diameter_dist :Classes ‘tidytable’, ‘tbl’, ‘data.table’ and 'data.frame':	6 obs. of  5 variables:
#>   .. ..$ diameter_class_cm: num [1:6] 1 2 3 4 5 6
#>   .. ..$ volume_m3        : num [1:6] 0 0.000186 0.000378 0.000453 0.000743 ...
#>   .. ..$ area_m2          : num [1:6] 0 0.0836 0.1472 0.1217 0.1567 ...
#>   .. ..$ length_m         : num [1:6] 0 3 4.63 2.72 2.76 ...
#>   .. ..$ branches         : int [1:6] 0 25 18 5 5 4
#>   .. ..- attr(*, ".internal.selfref")=<externalptr> 
#>   ..$ branch_height_dist   :Classes ‘tidytable’, ‘tbl’, ‘data.table’ and 'data.frame':	4 obs. of  5 variables:
#>   .. ..$ height_class_m: num [1:4] 1 2 3 4
#>   .. ..$ volume_m3     : num [1:4] 0 0.004522 0.004497 0.000734
#>   .. ..$ area_m2       : num [1:4] 0 0.613 0.761 0.219
#>   .. ..$ length_m      : num [1:4] 0 8.36 12.96 5.78
#>   .. ..$ branches      : int [1:4] 0 13 29 22
#>   .. ..- attr(*, ".internal.selfref")=<externalptr> 
#>   ..$ branch_angle_dist    :Classes ‘tidytable’, ‘tbl’, ‘data.table’ and 'data.frame':	18 obs. of  5 variables:
#>   .. ..$ angle_class_deg: num [1:18] 10 20 30 40 50 60 70 80 90 100 ...
#>   .. ..$ volume_m3      : num [1:18] 0.00 0.00 2.61e-05 5.87e-04 3.61e-03 ...
#>   .. ..$ area_m2        : num [1:18] 0 0 0.0101 0.1105 0.4659 ...
#>   .. ..$ length_m       : num [1:18] 0 0 0.317 2.059 6.412 ...
#>   .. ..$ branches       : int [1:18] 0 0 2 5 11 7 9 16 9 3 ...
#>   .. ..- attr(*, ".internal.selfref")=<externalptr> 
#>   ..$ branch_zenith_dist   :Classes ‘tidytable’, ‘tbl’, ‘data.table’ and 'data.frame':	18 obs. of  5 variables:
#>   .. ..$ zenith_class_deg: num [1:18] 10 20 30 40 50 60 70 80 90 100 ...
#>   .. ..$ volume_m3       : num [1:18] 0 0.000105 0.00053 0.000105 0.002499 ...
#>   .. ..$ area_m2         : num [1:18] 0 0.0378 0.0927 0.0358 0.2775 ...
#>   .. ..$ length_m        : num [1:18] 0 1.13 1.61 1.04 2.95 ...
#>   .. ..$ branches        : int [1:18] 0 4 4 6 2 6 10 8 4 8 ...
#>   .. ..- attr(*, ".internal.selfref")=<externalptr> 
#>   ..$ branch_azimuth_dist  :Classes ‘tidytable’, ‘tbl’, ‘data.table’ and 'data.frame':	36 obs. of  5 variables:
#>   .. ..$ azimuth_class_deg: num [1:36] 10 20 30 40 50 60 70 80 90 100 ...
#>   .. ..$ volume_m3        : num [1:36] 1.42e-05 1.74e-04 2.06e-05 2.82e-05 1.31e-05 ...
#>   .. ..$ area_m2          : num [1:36] 0.00578 0.03567 0.00917 0.01129 0.00486 ...
#>   .. ..$ length_m         : num [1:36] 0.188 0.615 0.324 0.365 0.146 ...
#>   .. ..$ branches         : int [1:36] 1 1 3 2 1 0 2 2 0 0 ...
#>   .. ..- attr(*, ".internal.selfref")=<externalptr> 
#>   ..$ branch_order_dist    :Classes ‘tidytable’, ‘tbl’, ‘data.table’ and 'data.frame':	4 obs. of  5 variables:
#>   .. ..$ branch_order: int [1:4] 1 2 3 4
#>   .. ..$ branches    : int [1:4] 17 26 18 3
#>   .. ..$ volume_m3   : num [1:4] 5.99e-03 3.24e-03 5.08e-04 1.55e-05
#>   .. ..$ area_m2     : num [1:4] 0.85701 0.57187 0.15626 0.00695
#>   .. ..$ length_m    : num [1:4] 12.01 10.63 4.216 0.249
#>   .. ..- attr(*, ".internal.selfref")=<externalptr> 
#>   ..$ segment_diameter_dist:Classes ‘tidytable’, ‘tbl’, ‘data.table’ and 'data.frame':	8 obs. of  5 variables:
#>   .. ..$ diameter_class_cm: num [1:8] 1 2 3 4 5 6 7 8
#>   .. ..$ volume_m3        : num [1:8] 0 0.000246 0.000582 0.000914 0.001156 ...
#>   .. ..$ area_m2          : num [1:8] 0 0.11 0.215 0.24 0.233 ...
#>   .. ..$ length_m         : num [1:8] 0 3.96 6.48 5.21 3.89 ...
#>   .. ..$ segments         : int [1:8] 0 34 30 17 11 9 8 9
#>   .. ..- attr(*, ".internal.selfref")=<externalptr> 
#>   ..$ segment_height_dist  :Classes ‘tidytable’, ‘tbl’, ‘data.table’ and 'data.frame':	4 obs. of  5 variables:
#>   .. ..$ height_class_m: num [1:4] 1 2 3 4
#>   .. ..$ volume_m3     : num [1:4] 0 0.00581 0.00665 0.00186
#>   .. ..$ area_m2       : num [1:4] 0 0.546 0.976 0.438
#>   .. ..$ length_m      : num [1:4] 0 5.62 14.76 9.7
#>   .. ..$ segments      : int [1:4] 0 26 60 46
#>   .. ..- attr(*, ".internal.selfref")=<externalptr> 
#>   ..$ segment_angle_dist   :Classes ‘tidytable’, ‘tbl’, ‘data.table’ and 'data.frame':	18 obs. of  5 variables:
#>   .. ..$ angle_class_deg: num [1:18] 10 20 30 40 50 60 70 80 90 100 ...
#>   .. ..$ volume_m3      : num [1:18] 0 0.000678 0.002517 0.002932 0.002966 ...
#>   .. ..$ area_m2        : num [1:18] 0 0.0438 0.2548 0.2863 0.3763 ...
#>   .. ..$ length_m       : num [1:18] 0 0.23 2.45 3.62 5.28 ...
#>   .. ..$ segments       : int [1:18] 0 2 13 17 25 19 19 20 11 4 ...
#>   .. ..- attr(*, ".internal.selfref")=<externalptr> 
#>   ..$ segment_zenith_dist  :Classes ‘tidytable’, ‘tbl’, ‘data.table’ and 'data.frame':	18 obs. of  5 variables:
#>   .. ..$ zenith_class_deg: num [1:18] 10 20 30 40 50 60 70 80 90 100 ...
#>   .. ..$ volume_m3       : num [1:18] 0.00104 0.00329 0.00115 0.00112 0.00174 ...
#>   .. ..$ area_m2         : num [1:18] 0.084 0.268 0.152 0.165 0.17 ...
#>   .. ..$ length_m        : num [1:18] 0.551 2.568 2.263 2.827 1.459 ...
#>   .. ..$ segments        : int [1:18] 3 11 10 13 7 10 17 18 10 16 ...
#>   .. ..- attr(*, ".internal.selfref")=<externalptr> 
#>   ..$ segment_azimuth_dist :Classes ‘tidytable’, ‘tbl’, ‘data.table’ and 'data.frame':	36 obs. of  5 variables:
#>   .. ..$ azimuth_class_deg: num [1:36] 10 20 30 40 50 60 70 80 90 100 ...
#>   .. ..$ volume_m3        : num [1:36] 1.42e-05 1.74e-04 2.53e-04 8.08e-04 1.56e-04 ...
#>   .. ..$ area_m2          : num [1:36] 0.00578 0.03567 0.03081 0.08626 0.04052 ...
#>   .. ..$ length_m         : num [1:36] 0.188 0.615 0.621 1.215 0.959 ...
#>   .. ..$ segments         : int [1:36] 1 1 5 5 4 1 3 2 0 1 ...
#>   .. ..- attr(*, ".internal.selfref")=<externalptr> 
#>   ..$ segment_order_dist   :Classes ‘tidytable’, ‘tbl’, ‘data.table’ and 'data.frame':	18 obs. of  5 variables:
#>   .. ..$ reverse_order: int [1:18] 1 2 3 4 5 6 7 8 9 10 ...
#>   .. ..$ segments     : int [1:18] 69 18 10 8 5 4 3 3 2 2 ...
#>   .. ..$ volume_m3    : num [1:18] 0.0019 0.00115 0.00119 0.00162 0.00102 ...
#>   .. ..$ area_m2      : num [1:18] 0.567 0.236 0.206 0.205 0.13 ...
#>   .. ..$ length_m     : num [1:18] 15.01 4.21 2.98 2.15 1.35 ...
#>   .. ..- attr(*, ".internal.selfref")=<externalptr> 
#>   ..$ stem_taper           :Classes ‘tidytable’, ‘tbl’, ‘data.table’ and 'data.frame':	123 obs. of  2 variables:
#>   .. ..$ height_m   : num [1:123] 0 0.0497 0.1027 0.1562 0.2086 ...
#>   .. ..$ diameter_cm: num [1:123] 9.44 9.41 9.38 9.33 9.07 ...
#>   .. ..- attr(*, ".internal.selfref")=<externalptr> 
#>   ..$ spreads              :Classes ‘tidytable’, ‘tbl’, ‘data.table’ and 'data.frame':	360 obs. of  3 variables:
#>   .. ..$ azimuth_deg : num [1:360] 20 40 60 80 100 120 140 160 180 200 ...
#>   .. ..$ height_class: int [1:360] 1 1 1 1 1 1 1 1 1 1 ...
#>   .. ..$ spread_m    : num [1:360] 0.1055 0.0986 0.1075 0.1075 0.1081 ...
#>   .. ..- attr(*, ".internal.selfref")=<externalptr> 
#>   ..$ vertical_profile     :Classes ‘tidytable’, ‘tbl’, ‘data.table’ and 'data.frame':	20 obs. of  2 variables:
#>   .. ..$ height_class: int [1:20] 1 2 3 4 5 6 7 8 9 10 ...
#>   .. ..$ avg_spread_m: num [1:20] 0.1011 0.0952 0.0917 0.0856 0.0861 ...
#>   .. ..- attr(*, ".internal.selfref")=<externalptr> 
#>   ..$ branch_alt           :Classes ‘grouped_tt’, ‘tidytable’, ‘tbl’, ‘data.table’ and 'data.frame':	18 obs. of  17 variables:
#>   .. ..$ branch_alt      : num [1:18] 1 2 3 4 5 6 7 8 9 10 ...
#>   .. ..$ parent_branch   : int [1:18] 1 1 1 1 1 1 1 1 1 1 ...
#>   .. ..$ branch_order    : int [1:18] 1 1 1 1 1 1 1 1 1 1 ...
#>   .. ..$ reverse_order   : int [1:18] 1 1 1 1 2 1 1 4 1 6 ...
#>   .. ..$ diameter_base_cm: num [1:18] 0.9 0.874 1.03 2.372 2.375 ...
#>   .. ..$ volume_m3       : num [1:18] 5.65e-06 3.47e-06 1.91e-05 1.74e-04 1.46e-04 ...
#>   .. ..$ area_m2         : num [1:18] 0.00258 0.0016 0.00808 0.03567 0.0317 ...
#>   .. ..$ length_m        : num [1:18] 0.0679 0.0439 0.2417 0.3504 0.3793 ...
#>   .. ..$ height_m        : num [1:18] 3.23 3.23 3.19 3.17 3.16 ...
#>   .. ..$ angle_deg       : num [1:18] 46.5 45.2 61.5 81.8 86.6 ...
#>   .. ..$ azimuth_deg     : num [1:18] 126.8 26.7 165 -164.2 -30.7 ...
#>   .. ..$ zenith_deg      : num [1:18] 82 32.7 19.7 95.6 64.2 ...
#>   .. ..$ growth_length   : num [1:18] 0.0939 0.059 0.2738 0.615 0.5729 ...
#>   .. ..$ cylinders       : int [1:18] 4 2 12 24 24 6 23 53 22 169 ...
#>   .. ..$ segments        : int [1:18] 1 1 1 1 3 1 1 7 1 17 ...
#>   .. ..$ base_distance_m : num [1:18] 4.25 4.25 4.06 3.77 3.6 ...
#>   .. ..$ twig_distance_m : num [1:18] 0.0939 0.059 0.2738 0.615 0.4527 ...
#>   .. ..- attr(*, ".internal.selfref")=<externalptr> 
#>   .. ..- attr(*, "groups")= chr "branch_alt"
# }