///|
fn main {
println(
"=====================================================================",
)
println(
" MoonGraphLearn: Graph Machine Learning & Message Passing Library ",
)
println(
"=====================================================================",
)
println("")
println("--- [1] Zachary's Karate Club Benchmark ---")
let (kc_graph, kc_labels) = @demo.karate_club_graph()
let kc_density = @preprocess.density(kc_graph)
let kc_avg_deg = @preprocess.average_degree(kc_graph)
println("Nodes: \{kc_graph.node_count()}, Edges: \{kc_graph.edge_count()}")
println("Graph Density: \{kc_density}, Average Degree: \{kc_avg_deg}")
println("\nRunning End-to-End Node Classification Pipeline on Karate Club...")
let kc_res = @demo.run_node_classification_pipeline(
kc_graph,
kc_labels,
2,
alpha=0.6,
max_iter=30,
)
println(" -> Train Accuracy : \{kc_res.train_acc * 100.0}%")
println(" -> Val Accuracy : \{kc_res.val_acc * 100.0}%")
println(" -> Test Accuracy : \{kc_res.test_acc * 100.0}%")
println(
" -> Sample Predictions: \{kc_res.preds[0]} vs Ground Truth: \{kc_labels[0]}",
)
println(
"---------------------------------------------------------------------",
)
println("\n--- [2] Stochastic Block Model (SBM) Synthetic Benchmark ---")
let (sbm_graph, sbm_labels) = @demo.random_block_model(
60,
3,
p_in=0.6,
p_out=0.05,
seed=42,
)
println("Nodes: \{sbm_graph.node_count()}, Edges: \{sbm_graph.edge_count()}")
let sbm_res = @demo.run_node_classification_pipeline(
sbm_graph,
sbm_labels,
3,
alpha=0.5,
max_iter=40,
)
println(" -> Train Accuracy : \{sbm_res.train_acc * 100.0}%")
println(" -> Val Accuracy : \{sbm_res.val_acc * 100.0}%")
println(" -> Test Accuracy : \{sbm_res.test_acc * 100.0}%")
println("\n--- [3] Application Workflow Scenarios ---")
let application_batch = @application.run_all_scenarios()
println(@application.batch_report(application_batch))
println(" -> All Scenario Validation: \{application_batch.all_valid}")
println(" -> All Link Holdouts: \{application_batch.all_have_holdout}")
println(
"=====================================================================",
)
println("Execution completed successfully!")
}