"Prepare Medical-SAM-Adapter data, checkpoints, and CUDA
Scanned 9/8/2026
Install to Claude Code
npx -y skills add VectorSpaceLab/AREX-Skill --skill data-preparation --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Data Preparation?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/vectorspacelab-data-preparation-ddaa866f)More formats (shields.io, HTML) on the badges page.
---
name: data-preparation
description: "Prepare Medical-SAM-Adapter data, checkpoints, and CUDA
prerequisites, then validate a registered 2D or 3D sample contract before
training or evaluation."
metadata:
disco-role: operating
disable-model-invocation: true
license: GPL 3.0
---
# Data preparation
Use this route when a Medical-SAM-Adapter run has uncertain input files,
registered dataset name, sample shape, prompt metadata, checkpoint, dependency,
or GPU/memory requirements. This route is a read-only preflight: it never
downloads data or weights, edits a dataset, imports the repository to inspect a
sample, or launches training/evaluation.
Start at the [root Medical-SAM-Adapter route](../../SKILL.md) when the user has
not chosen a workflow. After the inputs pass this route, hand model and command
choices to [training](../training/SKILL.md), or hand checkpoint scoring and
metric questions to [evaluation](../evaluation/SKILL.md). Do not use this route
for the standalone detector workflow; that belongs to
[MobileSAMv2 inference](../mobile-inference/SKILL.md).
## Required preflight sequence
1. **Freeze the caller-owned paths.** Record `data_path`, checkpoint paths,
output paths, and the selected CUDA device explicitly. A path is ready only
when the expected file or directory is readable. Do not infer a data root
from a checkpoint filename or from the current working directory.
2. **Choose the exact dispatcher spelling.** The source compares names literally:
`isic`, `decathlon`, `REFUGE`, `LIDC`, `DDTI`, `Brat`, `STARE`, `kits`,
`WBC`, `segrap`, `toothfairy`, `atlas`, `pendal`, and `lnq`. Read
[dataset layouts](references/dataset-layouts.md); changing case changes the
branch or produces an unsupported-dataset path.
3. **Check the adapter layout before opening a loader.** Confirm the required
CSV, image/mask pair, volume, NRRD, NumPy, pickle, or MONAI split files for
one representative case. Missing files, an unmatched stem, or a missing
rater is a data error, not a reason to substitute a different registry name.
4. **Check the runtime gate.** Actual training and evaluation require a
CUDA-capable PyTorch runtime. Verify CUDA availability, the selected device,
one CUDA allocation, `python -m pip check`, and the dependency for the
selected adapter. CPU parsing or metadata validation is diagnostic only; it
does not verify the workflow. See
[checkpoints and environment](references/checkpoints-and-environment.md).
5. **Check checkpoint roles without deserializing untrusted files.**
`-sam_ckpt` is the base SAM-family input for checkpoint-consuming builders;
`-weights` is a saved adapter/resume record. Both must be explicit readable
files and must match the selected network and encoder. Never download a
missing file or treat a basename as compatibility evidence.
6. **Export one sample declaration and validate it.** From the installed skill
root, run the bundled read-only helper:
```bash
python sub-skills/data-preparation/scripts/validate_sample_contract.py \
--sample sample.json --format auto --dataset isic
```
Use `--help` for the JSON/NPZ schema. A nonzero status blocks the run. A zero
status proves only declared fields, ranks, channel/depth relationships,
prompt coordinates, and optional chunk bounds; it does not decode NIfTI/NRRD,
run MONAI transforms, load a checkpoint, or execute CUDA.
7. **Apply dimensional and mask checks.** A per-sample image is `[C,H,W]` for
2D or `[C,H,W,D]` for 3D; `DataLoader` adds `[B,...]` later. The label has
the same rank and corresponding spatial axes. The source permits H/W to be
resized separately to `image_size` and `out_size`, but depth and slice
alignment must never change. Follow [the data contract](references/data-contract.md).
8. **Choose memory controls before launch.** For 2D lower `-b` and
`-image_size`. For MONAI 3D lower `-b`, `-chunk`, `-num_sample`, and
evaluation `-evl_chunk`; keep `-roi_size` compatible with the transformed
in-plane data. Then route to training or evaluation rather than launching
from this skill.
## Sample contract at a glance
A custom dataset item must provide:
```text
{
"image": numeric [C,H,W] or [C,H,W,D],
"label": numeric mask with the same rank and aligned spatial axes,
"p_label": 0/1 prompt label(s),
"pt": [x,y], [N,2], or one [x,y] point per 3D slice,
"image_meta_dict": {"filename_or_obj": "stable-case-name"} # recommended
}
```
The README calls `image_meta_dict` optional, but the current training and
validation loops access `filename_or_obj` while naming visualizations. Include
it for the unmodified core path. `box` and `multi_rater` are optional adapter
fields; the core prompt call passes `boxes=None`, so neither replaces the
required `label`/`pt` contract.
For 2D built-in adapters, images are normally RGB `[3,H,W]`; REFUGE returns two
mask channels in cup-then-disc order. Direct 3D adapters normally return
`[1,H,W,D]` image and mask; the 3D loop generates one prompt per depth slice and
repeats image slices to three channels before SAM. MONAI Decathlon/BTCV data is
loaded channel-first and transformed before the crop/chunk checks. Empty masks
may produce a negative prompt label (`0`) and a fallback point; inspect that
case instead of silently treating it as a valid foreground annotation.
`-multimask_output` is a decoder output/class-count setting, not a way to create
missing labels. The original SAM branch requests multiple masks when its value
is greater than one; EfficientSAM and MobileSAM branches force a single output.
Keep it aligned with label channels and route the model decision to training.
## Scope boundary and limits
This route owns data layouts, exact registry names, custom sample fields,
prompt/mask shape preflight, checkpoint/environment prerequisites, and memory
risk. It does not own optimizer/adaptation internals, metric formulas, or
standalone object-aware detector operation. Concrete failures and source-level
limits are collected in [troubleshooting](references/troubleshooting.md).
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!