Skip to contents

Selects a set of anchor parcels by optimizing a criterion that balances the stability of the mean anchor representation (via condition number) and the dispersion of subject-specific covariance matrices derived from these anchors on the SPD manifold.

Usage

select_anchors_mra(
  U_original_list_pilot,
  spectral_rank_k,
  m_target,
  total_parcels = NULL,
  max_kappa = 100,
  weight_inv_kappa = 1,
  weight_dispersion = 1,
  initial_selection = integer(0),
  candidate_pool = NULL,
  parcel_quality_info = NULL,
  riemannian_dispersion_options = list(),
  min_anchors_for_metrics = NULL,
  verbose = TRUE
)

Arguments

U_original_list_pilot

A list of original (unaligned) sketch matrices (V_p x k) for a set of pilot subjects. These are used to evaluate candidate anchors.

spectral_rank_k

Integer, the spectral rank `k` used to generate `U_original_list_pilot`.

m_target

Integer, the desired number of anchors to select.

total_parcels

Integer, the total number of parcels (V_p) available for selection. If NULL, inferred from `U_original_list_pilot`.

max_kappa

Numeric, the maximum allowable condition number for the mean anchor matrix. Candidates leading to a kappa above this are penalized or excluded. Default: 100.

weight_inv_kappa

Numeric, weight for the inverse condition number term in the score. Higher values prioritize lower condition numbers (more stable mean). Default: 1.0.

weight_dispersion

Numeric, weight for the negative dispersion term in the score. Higher values prioritize lower dispersion. Default: 1.0.

initial_selection

Optional. A vector of pre-selected anchor indices (1-based). The algorithm will try to add `m_target - length(initial_selection)` new anchors.

candidate_pool

Optional. A vector of parcel indices (1-based) from which to select new anchors. If NULL, all non-initially-selected parcels are candidates.

parcel_quality_info

Optional. Data frame or list providing parcel quality or network information. Currently unused in the core MRA logic but reserved for future extensions (e.g., pre-filtering candidates).

riemannian_dispersion_options

A list of options to pass to `hatsa::riemannian_dispersion_spd` (e.g., `spd_metric`, `use_geometric_median`).

min_anchors_for_metrics

Integer. Minimum number of selected anchors required before kappa and dispersion metrics are considered stable enough to compute. Default is `spectral_rank_k`.

verbose

Logical. If TRUE, print progress messages. Default: TRUE.

Value

A vector of selected anchor indices (1-based), sorted.

Methodological Details

MRA-Select greedily optimizes a composite score balancing the condition number of the mean anchor matrix with the Riemannian dispersion of subject covariance matrices on the SPD manifold. Candidate anchors that maximize this score are iteratively added until m_target anchors are selected.

Examples

# Conceptual example (requires U_original_list_pilot from actual or synthetic data)
# N_pilot <- 5
# V_p_total <- 50
# k_rank <- 10
# U_pilot_list <- replicate(N_pilot,
#                           matrix(rnorm(V_p_total * k_rank), V_p_total, k_rank),
#                           simplify = FALSE)
# selected_anchors_mra <- select_anchors_mra(
#   U_original_list_pilot = U_pilot_list,
#   spectral_rank_k = k_rank,
#   m_target = 15,
#   total_parcels = V_p_total,
#   verbose = TRUE
# )
# print(selected_anchors_mra)