From 415daa0a624559af7e8ec2d748d561647e3c83ae Mon Sep 17 00:00:00 2001 From: Zeno Rogue Date: Tue, 27 Jan 2026 10:34:05 +0100 Subject: [PATCH] rogueviz::dhrg:: compute DHRG variant of rank measures --- rogueviz/dhrg/dhrg-rank.cpp | 120 ++++++++++++++++++++++++++++++++++++ rogueviz/dhrg/dhrg.cpp | 9 +++ 2 files changed, 129 insertions(+) create mode 100644 rogueviz/dhrg/dhrg-rank.cpp diff --git a/rogueviz/dhrg/dhrg-rank.cpp b/rogueviz/dhrg/dhrg-rank.cpp new file mode 100644 index 00000000..e6194aa2 --- /dev/null +++ b/rogueviz/dhrg/dhrg-rank.cpp @@ -0,0 +1,120 @@ +namespace dhrg { + +ll rtally[MAXDIST]; +int redgetally[MAXDIST]; + +using rogueviz::embeddings::directed_edges; + + +void tallydiredgesof(int i, int delta, mycell *mc) { + for(auto j: directed_edges[i]) { + whichedgetally[quickdist(mc, vertices[j], 0)] += delta; + } + } + +void dhrg_ranks() { + + int N = isize(rogueviz::vdata); + /* + print(hlog, "check tally = "); + for(int j=0; j dt(whichtally, rtally); + dynamicval det(whichedgetally, redgetally); + + ld meanrank = 0; + ld meanrank_opti = 0; + int tgood = 0; + rtally[0]--; // do not count self + ld maprank = 0; + ld maprank_opti = 0; + + progressbar pb(N, "compute_ranks"); + for(int i=0; i 30) print(hlog, " ** BAD"); + tgood += pgood; + + // print(hlog, " -> ", meanrank/(tgood+pgood), " (pgood ", pgood, ") (tgood ", tgood, ")"); + // println(hlog); + + if(pgood) maprank += ap / pgood; + if(pgood) maprank_opti += ap_opti / pgood; + tallydiredgesof(i, -1, mc); + add_to_tally(mc, -1, 0); + + if(i < -10) { + println(hlog, meanrank, "/", tgood, " ", ap, "/", pgood, " ", ap_opti, "/", pgood); + } + pb++; + } + + rtally[0]++; + print(hlog, "tallies for nothing ="); + for(int j=0; j