1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2026-05-11 09:32:05 +00:00
Files
hyperrogue/rogueviz/embeddings/visualize.cpp
T
2026-04-29 21:50:18 +02:00

74 lines
2.1 KiB
C++

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);
}
});
}}