Skip to contents

Constructs ordinary native closest-point barycentric weights between explicit registered spheres. Source mask exclusion precedes row normalization; target masking follows it. No registration is fitted. Native geometric correctness and exact Workbench parity are distinct qualification claims. Arbitrary supplied geometries are always marked `"unqualified"`.

Usage

get_surface_transform(
  from,
  to,
  cache_dir = transform_cache_path(),
  offline = FALSE
)

Arguments

from, to

Verified `SurfaceGeometry` objects in the same declared sphere correspondence frame and hemisphere.

cache_dir

Transform cache directory, or `NULL` to disable caching.

offline

Require an existing verified operator cache entry.

Value

A `SurfaceTransform` with sparse weights, exact domains, engine fingerprint, integrity digest and directed provenance. Reverse resampling requires calling this function with swapped geometries; it is not an inverse.

See also

[surface_geometry()], [surface_data()], [apply_surface_transform()]

Examples

sphere <- rbind(
  c(1, 0, 0), c(-1, 0, 0), c(0, 1, 0),
  c(0, -1, 0), c(0, 0, 1), c(0, 0, -1)
)
faces <- rbind(
  c(0, 2, 4), c(2, 1, 4), c(1, 3, 4), c(3, 0, 4),
  c(2, 0, 5), c(1, 2, 5), c(3, 1, 5), c(0, 3, 5)
)
cortex <- rep(TRUE, 6)
domain <- surface_domain(
  "toy", "L", "6v", sphere, faces, cortex,
  "analytic", "v1"
)
if (requireNamespace("neurotransform", quietly = TRUE) &&
  utils::packageVersion("neurotransform") >= "0.2.0") {
  geometry <- surface_geometry(domain, sphere, faces, cortex)
  operator <- get_surface_transform(geometry, geometry, cache_dir = NULL)
  values <- surface_data(seq(0, 0.5, length.out = 6), domain)
  apply_surface_transform(values, operator)
}
#> $values
#> [1] 0.0 0.1 0.2 0.3 0.4 0.5
#> 
#> $domain
#> $schema
#> [1] "neuroatlas.surface-domain.v1"
#> 
#> $template
#> [1] "toy"
#> 
#> $hemisphere
#> [1] "L"
#> 
#> $density
#> [1] "6v"
#> 
#> $registration
#> [1] "analytic"
#> 
#> $revision
#> [1] "v1"
#> 
#> $n_vertices
#> [1] 6
#> 
#> $n_triangles
#> [1] 8
#> 
#> $coordinates_sha256
#> [1] "397b9cf5c341e2ab2a6cac4be2113bab2fe1329f6d85db8bd83ac88f6b98c0f7"
#> 
#> $topology_sha256
#> [1] "9b68f7388ae56d60f95297f4dc3acaff4352cb445df75a71555daee5fcfab712"
#> 
#> $cortex_sha256
#> [1] "9638834d1f629557d9b80fa7eeb64409e238c0ef2e3149a55a39c3796f66e19a"
#> 
#> $area_sha256
#> [1] NA
#> 
#> $area_units
#> [1] NA
#> 
#> $id
#> [1] "0b1f7f5ff0576415cdc207ebda7867e85fa09e263ee08f9aba0351ed3d133836"
#> 
#> attr(,"class")
#> [1] "SurfaceDomain" "list"         
#> 
#> $data_type
#> [1] "continuous"
#> 
#> $label_table
#> NULL
#> 
#> $file
#> NULL
#> 
#> $id
#> [1] "56995fe83dc37de98902604717cc55a6033362ed5fa42136023bd2447a1ef371"
#> 
#> $coverage
#> $coverage$support
#> [1] "triangle" "triangle" "triangle" "triangle" "triangle" "triangle"
#> 
#> $coverage$geometric_support
#> [1] TRUE TRUE TRUE TRUE TRUE TRUE
#> 
#> $coverage$source_weight_mass
#> [1] 1 1 1 1 1 1
#> 
#> $coverage$finite_weight_mass
#> [1] 1 1 1 1 1 1
#> 
#> $coverage$target_mask
#> [1] TRUE TRUE TRUE TRUE TRUE TRUE
#> 
#> $coverage$available
#> [1] TRUE TRUE TRUE TRUE TRUE TRUE
#> 
#> $coverage$status
#> [1] "available" "available" "available" "available" "available" "available"
#> 
#> $coverage$effective_target_area
#> NULL
#> 
#> $coverage$source_roi_target_area
#> NULL
#> 
#> 
#> $provenance
#> $provenance$input_id
#> [1] "56995fe83dc37de98902604717cc55a6033362ed5fa42136023bd2447a1ef371"
#> 
#> $provenance$operator_id
#> [1] "ecec450c661711e99ab83390c5200cbce459442359abcf009eacd56aeefd3eba"
#> 
#> $provenance$specification
#> $provenance$specification$schema
#> [1] "neuroatlas.surface-transform.v1"
#> 
#> $provenance$specification$from
#> $schema
#> [1] "neuroatlas.surface-domain.v1"
#> 
#> $template
#> [1] "toy"
#> 
#> $hemisphere
#> [1] "L"
#> 
#> $density
#> [1] "6v"
#> 
#> $registration
#> [1] "analytic"
#> 
#> $revision
#> [1] "v1"
#> 
#> $n_vertices
#> [1] 6
#> 
#> $n_triangles
#> [1] 8
#> 
#> $coordinates_sha256
#> [1] "397b9cf5c341e2ab2a6cac4be2113bab2fe1329f6d85db8bd83ac88f6b98c0f7"
#> 
#> $topology_sha256
#> [1] "9b68f7388ae56d60f95297f4dc3acaff4352cb445df75a71555daee5fcfab712"
#> 
#> $cortex_sha256
#> [1] "9638834d1f629557d9b80fa7eeb64409e238c0ef2e3149a55a39c3796f66e19a"
#> 
#> $area_sha256
#> [1] NA
#> 
#> $area_units
#> [1] NA
#> 
#> $id
#> [1] "0b1f7f5ff0576415cdc207ebda7867e85fa09e263ee08f9aba0351ed3d133836"
#> 
#> attr(,"class")
#> [1] "SurfaceDomain" "list"         
#> 
#> $provenance$specification$to
#> $schema
#> [1] "neuroatlas.surface-domain.v1"
#> 
#> $template
#> [1] "toy"
#> 
#> $hemisphere
#> [1] "L"
#> 
#> $density
#> [1] "6v"
#> 
#> $registration
#> [1] "analytic"
#> 
#> $revision
#> [1] "v1"
#> 
#> $n_vertices
#> [1] 6
#> 
#> $n_triangles
#> [1] 8
#> 
#> $coordinates_sha256
#> [1] "397b9cf5c341e2ab2a6cac4be2113bab2fe1329f6d85db8bd83ac88f6b98c0f7"
#> 
#> $topology_sha256
#> [1] "9b68f7388ae56d60f95297f4dc3acaff4352cb445df75a71555daee5fcfab712"
#> 
#> $cortex_sha256
#> [1] "9638834d1f629557d9b80fa7eeb64409e238c0ef2e3149a55a39c3796f66e19a"
#> 
#> $area_sha256
#> [1] NA
#> 
#> $area_units
#> [1] NA
#> 
#> $id
#> [1] "0b1f7f5ff0576415cdc207ebda7867e85fa09e263ee08f9aba0351ed3d133836"
#> 
#> attr(,"class")
#> [1] "SurfaceDomain" "list"         
#> 
#> $provenance$specification$method
#> [1] "native_closest_barycentric"
#> 
#> $provenance$specification$radius
#> [1] 100
#> 
#> $provenance$specification$mask_policy
#> [1] "source_then_row_normalize_then_target"
#> 
#> $provenance$specification$engine
#> $provenance$specification$engine$package
#> [1] "neurotransform"
#> 
#> $provenance$specification$engine$version
#> [1] "0.2.0"
#> 
#> $provenance$specification$engine$source_sha
#> [1] "933edddda462593941e167726e8aaa7168ff103a"
#> 
#> $provenance$specification$engine$dll_sha256
#> [1] "acf2ec330c3f71bf717a772883b87c75159940a24890f1afc3d5c2e9d4d6065b"
#> 
#> $provenance$specification$engine$r_code_sha256
#> [1] "e7c6c612653f3ced29decc3c6dca5c923a52ca23dcac998a4195cc56c38201bb"
#> 
#> 
#> $provenance$specification$qualification
#> [1] "unqualified"
#> 
#> $provenance$specification$qualification_scope
#> NULL
#> 
#> $provenance$specification$route_id
#> NULL
#> 
#> $provenance$specification$reversible
#> [1] FALSE
#> 
#> 
#> $provenance$na_policy
#> [1] "propagate"
#> 
#> $provenance$label_method
#> NULL
#> 
#> 
#> attr(,"class")
#> [1] "SurfaceData" "list"