Commit db5226f5 authored by Andrei Roibu's avatar Andrei Roibu
Browse files

added minus one flag

parent 507756d2
...@@ -9,8 +9,8 @@ crop_flag = True ...@@ -9,8 +9,8 @@ crop_flag = True
[TRAINING] [TRAINING]
experiment_name = "VA2-1" experiment_name = "VA2-1"
pre_trained_path = "saved_models/VA2-1.pth.tar" pre_trained_path = "saved_models/VA2-1.pth.tar"
training_batch_size = 5 training_batch_size = 3
validation_batch_size = 5 validation_batch_size = 3
use_pre_trained = False use_pre_trained = False
learning_rate = 1e-5 learning_rate = 1e-5
optimizer_beta = (0.9, 0.999) optimizer_beta = (0.9, 0.999)
...@@ -18,9 +18,10 @@ optimizer_epsilon = 1e-8 ...@@ -18,9 +18,10 @@ optimizer_epsilon = 1e-8
optimizer_weigth_decay = 1e-5 optimizer_weigth_decay = 1e-5
number_of_epochs = 10 number_of_epochs = 10
loss_log_period = 50 loss_log_period = 50
learning_rate_scheduler_step_size = 5 learning_rate_scheduler_step_size = 6
learning_rate_scheduler_gamma = 1e-1 learning_rate_scheduler_gamma = 1e-1
use_last_checkpoint = False use_last_checkpoint = False
adam_w_flag = False
[NETWORK] [NETWORK]
kernel_heigth = 3 kernel_heigth = 3
...@@ -34,6 +35,7 @@ dropout = 0 ...@@ -34,6 +35,7 @@ dropout = 0
pool_kernel_size = 3 pool_kernel_size = 3
pool_stride = 2 pool_stride = 2
up_mode = "upconv" up_mode = "upconv"
final_activation = 'tanh'
number_of_classes = 1 number_of_classes = 1
number_of_transformer_blocks = 6 number_of_transformer_blocks = 6
custom_weight_reset_flag = False custom_weight_reset_flag = False
......
...@@ -9,15 +9,16 @@ rsfmri_mean_mask_path = "utils/mean_dr_stage2.nii.gz" ...@@ -9,15 +9,16 @@ rsfmri_mean_mask_path = "utils/mean_dr_stage2.nii.gz"
dmri_mean_mask_path = "utils/mean_tractsNormSummed_downsampled.nii.gz" dmri_mean_mask_path = "utils/mean_tractsNormSummed_downsampled.nii.gz"
mean_mask_path = "utils/mean_dr_stage2.nii.gz" mean_mask_path = "utils/mean_dr_stage2.nii.gz"
regression_factors = "datasets/regression_weights.pkl" regression_factors = "datasets/regression_weights.pkl"
mean_regression_flag = False mean_regression_flag = True
mean_regression_all_flag = False mean_regression_all_flag = True
mean_subtraction_flag = True mean_subtraction_flag = False
scale_volumes_flag = True scale_volumes_flag = True
normalize_flag = True normalize_flag = False
negative_flag = True minus_one_scaling_flag = True
negative_flag = False
outlier_flag = True outlier_flag = True
shrinkage_flag = False shrinkage_flag = False
hard_shrinkage_flag = False hard_shrinkage_flag = False
crop_flag = False crop_flag = True
device = 0 device = 0
exit_on_error = True exit_on_error = True
\ No newline at end of file
...@@ -43,6 +43,7 @@ def evaluate_mapping(trained_model_path, ...@@ -43,6 +43,7 @@ def evaluate_mapping(trained_model_path,
mean_subtraction_flag, mean_subtraction_flag,
scale_volumes_flag, scale_volumes_flag,
normalize_flag, normalize_flag,
minus_one_scaling_flag,
negative_flag, negative_flag,
outlier_flag, outlier_flag,
shrinkage_flag, shrinkage_flag,
...@@ -70,6 +71,7 @@ def evaluate_mapping(trained_model_path, ...@@ -70,6 +71,7 @@ def evaluate_mapping(trained_model_path,
mean_subtraction_flag (bool): Flag indicating if the targets should be de-meaned by subtraction using the mean_mask_path mean_subtraction_flag (bool): Flag indicating if the targets should be de-meaned by subtraction using the mean_mask_path
scale_volumes_flag (bool): Flag indicating if the volumes should be scaled. scale_volumes_flag (bool): Flag indicating if the volumes should be scaled.
normalize_flag (bool): Flag signaling if the volume should be normalized ([0,1] if True) or scaled to [-1,1] if False. normalize_flag (bool): Flag signaling if the volume should be normalized ([0,1] if True) or scaled to [-1,1] if False.
minus_one_scaling_flag (bool): Flag signaling if the volume should be scaled to [-1,1] if True
negative_flag (bool): Flag indicating if all the negative values should be 0-ed. negative_flag (bool): Flag indicating if all the negative values should be 0-ed.
outlier_flag (bool): Flag indicating if outliers should be set to the min/max values. outlier_flag (bool): Flag indicating if outliers should be set to the min/max values.
shrinkage_flag (bool): Flag indicating if shrinkage should be applied. shrinkage_flag (bool): Flag indicating if shrinkage should be applied.
...@@ -142,6 +144,7 @@ def evaluate_mapping(trained_model_path, ...@@ -142,6 +144,7 @@ def evaluate_mapping(trained_model_path,
mean_subtraction_flag, mean_subtraction_flag,
scale_volumes_flag, scale_volumes_flag,
normalize_flag, normalize_flag,
minus_one_scaling_flag,
negative_flag, negative_flag,
outlier_flag, outlier_flag,
shrinkage_flag, shrinkage_flag,
...@@ -212,6 +215,7 @@ def _generate_volume_map(file_path, ...@@ -212,6 +215,7 @@ def _generate_volume_map(file_path,
mean_subtraction_flag, mean_subtraction_flag,
scale_volumes_flag, scale_volumes_flag,
normalize_flag, normalize_flag,
minus_one_scaling_flag,
negative_flag, negative_flag,
outlier_flag, outlier_flag,
shrinkage_flag, shrinkage_flag,
...@@ -237,6 +241,7 @@ def _generate_volume_map(file_path, ...@@ -237,6 +241,7 @@ def _generate_volume_map(file_path,
mean_subtraction_flag (bool): Flag indicating if the targets should be de-meaned by subtraction using the mean_mask_path mean_subtraction_flag (bool): Flag indicating if the targets should be de-meaned by subtraction using the mean_mask_path
scale_volumes_flag (bool): Flag indicating if the volumes should be scaled. scale_volumes_flag (bool): Flag indicating if the volumes should be scaled.
normalize_flag (bool): Flag signaling if the volume should be normalized ([0,1] if True) or scaled to [-1,1] if False. normalize_flag (bool): Flag signaling if the volume should be normalized ([0,1] if True) or scaled to [-1,1] if False.
minus_one_scaling_flag (bool): Flag signaling if the volume should be scaled to [-1,1] if True
negative_flag (bool): Flag indicating if all the negative values should be 0-ed. negative_flag (bool): Flag indicating if all the negative values should be 0-ed.
outlier_flag (bool): Flag indicating if outliers should be set to the min/max values. outlier_flag (bool): Flag indicating if outliers should be set to the min/max values.
shrinkage_flag (bool): Flag indicating if shrinkage should be applied. shrinkage_flag (bool): Flag indicating if shrinkage should be applied.
...@@ -253,16 +258,16 @@ def _generate_volume_map(file_path, ...@@ -253,16 +258,16 @@ def _generate_volume_map(file_path,
if mean_regression_flag == True: if mean_regression_flag == True:
if mean_regression_all_flag == True: if mean_regression_all_flag == True:
volume = _regress_input(volume, subject, dmri_mean_mask_path, regression_factors, crop_flag) volume = _regress_input(volume, subject, dmri_mean_mask_path, regression_factors, crop_flag)
scaling_parameters = [-0.0539, 0.0969, -12.094, 14.6319] scaling_parameters = [-0.0626, 0.1146, -14.18, 16.9475]
else: else:
scaling_parameters = [0.0, 0.2, -12.094, 14.6319] scaling_parameters = [0.0, 0.2, -14.18, 16.9475]
elif mean_subtraction_flag == True: elif mean_subtraction_flag == True:
scaling_parameters = [0.0, 0.2, 0.0, 10.0] scaling_parameters = [0.0, 0.2, 0.0, 10.0]
print('volume range:', np.min(volume), np.max(volume)) print('volume range:', np.min(volume), np.max(volume))
if scale_volumes_flag == True: if scale_volumes_flag == True:
volume = _scale_input(volume, scaling_parameters, normalize_flag, negative_flag, outlier_flag, shrinkage_flag, hard_shrinkage_flag) volume = _scale_input(volume, scaling_parameters, normalize_flag, minus_one_scaling_flag, negative_flag, outlier_flag, shrinkage_flag, hard_shrinkage_flag)
if len(volume.shape) == 5: if len(volume.shape) == 5:
volume = volume volume = volume
...@@ -280,7 +285,7 @@ def _generate_volume_map(file_path, ...@@ -280,7 +285,7 @@ def _generate_volume_map(file_path,
print('output range:', np.min(output), np.max(output)) print('output range:', np.min(output), np.max(output))
output = _rescale_output(output, scaling_parameters, normalize_flag, negative_flag, shrinkage_flag, hard_shrinkage_flag) output = _rescale_output(output, scaling_parameters, normalize_flag, minus_one_scaling_flag, negative_flag, shrinkage_flag, hard_shrinkage_flag)
print('output rescaled:', np.min(output), np.max(output)) print('output rescaled:', np.min(output), np.max(output))
...@@ -323,7 +328,7 @@ def _generate_volume_map(file_path, ...@@ -323,7 +328,7 @@ def _generate_volume_map(file_path,
return predicted_complete_volume, predicted_volume, header, xform return predicted_complete_volume, predicted_volume, header, xform
def _scale_input(volume, scaling_parameters, normalize_flag, negative_flag, outlier_flag, shrinkage_flag, hard_shrinkage_flag): def _scale_input(volume, scaling_parameters, normalize_flag, minus_one_scaling_flag, negative_flag, outlier_flag, shrinkage_flag, hard_shrinkage_flag):
"""Input Scaling """Input Scaling
This function reads the scaling factors from the saved file and then scales the data. This function reads the scaling factors from the saved file and then scales the data.
...@@ -332,6 +337,7 @@ def _scale_input(volume, scaling_parameters, normalize_flag, negative_flag, outl ...@@ -332,6 +337,7 @@ def _scale_input(volume, scaling_parameters, normalize_flag, negative_flag, outl
volume (np.array): Numpy array representing the un-scalled volume. volume (np.array): Numpy array representing the un-scalled volume.
scaling_parameters (list): List of scaling parameters. scaling_parameters (list): List of scaling parameters.
normalize_flag (bool): Flag signaling if the volume should be normalized ([0,1] if True) or scaled to [-1,1] if False. normalize_flag (bool): Flag signaling if the volume should be normalized ([0,1] if True) or scaled to [-1,1] if False.
minus_one_scaling_flag (bool): Flag signaling if the volume should be scaled to [-1,1] if True
negative_flag (bool): Flag indicating if all the negative values should be 0-ed. negative_flag (bool): Flag indicating if all the negative values should be 0-ed.
outlier_flag (bool): Flag indicating if outliers should be set to the min/max values. outlier_flag (bool): Flag indicating if outliers should be set to the min/max values.
shrinkage_flag (bool): Flag indicating if shrinkage should be applied. shrinkage_flag (bool): Flag indicating if shrinkage should be applied.
...@@ -364,10 +370,11 @@ def _scale_input(volume, scaling_parameters, normalize_flag, negative_flag, outl ...@@ -364,10 +370,11 @@ def _scale_input(volume, scaling_parameters, normalize_flag, negative_flag, outl
if normalize_flag == True: if normalize_flag == True:
# Normalization to [0, 1] # Normalization to [0, 1]
scaled_volume = np.divide(np.subtract(volume, min_value), np.subtract(max_value, min_value)) scaled_volume = np.divide(np.subtract(volume, min_value), np.subtract(max_value, min_value))
else: elif minus_one_scaling_flag == True:
# Scaling between [-1, 1] # Scaling between [-1, 1]
scaled_volume = np.add(-1.0, np.multiply(2.0, np.divide(np.subtract(volume, min_value), np.subtract(max_value, min_value)))) scaled_volume = np.add(-1.0, np.multiply(2.0, np.divide(np.subtract(volume, min_value), np.subtract(max_value, min_value))))
# Else, no scaling occus, but the other flags can still hold true if the scaling flag is true!
return scaled_volume return scaled_volume
...@@ -401,7 +408,7 @@ def _regress_input(volume, subject, dmri_mean_mask_path, regression_factors, cro ...@@ -401,7 +408,7 @@ def _regress_input(volume, subject, dmri_mean_mask_path, regression_factors, cro
return regressed_volume return regressed_volume
def _rescale_output(volume, scaling_parameters, normalize_flag, negative_flag, shrinkage_flag, hard_shrinkage_flag): def _rescale_output(volume, scaling_parameters, normalize_flag, minus_one_scaling_flag, negative_flag, shrinkage_flag, hard_shrinkage_flag):
"""Output Rescaling """Output Rescaling
This function reads the scaling factors from the saved file and then scales the data. This function reads the scaling factors from the saved file and then scales the data.
...@@ -410,6 +417,7 @@ def _rescale_output(volume, scaling_parameters, normalize_flag, negative_flag, s ...@@ -410,6 +417,7 @@ def _rescale_output(volume, scaling_parameters, normalize_flag, negative_flag, s
volume (np.array): Unscalled volume volume (np.array): Unscalled volume
scaling_parameters (list): List of scaling parameters. scaling_parameters (list): List of scaling parameters.
normalize_flag (bool): Flag signaling if the volume should be normalized ([0,1] if True) or scaled to [-1,1] if False. normalize_flag (bool): Flag signaling if the volume should be normalized ([0,1] if True) or scaled to [-1,1] if False.
minus_one_scaling_flag (bool): Flag signaling if the volume should be scaled to [-1,1] if True
negative_flag (bool): Flag indicating if all the negative values should be 0-ed. negative_flag (bool): Flag indicating if all the negative values should be 0-ed.
shrinkage_flag (bool): Flag indicating if shrinkage should be applied. shrinkage_flag (bool): Flag indicating if shrinkage should be applied.
hard_shrinkage_flag (bool): Flag indicating if hard shrinkage should be applied. If False, soft shrinkage is applied. hard_shrinkage_flag (bool): Flag indicating if hard shrinkage should be applied. If False, soft shrinkage is applied.
...@@ -434,10 +442,11 @@ def _rescale_output(volume, scaling_parameters, normalize_flag, negative_flag, s ...@@ -434,10 +442,11 @@ def _rescale_output(volume, scaling_parameters, normalize_flag, negative_flag, s
if normalize_flag == True: if normalize_flag == True:
# Normalization to [0, 1] # Normalization to [0, 1]
rescaled_volume = np.add(np.multiply(volume, np.subtract(max_value, min_value)), min_value) rescaled_volume = np.add(np.multiply(volume, np.subtract(max_value, min_value)), min_value)
else: elif minus_one_scaling_flag == True:
# Scaling between [-1, 1] # Scaling between [-1, 1]
rescaled_volume = np.add(np.multiply(np.divide(np.add(volume, 1), 2), np.subtract(max_value, min_value)), min_value) rescaled_volume = np.add(np.multiply(np.divide(np.add(volume, 1), 2), np.subtract(max_value, min_value)), min_value)
# Else, no rescaling occus, but the other flags can still hold true if the scaling flag is true!
return rescaled_volume return rescaled_volume
......
...@@ -79,7 +79,8 @@ def convert_hdf5(data_parameters, file_information): ...@@ -79,7 +79,8 @@ def convert_hdf5(data_parameters, file_information):
rsfMRI_mean_mask_path = data_parameters['rsfmri_mean_mask_path'], rsfMRI_mean_mask_path = data_parameters['rsfmri_mean_mask_path'],
mean_subtraction_flag = data_parameters['mean_subtraction_flag'], mean_subtraction_flag = data_parameters['mean_subtraction_flag'],
scale_volumes_flag = data_parameters['scale_volumes_flag'], scale_volumes_flag = data_parameters['scale_volumes_flag'],
normalize_flag = data_parameters['normalize_flag'], normalize_flag = data_parameters['normalize_flag'],
minus_one_scaling_flag = data_parameters['minus_one_scaling_flag'],
negative_flag = data_parameters['negative_flag'], negative_flag = data_parameters['negative_flag'],
outlier_flag = data_parameters['outlier_flag'], outlier_flag = data_parameters['outlier_flag'],
shrinkage_flag = data_parameters['shrinkage_flag'], shrinkage_flag = data_parameters['shrinkage_flag'],
...@@ -105,6 +106,7 @@ def convert_hdf5(data_parameters, file_information): ...@@ -105,6 +106,7 @@ def convert_hdf5(data_parameters, file_information):
mean_subtraction_flag = data_parameters['mean_subtraction_flag'], mean_subtraction_flag = data_parameters['mean_subtraction_flag'],
scale_volumes_flag = data_parameters['scale_volumes_flag'], scale_volumes_flag = data_parameters['scale_volumes_flag'],
normalize_flag = data_parameters['normalize_flag'], normalize_flag = data_parameters['normalize_flag'],
minus_one_scaling_flag = data_parameters['minus_one_scaling_flag'],
negative_flag = data_parameters['negative_flag'], negative_flag = data_parameters['negative_flag'],
outlier_flag = data_parameters['outlier_flag'], outlier_flag = data_parameters['outlier_flag'],
shrinkage_flag = data_parameters['shrinkage_flag'], shrinkage_flag = data_parameters['shrinkage_flag'],
......
...@@ -14,12 +14,13 @@ train_data_file = "dMRI/autoptx_preproc/tractsNormSummed.nii.gz" ...@@ -14,12 +14,13 @@ train_data_file = "dMRI/autoptx_preproc/tractsNormSummed.nii.gz"
train_output_targets = "fMRI/rfMRI_25.dr/dr_stage2.nii.gz" train_output_targets = "fMRI/rfMRI_25.dr/dr_stage2.nii.gz"
rsfmri_mean_mask_path = "utils/mean_dr_stage2.nii.gz" rsfmri_mean_mask_path = "utils/mean_dr_stage2.nii.gz"
dmri_mean_mask_path = "utils/mean_tractsNormSummed_downsampled.nii.gz" dmri_mean_mask_path = "utils/mean_tractsNormSummed_downsampled.nii.gz"
mean_regression_flag = False mean_regression_flag = True
mean_regression_all_flag = False mean_regression_all_flag = True
mean_subtraction_flag = True mean_subtraction_flag = False
scale_volumes_flag = True scale_volumes_flag = True
normalize_flag = True normalize_flag = False
negative_flag = True minus_one_scaling_flag = True
negative_flag = False
outlier_flag = True outlier_flag = True
shrinkage_flag = False shrinkage_flag = False
hard_shrinkage_flag = False hard_shrinkage_flag = False
......
...@@ -273,7 +273,7 @@ def weight_calculator(data_directory, subject, train_inputs, train_targets, rsfM ...@@ -273,7 +273,7 @@ def weight_calculator(data_directory, subject, train_inputs, train_targets, rsfM
def load_datasets(subjects, data_directory, input_file, output_target, mean_regression_flag, mean_regression_all_flag, regression_weights_path, def load_datasets(subjects, data_directory, input_file, output_target, mean_regression_flag, mean_regression_all_flag, regression_weights_path,
dMRI_mean_mask_path, rsfMRI_mean_mask_path, mean_subtraction_flag, scale_volumes_flag, normalize_flag, negative_flag, dMRI_mean_mask_path, rsfMRI_mean_mask_path, mean_subtraction_flag, scale_volumes_flag, normalize_flag, minus_one_scaling_flag, negative_flag,
outlier_flag, shrinkage_flag, hard_shrinkage_flag, crop_flag): outlier_flag, shrinkage_flag, hard_shrinkage_flag, crop_flag):
""" Dataset loader and pre-processor """ Dataset loader and pre-processor
...@@ -292,6 +292,7 @@ def load_datasets(subjects, data_directory, input_file, output_target, mean_regr ...@@ -292,6 +292,7 @@ def load_datasets(subjects, data_directory, input_file, output_target, mean_regr
mean_subtraction_flag (bool): Flag indicating if the targets should be de-meaned by subtraction using the mean_mask_path mean_subtraction_flag (bool): Flag indicating if the targets should be de-meaned by subtraction using the mean_mask_path
scale_volumes_flag (bool): Flag indicating if the volumes should be scaled. scale_volumes_flag (bool): Flag indicating if the volumes should be scaled.
normalize_flag (bool): Flag signaling if the volume should be normalized ([0,1] if True) or scaled to [-1,1] if False. normalize_flag (bool): Flag signaling if the volume should be normalized ([0,1] if True) or scaled to [-1,1] if False.
minus_one_scaling_flag
negative_flag (bool): Flag indicating if all the negative values should be 0-ed. negative_flag (bool): Flag indicating if all the negative values should be 0-ed.
outlier_flag (bool): Flag indicating if outliers should be set to the min/max values. outlier_flag (bool): Flag indicating if outliers should be set to the min/max values.
shrinkage_flag (bool): Flag indicating if shrinkage should be applied. shrinkage_flag (bool): Flag indicating if shrinkage should be applied.
...@@ -307,22 +308,23 @@ def load_datasets(subjects, data_directory, input_file, output_target, mean_regr ...@@ -307,22 +308,23 @@ def load_datasets(subjects, data_directory, input_file, output_target, mean_regr
input_volumes, target_volumes = [], [] input_volumes, target_volumes = [], []
len_subjects = len(subjects)
for index, subject in enumerate(subjects): for index, subject in enumerate(subjects):
input_volume, target_volume = load_and_preprocess(subject, data_directory, input_file, output_target, mean_regression_flag, mean_regression_all_flag, regression_weights_path, input_volume, target_volume = load_and_preprocess(subject, data_directory, input_file, output_target, mean_regression_flag, mean_regression_all_flag, regression_weights_path,
dMRI_mean_mask_path, rsfMRI_mean_mask_path, mean_subtraction_flag, scale_volumes_flag, normalize_flag, negative_flag, dMRI_mean_mask_path, rsfMRI_mean_mask_path, mean_subtraction_flag, scale_volumes_flag, normalize_flag, minus_one_scaling_flag, negative_flag,
outlier_flag, shrinkage_flag, hard_shrinkage_flag, crop_flag) outlier_flag, shrinkage_flag, hard_shrinkage_flag, crop_flag)
input_volumes.append(input_volume) input_volumes.append(input_volume)
target_volumes.append(target_volume) target_volumes.append(target_volume)
print("#", end='', flush=True) print("\r Processed {:.3f}%".format(index/len_subjects * 100.0), end='')
print("100%", flush=True)
return input_volumes, target_volumes return input_volumes, target_volume
def load_and_preprocess(subject, data_directory, input_file, output_target, mean_regression_flag, mean_regression_all_flag, regression_weights_path, def load_and_preprocess(subject, data_directory, input_file, output_target, mean_regression_flag, mean_regression_all_flag, regression_weights_path,
dMRI_mean_mask_path, rsfMRI_mean_mask_path, mean_subtraction_flag, scale_volumes_flag, normalize_flag, negative_flag, dMRI_mean_mask_path, rsfMRI_mean_mask_path, mean_subtraction_flag, scale_volumes_flag, normalize_flag, minus_one_scaling_flag, negative_flag,
outlier_flag, shrinkage_flag, hard_shrinkage_flag, crop_flag): outlier_flag, shrinkage_flag, hard_shrinkage_flag, crop_flag):
""" Subject loader and pre-processor """ Subject loader and pre-processor
...@@ -341,6 +343,7 @@ def load_and_preprocess(subject, data_directory, input_file, output_target, mean ...@@ -341,6 +343,7 @@ def load_and_preprocess(subject, data_directory, input_file, output_target, mean
mean_subtraction_flag (bool): Flag indicating if the targets should be de-meaned by subtraction using the mean_mask_path mean_subtraction_flag (bool): Flag indicating if the targets should be de-meaned by subtraction using the mean_mask_path
scale_volumes_flag (bool): Flag indicating if the volumes should be scaled. scale_volumes_flag (bool): Flag indicating if the volumes should be scaled.
normalize_flag (bool): Flag signaling if the volume should be normalized ([0,1] if True) or scaled to [-1,1] if False. normalize_flag (bool): Flag signaling if the volume should be normalized ([0,1] if True) or scaled to [-1,1] if False.
minus_one_scaling_flag
negative_flag (bool): Flag indicating if all the negative values should be 0-ed. negative_flag (bool): Flag indicating if all the negative values should be 0-ed.
outlier_flag (bool): Flag indicating if outliers should be set to the min/max values. outlier_flag (bool): Flag indicating if outliers should be set to the min/max values.
shrinkage_flag (bool): Flag indicating if shrinkage should be applied. shrinkage_flag (bool): Flag indicating if shrinkage should be applied.
...@@ -353,7 +356,7 @@ def load_and_preprocess(subject, data_directory, input_file, output_target, mean ...@@ -353,7 +356,7 @@ def load_and_preprocess(subject, data_directory, input_file, output_target, mean
""" """
input_volume, target_volume = load_data(subject, data_directory, input_file, output_target, crop_flag) input_volume, target_volume = load_data(subject, data_directory, input_file, output_target, crop_flag)
input_volume, target_volume = preprocess(input_volume, target_volume, subject, mean_regression_flag, mean_regression_all_flag, regression_weights_path, input_volume, target_volume = preprocess(input_volume, target_volume, subject, mean_regression_flag, mean_regression_all_flag, regression_weights_path,
dMRI_mean_mask_path, rsfMRI_mean_mask_path, mean_subtraction_flag, scale_volumes_flag, normalize_flag, negative_flag, dMRI_mean_mask_path, rsfMRI_mean_mask_path, mean_subtraction_flag, scale_volumes_flag, normalize_flag, minus_one_scaling_flag, negative_flag,
outlier_flag, shrinkage_flag, hard_shrinkage_flag, crop_flag) outlier_flag, shrinkage_flag, hard_shrinkage_flag, crop_flag)
return input_volume, target_volume return input_volume, target_volume
...@@ -391,7 +394,7 @@ def load_data(subject, data_directory, input_file, output_target, crop_flag=Fals ...@@ -391,7 +394,7 @@ def load_data(subject, data_directory, input_file, output_target, crop_flag=Fals
def preprocess(input_volume, target_volume, subject, mean_regression_flag, mean_regression_all_flag, regression_weights_path, def preprocess(input_volume, target_volume, subject, mean_regression_flag, mean_regression_all_flag, regression_weights_path,
dMRI_mean_mask_path, rsfMRI_mean_mask_path, mean_subtraction_flag, scale_volumes_flag, normalize_flag, negative_flag, dMRI_mean_mask_path, rsfMRI_mean_mask_path, mean_subtraction_flag, scale_volumes_flag, normalize_flag, minus_one_scaling_flag, negative_flag,
outlier_flag, shrinkage_flag, hard_shrinkage_flag, crop_flag): outlier_flag, shrinkage_flag, hard_shrinkage_flag, crop_flag):
"""Conducts pre-processing based on arguments """Conducts pre-processing based on arguments
...@@ -409,6 +412,7 @@ def preprocess(input_volume, target_volume, subject, mean_regression_flag, mean_ ...@@ -409,6 +412,7 @@ def preprocess(input_volume, target_volume, subject, mean_regression_flag, mean_
mean_subtraction_flag (bool): Flag indicating if the targets should be de-meaned by subtraction using the mean_mask_path mean_subtraction_flag (bool): Flag indicating if the targets should be de-meaned by subtraction using the mean_mask_path
scale_volumes_flag (bool): Flag indicating if the volumes should be scaled. scale_volumes_flag (bool): Flag indicating if the volumes should be scaled.
normalize_flag (bool): Flag signaling if the volume should be normalized ([0,1] if True) or scaled to [-1,1] if False. normalize_flag (bool): Flag signaling if the volume should be normalized ([0,1] if True) or scaled to [-1,1] if False.
minus_one_scaling_flag
negative_flag (bool): Flag indicating if all the negative values should be 0-ed. negative_flag (bool): Flag indicating if all the negative values should be 0-ed.
outlier_flag (bool): Flag indicating if outliers should be set to the min/max values. outlier_flag (bool): Flag indicating if outliers should be set to the min/max values.
shrinkage_flag (bool): Flag indicating if shrinkage should be applied. shrinkage_flag (bool): Flag indicating if shrinkage should be applied.
...@@ -426,12 +430,12 @@ def preprocess(input_volume, target_volume, subject, mean_regression_flag, mean_ ...@@ -426,12 +430,12 @@ def preprocess(input_volume, target_volume, subject, mean_regression_flag, mean_
input_volume = linear_regress_mean(input_volume, subject, regression_weights_path, crop_flag, target_flag=False, dMRI_mean_mask_path=dMRI_mean_mask_path) input_volume = linear_regress_mean(input_volume, subject, regression_weights_path, crop_flag, target_flag=False, dMRI_mean_mask_path=dMRI_mean_mask_path)
target_volume = linear_regress_mean(target_volume, subject, regression_weights_path, crop_flag, target_flag=True, rsfMRI_mean_mask_path=rsfMRI_mean_mask_path) target_volume = linear_regress_mean(target_volume, subject, regression_weights_path, crop_flag, target_flag=True, rsfMRI_mean_mask_path=rsfMRI_mean_mask_path)
# Set scaling parameters to Andrei Scaling # Set scaling parameters to Andrei Scaling
scaling_parameters = [-0.0539, 0.0969, -12.094, 14.6319] scaling_parameters = [-0.0626, 0.1146, -14.18, 16.9475]
else: else:
# Regress only targets, leave inputs as they are # Regress only targets, leave inputs as they are
target_volume = linear_regress_mean(target_volume, subject, regression_weights_path, crop_flag, target_flag=True, rsfMRI_mean_mask_path=rsfMRI_mean_mask_path) target_volume = linear_regress_mean(target_volume, subject, regression_weights_path, crop_flag, target_flag=True, rsfMRI_mean_mask_path=rsfMRI_mean_mask_path)
# Set scaling parameters to Mixed Scaling # Set scaling parameters to Mixed Scaling
scaling_parameters = [0.0, 0.2, -12.094, 14.6319] scaling_parameters = [0.0, 0.2, -14.18, 16.9475]
elif mean_subtraction_flag == True: elif mean_subtraction_flag == True:
# Subtract the mean from targets, leave inputs as they are # Subtract the mean from targets, leave inputs as they are
target_volume = subtract_mean(target_volume, crop_flag, rsfMRI_mean_mask_path) target_volume = subtract_mean(target_volume, crop_flag, rsfMRI_mean_mask_path)
...@@ -441,8 +445,8 @@ def preprocess(input_volume, target_volume, subject, mean_regression_flag, mean_ ...@@ -441,8 +445,8 @@ def preprocess(input_volume, target_volume, subject, mean_regression_flag, mean_
pass pass
if scale_volumes_flag == True: if scale_volumes_flag == True:
input_volume = volume_scaling(input_volume, scaling_parameters, normalize_flag, negative_flag, outlier_flag, shrinkage_flag, hard_shrinkage_flag, target_flag=False) input_volume = volume_scaling(input_volume, scaling_parameters, normalize_flag, minus_one_scaling_flag, negative_flag, outlier_flag, shrinkage_flag, hard_shrinkage_flag, target_flag=False)
target_volume = volume_scaling(target_volume, scaling_parameters, normalize_flag, negative_flag, outlier_flag, shrinkage_flag, hard_shrinkage_flag, target_flag=True) target_volume = volume_scaling(target_volume, scaling_parameters, normalize_flag, minus_one_scaling_flag, negative_flag, outlier_flag, shrinkage_flag, hard_shrinkage_flag, target_flag=True)
return input_volume, target_volume return input_volume, target_volume
...@@ -506,7 +510,7 @@ def subtract_mean(volume, crop_flag, rsfMRI_mean_mask_path): ...@@ -506,7 +510,7 @@ def subtract_mean(volume, crop_flag, rsfMRI_mean_mask_path):
return volume return volume
def volume_scaling(volume, scaling_parameters, normalize_flag, negative_flag, outlier_flag, shrinkage_flag, hard_shrinkage_flag, target_flag): def volume_scaling(volume, scaling_parameters, normalize_flag, minus_one_scaling_flag, negative_flag, outlier_flag, shrinkage_flag, hard_shrinkage_flag, target_flag):
""" Volume Scaling Function """ Volume Scaling Function
This function applies various scaling operations to the volumes, based on their nature and the employed scaling strategy. This function applies various scaling operations to the volumes, based on their nature and the employed scaling strategy.
...@@ -515,7 +519,8 @@ def volume_scaling(volume, scaling_parameters, normalize_flag, negative_flag, ou ...@@ -515,7 +519,8 @@ def volume_scaling(volume, scaling_parameters, normalize_flag, negative_flag, ou
volume (np.array): Numpy array representing the un-scalled volume. volume (np.array): Numpy array representing the un-scalled volume.
scaling_parameters (list): List of scaling parameters. scaling_parameters (list): List of scaling parameters.
target_flag (bool): Flag signaling if the file is a target or an input. target_flag (bool): Flag signaling if the file is a target or an input.
normalize_flag (bool): Flag signaling if the volume should be normalized ([0,1] if True) or scaled to [-1,1] if False. normalize_flag (bool): Flag signaling if the volume should be normalized ([0,1] if True).
minus_one_scaling_flag (bool): Flag signaling if the volume should be scaled to [-1,1] if True
negative_flag (bool): Flag indicating if all the negative values should be 0-ed. negative_flag (bool): Flag indicating if all the negative values should be 0-ed.
outlier_flag (bool): Flag indicating if outliers should be set to the min/max values. outlier_flag (bool): Flag indicating if outliers should be set to the min/max values.
shrinkage_flag (bool): Flag indicating if shrinkage should be applied. shrinkage_flag (bool): Flag indicating if shrinkage should be applied.
...@@ -559,9 +564,10 @@ def volume_scaling(volume, scaling_parameters, normalize_flag, negative_flag, ou ...@@ -559,9 +564,10 @@ def volume_scaling(volume, scaling_parameters, normalize_flag, negative_flag, ou
if normalize_flag == True: if normalize_flag == True:
# Normalization to [0, 1] # Normalization to [0, 1]
volume = np.divide(np.subtract(volume, min_value), np.subtract(max_value, min_value)) volume = np.divide(np.subtract(volume, min_value), np.subtract(max_value, min_value))
else: elif minus_one_scaling_flag == True:
# Scaling between [-1, 1] # Scaling between [-1, 1]
volume = np.add(-1.0, np.multiply(2.0, np.divide(np.subtract(volume, min_value), np.subtract(max_value, min_value)))) volume = np.add(-1.0, np.multiply(2.0, np.divide(np.subtract(volume, min_value), np.subtract(max_value, min_value))))
# Else, no scaling occus, but the other flags can still hold true if the scaling flag is true!
return volume return volume
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment