PaDIS.py¶

Source: LION/reconstructors/diffusion/PaDIS.py

PaDIS diffusion-prior reconstructors.

class LION.reconstructors.diffusion.PaDIS.PaDIS(physics, model, parameters=None, algorithm='dps_langevin')[source]¶

Bases: PaDISCitations, PaDISParameters, PaDISPrior, PaDISPhysics, PaDISSampling, PaDISGeneration, AdjointDataConsistency, DPSLangevin, PredictorCorrector, AnnealedLangevin, LIONReconstructor

Patch-aware diffusion inverse solver for CT reconstruction.

The sampler follows the PaDIS reference implementation: a whole-image score is assembled from position-aware denoised patches, then combined with either DPS measurement conditioning or Langevin dynamics with adjoint data steps.

Parameters:
  • physics (Geometry | Operator | None)

  • model (NCSNpp)

  • parameters (LIONParameter | None)

  • algorithm (Literal['dps_langevin', 'dps', 'langevin', 'pc'])

reconstruct_sample(sino, *, algorithm=None, prog_bar=False, generator=None, **kwargs)[source]¶

Reconstruct one image from a channel-first sinogram.

Parameters:
  • sino (torch.Tensor) – Measurement tensor with shape (channels, angles, detector).

  • algorithm ({"dps_langevin", "dps", "langevin", "pc"}, optional) – Per-call algorithm override.

  • prog_bar (bool, optional) – Display outer sampler progress.

  • generator (torch.Generator, optional) – Random generator controlling initialisation, patch offsets, and stochastic sampler updates.

  • **kwargs – Temporary overrides of sampler parameters.

Returns:

Reconstructed image in normalised-intensity units.

Return type:

torch.Tensor

generate_samples(*, num_samples=1, image_shape=None, prog_bar=False, generator=None, **kwargs)[source]¶

Sample images from the PaDIS prior without measurement conditioning.

Parameters:
  • num_samples (int)

  • image_shape (tuple[int, int, int] | None)

  • prog_bar (bool)

  • generator (Generator | None)

Return type:

Tensor

generate_naive_patch_samples(*, num_samples=1, image_shape=None, prog_bar=False, generator=None, **kwargs)[source]¶

Sample patches independently and stitch one partition into each image.

Parameters:
  • num_samples (int)

  • image_shape (tuple[int, int, int] | None)

  • prog_bar (bool)

  • generator (Generator | None)

Return type:

Tensor

initial_reconstruction(measurement, params)[source]¶

Construct the configured unpadded sampler initialization.

Parameters:

measurement (Tensor)

Return type:

Tensor

pseudoinverse_reconstruction(measurement, params, *, clip=None)[source]¶

Compute the pseudoinverse image used by DDNM corrections.

Parameters:
  • measurement (Tensor)

  • clip (bool | None)

Return type:

Tensor

initial_padded_state(measurement, params, generator)[source]¶

Construct the configured padded initial sampler state.

Parameters:
  • measurement (Tensor)

  • generator (Generator | None)

Return type:

Tensor

noise_schedule(params, device)[source]¶

Build the configured descending diffusion-noise schedule.

Parameters:

device (device)

Return type:

Tensor

edm_denoise_batch(image_batch, position_batch, sigma, params, *, use_checkpoint=False)[source]¶

Denoise an image or patch batch using EDM preconditioning.

Parameters:
  • image_batch (Tensor)

  • position_batch (Tensor | None)

  • sigma (Tensor)

  • use_checkpoint (bool)

Return type:

Tensor