Skip to contents

Complete workflow for analyzing how different harmonic extension methods perform on local extrema in a graph function. This function extracts subgraphs around each extremum and applies various harmonic extension methods for comparison.

Usage

analyze.harmonic.extensions(
  adj_list,
  weight_list,
  y,
  predictions,
  extrema_df,
  hop_offset = 2,
  min_hop_idx = 0,
  max_hop_idx = Inf,
  methods = c("weighted_mean", "harmonic_iterative", "harmonic_eigen",
    "biharmonic_harmonic", "boundary_smoothed"),
  max_iterations = 100,
  tolerance = 1e-06,
  sigma = 1,
  visualize = TRUE,
  save_results = FALSE,
  output_dir = "harmonic_extension_analysis",
  verbose = TRUE
)

Arguments

adj_list

Original graph adjacency list

weight_list

Original graph weight list

y

Original function values on vertices

predictions

Smoothed predictions (e.g., from spectral filtering)

extrema_df

Data frame containing extrema information

hop_offset

Additional hop distance beyond extremum's hop radius (default: 2)

min_hop_idx

Minimum hop index for extrema to process (default: 0)

max_hop_idx

Maximum hop index for extrema to process (default: Inf)

methods

Vector of harmonic extension methods to test

max_iterations

Maximum iterations for iterative methods (default: 100)

tolerance

Convergence tolerance (default: 1e-6)

sigma

Parameter for weighted mean method (default: 1.0)

visualize

Whether to visualize results (default: TRUE)

save_results

Whether to save detailed results (default: FALSE)

output_dir

Directory for saving results (default: "harmonic_extension_analysis")

verbose

Whether to print progress messages (default: TRUE)

Value

A list containing:

subgraphs

List of extracted subgraphs for each extremum

results

List of results from applying harmonic extension methods

metrics

Data frame with detailed metrics for all extrema and methods

summary

Data frame with summary statistics across methods

extrema_info

Data frame with information about processed extrema

Examples

if (FALSE) { # \dontrun{
result <- analyze.harmonic.extensions(
  graph$adj_list,
  graph$weight_list,
  y,
  gsf_res$predictions,
  gsf_b_cx$extrema_df,
  hop_offset = 2,
  min_hop_idx = 1,
  max_hop_idx = 5
)
} # }