Skip to contents

Scores each row of X independently with the frozen model from fit_dg_fishr, in PURE R (no python). Each query is mapped to the per-sample robust CLR over the frozen feature universe (absent universe features carry the neutral rCLR value 0), embedded by the exported encoder forward, and scored by the frozen linear logit \(w^\top z + b\). Larger = more case-like. No RNG is used at scoring.

Queries with fewer than model$hp$min_features universe features present (a column-overlap floor), or empty positive support over the frozen universe on the (pre-rCLR) aligned abundances (!any(X_use[i, ] > 0)), return the neutral score 0. A FLAT all-equal-positive composition maps to the rCLR origin but is a VALID specimen and is scored normally. The score of a row depends only on that row and the frozen model and is exactly invariant to per-specimen positive scaling.

Usage

score_dg_fishr(model, X, meta = NULL)

Arguments

model

A dg_fishr_model object from fit_dg_fishr.

X

Numeric matrix (samples \(\times\) features) of non-negative abundances with named feature columns.

meta

Optional per-sample metadata. Accepted for interface uniformity and ignored by this method (the transfer aspect is in the fit, not the score).

Value

Plain finite numeric vector of length nrow(X); larger values are more case-like.

References

Rame A, Dancette C, Cord M. (2022) Fishr: Invariant Gradient Variances for Out-of-Distribution Generalization. ICML. arXiv:2109.02934.

Examples

if (FALSE) { # \dontrun{
model <- fit_dg_fishr(X, y, meta_train = meta)
score_dg_fishr(model, X[1, , drop = FALSE])
} # }