Skip to content

v1.3.0

Choose a tag to compare

@mdw771 mdw771 released this 08 Feb 22:11
· 15 commits to main since this release
77072d9

Changes Since v1.2.0

Summary

  • Major additions: multi-process support (esp. LSQML), new constraints (object hard limits, probe support mask), probe power constraint behavior,
    diffraction blur, large-tensor offload.
  • Several fixes in multiprocessing/LSQML and performance/memory improvements.
  • Docs/build/test updates and movie tooling improvements.

Change List (by theme)

Features

  1. Multi-process LSQML reconstruction and supporting infrastructure.
  2. Hard limits constraint on object magnitude/phase.
  3. Probe support constraint with geometric mask (ellipse/rectangle).
  4. Diffraction pattern blur option in forward model.
  5. Large tensor CPU offload/reload helper on Task.
  6. Position affine update flexibility override.
  7. Auto-rescaling of DIP outputs, and half precision support.

Fixes

  1. Multiple multi-GPU/multiprocess sync issues in LSQML and reconstruction hooks.
  2. Correct device assignment for phase unwrap in multiprocessing.
  3. Correct FFT normalization in probe power constraint.
  4. Fix handling of remove_grid_artifacts direction.
  5. Fix multiscan tester circular data handoff.
  6. Logging/tqdm edge fixes.

Performance/Memory

  1. Uniform batch sampler builds/syncs indices on GPU and rank 0 only.
  2. Chunk processing uses expand over repeat.
  3. Replicate tensors on-the-fly to reduce memory.
  4. DDP instead of DataParallel for AD model.

Docs/Build/Test

  1. Added multiprocess docs and task docs, updated index/citations.
  2. Added pytest, uv.lock, python pin; adjusted matplotlib dependency for docs build.
  3. New tests for multiprocess LSQML, object hard limits, probe support, blur, offload.

Movies/IO

  1. Movie functionality extended to record probe positions and settings cleanup.
  2. I/O additions and documentation.

API Changes

  1. Dtypes enum now includes FLOAT16.
    • File: src/ptychi/api/enums.py
  2. New enums: MagPhaseComponents, ProbeSupportMethods.
    • File: src/ptychi/api/enums.py
  3. New object constraint option: ObjectHardLimitsMagnitudePhase and ObjectOptions.hard_limits_magnitude_phase.
    • File: src/ptychi/api/options/base.py
  4. RemoveGridArtifactsOptions adds component (magnitude/phase/both).
    • File: src/ptychi/api/options/base.py
  5. ProbePowerConstraintOptions adds scale_object and clarifies behavior (probe power based on probe itself).
    • File: src/ptychi/api/options/base.py
  6. ProbeSupportConstraintOptions adds fixed support mask options and params.
    • File: src/ptychi/api/options/base.py
  7. PositionAffineTransformConstraintOptions adds override_update_flexibility with validation.
    • File: src/ptychi/api/options/base.py
  8. LBFGS optimizer is now explicitly restricted to Autodiff reconstructors (raises ValueError in multiple option classes).
    • File: src/ptychi/api/options/base.py
  9. ForwardModelOptions adds diffraction_pattern_blur_sigma.
    • File: src/ptychi/api/options/base.py
  10. Task now mixes in multiprocessing and changes behavior in multi-process mode:
    - Device init uses process group, rank-based device selection.
    - run() now has reset_timer_globals arg.
    - get_data() triggers DIP generate() for object/probe.
    - New set_large_tensor_device() helper.
    - Multi-process selects reconstructor via get_multiprocess_reconstructor_by_enum.
    - Files: src/ptychi/api/task.py, src/ptychi/maps.py, src/ptychi/parallel.py
  11. New public class export: MultiprocessLSQMLReconstructor.
    - File: src/ptychi/reconstructors/__init__.py
  12. New type alias Numeric in API types.
    - File: src/ptychi/api/types.py