{ "format_version": 1, "architecture": "SimpleP2G", "setting": "single-patch", "dataset": "her2st", "panel": "hmhvg", "fold": 0, "seed": 42, "model_config": { "decoder_depth": 12, "num_genes": 200, "hidden_size": 384, "cond_size": 2560, "num_cond_tokens": 4, "num_heads": 6, "loss_name": "gaussian_nll", "dropout": 0.0 }, "input": { "representation": "frozen Virchow2 CLS token concatenated with mean patch tokens", "embedding_dimension": 2560, "image_encoder_weights_included": false }, "output": { "num_genes": 200, "gene_order": "genes.json", "expression_scale": "log2(raw_count + 1)", "returns": [ "expression_mean", "log_variance" ] }, "checkpoint": { "epoch": 21, "weights": "ema", "selection": "highest validation-slide PCC-200; earliest epoch breaks ties" }, "training": { "epochs": 100, "batch_size": 256, "optimizer": { "name": "adamw", "lr": 0.0001, "weight_decay": 0.05, "betas": [ 0.9, 0.999 ] }, "loss": "gaussian_nll", "precision": "fp16", "ema_decay": 0.999, "sampling": "pooled spots" }, "split": { "training_slides": [ "SPA119", "SPA120", "SPA121", "SPA122", "SPA123", "SPA124", "SPA125", "SPA126", "SPA128", "SPA129", "SPA130", "SPA131", "SPA132", "SPA133", "SPA134", "SPA135", "SPA136", "SPA137", "SPA138", "SPA139", "SPA140", "SPA141", "SPA142", "SPA143", "SPA144", "SPA145", "SPA146", "SPA147", "SPA149", "SPA150", "SPA151", "SPA152", "SPA153", "SPA154" ], "validation_slide": "SPA127", "test_slide": "SPA148" }, "validation_metrics": { "PCC10": 0.456390537005097, "PCC50": 0.30044265527694825, "PCC200": 0.15609376481639806, "MSE": 0.7690321803092957, "MAE": 0.6974937915802002 }, "test_metrics": { "PCC10": 0.8710780333678818, "PCC50": 0.822812513630561, "PCC200": 0.70892135019349, "MSE": 0.8401367664337158, "MAE": 0.7023175954818726 } }