I/O & Preprocessing
Loading tokenizers
- medtokenizers.load_tokenizer(model_name_or_path, device=None, **kwargs)[source][source]
Load tokenizer from local path or HuggingFace Hub.
Attempts to load as ContinuousTokenizer, DiscreteTokenizer, TiTokTokenizer, and RAETokenizer (in that order). Raises detailed error if all fail.
- Parameters:
- Return type:
Union[ContinuousTokenizer,DiscreteTokenizer,RAETokenizer,TiTokTokenizer]- Returns:
Loaded tokenizer model in inference mode
- Raises:
ValueError – If model cannot be loaded as either tokenizer type. Error message includes details from both loading attempts.
Saving & loading tokens / latents
- medtokenizers.save_indices(indices, save_path, dtype='int16')[source][source]
Save discrete tokenizer indices to disk with efficient storage.
Uses int16 by default which supports vocabulary sizes up to 32,767. For larger vocabularies (unlikely), use int32.
- Parameters:
- Raises:
TypeError – If indices are not integer tensors/arrays
ValueError – If indices are negative or exceed dtype range
- Return type:
Example
>>> indices, _, _ = tokenizer.encode(images) >>> save_indices(indices, "tokens/batch_001")
- medtokenizers.load_indices(load_path, device=None, dtype=torch.int64)[source][source]
Load discrete tokenizer indices from disk.
- Parameters:
- Return type:
- Returns:
Indices tensor ready for tokenizer.decode()
Example
>>> indices = load_indices("tokens/batch_001.npz", device="cuda") >>> images = tokenizer.decode(indices)
- medtokenizers.save_latents(latents, save_path, dtype='float16')[source][source]
Save continuous tokenizer latents to disk with efficient storage.
Uses float16 by default which is sufficient for most latent diffusion applications. Use float32 if full precision is required.
- Parameters:
latents (
Union[Tensor,ndarray]) – Continuous latents from tokenizer.encode() or tokenizer.tokenize()save_path (
Union[str,Path]) – Path to save file (will add .npz suffix)dtype (
Literal['float16','float32'], default:'float16') – Storage dtype - “float16” (default, 2 bytes) or “float32” (4 bytes)
- Return type:
Example
>>> latents, _ = tokenizer.encode(images) >>> save_latents(latents, "latents/batch_001")
- medtokenizers.load_latents(load_path, device=None, dtype=torch.float32)[source][source]
Load continuous tokenizer latents from disk.
- Parameters:
- Return type:
- Returns:
Latents tensor ready for tokenizer.decode()
Example
>>> latents = load_latents("latents/batch_001.npz", device="cuda") >>> images = tokenizer.decode(latents)
Preprocessing
- medtokenizers.preprocess_for_maisi(nifti_path, target_spacing=(1.0, 1.0, 1.0), percentile_lower=0.0, percentile_upper=99.5, divisible_k=4)[source][source]
NVIDIA MAISI-style preprocessing pipeline.
Uses medrs for efficient NIfTI loading.
- Parameters:
target_spacing (
tuple[float,float,float], default:(1.0, 1.0, 1.0)) – Target voxel spacing in mm (default: 1mm^3)percentile_lower (
float, default:0.0) – Lower percentile for normalization (default: 0.0)percentile_upper (
float, default:99.5) – Upper percentile for normalization (default: 99.5)divisible_k (
int, default:4) – Pad to be divisible by k (default: 4)
- Return type:
- Returns:
Preprocessed volume tensor (1, 1, D, H, W), metadata dict
- medtokenizers.postprocess_from_maisi(reconstruction, metadata, denormalize=True)[source][source]
Reverse MAISI preprocessing to get back to original space.
- medtokenizers.percentile_normalize(volume, lower=0.0, upper=99.5, b_min=0.0, b_max=1.0, clip=False)[source][source]
Normalize intensity to percentile range.
- Parameters:
volume (
ndarray) – Input volumelower (
float, default:0.0) – Lower percentile (default: 0.0)upper (
float, default:99.5) – Upper percentile (default: 99.5)b_min (
float, default:0.0) – Output minimum value (default: 0.0)b_max (
float, default:1.0) – Output maximum value (default: 1.0)clip (
bool, default:False) – Whether to clip values outside range (default: False)
- Return type:
- Returns:
Normalized volume, lower_percentile_value, upper_percentile_value
- medtokenizers.resample_to_spacing(volume, src_spacing, tgt_spacing=(1.0, 1.0, 1.0), mode='trilinear')[source][source]
Resample volume to target spacing.
- Parameters:
volume (
Tensor) – Input volume tensor (B, C, D, H, W)src_spacing (
tuple[float,float,float]) – Source voxel spacing (z, y, x)tgt_spacing (
tuple[float,float,float], default:(1.0, 1.0, 1.0)) – Target voxel spacing (z, y, x)mode (
str, default:'trilinear') – Interpolation mode (default: “trilinear”)
- Return type:
- Returns:
Resampled volume tensor