figures_v2 outputs
Generated by figures_v2/scripts/make_all_figures.py.
Run:
python figures_v2/scripts/make_all_figures.py --package-root .
Use PDF files in ACM LaTeX for vector output; PNG files are 300 dpi previews.
fig1_task_graph
Figure ID: fig1_task_graph
Output files: figures_v2/pdf/fig1_task_graph.pdf, figures_v2/png/fig1_task_graph.png, figures_v2/svg/fig1_task_graph.svg
Data source: schematic; README.md; data_and_docs/dataset.md
Purpose in paper: Define author-paper link prediction on the heterogeneous academic graph.
Caption draft: Heterogeneous author-paper graph and link-prediction task. Authors, papers, historical author-paper interactions, coauthor links, and directed paper-paper citations define the observed graph; each test author-paper pair is ranked for a binary recommendation decision.
Known limitations: None.
fig2_dataset_sparsity
Figure ID: fig2_dataset_sparsity
Output files: figures_v2/pdf/fig2_dataset_sparsity.pdf, figures_v2/png/fig2_dataset_sparsity.png, figures_v2/svg/fig2_dataset_sparsity.svg
Data source: data_and_docs/author_file_ann.txt; data_and_docs/paper_file_ann.txt; data_and_docs/bipartite_train_ann.txt
Purpose in paper: Show sparsity, long tails, and cold-start pressure in the official graph.
Caption draft: Dataset sparsity and long-tail structure. Log-log CCDFs show heavy-tailed coauthor, citation, and author-paper degrees, while the low-degree panel shows the mass of cold-start nodes that motivates structural and high-order features.
Known limitations: None.
fig3_performance_evolution
Figure ID: fig3_performance_evolution
Output files: figures_v2/pdf/fig3_performance_evolution.pdf, figures_v2/png/fig3_performance_evolution.png, figures_v2/svg/fig3_performance_evolution.svg
Data source: figures_v2/data/manual_metrics.csv; README.md; reports/*.md
Purpose in paper: Summarize the method evolution from LightGCN to the final high-order stack.
Caption draft: Performance evolution across model stages. LightGCN provides the collaborative filtering backbone, graph/meta-path stacking supplies the largest jump, random-walk blocks add complementary high-order proximity, and citation-aware propagation gives the final lift to public F1 = 0.96626.
Known limitations: None.
fig4_method_pipeline
Figure ID: fig4_method_pipeline
Output files: figures_v2/pdf/fig4_method_pipeline.pdf, figures_v2/png/fig4_method_pipeline.png, figures_v2/svg/fig4_method_pipeline.svg
Data source: README.md; CLAUDE.md; code/high_order_graph_stack.py
Purpose in paper: Explain the final two-stage LightGBM stacking pipeline.
Caption draft: Final two-stage stacking pipeline. The first stage produces collaborative, graph, content, random-walk, and citation-propagation signals; the second-stage LightGBM stacker fuses roughly 259 features and uses a rank cutoff rather than a transferred probability threshold for submission generation.
Known limitations: None.
fig5_highorder_ablation
Figure ID: fig5_highorder_ablation
Output files: figures_v2/pdf/fig5_highorder_ablation.pdf, figures_v2/png/fig5_highorder_ablation.png, figures_v2/svg/fig5_highorder_ablation.svg
Data source: validation_runs/dynamic_seed202/high_order_graph_stack/validation_summary.csv
Purpose in paper: Quantify the value of high-order citation propagation without dual axes.
Caption draft: High-order propagation ablation. F1 and AUC are shown in separate panels to avoid dual-axis ambiguity. Rich content and random-walk blocks improve the stack, undirected high-order features add the largest late-stage gain, and directed citation propagation gives the final improvement.
Known limitations: None.
fig6_calibration_rank_cutoff
Figure ID: fig6_calibration_rank_cutoff
Output files: figures_v2/pdf/fig6_calibration_rank_cutoff.pdf, figures_v2/png/fig6_calibration_rank_cutoff.png, figures_v2/svg/fig6_calibration_rank_cutoff.svg
Data source: validation_runs\stack_ratio_analysis.csv; validation_runs\dynamic_seed202\high_order_graph_stack\threshold_submission_summary.csv
Purpose in paper: Explain why rank cutoff is more robust than transferring a probability threshold.
Caption draft: Rank cutoff versus probability-threshold transfer. The validation split is artificially balanced, so validation probabilities are not calibrated for test; a rank cutoff keeps the predicted-positive ratio fixed while the transferred probability threshold drifts to about 0.524 on test.
Known limitations: None.
figA1_lightgcn_sweep
Figure ID: figA1_lightgcn_sweep
Output files: figures_v2/pdf/figA1_lightgcn_sweep.pdf, figures_v2/png/figA1_lightgcn_sweep.png, figures_v2/svg/figA1_lightgcn_sweep.svg
Data source: validation_runs\dynamic_summary.csv
Purpose in paper: Document the LightGCN layer/dimension sweep.
Caption draft: LightGCN validation sweep over propagation depth and embedding dimension.
Known limitations: None.
figA2_rw_ensemble
Figure ID: figA2_rw_ensemble
Output files: figures_v2/pdf/figA2_rw_ensemble.pdf, figures_v2/png/figA2_rw_ensemble.png, figures_v2/svg/figA2_rw_ensemble.svg
Data source: D:\reps\26H1_cs3319_final_deliverable\validation_runs\dynamic_seed202\randomwalk_systematic\small_ablation_table.csv; D:\reps\26H1_cs3319_final_deliverable\validation_runs\dynamic_seed202\randomwalk_systematic\ensemble_5_ablation.csv; D:\reps\26H1_cs3319_final_deliverable\validation_runs\dynamic_seed202\randomwalk_systematic\ensemble_7_ablation.csv
Purpose in paper: Show random-walk ensemble-size ablation.
Caption draft: Random-walk ensemble-size ablation from the best single block to 5 and 7 blocks.
Known limitations: None.
figA3_feature_group_contribution
Figure ID: figA3_feature_group_contribution
Output files: figures_v2/pdf/figA3_feature_group_contribution.pdf, figures_v2/png/figA3_feature_group_contribution.png, figures_v2/svg/figA3_feature_group_contribution.svg
Data source: figures_v2/data/manual_metrics.csv; reports/*.md
Purpose in paper: Summarize incremental feature-group contributions from recorded ablations.
Caption draft: Feature-group contribution measured as recorded incremental validation-F1 gains.
Known limitations: None.
figA4_error_buckets
Figure ID: figA4_error_buckets
Output files: figures_v2/pdf/figA4_error_buckets.pdf, figures_v2/png/figA4_error_buckets.png, figures_v2/svg/figA4_error_buckets.svg
Data source: validation_runs\dynamic_seed202\error_group_calibration\error_analysis_buckets.csv
Purpose in paper: Localize remaining weak regimes without a single overlong heatmap.
Caption draft: Error buckets reveal cold-start and weak-evidence regimes. The panels separate degree, rank/score, and local-evidence buckets and highlight the lowest-F1 rows.
Known limitations: None.
figA5_oof_pr_score
Figure ID: figA5_oof_pr_score
Output files: figures_v2/pdf/figA5_oof_pr_score.pdf, figures_v2/png/figA5_oof_pr_score.png, figures_v2/svg/figA5_oof_pr_score.svg
Data source: validation_runs\dynamic_seed202\val_labels_seed202.npy; validation_runs\dynamic_seed202\dyn202_l2d512_bpr_bigbatch_more\scores\val_vanilla_ensemble_mean.npy; validation_runs\dynamic_seed202\post95_ablation\ensemble_lgcn_oof.npy; validation_runs\dynamic_seed202\node2vec_deepwalk\node2vec_stack_oof.npy; validation_runs\dynamic_seed202\high_order_graph_stack\rich_rw7_highorder_directed_oof.npy
Purpose in paper: Show OOF discrimination and readable final-score distributions.
Caption draft: OOF precision-recall curves and final-score ECDFs. The ECDF view avoids density spikes and makes positive/negative separation readable.
Known limitations: Only aligned OOF arrays are plotted.
figA6_feature_importance
Figure ID: figA6_feature_importance
Output files: skipped
Data source: cached_scores/lgb_model.pkl; cached_scores/lgb_v2_model.pkl
Purpose in paper: LightGBM model feature importance if model metadata is reliably loadable.
Caption draft: Skipped unless LightGBM and feature names are available.
Known limitations: LightGBM is not importable in this environment and reliable feature names are not available; no importance plot was generated.
LaTeX insertion
Single-column figure:
\begin{figure}
\centering
\includegraphics[width=\columnwidth]{figures_v2/pdf/fig2_dataset_sparsity.pdf}
\caption{...}
\end{figure}
Double-column figure:
\begin{figure*}
\centering
\includegraphics[width=\textwidth]{figures_v2/pdf/fig4_method_pipeline.pdf}
\caption{...}
\end{figure*}