computeDistance between pairs of cell types
Usage
computeDistance(
object,
distType = c("Euclidean2D", "Euclidean3D", "Morphology-Aware"),
xDistScale = 1,
yDistScale = 1,
zDistScale = 1,
normalizeDistance = TRUE,
truncateLowDist = TRUE,
verbose = TRUE,
knn_k = 10,
geodesic_threshold = 10,
geodesic_cutoff = 7
)
# S4 method for class 'CoProSingle'
computeDistance(
object,
distType = c("Euclidean2D", "Euclidean3D", "Morphology-Aware"),
xDistScale = 1,
yDistScale = 1,
zDistScale = 1,
normalizeDistance = TRUE,
truncateLowDist = TRUE,
verbose = TRUE,
knn_k = 10,
geodesic_threshold = 10,
geodesic_cutoff = 7
)
# S4 method for class 'CoProMulti'
computeDistance(
object,
distType = c("Euclidean2D", "Euclidean3D", "Morphology-Aware"),
xDistScale = 1,
yDistScale = 1,
zDistScale = 1,
normalizeDistance = TRUE,
truncateLowDist = TRUE,
verbose = TRUE,
knn_k = 10,
geodesic_threshold = 10,
geodesic_cutoff = 7
)Arguments
- object
A
CoProobject- distType
Type of distance to compute: "Euclidean2D", "Euclidean3D", or "Morphology-Aware"
- xDistScale
Scale for x distance
- yDistScale
Scale for y distance
- zDistScale
Scale for z distance
- normalizeDistance
Whether to normalize distance? The normalization will make sure that the 0.01% cell-cell distance will become 0.01, thus ensuring no matter which input scale is used for the distance matrix, the output will roughly be in mm^3. This ensures that the kernel sizes from 0.001 to 0.1 will make sense. Default = TRUE
- truncateLowDist
Whether to truncate small distances so that the cells that are nearly overlapping with each other do not have a super small distance. Default = TRUE.
- verbose
Whether to print info about the quantile of the distance
- knn_k
Number of nearest neighbors for KNN graph construction (used only for Morphology-Aware distance). Default = 10.
- geodesic_threshold
Geodesic distance threshold for regression fitting. Cell pairs with geodesic distance <= this value are used to fit the regression. Default = 10.
- geodesic_cutoff
Geodesic distance value at which to evaluate the regression for determining the Euclidean distance cutoff. Default = 7.
Details
For "Morphology-Aware" distance: This method addresses the issue where cells appear spatially close (small Euclidean distance) but are actually topologically distant due to tissue morphology (e.g., semilunar folds in colon tissue).
The algorithm:
Compute Euclidean distances (d_E) between all cells
Build a K-nearest neighbor (KNN) graph and compute geodesic distances (d_g) as shortest path distances on this graph
Fit a linear regression between d_g and d_E for cell pairs where d_g <= geodesic_threshold (default: 10)
Use the fitted model to predict d_E at d_g = geodesic_cutoff (default: 7), this becomes cutoff_d_E
For cell pairs where d_g > geodesic_threshold AND d_E < cutoff_d_E, set distance to the maximum distance in the matrix
This requires the igraph package to be installed.