Overview

Every exported function, grouped by what you are doing. The same groups in the same order as the engine’s reference, each side showing the ones it has.

Setting up

The engine is Python, installed on first use. These three say where it is, what it found, and which build of PyTorch to ask for.

A specification

One object says what to train, on what data, with what. Built from arguments or from YAML - the same specification either way.

What a model is made of

Losses, metrics, optimisers, callbacks, augmentation, encoders - and the listings that ask the engine what those names are, rather than asking you to remember them.

The data on disk

Splitting by patient rather than by slice, and looking at what is actually there before spending an afternoon training on it.

Training

Fitting, and what the run says while and after it happens - one row per epoch, and a figure of it.

Predicting and scoring

Masks and boxes out, and the numbers that say whether to believe them: over a dataset, per case, per class, per image.

Weights

Published weights, and your own. A registry name carries the commit it was published at, so one name means one set of numbers for good.

Records

What a run wrote down about itself, including the engine version that made it. Reading one needs no Python: a record you cannot read without the thing that wrote it is worth less than one you can.

Looking at the results

A figure is the point. These are the ones you put in a paper.

Masks and volumes

Reading masks, joining them, measuring them and writing them back. Millilitres rather than voxels, and a NIfTI that carries the affine of the scan it was predicted from.

When something is wrong

Every failure arrives as a classed condition, so a script can tell a specification it cannot run from a dataset that is not there. platypus_error catches all of them.