PathoFMPred builds and applies portable collections of cancer-specific PLS regression and PLS-LDA models from pathology foundation-model slide representations. It links feature and outcome tables by an explicit patient identifier, pools repeated slide rows at patient level, performs nested cross-validation, and fits a final model for each eligible outcome.
The source code is available under the MIT license. The CRAN-oriented source package contains no fitted model collection, atlas registry, slide embedding, or patient-level data. Fitted collections obtained separately are governed by their own terms; the package MIT license does not cover them.
These models provide internally derived TCGA research estimates. They have not been externally validated and are not intended for diagnosis or treatment. Binary scores and reference ranks are not probabilities.
See inst/licenses/MODEL_ACCESS.md for the package
boundary. An optional Prov-GigaPath collection is available as a
separate, checksum-verified GitHub release. TITAN and Giga-SSL fitted
objects are not publicly distributed. Existing collaborators retain
access through the separate private repository.
install.packages("fastPLS", repos = "https://cloud.r-project.org")
remotes::install_github("tkcaccia/PathoFMPred", dependencies = TRUE)PathoFMPred checks the fastPLS version recorded with each fitted model. The current matched-atlas analysis uses fastPLS 0.4. A model built under an older version should not be mixed silently with the refreshed atlas results.
library(PathoFMPred)
model_dir <- file.path(tempdir(), "pathofmpred-models")
fetch_pathofmpred_models("ProvGigaPath", destination = model_dir)
options(PathoFMPred.model_dir = model_dir)
available_pathofm_models("ProvGigaPath", cancer = "COAD")The function downloads the separately licensed, fastPLS 0.4 fitted collection only when called. The release URL and SHA-256 digest are pinned in the package. The collection contains 620 cancer-specific Prov-GigaPath models and aggregate metadata, but no slide embeddings, patient records, or patient-level reference scores. Reference ranks are therefore unavailable from this public collection. Two CHOL objects were fitted under an exploratory exception requiring at least 10 labelled patients for continuous outcomes or 10 patients per binary class. They are excluded from default inference and require an explicit limited-evidence opt-in. The usual eligibility limits were not changed for other cancers. Nothing is downloaded during installation, package loading, checking, or vignette construction. The caller chooses where the verified object is stored. TITAN and Giga-SSL collections require separate authorized access or local construction from the published source tables.
The first three arguments are mandatory. Outcome IDs must be unique. Feature IDs may repeat and are pooled by patient mean or median. The function stops when 100 or fewer unique IDs match and reports unmatched IDs plus missingness for every outcome.
features <- read.csv("slide_features.csv", check.names = FALSE)
outcomes <- read.csv("patient_outcomes.csv", check.names = FALSE)
object <- create_pathofmpred_object(
feature_table = features,
outcome_table = outcomes,
id_column = "patient_id",
aggregation = "mean",
foundation_model = "my_representation",
control = pathofmpred_control(
components = 1:20,
outer_folds = 5,
inner_folds = 5,
repeats = 5,
method = "plssvd",
binary_selection = "AUROC"
),
output_file = file.path(tempdir(), "pathofmpred_my_representation.rds")
)
new_features <- read.csv("new_slide_features.csv", check.names = FALSE)
prediction <- predict_pathofmpred_object(
object = object,
features = new_features,
id_column = "patient_id"
)rsvd_oversample and rsvd_power remain
NULL unless explicitly supplied, so the installed fastPLS
defaults are used.
For a binary outcome encoded with labels other than
0/1 or FALSE/TRUE,
define the event class explicitly. This prevents an alphabetical factor
order from silently reversing the scientific meaning:
object <- create_pathofmpred_object(
features, outcomes, "patient_id",
outcome_types = c(KEAP1 = "binary"),
positive_class = c(KEAP1 = "mutated")
)The package vignette
gives non-running examples for TITAN, Giga-SSL and Prov-GigaPath,
including the official embedding sources, conversion script, patient-ID
linkage and fitting calls. You must acquire each input under its own
terms and prepare a patient-level outcome table from the cited molecular
sources. The function create_pathofmpred_object() accepts
any future slide representation with the same ID and numeric-feature
rules. A newly fitted collection is not necessarily identical to the
atlas reference collection unless its input snapshot, target
definitions, eligibility rules and fitting settings also match.
The CRAN source package does not distribute
pathofmpred_titan.rds. Users may obtain the official TCGA
slide representations from the gated MahmoodLab/TITAN
repository and build their own object with
create_pathofmpred_object(). The vignette documents the
feature conversion and molecular, immune, pathway, aneuploidy, fusion,
and MSI sources. The resulting local object can be applied with
predict_pathofmpred_object(). Locally built TITAN objects
should not be redistributed without permission from the upstream rights
holder.
The access-controlled tkcaccia/PathoFMPred-private
repository contains the project’s research reference objects. Its access
terms are separate from the CRAN package licence.
library(PathoFMPred)
model_dir <- file.path(tempdir(), "pathofmpred-models")
fetch_pathofmpred_models("ProvGigaPath", destination = model_dir)
options(PathoFMPred.model_dir = model_dir)
available_pathofm_models("ProvGigaPath", "COAD")
x <- example_pathofm_features("COAD", "ProvGigaPath")
pred <- predict_pathofm(
cancer = "COAD",
features = x,
foundation_model = "ProvGigaPath",
patient_id = "software_example"
)
pred[, c("endpoint", "outcome_type", "prediction",
"predicted_class", "lda_score")]No model is available in a fresh CRAN installation. To run a fully
local example without any third-party model, use
create_pathofmpred_object() with your own feature and
outcome tables, then predict_pathofmpred_object(). See
vignette("PathoFMPred-workflow") for the workflow and
licensing boundary.