Features Extraction ------------------- In ``MEDiml``, all the subpackages and modules need a specific configuration to be used correctly, so they respectively rely on one single JSON configuration file. This file contains parameters for each step of the workflow (processing, extraction...). For example, `IBSI `__ tests require specific parameters for radiomics extraction for each test. You can check a full example of the file here: `notebooks/ibsi/settings/ `__. This section will walk you through the details on how to set up and use the configuration file. It will be separated to four subdivision: - :ref:`Pre-checks` - :ref:`Processing` - :ref:`Radiomics` - :ref:`Filters` General analysis Parameters ^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. jsonschema:: { "$schema": "http://json-schema.org/draft-04/schema#", "title": "n_batch", "description": "A numerical value that determines the number of batches to be used in parallel computations, set to 0 for serial computation.", "type": "int" } e.g. .. code-block:: JSON { "n_batch" : 8 } .. jsonschema:: { "$schema": "http://json-schema.org/draft-04/schema#", "title": "roi_type_labels", "description": "A list of labels for the regions of interest (ROI) to use in the analysis. The labels must match the names of the corresponding CSV files. For example, if you have a csv file named ``roiNames_GTV.csv``, then the ``roi_type_labels`` msut be ``[\"GTV\"]``.", "type": "List[str]" } e.g. .. code-block:: JSON { "roi_type_labels" : ["GTV"] } .. jsonschema:: { "$schema": "http://json-schema.org/draft-04/schema#", "title": "roi_types", "description": "A list of labels that describe the regions of interest, used to save the analysis results. The labels must accurately reflect the regions analyzed. For instance, if you conduct an analysis of a single ROI in a ``\"GTV\"`` area with two different ROIs (``\"Mass\"`` and ``\"Edema\"``), the label can be ``[\"GTVMassOnly\"]``. This name will be displayed in the JSON results file.", "type": "List[str]" } e.g. .. code-block:: JSON { "roi_types" : ["GTVMassOnly"] } Pre-checks Parameters ^^^^^^^^^^^^^^^^^^^^^ The pre radiomics checks configuration is a set of parameters used by the ``DataManager`` class. These parameters must be set in a nested dictionary as follows: .. code-block:: JSON { "pre_radiomics_checks": {"All parameters go inside this dict"} } .. jsonschema:: { "$schema": "http://json-schema.org/draft-04/schema#", "title": "wildcards_dimensions", "description": "List of wild cards for voxel dimension checks (Read about wildcards `here `__). Checks will be run for every wildcard in the list. For example ``[\"Glioma*.MRscan.npy\", \"STS*.CTscan.npy\"]``", "type": "List[str]" } e.g. .. code-block:: JSON { "pre_radiomics_checks" : { "wildcards_dimensions" : ["Glioma*.MRscan.npy", "STS*.CTscan.npy"], } } .. jsonschema:: { "$schema": "http://json-schema.org/draft-04/schema#", "title": "wildcards_window", "description": "List of wild cards for intensities window checks (Read about wildcards `here `__). Checks will be run for every wildcard in the list. For example ``[\"Glioma*.MRscan.npy\", \"STS*.CTscan.npy\"]``", "type": "List[str]" } e.g. .. code-block:: JSON { "pre_radiomics_checks" : { "wildcards_window" : ["Glioma*.MRscan.npy", "STS*.CTscan.npy"], } } .. jsonschema:: { "$schema": "http://json-schema.org/draft-04/schema#", "title": "path_data", "description": "Path to your data (``MEDscan`` class pickle objects)", "type": "str" } e.g. .. code-block:: JSON { "pre_radiomics_checks" : { "path_data" : "home/user/mediml/data/npy/sts", } } .. jsonschema:: { "$schema": "http://json-schema.org/draft-04/schema#", "title": "path_csv", "description": "Path to your dataset csv file (Read more about the :doc:`../csv_file`)", "type": "str" } e.g. .. code-block:: JSON { "pre_radiomics_checks" : { "path_save_checks" : "home/user/mediml/checks", } } .. jsonschema:: { "$schema": "http://json-schema.org/draft-04/schema#", "title": "path_save_checks", "description": "Path where the pre-checks results will be saved", "type": "str" } e.g. .. code-block:: JSON { "pre_radiomics_checks" : { "path_csv" : "home/user/mediml/data/csv/roiNames_GTV.csv", } } .. note:: initializing the :ref:`pre-radiomics checks settings` is optional and can be done in the ``DataManager`` instance initialization step. Processing Parameters ^^^^^^^^^^^^^^^^^^^^^ Each imaging modality should have its own params dict inside the JSON file and should be organized as follows: .. code-block:: JSON { "imParamMR": {"Processing parameters for MR modality"}, "imParamCT": {"Processing parameters for CT modality"}, "imParamPET": {"Processing parameters for PET modality"} } .. jsonschema:: { "$schema": "http://json-schema.org/draft-04/schema#", "title": "box_string", "description": "Box of the ROI used in the workflow.", "type": "string", "options": { "full": { "description": "Use the full ROI", "type": "string" }, "box": { "description": "Use the smallest box possible", "type": "string" }, "box{n}": { "description": "For example ``box10``, 10 voxels are added in all three dimensions the smallest bounding box. The number after 'box' defines the number of voxels to add.", "type": "string" }, "{n}box": { "description": "For example ``2box``, Will use double the size of the smallest box . The number before 'box' defines the multiplication in size.", "type": "string" } } } e.g. .. code-block:: JSON { "imParamCT" : { "box_string" : "box7", } "imParamMR" : { "box_string" : "box", } "imParamPET" : { "box_string" : "2box", } } .. jsonschema:: { "$schema": "http://json-schema.org/draft-04/schema#", "title": "interp", "description": "Interpolation parameters.", "type": "dict", "options": {"scale_non_text": { "description": "size-3 list of the new voxel size", "type": "List[float]" }, "scale_text": { "description": "Lists of size-3 of the new voxel size for texture features (features will be computed for each list)", "type": "List[List[float]]" }, "vol_interp": { "description": "Volume interpolation method (\"linear\", \"spline\" or \"cubic\")", "type": "string" }, "gl_round": { "description": "This option should be set only for CT scans, set it to 1 to round values to nearest integers (Must be a power of 10)", "type": "float" }, "roi_interp": { "description": "ROI interpolation method (\"nearest\", \"linear\" or \"cubic\")", "type": "string" }, "roi_pv": { "description": "Rounding value for ROI intensities. Must be between 0 and 1.", "type": "float" } } } e.g. .. code-block:: JSON { "imParamMR" : { "interp" : { "scale_non_text" : [1, 1, 1], "scale_text" : [[1, 1, 1]], "vol_interp" : "linear", "gl_round" : [], "roi_interp" : "linear", "roi_pv" : 0.5 } "imParamCT" : { "interp" : { "scale_non_text" : [2, 2, 3], "scale_text" : [[2, 2, 3]], "vol_interp" : "nearest", "gl_round" : 1, "roi_interp" : "nearest", "roi_pv" : 0.5 } "imParamPET" : { "interp" : { "scale_non_text" : [3, 3, 3], "scale_text" : [[3, 3, 3]], "vol_interp" : "spline", "gl_round" : [], "roi_interp" : "spline", "roi_pv" : 0.5 } } } .. jsonschema:: { "$schema": "http://json-schema.org/draft-04/schema#", "title": "reSeg", "description": "Resegmentation parameters.", "type": "dict", "options": { "range": { "description": "Resegmentation range, 2-elements list consists of minimum and maximum intensity value. Use ``\"inf\"`` for infinity", "type": "List" }, "outliers": { "description": "Outlier resegmentation algorithm. For now ``MEDiml`` only implements ``\"Collewet\"`` algorithms. Leave empty for no outlier resegmentation", "type": "string" } } } e.g. .. code-block:: JSON { "imParamMR" : { "reSeg" : { "range" : [0, "inf"], "outliers" : "" } }, "imParamCT" : { "reSeg" : { "range" : [-500, 500], "outliers" : "Collewet" } }, "imParamPET" : { "reSeg" : { "range" : [0, "inf"], "outliers" : "Collewet" } } } .. jsonschema:: { "$schema": "http://json-schema.org/draft-04/schema#", "title": "discretization", "description": "Discretization parameters.", "type": "dict", "options": { "IH": { "description": "Discretization parameters for intensity histogram features", "type": "dict" }, "IVH": { "description": "Discretization parameters for intensity volume histogram features", "type": "dict" }, "texture": { "description": "Discretization parameters for texture features", "type": "dict" } } } - **IH** .. jsonschema:: { "$schema": "http://json-schema.org/draft-04/schema#", "description": "Discretization parameters for intensity histogram features.", "type": "dict", "options": { "type": { "description": "Discretization algorithm: ``\"FBS\"`` for fixed bin size and ``\"FBN\"`` for fixed bin number algorithm. Other possible options: ``\"FBSequal\"`` and ``\"FBNequal\"``", "type": "string" }, "val": { "description": "Bin size or bin number, depending on the algorithm used", "type": "int" } } } - **IVH** .. jsonschema:: { "$schema": "http://json-schema.org/draft-04/schema#", "description": "Discretization parameters for intensity volume histogram features.", "type": "dict", "options": { "type": { "description": "Discretization algorithm: ``\"FBS\"`` for fixed bin size and ``\"FBN\"`` for fixed bin number algorithm", "type": "string" }, "val": { "description": "Bin size or bin number, depending on the algorithm used", "type": "int" } } } - **texture** .. jsonschema:: { "$schema": "http://json-schema.org/draft-04/schema#", "description": "Discretization parameters for texture features.", "type": "dict", "options": { "type": { "description": "List of discretization algorithms: ``\"FBS\"`` for fixed bin size and ``\"FBN\"`` for fixed bin number. Texture features will be computed for each algorithm in the list", "type": "List[string]" }, "val": { "description": "List of bin sizes or bin numbers, depending on the algorithm used. Texture features will be computed for each bin number or bin size in the list", "type": "List[List[int]]" } } } e.g. for CT only (the parameters are the same for MR and PET): .. code-block:: JSON { "imParamCT" : { "discretization" : { "IH" : { "type" : "FBS", "val" : 25 }, "IVH" : { "type" : "FBN", "val" : 10 }, "texture" : { "type" : ["FBS"], "val" : [[25]] } } } } .. jsonschema:: { "$schema": "http://json-schema.org/draft-04/schema#", "title": "compute_suv_map", "description": "Computation of the `suv `__ map for PET scans. Default ``True``", "type": "bool", "options": { "True": { "description": "Will compute suv map for PET scans.", "type": "bool" }, "False": { "description": "Will not compute suv map and it must be computed before.", "type": "bool" } } } This parameter is only used for PET scans and is set as follows: .. code-block:: JSON { "imParamPET" : { "compute_suv_map" : true } } .. note:: This parameter concern PET scans only. ``MEDiml`` only computes suv map for DICOM scans, since the computation relies on DICOM headers for computation and assumes it's already computed for NIfTI scans. .. jsonschema:: { "$schema": "http://json-schema.org/draft-04/schema#", "title": "filter_type", "description": "Name of the filter to use on the scan. Empty string by default.", "type": "string", "options": { "mean": { "description": "Filter images using ``mean`` filter.", "type": "string" }, "log": { "description": "Filter images using ``log`` filter.", "type": "string" }, "gabor": { "description": "Filter images using ``gabor`` filter.", "type": "string" }, "laws": { "description": "Filter images using ``laws`` filter.", "type": "string" }, "wavelet": { "description": "Filter images using ``wavelet`` filter.", "type": "string" } } } e.g. .. code-block:: JSON { "imParamPET" : { "filter_type" : "mean" }, "imParamMR" : { "filter_type" : "laws" }, "imParamCT" : { "filter_type" : "log" } } Extraction Parameters ^^^^^^^^^^^^^^^^^^^^^ Extraction parameters are organized in the same wat as the processing parameters so each imaging modality should have its own parameters and the JSON file should be organized as follows: .. code-block:: JSON { "imParamMR": {"Extraction params for MR modality"}, "imParamCT": {"Extraction params for CT modality"}, "imParamPET": {"Extraction params for PET modality"} } .. jsonschema:: { "$schema": "http://json-schema.org/draft-04/schema#", "description": "glcm features weighting norm. by default ``False``", "title": "glcm dist_correction", "type": "Union[bool, str]", "options": { "manhattan": { "description": "Will use ``\"manhattan\"`` weighting norm.", "type": "string" }, "euclidean": { "description": "Will use ``\"euclidean\"`` weighting norm.", "type": "string" }, "chebyshev": { "description": "Will use ``\"chebyshev\"`` weighting norm.", "type": "string" }, "True": { "description": "Will use discretization length difference corrections as used by the `Institute of Physics and Engineering in Medicine `__.", "type": "bool" }, "False": { "description": "``False`` to replicate IBSI results.", "type": "bool" } } } e.g. .. code-block:: JSON { "imParamMR" : { "glcm" : { "dist_correction" : false } }, "imParamCT" : { "glcm" : { "dist_correction" : "chebyshev" } }, "imParamPET" : { "glcm" : { "dist_correction" : "euclidean" } } } .. jsonschema:: { "$schema": "http://json-schema.org/draft-04/schema#", "description": "glcm features aggregation method. by default ``\"vol_merge\"``", "title": "glcm merge_method", "type": "string", "options": { "vol_merge": { "description": "Features are extracted from a single matrix after merging all 3D directional matrices.", "type": "string" }, "slice_merge": { "description": "Features are extracted from a single matrix after merging 2D directional matrices per slice, and then averaged over slices.", "type": "string" }, "dir_merge": { "description": "Features are extracted from a single matrix after merging 2D directional matrices per direction, and then averaged over direction", "type": "string" }, "average": { "description": "Features are extracted from each 3D directional matrix and averaged over the 3D directions", "type": "string" } } } e.g. .. code-block:: JSON { "imParamMR" : { "glcm" : { "merge_method" : "average" } }, "imParamCT" : { "glcm" : { "merge_method" : "vol_merge" } }, "imParamPET" : { "glcm" : { "merge_method" : "dir_merge" } } } .. jsonschema:: { "$schema": "http://json-schema.org/draft-04/schema#", "description": "glrlm features weighting norm. by default ``False``", "title": "glrlm dist_correction", "type": "Union[bool, str]", "options": { "manhattan": { "description": "Will use ``\"manhattan\"`` weighting norm.", "type": "string" }, "euclidean": { "description": "Will use ``\"euclidean\"`` weighting norm.", "type": "string" }, "chebyshev": { "description": "Will use ``\"chebyshev\"`` weighting norm.", "type": "string" }, "True": { "description": "Will use discretization length difference corrections as used by the `Institute of Physics and Engineering in Medicine `__.", "type": "bool" }, "False": { "description": "``False`` to replicate IBSI results.", "type": "bool" } } } e.g. .. code-block:: JSON { "imParamMR" : { "glrlm" : { "dist_correction" : false } }, "imParamCT" : { "glrlm" : { "dist_correction" : "chebyshev" } }, "imParamPET" : { "glrlm" : { "dist_correction" : "euclidean" } } } .. jsonschema:: { "$schema": "http://json-schema.org/draft-04/schema#", "description": "glrlm features aggregation method. by default ``\"vol_merge\"``", "title": "glrlm merge_method", "type": "string", "options": { "vol_merge": { "description": "Features are extracted from a single matrix after merging all 3D directional matrices.", "type": "string" }, "slice_merge": { "description": "Features are extracted from a single matrix after merging 2D directional matrices per slice, and then averaged over slices.", "type": "string" }, "dir_merge": { "description": "Features are extracted from a single matrix after merging 2D directional matrices per direction, and then averaged over direction", "type": "string" }, "average": { "description": "Features are extracted from each 3D directional matrix and averaged over the 3D directions", "type": "string" } } } e.g. .. code-block:: JSON { "imParamMR" : { "glrlm" : { "merge_method" : "average" } }, "imParamCT" : { "glrlm" : { "merge_method" : "vol_merge" } }, "imParamPET" : { "glrlm" : { "merge_method" : "dir_merge" } } } .. jsonschema:: { "$schema": "http://json-schema.org/draft-04/schema#", "description": "ngtdm features weighting norm. by default ``False``", "title": "ngtdm dist_correction", "type": "bool", "options": { "True": { "description": "Will use discretization length difference corrections as used by the `Institute of Physics and Engineering in Medicine `__.", "type": "bool" }, "False": { "description": "``False`` to replicate IBSI results.", "type": "bool" } } } e.g. .. code-block:: JSON { "imParamMR" : { "ngtdm" : { "dist_correction" : false } }, "imParamCT" : { "ngtdm" : { "dist_correction" : true } }, "imParamPET" : { "ngtdm" : { "dist_correction" : true } } } Filtering parameters ^^^^^^^^^^^^^^^^^^^^ Filtering parameters are organized in a separate dictionary, each dictionary contains parameters for every filter of the ``MEDiml``: .. code-block:: JSON { "imParamFilter": { "mean": {"mean filter params"}, "log": {"log filter params"}, "laws": {"laws filter params"}, "gabor": {"gabor filter params"}, "wavelet": {"wavelet filter params"}, "textural": {"textural filter params"} } } .. jsonschema:: { "$schema": "http://json-schema.org/draft-04/schema#", "title": "mean", "description": "Parameters of the mean filter", "type": "dict", "options": { "ndims": { "description": "Dimension of the imaging data. Usually 3.", "type": "int" }, "orthogonal_rot": { "description": "If ``True``, the images will be rotated over all the planes.", "type": "bool" }, "size": { "description": "Size of the filter kernel.", "type": "int" }, "padding": { "description": "Padding mode, default ``\"symmetric\"``. All the padding modes possible can be found `here `__ ", "type": "string" }, "name_save": { "description": "Saving name added to the end of every radiomics extraction results table (Only if the filter was applied).", "type": "string" } } } e.g. .. code-block:: JSON { "imParamFilter" : { "mean" : { "ndims" : 3, "orthogonal_rot": false, "size" : 5, "padding" : "symmetric", "name_save" : "mean5" } } .. jsonschema:: { "$schema": "http://json-schema.org/draft-04/schema#", "title": "log", "description": "Parameters of the laplacian of Gaussian filter", "type": "dict", "options": { "ndims": { "description": "Dimension of the imaging data. Usually 3.", "type": "int" }, "sigma": { "description": "Standard deviation of the Gaussian, controls the scale of the convolutional operator.", "type": "float" }, "orthogonal_rot": { "description": "If ``True``, the images will be rotated over all the planes.", "type": "bool" }, "padding": { "description": "Padding mode, default ``\"symmetric\"``. All the padding modes possible can be found `here `__ ", "type": "string" }, "name_save": { "description": "Saving name added to the end of every radiomics extraction results table (Only if the filter was applied).", "type": "string" } } } e.g. .. code-block:: JSON { "imParamFilter" : { "log" : { "ndims" : 3, "sigma" : 1.5, "orthogonal_rot" : false, "padding" : "constant", "name_save" : "log_1.5" } } .. jsonschema:: { "$schema": "http://json-schema.org/draft-04/schema#", "title": "laws", "description": "Parameters of the laws filter", "type": "dict", "options": { "config": { "description": "List of string of every 1D filter to use for the Laws kernel creation. Possible 1D filters: ``\"L3\"``, ``\"L5\"``, ``\"E3\"``, ``\"E5\"``, ``\"S3\"``, ``\"S5\"``, ``\"W5\"`` or ``\"R5\"``", "type": "List[str]" }, "energy_distance": { "description": "The Chebyshev distance that will be used to create the laws texture energy image.", "type": "float" }, "rot_invariance": { "description": "If ``True``, rotational invariance will be approximated.", "type": "bool" }, "orthogonal_rot": { "description": "If ``True``, the images will be rotated over all the planes.", "type": "bool" }, "energy_image": { "description": "If ``True``, Laws texture energy images are computed.", "type": "bool" }, "padding": { "description": "Padding mode, default ``\"symmetric\"``. All the padding modes possible can be found `here `__ ", "type": "string" }, "name_save": { "description": "Saving name added to the end of every radiomics extraction results table (Only if the filter was applied).", "type": "string" } } } e.g. .. code-block:: JSON { "imParamFilter" : { "laws" : { "config" : ["L5", "E5", "E5"], "energy_distance" : 7, "rot_invariance" : true, "orthogonal_rot" : false, "energy_image" : true, "padding" : "symmetric", "name_save" : "laws_l5_e5_e5_7" } } .. note:: The order of the 1D filters used in laws filter configuration matter, because we use the configuration list to compute the outer product and the outer product is not commutative. .. jsonschema:: { "$schema": "http://json-schema.org/draft-04/schema#", "title": "gabor", "description": "Parameters of the gabor filter", "type": "dict", "options": { "sigma": { "description": "Standard deviation of the Gaussian envelope, controls the scale of the filter.", "type": "float" }, "lambda": { "description": "Wavelength or inverse of the frequency.", "type": "float" }, "gamma": { "description": "Spatial aspect ratio.", "type": "float" }, "theta": { "description": "Angle of the rotation matrix.", "type": "str" }, "rot_invariance": { "description": "If ``True``, rotational invariance will be approximated by combining the response maps of several elements of the Gabor filter bank.", "type": "bool" }, "orthogonal_rot": { "description": "If ``True``, the images will be rotated over all the planes.", "type": "bool" }, "padding": { "description": "Padding mode, default ``\"symmetric\"``. All the padding modes possible can be found `here `__ ", "type": "string" }, "name_save": { "description": "Saving name added to the end of every radiomics extraction results table (Only if the filter was applied).", "type": "string" } } } e.g. .. code-block:: JSON { "imParamFilter" : { "gabor" : { "sigma" : 5, "lambda" : 2, "gamma" : 1.5, "theta" : "Pi/8", "rot_invariance" : true, "orthogonal_rot" : true, "padding" : "symmetric", "name_save" : "gabor_5_2_1.5" } } .. note:: ``gamma`` parameter should be radian but must be specified as a string, for example :math:`\frac{\pi}{2}` should be specified as "Pi/2". .. jsonschema:: { "$schema": "http://json-schema.org/draft-04/schema#", "title": "wavelet", "description": "Parameters of the gabor filter", "type": "dict", "options": { "ndims": { "description": "Dimension of the imaging data. Usually 3.", "type": "int" }, "basis_function": { "description": "Wavelet name used to create the kernel. The Wavelet families and built-ins can be found `here `__. Custom user wavelets are also supported.", "type": "string" }, "subband": { "description": "String of the 1D wavelet kernels (``\"H\"`` for high-pass filter or ``\"L\"`` for low-pass filter). Must have a size of ``ndims``.", "type": "string" }, "level": { "description": "The number of decomposition steps to perform.", "type": "int" }, "rot_invariance": { "description": "If ``True``, rotational invariance will be approximated.", "type": "bool" }, "padding": { "description": "Padding mode, default ``\"symmetric\"``. All the padding modes possible can be found `here `__ ", "type": "string" }, "name_save": { "description": "Saving name added to the end of every radiomics extraction results table (Only if the filter was applied).", "type": "string" } } } e.g. .. code-block:: JSON { "imParamFilter" : { "wavelet" : { "ndims" : 3, "basis_function" : "db3", "subband" : "LLH", "level" : 1, "rot_invariance" : true, "padding" : "symmetric", "name_save" : "Wavelet_db3_LLH" }, } .. jsonschema:: { "$schema": "http://json-schema.org/draft-04/schema#", "title": "textural", "description": "Parameters of the textural filter", "type": "dict", "options": { "family": { "description": "Texture features family. Only ``\"glcm\"`` is supported for now.", "type": "string" }, "discretization": { "description": "Discretization parameters for the texture features (Defined down below).", "type": "dict" }, "local": { "description": "Wether to discretize the ROI locally or globally.", "type": "bool" }, "size": { "description": "Filter size.", "type": "int" }, "name_save": { "description": "Saving name added to the end of every radiomics extraction results table (Only if the filter was applied).", "type": "string" } } } - **Discretization (Textural filters)** .. jsonschema:: { "$schema": "http://json-schema.org/draft-04/schema#", "description": "Discretization parameters for intensity histogram features.", "type": "dict", "options": { "type": { "description": "Discretization algorithm: ``\"FBS\"`` for fixed bin size and ``\"FBN\"`` for fixed bin number algorithm.", "type": "string" }, "bn": { "description": "Bin number. Set if ``type`` is ``\"FBN\"``.", "type": "int" }, "bw": { "description": "Bin size. Set if ``type`` is ``\"FBS\"`` or ``type`` is ``\"FBN\"`` and ``adapted`` is ``True``.", "type": "int" }, "adapted": { "description": "If ``True``, the bin number will be computed using the bin width and the intensity range. Only valid if ``type`` is ``\"FBN\"``.", "type": "bool" } } } e.g. .. code-block:: JSON { "imParamFilter" : { "textural" : { "family" : "glcm", "discretization": { "type" : "FBN", "bn" : null, "bw" : 25, "adapted" : true }, "size" : 3, "local" : true, "name_save" : "glcm_local_fbn_25hu_adapted" }, } Example of a full settings dictionary ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Here is an example of a complete settings dictionary: .. raw:: html