|
1 | | -The PCoA path is now wired end to end. |
2 | | -What changed: |
3 | | -Added backend route: [server_app.py](/home/jregalado/Projects/GeoGenetics/unicorn/src/libunicorn/graphengine/server_app.py)POST /compute/pcoa |
4 | | -rebuilds the selected-node count matrix on the backend |
5 | | -calls build_count_matrix_pcoa_spec(...) |
6 | | - |
7 | | -Added UI controls: [index.html](/home/jregalado/Projects/GeoGenetics/unicorn/src/libunicorn/graphengine/index.html)PCoA button |
8 | | -metric selector with:Jaccard |
9 | | -Bray-Curtis |
10 | | -Log-chord |
11 | | -Chao |
12 | | - |
13 | | - |
14 | | -Wired popup rendering: [graphengine.js](/home/jregalado/Projects/GeoGenetics/unicorn/src/libunicorn/graphengine/graphengine.js)fetches POST /compute/pcoa |
15 | | -opens a Plotly scatter popup |
16 | | -labels axes with explained variance |
17 | | -shows correction status in the plot header |
18 | | -hides PCoA when count view is Direct + Cumulative |
19 | | -hides PCoA controls for rank reports and plain top-table mode |
20 | | - |
21 | | -Updated progress tracker: [todo.txt](/home/jregalado/Projects/GeoGenetics/unicorn/src/libunicorn/graphengine/unicorn_compute/todo.txt) |
22 | | -Checks I ran: |
23 | | -Python import check for [pcoa.py](/home/jregalado/Projects/GeoGenetics/unicorn/src/libunicorn/graphengine/unicorn_compute/pcoa.py) |
24 | | -py_compile on [server_app.py](/home/jregalado/Projects/GeoGenetics/unicorn/src/libunicorn/graphengine/server_app.py) |
25 | | -JS parse check on [graphengine.js](/home/jregalado/Projects/GeoGenetics/unicorn/src/libunicorn/graphengine/graphengine.js) |
26 | | -What to do before trying it: |
27 | | -Restart the backend server so POST /compute/pcoa is live. |
28 | | -Hard refresh the app so the new PCoA button and metric selector appear. |
29 | | -Open a count matrix, choose Direct or Cumulative, pick a metric, and click PCoA. |
30 | | -If you want, next we can tune the popup aesthetics or add sample-group overlays once you’ve had a first spin. |
| 1 | +Pass 8B is done. |
| 2 | +graphengine.js is now a tiny compatibility shim with no semantic ownership. The last meaningful leftovers were moved where they belong: |
| 3 | +toggleCollapse() moved into [graphengine_selection.js](/Users/jregalado/Projects/GeoGenetics/unicorn/src/libunicorn/graphengine/graphengine_selection.js) |
| 4 | +setStatus(), addClientLog(), clearClientLog(), and renderClientLog() moved into [graphengine_ui.js](/Users/jregalado/Projects/GeoGenetics/unicorn/src/libunicorn/graphengine/graphengine_ui.js) |
| 5 | +I also made the script order in [index.html](/Users/jregalado/Projects/GeoGenetics/unicorn/src/libunicorn/graphengine/index.html) more explicit while keeping the current dependency-safe order, and preserved the compatibility globals that tests and DevTools still use. |
| 6 | +Regression is green: |
| 7 | +./tests/run_tests.sh |
| 8 | +5 passed in 40.06s |
| 9 | +I didn’t do the extra manual DevTools/fresh-reload check in this pass. The next step is Pass 8C: Remove or freeze graphengine.js. |
0 commit comments