faith-ogun commited on
Commit
65635a1
·
verified ·
1 Parent(s): 94c1581

Upload folder using huggingface_hub

Browse files
PROVENANCE.json ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "artifact_name": "Voxelomics TP53 head on Path Foundation embeddings",
3
+ "artifact_type": "classifier_head",
4
+ "base_model_family": "Google HAI-DEF Path Foundation",
5
+ "base_model_identifier": "google/path-foundation",
6
+ "base_model_source": "https://huggingface.co/google/path-foundation",
7
+ "base_model_loaded_locally": true,
8
+ "base_model_loading_mode": "local cache / local_files_only",
9
+ "derived_artifact": "model.joblib",
10
+ "task": "TP53 mutation risk support from WSI embeddings",
11
+ "training_code_repo": "https://github.com/faith-ogun/Voxelomics-offline",
12
+ "training_code_paths": [
13
+ "backend/diagnosticore-service/path_foundation_experiment/extract_pathfoundation_embeddings.py",
14
+ "backend/diagnosticore-service/path_foundation_experiment/train_tp53_head_from_embeddings.py",
15
+ "backend/diagnosticore-service/path_foundation_experiment/compare_vs_cnn_baseline.py"
16
+ ],
17
+ "notes": "This repo contains a derived TP53 head and evaluation artifacts, not Path Foundation base weights."
18
+ }
README.md ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Voxelomics Path Foundation TP53 Head (Derived Artifact)
2
+
3
+ This repository contains a derived TP53 classifier head (`model.joblib`) and evaluation artifacts used in the Voxelomics offline pathology workflow demo.
4
+
5
+ ## Provenance / Traceability to HAI-DEF
6
+ - Base HAI-DEF model: `google/path-foundation`
7
+ - Base model source: https://huggingface.co/google/path-foundation
8
+ - Embeddings were extracted with the Voxelomics Path Foundation embedding pipeline.
9
+ - This repo does **not** redistribute Path Foundation base weights.
10
+
11
+ ## What is included
12
+ - `model.joblib` (derived TP53 classifier head)
13
+ - evaluation JSON artifacts
14
+ - `PROVENANCE.json` (artifact lineage and code references)
15
+
16
+ ## Intended use
17
+ Research/demo use only. Not for clinical deployment or diagnosis.
18
+
19
+ ## Code
20
+ https://github.com/faith-ogun/Voxelomics-offline
case_calibration_report_platt.json ADDED
@@ -0,0 +1,98 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "config": {
3
+ "input_csv": "/Users/faith/Desktop/Voxelomics-offline/backend/diagnosticore-service/output/pathfoundation_tp53_200/case_predictions.csv",
4
+ "output_csv": "/Users/faith/Desktop/Voxelomics-offline/backend/diagnosticore-service/output/pathfoundation_tp53_200/case_predictions_calibrated_platt.csv",
5
+ "method": "platt",
6
+ "fit_split": "val",
7
+ "decision_threshold": 0.5,
8
+ "seed": 42
9
+ },
10
+ "raw_metrics_by_split": {
11
+ "test": {
12
+ "n": 50.0,
13
+ "positive_rate": 0.4,
14
+ "accuracy": 0.72,
15
+ "precision": 0.65,
16
+ "recall": 0.65,
17
+ "specificity": 0.7666666666666667,
18
+ "f1": 0.65,
19
+ "balanced_accuracy": 0.7083333333333334,
20
+ "roc_auc": 0.77,
21
+ "average_precision": 0.7083413072873412,
22
+ "brier_score": 0.19325586999295996,
23
+ "ece_10": 0.10849864000000001
24
+ },
25
+ "train": {
26
+ "n": 100.0,
27
+ "positive_rate": 0.34,
28
+ "accuracy": 0.97,
29
+ "precision": 0.9428571428571428,
30
+ "recall": 0.9705882352941176,
31
+ "specificity": 0.9696969696969697,
32
+ "f1": 0.9565217391304348,
33
+ "balanced_accuracy": 0.9701426024955437,
34
+ "roc_auc": 0.9919786096256685,
35
+ "average_precision": 0.981491690975888,
36
+ "brier_score": 0.09445972738098998,
37
+ "ece_10": 0.25159594999999996
38
+ },
39
+ "val": {
40
+ "n": 50.0,
41
+ "positive_rate": 0.36,
42
+ "accuracy": 0.76,
43
+ "precision": 0.6875,
44
+ "recall": 0.6111111111111112,
45
+ "specificity": 0.84375,
46
+ "f1": 0.6470588235294118,
47
+ "balanced_accuracy": 0.7274305555555556,
48
+ "roc_auc": 0.8836805555555556,
49
+ "average_precision": 0.8032331072875449,
50
+ "brier_score": 0.15651664435758,
51
+ "ece_10": 0.14666105999999995
52
+ }
53
+ },
54
+ "calibrated_metrics_by_split": {
55
+ "test": {
56
+ "n": 50.0,
57
+ "positive_rate": 0.4,
58
+ "accuracy": 0.64,
59
+ "precision": 0.75,
60
+ "recall": 0.15,
61
+ "specificity": 0.9666666666666667,
62
+ "f1": 0.24999999999999997,
63
+ "balanced_accuracy": 0.5583333333333333,
64
+ "roc_auc": 0.77,
65
+ "average_precision": 0.7083413072873412,
66
+ "brier_score": 0.20820516360342,
67
+ "ece_10": 0.13791082
68
+ },
69
+ "train": {
70
+ "n": 100.0,
71
+ "positive_rate": 0.34,
72
+ "accuracy": 0.82,
73
+ "precision": 1.0,
74
+ "recall": 0.47058823529411764,
75
+ "specificity": 1.0,
76
+ "f1": 0.6399999999999999,
77
+ "balanced_accuracy": 0.7352941176470589,
78
+ "roc_auc": 0.9919786096256685,
79
+ "average_precision": 0.981491690975888,
80
+ "brier_score": 0.14688661838756,
81
+ "ece_10": 0.33329654
82
+ },
83
+ "val": {
84
+ "n": 50.0,
85
+ "positive_rate": 0.36,
86
+ "accuracy": 0.68,
87
+ "precision": 1.0,
88
+ "recall": 0.1111111111111111,
89
+ "specificity": 1.0,
90
+ "f1": 0.19999999999999998,
91
+ "balanced_accuracy": 0.5555555555555556,
92
+ "roc_auc": 0.8836805555555556,
93
+ "average_precision": 0.8032331072875449,
94
+ "brier_score": 0.18652675945328004,
95
+ "ece_10": 0.14931776
96
+ }
97
+ }
98
+ }
comparison_vs_cnn.json ADDED
@@ -0,0 +1,111 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "config": {
3
+ "cnn_case_predictions": "/Users/faith/Desktop/Voxelomics-offline/backend/diagnosticore-service/output/cnn_tp53_200/case_predictions.csv",
4
+ "pathfoundation_case_predictions": "/Users/faith/Desktop/Voxelomics-offline/backend/diagnosticore-service/output/pathfoundation_tp53_200/case_predictions.csv",
5
+ "decision_threshold": 0.5
6
+ },
7
+ "overlap": {
8
+ "n_common_case_split_rows": 200,
9
+ "splits": [
10
+ "test",
11
+ "train",
12
+ "val"
13
+ ]
14
+ },
15
+ "cnn_metrics_by_split": {
16
+ "test": {
17
+ "n": 50.0,
18
+ "positive_rate": 0.4,
19
+ "accuracy": 0.7,
20
+ "precision": 0.8571428571428571,
21
+ "recall": 0.3,
22
+ "f1": 0.4444444444444444,
23
+ "roc_auc": 0.7916666666666667,
24
+ "average_precision": 0.7531416732301973
25
+ },
26
+ "train": {
27
+ "n": 100.0,
28
+ "positive_rate": 0.34,
29
+ "accuracy": 0.83,
30
+ "precision": 0.9473684210526315,
31
+ "recall": 0.5294117647058824,
32
+ "f1": 0.6792452830188679,
33
+ "roc_auc": 0.9188948306595366,
34
+ "average_precision": 0.8747318689426417
35
+ },
36
+ "val": {
37
+ "n": 50.0,
38
+ "positive_rate": 0.36,
39
+ "accuracy": 0.78,
40
+ "precision": 0.8181818181818182,
41
+ "recall": 0.5,
42
+ "f1": 0.6206896551724138,
43
+ "roc_auc": 0.8454861111111112,
44
+ "average_precision": 0.7712379190481149
45
+ }
46
+ },
47
+ "pathfoundation_metrics_by_split": {
48
+ "test": {
49
+ "n": 50.0,
50
+ "positive_rate": 0.4,
51
+ "accuracy": 0.72,
52
+ "precision": 0.65,
53
+ "recall": 0.65,
54
+ "f1": 0.65,
55
+ "roc_auc": 0.77,
56
+ "average_precision": 0.7083413072873412
57
+ },
58
+ "train": {
59
+ "n": 100.0,
60
+ "positive_rate": 0.34,
61
+ "accuracy": 0.97,
62
+ "precision": 0.9428571428571428,
63
+ "recall": 0.9705882352941176,
64
+ "f1": 0.9565217391304348,
65
+ "roc_auc": 0.9919786096256685,
66
+ "average_precision": 0.981491690975888
67
+ },
68
+ "val": {
69
+ "n": 50.0,
70
+ "positive_rate": 0.36,
71
+ "accuracy": 0.76,
72
+ "precision": 0.6875,
73
+ "recall": 0.6111111111111112,
74
+ "f1": 0.6470588235294118,
75
+ "roc_auc": 0.8836805555555556,
76
+ "average_precision": 0.8032331072875449
77
+ }
78
+ },
79
+ "delta_pathfoundation_minus_cnn_by_split": {
80
+ "test": {
81
+ "n": 0.0,
82
+ "positive_rate": 0.0,
83
+ "accuracy": 0.020000000000000018,
84
+ "precision": -0.20714285714285707,
85
+ "recall": 0.35000000000000003,
86
+ "f1": 0.2055555555555556,
87
+ "roc_auc": -0.021666666666666723,
88
+ "average_precision": -0.04480036594285608
89
+ },
90
+ "train": {
91
+ "n": 0.0,
92
+ "positive_rate": 0.0,
93
+ "accuracy": 0.14,
94
+ "precision": -0.004511278195488688,
95
+ "recall": 0.4411764705882353,
96
+ "f1": 0.2772764561115669,
97
+ "roc_auc": 0.07308377896613194,
98
+ "average_precision": 0.1067598220332463
99
+ },
100
+ "val": {
101
+ "n": 0.0,
102
+ "positive_rate": 0.0,
103
+ "accuracy": -0.020000000000000018,
104
+ "precision": -0.13068181818181823,
105
+ "recall": 0.11111111111111116,
106
+ "f1": 0.026369168356997985,
107
+ "roc_auc": 0.03819444444444442,
108
+ "average_precision": 0.03199518823943004
109
+ }
110
+ }
111
+ }
comparison_vs_cnn_platt_probs.json ADDED
@@ -0,0 +1,111 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "config": {
3
+ "cnn_case_predictions": "/Users/faith/Desktop/Voxelomics-offline/backend/diagnosticore-service/output/cnn_tp53_200/case_predictions.csv",
4
+ "pathfoundation_case_predictions": "/Users/faith/Desktop/Voxelomics-offline/backend/diagnosticore-service/output/pathfoundation_tp53_200/case_predictions_calibrated_platt.csv",
5
+ "decision_threshold": 0.5
6
+ },
7
+ "overlap": {
8
+ "n_common_case_split_rows": 200,
9
+ "splits": [
10
+ "test",
11
+ "train",
12
+ "val"
13
+ ]
14
+ },
15
+ "cnn_metrics_by_split": {
16
+ "test": {
17
+ "n": 50.0,
18
+ "positive_rate": 0.4,
19
+ "accuracy": 0.7,
20
+ "precision": 0.8571428571428571,
21
+ "recall": 0.3,
22
+ "f1": 0.4444444444444444,
23
+ "roc_auc": 0.7916666666666667,
24
+ "average_precision": 0.7531416732301973
25
+ },
26
+ "train": {
27
+ "n": 100.0,
28
+ "positive_rate": 0.34,
29
+ "accuracy": 0.83,
30
+ "precision": 0.9473684210526315,
31
+ "recall": 0.5294117647058824,
32
+ "f1": 0.6792452830188679,
33
+ "roc_auc": 0.9188948306595366,
34
+ "average_precision": 0.8747318689426417
35
+ },
36
+ "val": {
37
+ "n": 50.0,
38
+ "positive_rate": 0.36,
39
+ "accuracy": 0.78,
40
+ "precision": 0.8181818181818182,
41
+ "recall": 0.5,
42
+ "f1": 0.6206896551724138,
43
+ "roc_auc": 0.8454861111111112,
44
+ "average_precision": 0.7712379190481149
45
+ }
46
+ },
47
+ "pathfoundation_metrics_by_split": {
48
+ "test": {
49
+ "n": 50.0,
50
+ "positive_rate": 0.4,
51
+ "accuracy": 0.64,
52
+ "precision": 0.75,
53
+ "recall": 0.15,
54
+ "f1": 0.25,
55
+ "roc_auc": 0.77,
56
+ "average_precision": 0.7083413072873412
57
+ },
58
+ "train": {
59
+ "n": 100.0,
60
+ "positive_rate": 0.34,
61
+ "accuracy": 0.82,
62
+ "precision": 1.0,
63
+ "recall": 0.47058823529411764,
64
+ "f1": 0.64,
65
+ "roc_auc": 0.9919786096256685,
66
+ "average_precision": 0.981491690975888
67
+ },
68
+ "val": {
69
+ "n": 50.0,
70
+ "positive_rate": 0.36,
71
+ "accuracy": 0.68,
72
+ "precision": 1.0,
73
+ "recall": 0.1111111111111111,
74
+ "f1": 0.2,
75
+ "roc_auc": 0.8836805555555556,
76
+ "average_precision": 0.8032331072875449
77
+ }
78
+ },
79
+ "delta_pathfoundation_minus_cnn_by_split": {
80
+ "test": {
81
+ "n": 0.0,
82
+ "positive_rate": 0.0,
83
+ "accuracy": -0.05999999999999994,
84
+ "precision": -0.1071428571428571,
85
+ "recall": -0.15,
86
+ "f1": -0.19444444444444442,
87
+ "roc_auc": -0.021666666666666723,
88
+ "average_precision": -0.04480036594285608
89
+ },
90
+ "train": {
91
+ "n": 0.0,
92
+ "positive_rate": 0.0,
93
+ "accuracy": -0.010000000000000009,
94
+ "precision": 0.052631578947368474,
95
+ "recall": -0.05882352941176472,
96
+ "f1": -0.03924528301886787,
97
+ "roc_auc": 0.07308377896613194,
98
+ "average_precision": 0.1067598220332463
99
+ },
100
+ "val": {
101
+ "n": 0.0,
102
+ "positive_rate": 0.0,
103
+ "accuracy": -0.09999999999999998,
104
+ "precision": 0.18181818181818177,
105
+ "recall": -0.3888888888888889,
106
+ "f1": -0.4206896551724138,
107
+ "roc_auc": 0.03819444444444442,
108
+ "average_precision": 0.03199518823943004
109
+ }
110
+ }
111
+ }
metrics.json ADDED
@@ -0,0 +1,112 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "config": {
3
+ "embeddings_npy": "/Users/faith/Desktop/Voxelomics-offline/backend/diagnosticore-service/output/pathfoundation_tp53_200/embeddings.npy",
4
+ "embedding_rows_csv": "/Users/faith/Desktop/Voxelomics-offline/backend/diagnosticore-service/output/pathfoundation_tp53_200/embedding_rows.csv",
5
+ "seed": 42,
6
+ "max_train_tiles": 50000,
7
+ "max_eval_tiles_per_split": 15000,
8
+ "decision_threshold": 0.5,
9
+ "logreg_c": 1.0
10
+ },
11
+ "dataset": {
12
+ "n_rows_total": 98761,
13
+ "n_features": 384,
14
+ "n_train_used": 49092,
15
+ "n_eval_used": 30000,
16
+ "class_balance_train": 0.33862951193677177
17
+ },
18
+ "tile_metrics": {
19
+ "train": {
20
+ "n": 49092.0,
21
+ "positive_rate": 0.33862951193677177,
22
+ "accuracy": 0.7936323637252506,
23
+ "precision": 0.6661038628805321,
24
+ "recall": 0.7831448508180944,
25
+ "f1": 0.7198982554120932,
26
+ "roc_auc": 0.8762093522556836,
27
+ "average_precision": 0.802780630411325
28
+ },
29
+ "eval": {
30
+ "n": 30000.0,
31
+ "positive_rate": 0.5,
32
+ "accuracy": 0.6401666666666667,
33
+ "precision": 0.6584042793641226,
34
+ "recall": 0.5826,
35
+ "f1": 0.6181869628267251,
36
+ "roc_auc": 0.6964796622222222,
37
+ "average_precision": 0.6957854729844977
38
+ }
39
+ },
40
+ "slide_metrics_by_split": {
41
+ "test": {
42
+ "n": 50.0,
43
+ "positive_rate": 0.4,
44
+ "accuracy": 0.72,
45
+ "precision": 0.65,
46
+ "recall": 0.65,
47
+ "f1": 0.65,
48
+ "roc_auc": 0.77,
49
+ "average_precision": 0.7083413072873412
50
+ },
51
+ "train": {
52
+ "n": 100.0,
53
+ "positive_rate": 0.34,
54
+ "accuracy": 0.97,
55
+ "precision": 0.9428571428571428,
56
+ "recall": 0.9705882352941176,
57
+ "f1": 0.9565217391304348,
58
+ "roc_auc": 0.9919786096256685,
59
+ "average_precision": 0.981491690975888
60
+ },
61
+ "val": {
62
+ "n": 50.0,
63
+ "positive_rate": 0.36,
64
+ "accuracy": 0.76,
65
+ "precision": 0.6875,
66
+ "recall": 0.6111111111111112,
67
+ "f1": 0.6470588235294118,
68
+ "roc_auc": 0.8836805555555556,
69
+ "average_precision": 0.8032331072875449
70
+ }
71
+ },
72
+ "case_metrics_by_split": {
73
+ "test": {
74
+ "n": 50.0,
75
+ "positive_rate": 0.4,
76
+ "accuracy": 0.72,
77
+ "precision": 0.65,
78
+ "recall": 0.65,
79
+ "f1": 0.65,
80
+ "roc_auc": 0.77,
81
+ "average_precision": 0.7083413072873412
82
+ },
83
+ "train": {
84
+ "n": 100.0,
85
+ "positive_rate": 0.34,
86
+ "accuracy": 0.97,
87
+ "precision": 0.9428571428571428,
88
+ "recall": 0.9705882352941176,
89
+ "f1": 0.9565217391304348,
90
+ "roc_auc": 0.9919786096256685,
91
+ "average_precision": 0.981491690975888
92
+ },
93
+ "val": {
94
+ "n": 50.0,
95
+ "positive_rate": 0.36,
96
+ "accuracy": 0.76,
97
+ "precision": 0.6875,
98
+ "recall": 0.6111111111111112,
99
+ "f1": 0.6470588235294118,
100
+ "roc_auc": 0.8836805555555556,
101
+ "average_precision": 0.8032331072875449
102
+ }
103
+ },
104
+ "compat_note": {
105
+ "cnn_equivalent_files": [
106
+ "/Users/faith/Desktop/Voxelomics-offline/backend/diagnosticore-service/output/pathfoundation_tp53_200/tile_predictions.csv",
107
+ "/Users/faith/Desktop/Voxelomics-offline/backend/diagnosticore-service/output/pathfoundation_tp53_200/slide_predictions.csv",
108
+ "/Users/faith/Desktop/Voxelomics-offline/backend/diagnosticore-service/output/pathfoundation_tp53_200/case_predictions.csv",
109
+ "/Users/faith/Desktop/Voxelomics-offline/backend/diagnosticore-service/output/pathfoundation_tp53_200/metrics.json"
110
+ ]
111
+ }
112
+ }
model.joblib ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0cdf56b37ceada6a925a3d036b3cc7d7afb092bc06247bdb8efe57d9df75d715
3
+ size 13633
tp53_clinical_report_pathfoundation_platt.json ADDED
@@ -0,0 +1,261 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "artifact_type": "tp53_locked_threshold_report_v1",
3
+ "created_at_utc": "2026-02-16T18:30:38.534727+00:00",
4
+ "config": {
5
+ "predictions_csv": "/Users/faith/Desktop/Voxelomics-offline/backend/diagnosticore-service/output/pathfoundation_tp53_200/case_predictions_calibrated_platt.csv",
6
+ "threshold_source": "threshold_json",
7
+ "threshold_objective": "max_f1",
8
+ "bootstrap_iters": 2000,
9
+ "seed": 42,
10
+ "subgroup_columns": [],
11
+ "min_subgroup_size": 8
12
+ },
13
+ "locked_threshold": {
14
+ "value": 0.338,
15
+ "source": "threshold_json",
16
+ "objective": "max_f1"
17
+ },
18
+ "overall_metrics": {
19
+ "val": {
20
+ "threshold_metrics": {
21
+ "n": 50.0,
22
+ "positive_rate": 0.36,
23
+ "accuracy": 0.82,
24
+ "precision": 0.68,
25
+ "recall": 0.9444444444444444,
26
+ "specificity": 0.75,
27
+ "f1": 0.7906976744186047,
28
+ "balanced_accuracy": 0.8472222222222222
29
+ },
30
+ "rank_metrics": {
31
+ "roc_auc": 0.8836805555555556,
32
+ "average_precision": 0.8032331072875449
33
+ },
34
+ "calibration": {
35
+ "brier_score": 0.18652675945328004,
36
+ "ece_10": 0.14931776
37
+ }
38
+ },
39
+ "test": {
40
+ "threshold_metrics": {
41
+ "n": 50.0,
42
+ "positive_rate": 0.4,
43
+ "accuracy": 0.7,
44
+ "precision": 0.5862068965517241,
45
+ "recall": 0.85,
46
+ "specificity": 0.6,
47
+ "f1": 0.6938775510204082,
48
+ "balanced_accuracy": 0.725
49
+ },
50
+ "rank_metrics": {
51
+ "roc_auc": 0.77,
52
+ "average_precision": 0.7083413072873412
53
+ },
54
+ "calibration": {
55
+ "brier_score": 0.20820516360342,
56
+ "ece_10": 0.13791082
57
+ }
58
+ }
59
+ },
60
+ "test_bootstrap_ci_95": {
61
+ "accuracy": {
62
+ "low": 0.58,
63
+ "median": 0.7,
64
+ "high": 0.82,
65
+ "n_boot_valid": 2000.0
66
+ },
67
+ "precision": {
68
+ "low": 0.40625,
69
+ "median": 0.5925925925925926,
70
+ "high": 0.7666666666666667,
71
+ "n_boot_valid": 2000.0
72
+ },
73
+ "recall": {
74
+ "low": 0.6666666666666666,
75
+ "median": 0.8571428571428571,
76
+ "high": 1.0,
77
+ "n_boot_valid": 2000.0
78
+ },
79
+ "specificity": {
80
+ "low": 0.4230769230769231,
81
+ "median": 0.6,
82
+ "high": 0.7812839673913041,
83
+ "n_boot_valid": 2000.0
84
+ },
85
+ "f1": {
86
+ "low": 0.5238095238095238,
87
+ "median": 0.6938775510204083,
88
+ "high": 0.8275862068965517,
89
+ "n_boot_valid": 2000.0
90
+ },
91
+ "balanced_accuracy": {
92
+ "low": 0.6022399475524476,
93
+ "median": 0.7256944444444444,
94
+ "high": 0.8461538461538461,
95
+ "n_boot_valid": 2000.0
96
+ },
97
+ "roc_auc": {
98
+ "low": 0.6217830882352942,
99
+ "median": 0.7727272727272727,
100
+ "high": 0.8961038961038961,
101
+ "n_boot_valid": 2000.0
102
+ },
103
+ "average_precision": {
104
+ "low": 0.4901425018020803,
105
+ "median": 0.7269477209578791,
106
+ "high": 0.8890312652768458,
107
+ "n_boot_valid": 2000.0
108
+ },
109
+ "brier_score": {
110
+ "low": 0.17245735017684147,
111
+ "median": 0.20906492733554,
112
+ "high": 0.24647625554518948,
113
+ "n_boot_valid": 2000.0
114
+ },
115
+ "ece_10": {
116
+ "low": 0.07738553149999998,
117
+ "median": 0.16508797,
118
+ "high": 0.26492573599999997,
119
+ "n_boot_valid": 2000.0
120
+ }
121
+ },
122
+ "subgroup_metrics_test": {
123
+ "true_label_name": [
124
+ {
125
+ "group": "tp53_mutated",
126
+ "n": 20.0,
127
+ "threshold_metrics": {
128
+ "n": 20.0,
129
+ "positive_rate": 1.0,
130
+ "accuracy": 0.85,
131
+ "precision": 1.0,
132
+ "recall": 0.85,
133
+ "specificity": 0.0,
134
+ "f1": 0.9189189189189189,
135
+ "balanced_accuracy": 0.425
136
+ },
137
+ "rank_metrics": {
138
+ "roc_auc": null,
139
+ "average_precision": null
140
+ },
141
+ "calibration": {
142
+ "brier_score": 0.3382333524976999,
143
+ "ece_10": 0.5748137999999999
144
+ }
145
+ },
146
+ {
147
+ "group": "tp53_wildtype",
148
+ "n": 30.0,
149
+ "threshold_metrics": {
150
+ "n": 30.0,
151
+ "positive_rate": 0.0,
152
+ "accuracy": 0.6,
153
+ "precision": 0.0,
154
+ "recall": 0.0,
155
+ "specificity": 0.6,
156
+ "f1": 0.0,
157
+ "balanced_accuracy": 0.3
158
+ },
159
+ "rank_metrics": {
160
+ "roc_auc": null,
161
+ "average_precision": null
162
+ },
163
+ "calibration": {
164
+ "brier_score": 0.12151970434056666,
165
+ "ece_10": 0.3404002333333333
166
+ }
167
+ }
168
+ ],
169
+ "n_tiles_bin": [
170
+ {
171
+ "group": "351-450",
172
+ "n": 20.0,
173
+ "threshold_metrics": {
174
+ "n": 20.0,
175
+ "positive_rate": 1.0,
176
+ "accuracy": 0.85,
177
+ "precision": 1.0,
178
+ "recall": 0.85,
179
+ "specificity": 0.0,
180
+ "f1": 0.9189189189189189,
181
+ "balanced_accuracy": 0.425
182
+ },
183
+ "rank_metrics": {
184
+ "roc_auc": null,
185
+ "average_precision": null
186
+ },
187
+ "calibration": {
188
+ "brier_score": 0.3382333524976999,
189
+ "ece_10": 0.5748137999999999
190
+ }
191
+ },
192
+ {
193
+ "group": "<=350",
194
+ "n": 30.0,
195
+ "threshold_metrics": {
196
+ "n": 30.0,
197
+ "positive_rate": 0.0,
198
+ "accuracy": 0.6,
199
+ "precision": 0.0,
200
+ "recall": 0.0,
201
+ "specificity": 0.6,
202
+ "f1": 0.0,
203
+ "balanced_accuracy": 0.3
204
+ },
205
+ "rank_metrics": {
206
+ "roc_auc": null,
207
+ "average_precision": null
208
+ },
209
+ "calibration": {
210
+ "brier_score": 0.12151970434056666,
211
+ "ece_10": 0.3404002333333333
212
+ }
213
+ }
214
+ ]
215
+ },
216
+ "model_card": {
217
+ "model_name": "TP53 Path Foundation + Logistic Head",
218
+ "model_version": "pathfoundation_tp53_200_platt",
219
+ "cohort": "TCGA-BRCA primary-slide cohort (train100/val50/test50)",
220
+ "intended_use": "Research-only TP53 risk support from WSI; not standalone diagnosis.",
221
+ "limitations": [
222
+ "Retrospective single-cohort benchmark",
223
+ "Threshold locked from validation split"
224
+ ]
225
+ },
226
+ "mdt_handoff_summary": {
227
+ "selected_threshold": 0.338,
228
+ "test_ece_10": 0.13791082,
229
+ "test_recall_ci_low": 0.6666666666666666
230
+ },
231
+ "mdt_handoff_payload_example": {
232
+ "overrides": {
233
+ "diagnosticore": {
234
+ "source_service": "diagnosticore-service",
235
+ "target": "tp53_mutation",
236
+ "tp53_probability": 0.0,
237
+ "threshold": 0.338,
238
+ "predicted_label": "tp53_wildtype",
239
+ "model_version": "pathfoundation_tp53_200_platt",
240
+ "is_confirmed_genomic_test": false,
241
+ "model_card": {
242
+ "model_name": "TP53 Path Foundation + Logistic Head",
243
+ "model_version": "pathfoundation_tp53_200_platt",
244
+ "cohort": "TCGA-BRCA primary-slide cohort (train100/val50/test50)",
245
+ "intended_use": "Research-only TP53 risk support from WSI; not standalone diagnosis.",
246
+ "limitations": [
247
+ "Retrospective single-cohort benchmark",
248
+ "Threshold locked from validation split"
249
+ ]
250
+ },
251
+ "locked_threshold_report": {
252
+ "artifact_type": "tp53_locked_threshold_report_v1",
253
+ "selected_threshold": 0.338,
254
+ "test_ece_10": 0.13791082,
255
+ "test_recall_ci_low": 0.6666666666666666
256
+ },
257
+ "locked_threshold_report_uri": "/Users/faith/Desktop/Voxelomics-offline/backend/diagnosticore-service/output/pathfoundation_tp53_200/tp53_clinical_report_pathfoundation_platt.json"
258
+ }
259
+ }
260
+ }
261
+ }