04. Resume Reconstruction#
Description of this walkthrough goes here.
1# Created with PtyRAD 0.1.0b13
2# Documentation: https://ptyrad.readthedocs.io/en/latest/
3# Detailed description for each option: https://ptyrad.readthedocs.io/en/latest/_autosummary/ptyrad.params.html
4
5# Load previous object / probe / positions to resume reconstrucitons
6
7# tBL_WSe2
8
9init_params:
10 # Experimental params
11 probe_kv : 80 # [kV] Acceleration voltage
12 probe_conv_angle : 24.9 # [mrad] Semi-convergence angle for probe-forming aperture
13 probe_aberrations : {'C10': 0} # [Angstrom, degree] Aberration coefficients in Krivanel polar notations. C10 = -df, and positive C10 refers to overfocus (stronger lens).
14 meas_Npix : 128 # Detector pixel number, EMPAD is 128. Only supports square detector for simplicity
15 pos_N_scan_slow : 128 # Number of scan position along slow scan direction. Usually it's the vertical direction of acquisition GUI
16 pos_N_scan_fast : 128 # Number of scan position along fast scan direction. Usually it's the horizontal direction of acquisition GUI
17 pos_scan_step_size : 0.4290 # [Angstrom] Step size between probe positions in a rectangular raster scan pattern
18 # Model complexity
19 probe_pmode_max : 6 # Maximum number of mixed probe modes
20 obj_Nlayer : 6 # Number of slices for multislice object
21 obj_slice_thickness : 2 # [Angstrom] Slice thickness (propagation distance) for multislice ptychography. Typical values are between 1 to 20 Ang.
22 # Preprocessing
23 meas_permute : null # Permute meas array with a list of ints to reorder datasets into (N_scans, ky, kx) if needed.
24 meas_reshape : null # Reshape meas array with a list of 3 ints to convert the 4D diffraction dataset (Ry,Rx,ky,kx) into 3D (N_scans,ky,kx) for PtyRAD.
25 meas_flipT : [1,0,0] # Flip meas orientation with a list of 3 binary booleans (0 or 1) as [flipud, fliplr, transpose]
26 pos_scan_affine : null # Affine transformation [scale, asymmetry, rotation, shear] of scan patterns. e.g, [1,0,3,0], rotation and shear are in unit of degree.
27 # Input source and params
28 meas_params : {'path': 'data/tBL_WSe2/Panel_g-h_Themis/scan_x128_y128.raw', 'key': null} # Supports EMPAD .raw, .hdf5, .mat, and .tif
29
30 ## NOTE: Resuming previous reconstructions in PtyRAD is very straight-forward.
31 ## Simply provide the source and path of each component (probe, positions, and object),
32 ## then they will be initialized independently, so users can refine their object while using a fresh probe,
33 ## or use an object from PtychoShelves but pair it with a probe from PtyRAD.
34 ## While PtyRAD will do necessary preprocessing, the sampling (i.e., px size) must be compatible for each loaded component.
35 probe_source : 'PtyRAD' # Data source of the probe. Currently supporting 'simu', 'PtyRAD', 'PtyShv', 'py4DSTEM', and 'custom'
36 probe_params : 'output/walkthrough/01_multi_slice/full_N16384_dp128_flipT100_random32_p6_1obj_6slice_dz2_orblur0.4_ozblur1.0/model_iter0200.hdf5' # Provide a str path of 'path/to/reconstruction_model.hdf5'
37 pos_source : 'PtyRAD' # Data source of the probe positions. Currently supporting 'simu', 'PtyRAD', 'PtyShv', 'py4DSTEM', 'foldslice_hdf5', and 'custom'
38 pos_params : 'output/walkthrough/01_multi_slice/full_N16384_dp128_flipT100_random32_p6_1obj_6slice_dz2_orblur0.4_ozblur1.0/model_iter0200.hdf5' # Provide a str path of 'path/to/reconstruction_model.hdf5'
39 obj_source : 'PtyRAD' # Data source of the object. Currently supporting 'simu', 'PtyRAD', 'PtyShv', 'py4DSTEM', and 'custom'
40 obj_params : 'output/walkthrough/01_multi_slice/full_N16384_dp128_flipT100_random32_p6_1obj_6slice_dz2_orblur0.4_ozblur1.0/model_iter0200.hdf5' # Provide a str path of 'path/to/reconstruction_model.hdf5'
41
42loss_params:
43 loss_single: {'state': true, 'weight': 1.0, 'dp_pow': 0.5} # Amplitude noise model for typical dataset (dose-sufficient) under the maximum-likelihood formalism
44 loss_sparse: {'state': true, 'weight': 0.1, 'ln_order': 1} # L_n norm sparsity regularization calculated for object phase ('objp')
45
46constraint_params:
47 obj_zblur : {'start_iter': 1, 'step': 1, 'end_iter': null, 'obj_type': 'both', 'kernel_size': 5, 'std': 1} # Apply a "z-direction" 1D Gaussian blur to the object.
48 objp_postiv : {'start_iter': 1, 'step': 1, 'end_iter': null, 'relax': 0} # Apply a positivity constraint of the object phase by clipping negative values
49
50recon_params:
51 NITER: 200 # Total number of reconstruction iterations. 1 iteration means a full pass of all selected diffraction patterns.
52 BATCH_SIZE: {'size': 32, 'grad_accumulation': 1} # Number of diffraction patterns processed simultaneously to get the gradient update.
53 SAVE_ITERS: 10 # Number of completed iterations before saving the current reconstruction results (model, probe, object) and summary figures.
54 output_dir: 'output/walkthrough/04_resume_reconstruction/'
55 recon_dir_affixes: ['minimal', 'constraint', 'loss'] # Customizable affixes of reconstruction folder name with presets like 'minimal', 'default', 'all'. See docs for 19 more detailed controls.
56 prefix_time: false # type: boolean, preset strings, and time format strings. Set to true to prepend a date str like '20240903_' in front of the reconstruction folder name
57
58 ## NOTE: PtyRAD generates the output folder name based on reconstruction conditions.
59 ## If resuming the exact same condition, the original result might get overridden.
60 ## In order to keep the full record, it's recommended to slightly postfix the output folder name to prevent colision.
61 ## In this example, the original output folder is "01_multislice/full_N16384_dp128_flipT100_random32_p6_1obj_6slice_dz2/"
62 ## After postfixing the customizable string, the new folder becomes "04_resume_reconstruction/full_N16384_dp128_flipT100_random32_p6_1obj_6slice_dz2_r2/"
63 prefix: '' # Prefix this string to the reconstruction folder name. Note that a "_" will be automatically generated.
64 postfix: 'r2' # Postfix this string to the reconstruction folder name. Note that a "_" will be automatically generated.