The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
The fiber
package provides three S7 classes —
streamline, bundle, and
bundle_set — for representing diffusion MRI tractography
data in R, together with a concise set of methods:
A streamline stores:
@points — an \(n \times
3\) numeric matrix with columns "X",
"Y", "Z".@point_data — a named list of per-point vectors of
length \(n\) (any type).@streamline_data — a named list of per-streamline
scalars (any type).A bundle stores:
@streamlines — a list of streamline
objects.@bundle_data — a named list of bundle-level
metadata.A bundle_set stores:
@bundles — a named list of bundle
objects (names typically encode subject or session IDs,
e.g. "sub-01").@set_data — a named list of set-level metadata.You can install the development version of fiber from GitHub with:
# install.packages("pak")
pak::pak("tractoverse/fiber")library(fiber)
# Build a helix streamline (50 points)
t <- seq(0, 2 * pi, length.out = 50)
sl <- streamline(
points = cbind(X = cos(t), Y = sin(t), Z = t / (2 * pi))
)
sl
#> <streamline [50 pts]>
# Shape descriptors
get_curvilinear_length(sl)
#> [1] 6.358015
get_sinuosity(sl)
#> [1] 6.358015
head(get_curvature(sl))
#> [1] 1.537338e-05 1.625127e-02 4.592627e-02 8.636675e-02 1.352354e-01
#> [6] 1.906608e-01
# Bundle two streamlines
sl2 <- streamline(
points = cbind(X = cos(t) * 1.1, Y = sin(t) * 1.1, Z = t / (2 * pi))
)
b <- bind_bundles(sl, sl2)
b
#> <bundle [2 streamlines | 50–50 pts/streamline]>
# Reparametrize to 20 points each
b20 <- reparametrize(b, n_points = 20L)
b20
#> <bundle [2 streamlines | 20–20 pts/streamline]>
# Hausdorff distance
compute_hausdorff_distance(sl, sl2)
#> [1] 0.1
# Multi-subject: collect bundles from two subjects into a bundle_set
b_sub01 <- bundle(
streamlines = list(sl),
bundle_data = list(subject = "sub-01")
)
b_sub02 <- bundle(
streamlines = list(sl2),
bundle_data = list(subject = "sub-02")
)
bs <- bind_bundle_sets("sub-01" = b_sub01, "sub-02" = b_sub02)
bs
#> <bundle_set [2 bundles | 1–1 streamlines/bundle]: sub-01, sub-02>
bs[["sub-01"]]
#> <bundle [1 streamlines | 50–50 pts/streamline] | bundle: subject>These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.