Read PtyRAD Output hdf5#
Created with PtyRAD v1.0.0
Documentation: https://ptyrad.readthedocs.io/en/latest/
PtyRAD paper: https://doi.org/10.1093/mam/ozaf070
PtyRAD arXiv: https://arxiv.org/abs/2505.07814
Zenodo record: https://doi.org/10.5281/zenodo.15273176
Box folder: https://cornell.box.com/s/n5balzf88jixescp9l15ojx7di4xn1uo
Youtube channel: https://www.youtube.com/@ptyrad_official
Before running this notebook, you must first follow the instruction in README.md to:
Create the Python environment with all dependant Python packages like PyTorch
Activate that python environment
Install
ptyradpackage 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.Analyzerclass.
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 parametersoptimizable_tensors— the AD-optimized arrays:obja,objp,probe,probe_pos_shifts,obj_tilts,slice_thicknessparams— a verbatim copy of the PtyRAD params used for this runloss_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()
# Slice thickness evolution — only meaningful for multislice reconstructions (nslice > 1)
analyzer.plot_slice_thickness()
analyzer.plot_dashboard()
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).
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')
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')
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