-
Notifications
You must be signed in to change notification settings - Fork 1
PHANTOM User Manual
PHANTOM is a collection of reference-grade computational human phantom libraries developed by physicists at the National Cancer Institute (NCI) in collaboration with external partners. These phantoms are designed to support population-based radiation dose estimation, benchmarking, and research or regulatory-facing analyses, and serve as the anatomical foundation for NCI dose tools (NCICT, NCINM, and NCIRF).
The PHANTOM libraries represent reference and body size–dependent pediatric, adult, and pregnant populations and are intended for Monte Carlo–based radiation transport simulations, rather than patient-specific clinical modeling.
Intended use
PHANTOM libraries are intended for reference dosimetry and computational research.
They are not intended for patient-specific clinical treatment planning or site-customized anatomical modeling.
The PHANTOM libraries currently available are summarized below.
A cross mark (×) indicates availability in the current release folder. Archived
indicates legacy files retained in the _archive folder.
| File format | UF/NCI reference size phantoms | UF/NCI body size-dependent phantoms1 | ICRP reference phantoms | UF/NCI pregnant women phantoms |
|---|---|---|---|---|
| Number of phantoms | 12 | 362 | 12 | 8 |
| Arms2 | w and w/o | w and w/o | w and w/o | w and w/o |
| Binary voxel (legacy) | Archived | Archived | Available from ICRP 110 and 143 | Archived |
NIfTI (.nii.gz) |
× | × | × | |
| DICOMRT3 | × | × | × | × |
| MC input available | MCNP (w arms) | Geant4 (w/o arms) | ||
| Reference | Lee 2010 | Geyer 2014 | ICRP 110, ICRP 143 | Maynard 2014 |
1 The reference-size, body size–dependent, and pregnant woman phantom
libraries are available in compressed NIfTI (.nii.gz) format. Legacy binary voxel
files have been moved to the _archive folder for compatibility with existing
Monte Carlo workflows.
2 Phantoms with the arms removed are intended for imaging geometries in which the patient’s arms are raised.
3 DICOMRT files are available only for phantoms with the arms removed.
DICOM-CT and DICOM-structure files can be directly imported into Treatment Planning
Systems (TPS).
Recommended citation for DICOMRT files: Griffin 2019
The file _mastertable_ref&size.xlsx contains anatomical and material data required for Monte Carlo radiation transport simulations. The file includes the following tabs:
-
about Contents of this master table
-
summary_arm
Organ voxel tags, organ names, and material card identifiers for UF/NCI phantoms with arms attached -
density_reference
Organ and tissue density for the reference size phantoms -
material
Material identifiers, material types, elemental compositions, and mass fractions -
dose response function
Photon dose response functions (absorbed dose per unit fluence) for active marrow and endosteum -
marrow_fraction
Fractions of active marrow and endosteum assigned to individual skeletal sites
These tables ensure consistent, reproducible mapping between voxelized anatomy, material definitions, and dosimetric response functions across NCI dose tools.
Monte Carlo input files are available under the mc-input folder in the PHANTOM download directory. These files are code-specific resources for selected legacy and reference workflows.
The current release includes:
-
mc-input/mcnp-nci-reference-arm/ MCNP input decks for the NCI reference-size phantoms with arms. This folder contains 12 numbered input files (
01–12) and 12 corresponding lattice files (*.lat). -
mc-input/geant4-icrp-noarm/ Geant4 input package for ICRP reference phantoms without arms. This folder contains
Ref_noa_icrp_bin_G4.tar.gz.
These inputs are provided as reference starting points for established Monte Carlo workflows. Users should review and modify local file paths, source definitions, scoring setup, compiler settings, and code-version assumptions before running simulations.
NIfTI (.nii.gz) is the recommended format for newly downloaded voxel phantom files.
Each file is a gzip-compressed NIfTI image containing the 3D integer voxel-label array
for one phantom. The voxel values correspond to organ or tissue tag numbers used by
the PHANTOM master table.
The current NIfTI release is located under the niigz folder in the PHANTOM download directory and includes the following folders:
Reference-size phantoms:
- niigz/nci_reference_arm_highres
Body size–dependent phantoms:
- niigz/nci_size_arm_highres
- niigz/nci_size_arm_lowres
- niigz/nci_size_armless_highres
- niigz/nci_size_armless_lowres
Pregnant woman phantoms:
- niigz/nci_pregnant_arm_highres
Legacy binary voxel files have been moved to the _archive folder. This change was made for several reasons:
- NIfTI is a standard medical-imaging format that can be opened directly by common tools such as 3D Slicer, ImageJ/Fiji, ITK-SNAP, MATLAB, and Python packages.
- NIfTI headers store image dimensions, voxel spacing, data type, and orientation information, while raw binary files require separate metadata to be interpreted correctly.
- Compressed NIfTI files are smaller and easier to transfer than the corresponding raw binary voxel files.
- In previous releases, the raw binary file size was too large to practically release
the full high-resolution NCI body size–dependent phantom library (n = 362) via
Google Drive. The compressed
.nii.gzformat makes this high-resolution release practical while preserving the integer organ-label voxel data.
Each NIfTI file stores:
-
3D voxel-label data The image array contains integer organ or tissue labels. A voxel value should be interpreted as a label ID, not as CT number, attenuation, or density.
-
Image dimensions The number of voxels along each image axis is stored in the NIfTI header.
-
Voxel spacing The physical voxel size is stored in the NIfTI header and can be read by standard NIfTI-compatible software.
-
Data type The label array is stored as an integer image. When processing the files, preserve the integer labels and avoid interpolation unless a label-preserving method is used.
-
Spatial orientation information NIfTI headers include affine/orientation information used by visualization and image processing software.
The NIfTI file does not replace the master table. Organ names, material assignments, tissue densities, elemental compositions, and marrow or dose-response data should be obtained from _mastertable_ref&size.xlsx.
- Open 3D Slicer.
- Use Add Data or drag the
.nii.gzfile into the Slicer window. - Load the file as a volume. For label-based visualization, set or convert the volume to a label map as needed.
- Use the volume display or segmentation tools to inspect individual label regions.
Because PHANTOM files are label images, avoid smoothing or linear interpolation when resampling. Use nearest-neighbor interpolation for any label-preserving operation.
- Open ImageJ or Fiji.
- Import the
.nii.gzfile using a NIfTI-compatible importer, such as the NIfTI plugin or Bio-Formats importer, depending on the local installation. - Inspect the image stack as a 3D label volume.
- Use thresholding or label-value selection to isolate a specific organ ID.
When using ImageJ/Fiji, keep the image as an integer label image where possible. Some operations may convert the data to floating point; this is acceptable for display but should be avoided for saving label-preserving phantom data.
- Open ITK-SNAP.
- Load the
.nii.gzfile as the main image. - Use the label-inspection tools to identify voxel values and inspect organ regions.
The recommended Python package for reading NIfTI files is nibabel.
import nibabel as nib
import numpy as np
nii_path = "30f165060_armless_highres.nii.gz"
img = nib.load(nii_path)
# Preserve integer labels. Avoid get_fdata() unless floating-point data are desired.
labels = np.asanyarray(img.dataobj)
print("shape:", labels.shape)
print("voxel spacing:", img.header.get_zooms()[:3])
print("data type:", labels.dtype)
print("affine:")
print(img.affine)
organ_id = 125
organ_mask = labels == organ_id
print("organ voxel count:", int(organ_mask.sum()))MATLAB can read NIfTI files with niftiread and inspect header metadata with
niftiinfo.
info = niftiinfo("30f165060_armless_highres.nii.gz");
labels = niftiread(info);
disp(size(labels))
disp(info.PixelDimensions)
disp(class(labels))
organ_id = 125;
organ_mask = labels == organ_id;
nnz(organ_mask)Legacy binary voxel files are retained in the _archive folder for users who need to reproduce previous workflows. These files are raw arrays and do not carry their own metadata. To convert a binary file to NIfTI, the following information must be known from the phantom documentation or master table:
- array dimensions, e.g., number of voxels in x, y, and z
- voxel spacing in physical units
- integer data type, such as
uint16orint32 - byte order
- array storage order and orientation
Example Python conversion:
import nibabel as nib
import numpy as np
binary_path = "phantom.raw"
nii_path = "phantom.nii.gz"
# Replace these values with the dimensions and voxel spacing for the phantom.
shape = (512, 256, 180) # x, y, z
spacing = (1.0, 1.0, 1.0) # mm
dtype = np.dtype("<u2") # little-endian unsigned 16-bit integer
data = np.fromfile(binary_path, dtype=dtype)
data = data.reshape(shape, order="C")
affine = np.diag([spacing[0], spacing[1], spacing[2], 1.0])
img = nib.Nifti1Image(data, affine)
img.header.set_data_dtype(data.dtype)
nib.save(img, nii_path)The shape, spacing, dtype, and array order must match the original binary
phantom. If these values are incorrect, the converted NIfTI file may open but the
anatomical labels can be transposed, flipped, or assigned to the wrong physical
locations.
Some Monte Carlo pipelines may still require raw binary input. A NIfTI label image can be exported back to a raw binary array after confirming the required data type and array order for the target code.
import nibabel as nib
import numpy as np
img = nib.load("phantom.nii.gz")
labels = np.asanyarray(img.dataobj)
# Match the data type expected by the receiving Monte Carlo workflow.
labels = labels.astype(np.uint16, copy=False)
labels.tofile("phantom.raw")After conversion, confirm the voxel count, unique label values, and organ-label mapping against _mastertable_ref&size.xlsx before using the file for dose calculation.
The following enhancements are under active development and may be released in future versions:
- Detailed organ substructure models (e.g., heart, brain)
- Implementation of lymphatic node models in the body size–dependent phantom library