1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2026-05-09 08:32:07 +00:00

improved embedding/DHRG visualization

This commit is contained in:
Zeno Rogue
2026-04-25 01:27:11 +02:00
parent 2bfc4a835a
commit ec339c028d
4 changed files with 90 additions and 2 deletions
+7 -1
View File
@@ -64,7 +64,7 @@ void clear() {
void dhrg_init() {
if(!mroot) {
println(hlog, "DHRG version " DHRGVER "\n");
rogueviz::rv_hook(hooks_handleKey, 100, dhrg_animate);
// rogueviz::rv_hook(hooks_handleKey, 100, dhrg_animate);
regular_info();
generate_root();
}
@@ -181,6 +181,12 @@ auto hook =
#include "visualize.cpp"
#endif
void launch_dhrg() {
dhrg_init(); graph_from_rv();
ts_vertices = ts_rbase;
rogueviz::embeddings::reenable_embedding();
}
}
#include "legacy.cpp"
+8 -1
View File
@@ -3,7 +3,7 @@
int held_id = -1;
void show_likelihood() {
cmode = sm::SIDE | sm::MAYDARK | sm::DIALOG_STRICT_X | sm::PANNING;
cmode = sm::SIDE | sm::DIALOG_STRICT_X | sm::PANNING;
gamescreen();
dialog::init("DHRG information");
@@ -94,6 +94,13 @@ void show_likelihood() {
};
}
int a1 = addHook(rogueviz::hooks_rvmenu, 100, [] {
if(isize(vertices)) {
dialog::addItem("examine DHRG", 'd');
dialog::add_action_push(show_likelihood);
}
});
bool dhrg_animate(int sym, int uni) {
if((cmode & sm::NORMAL) && uni == '/') {
clearMessages();
+1
View File
@@ -147,3 +147,4 @@ int a = arg::add3("-edgelist", [] { arg::shift(); read_edgelist(arg::args()); })
#include "maprank.cpp"
#include "mdl.cpp"
#include "compare.cpp"
#include "visualize.cpp"
+74
View File
@@ -0,0 +1,74 @@
namespace dhrg {
void show_likelihood();
void launch_dhrg();
extern std::vector<struct mycell*> vertices;
}
namespace rogueviz {
namespace embeddings {
void show_embedding_info() {
cmode = sm::SIDE | sm::DIALOG_STRICT_X | sm::PANNING;
gamescreen();
dialog::init("embedding info");
auto vp = [] (string s, char k, string t) { dialog::addSelItem(s,t,k); };
if(!eval.current) {
vp("evaluate", 'e', "...");
dialog::add_action(full_evaluation);
}
else {
// println(hlog, make_tuple(int(eval.li.N), int(eval.li.M), int(eval.li.N1), eval.li.loglik, eval.li.control));
vp("nodes", 'n', its(eval.li.N));
vp("edges", 'm', its(eval.li.M));
vp("embedding radius", 'r', its(eval.maxradius));
dialog::addBoolItem("symmetric", eval.li.symmetric, 's');
auto NX = bestll2(eval.li.M, eval.li.N1);
vp("normalized loglikelihood", 'x', fts(1 - eval.li.loglik / NX));
vp("icv", 'x', fts(-NX / (-NX + eval.li.control)));
vp("mAP", 'M', fts(eval.rank.map / eval.rank.n));
vp("MeanRank", 'R', fts(eval.rank.ranks / eval.rank.rby));
auto &r = eval.routing;
vp("greedy success", 'A', fts(r.suc / r.tot));
vp("greedy stretch", 'A', fts(r.routedist / r.suc));
vp("greedy efficiency", 'A', fts(r.eff / r.tot));
vp("modded success", 'A', fts(r.msuc / r.tot));
vp("modded stretch", 'A', fts(r.mroutedist / r.msuc));
vp("modded efficiency", 'A', fts(r.meff / r.tot));
}
if(WDIM == 2) {
if(!isize(dhrg::vertices)) {
dialog::addItem("DHRG: convert", 'd');
dialog::add_action(dhrg::launch_dhrg);
}
else {
dialog::addItem("DHRG: examine", 'd');
dialog::add_action_push(dhrg::show_likelihood);
}
}
dialog::addBack();
dialog::display();
keyhandler = [] (int sym, int uni) {
handlePanning(sym, uni);
dialog::handleNavigation(sym, uni);
if(doexiton(sym, uni)) popScreen();
};
}
int a1 = addHook(rogueviz::hooks_rvmenu, 100, [] {
if(current) {
dialog::addItem("evaluate embedding", 'e');
dialog::add_action_push(show_embedding_info);
}
});
}}