Skip to contents

Updates the QSM cylinder data in preparation for radii correction

Usage

update_cylinders(cylinder)

Arguments

cylinder

QSM cylinder data frame

Value

Returns a data frame

Details

Updates and verifies parent-child cylinder relationships and calculates new variables and metrics found throughout the supported QSM software. This function is required to run the rest of the rTwig functions.

References

growth_parameter1rTwig

growth_parameter2rTwig

Examples


## TreeQSM Processing Chain
file <- system.file("extdata/QSM.mat", package = "rTwig")
qsm <- import_qsm(file)
#> Importing TreeQSM
cylinder <- qsm$cylinder
cylinder <- update_cylinders(cylinder)
#> Updating Cylinder Ordering
#> Calculating Total Children
#> Building Cylinder Network
#> Caching Network
#> Verifying Topology
#> Calculating Growth Length
#> Calculating Reverse Branch Order
#> Calculating Branch Segments
#> Calculating Alternate Branch Numbers
#> Calculating Path Metrics
str(cylinder)
#> Classes ‘tidytable’, ‘tbl’, ‘data.table’ and 'data.frame':	1136 obs. of  33 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.768 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.00995 -0.0111 0.01364 0.01571 0.01449 ...
#>  $ axis.y                      : num  0.0912 0.0391 0.0367 0.0271 0.0267 ...
#>  $ axis.z                      : num  0.996 0.999 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 ...
#>  $ index                       : int  1 2 3 4 5 6 7 8 9 10 ...
#>  $ distanceFromBase            : num  0 0.0722 0.1387 0.1481 0.216 ...
#>  $ distanceToTwig              : num  3.4 3.31 3.24 3.17 3.16 ...
#>  $ reversePipeAreaBranchorder  : int  82 82 82 82 82 82 82 82 82 82 ...
#>  $ reversePipeRadiusBranchorder: num  9.06 9.06 9.06 9.06 9.06 ...
#>  $ vesselVolume                : num  279 271 266 260 259 ...
#>  - attr(*, ".internal.selfref")=<externalptr> 

## SimpleForest Processing Chain
file <- system.file("extdata/QSM.csv", package = "rTwig")
cylinder <- read.csv(file)
cylinder <- update_cylinders(cylinder)
#> Finding Branches
#> Calculating Total Children
#> Building Cylinder Network
#> Caching Network
#> Verifying Topology
#> Calculating Path Metrics
str(cylinder)
#> Classes ‘tidytable’, ‘tbl’, ‘data.table’ and 'data.frame':	1149 obs. of  30 variables:
#>  $ ID                          : int  1 2 3 4 5 6 7 8 9 10 ...
#>  $ parentID                    : num  0 1 2 3 4 5 6 7 8 9 ...
#>  $ startX                      : num  0.761 0.759 0.771 0.768 0.765 ...
#>  $ startY                      : num  -16.4 -16.4 -16.4 -16.3 -16.4 ...
#>  $ startZ                      : num  254 254 254 254 254 ...
#>  $ endX                        : num  0.759 0.771 0.768 0.765 0.769 ...
#>  $ endY                        : num  -16.4 -16.4 -16.3 -16.4 -16.4 ...
#>  $ endZ                        : num  254 254 254 254 254 ...
#>  $ axisX                       : num  -0.0286 0.2148 -0.0473 -0.0498 0.0678 ...
#>  $ axisY                       : num  -0.078889 0.163918 0.03933 -0.011114 -0.000265 ...
#>  $ axisZ                       : num  0.996 0.963 0.998 0.999 0.998 ...
#>  $ radius                      : num  0.0472 0.0479 0.0469 0.0467 0.0453 ...
#>  $ length                      : num  0.0497 0.0529 0.0535 0.0525 0.0528 ...
#>  $ growthLength                : num  31.4 31.4 31.3 31.3 31.2 ...
#>  $ averagePointDistance        : num  0.00589 0.00378 0.00205 0.00246 0.00251 ...
#>  $ segmentID                   : num  1 1 1 1 1 1 1 1 1 1 ...
#>  $ parentSegmentID             : num  0 0 0 0 0 0 0 0 0 0 ...
#>  $ branchOrder                 : int  0 0 0 0 0 0 0 0 0 0 ...
#>  $ reverseBranchOrder          : int  18 18 18 18 18 18 18 18 18 18 ...
#>  $ UnmodRadius                 : num  0.0472 0.0479 0.0469 0.0467 0.0453 ...
#>  $ branch_alt                  : num  0 0 0 0 0 0 0 0 0 0 ...
#>  $ branchID                    : int  1 1 1 1 1 1 1 1 1 1 ...
#>  $ positionInBranch            : int  1 2 3 4 5 6 7 8 9 10 ...
#>  $ totalChildren               : int  1 1 1 1 1 1 1 1 1 1 ...
#>  $ index                       : int  1 2 3 4 5 6 7 8 9 10 ...
#>  $ distanceFromBase            : num  0 0.0529 0.1065 0.1589 0.2117 ...
#>  $ distanceToTwig              : num  3.43 3.38 3.33 3.27 3.22 ...
#>  $ reversePipeAreaBranchorder  : int  69 69 69 69 69 69 69 69 69 69 ...
#>  $ reversePipeRadiusBranchorder: num  8.31 8.31 8.31 8.31 8.31 ...
#>  $ vesselVolume                : num  237 233 229 226 222 ...
#>  - attr(*, ".internal.selfref")=<externalptr> 

## aRchi Processing Chain
file <- system.file("extdata/QSM2.csv", package = "rTwig")
cylinder <- read.csv(file)
cylinder <- update_cylinders(cylinder)
#> Updating Cylinder Ordering
#> Finding Branches
#> Calculating Total Children
#> Building Cylinder Network
#> Caching Network
#> Verifying Topology
#> Calculating Growth Length
#> Calculating Reverse Branch Order
#> Calculating Branch Segments
#> Calculating Alternate Branch Numbers
#> Calculating Path Metrics
str(cylinder)
#> Classes ‘tidytable’, ‘tbl’, ‘data.table’ and 'data.frame':	1231 obs. of  34 variables:
#>  $ startX                      : num  0.763 0.77 0.77 0.763 0.764 ...
#>  $ startY                      : num  -16.4 -16.4 -16.4 -16.4 -16.3 ...
#>  $ startZ                      : num  254 254 254 254 254 ...
#>  $ endX                        : num  0.77 0.77 0.763 0.764 0.766 ...
#>  $ endY                        : num  -16.4 -16.4 -16.4 -16.3 -16.4 ...
#>  $ endZ                        : num  254 254 254 254 254 ...
#>  $ axisX                       : num  0.1307 -0.0172 -0.2653 0.0294 0.1055 ...
#>  $ axisY                       : num  0.1531 -0.1311 0.0981 0.1203 -0.2048 ...
#>  $ axisZ                       : num  0.98 0.991 0.959 0.992 0.973 ...
#>  $ extension_ID                : int  2 3 4 5 6 7 8 9 10 11 ...
#>  $ radius_cyl                  : num  0.0428 0.0428 0.0428 0.0428 0.0428 ...
#>  $ length                      : num  0.0579 0.0269 0.0258 0.0245 0.0256 ...
#>  $ volume                      : num  0.000333 0.000155 0.000149 0.000141 0.000147 ...
#>  $ axis_ID                     : int  1 1 1 1 1 1 1 1 1 1 ...
#>  $ segment_ID                  : int  44 44 44 44 44 44 44 44 44 44 ...
#>  $ node_ID                     : int  0 0 0 0 0 0 0 0 0 0 ...
#>  $ branching_order             : num  0 0 0 0 0 0 0 0 0 0 ...
#>  $ cyl_ID                      : int  1 2 3 4 5 6 7 8 9 10 ...
#>  $ parent_ID                   : num  0 1 2 3 4 5 6 7 8 9 ...
#>  $ UnmodRadius                 : num  0.0428 0.0428 0.0428 0.0428 0.0428 ...
#>  $ branch_ID                   : int  1 1 1 1 1 1 1 1 1 1 ...
#>  $ positionInBranch            : int  1 2 3 4 5 6 7 8 9 10 ...
#>  $ totalChildren               : int  1 1 1 1 1 1 1 1 1 1 ...
#>  $ growthLength                : num  34.2 34.2 34.2 34.1 34.1 ...
#>  $ reverseBranchOrder          : num  20 20 20 20 20 20 20 20 20 20 ...
#>  $ segment                     : int  1 1 1 1 1 1 1 1 1 1 ...
#>  $ parentSegment               : int  0 0 0 0 0 0 0 0 0 0 ...
#>  $ branch_alt                  : int  0 0 0 0 0 0 0 0 0 0 ...
#>  $ index                       : int  1 2 3 4 5 6 7 8 9 10 ...
#>  $ distanceFromBase            : num  0 0.0269 0.0527 0.0772 0.1027 ...
#>  $ distanceToTwig              : num  3.44 3.38 3.36 3.33 3.3 ...
#>  $ reversePipeAreaBranchorder  : int  121 121 121 121 121 121 121 121 121 121 ...
#>  $ reversePipeRadiusBranchorder: num  11 11 11 11 11 11 11 11 11 11 ...
#>  $ vesselVolume                : num  416 409 406 403 400 ...
#>  - attr(*, ".internal.selfref")=<externalptr>