# -*- coding: utf-8 -*-
#  Default values are set internally, if the corresponding parameter is not found in the configuration file.

#  [Optional but highly suggested] The name will be used for naming folders to save the results in.
#  Default: "testSession"
sessionName = "testSessionDm"

#  [Required] The main folder that the output will be placed.
folderForOutput = "../../../output/"

#  [Optional] Path to a saved model, to load parameters from in the beginning of the session. If one is also specified using the command line, the latter will be used.
#cnnModelFilePath = "../../../output/models/placeholder"

#  +++++++++++ Input +++++++++++

#  [Required] A list that should contain as many entries as the channels of the input image (eg multi-modal MRI). The entries should be paths to files. Those files should be listing the paths to the corresponding channels for each test-case. (see example files).
channels = ["./testChannels_flair.cfg", "./testChannels_t1c.cfg"]

#  [Optional] The path to a file, which should list paths to the Region-Of-Interest masks for each testing case.
#  If ROI masks are provided, inference will only be performed in within it (faster). If not specified, inference will be performed in whole volume.
roiMasks = "./testRoiMasks.cfg"

#  [Optional] The path to a file which should list paths to the Ground Truth labels of each testing case. If provided, DSC metrics will be reported. Otherwise comment out this entry.
gtLabels = "./testGtLabels.cfg"

#  [Required] The path to a file, which should list names to give to the results for each testing case. (see example file).
namesForPredictionsPerCase = "./testNamesOfPredictions.cfg"

# [Optional] Batch size. Default: 10
batchsize = 10

#  +++++++++++Predictions+++++++++++
#  [Optional] Specify whether to save segmentation map. Default: True
saveSegmentation = True
#  [Optional] Specify a list with as many entries as the task's classes. True/False to save/not the probability map for the corresponding class. Default: [True,True...for all classes]
saveProbMapsForEachClass = [True, True, True, True, True]


#  +++++++++++Feature Maps+++++++++++
#  [Optionals] Specify whether to save the feature maps. Default: False
#saveIndividualFms = True

#  [Optionals] A model may have too many feature maps, and some may not be needed. For this, we allow specifying which FMs to save. 
#  Specify for each type of pathway (normal/subsampled/FC), a list with as many sublists as the layers of the pathway.
#  Each sublist (one for each layer), should have 2 numbers. These are the minimum (inclusive) and maximum (exclusive) indices of the Feature Maps that we wish to save from the layer.
#  The preset example saves the Feature Maps from index 0 (first FM) to 150 of the last hidden FC layer, before the classification layer.
#  Default: [] for all.
#minMaxIndicesOfFmsToSaveFromEachLayerOfNormalPathway = []
#minMaxIndicesOfFmsToSaveFromEachLayerOfSubsampledPathway = [[],[],[],[],[],[],[],[]]
#minMaxIndicesOfFmsToSaveFromEachLayerOfFullyConnectedPathway = [[],[0,150],[]]


#  ================== Generics ===================

# ++++ Data Compatibility Checks ++++

#  [Optional] Checks for format correctness of loaded input images. Can slow down the process.
#  Default: True
run_input_checks = True

#  +++++++ Data preprocessing ++++++

#  [Optional] Pad images to fully convolve. Default: True
padInputImagesBool = True

#  [Optional] Verbosity-level for logging info on intensity-normalization. 0: Nothing (default), 1: Per-subject, 2: Per-channel
norm_verbosity_lvl = 0

#  [Optional] Z-score intensity normalization parameters:
#     apply_to_all_channels: True/False. Whether to do z-score normalization to ALL channels. Default: False
#     apply_per_channel: None, or a List with one boolean per channel. Whether to normalize specific channel.
#                        NOTE: If apply_to_all_channels is True, apply_per_channel MUST be None.
#     cutoff_percents  : Cutoff at percentiles [float_low, float_high], values in [0.0 - 100.0].
#     cutoff_times_std : Cutoff intensities below/above [float_below, float_above] times std from the mean.
#     cutoff_below_mean: True/False. Cutoff intensities below image mean. Useful to exclude air in brain MRI.
norm_zscore_prms = {'apply_to_all_channels': False,
                    'apply_per_channel': None,
                    'cutoff_percents': [5., 95.],
                    'cutoff_times_std': [3.,3.],
                    'cutoff_below_mean': False}


