Pluto notebooks · auto-rendered

Examples

Worked examples covering the full BasisSimulator.jl pipeline. Each notebook runs end-to-end against a simulated phantom and renders publication-quality figures. Pluto-rendered, statically embedded — open one to see the full code, prose, and outputs in place.

The Five-Struct API
01EICTFBPGE Apex Elite

The Five-Struct API

Walk the entire BasisSimulator surface — Phantom, Scanner, CTProtocol, SimOptions, ReconOptions — on the GE Revolution Apex Elite, with detected-spectrum water BHC, counts-domain detector noise, and cupping QA.

Open notebook →
XCAT Phantom + Custom Materials
02EICTFBPHybrid IRXCAT

XCAT Phantom + Custom Materials

Load a high-resolution XCAT voxel phantom and assign each region a tissue-specific XrayAttenuation.Material — including a custom iodinated blood mixture built inline. FBP vs Hybrid IR side-by-side.

Open notebook →
Dual-kVp Switching VMI on Gammex 472
03EICTDual-kVpVMIMono+

Dual-kVp Switching VMI on Gammex 472

Fully projection-domain dual-energy pipeline on a GE Apex Elite GSI — joint sinogram SVD denoiser → bowtie-aware Cong material decomposition → FBP → z-median → Mono+ VMI at 40/70/100/140 keV, verified per-rod against XrayAttenuation theory.

Open notebook →
PCCT VMI on Gammex 472
04PCCTNaeotom AlphaVMIMono+

PCCT VMI on Gammex 472

Fully projection-domain photon-counting CT pipeline on a Siemens Naeotom Alpha — 4-bin sim → 4-channel SVD denoiser → bin combine → Cong univariate material decomposition (PCCT-generalized via the effective-spectral-response Φ_k(ε)) → FBP → z-median → Mono+ VMI at 40/70/100/140 keV, verified per-rod against XrayAttenuation theory.

Open notebook →
XCAT UHR → CT Scan: Phantom Grids and the Affine Round-Trip
05EICTXCATAffineResampling

XCAT UHR → CT Scan: Phantom Grids and the Affine Round-Trip

Crop a 0.4 mm UHR XCAT down to a cardiac sub-region (the simulator's memory-efficient equivalent of scanner SFOV), then use phantom_to_world_affine + recon_to_world_affine + resample_to_recon to overlay ground-truth labels onto the HU recon — pixel-perfect, with :nearest / :linear / bring-your-own interpolation.

Open notebook →
CatSim vs BasisSimulator (CPU + GPU) — qualitative + runtime
06EICTCatSimGPUBenchmark

CatSim vs BasisSimulator (CPU + GPU) — qualitative + runtime

Same Gammex 472 phantom (heavily downsampled), same GE Apex Elite scanner, three forward-projection + FDK pipelines: XCIST/CatSim (Python reference), BasisSim CPU, BasisSim GPU. Side-by-side mid-slice mosaic + wallclock table — BasisSim matches the physics and lands well ahead on time.

Open notebook →
QRM-Thorax Pure-Material VMI — Full-Resolution True-Scan Reference
07EICTDual-kVpVMIMono+QRM-Thorax

QRM-Thorax Pure-Material VMI — Full-Resolution True-Scan Reference

Canonical full-fidelity reference: clinical GE Apex Elite acquisition on a body-sized QRM-Thorax phantom (truly 0.2 mm isotropic ground truth, 0.625 mm isotropic recon, 2.5 mm DE collimation, 32 cm FOV) with four pure-material rod inserts — water, lipid, collagen, iodine 5 mg/mL. Z trimmed to the cone-beam usable budget (3 slices) so the high-res forward projector runs in reasonable time. Same dual-kVp pipeline as notebook 03: SVD denoiser → bowtie-aware Cong decomposition → FBP → z-median → Mono+ VMI at 40/70/100/140 keV, verified per-rod against XrayAttenuation theoretical curves.

Open notebook →
QRM-Thorax Pure-Material PCCT — Full-Resolution True-Scan Reference
08PCCTNaeotom AlphaVMIcov-ACNRQRM-Thorax

QRM-Thorax Pure-Material PCCT — Full-Resolution True-Scan Reference

The photon-counting mirror of notebook 07: Siemens Naeotom Alpha PCCT acquisition on the body-sized QRM-Thorax with the same four pure-material rods. Full PCCT physics inside simulate!() (MC-LUT detector response, MC pile-up + correction, scatter + correction) → 4→2 count-domain bin combine → Cong-Φ_k decomposition → FBP → data-adaptive cov-ACNR (the VMI-noise-U killer) → z-median → 2-basis VMI at 40/70/100/140 keV, verified per-rod against XrayAttenuation theory.

Open notebook →
Siemens SOMATOM Force — UFC MC LUT + Dual-Source VMI
09EICTDual-SourceUFC MC LUTSn filterVMI

Siemens SOMATOM Force — UFC MC LUT + Dual-Source VMI

First outing of the second EICT MC-LUT detector: the Siemens UFC (Gd₂O₂S:Pr,Ce) scintillator on the third-generation dual-source Force, with the Gd K-edge fluorescence-escape cliff baked into η(E). One 100 kVp / Sn140 (0.6 mm tin) DE acquisition feeds both readouts — per-tube η-aware BHC recons + Siemens-style mixed image, and a projection-domain Cong → cov-ACNR → VMI chain at 50/70/100/140 keV, verified per-rod against XrayAttenuation theory.

Open notebook →
Titanium Implant — Metal Artifacts from a User-Defined Material
10EICTMetal artifactsCustom materialBeam hardeningFDK

Titanium Implant — Metal Artifacts from a User-Defined Material

Register titanium as a custom XA.Material (pure Ti, 4.54 g/cm³, NIST XCOM cross-sections) and scan two 1.5 cm rods in a water cylinder at 120 kVp. The polychromatic forward model and count-domain noise chain produce the classic metal artifacts by construction — a between-rod beam-hardening dark band and photon-starvation streaks — reconstructed uncorrected with FDK. States the no-MAR scope explicitly.

Open notebook →
Helical Scanning — Narrow Collimation, Long Coverage
11EICTHelicalPitchdd_fastFDK

Helical Scanning — Narrow Collimation, Long Coverage

One new kwarg — pitch — turns any protocol into a spiral scan. A 32 cm z-slab captured with a NARROW 20 mm collimation (pitch 1.0 × 16 rotations, :dd_fast projector, rebinned-WFBP helical recon) vs classic step-and-shoot (8 axial stations at the scanner-max 40 mm collimation), matched exposure, full nb01 correction stack. A z-varying low-Z phantom (helically winding lung rod + tapering adipose cone) and a PlutoUI z-slider show phantom truth against both recons slice by slice — helical holds water flat across the whole slab while the stitched stations show their seams.

Open notebook →