docs: state the working layout and the pseudo-label taxonomy
Browse filesThe reproduce commands mix paths from two repositories without saying so; show the
directory they assume and how to fetch a cohort without cloning 1.05 TB.
bach_cellvit CSVs carry PanNuke codes 1-5, which no file explained, and they are a
different taxonomy from the 4-class NuCLS-super one behind tail_metrics/.
DATA.md
CHANGED
|
@@ -268,11 +268,16 @@ below 1 % everywhere, so this is not a handful of pathological graphs.
|
|
| 268 |
macro-mean, which runs 0.75β0.82 on the labelled cohorts.
|
| 269 |
|
| 270 |
Contents: `tiles/` holds 109,904 224 px tile graphs with CellViT++ pseudo-labels (BACH 13,837,
|
| 271 |
-
BRACS 95,670, BreakHis 397); `bach_cellvit/` holds 400 per-image pseudo-label CSVs (538,421
|
| 272 |
cells, columns `centroid_x_px,centroid_y_px,cell_type,type_prob`) plus a summary JSON; and
|
| 273 |
`paper_metrics/` holds the pooled edge-homophily and pseudo-label-gate results as JSON, plus
|
| 274 |
`tail_metrics/<cohort>.json`, which is the artifact behind the table above: `nodes` is
|
| 275 |
`n_nodes_total - n_isolated_total` and the two tail columns are the per-node fractions below
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 276 |
0.3 and 0.5. Do not read `bach_cellvit/bach_fattail_cellvit.json` as the BACH row of that
|
| 277 |
table; it is a different analysis (whole-image CellViT graphs, 538,421 cells) rather than the
|
| 278 |
224 px tile graphs (439,533 nodes) the table is computed over.
|
|
@@ -374,6 +379,23 @@ The training, evaluation and analysis scripts referenced below live in
|
|
| 374 |
[github.com/Ace3Z/GrapHist-V2](https://github.com/Ace3Z/GrapHist-V2). This repository ships
|
| 375 |
the data they consume, plus the model and its loader.
|
| 376 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 377 |
Run the `rebase_graph_paths.py` step first in every case.
|
| 378 |
|
| 379 |
**Slide-level MIL subtyping**
|
|
|
|
| 268 |
macro-mean, which runs 0.75β0.82 on the labelled cohorts.
|
| 269 |
|
| 270 |
Contents: `tiles/` holds 109,904 224 px tile graphs with CellViT++ pseudo-labels (BACH 13,837,
|
| 271 |
+
BRACS 95,670, BreakHis 397); `bach_cellvit/pseudolabels/` holds 400 per-image pseudo-label CSVs (538,421
|
| 272 |
cells, columns `centroid_x_px,centroid_y_px,cell_type,type_prob`) plus a summary JSON; and
|
| 273 |
`paper_metrics/` holds the pooled edge-homophily and pseudo-label-gate results as JSON, plus
|
| 274 |
`tail_metrics/<cohort>.json`, which is the artifact behind the table above: `nodes` is
|
| 275 |
`n_nodes_total - n_isolated_total` and the two tail columns are the per-node fractions below
|
| 276 |
+
`cell_type` in those CSVs uses PanNuke's codes, with background dropped at inference:
|
| 277 |
+
1 = Neoplastic, 2 = Inflammatory, 3 = Connective, 4 = Dead, 5 = Epithelial. Note this is a
|
| 278 |
+
different taxonomy from the 4-class one behind `tail_metrics/` and `pseudolabel_validation.json`,
|
| 279 |
+
which come from the NuCLS-super head; the two are separate analyses.
|
| 280 |
+
|
| 281 |
0.3 and 0.5. Do not read `bach_cellvit/bach_fattail_cellvit.json` as the BACH row of that
|
| 282 |
table; it is a different analysis (whole-image CellViT graphs, 538,421 cells) rather than the
|
| 283 |
224 px tile graphs (439,533 nodes) the table is computed over.
|
|
|
|
| 379 |
[github.com/Ace3Z/GrapHist-V2](https://github.com/Ace3Z/GrapHist-V2). This repository ships
|
| 380 |
the data they consume, plus the model and its loader.
|
| 381 |
|
| 382 |
+
The commands assume both are in one working directory, the code repository with this
|
| 383 |
+
repository's contents beside it:
|
| 384 |
+
|
| 385 |
+
```
|
| 386 |
+
GrapHist-V2/ <- git clone of the code repository
|
| 387 |
+
βββ src/ studies/ experiments/ modeling/ ...
|
| 388 |
+
βββ graphs/ <- from this repository
|
| 389 |
+
βββ embeddings/
|
| 390 |
+
βββ labels/
|
| 391 |
+
βββ baselines/
|
| 392 |
+
```
|
| 393 |
+
|
| 394 |
+
So `python modeling/rebase_graph_paths.py` runs the copy that ships here, while
|
| 395 |
+
`python src/train/generate_embs.py` runs the one from the code repository. Fetch what you need
|
| 396 |
+
with `hf_hub_download`, or `huggingface-cli download Ace3Z/graphist-v2 --include "graphs/bach/*"`
|
| 397 |
+
for a whole cohort; the repository is ~1.05 TB, so do not clone it.
|
| 398 |
+
|
| 399 |
Run the `rebase_graph_paths.py` step first in every case.
|
| 400 |
|
| 401 |
**Slide-level MIL subtyping**
|