nabu.pipeline.helical.processconfig module

class nabu.pipeline.helical.processconfig.ProcessConfig(conf_fname=None, conf_dict=None, dataset_info=None, create_logger=False)[source]

Bases: ProcessConfig

Initialize a ProcessConfig class.

Parameters:
  • conf_fname (str) – Path to the nabu configuration file. If provided, the parameters conf_dict is ignored.

  • conf_dict (dict) – A dictionary describing the nabu processing steps. If provided, the parameter conf_fname is ignored.

  • dataset_info (DatasetAnalyzer) – A DatasetAnalyzer class instance.

  • checks (bool, optional, default is True) – Whether to perform checks on configuration and datasets (recommended !)

  • remove_unused_radios (bool, optional, default is True) – Whether to remove unused radios, i.e radios present in the dataset, but not explicitly listed in the scan metadata.

  • create_logger (str or bool, optional) – Whether to create a Logger object. Default is False, meaning that the logger object creation is left to the user. If set to True, a Logger object is created, and logs will be written to the file “nabu_dataset_name.log”. If set to a string, a Logger object is created, and the logs will be written to the file specified by this string.

default_nabu_config = {'about': {}, 'dataset': {'binning': {'default': '1', 'help': 'Binning factor in the horizontal dimension when reading the data.\nThe final slices dimensions will be divided by this factor.', 'type': 'advanced', 'validator': <function validator.<locals>.wrapper>}, 'binning_z': {'default': '1', 'help': 'Binning factor in the vertical dimension when reading the data.\nThis results in a lesser number of reconstructed slices.', 'type': 'advanced', 'validator': <function validator.<locals>.wrapper>}, 'darks_flats_dir': {'default': '', 'help': "Path to a directory where XXX_flats.h5 and XXX_darks.h5 are to be found, where 'XXX' denotes the dataset basename. If these files are found, then reduced flats/darks will be loaded from them. Otherwise, reduced flats/darks will be saved to there once computed, either in the .nx directory, or in the output directory. Mind that the HDF5 entry corresponds to the one of the dataset.", 'type': 'optional', 'validator': <function validator.<locals>.wrapper>}, 'exclude_projections': {'default': '', 'help': 'Projection to exclude from the reconstruction. It can be:\n-indices = exclude_projections_indices.txt : Path to a text file with one integer per line. Each corresponding projection INDEX will be ignored.\n-angles = exclude_projections_angles.txt : Path to a text file with angle in DEGREES, one per line. The corresponding angles will be ignored\n-angular_range = [a, b] : ignore angles belonging to angular range [a, b] in degrees, with b included.', 'type': 'advanced', 'validator': <function validator.<locals>.wrapper>}, 'hdf5_entry': {'default': '', 'help': 'Entry in the HDF5 file, if applicable. Default is the first available entry.', 'type': 'advanced', 'validator': <function validator.<locals>.wrapper>}, 'location': {'default': '', 'help': 'Dataset location, either a directory or a HDF5-Nexus file.', 'type': 'required', 'validator': <function validator.<locals>.wrapper>}, 'nexus_version': {'default': '1.0', 'help': 'Nexus version to use when browsing the HDF5 dataset. Default is 1.0.', 'type': 'advanced', 'validator': <function validator.<locals>.wrapper>}, 'overwrite_metadata': {'default': '', 'help': "Which metadata to overwrite, separated by a semicolon, and with units. Example: 'energy = 19 kev; pixel_size = 1.6 um'", 'type': 'advanced', 'validator': <function validator.<locals>.wrapper>}, 'projections_subsampling': {'default': '1', 'help': "Projections subsampling factor: take one projection out of 'projection_subsampling'. The format can be an integer (take 1 projection out of N), or N:M (take 1 projection out of N, start with the projection number M)\nFor example: 2 (or 2:0) to reconstruct from even projections, 2:1 to reconstruct from odd projections.", 'type': 'advanced', 'validator': <function validator.<locals>.wrapper>}}, 'output': {'file_format': {'default': 'hdf5', 'help': 'Output file format. Available are: hdf5, tiff, jp2, edf, vol', 'type': 'optional', 'validator': <function validator.<locals>.wrapper>}, 'file_prefix': {'default': '', 'help': 'File prefix. Optional, by default it is inferred from the scanned dataset.', 'type': 'optional', 'validator': <function validator.<locals>.wrapper>}, 'float_clip_values': {'default': '', 'help': 'Lower and upper bounds to use when converting from float32 to int. Floating point values are clipped to these (min, max) values before being cast to integer.', 'type': 'advanced', 'validator': <function validator.<locals>.wrapper>}, 'jpeg2000_compression_ratio': {'default': '', 'help': 'Compression ratio for Jpeg2000 output.', 'type': 'advanced', 'validator': <function validator.<locals>.wrapper>}, 'location': {'default': '', 'help': 'Directory where the output reconstruction is stored.', 'type': 'required', 'validator': <function validator.<locals>.wrapper>}, 'overwrite_results': {'default': '1', 'help': 'What to do in the case where the output file exists.\nBy default, the output data is never overwritten and the process is interrupted if the file already exists.\nSet this option to 1 if you want to overwrite the output files.', 'type': 'required', 'validator': <function validator.<locals>.wrapper>}, 'tiff_single_file': {'default': '0', 'help': 'Whether to create a single large tiff file for the reconstructed volume.', 'type': 'advanced', 'validator': <function validator.<locals>.wrapper>}}, 'phase': {'ctf_advanced_params': {'default': 'length_scale=1e-5; lim1=1e-5; lim2=0.2; normalize_by_mean=True', 'help': 'Advanced parameters for CTF phase retrieval.', 'type': 'advanced', 'validator': <function validator.<locals>.wrapper>}, 'ctf_geometry': {'default': 'z1_v=None; z1_h=None; detec_pixel_size=None; magnification=True', 'help': 'Geometric parameters for CTF phase retrieval. Length units are in meters.', 'type': 'optional', 'validator': <function validator.<locals>.wrapper>}, 'delta_beta': {'default': '100.0', 'help': 'Single-distance phase retrieval related parameters\n----------------------------\ndelta/beta ratio for the Paganin/CTF method', 'type': 'required', 'validator': <function validator.<locals>.wrapper>}, 'method': {'default': 'none', 'help': 'Phase retrieval method. Available are: Paganin, CTF, None', 'type': 'required', 'validator': <function validator.<locals>.wrapper>}, 'padding_type': {'default': 'edge', 'help': 'Padding type for the filtering step in Paganin/CTF. Available are: mirror, edge, zeros', 'type': 'advanced', 'validator': <function validator.<locals>.wrapper>}, 'unsharp_coeff': {'default': '0', 'help': 'Unsharp mask strength. The unsharped image is equal to\n  UnsharpedImage =  (1 + coeff)*originalPaganinImage - coeff * ConvolvedImage. Setting this coefficient to zero means that no unsharp mask will be applied.', 'type': 'optional', 'validator': <function validator.<locals>.wrapper>}, 'unsharp_method': {'default': 'gaussian', 'help': 'Which type of unsharp mask filter to use. Available values are gaussian, laplacian and imagej. Default is gaussian.', 'type': 'optional', 'validator': <function validator.<locals>.wrapper>}, 'unsharp_sigma': {'default': '0', 'help': 'Standard deviation of the Gaussian filter when applying an unsharp mask\nafter the phase filtering. Disabled if set to 0.', 'type': 'optional', 'validator': <function validator.<locals>.wrapper>}}, 'pipeline': {'resume_from_step': {'default': '', 'help': 'Resume the processing from a previously saved processing step. The corresponding file must exist in the output directory.', 'type': 'optional', 'validator': <function validator.<locals>.wrapper>}, 'save_steps': {'default': '', 'help': "Save intermediate results. This is a list of comma-separated processing steps, for ex: flatfield, phase, sinogram.\nEach step generates a HDF5 file in the form name_file_prefix.hdf5 (ex. 'sinogram_file_prefix.hdf5')", 'type': 'optional', 'validator': <function validator.<locals>.wrapper>}, 'skip_after_flatfield_dump': {'default': '0', 'help': 'When the writing of the flatfielded data is activated, if this option is set, then the phase and reconstruction steps are skipped', 'type': 'optional', 'validator': <function validator.<locals>.wrapper>}, 'steps_file': {'default': '', 'help': 'File where the intermediate processing steps are written. By default it is empty, and intermediate processing steps are written in the same directory as the reconstructions, with a file prefix, ex. sinogram_mydataset.hdf5.', 'type': 'advanced', 'validator': <function validator.<locals>.wrapper>}, 'verbosity': {'default': '2', 'help': 'Level of verbosity of the processing. 0 = terse, 3 = much information.', 'type': 'optional', 'validator': <function validator.<locals>.wrapper>}}, 'postproc': {'histogram_bins': {'default': '1000000', 'help': 'Number of bins for the output histogram. Default is one million. ', 'type': 'advanced', 'validator': <function validator.<locals>.wrapper>}, 'output_histogram': {'default': '0', 'help': 'Whether to compute a histogram of the volume.', 'type': 'optional', 'validator': <function validator.<locals>.wrapper>}}, 'preproc': {'autotilt_options': {'default': '', 'help': "Options for methods computing automatically the detector tilt. The parameters are separated by commas and passed as 'name=value', for example: low_pass=1; high_pass=20. Mind the semicolon separator (;). Use 'value' ('') for values that are strings", 'type': 'advanced', 'validator': <function validator.<locals>.wrapper>}, 'ccd_filter_enabled': {'default': '0', 'help': 'Whether to enable the CCD hotspots correction.', 'type': 'optional', 'validator': <function validator.<locals>.wrapper>}, 'ccd_filter_threshold': {'default': '0.04', 'help': 'If ccd_filter_enabled = 1, a median filter is applied on the 3X3 neighborhood\nof every pixel. If a pixel value exceeds the median value more than this parameter,\nthen the pixel value is replaced with the median value.', 'type': 'optional', 'validator': <function validator.<locals>.wrapper>}, 'detector_distortion_correction': {'default': '', 'help': 'Apply coordinate transformation on the raw data, at the reading stage. Default (empty) is None. Available are: None, identity(for testing the pipeline), map_xz. This latter method requires two URLs being passed by detector_distortion_correction_options: map_x and map_z pointing to two 2D arrays containing the position where each pixel can be interpolated at in the raw data', 'type': 'advanced', 'validator': <function validator.<locals>.wrapper>}, 'detector_distortion_correction_options': {'default': '', 'help': 'Options for detector_distortion_correction. Example, for mapx_xz: \n            detector_distortion_correction_options=map_x="silx:./dm.h5?path=/coords_source_x" ; map_z="silx:./dm.h5?path=/coords_source_z"\n            Mind the semicolon separator (;).\n            ', 'type': 'advanced', 'validator': <function validator.<locals>.wrapper>}, 'dff_sigma': {'default': '', 'help': "Enable high-pass filtering on double flatfield with this value of 'sigma'", 'type': 'advanced', 'validator': <function validator.<locals>.wrapper>}, 'double_flatfield_enabled': {'default': 1, 'help': "Whether to enable the 'double flat-field' filetering for correcting rings artefacts.", 'type': 'optional', 'validator': <function validator.<locals>.wrapper>}, 'flat_distortion_correction_enabled': {'default': '0', 'help': 'Whether to correct for flat distortion. If activated, each radio is correlated with its corresponding flat, in order to determine and correct the flat distortion.', 'type': 'advanced', 'validator': <function validator.<locals>.wrapper>}, 'flat_distortion_params': {'default': "tile_size=100; interpolation_kind='linear'; padding_mode='edge'; correction_spike_threshold=None", 'help': 'Advanced parameters for flat distortion correction', 'type': 'advanced', 'validator': <function validator.<locals>.wrapper>}, 'flatfield': {'default': '1', 'help': 'How to perform flat-field normalization. The parameter value can be:\n - 1 or True: enabled.\n - 0 or False: disabled\n - forced or force-load: perform flatfield regardless of the dataset by attempting to load darks/flats\n - force-compute: perform flatfield, ignore all .h5 files containing already computed darks/flats.', 'type': 'required', 'validator': <function validator.<locals>.wrapper>}, 'log_max_clip': {'default': '10.0', 'help': 'After division by the FF, and before the logarithm, the is clipped to this maximum. Enabled only if take_logarithm=1', 'type': 'advanced', 'validator': <function validator.<locals>.wrapper>}, 'log_min_clip': {'default': '1e-6', 'help': 'After division by the FF, and before the logarithm, the is clipped to this minimum. Enabled only if take_logarithm=1', 'type': 'advanced', 'validator': <function validator.<locals>.wrapper>}, 'normalize_srcurrent': {'default': '1', 'help': 'Whether to normalize frames with Synchrotron Current. This can correct the effect of a beam refill not taken into account by flats.', 'type': 'advanced', 'validator': <function validator.<locals>.wrapper>}, 'processes_file': {'default': '', 'help': "Path tgo the file where some operations should be stored for later use. By default it is 'xxx_nabu_processes.h5'", 'type': 'required', 'validator': <function validator.<locals>.wrapper>}, 'rotate_projections': {'default': '', 'help': 'Whether to rotate each projection image with a certain angle (in degree). By default (empty) no rotation is done.', 'type': 'advanced', 'validator': <function validator.<locals>.wrapper>}, 'rotate_projections_center': {'default': '', 'help': "Center of rotation when 'rotate_projections' is non-empty. By default the center of rotation is the middle of each radio, i.e ((Nx-1)/2.0, (Ny-1)/2.0).", 'type': 'advanced', 'validator': <function validator.<locals>.wrapper>}, 'sino_normalization': {'default': '', 'help': 'Sinogram normalization method. Available methods are: chebyshev, subtraction, division, none. Default is none (no normalization)', 'type': 'advanced', 'validator': <function validator.<locals>.wrapper>}, 'sino_normalization_file': {'default': '', 'help': "Path to the file when sino_normalization is either 'subtraction' or 'division'. To specify the path within a HDF5 file, the syntax is /path/to/file?path=/entry/data", 'type': 'advanced', 'validator': <function validator.<locals>.wrapper>}, 'sino_rings_correction': {'default': '', 'help': 'Sinogram rings removal method. Default (empty) is None. Available are: None, munch, vo, mean-subtraction, mean-division. See also: sino_rings_options', 'type': 'optional', 'validator': <function validator.<locals>.wrapper>}, 'sino_rings_options': {'default': '', 'help': "Options for sinogram rings correction methods. The parameters are separated by commas and passed as 'name=value'. Mind the semicolon separator (;). The default options are the following:\n-For munch: sigma=1.0 ; levels=10 ; padding=False\n-For vo: snr=3.0; la_size=51; sm_size=21; dim=1\n-For mean-subtraction and mean-division: filter_cutoff=(0, 30)", 'type': 'advanced', 'validator': <function validator.<locals>.wrapper>}, 'take_logarithm': {'default': '1', 'help': 'Whether to take logarithm after flat-field and phase retrieval.', 'type': 'required', 'validator': <function validator.<locals>.wrapper>}, 'tilt_correction': {'default': '', 'help': 'Detector tilt correction. Default (empty) means no tilt correction.\nThe following values can be provided for automatic tilt estimation, in this case, the projection images are rotated by the found tilt value:\n - A scalar value: tilt correction angle in degrees\n - 1d-correlation: auto-detect tilt with the 1D correlation method (fastest, but works best for small tilts)\n - fft-polar: auto-detect tilt with polar FFT method (slower, but works well on all ranges of tilts)', 'type': 'advanced', 'validator': <function validator.<locals>.wrapper>}}, 'reconstruction': {'angle_offset': {'default': '0', 'help': 'Use this if you want to obtain a rotated reconstructed slice. The angle is in degrees.', 'type': 'advanced', 'validator': <function validator.<locals>.wrapper>}, 'angles_file': {'default': '', 'help': 'In the case you want to override the angles found in the files metadata. The angles are in degree.', 'type': 'optional', 'validator': <function validator.<locals>.wrapper>}, 'angular_tolerance_steps': {'default': '3.0', 'help': 'the angular tolerance, an angular width expressed in units of an angular step, which is tolerated in the criteria for deciding if a slice is reconstructable or not', 'type': 'advanced', 'validator': <function validator.<locals>.wrapper>}, 'auto_size': {'default': '1', 'help': 'Wether to set automatically start_x end_x start_y end_y ', 'type': 'optional', 'validator': <function validator.<locals>.wrapper>}, 'axis_correction_file': {'default': '', 'help': 'In the case where the axis position is specified for each angle', 'type': 'advanced', 'validator': <function validator.<locals>.wrapper>}, 'axis_to_the_center': {'default': '1', 'help': 'Whether to shift start_x and start_y so to have the axis at the center', 'type': 'optional', 'validator': <function validator.<locals>.wrapper>}, 'centered_axis': {'default': '1', 'help': 'If set to true, the reconstructed region is centered on the rotation axis, i.e the center of the image will be the rotation axis position.', 'type': 'optional', 'validator': <function validator.<locals>.wrapper>}, 'clip_outer_circle': {'default': '0', 'help': 'Whether to set to zero voxels falling outside of the reconstruction region', 'type': 'optional', 'validator': <function validator.<locals>.wrapper>}, 'cor_options': {'default': "side='from_file'", 'help': "Options for methods finding automatically the rotation axis position. The parameters are separated by commas and passed as 'name=value'.\nFor example: low_pass=1; high_pass=20. Mind the semicolon separator (;) and the '' for string values that are strings.\nIf 'side' is set, it is expected to be either:\n - 'from_file' (to pick the value in the NX file.)\n - or an relative CoR position in pixels (if so, it overrides the value in the NX file), \n or any of 'left', 'center', 'right', 'all', 'near'.\n The default value for 'side' is 'from_file'.", 'type': 'advanced', 'validator': <function validator.<locals>.wrapper>}, 'cor_slice': {'default': '', 'help': "Which slice to use for estimating the Center of Rotation (CoR). This parameter can be an integer or 'top', 'middle', 'bottom'.\nIf provided, the CoR will be estimated from the correspondig sinogram, and 'cor_options' can contain the parameter 'subsampling'.", 'type': 'advanced', 'validator': <function validator.<locals>.wrapper>}, 'dx_per_proj': {'default': 0, 'help': ' A positive value means that the rotation axis is going on the rigth. Alternatively the horizontal translations, can be given through an array using the variable x_per_proj_file', 'type': 'optional', 'validator': <function validator.<locals>.wrapper>}, 'dz_per_proj': {'default': 0, 'help': ' A positive DZPERPROJ means that the rotation axis is going up. Alternatively the vertical translations, can be given through an array using the variable z_per_proj_file', 'type': 'optional', 'validator': <function validator.<locals>.wrapper>}, 'enable_halftomo': {'default': '0', 'help': 'nabu-helical applies the same treatment for half-tomo as for full-tomo. Always let this key to zero', 'type': 'advanced', 'validator': <function validator.<locals>.wrapper>}, 'end_x': {'default': '-1', 'help': '', 'type': 'optional', 'validator': <function validator.<locals>.wrapper>}, 'end_y': {'default': '-1', 'help': '', 'type': 'optional', 'validator': <function validator.<locals>.wrapper>}, 'end_z': {'default': '-1', 'help': 'the end slice of the reconstructed range. Numbered going in the direction of the scan and starting with number zero for the first doable slice', 'type': 'optional', 'validator': <function validator.<locals>.wrapper>}, 'end_z_fract': {'default': '0', 'help': ' To determine the reconstructed vertical range: the height in fractional position between first doable slice and last doable slice  above the stage below which slices are reconstructed ', 'type': 'optional', 'validator': <function validator.<locals>.wrapper>}, 'end_z_mm': {'default': '0', 'help': ' To determine the reconstructed vertical range: the height in millimiters above the stage below which slices are reconstructed ', 'type': 'optional', 'validator': <function validator.<locals>.wrapper>}, 'fan_source_distance_meters': {'default': 1000000000.0, 'help': 'For HBP, for the description of the fan geometry, the source to axis distance. Defaults to a large value which implies parallel geometry', 'type': 'optional', 'validator': <function validator.<locals>.wrapper>}, 'fbp_filter_cutoff': {'default': '1.', 'help': 'Cut-off frequency for Fourier filter used in FBP, in normalized units. Default is the Nyquist frequency 1.0', 'type': 'advanced', 'validator': <function validator.<locals>.wrapper>}, 'fbp_filter_type': {'default': 'ramlak', 'help': 'Filter type for FBP method. Available are: none, ramlak, shepp-logan, cosine, hamming, hann, tukey, lanczos, hilbert', 'type': 'advanced', 'validator': <function validator.<locals>.wrapper>}, 'helical_halftomo': {'default': '1', 'help': 'Wether to consider doable slices those which are contributed by an angular span greater or equal to 360, instead of just 180 or more', 'type': 'advanced', 'validator': <function validator.<locals>.wrapper>}, 'iterations': {'default': '200', 'help': '\nParameters for iterative algorithms\n------------------------------------\nNumber of iterations', 'type': 'unsupported', 'validator': <function validator.<locals>.wrapper>}, 'method': {'default': 'FBP', 'help': "Reconstruction method. Possible values: FBP, cone, none. If value is 'none', no reconstruction will be done.", 'type': 'required', 'validator': <function validator.<locals>.wrapper>}, 'optim_algorithm': {'default': 'chambolle-pock', 'help': 'Optimization algorithm for iterative methods', 'type': 'unsupported', 'validator': <function validator.<locals>.wrapper>}, 'padding_type': {'default': 'edges', 'help': 'Padding type for FBP. Available are: zeros, edges', 'type': 'optional', 'validator': <function validator.<locals>.wrapper>}, 'positivity_constraint': {'default': '1', 'help': 'Whether to enforce a positivity constraint in the reconstruction.', 'type': 'unsupported', 'validator': <function validator.<locals>.wrapper>}, 'preconditioning_filter': {'default': '1', 'help': "Whether to enable 'filter preconditioning' for iterative methods", 'type': 'unsupported', 'validator': <function validator.<locals>.wrapper>}, 'redundancy_angle_deg': {'default': '0', 'help': 'Can be 0,180 or 360. If there are dead detector regions (notably scintillator junction (stripes) which need to be complemented at +-360 for local tomo or +- 180 for conventional tomo. This may have an impact on the doable vertical span (you can check it with the --dry-run 1 option)', 'type': 'advanced', 'validator': <function validator.<locals>.wrapper>}, 'rotation_axis_position': {'default': 'sliding-window', 'help': "Rotation axis position. It can be a number or the name of an estimation method (empty value means the middle of the detector).\nThe following methods are available to find automatically the Center of Rotation (CoR):\n - centered : a fast and simple auto-CoR method. It only works when the CoR is not far from the middle of the detector. It does not work for half-tomography.\n - global : a slow but robust auto-CoR.\n - sliding-window : semi-automatically find the CoR with a sliding window. You have to specify on which side the CoR is (left, center, right). Please see the 'cor_options' parameter.\n - growing-window : automatically find the CoR with a sliding-and-growing window. You can tune the option with the parameter 'cor_options'.\n - sino-coarse-to-fine: Estimate CoR from sinogram. Only works for 360 degrees scans.\n - composite-coarse-to-fine: Estimate CoR from composite multi-angle images. Only works for 360 degrees scans.\n - fourier-angles: Estimate CoR from sino based on an angular correlation analysis. You can tune the option with the parameter 'cor_options'.\n - octave-accurate: Legacy from octave accurate COR estimation algorithm. It first estimates the COR with global fourier-based correlation, then refines this estimation with local correlation based on the variance of the difference patches. You can tune the option with the parameter 'cor_options'.", 'type': 'required', 'validator': <function validator.<locals>.wrapper>}, 'sample_detector_dist': {'default': '', 'help': 'In cone-beam geometry, distance (in meters) between the center of the sample and the detector. Default is read from the input dataset.', 'type': 'advanced', 'validator': <function validator.<locals>.wrapper>}, 'source_sample_dist': {'default': '', 'help': 'In cone-beam geometry, distance (in meters) between the X-ray source and the center of the sample. Default is infinity.', 'type': 'advanced', 'validator': <function validator.<locals>.wrapper>}, 'start_x': {'default': '0', 'help': "\nParameters for sub-volume reconstruction. Indices start at 0, and upper bounds are INCLUDED!\n----------------------------------------------------------------\n(x, y) are the dimension of a slice, and (z) is the 'vertical' axis\nBy default, all the volume is reconstructed slice by slice, along the axis 'z'.", 'type': 'optional', 'validator': <function validator.<locals>.wrapper>}, 'start_y': {'default': '0', 'help': '', 'type': 'optional', 'validator': <function validator.<locals>.wrapper>}, 'start_z': {'default': '0', 'help': 'the first slice of the reconstructed range. Numbered going in the direction of the scan and starting with number zero for the first doable slice', 'type': 'optional', 'validator': <function validator.<locals>.wrapper>}, 'start_z_fract': {'default': '0', 'help': ' If  start_z_mm , end_z_mm are seto to zero, then start_z and end_z will be effective unless  end_z_fract  is different from zero. In this latter case the vertical range will be given in terms o the fractional position between the first doable and last doable slices.\nOtherwhise, if start_z_mm and end_z_mm are not zero,  the slices whose height above the sample stage, in millimiters, between start_z_mm and end_z_mm are reconstructed\n', 'type': 'optional', 'validator': <function validator.<locals>.wrapper>}, 'start_z_mm': {'default': '0', 'help': ' If  start_z_mm , end_z_mm are seto to zero, then start_z and end_z will be effective unless  end_z_fract  is different from zero. In this latter case the vertical range will be given in terms o the fractional position between the first doable and last doable slices.\nOtherwhise, if start_z_mm and end_z_mm are not zero,  the slices whose height above the sample stage, in millimiters, between start_z_mm and end_z_mm are reconstructed\n', 'type': 'optional', 'validator': <function validator.<locals>.wrapper>}, 'translation_movements_file': {'default': '', 'help': "A file where each line describes the horizontal and vertical translations of the sample (or detector). The order is 'horizontal, vertical'.", 'type': 'advanced', 'validator': <function validator.<locals>.wrapper>}, 'use_hbp': {'default': '0', 'help': 'Wether to use hbp routine instead of the backprojector from fbp ', 'type': 'optional', 'validator': <function validator.<locals>.wrapper>}, 'weight_tv': {'default': '1.0e-2', 'help': 'Total Variation regularization parameter for iterative methods', 'type': 'unsupported', 'validator': <function validator.<locals>.wrapper>}, 'x_per_proj_file': {'default': '', 'help': 'Alternative to dx_per_proj. A file where each line has one value: horizontal displacements of the axis. There should be as many values as there are projection images.', 'type': 'optional', 'validator': <function validator.<locals>.wrapper>}, 'z_per_proj_file': {'default': '', 'help': 'Alternative to dz_per_proj. A file where each line has one value: vertical displacements of the axis. There should be as many values as there are projection images.', 'type': 'optional', 'validator': <function validator.<locals>.wrapper>}}, 'resources': {'cpu_workers': {'default': '0', 'help': "Number of 'CPU workers' for each GPU worker. It is discouraged to set this number to more than one. A value of -1 means exactly one CPU worker.", 'type': 'unsupported', 'validator': <function validator.<locals>.wrapper>}, 'gpu_id': {'default': '', 'help': "For method = local only. List of GPU IDs to use. This parameter overwrites 'gpus'.\nIf left blank, exactly one GPU will be used, and the best one will be picked.", 'type': 'advanced', 'validator': <function validator.<locals>.wrapper>}, 'gpus': {'default': '1', 'help': 'Number of GPUs to use.', 'type': 'advanced', 'validator': <function validator.<locals>.wrapper>}, 'memory_per_node': {'default': '90%', 'help': 'RAM memory per computing node, either in GB or in percent of the AVAILABLE (!= total) node memory.\nIf several workers share the same node, their combined memory usage will not exceed this number.', 'type': 'unsupported', 'validator': <function validator.<locals>.wrapper>}, 'method': {'default': 'local', 'help': 'Computations distribution method. It can be:\n  - local:  run the computations on the local machine\n  - slurm: run the computations through SLURM\n  - preview: reconstruct the slices/volume as quickly as possible, possibly doing some binning.', 'type': 'required', 'validator': <function validator.<locals>.wrapper>}, 'queue': {'default': 'gpu', 'help': "\nParameters exclusive to the 'slurm' distribution method\n------------------------------------------------------\nName of the SLURM partition ('queue'). Full list is obtained with 'scontrol show partition'", 'type': 'unsupported', 'validator': <function validator.<locals>.wrapper>}, 'threads_per_node': {'default': '100%', 'help': 'Number of threads to allocate on each node, either a number or a percentage of the available threads', 'type': 'unsupported', 'validator': <function validator.<locals>.wrapper>}, 'walltime': {'default': '01:00:00', 'help': 'Time limit for the SLURM resource allocation, in the format Hours:Minutes:Seconds', 'type': 'unsupported', 'validator': <function validator.<locals>.wrapper>}}}
config_renamed_keys = {'flatfield_enabled': {'message': "Option 'flatfield_enabled' has been renamed 'flatfield' in [preproc]", 'new_name': 'flatfield', 'section': 'preproc', 'since': '2021.2.0'}, 'marge': {'message': "Option 'marge' has been renamed 'margin' in [phase]", 'new_name': 'margin', 'section': 'phase', 'since': '2020.2.0'}, 'nabu_config_version': {'message': "Option 'nabu_config_version' was removed.", 'new_name': '', 'new_section': 'about', 'section': 'about', 'since': '2020.3.1'}, 'nabu_version': {'message': "Option 'nabu_config' was removed.", 'new_name': '', 'new_section': 'about', 'section': 'about', 'since': '2021.1.0'}, 'overwrite_results': {'message': "Option 'overwrite_results' was moved from section [about] to section [output]", 'new_name': 'overwrite_results', 'new_section': 'output', 'section': 'about', 'since': '2020.3.0'}, 'verbosity': {'message': "Option 'verbosity' was moved from section [about] to section [pipeline]", 'new_name': 'verbosity', 'new_section': 'pipeline', 'section': 'about', 'since': '2021.1.0'}}