Preprocessing Configuration =========================== Preprocessing configuration parameters -------------------------------------- This section documents **preprocessing** configuration (``PreprocessingConfig``). Top-level key ``preprocessing`` holds step blocks; keys must match names registered in ``PreprocessorFactory``; YAML order is execution order. DICOM **sort-only** uses ``habit sort-dicom`` with a separate config; see :doc:`dicom_sort`. Operations: :doc:`../how_to/preprocess`. **Example configuration file:** .. code-block:: yaml data_dir: ./config/preprocessing/files_preprocessing.yaml out_dir: ./preprocessed auto_select_first_file: true preprocessing: dcm2nii: images: [delay2, delay3, delay5] dcm2niix_path: ./dcm2niix.exe compress: true anonymize: false n4_correction: images: [delay2, delay3, delay5] num_fitting_levels: 4 resample: images: [delay2, delay3, delay5] target_spacing: [1.0, 1.0, 1.0] img_mode: bilinear registration: images: [delay2, delay3, delay5] fixed_image: delay2 type_of_transform: SyNRA metric: MI use_mask: false histogram_standardization: images: [delay2, delay3, delay5] target_min: 0.0 target_max: 100.0 zscore_normalization: images: [delay2, delay3, delay5] only_inmask: false clip_values: [-3, 3] adaptive_histogram_equalization: images: [delay2, delay3, delay5] alpha: 0.3 beta: 0.3 radius: 5 save_options: save_intermediate: true intermediate_steps: [dcm2nii, n4_correction, resample] processes: 2 random_state: 42 **Top level (``PreprocessingConfig``)** .. list-table:: :header-rows: 1 :widths: 28 18 54 * - Field - Default - Description * - ``data_dir`` / ``out_dir`` - none (required) - Relative paths are resolved against the directory containing this YAML * - ``preprocessing`` - ``{}`` - Step name → config dict; keys must be registered preprocessor names * - ``processes`` - ``1`` - Must be ``>= 1``; effective parallelism is ``min(config, CPU cores - 2)``, at least 1 * - ``random_state`` - ``42`` - ``numpy.random.seed`` at ``BatchProcessor.run()`` entry * - ``auto_select_first_file`` - ``true`` - Whether to auto-select the first file when multiple files exist in a directory * - ``preprocessing_input_layout`` - ``habit_default`` - Currently only ``habit_default`` directory layout is supported * - ``save_options`` - see table below - Intermediate result persistence options **Preprocessing**: each step shares the common field ``images`` (required, non-empty list). **dcm2nii**: DICOM conversion - ``images``: modality key list (**required**). - ``dcm2niix_path``: executable file or directory; **optional** — if omitted, ``dcm2niix`` is searched on ``PATH``. - Other common options: ``compress``, ``anonymize``, ``filename_format``, ``adjacent_dicoms``, ``ignore_derived``, ``crop_images``, ``generate_json``, ``verbose``, ``batch_mode``, ``merge_slices``, ``single_file_mode``, etc. (see source code). **n4_correction** - ``images`` (required); ``num_fitting_levels`` (default 4); ``num_iterations``; ``convergence_threshold``; ``shrink_factor``; optional ``mask_keys``. **resample** - ``images`` (required); ``target_spacing`` [x,y,z] mm; ``img_mode`` (image interpolation, default ``bilinear``); ``padding_mode``; ``align_corners``. Mask resampling uses nearest neighbor. **registration** - ``images`` (required, must include ``fixed_image``); ``fixed_image`` (required); floating sequences are all keys in ``images`` except ``fixed_image``. **Do not use** YAML field ``moving_images`` (not read by the implementation and may be passed as an extra keyword to ANTs). - ``backend`` (optional): ``ants`` (default), ``simpleitk``, ``elastix`` (calls official elastix / transformix executables; optional ``elastix_path`` / ``transformix_path``); see the ``registration`` field notes on this page. - ``type_of_transform``, ``metric``, ``optimizer``, etc. apply to **ants / simpleitk**; the ``elastix`` backend does not use these keys to drive registration. **All optional values** (ANTS path) are listed in this document; common examples include ``Rigid``, ``Affine``, ``SyN``, ``SyNRA``, etc. - ``use_mask``; optional ``mask_keys``; ``replace_by_fixed_image_mask``. - **elastix-specific** (``elastix`` backend): - ``elastix_parameter_files``: parameter template ``.txt`` files; choose from `LKEB elastix Model Zoo `_ by data type and registration task. - ``elastix_parameter_overrides``: dict overriding parameter values. - ``elastix_path``, ``transformix_path``, ``elastix_threads``. - Additional ANTs-allowed parameters may be passed via extra keys (use with care). **histogram_standardization** - ``images`` (required); ``percentiles``; ``target_min`` / ``target_max``; optional ``mask_key`` (for histogram statistics). **zscore_normalization** - ``images`` (required); ``only_inmask``; ``mask_key`` (when ``only_inmask`` is true, must exist in ``data``, e.g. shared mask key or ``mask_``); ``clip_values``. **adaptive_histogram_equalization** - ``images`` (required); ``alpha``, ``beta`` ∈ [0,1]; ``radius`` as int or (x,y,z). **save_options** (``SaveOptionsConfig``) .. list-table:: :header-rows: 1 :widths: 28 18 54 * - Field - Default - Description * - ``save_intermediate`` - ``false`` - Whether to write intermediate directories * - ``intermediate_steps`` - ``[]`` - When non-empty, only listed steps write intermediate results; **empty list** with ``save_intermediate: true`` writes every step DICOM sort configuration (``habit sort-dicom``) ---------------------------------------------- Field reference moved to :doc:`dicom_sort`. Template: ``config/dicom_sort/config_sort_dicom.yaml``.