Every setting lives in config.yaml. Missing keys fall back to the defaults in
R/tabflux_config_helpers.R. The keys dataset.lodo, split, outer: holdout,
execution.kfold / repeats and a top-level smote block are accepted as aliases and
translated with a message.
config.yaml in the repository is the template; config_cfmd_demo.yaml and
config_cfmd_category.yaml are complete, runnable examples. Both cFMD configurations
write to /work/out, a path that exists inside the container; on a workstation set
output.dir to "" (or any writable folder) and input.cfmd.cache_dir to
"input/cfmd_cache".
Read only when tabpfn is picked. A non-empty value here wins over the corresponding
TABPFN_* environment variable; hf_token is the exception, secrets come from the
environment first.
key
meaning
conda_root, env_name
the conda installation and environment holding TabPFN; env_name defaults to tabflux-tabpfn35-gpu
python
an interpreter path; set it instead of env_name to pin Python directly (the container sets it through TABPFN_PYTHON)
model_version
v3.5 (default) or v2.5; the two generations use different fixed settings
hf_token
the Hugging Face token for the v2.5 weights; prefer ~/.Renviron
the global seed; every outer fold is seeded again from it, so a fold depends only on the data and its index
num_threads
cores one learner may use internally; auto = all
num_jobs
parallel R workers for tuning the R learners; auto = one per group when dataset.group is set, evaluation.inner_folds otherwise, never more than num_threads. TabPFN always stays single-process
future_globals_max_gb
the size limit for objects shipped to the workers
term_min
wall-clock tuning cap in minutes, SVM only
tuning_selection
one_se (lowest log-loss within one standard error of the best balanced accuracy) or max_bacc
name the run folder; version also names the wrapper's report file and appears in the report subtitle
target
the metadata column with the class labels
group
the grouping column (site, study, batch, …): samples sharing a value are never split across a fold boundary. "" = random folds. How groups become folds is evaluation.outer
pta
protected attribute for the fairness metrics, binary targets only; must differ from group
tax_level
one level, or a list for the wrapper: asv, phylum, class, order, family, genus, species, SGB
positive_class
the class reported as positive; "" = the minority class, so name it when the classes are balanced
classes below it are dropped before anything is fitted
samples_to_keep, feat_to_keep
fractions kept for quick test runs; 1 = everything
smote, smote_imbalance_threshold
class balancing: "" automatic, "none" off, or a variant. See class balancing
filtering
the cheap filter inside the learner graph; ignored while selecting is on
selecting
wrapper feature selection: information-gain filter, then recursive elimination with the one-standard-error rule
fast_tuning
the cheaper tuners; forced off below 500 samples or 25 features
learner_fallback
run each fit in a separate R process; a fit that errors is replaced by a majority-class stand-in and a warning counts the failures. TabPFN stops instead, and so does any learner whose every tuning evaluation fails
normalization, pseudocount
tss_log (default), tss, tss_clr, none; the constant added before the log
calibration
platt (fitted on out-of-fold predictions, applied to the external set; binary only) or none
fraction reserved as an internal test set before anything learns; 0 = none
outer
how the estimate on the training data is made: cv, repeated_cv, subsampling, loo, lodo; with a grouping column, every strategy keeps whole groups
outer_folds, outer_repeats
fold count and repetitions for the strategies that use them
nested
true: feature selection and tuning repeated inside every outer fold (honest, expensive); false: once on all training data
inner, inner_folds, inner_repeats
the resampling inside the tuning; auto = under a grouping column, leave-one-group-out up to max(inner_folds, 10) groups and k-fold over the groups above that; without one, k-fold or repeated k-fold by data size
prior_correction
true (default): every learner predicts the category with the largest probability divided by that category's frequency in the training rows, the decision that maximises balanced accuracy; probabilities and log-loss are unchanged. false: the largest probability. Not combined with class balancing: an automatic smote stays off, an explicit one stops the run
"" = today; the wrapper fixes one date for a whole batch
dir
where run folders and reports go; "" = the project root. In the container set /work/out (the mounted out/), as the cFMD configs do; left empty, a run with --user stops at once (the image's /work is not writable for you), and one without --user writes inside the container, where --rm deletes the results. Created when missing; relative paths resolve against the project root
report_title, report_author
the HTML report's title and author line; "" = "Predicting <target> from <level>-level profiles", with <id> · run <version> as subtitle, and no author line
TABPFN_CONDA_ROOT, TABPFN_ENV_NAME, TABPFN_PYTHON and TABPFN_MODEL_VERSION are
read only for a runtime.tabpfn field set to "" in the config; a field left out takes
the built-in default (env_nametabflux-tabpfn35-gpu, model_versionv3.5, the
other two empty). The natural place for all of them is ~/.Renviron.