Read PtyRAD Output hdf5#

Before running this notebook, you must first follow the instruction in README.md to:

  1. Create the Python environment with all dependant Python packages like PyTorch

  2. Activate that python environment

  3. Install ptyrad package into your activated Python environement (only need to install once)

Note: This notebook introduces the internal structure of the PtyRAD HDF5 output and demonstrates how to extract and visualize reconstruction results using the ptyrad.analysis.Analyzer class.

Author: Chia-Hao Lee, cl2696@cornell.edu

00. Setup working directory and imports#

import os
import numpy as np
import matplotlib.pyplot as plt
from ptyrad.analysis import Analyzer

# Change this to the ABSOLUTE PATH to the ptyrad/ folder so you can correctly access data/ and params/
work_dir = "/home/cl2696/altas/workspace/ptyrad"

os.chdir(work_dir)
print("Current working dir: ", os.getcwd())
# The printed working dir should be ".../ptyrad/" to locate the example params files easily
Current working dir:  /home/cl2696/altas/workspace/ptyrad

01. Load the output HDF5#

Analyzer accepts a path to an .hdf5 or .h5 file and loads it into a nested Python dict internally. Construction is lightweight — no forward model is rebuilt unless you explicitly call build_model().

model_path = "output/tBL_WSe2/20260606_full_N16384_dp128_flipT100_random32_p6_1obj_6slice_dz2_orblur0.4_ozblur1.0_oposc_sng1.0_spr0.1/model_iter0200.hdf5"

analyzer = Analyzer(model_path)
print(analyzer)
Analyzer(source='output/tBL_WSe2/20260606_full_N16384_dp128_flipT100_random32_p6_1obj_6slice_dz2_orblur0.4_ozblur1.0_oposc_sng1.0_spr0.1/model_iter0200.hdf5', niter=200, obj=(omode=1, nslice=6), probe=(pmode=6, shape=(128, 128)))

01.A Internal structure — it’s just a nested dict#

The HDF5 is loaded as a plain nested Python dict accessible via analyzer.data. Every HDF5 group becomes a nested dict, and every dataset becomes a NumPy array (or scalar / string). You can inspect the full key hierarchy in dotted notation with analyzer.get_keys().

print("Top-level keys:")
for k in analyzer.data.keys():
    print(" ", k)
Top-level keys:
  avg_iter_t
  avg_losses
  avg_tilt_iters
  batch_losses
  convergence_iters
  dz_iters
  indices
  iter_times
  loss_iters
  lr_iters
  model_attributes
  niter
  optim_state_dict
  optimizable_tensors
  output_path
  params
  ptyrad_version
  random_seed
  scheduler_state_dict
# Full dotted-key listing of every array stored in the HDF5
print("\n".join(analyzer.get_keys()))
avg_iter_t
avg_losses.loss_pacbed
avg_losses.loss_poissn
avg_losses.loss_simlar
avg_losses.loss_single
avg_losses.loss_sparse
avg_tilt_iters.niter
avg_tilt_iters.tilt_x
avg_tilt_iters.tilt_y
batch_losses.loss_pacbed
batch_losses.loss_poissn
batch_losses.loss_simlar
batch_losses.loss_single
batch_losses.loss_sparse
convergence_iters.obja_bg
convergence_iters.obja_fg
convergence_iters.objp_bg
convergence_iters.objp_fg
convergence_iters.probe
convergence_iters.probe_pos_shifts
dz_iters
indices
iter_times
loss_iters
lr_iters.niter
lr_iters.obja
lr_iters.objp
lr_iters.probe
lr_iters.probe_pos_shifts
model_attributes.H
model_attributes.N_scan_fast
model_attributes.N_scan_slow
model_attributes.crop_pos
model_attributes.detector_blur_std
model_attributes.dk
model_attributes.dx
model_attributes.lambd
model_attributes.lr_params.obj_tilts
model_attributes.lr_params.obja
model_attributes.lr_params.objp
model_attributes.lr_params.probe
model_attributes.lr_params.probe_pos_shifts
model_attributes.lr_params.slice_thickness
model_attributes.meas_Npix
model_attributes.omode_occu
model_attributes.probe_int_sum
model_attributes.scan_affine
model_attributes.simu_Npix
model_attributes.simu_match_mode
model_attributes.slice_thickness
model_attributes.start_iter.obj_tilts
model_attributes.start_iter.obja
model_attributes.start_iter.objp
model_attributes.start_iter.probe
model_attributes.start_iter.probe_pos_shifts
model_attributes.start_iter.slice_thickness
model_attributes.tilt_obj
niter
optim_state_dict
optimizable_tensors.obj_tilts
optimizable_tensors.obja
optimizable_tensors.objp
optimizable_tensors.probe
optimizable_tensors.probe_pos_shifts
optimizable_tensors.slice_thickness
output_path
params.constraint_params.complex_ratio.alpha1
params.constraint_params.complex_ratio.alpha2
params.constraint_params.complex_ratio.end_iter
params.constraint_params.complex_ratio.obj_type
params.constraint_params.complex_ratio.start_iter
params.constraint_params.complex_ratio.step
params.constraint_params.fix_probe_int.end_iter
params.constraint_params.fix_probe_int.start_iter
params.constraint_params.fix_probe_int.step
params.constraint_params.kr_filter.end_iter
params.constraint_params.kr_filter.obj_type
params.constraint_params.kr_filter.radius
params.constraint_params.kr_filter.start_iter
params.constraint_params.kr_filter.step
params.constraint_params.kr_filter.width
params.constraint_params.kr_thresh.end_iter
params.constraint_params.kr_thresh.obj_type
params.constraint_params.kr_thresh.start_iter
params.constraint_params.kr_thresh.step
params.constraint_params.kr_thresh.thresh
params.constraint_params.kz_filter.alpha
params.constraint_params.kz_filter.beta
params.constraint_params.kz_filter.end_iter
params.constraint_params.kz_filter.obj_type
params.constraint_params.kz_filter.start_iter
params.constraint_params.kz_filter.step
params.constraint_params.mirrored_amp.end_iter
params.constraint_params.mirrored_amp.power
params.constraint_params.mirrored_amp.relax
params.constraint_params.mirrored_amp.scale
params.constraint_params.mirrored_amp.start_iter
params.constraint_params.mirrored_amp.step
params.constraint_params.obj_rblur.end_iter
params.constraint_params.obj_rblur.kernel_size
params.constraint_params.obj_rblur.obj_type
params.constraint_params.obj_rblur.start_iter
params.constraint_params.obj_rblur.std
params.constraint_params.obj_rblur.step
params.constraint_params.obj_z_recenter.end_iter
params.constraint_params.obj_z_recenter.max_shift
params.constraint_params.obj_z_recenter.scale
params.constraint_params.obj_z_recenter.start_iter
params.constraint_params.obj_z_recenter.step
params.constraint_params.obj_z_recenter.thresh
params.constraint_params.obj_zblur.end_iter
params.constraint_params.obj_zblur.kernel_size
params.constraint_params.obj_zblur.obj_type
params.constraint_params.obj_zblur.start_iter
params.constraint_params.obj_zblur.std
params.constraint_params.obj_zblur.step
params.constraint_params.obja_thresh.end_iter
params.constraint_params.obja_thresh.relax
params.constraint_params.obja_thresh.start_iter
params.constraint_params.obja_thresh.step
params.constraint_params.obja_thresh.thresh
params.constraint_params.objp_postiv.end_iter
params.constraint_params.objp_postiv.relax
params.constraint_params.objp_postiv.start_iter
params.constraint_params.objp_postiv.step
params.constraint_params.ortho_pmode.end_iter
params.constraint_params.ortho_pmode.start_iter
params.constraint_params.ortho_pmode.step
params.constraint_params.pos_recenter.end_iter
params.constraint_params.pos_recenter.relax
params.constraint_params.pos_recenter.start_iter
params.constraint_params.pos_recenter.step
params.constraint_params.probe_mask_k.end_iter
params.constraint_params.probe_mask_k.power_thresh
params.constraint_params.probe_mask_k.radius
params.constraint_params.probe_mask_k.start_iter
params.constraint_params.probe_mask_k.step
params.constraint_params.probe_mask_k.width
params.constraint_params.probe_mask_r.end_iter
params.constraint_params.probe_mask_r.order
params.constraint_params.probe_mask_r.power_thresh
params.constraint_params.probe_mask_r.radius
params.constraint_params.probe_mask_r.start_iter
params.constraint_params.probe_mask_r.step
params.constraint_params.probe_mask_r.z_range
params.constraint_params.probe_mask_r.z_steps
params.constraint_params.tilt_smooth.end_iter
params.constraint_params.tilt_smooth.start_iter
params.constraint_params.tilt_smooth.std
params.constraint_params.tilt_smooth.step
params.hypertune_params.append_params
params.hypertune_params.collate_results
params.hypertune_params.error_metric
params.hypertune_params.if_hypertune
params.hypertune_params.n_trials
params.hypertune_params.pruner_params.configs.min_resource
params.hypertune_params.pruner_params.configs.reduction_factor
params.hypertune_params.pruner_params.name
params.hypertune_params.sampler_params.configs.constant_liar
params.hypertune_params.sampler_params.configs.group
params.hypertune_params.sampler_params.configs.multivariate
params.hypertune_params.sampler_params.name
params.hypertune_params.storage_path
params.hypertune_params.study_name
params.hypertune_params.timeout
params.hypertune_params.tune_params.C10.kwargs.high
params.hypertune_params.tune_params.C10.kwargs.low
params.hypertune_params.tune_params.C10.kwargs.step
params.hypertune_params.tune_params.C10.state
params.hypertune_params.tune_params.C10.suggest
params.hypertune_params.tune_params.C12.kwargs.high
params.hypertune_params.tune_params.C12.kwargs.low
params.hypertune_params.tune_params.C12.kwargs.step
params.hypertune_params.tune_params.C12.state
params.hypertune_params.tune_params.C12.suggest
params.hypertune_params.tune_params.C21.kwargs.high
params.hypertune_params.tune_params.C21.kwargs.low
params.hypertune_params.tune_params.C21.kwargs.step
params.hypertune_params.tune_params.C21.state
params.hypertune_params.tune_params.C21.suggest
params.hypertune_params.tune_params.C23.kwargs.high
params.hypertune_params.tune_params.C23.kwargs.low
params.hypertune_params.tune_params.C23.kwargs.step
params.hypertune_params.tune_params.C23.state
params.hypertune_params.tune_params.C23.suggest
params.hypertune_params.tune_params.C30.kwargs.high
params.hypertune_params.tune_params.C30.kwargs.low
params.hypertune_params.tune_params.C30.kwargs.step
params.hypertune_params.tune_params.C30.state
params.hypertune_params.tune_params.C30.suggest
params.hypertune_params.tune_params.C32.kwargs.high
params.hypertune_params.tune_params.C32.kwargs.low
params.hypertune_params.tune_params.C32.kwargs.step
params.hypertune_params.tune_params.C32.state
params.hypertune_params.tune_params.C32.suggest
params.hypertune_params.tune_params.C34.kwargs.high
params.hypertune_params.tune_params.C34.kwargs.low
params.hypertune_params.tune_params.C34.kwargs.step
params.hypertune_params.tune_params.C34.state
params.hypertune_params.tune_params.C34.suggest
params.hypertune_params.tune_params.C41.kwargs.high
params.hypertune_params.tune_params.C41.kwargs.low
params.hypertune_params.tune_params.C41.kwargs.step
params.hypertune_params.tune_params.C41.state
params.hypertune_params.tune_params.C41.suggest
params.hypertune_params.tune_params.C43.kwargs.high
params.hypertune_params.tune_params.C43.kwargs.low
params.hypertune_params.tune_params.C43.kwargs.step
params.hypertune_params.tune_params.C43.state
params.hypertune_params.tune_params.C43.suggest
params.hypertune_params.tune_params.C45.kwargs.high
params.hypertune_params.tune_params.C45.kwargs.low
params.hypertune_params.tune_params.C45.kwargs.step
params.hypertune_params.tune_params.C45.state
params.hypertune_params.tune_params.C45.suggest
params.hypertune_params.tune_params.C50.kwargs.high
params.hypertune_params.tune_params.C50.kwargs.low
params.hypertune_params.tune_params.C50.kwargs.step
params.hypertune_params.tune_params.C50.state
params.hypertune_params.tune_params.C50.suggest
params.hypertune_params.tune_params.C52.kwargs.high
params.hypertune_params.tune_params.C52.kwargs.low
params.hypertune_params.tune_params.C52.kwargs.step
params.hypertune_params.tune_params.C52.state
params.hypertune_params.tune_params.C52.suggest
params.hypertune_params.tune_params.C54.kwargs.high
params.hypertune_params.tune_params.C54.kwargs.low
params.hypertune_params.tune_params.C54.kwargs.step
params.hypertune_params.tune_params.C54.state
params.hypertune_params.tune_params.C54.suggest
params.hypertune_params.tune_params.C56.kwargs.high
params.hypertune_params.tune_params.C56.kwargs.low
params.hypertune_params.tune_params.C56.kwargs.step
params.hypertune_params.tune_params.C56.state
params.hypertune_params.tune_params.C56.suggest
params.hypertune_params.tune_params.Nlayer.kwargs.high
params.hypertune_params.tune_params.Nlayer.kwargs.low
params.hypertune_params.tune_params.Nlayer.kwargs.step
params.hypertune_params.tune_params.Nlayer.state
params.hypertune_params.tune_params.Nlayer.suggest
params.hypertune_params.tune_params.asymmetry.kwargs.high
params.hypertune_params.tune_params.asymmetry.kwargs.low
params.hypertune_params.tune_params.asymmetry.kwargs.step
params.hypertune_params.tune_params.asymmetry.state
params.hypertune_params.tune_params.asymmetry.suggest
params.hypertune_params.tune_params.batch_size.kwargs.high
params.hypertune_params.tune_params.batch_size.kwargs.log
params.hypertune_params.tune_params.batch_size.kwargs.low
params.hypertune_params.tune_params.batch_size.state
params.hypertune_params.tune_params.batch_size.suggest
params.hypertune_params.tune_params.conv_angle.kwargs.high
params.hypertune_params.tune_params.conv_angle.kwargs.low
params.hypertune_params.tune_params.conv_angle.kwargs.step
params.hypertune_params.tune_params.conv_angle.state
params.hypertune_params.tune_params.conv_angle.suggest
params.hypertune_params.tune_params.dx.kwargs.high
params.hypertune_params.tune_params.dx.kwargs.low
params.hypertune_params.tune_params.dx.kwargs.step
params.hypertune_params.tune_params.dx.state
params.hypertune_params.tune_params.dx.suggest
params.hypertune_params.tune_params.dz.kwargs.high
params.hypertune_params.tune_params.dz.kwargs.low
params.hypertune_params.tune_params.dz.kwargs.step
params.hypertune_params.tune_params.dz.state
params.hypertune_params.tune_params.dz.suggest
params.hypertune_params.tune_params.dzlr.kwargs.high
params.hypertune_params.tune_params.dzlr.kwargs.log
params.hypertune_params.tune_params.dzlr.kwargs.low
params.hypertune_params.tune_params.dzlr.state
params.hypertune_params.tune_params.dzlr.suggest
params.hypertune_params.tune_params.oalr.kwargs.high
params.hypertune_params.tune_params.oalr.kwargs.log
params.hypertune_params.tune_params.oalr.kwargs.low
params.hypertune_params.tune_params.oalr.state
params.hypertune_params.tune_params.oalr.suggest
params.hypertune_params.tune_params.oplr.kwargs.high
params.hypertune_params.tune_params.oplr.kwargs.log
params.hypertune_params.tune_params.oplr.kwargs.low
params.hypertune_params.tune_params.oplr.state
params.hypertune_params.tune_params.oplr.suggest
params.hypertune_params.tune_params.optimizer.kwargs.choices
params.hypertune_params.tune_params.optimizer.state
params.hypertune_params.tune_params.optimizer.suggest
params.hypertune_params.tune_params.plr.kwargs.choices
params.hypertune_params.tune_params.plr.state
params.hypertune_params.tune_params.plr.suggest
params.hypertune_params.tune_params.pmode_max.kwargs.high
params.hypertune_params.tune_params.pmode_max.kwargs.low
params.hypertune_params.tune_params.pmode_max.kwargs.step
params.hypertune_params.tune_params.pmode_max.state
params.hypertune_params.tune_params.pmode_max.suggest
params.hypertune_params.tune_params.rotation.kwargs.high
params.hypertune_params.tune_params.rotation.kwargs.low
params.hypertune_params.tune_params.rotation.kwargs.step
params.hypertune_params.tune_params.rotation.state
params.hypertune_params.tune_params.rotation.suggest
params.hypertune_params.tune_params.scale.kwargs.high
params.hypertune_params.tune_params.scale.kwargs.low
params.hypertune_params.tune_params.scale.kwargs.step
params.hypertune_params.tune_params.scale.state
params.hypertune_params.tune_params.scale.suggest
params.hypertune_params.tune_params.shear.kwargs.high
params.hypertune_params.tune_params.shear.kwargs.low
params.hypertune_params.tune_params.shear.kwargs.step
params.hypertune_params.tune_params.shear.state
params.hypertune_params.tune_params.shear.suggest
params.hypertune_params.tune_params.slr.kwargs.high
params.hypertune_params.tune_params.slr.kwargs.log
params.hypertune_params.tune_params.slr.kwargs.low
params.hypertune_params.tune_params.slr.state
params.hypertune_params.tune_params.slr.suggest
params.hypertune_params.tune_params.tilt_x.kwargs.high
params.hypertune_params.tune_params.tilt_x.kwargs.low
params.hypertune_params.tune_params.tilt_x.kwargs.step
params.hypertune_params.tune_params.tilt_x.state
params.hypertune_params.tune_params.tilt_x.suggest
params.hypertune_params.tune_params.tilt_y.kwargs.high
params.hypertune_params.tune_params.tilt_y.kwargs.low
params.hypertune_params.tune_params.tilt_y.kwargs.step
params.hypertune_params.tune_params.tilt_y.state
params.hypertune_params.tune_params.tilt_y.suggest
params.hypertune_params.tune_params.tlr.kwargs.high
params.hypertune_params.tune_params.tlr.kwargs.log
params.hypertune_params.tune_params.tlr.kwargs.low
params.hypertune_params.tune_params.tlr.state
params.hypertune_params.tune_params.tlr.suggest
params.hypertune_params.tune_params.z_shift.kwargs.high
params.hypertune_params.tune_params.z_shift.kwargs.low
params.hypertune_params.tune_params.z_shift.kwargs.step
params.hypertune_params.tune_params.z_shift.state
params.hypertune_params.tune_params.z_shift.suggest
params.hypertune_params.verbosity
params.init_params.beam_kev
params.init_params.meas_Npix
params.init_params.meas_add_detector_blur
params.init_params.meas_add_poisson_noise
params.init_params.meas_add_source_size
params.init_params.meas_calibration.mode
params.init_params.meas_calibration.value
params.init_params.meas_crop
params.init_params.meas_export
params.init_params.meas_flipT
params.init_params.meas_normalization.mode
params.init_params.meas_normalization.value
params.init_params.meas_pad
params.init_params.meas_params.gap
params.init_params.meas_params.key
params.init_params.meas_params.offset
params.init_params.meas_params.path
params.init_params.meas_params.selection
params.init_params.meas_params.shape
params.init_params.meas_params.zarr_kwargs
params.init_params.meas_permute
params.init_params.meas_remove_neg_values.force
params.init_params.meas_remove_neg_values.mode
params.init_params.meas_remove_neg_values.value
params.init_params.meas_resample
params.init_params.meas_reshape
params.init_params.meas_source
params.init_params.obj_Nlayer
params.init_params.obj_omode_init_occu.init_occu
params.init_params.obj_omode_init_occu.occu_type
params.init_params.obj_omode_max
params.init_params.obj_params
params.init_params.obj_slice_thickness
params.init_params.obj_source
params.init_params.obj_z_crop
params.init_params.obj_z_pad
params.init_params.obj_z_resample
params.init_params.pos_N_scan_fast
params.init_params.pos_N_scan_slow
params.init_params.pos_N_scans
params.init_params.pos_params
params.init_params.pos_scan_affine
params.init_params.pos_scan_flipT
params.init_params.pos_scan_rand_std
params.init_params.pos_scan_step_size
params.init_params.pos_source
params.init_params.probe_D_FZP
params.init_params.probe_D_H
params.init_params.probe_Ls
params.init_params.probe_Rn
params.init_params.probe_conv_angle
params.init_params.probe_dRn
params.init_params.probe_illum_type
params.init_params.probe_kv
params.init_params.probe_normalization.mode
params.init_params.probe_normalization.value
params.init_params.probe_params
params.init_params.probe_permute
params.init_params.probe_pmode_init_pows
params.init_params.probe_pmode_max
params.init_params.probe_source
params.init_params.probe_z_shift
params.init_params.random_seed
params.init_params.simu_Npix
params.init_params.simu_match_mode
params.init_params.tilt_params.init_tilts
params.init_params.tilt_params.tilt_type
params.init_params.tilt_source
params.loss_params.loss_pacbed.dp_pow
params.loss_params.loss_pacbed.state
params.loss_params.loss_pacbed.weight
params.loss_params.loss_poissn.dp_pow
params.loss_params.loss_poissn.eps
params.loss_params.loss_poissn.state
params.loss_params.loss_poissn.weight
params.loss_params.loss_simlar.blur_std
params.loss_params.loss_simlar.obj_type
params.loss_params.loss_simlar.scale_factor
params.loss_params.loss_simlar.state
params.loss_params.loss_simlar.weight
params.loss_params.loss_single.dp_pow
params.loss_params.loss_single.state
params.loss_params.loss_single.weight
params.loss_params.loss_sparse.ln_order
params.loss_params.loss_sparse.state
params.loss_params.loss_sparse.weight
params.model_params.detector_blur_std
params.model_params.optimizer_params.load_state
params.model_params.optimizer_params.name
params.model_params.preload_data
params.model_params.scheduler_params
params.model_params.update_params.obj_tilts.lr
params.model_params.update_params.obj_tilts.start_iter
params.model_params.update_params.obja.lr
params.model_params.update_params.obja.start_iter
params.model_params.update_params.objp.lr
params.model_params.update_params.objp.start_iter
params.model_params.update_params.probe.lr
params.model_params.update_params.probe.start_iter
params.model_params.update_params.probe_pos_shifts.lr
params.model_params.update_params.probe_pos_shifts.start_iter
params.model_params.update_params.slice_thickness.lr
params.model_params.update_params.slice_thickness.start_iter
params.params_path
params.recon_params.BATCH_SIZE.grad_accumulation
params.recon_params.BATCH_SIZE.size
params.recon_params.GROUP_MODE
params.recon_params.INDICES_MODE.mode
params.recon_params.INDICES_MODE.subscan_fast
params.recon_params.INDICES_MODE.subscan_slow
params.recon_params.NITER
params.recon_params.SAVE_ITERS
params.recon_params.compiler_configs.backend
params.recon_params.compiler_configs.disable
params.recon_params.compiler_configs.dynamic
params.recon_params.compiler_configs.fullgraph
params.recon_params.compiler_configs.mode
params.recon_params.compiler_configs.options
params.recon_params.convergence_monitor.every_n_iters
params.recon_params.convergence_monitor.percentile_range
params.recon_params.convergence_monitor.tensors
params.recon_params.copy_params
params.recon_params.output_dir
params.recon_params.postfix
params.recon_params.prefix
params.recon_params.prefix_time
params.recon_params.recon_dir_affixes
params.recon_params.result_modes.FOV
params.recon_params.result_modes.bit
params.recon_params.result_modes.obj_dim
params.recon_params.save_result
params.recon_params.selected_figs
ptyrad_version
random_seed
scheduler_state_dict

01.B Key sub-dicts#

  • model_attributes — propagator metadata: real-space pixel size (dx), reciprocal-space pixel size (dk), wavelength (lambd), integer crop positions (crop_pos), and other forward-model parameters

  • optimizable_tensors — the AD-optimized arrays: obja, objp, probe, probe_pos_shifts, obj_tilts, slice_thickness

  • params — a verbatim copy of the PtyRAD params used for this run

  • loss_iters, dz_iters, lr_iters, avg_tilt_iters, convergence_iters — per-iteration training history

print(f'model_attributes:\n  {list(analyzer.model_attrs.keys())}\n')
print(f'optimizable_tensors:\n  {list(analyzer.opt_tensors.keys())}\n')
print(f'params:\n  {list(analyzer.params.keys())}\n')
model_attributes:
  ['H', 'N_scan_fast', 'N_scan_slow', 'crop_pos', 'detector_blur_std', 'dk', 'dx', 'lambd', 'lr_params', 'meas_Npix', 'omode_occu', 'probe_int_sum', 'scan_affine', 'simu_Npix', 'simu_match_mode', 'slice_thickness', 'start_iter', 'tilt_obj']

optimizable_tensors:
  ['obj_tilts', 'obja', 'objp', 'probe', 'probe_pos_shifts', 'slice_thickness']

params:
  ['constraint_params', 'hypertune_params', 'init_params', 'loss_params', 'model_params', 'params_path', 'recon_params']
# Convenient scalar properties derived from model_attributes and optimizable_tensors
print(f"Real-space pixel size  dx    = {analyzer.dx:.4f} Å")
print(f"Probe modes  pmode           = {analyzer.pmode}")
print(f"Object modes omode           = {analyzer.omode}")
print(f"Z-slices     nslice          = {analyzer.nslice}")
print(f"Multislice?                  = {analyzer.is_multislice}")
print(f"Saved at iteration           = {analyzer.niter}")
Real-space pixel size  dx    = 0.1526 Å
Probe modes  pmode           = 6
Object modes omode           = 1
Z-slices     nslice          = 6
Multislice?                  = True
Saved at iteration           = 200

02. Convergence analysis#

Before examining the reconstructed arrays, check the convergence diagnostics. The loss curve shows the total photon-counting loss summed over all scan positions; it should decrease and plateau. For multislice reconstructions, the slice-thickness evolution (dz_iters) shows how individual layer spacings were refined during optimization. The full convergence dashboard combines all monitored quantities in one view.

analyzer.plot_loss()
../_images/31340653f4e69fe27f7ac3724c9ed9a470ff3a3f9b7eeda66f6e895ab4c9f457.png
# Slice thickness evolution — only meaningful for multislice reconstructions (nslice > 1)
analyzer.plot_slice_thickness()
../_images/6313d06e951d145cdd38f96325721decac8eb5779dfd65aac4e0df20882eebcc.png
analyzer.plot_dashboard()
../_images/c7acfe4077e58c0cb33df697cacc09ee5816986fbae75639b431202921cfbc8a.png

03. Reconstructed object#

The object is stored as amplitude (obja) and phase (objp) arrays of shape (omode, Nz, Ny, Nx):

  • omode — number of object modes (usually 1)

  • Nz — number of z-slices (1 for single-slice, >1 for multislice)

  • Ny, Nx — object canvas size, padded beyond the scanned FOV to keep the probe fully inside

Use get_object_amplitude() / get_object_phase() to retrieve the arrays. Pass fov='crop' to automatically clip to the scanned field of view.

obja = analyzer.get_object_amplitude(fov='crop')
objp = analyzer.get_object_phase(fov='crop')
print("Object shape (omode, Nz, Ny, Nx):", obja.shape)
Object shape (omode, Nz, Ny, Nx): (1, 6, 359, 359)
fig, axs = plt.subplots(nrows=1, ncols=2, figsize=(12, 6))
im0 = axs[0].imshow(obja.sum(0).prod(0))
im1 = axs[1].imshow(objp.sum(0).sum(0))
fig.colorbar(im0, shrink=0.6)
fig.colorbar(im1, shrink=0.6)
axs[0].set_title('Object amplitude (omode sum, z product)')
axs[1].set_title('Object phase (omode sum, z sum)')
plt.show()
# Amplitude is multiplicative along depth (transmission product); phase is additive (phase sum).
../_images/e558b9fde28d5113e6502db5b00ede80c098496b810e9c79e0fa24b05abb4e89.png

04. Reconstructed probe#

The probe is stored as a complex-valued real-space wavefunction of shape (pmode, Ny, Nx). Multiple probe modes capture incoherent illumination. plot_probe() can display real-space or Fourier-space amplitude/phase for each mode.

probe = analyzer.get_probe(space='real')
print("Probe shape (pmode, Ny, Nx):", probe.shape)
Probe shape (pmode, Ny, Nx): (6, 128, 128)
analyzer.plot_probe(space='real',    amp_or_phase='amplitude')
analyzer.plot_probe(space='real',    amp_or_phase='phase')
analyzer.plot_probe(space='fourier', amp_or_phase='amplitude')
analyzer.plot_probe(space='fourier', amp_or_phase='phase')
../_images/a0f43981e422199f8d769ff78d35a1f7623663ef98a22b2fe1212796fb5c7596.png ../_images/e61a57c2e5b3d7501642289786320e4c5182b76f609a7e99db155b3e85b82715.png ../_images/10322124a0c9a22e3e75c5ab4c6c6d0dde2e76d2344a340dbe804dcf7a7b6e83.png ../_images/973fa07b5074f4f6dec07489f8edc357bd388251398783d991938f4249cb9546.png

05. Scan positions#

crop_pos contains the integer top-left corners of the probe windows on the object canvas (shape (N, 2)). PtyRAD refines sub-pixel offsets (probe_pos_shifts) during reconstruction. get_probe_positions() combines both and returns probe-center coordinates. You can retrieve positions in object pixels or physical Ångström units.

pos = analyzer.get_probe_positions(fov='crop', target='probe', units='px')
print("Positions shape (N_scan, 2) [y, x]:", pos.shape)
Positions shape (N_scan, 2) [y, x]: (16384, 2)
analyzer.plot_positions(fov='crop', target='probe')
../_images/d6009f4b139793183531bc1059a8bc3ef8762b4403978b0b041e0d942d640b5b.png
from ptyrad.plotting import plot_scan_positions

objp_crop = analyzer.get_object_phase(fov='crop').sum(0).sum(0)
pos_crop  = analyzer.get_probe_positions(fov='crop', target='probe', units='px')
plot_scan_positions(pos_crop, img=objp_crop, offset=(0, 0))
# Scatter points denote probe-center positions overlaid on the cropped object phase
../_images/15f317e68bd5861ff6518f235046f98ff7e7427e561ad952342477ae0f309bd9.png