Reconstruction Methods and Experiments¶

This section records the implemented baselines and diffusion samplers, the paper/public/LION-physics distinctions, acquisition geometry, schedule exceptions, backward-compatible identifiers, experiment counts, and unconditional-generation design.

Reconstruction methods¶

The matrix contains:

Method

Summary

baseline

Hann-filtered LION FDK baseline.

cp_tv

TV reconstruction using LION’s Chambolle-Pock solver.

pnp_admm

ADMM with conjugate-gradient data updates and DRUNet denoising.

whole_image_diffusion

Whole-image VE-DPS prior.

langevin

Data-consistency updates with patch or whole-image Langevin sampling.

predictor_corrector

VE predictor and Langevin corrector sampling.

ve_ddnm

VE-DDNM approximate-null-space correction.

patch_average

Fixed overlapping patches averaged in overlap regions.

patch_stitch

Fixed overlapping patches written in order, with later patches overwriting overlaps.

padis_dps

Randomly shifted PaDIS patch partitions inside VE-DPS.

New commands, manifests, saved metrics, and output directories use cp_tv. For backward compatibility, the inference and matrix CLIs also accept the old admm_tv alias; hyperparameter selection and verification canonicalise old saved method fields, and figure generation falls back to old admm_tv result directories. The executed solver is Chambolle-Pock, so presentation code labels it CP and tables report sampler CP with prior TV.

Unless stated otherwise, diffusion reconstruction uses 100 geometrically spaced noise levels from sigma_max=10 to sigma_min=0.002, with 10 inner updates per level. The 8-view experiment uses sigma_min=0.003. Predictor-corrector instead performs one predictor and one corrector update for each adjacent noise-level pair. Paper-style and LION-physics VE-DDNM use 1,000 levels and one update per level; Public-compatible VE-DDNM follows the released implementation with 100 levels and 10 inner updates.

Three implementation tracks are used while keeping the LIDC images and LION fan-beam geometry fixed:

Aspect

paper

public_repo

lion_physics

Intent

Follow paper equations and sampler structure.

Follow released helper behaviour.

Use LION-native least-squares physics.

Data update

Paper residual-based rules.

Norm-gradient DPS or public direct-adjoint rules.

Least-squares gradient divided by the composed operator Lipschitz constant.

Schedule

Geometric.

Geometric in the final matrix; literal EDM schedule remains an ablation.

Geometric.

Initialisation

Gaussian for diffusion samplers.

FDK for DPS/fixed-overlap DPS; Gaussian for helper samplers.

Validation-selected by method.

Predictor-corrector

Corrector uses the next sigma and a fresh layout.

Corrector uses the current sigma and reuses the predictor layout.

Paper layout with LION-normalised data steps.

VE-DDNM

Paper 1000 x 1 update layout.

Public 100 x 10 layout.

Paper layout with LION FDK pseudoinverse.

Public compatibility is formula-level because processed LIDC slices do not contain the physical metadata needed to map them rigorously into the public repository’s unitless ODL coordinate system. Public rows therefore use the same LION geometry as every other row and retain calibrated public-matching gradient scales (0.0405 for DPS and 0.1022 for direct-adjoint updates).

The lion_physics track removes those fixed scales. For a composed measurement map F, it normalises diffusion data updates by ||F||_2^2, estimated by power iteration. This is applied only to diffusion data consistency, not to FDK, TV, or PnP-ADMM. All final VE-DDNM rows clip FDK pseudoinverse terms because the unbounded sparse-view fan-beam approximation otherwise becomes non-finite.

Reconstruction experiments¶

Experiment

Views

Angular span

Grid

ct_8

8

360 degrees

256 x 256

ct_20

20

360 degrees

256 x 256

ct_60

60

360 degrees

256 x 256

ct_20_limited_angle_120

20

120 degrees

256 x 256

ct_512_60

60

360 degrees

512 x 512

Every experiment treats each axial slice independently using LION’s 2D tomosipo-based fan-beam operator and a 300 mm by 300 mm in-plane field of view. The detector has 900 bins across 900 mm, the source-to-origin distance is 575 mm, and the source-to-detector distance is 1,050 mm. Measurements are noise-free projections of normalised intensity, not calibrated attenuation. Consequently these experiments isolate angular undersampling and limited coverage; they do not model photon noise, scatter, beam hardening, motion, or cone-beam effects.

New outputs use the descriptive ct_20_limited_angle_120 identifier. The old ct_fanbeam_180 name remains an accepted CLI alias, and verification, tables, and figures can consume existing artefacts bearing that legacy name.

With method_default, paper_matrix, all methods, and all trained ablations, the current manifest contains 109 reconstruction jobs: 65 core rows, 42 ablation rows, and 2 noise-conditioned PnP rows. Standard jobs use test indices 0-24. patch_average, patch_stitch, and all ct_512_60 jobs are capped at indices 0-3 by default.

The gcp_spot order is:

  1. Regular reconstruction rows.

  2. Additional high-view VE-DDNM rows.

  3. Noise-conditioned PnP rows.

  4. Patch averaging, then patch stitching.

  5. Native-resolution 512 rows.

The manual runner inserts unconditional generation after regular rows and before the fixed-overlap/512 tail. Generation uses four samples, seed 33, 300 geometric levels from sigma=10 to 0.002, one inner step per level, and a separately tuned Langevin coefficient and noise scale for each primary prior: whole-image uses (epsilon, gamma)=(0.75, 0.75), randomly shifted PaDIS uses (0.8, 0.85), and fixed patch averaging and stitching use (1, 1). The pipeline also generates naive-patch and 300-evaluation Langevin diagnostic presets needed by appendix figures. Both the GCP generation phase and the cross-platform finaliser execute the authoritative named presets in core/PaDIS_experiments.py; they do not duplicate these hyperparameters. PADIS_GENERATION_EPSILON and PADIS_GENERATION_NOISE_SCALE may be set to apply an explicit global diagnostic override, but are unset by default.