From d1ddabfcaefa3c71693d7833a4104fe7571ca452 Mon Sep 17 00:00:00 2001 From: AlexVCaron Date: Tue, 13 Feb 2024 15:56:43 -0500 Subject: [PATCH 01/21] pull changes from beluga --- .config/b0_to_template_syn_config.py | 4 ++-- .config/dwi_n4_normalization_config.py | 2 +- .config/t1_n4_normalization_config.py | 12 ++++++------ .config/t1_to_template_syn_config.py | 4 +++- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/.config/b0_to_template_syn_config.py b/.config/b0_to_template_syn_config.py index f6662e6..1978629 100644 --- a/.config/b0_to_template_syn_config.py +++ b/.config/b0_to_template_syn_config.py @@ -35,10 +35,10 @@ c.AntsConfiguration.match_histogram = False c.AntsConfiguration.passes = [{ - "conv_eps": 1e-5, + "conv_eps": 1e-6, "conv_max_iter": [100, 50, 20, 10, 10], "conv_win": 10, - "grad_step": 0.2, + "grad_step": 0.1, "var_penality": 3, "var_total": 0, "klass": "mrHARDI.traits.ants.AntsSyN", diff --git a/.config/dwi_n4_normalization_config.py b/.config/dwi_n4_normalization_config.py index 05c51a6..3c89075 100644 --- a/.config/dwi_n4_normalization_config.py +++ b/.config/dwi_n4_normalization_config.py @@ -29,7 +29,7 @@ c.N4BiasCorrectionConfiguration.spline_order = 3 -c.N4BiasCorrectionConfiguration.knot_distance = 64.0 +c.N4BiasCorrectionConfiguration.knot_distance = 16.0 c.N4BiasCorrectionConfiguration.iterations = [100, 100, 50, 30] diff --git a/.config/t1_n4_normalization_config.py b/.config/t1_n4_normalization_config.py index a77e744..9b7f0ea 100644 --- a/.config/t1_n4_normalization_config.py +++ b/.config/t1_n4_normalization_config.py @@ -23,23 +23,23 @@ # ----------------------------------------------------------------------------- # N4BiasCorrectionConfiguration(mrHARDIConfigurable) configuration -c.N4BiasCorrectionConfiguration.bins = 200 +c.N4BiasCorrectionConfiguration.bins = 300 -c.N4BiasCorrectionConfiguration.filter_width = 0.075 +c.N4BiasCorrectionConfiguration.filter_width = 0.15 c.N4BiasCorrectionConfiguration.spline_order = 3 -c.N4BiasCorrectionConfiguration.knot_distance = 16.0 +c.N4BiasCorrectionConfiguration.knot_distance = 1.0 -c.N4BiasCorrectionConfiguration.iterations = [80, 80, 40, 30] +c.N4BiasCorrectionConfiguration.iterations = [300, 300, 120, 120] c.N4BiasCorrectionConfiguration.noise = 0.01 c.N4BiasCorrectionConfiguration.rescale = True -c.N4BiasCorrectionConfiguration.shrink = 2 +c.N4BiasCorrectionConfiguration.shrink = 1 -c.N4BiasCorrectionConfiguration.threshold = 1E-6 +c.N4BiasCorrectionConfiguration.threshold = 1E-8 # Base traits configuration diff --git a/.config/t1_to_template_syn_config.py b/.config/t1_to_template_syn_config.py index 3f35c0b..d1dd8d0 100644 --- a/.config/t1_to_template_syn_config.py +++ b/.config/t1_to_template_syn_config.py @@ -38,7 +38,7 @@ "conv_eps": 1e-7, "conv_max_iter": [50, 50, 20, 20], "conv_win": 10, - "grad_step": 0.2, + "grad_step": 0.1, "var_penality": 3, "var_total": 0, "klass": "mrHARDI.traits.ants.AntsSyN", @@ -56,12 +56,14 @@ } ], "shrinks": [ + 12, 8, 4, 2, 1 ], "smoothing": [ + 6., 4., 2., 1., From b7717d63453a75397057e373c21b1065c96bbeb7 Mon Sep 17 00:00:00 2001 From: Alex Valcourt Caron Date: Mon, 25 Mar 2024 10:43:02 -0400 Subject: [PATCH 02/21] update t1 registration parameters --- .config/dwi_n4_normalization_config.py | 4 +-- .config/dwi_n4_normalization_quick_config.py | 4 +-- .config/t1_n4_normalization_config.py | 8 ++--- .config/t1_to_template_affine_config.py | 34 +------------------- .config/t1_to_template_syn_config.py | 2 +- modules/workflows/t1_registration.nf | 2 +- 6 files changed, 11 insertions(+), 43 deletions(-) diff --git a/.config/dwi_n4_normalization_config.py b/.config/dwi_n4_normalization_config.py index 3c89075..1fd2818 100644 --- a/.config/dwi_n4_normalization_config.py +++ b/.config/dwi_n4_normalization_config.py @@ -25,11 +25,11 @@ # N4BiasCorrectionConfiguration(mrHARDIConfigurable) configuration c.N4BiasCorrectionConfiguration.bins = 150 -c.N4BiasCorrectionConfiguration.filter_width = 0.075 +c.N4BiasCorrectionConfiguration.filter_width = 0.60 c.N4BiasCorrectionConfiguration.spline_order = 3 -c.N4BiasCorrectionConfiguration.knot_distance = 16.0 +c.N4BiasCorrectionConfiguration.nvox_between_knots = 16.0 c.N4BiasCorrectionConfiguration.iterations = [100, 100, 50, 30] diff --git a/.config/dwi_n4_normalization_quick_config.py b/.config/dwi_n4_normalization_quick_config.py index 1f293e0..1dcc195 100644 --- a/.config/dwi_n4_normalization_quick_config.py +++ b/.config/dwi_n4_normalization_quick_config.py @@ -25,9 +25,9 @@ # N4BiasCorrectionConfiguration(mrHARDIConfigurable) configuration c.N4BiasCorrectionConfiguration.bins = 150 -c.N4BiasCorrectionConfiguration.filter_width = 0.075 +c.N4BiasCorrectionConfiguration.filter_width = 0.6 -c.N4BiasCorrectionConfiguration.knot_distance = 4.0 +c.N4BiasCorrectionConfiguration.nvox_between_knots = 16.0 c.N4BiasCorrectionConfiguration.iterations = [300, 150, 75, 40] diff --git a/.config/t1_n4_normalization_config.py b/.config/t1_n4_normalization_config.py index 9b7f0ea..48a0803 100644 --- a/.config/t1_n4_normalization_config.py +++ b/.config/t1_n4_normalization_config.py @@ -23,13 +23,13 @@ # ----------------------------------------------------------------------------- # N4BiasCorrectionConfiguration(mrHARDIConfigurable) configuration -c.N4BiasCorrectionConfiguration.bins = 300 +c.N4BiasCorrectionConfiguration.bins = 150 -c.N4BiasCorrectionConfiguration.filter_width = 0.15 +c.N4BiasCorrectionConfiguration.filter_width = 0.60 c.N4BiasCorrectionConfiguration.spline_order = 3 -c.N4BiasCorrectionConfiguration.knot_distance = 1.0 +c.N4BiasCorrectionConfiguration.nvox_between_knots = 16.0 c.N4BiasCorrectionConfiguration.iterations = [300, 300, 120, 120] @@ -37,7 +37,7 @@ c.N4BiasCorrectionConfiguration.rescale = True -c.N4BiasCorrectionConfiguration.shrink = 1 +c.N4BiasCorrectionConfiguration.shrink = 2 c.N4BiasCorrectionConfiguration.threshold = 1E-8 diff --git a/.config/t1_to_template_affine_config.py b/.config/t1_to_template_affine_config.py index 271581a..c2e4184 100644 --- a/.config/t1_to_template_affine_config.py +++ b/.config/t1_to_template_affine_config.py @@ -45,38 +45,6 @@ c.AntsConfiguration.match_histogram = True c.AntsConfiguration.passes = [{ - "conv_eps": 1e-6, - "conv_max_iter": [400, 100, 50, 20], - "conv_win": 10, - "grad_step": 0.1, - "klass": "mrHARDI.traits.ants.AntsRigid", - "metrics": [ - { - "target_index": 0, - "moving_index": 0, - "args": [ - 1.0, - 64, - "Regular", - 0.8, - True - ], - "klass": "mrHARDI.traits.ants.MetricMI" - } - ], - "shrinks": [ - 8, - 4, - 2, - 1 - ], - "smoothing": [ - 3., - 2., - 1., - 0 - ] -}, { "conv_eps": 1e-6, "conv_max_iter": [200, 100, 50, 20], "conv_win": 20, @@ -88,7 +56,7 @@ "moving_index": 0, "args": [ 1.0, - 64, + 128, "Regular", 0.8, True diff --git a/.config/t1_to_template_syn_config.py b/.config/t1_to_template_syn_config.py index d1dd8d0..c52ab9f 100644 --- a/.config/t1_to_template_syn_config.py +++ b/.config/t1_to_template_syn_config.py @@ -36,7 +36,7 @@ c.AntsConfiguration.passes = [{ "conv_eps": 1e-7, - "conv_max_iter": [50, 50, 20, 20], + "conv_max_iter": [100, 50, 50, 20, 20], "conv_win": 10, "grad_step": 0.1, "var_penality": 3, diff --git a/modules/workflows/t1_registration.nf b/modules/workflows/t1_registration.nf index 4d8e25f..890099c 100644 --- a/modules/workflows/t1_registration.nf +++ b/modules/workflows/t1_registration.nf @@ -216,7 +216,7 @@ workflow t12b0_registration { t1_to_b0_affine.out.t1, t1_to_b0_affine.out.dwi_mask, t1_to_b0_affine.out.t1_mask, - mask_template.out.image, + resample_template.out.image, resample_template.out.mask, resample_dilated_mask.out.image, dwi_metadata_channel, From b154babba15a6b5188a28b2f9c6b750699e13c86 Mon Sep 17 00:00:00 2001 From: Alex Valcourt Caron Date: Wed, 19 Jun 2024 21:21:58 -0400 Subject: [PATCH 03/21] registration with cc, nlmneans with coils, better n4, can skip dwi preproc --- .config/b0_to_template_syn_config.py | 62 +- .config/dwi_n4_normalization_config.py | 6 +- .config/dwi_n4_normalization_quick_config.py | 4 +- .config/t1_n4_normalization_config.py | 6 +- .config/t1_to_b0_syn_config.py | 24 +- .config/t1_to_template_syn_config.py | 43 +- modules/processes/denoise.nf | 1 + workflows/preprocess.nf | 1030 +++++++++--------- 8 files changed, 565 insertions(+), 611 deletions(-) diff --git a/.config/b0_to_template_syn_config.py b/.config/b0_to_template_syn_config.py index 1978629..e8d159b 100644 --- a/.config/b0_to_template_syn_config.py +++ b/.config/b0_to_template_syn_config.py @@ -35,8 +35,8 @@ c.AntsConfiguration.match_histogram = False c.AntsConfiguration.passes = [{ - "conv_eps": 1e-6, - "conv_max_iter": [100, 50, 20, 10, 10], + "conv_eps": 1e-8, + "conv_max_iter": [100, 100, 70, 50, 20], "conv_win": 10, "grad_step": 0.1, "var_penality": 3, @@ -47,7 +47,7 @@ "target_index": 0, "moving_index": 1, "args": [ - 0.65, + 0.75, 64, "Regular", 1. @@ -58,8 +58,8 @@ "target_index": 0, "moving_index": 2, "args": [ - 0.35, - 2, + 0.25, + 4, "Regular", 1. ], @@ -67,60 +67,18 @@ } ], "shrinks": [ - 12, - 8, + 10, + 6, 4, 2, 1 ], "smoothing": [ + 5., 3., - 1.5, + 2., 1., - 0.5, - 0 - ] -}, { - "conv_eps": 1e-5, - "conv_max_iter": [50, 20, 20], - "conv_win": 20, - "grad_step": 0.1, - "var_penality": 3, - "var_total": 0, - "klass": "mrHARDI.traits.ants.AntsSyN", - "metrics": [ - { - "target_index": 0, - "moving_index": 1, - "args": [ - 0.65, - 64, - "Regular", - 1. - ], - "klass": "mrHARDI.traits.ants.MetricMI" - }, - { - "target_index": 0, - "moving_index": 2, - "args": [ - 0.35, - 2, - "Regular", - 1. - ], - "klass": "mrHARDI.traits.ants.MetricCC" - } - ], - "shrinks": [ - 8, - 4, - 1 - ], - "smoothing": [ - 1.5, - 1., - 0 + 0. ] }] diff --git a/.config/dwi_n4_normalization_config.py b/.config/dwi_n4_normalization_config.py index 1fd2818..dde13a5 100644 --- a/.config/dwi_n4_normalization_config.py +++ b/.config/dwi_n4_normalization_config.py @@ -23,15 +23,15 @@ # ----------------------------------------------------------------------------- # N4BiasCorrectionConfiguration(mrHARDIConfigurable) configuration -c.N4BiasCorrectionConfiguration.bins = 150 +c.N4BiasCorrectionConfiguration.bins = 200 c.N4BiasCorrectionConfiguration.filter_width = 0.60 c.N4BiasCorrectionConfiguration.spline_order = 3 -c.N4BiasCorrectionConfiguration.nvox_between_knots = 16.0 +c.N4BiasCorrectionConfiguration.nvox_between_knots = 70.0 -c.N4BiasCorrectionConfiguration.iterations = [100, 100, 50, 30] +c.N4BiasCorrectionConfiguration.iterations = [300, 300, 300, 150, 70] c.N4BiasCorrectionConfiguration.noise = 0.01 diff --git a/.config/dwi_n4_normalization_quick_config.py b/.config/dwi_n4_normalization_quick_config.py index 1dcc195..83658f7 100644 --- a/.config/dwi_n4_normalization_quick_config.py +++ b/.config/dwi_n4_normalization_quick_config.py @@ -27,9 +27,9 @@ c.N4BiasCorrectionConfiguration.filter_width = 0.6 -c.N4BiasCorrectionConfiguration.nvox_between_knots = 16.0 +c.N4BiasCorrectionConfiguration.nvox_between_knots = 70.0 -c.N4BiasCorrectionConfiguration.iterations = [300, 150, 75, 40] +c.N4BiasCorrectionConfiguration.iterations = [300, 300, 150, 75, 40] c.N4BiasCorrectionConfiguration.noise = 0.01 diff --git a/.config/t1_n4_normalization_config.py b/.config/t1_n4_normalization_config.py index 48a0803..dde13a5 100644 --- a/.config/t1_n4_normalization_config.py +++ b/.config/t1_n4_normalization_config.py @@ -23,15 +23,15 @@ # ----------------------------------------------------------------------------- # N4BiasCorrectionConfiguration(mrHARDIConfigurable) configuration -c.N4BiasCorrectionConfiguration.bins = 150 +c.N4BiasCorrectionConfiguration.bins = 200 c.N4BiasCorrectionConfiguration.filter_width = 0.60 c.N4BiasCorrectionConfiguration.spline_order = 3 -c.N4BiasCorrectionConfiguration.nvox_between_knots = 16.0 +c.N4BiasCorrectionConfiguration.nvox_between_knots = 70.0 -c.N4BiasCorrectionConfiguration.iterations = [300, 300, 120, 120] +c.N4BiasCorrectionConfiguration.iterations = [300, 300, 300, 150, 70] c.N4BiasCorrectionConfiguration.noise = 0.01 diff --git a/.config/t1_to_b0_syn_config.py b/.config/t1_to_b0_syn_config.py index 7d27dc4..6be57ce 100644 --- a/.config/t1_to_b0_syn_config.py +++ b/.config/t1_to_b0_syn_config.py @@ -35,8 +35,8 @@ c.AntsConfiguration.match_histogram = False c.AntsConfiguration.passes = [{ - "conv_eps": 1e-6, - "conv_max_iter": [30, 30], + "conv_eps": 1e-8, + "conv_max_iter": [100, 100, 70, 50, 20], "conv_win": 10, "grad_step": 0.1, "var_penality": 3, @@ -47,19 +47,19 @@ "target_index": 0, "moving_index": 0, "args": [ - 0.65, - 2, + 0.75, + 64, "Regular", 1. ], - "klass": "mrHARDI.traits.ants.MetricCC" + "klass": "mrHARDI.traits.ants.MetricMI" }, { "target_index": 1, "moving_index": 0, "args": [ - 0.35, - 2, + 0.25, + 4, "Regular", 1. ], @@ -67,12 +67,18 @@ } ], "shrinks": [ + 10, + 6, + 4, 2, 1 ], "smoothing": [ - 0.5, - 0 + 5., + 3., + 2., + 1., + 0. ] }] diff --git a/.config/t1_to_template_syn_config.py b/.config/t1_to_template_syn_config.py index c52ab9f..887c0b4 100644 --- a/.config/t1_to_template_syn_config.py +++ b/.config/t1_to_template_syn_config.py @@ -36,42 +36,7 @@ c.AntsConfiguration.passes = [{ "conv_eps": 1e-7, - "conv_max_iter": [100, 50, 50, 20, 20], - "conv_win": 10, - "grad_step": 0.1, - "var_penality": 3, - "var_total": 0, - "klass": "mrHARDI.traits.ants.AntsSyN", - "metrics": [ - { - "target_index": 0, - "moving_index": 0, - "args": [ - 1.0, - 64, - "Regular", - 1.0 - ], - "klass": "mrHARDI.traits.ants.MetricMI" - } - ], - "shrinks": [ - 12, - 8, - 4, - 2, - 1 - ], - "smoothing": [ - 6., - 4., - 2., - 1., - 0. - ] -}, { - "conv_eps": 1e-7, - "conv_max_iter": [20, 10], + "conv_max_iter": [100, 100, 70, 50, 20], "conv_win": 10, "grad_step": 0.1, "var_penality": 3, @@ -91,11 +56,17 @@ } ], "shrinks": [ + 10, + 6, 4, + 2, 1 ], "smoothing": [ + 5., + 3., 2., + 1., 0. ] }] diff --git a/modules/processes/denoise.nf b/modules/processes/denoise.nf index c6fbd31..3bbdfb9 100644 --- a/modules/processes/denoise.nf +++ b/modules/processes/denoise.nf @@ -70,6 +70,7 @@ process nlmeans_denoise { mrhardi nlmeans \ --in $image \ --out ${image.simpleName}__nlmeans_denoised \ + --coils 64 \ --processes $task.cpus $args $after_script """ diff --git a/workflows/preprocess.nf b/workflows/preprocess.nf index 09af1aa..d633a28 100644 --- a/workflows/preprocess.nf +++ b/workflows/preprocess.nf @@ -153,6 +153,8 @@ params.resampling_min_resolution = false params.force_resampling_resolution = false // T1 preprocess workflow parameters +params.preprocess_dwi = true +params.resample_dwi = true params.denoise_t1 = true params.nlmeans_t1 = true params.t1_intensity_normalization = true @@ -198,265 +200,218 @@ workflow preprocess_wkf { t1_channel = t1_preprocess_wkf.out.t1 t1_mask_channel = t1_preprocess_wkf.out.mask - // Fix odd number of slices in phase direction for EPI correction - check_odd_dimensions( - dwi_channel - .join(rev_channel) - .join(dwi_mask_channel) - .join(collect_paths(meta_channel.join(rev_meta_channel))), - "preprocess" - ) - - rev_bval_bvec_channel = fill_missing_datapoints( - check_odd_dimensions.out.rev_bval_bvec, - ref_id_channel, - 1, ["", ""] - ) - - dwi_channel = check_odd_dimensions.out.dwi - rev_channel = fill_missing_datapoints( - check_odd_dimensions.out.rev, - ref_id_channel, - 1, [""] - ).join(rev_bval_bvec_channel) - dwi_mask_channel = fill_missing_datapoints( - check_odd_dimensions.out.mask, - ref_id_channel, - 1, [""] - ) + if (params.preprocess_dwi) { + // Fix odd number of slices in phase direction for EPI correction + check_odd_dimensions( + dwi_channel + .join(rev_channel) + .join(dwi_mask_channel) + .join(collect_paths(meta_channel.join(rev_meta_channel))), + "preprocess" + ) - checked_meta_channel = exclude_missing_datapoints( - check_odd_dimensions.out.metadata - .map{ it.flatten() } - .map{ [it[0], it[1..-1]] } - .transpose(), - 1, "" - ).groupTuple() - - meta_channel = checked_meta_channel - .map{ [it[0], it[1].findAll{ i -> !i.simpleName.contains("_rev") }].flatten() } - rev_meta_channel = fill_missing_datapoints( - checked_meta_channel - .map{ [it[0], it[1].findAll{ i -> i.simpleName.contains("_rev") }].flatten() }, - ref_id_channel, - 1, [""] - ) + rev_bval_bvec_channel = fill_missing_datapoints( + check_odd_dimensions.out.rev_bval_bvec, + ref_id_channel, + 1, ["", ""] + ) - // Copy input channels for later - dwi_channel.tap{ raw_dwi_channel } - rev_channel.tap{ raw_rev_channel } - t1_channel.tap{ raw_t1_channel } - t1_mask_channel.tap{ raw_t1_mask_channel } - meta_channel.tap{ raw_meta_channel } - rev_meta_channel.tap{ raw_rev_meta_channel } - - // Perform DWI and b0 denoising - if ( params.gaussian_noise_correction ) { - dwi_denoise_wkf(dwi_channel, dwi_mask_channel, meta_channel, "true") - dwi_channel = replace_dwi_file(dwi_channel, dwi_denoise_wkf.out.image) - meta_channel = dwi_denoise_wkf.out.metadata - - rev_denoise_wkf(rev_channel, dwi_mask_channel, rev_meta_channel, "false") - rev_channel = replace_dwi_file(rev_channel, rev_denoise_wkf.out.image) - rev_meta_channel = fill_missing_datapoints( - rev_denoise_wkf.out.metadata, + dwi_channel = check_odd_dimensions.out.dwi + rev_channel = fill_missing_datapoints( + check_odd_dimensions.out.rev, + ref_id_channel, + 1, [""] + ).join(rev_bval_bvec_channel) + dwi_mask_channel = fill_missing_datapoints( + check_odd_dimensions.out.mask, ref_id_channel, 1, [""] ) - } - // Perform DWI and b0 gibbs correction - if ( params.gibbs_ringing_correction ) { - dwi_gibbs_removal(dwi_channel.map{ it[0..1] }.join(meta_channel), "preprocess", "true") - dwi_channel = replace_dwi_file(dwi_channel, dwi_gibbs_removal.out.image) - meta_channel = dwi_gibbs_removal.out.metadata - - rev_gibbs_removal( - exclude_missing_datapoints(rev_channel.map{ it[0..1] }.join(rev_meta_channel), 1, ""), - "preprocess", "false" - ) - rev_channel = replace_dwi_file( - rev_channel, - fill_missing_datapoints(rev_gibbs_removal.out.image, ref_id_channel, 1, [""]) - ) - rev_meta_channel = fill_missing_datapoints(rev_gibbs_removal.out.metadata, ref_id_channel, 1, [""]) - } + checked_meta_channel = exclude_missing_datapoints( + check_odd_dimensions.out.metadata + .map{ it.flatten() } + .map{ [it[0], it[1..-1]] } + .transpose(), + 1, "" + ).groupTuple() - // Perform DWI signal normalization between b0 volumes - if ( params.normalize_inter_b0 ) { - normalize_inter_b0( - dwi_channel - .map{ it[0..2] } - .join(rev_channel.map{ it[0..2] }) - .join(meta_channel) - .join(rev_meta_channel), - "preprocess", - params.b0_to_b0_normalization_config - ) - dwi_channel = replace_dwi_file(dwi_channel, normalize_inter_b0.out.dwi) - meta_channel = normalize_inter_b0.out.dwi_metadata - rev_channel = replace_dwi_file( - rev_channel, - fill_missing_datapoints(normalize_inter_b0.out.rev, ref_id_channel, 1, [""]) - ) + meta_channel = checked_meta_channel + .map{ [it[0], it[1].findAll{ i -> !i.simpleName.contains("_rev") }].flatten() } rev_meta_channel = fill_missing_datapoints( - normalize_inter_b0.out.rev_metadata, + checked_meta_channel + .map{ [it[0], it[1].findAll{ i -> i.simpleName.contains("_rev") }].flatten() }, ref_id_channel, 1, [""] ) - } - // Average consecutive b0 volumes just like for EPI correction - squash_wkf( - dwi_channel, - rev_channel, - meta_channel.join(rev_meta_channel), - "" - ) + // Copy input channels for later + dwi_channel.tap{ raw_dwi_channel } + rev_channel.tap{ raw_rev_channel } + t1_channel.tap{ raw_t1_channel } + t1_mask_channel.tap{ raw_t1_mask_channel } + meta_channel.tap{ raw_meta_channel } + rev_meta_channel.tap{ raw_rev_meta_channel } + + // Perform DWI and b0 denoising + if ( params.gaussian_noise_correction ) { + dwi_denoise_wkf(dwi_channel, dwi_mask_channel, meta_channel, "true") + dwi_channel = replace_dwi_file(dwi_channel, dwi_denoise_wkf.out.image) + meta_channel = dwi_denoise_wkf.out.metadata + + rev_denoise_wkf(rev_channel, dwi_mask_channel, rev_meta_channel, "false") + rev_channel = replace_dwi_file(rev_channel, rev_denoise_wkf.out.image) + rev_meta_channel = fill_missing_datapoints( + rev_denoise_wkf.out.metadata, + ref_id_channel, + 1, [""] + ) + } - dwi_channel = squash_wkf.out.dwi - rev_channel = squash_wkf.out.rev - - squashed_meta_channel = exclude_missing_datapoints( - squash_wkf.out.metadata - .map{ it.flatten() } - .map{ [it[0], it[1..-1]] } - .transpose(), - 1, "" - ).groupTuple() - - meta_channel = squashed_meta_channel - .map{ [it[0], it[1].findAll{ i -> !i.simpleName.contains("_rev") }].flatten() } - - rev_meta_channel = fill_missing_datapoints( - squashed_meta_channel - .map{ [it[0], it[1].findAll{ i -> i.simpleName.contains("_rev") }].flatten() }, - ref_id_channel, - 1, [""] - ) + // Perform DWI and b0 gibbs correction + if ( params.gibbs_ringing_correction ) { + dwi_gibbs_removal(dwi_channel.map{ it[0..1] }.join(meta_channel), "preprocess", "true") + dwi_channel = replace_dwi_file(dwi_channel, dwi_gibbs_removal.out.image) + meta_channel = dwi_gibbs_removal.out.metadata - // Extract mean b0 - dwi_b0( - dwi_channel - .map{ it[0..2] } - .join(meta_channel.map{ [it[0], it[1..-1]] }), - "preprocess", - "false", - params.extract_mean_b0_base_config - ) - - b0_channel = dwi_b0.out.b0 - b0_metadata_channel = dwi_b0.out.metadata + rev_gibbs_removal( + exclude_missing_datapoints(rev_channel.map{ it[0..1] }.join(rev_meta_channel), 1, ""), + "preprocess", "false" + ) + rev_channel = replace_dwi_file( + rev_channel, + fill_missing_datapoints(rev_gibbs_removal.out.image, ref_id_channel, 1, [""]) + ) + rev_meta_channel = fill_missing_datapoints(rev_gibbs_removal.out.metadata, ref_id_channel, 1, [""]) + } - // EPI correction - ec2eddy_channel = ref_id_channel.map{ it + ["", "", []] } - epi_corrected_dwi_channel = dwi_channel - epi_corrected_meta_channel = meta_channel - if ( params.epi_correction ) { - ref_rev_id_channel = exclude_missing_datapoints( - raw_rev_channel, 1, "" - ).map{ [it[0]] } - excluded_id_channel = filter_datapoints( - raw_rev_channel, { it[1] == "" } - ).map{ [it[0]] } + // Perform DWI signal normalization between b0 volumes + if ( params.normalize_inter_b0 ) { + normalize_inter_b0( + dwi_channel + .map{ it[0..2] } + .join(rev_channel.map{ it[0..2] }) + .join(meta_channel) + .join(rev_meta_channel), + "preprocess", + params.b0_to_b0_normalization_config + ) + dwi_channel = replace_dwi_file(dwi_channel, normalize_inter_b0.out.dwi) + meta_channel = normalize_inter_b0.out.dwi_metadata + rev_channel = replace_dwi_file( + rev_channel, + fill_missing_datapoints(normalize_inter_b0.out.rev, ref_id_channel, 1, [""]) + ) + rev_meta_channel = fill_missing_datapoints( + normalize_inter_b0.out.rev_metadata, + ref_id_channel, + 1, [""] + ) + } - // Average consecutive b0 volumes to speed up EPI correction - squash_for_epi_correction_wkf( - ref_rev_id_channel.join(raw_dwi_channel), - ref_rev_id_channel.join(raw_rev_channel), - ref_rev_id_channel.join(raw_meta_channel).join(raw_rev_meta_channel), + // Average consecutive b0 volumes just like for EPI correction + squash_wkf( + dwi_channel, + rev_channel, + meta_channel.join(rev_meta_channel), "" ) - // Run EPI correction sub-workflow - epi_correction_wkf( - squash_for_epi_correction_wkf.out.dwi, - squash_for_epi_correction_wkf.out.rev, - squash_for_epi_correction_wkf.out.metadata.map{ it.flatten() } - ) - - ec_input_dwi_channel = rename_ec_input_dwi( - collect_paths(epi_correction_wkf.out.corrected_indexes.join(dwi_channel)), - "ec_input_dwi" - ).map{ [it[0], it[1][2], it[1][0], it[1][1]] } - + dwi_channel = squash_wkf.out.dwi + rev_channel = squash_wkf.out.rev - ec_input_rev_channel = rename_ec_input_rev( - collect_paths(epi_correction_wkf.out.corrected_indexes.join(rev_channel)), - "ec_input_rev" - ).map{ it.flatten() }.map{ it.size() == 4 ? [it[0], it[3], it[1], it[2]] : it + ["", ""] } - - ec_input_dwi_meta_channel = rename_ec_input_dwi_meta( - epi_correction_wkf.out.in_metadata_w_epi_correction - .map{ [it[0], it[1].find{m -> m.simpleName.contains("_dwi")}, "dwi__ec_input_dwi_metadata"] } - ).map{ it.flatten() } + squashed_meta_channel = exclude_missing_datapoints( + squash_wkf.out.metadata + .map{ it.flatten() } + .map{ [it[0], it[1..-1]] } + .transpose(), + 1, "" + ).groupTuple() - ec_input_rev_meta_channel = rename_ec_input_rev_meta( - epi_correction_wkf.out.in_metadata_w_epi_correction - .map{ [it[0], it[1].find{m -> m.simpleName.contains("_rev")}, "rev__ec_input_rev_metadata"] } - ).map{ it.flatten() } + meta_channel = squashed_meta_channel + .map{ [it[0], it[1].findAll{ i -> !i.simpleName.contains("_rev") }].flatten() } - extract_b0_reference( - ec_input_dwi_channel.map{ it[0..2] + [""] }, - "preprocess", "false", params.extract_mean_b0_base_config + rev_meta_channel = fill_missing_datapoints( + squashed_meta_channel + .map{ [it[0], it[1].findAll{ i -> i.simpleName.contains("_rev") }].flatten() }, + ref_id_channel, + 1, [""] ) - b0_reference_for_registration = extract_b0_reference.out.b0 - apply_transform_epi_rev( - ec_input_rev_channel.map{ it[0..1] } - .join(b0_reference_for_registration) - .join(epi_correction_wkf.out.forward_transform) - .join(epi_correction_wkf.out.reverse_transform) - .map{ it[0..-3] + [it[-2] + it[-1]] } - .map{ it + [["true", "false"], "", ""] }, + // Extract mean b0 + dwi_b0( + dwi_channel + .map{ it[0..2] } + .join(meta_channel.map{ [it[0], it[1..-1]] }), "preprocess", - "", "false", - "", - params.ants_transform_base_config + params.extract_mean_b0_base_config ) - rev_channel = replace_dwi_file(rev_channel, apply_transform_epi_rev.out.image) - - // Applied estimated susceptibility correction to DWI - ec2eddy_channel = Channel.empty() - epi_fieldmap_channel = Channel.empty() - epi_displacement_field_channel = Channel.empty() - if ( params.epi_algorithm == "topup" ) { - ec2eddy_channel = epi_correction_wkf.out.param - .join(epi_correction_wkf.out.prefix) - .join(epi_correction_wkf.out.topup.map{ [it[0], it[1..-1]] }) - - // Applied estimated susceptibility correction to DWI - apply_topup_wkf( - ec_input_dwi_channel, - apply_transform_epi_rev.out.image, - ec2eddy_channel, - ec_input_dwi_meta_channel - .join(ec_input_rev_meta_channel) - .map{ [it[0], it[1..-1]] }, + b0_channel = dwi_b0.out.b0 + b0_metadata_channel = dwi_b0.out.metadata + + // EPI correction + ec2eddy_channel = ref_id_channel.map{ it + ["", "", []] } + epi_corrected_dwi_channel = dwi_channel + epi_corrected_meta_channel = meta_channel + if ( params.epi_correction ) { + ref_rev_id_channel = exclude_missing_datapoints( + raw_rev_channel, 1, "" + ).map{ [it[0]] } + excluded_id_channel = filter_datapoints( + raw_rev_channel, { it[1] == "" } + ).map{ [it[0]] } + + // Average consecutive b0 volumes to speed up EPI correction + squash_for_epi_correction_wkf( + ref_rev_id_channel.join(raw_dwi_channel), + ref_rev_id_channel.join(raw_rev_channel), + ref_rev_id_channel.join(raw_meta_channel).join(raw_rev_meta_channel), "" ) - epi_corrected_dwi_channel = rename_epi_corrected_dwi( - collect_paths(apply_topup_wkf.out.dwi), - "topup_corrected" + // Run EPI correction sub-workflow + epi_correction_wkf( + squash_for_epi_correction_wkf.out.dwi, + squash_for_epi_correction_wkf.out.rev, + squash_for_epi_correction_wkf.out.metadata.map{ it.flatten() } + ) + + ec_input_dwi_channel = rename_ec_input_dwi( + collect_paths(epi_correction_wkf.out.corrected_indexes.join(dwi_channel)), + "ec_input_dwi" ).map{ [it[0], it[1][2], it[1][0], it[1][1]] } - epi_corrected_meta_channel = rename_epi_corrected_meta( - collect_paths(apply_topup_wkf.out.metadata), - "topup_corrected_metadata" + + + ec_input_rev_channel = rename_ec_input_rev( + collect_paths(epi_correction_wkf.out.corrected_indexes.join(rev_channel)), + "ec_input_rev" + ).map{ it.flatten() }.map{ it.size() == 4 ? [it[0], it[3], it[1], it[2]] : it + ["", ""] } + + ec_input_dwi_meta_channel = rename_ec_input_dwi_meta( + epi_correction_wkf.out.in_metadata_w_epi_correction + .map{ [it[0], it[1].find{m -> m.simpleName.contains("_dwi")}, "dwi__ec_input_dwi_metadata"] } ).map{ it.flatten() } - } - else { - epi_displacement_field_channel = epi_correction_wkf.out.field - epi_fieldmap_channel = epi_correction_wkf.out.fieldmap - apply_transform_epi_field( - epi_displacement_field_channel + ec_input_rev_meta_channel = rename_ec_input_rev_meta( + epi_correction_wkf.out.in_metadata_w_epi_correction + .map{ [it[0], it[1].find{m -> m.simpleName.contains("_rev")}, "rev__ec_input_rev_metadata"] } + ).map{ it.flatten() } + + extract_b0_reference( + ec_input_dwi_channel.map{ it[0..2] + [""] }, + "preprocess", "false", params.extract_mean_b0_base_config + ) + + b0_reference_for_registration = extract_b0_reference.out.b0 + apply_transform_epi_rev( + ec_input_rev_channel.map{ it[0..1] } .join(b0_reference_for_registration) .join(epi_correction_wkf.out.forward_transform) - .map{ it[0..-2] + [it[-1]] } - .map{ it + [["true"], "", ""] }, + .join(epi_correction_wkf.out.reverse_transform) + .map{ it[0..-3] + [it[-2] + it[-1]] } + .map{ it + [["true", "false"], "", ""] }, "preprocess", "", "false", @@ -464,302 +419,360 @@ workflow preprocess_wkf { params.ants_transform_base_config ) - apply_epi_field_wkf( - ec_input_dwi_channel.map{ it[0..1] }, - apply_transform_epi_rev.out.image, - apply_transform_epi_field.out.image, - ec_input_dwi_meta_channel - .map{ [it[0], it[1]] }, - "" - ) + rev_channel = replace_dwi_file(rev_channel, apply_transform_epi_rev.out.image) - epi_corrected_dwi_channel = rename_epi_corrected_dwi( - collect_paths(replace_dwi_file(ec_input_dwi_channel, apply_epi_field_wkf.out.dwi)), - "epi_corrected" - ).map{ [it[0], it[1][2], it[1][0], it[1][1]] } - epi_corrected_meta_channel = rename_epi_corrected_meta( - collect_paths(ec_input_dwi_meta_channel), - "epi_corrected_metadata" - ).map{ it.flatten() } - } + // Applied estimated susceptibility correction to DWI + ec2eddy_channel = Channel.empty() + epi_fieldmap_channel = Channel.empty() + epi_displacement_field_channel = Channel.empty() + if ( params.epi_algorithm == "topup" ) { + ec2eddy_channel = epi_correction_wkf.out.param + .join(epi_correction_wkf.out.prefix) + .join(epi_correction_wkf.out.topup.map{ [it[0], it[1..-1]] }) + + // Applied estimated susceptibility correction to DWI + apply_topup_wkf( + ec_input_dwi_channel, + apply_transform_epi_rev.out.image, + ec2eddy_channel, + ec_input_dwi_meta_channel + .join(ec_input_rev_meta_channel) + .map{ [it[0], it[1..-1]] }, + "" + ) - epi_displacement_field_channel = fill_missing_datapoints( - epi_displacement_field_channel, - ref_id_channel, - 1, [""] - ) - epi_fieldmap_channel = fill_missing_datapoints( - epi_fieldmap_channel, - ref_id_channel, - 1, [""] - ) + epi_corrected_dwi_channel = rename_epi_corrected_dwi( + collect_paths(apply_topup_wkf.out.dwi), + "topup_corrected" + ).map{ [it[0], it[1][2], it[1][0], it[1][1]] } + epi_corrected_meta_channel = rename_epi_corrected_meta( + collect_paths(apply_topup_wkf.out.metadata), + "topup_corrected_metadata" + ).map{ it.flatten() } + } + else { + epi_displacement_field_channel = epi_correction_wkf.out.field + epi_fieldmap_channel = epi_correction_wkf.out.fieldmap + + apply_transform_epi_field( + epi_displacement_field_channel + .join(b0_reference_for_registration) + .join(epi_correction_wkf.out.forward_transform) + .map{ it[0..-2] + [it[-1]] } + .map{ it + [["true"], "", ""] }, + "preprocess", + "", + "false", + "", + params.ants_transform_base_config + ) - ec2eddy_channel = fill_missing_datapoints( - ec2eddy_channel, - ref_id_channel, - 1, ["", "", []] - ) + apply_epi_field_wkf( + ec_input_dwi_channel.map{ it[0..1] }, + apply_transform_epi_rev.out.image, + apply_transform_epi_field.out.image, + ec_input_dwi_meta_channel + .map{ [it[0], it[1]] }, + "" + ) - epi_corrected_dwi_channel = excluded_id_channel - .join(dwi_channel) - .mix(epi_corrected_dwi_channel) - epi_corrected_meta_channel = excluded_id_channel - .join(meta_channel) - .mix(epi_corrected_meta_channel) + epi_corrected_dwi_channel = rename_epi_corrected_dwi( + collect_paths(replace_dwi_file(ec_input_dwi_channel, apply_epi_field_wkf.out.dwi)), + "epi_corrected" + ).map{ [it[0], it[1][2], it[1][0], it[1][1]] } + epi_corrected_meta_channel = rename_epi_corrected_meta( + collect_paths(ec_input_dwi_meta_channel), + "epi_corrected_metadata" + ).map{ it.flatten() } + } - // Get average susceptibility corrected b0 - extract_epi_corrected_b0( - epi_corrected_dwi_channel - .map{ it[0..2] } - .join(collect_paths(epi_corrected_meta_channel)), - "preprocess", - "true", - params.extract_mean_b0_base_config - ) + epi_displacement_field_channel = fill_missing_datapoints( + epi_displacement_field_channel, + ref_id_channel, + 1, [""] + ) + epi_fieldmap_channel = fill_missing_datapoints( + epi_fieldmap_channel, + ref_id_channel, + 1, [""] + ) - b0_channel = excluded_id_channel - .join(b0_channel) - .mix(extract_epi_corrected_b0.out.b0) - b0_metadata_channel = excluded_id_channel - .join(b0_metadata_channel) - .mix(extract_epi_corrected_b0.out.metadata) + ec2eddy_channel = fill_missing_datapoints( + ec2eddy_channel, + ref_id_channel, + 1, ["", "", []] + ) - if ( !params.eddy_correction ) { - dwi_channel = epi_corrected_dwi_channel - meta_channel = epi_corrected_meta_channel - } + epi_corrected_dwi_channel = excluded_id_channel + .join(dwi_channel) + .mix(epi_corrected_dwi_channel) + epi_corrected_meta_channel = excluded_id_channel + .join(meta_channel) + .mix(epi_corrected_meta_channel) - // Apply susceptibility corrections to raw images (for comparison) - if ( params.raw_to_processed_space ) { - raw_dwi_channel = rename_transformed_raw_dwi( - collect_paths(raw_dwi_channel), - "raw" - ).map{ [it[0], it[1][2], it[1][0], it[1][1]] } - raw_rev_channel = rename_transformed_raw_rev( - collect_paths(raw_rev_channel).filter{ it[1] }, - "raw" + // Get average susceptibility corrected b0 + extract_epi_corrected_b0( + epi_corrected_dwi_channel + .map{ it[0..2] } + .join(collect_paths(epi_corrected_meta_channel)), + "preprocess", + "true", + params.extract_mean_b0_base_config ) - raw_rev_channel = raw_rev_channel - .map{ it.flatten() } - .map{ it.size() == 4 ? [it[0], it[3], it[1], it[2]] : it + ["", ""] } - raw_meta_channel = excluded_id_channel.join(raw_meta_channel) - .mix( - rename_transformed_raw_metadata( - collect_paths(ec_input_dwi_meta_channel).filter{ it[1] }, - "raw_metadata" - ).map{ it.flatten() } - ) + b0_channel = excluded_id_channel + .join(b0_channel) + .mix(extract_epi_corrected_b0.out.b0) + b0_metadata_channel = excluded_id_channel + .join(b0_metadata_channel) + .mix(extract_epi_corrected_b0.out.metadata) - raw_rev_meta_channel = excluded_id_channel.join(raw_meta_channel) - .mix( - rename_transformed_raw_rev_metadata( - collect_paths(ec_input_rev_meta_channel), - "raw_metadata" - ).map{ it.flatten() } - ) + if ( !params.eddy_correction ) { + dwi_channel = epi_corrected_dwi_channel + meta_channel = epi_corrected_meta_channel + } - if ( params.epi_algorithm == "topup" ) { - raw_apply_topup_wkf( - epi_correction_wkf.out.corrected_indexes.join(raw_dwi_channel), - epi_correction_wkf.out.corrected_indexes - .join(raw_rev_channel) - .map{ it[0..1] }, - ec2eddy_channel, - collect_paths(raw_meta_channel.join(raw_rev_meta_channel)), + // Apply susceptibility corrections to raw images (for comparison) + if ( params.raw_to_processed_space ) { + raw_dwi_channel = rename_transformed_raw_dwi( + collect_paths(raw_dwi_channel), "raw" - ) - - raw_dwi_channel = excluded_id_channel - .join(raw_dwi_channel) - .mix(raw_apply_topup_wkf.out.dwi) - - raw_meta_channel = excluded_id_channel - .join(raw_meta_channel) - .mix(raw_apply_topup_wkf.out.metadata) - } - else { - raw_apply_epi_field_wkf( - epi_correction_wkf.out.corrected_indexes.join(raw_dwi_channel), - epi_correction_wkf.out.corrected_indexes - .join(raw_rev_channel) - .map{ it[0..1] }, - epi_displacement_field_channel, - collect_paths(raw_meta_channel.join(raw_rev_meta_channel)), + ).map{ [it[0], it[1][2], it[1][0], it[1][1]] } + raw_rev_channel = rename_transformed_raw_rev( + collect_paths(raw_rev_channel).filter{ it[1] }, "raw" ) - - raw_dwi_channel = excluded_id_channel - .join(raw_dwi_channel) - .mix(raw_apply_epi_field_wkf.out.dwi) - - raw_meta_channel = excluded_id_channel - .join(raw_meta_channel) - .mix(raw_apply_epi_field_wkf.out.metadata) + raw_rev_channel = raw_rev_channel + .map{ it.flatten() } + .map{ it.size() == 4 ? [it[0], it[3], it[1], it[2]] : it + ["", ""] } + + raw_meta_channel = excluded_id_channel.join(raw_meta_channel) + .mix( + rename_transformed_raw_metadata( + collect_paths(ec_input_dwi_meta_channel).filter{ it[1] }, + "raw_metadata" + ).map{ it.flatten() } + ) + + raw_rev_meta_channel = excluded_id_channel.join(raw_meta_channel) + .mix( + rename_transformed_raw_rev_metadata( + collect_paths(ec_input_rev_meta_channel), + "raw_metadata" + ).map{ it.flatten() } + ) + + if ( params.epi_algorithm == "topup" ) { + raw_apply_topup_wkf( + epi_correction_wkf.out.corrected_indexes.join(raw_dwi_channel), + epi_correction_wkf.out.corrected_indexes + .join(raw_rev_channel) + .map{ it[0..1] }, + ec2eddy_channel, + collect_paths(raw_meta_channel.join(raw_rev_meta_channel)), + "raw" + ) + + raw_dwi_channel = excluded_id_channel + .join(raw_dwi_channel) + .mix(raw_apply_topup_wkf.out.dwi) + + raw_meta_channel = excluded_id_channel + .join(raw_meta_channel) + .mix(raw_apply_topup_wkf.out.metadata) + } + else { + raw_apply_epi_field_wkf( + epi_correction_wkf.out.corrected_indexes.join(raw_dwi_channel), + epi_correction_wkf.out.corrected_indexes + .join(raw_rev_channel) + .map{ it[0..1] }, + epi_displacement_field_channel, + collect_paths(raw_meta_channel.join(raw_rev_meta_channel)), + "raw" + ) + + raw_dwi_channel = excluded_id_channel + .join(raw_dwi_channel) + .mix(raw_apply_epi_field_wkf.out.dwi) + + raw_meta_channel = excluded_id_channel + .join(raw_meta_channel) + .mix(raw_apply_epi_field_wkf.out.metadata) + } } } - } - empty_dwi_mask_id_channel = filter_datapoints( - dwi_mask_channel, - { it[1] == "" } - ).map{ [it[0]] } - dwi_mask_channel = exclude_missing_datapoints(dwi_mask_channel, 1, "") - - // Compute brain mask for the DWI (when missing) - bet_mask( - empty_dwi_mask_id_channel.join(b0_channel), - "preprocess", - "${!params.dwi_mask_from_t1_mask}", - "dwi_mask" - ) - dwi_mask_channel = dwi_mask_channel.mix(bet_mask.out.mask) - - // Get better mask for the DWI from the T1 (when missing and if present) - if ( params.dwi_mask_from_t1_mask ) { - existing_t1_mask_id_channel = exclude_missing_datapoints( - t1_mask_channel, - 1, "" - ).map{ [it[0]] } - absent_t1_mask_id_channel = filter_datapoints( - t1_mask_channel, + empty_dwi_mask_id_channel = filter_datapoints( + dwi_mask_channel, { it[1] == "" } ).map{ [it[0]] } + dwi_mask_channel = exclude_missing_datapoints(dwi_mask_channel, 1, "") - n4_denoise_t1_to_b0_wkf( - existing_t1_mask_id_channel.join(epi_corrected_dwi_channel.map{ it[0..1] }), - existing_t1_mask_id_channel.join(b0_channel), - existing_t1_mask_id_channel.join(dwi_mask_channel), - existing_t1_mask_id_channel.join(epi_corrected_meta_channel), - params.dwi_n4_normalization_quick_config, - false + // Compute brain mask for the DWI (when missing) + bet_mask( + empty_dwi_mask_id_channel.join(b0_channel), + "preprocess", + "${!params.dwi_mask_from_t1_mask}", + "dwi_mask" ) + dwi_mask_channel = dwi_mask_channel.mix(bet_mask.out.mask) + + // Get better mask for the DWI from the T1 (when missing and if present) + if ( params.dwi_mask_from_t1_mask ) { + existing_t1_mask_id_channel = exclude_missing_datapoints( + t1_mask_channel, + 1, "" + ).map{ [it[0]] } + absent_t1_mask_id_channel = filter_datapoints( + t1_mask_channel, + { it[1] == "" } + ).map{ [it[0]] } + + n4_denoise_t1_to_b0_wkf( + existing_t1_mask_id_channel.join(epi_corrected_dwi_channel.map{ it[0..1] }), + existing_t1_mask_id_channel.join(b0_channel), + existing_t1_mask_id_channel.join(dwi_mask_channel), + existing_t1_mask_id_channel.join(epi_corrected_meta_channel), + params.dwi_n4_normalization_quick_config, + false + ) - t1_mask_to_b0( - replace_dwi_file(epi_corrected_dwi_channel, n4_denoise_t1_to_b0_wkf.out.image), - existing_t1_mask_id_channel.join(t1_channel), - existing_t1_mask_id_channel.join(t1_mask_channel), - "false" - ) + t1_mask_to_b0( + replace_dwi_file(epi_corrected_dwi_channel, n4_denoise_t1_to_b0_wkf.out.image), + existing_t1_mask_id_channel.join(t1_channel), + existing_t1_mask_id_channel.join(t1_mask_channel), + "false" + ) - t1_mask_convert_datatype( - t1_mask_to_b0.out.mask, - "uint8", "preprocess", - !params.register_t1_to_dwi, - "dwi_mask", "" - ) + t1_mask_convert_datatype( + t1_mask_to_b0.out.mask, + "uint8", "preprocess", + !params.register_t1_to_dwi, + "dwi_mask", "" + ) - dwi_mask_channel = t1_mask_convert_datatype.out.image - .mix(absent_t1_mask_id_channel.join(dwi_mask_channel)) - } + dwi_mask_channel = t1_mask_convert_datatype.out.image + .mix(absent_t1_mask_id_channel.join(dwi_mask_channel)) + } - // Perform Eddy currents and motion correction on the DWI - if ( params.eddy_correction ) { - dwi_channel = rename_dwi_for_eddy( - collect_paths(dwi_channel), - "to_eddy" - ).map{ [it[0], it[1][2], it[1][0], it[1][1]] } + // Perform Eddy currents and motion correction on the DWI + if ( params.eddy_correction ) { + dwi_channel = rename_dwi_for_eddy( + collect_paths(dwi_channel), + "to_eddy" + ).map{ [it[0], it[1][2], it[1][0], it[1][1]] } - rev_channel = rename_rev_for_eddy( - collect_paths(rev_channel).filter{ it[1] }, - "to_eddy" - ) - rev_channel = rev_channel - .map{ it.flatten() } - .map{ it.size() == 4 ? [it[0], it[3], it[1], it[2]] : it + ["", ""] } + rev_channel = rename_rev_for_eddy( + collect_paths(rev_channel).filter{ it[1] }, + "to_eddy" + ) + rev_channel = rev_channel + .map{ it.flatten() } + .map{ it.size() == 4 ? [it[0], it[3], it[1], it[2]] : it + ["", ""] } - rev_channel = fill_missing_datapoints( - rev_channel, - ref_id_channel, - 1, ["", "", ""] - ) + rev_channel = fill_missing_datapoints( + rev_channel, + ref_id_channel, + 1, ["", "", ""] + ) - meta_channel = rename_dwi_metadata_for_eddy( - collect_paths(meta_channel).filter{ it[1] }, - "to_eddy_metadata" - ).map{ it.flatten() } + meta_channel = rename_dwi_metadata_for_eddy( + collect_paths(meta_channel).filter{ it[1] }, + "to_eddy_metadata" + ).map{ it.flatten() } - rev_meta_channel = rename_rev_metadata_for_eddy( - collect_paths(rev_meta_channel).filter{ it[1] }, - "to_eddy_metadata" - ).map{ it.flatten() } + rev_meta_channel = rename_rev_metadata_for_eddy( + collect_paths(rev_meta_channel).filter{ it[1] }, + "to_eddy_metadata" + ).map{ it.flatten() } - rev_meta_channel = fill_missing_datapoints( - rev_meta_channel, - ref_id_channel, - 1, [""] - ) + rev_meta_channel = fill_missing_datapoints( + rev_meta_channel, + ref_id_channel, + 1, [""] + ) - // Run Eddy sub-workflow - eddy_wkf( - dwi_channel, - dwi_mask_channel, - ec2eddy_channel, - epi_fieldmap_channel, - epi_displacement_field_channel, - rev_channel, - meta_channel.join(rev_meta_channel) - ) + // Run Eddy sub-workflow + eddy_wkf( + dwi_channel, + dwi_mask_channel, + ec2eddy_channel, + epi_fieldmap_channel, + epi_displacement_field_channel, + rev_channel, + meta_channel.join(rev_meta_channel) + ) - dwi_channel = eddy_wkf.out.dwi - .join(eddy_wkf.out.bval) - .join(eddy_wkf.out.bvec) - meta_channel = eddy_wkf.out.metadata - } + dwi_channel = eddy_wkf.out.dwi + .join(eddy_wkf.out.bval) + .join(eddy_wkf.out.bvec) + meta_channel = eddy_wkf.out.metadata + } - // Perform intensity normalization on the DWI - if ( params.dwi_intensity_normalization ) { - // Run N4 sub-workflow - n4_denoise_wkf( - dwi_channel.map{ it[0..1] }, - b0_channel, - dwi_mask_channel, - meta_channel, - params.dwi_n4_normalization_config, - true - ) + // Perform intensity normalization on the DWI + if ( params.dwi_intensity_normalization ) { + // Run N4 sub-workflow + n4_denoise_wkf( + dwi_channel.map{ it[0..1] }, + b0_channel, + dwi_mask_channel, + meta_channel, + params.dwi_n4_normalization_config, + true + ) - dwi_channel = replace_dwi_file(dwi_channel, n4_denoise_wkf.out.image) - meta_channel = n4_denoise_wkf.out.metadata - } + dwi_channel = replace_dwi_file(dwi_channel, n4_denoise_wkf.out.image) + meta_channel = n4_denoise_wkf.out.metadata + } - absent_t1_mask_id_channel = filter_datapoints( - t1_mask_channel, - { it[1] == "" } - ).map{ [it[0]] } - existing_t1_mask_id_channel = exclude_missing_datapoints( - t1_mask_channel, - 1, "" - ).map{ [it[0]] } + absent_t1_mask_id_channel = filter_datapoints( + t1_mask_channel, + { it[1] == "" } + ).map{ [it[0]] } + existing_t1_mask_id_channel = exclude_missing_datapoints( + t1_mask_channel, + 1, "" + ).map{ [it[0]] } - // Get DWI mask in T1 space (for missing T1 masks) - dwi_mask_registration_wkf( - absent_t1_mask_id_channel.join(t1_channel).map{ [it[0], [it[1]]] }, - absent_t1_mask_id_channel.join(b0_channel).map{ [it[0], [it[1]]] }, - absent_t1_mask_id_channel.join(dwi_mask_channel), - null, - null, - absent_t1_mask_id_channel - .join(b0_metadata_channel) - .map{ it[0..1] + [""] }, - "", - false, "", "", - params.b02t1_mask_registration_config, - null - ) + // Get DWI mask in T1 space (for missing T1 masks) + dwi_mask_registration_wkf( + absent_t1_mask_id_channel.join(t1_channel).map{ [it[0], [it[1]]] }, + absent_t1_mask_id_channel.join(b0_channel).map{ [it[0], [it[1]]] }, + absent_t1_mask_id_channel.join(dwi_mask_channel), + null, + null, + absent_t1_mask_id_channel + .join(b0_metadata_channel) + .map{ it[0..1] + [""] }, + "", + false, "", "", + params.b02t1_mask_registration_config, + null + ) - dwi_mask_convert_datatype( - dwi_mask_registration_wkf.out.image, - "uint8", "preprocess", - true, - "t1_mask", "" - ) + dwi_mask_convert_datatype( + dwi_mask_registration_wkf.out.image, + "uint8", "preprocess", + true, + "t1_mask", "" + ) - t1_mask_channel = existing_t1_mask_id_channel - .join(t1_mask_channel) - .mix(dwi_mask_convert_datatype.out.image) - raw_t1_mask_channel = t1_mask_channel - raw_dwi_mask_channel = dwi_mask_channel + t1_mask_channel = existing_t1_mask_id_channel + .join(t1_mask_channel) + .mix(dwi_mask_convert_datatype.out.image) + raw_t1_mask_channel = t1_mask_channel + raw_dwi_mask_channel = dwi_mask_channel + } + else { + // Copy input channels for later + dwi_channel.tap{ raw_dwi_channel } + rev_channel.tap{ raw_rev_channel } + t1_channel.tap{ raw_t1_channel } + t1_mask_channel.tap{ raw_t1_mask_channel } + meta_channel.tap{ raw_meta_channel } + rev_meta_channel.tap{ raw_rev_meta_channel } + } // Compute best resampling reference resampling_reference( @@ -774,16 +787,22 @@ workflow preprocess_wkf { pvf_to_resample_channel = pvf_channel.filter{ !it[1].isEmpty() } // Resample all volumes - resample_dwi( - dwi_channel - .map{ it[0..1] } - .join(reference_channel) - .join(dwi_mask_channel) - .join(meta_channel), - "preprocess", "lin", - true, true, - "dwi_mask", "" - ) + if (params.resample_dwi) { + resample_dwi( + dwi_channel + .map{ it[0..1] } + .join(reference_channel) + .join(dwi_mask_channel) + .join(meta_channel), + "preprocess", "lin", + true, true, + "dwi_mask", "" + ) + + dwi_channel = replace_dwi_file(dwi_channel, resample_dwi.out.image) + dwi_mask_channel = resample_dwi.out.mask + meta_channel = resample_dwi.out.metadata + } resample_t1( t1_channel @@ -826,9 +845,6 @@ workflow preprocess_wkf { "", "segmentation" ) - dwi_channel = replace_dwi_file(dwi_channel, resample_dwi.out.image) - dwi_mask_channel = resample_dwi.out.mask - meta_channel = resample_dwi.out.metadata t1_channel = resample_t1.out.image t1_mask_channel = resample_t1.out.mask @@ -839,16 +855,21 @@ workflow preprocess_wkf { .mix(pvf_channel.filter{ it[1].isEmpty() }) if ( params.raw_to_processed_space ) { - resample_raw_dwi( - raw_dwi_channel - .map{ it[0..1] } - .join(reference_channel) - .join(raw_dwi_mask_channel) - .join(raw_meta_channel), - "preprocess", "lin", - true, true, - "dwi_mask", "raw" - ) + if (params.resample_dwi) { + resample_raw_dwi( + raw_dwi_channel + .map{ it[0..1] } + .join(reference_channel) + .join(raw_dwi_mask_channel) + .join(raw_meta_channel), + "preprocess", "lin", + true, true, + "dwi_mask", "raw" + ) + raw_dwi_channel = replace_dwi_file(raw_dwi_channel, resample_raw_dwi.out.image) + raw_meta_channel = resample_raw_dwi.out.metadata + raw_dwi_mask_channel = resample_raw_dwi.out.mask + } resample_raw_t1( raw_t1_channel @@ -860,11 +881,8 @@ workflow preprocess_wkf { "t1_mask", "raw" ) - raw_dwi_channel = replace_dwi_file(raw_dwi_channel, resample_raw_dwi.out.image) - raw_meta_channel = resample_raw_dwi.out.metadata raw_t1_channel = resample_raw_t1.out.image raw_t1_mask_channel = resample_raw_t1.out.mask - raw_dwi_mask_channel = resample_raw_dwi.out.mask } // Get tissue masks from PVF From 7c5552a2343e1d27a6eaba95ecdb97bdfef978a8 Mon Sep 17 00:00:00 2001 From: AlexVCaron Date: Tue, 2 Jul 2024 10:29:13 -0400 Subject: [PATCH 04/21] robustify registration, at the cost of time execution (get a big CPU machine or wait) --- .config/b0_to_template_affine_config.py | 22 +-- .config/b0_to_template_syn_config.py | 8 +- .config/dwi_n4_normalization_config.py | 2 +- .config/dwi_n4_normalization_quick_config.py | 2 +- .config/t1_n4_normalization_config.py | 2 +- .config/t1_to_b0_syn_config.py | 10 +- .config/t1_to_template_affine_config.py | 29 ++-- .config/t1_to_template_syn_config.py | 20 ++- ...sue_segmentation_mask_no_bv_dilated.nii.gz | Bin 225024 -> 218814 bytes modules/processes/denoise.nf | 136 ++++++++++-------- modules/processes/reconstruct.nf | 4 +- modules/processes/register.nf | 37 ++++- modules/processes/upsample.nf | 11 +- modules/workflows/segment.nf | 71 +++++---- modules/workflows/t1_registration.nf | 32 ++--- nextflow.config | 2 +- workflows/preprocess.nf | 96 +++++++------ 17 files changed, 283 insertions(+), 201 deletions(-) diff --git a/.config/b0_to_template_affine_config.py b/.config/b0_to_template_affine_config.py index 7efa503..804f16f 100644 --- a/.config/b0_to_template_affine_config.py +++ b/.config/b0_to_template_affine_config.py @@ -14,7 +14,7 @@ c.AntsRegistration.log_level = 30 -c.AntsRegistration.init_with_ants_ai = True +c.AntsRegistration.init_with_ants_ai = False c.AntsRegistration.base_config_file = "" @@ -24,6 +24,10 @@ # AntsConfiguration(mrHARDIConfigurable) configuration # ----------------------------------------------------------------------------- +c.AntsConfiguration.coarse_angular_split = 3 + +c.AntsConfiguration.fine_angular_split = 4 + c.AntsConfiguration.accross_modalities = True c.AntsConfiguration.dimension = 3 @@ -39,10 +43,10 @@ c.AntsConfiguration.match_histogram = False c.AntsConfiguration.passes = [{ - "conv_eps": 1e-5, + "conv_eps": 1e-7, "conv_max_iter": [400, 200, 100, 50], "conv_win": 20, - "grad_step": 0.1, + "grad_step": 0.05, "klass": "mrHARDI.traits.ants.AntsRigid", "metrics": [ { @@ -50,9 +54,9 @@ "moving_index": 1, "args": [ 1., - 64, + 128, "Regular", - 0.7, + 1., True ], "klass": "mrHARDI.traits.ants.MetricMI" @@ -71,10 +75,10 @@ 0 ] }, { - "conv_eps": 1e-5, + "conv_eps": 1e-7, "conv_max_iter": [500, 300, 150, 75], "conv_win": 10, - "grad_step": 0.1, + "grad_step": 0.05, "klass": "mrHARDI.traits.ants.AntsAffine", "metrics": [ { @@ -82,9 +86,9 @@ "moving_index": 1, "args": [ 1., - 64, + 128, "Regular", - 0.8, + 1., True ], "klass": "mrHARDI.traits.ants.MetricMI" diff --git a/.config/b0_to_template_syn_config.py b/.config/b0_to_template_syn_config.py index e8d159b..d464d18 100644 --- a/.config/b0_to_template_syn_config.py +++ b/.config/b0_to_template_syn_config.py @@ -35,12 +35,12 @@ c.AntsConfiguration.match_histogram = False c.AntsConfiguration.passes = [{ - "conv_eps": 1e-8, - "conv_max_iter": [100, 100, 70, 50, 20], + "conv_eps": 1e-7, + "conv_max_iter": [200, 200, 140, 100, 40], "conv_win": 10, - "grad_step": 0.1, + "grad_step": 0.05, "var_penality": 3, - "var_total": 0, + "var_total": 3, "klass": "mrHARDI.traits.ants.AntsSyN", "metrics": [ { diff --git a/.config/dwi_n4_normalization_config.py b/.config/dwi_n4_normalization_config.py index dde13a5..3ddd7f6 100644 --- a/.config/dwi_n4_normalization_config.py +++ b/.config/dwi_n4_normalization_config.py @@ -29,7 +29,7 @@ c.N4BiasCorrectionConfiguration.spline_order = 3 -c.N4BiasCorrectionConfiguration.nvox_between_knots = 70.0 +c.N4BiasCorrectionConfiguration.nvox_between_knots = 10.0 c.N4BiasCorrectionConfiguration.iterations = [300, 300, 300, 150, 70] diff --git a/.config/dwi_n4_normalization_quick_config.py b/.config/dwi_n4_normalization_quick_config.py index 83658f7..dd1cabe 100644 --- a/.config/dwi_n4_normalization_quick_config.py +++ b/.config/dwi_n4_normalization_quick_config.py @@ -27,7 +27,7 @@ c.N4BiasCorrectionConfiguration.filter_width = 0.6 -c.N4BiasCorrectionConfiguration.nvox_between_knots = 70.0 +c.N4BiasCorrectionConfiguration.nvox_between_knots = 10.0 c.N4BiasCorrectionConfiguration.iterations = [300, 300, 150, 75, 40] diff --git a/.config/t1_n4_normalization_config.py b/.config/t1_n4_normalization_config.py index dde13a5..3ddd7f6 100644 --- a/.config/t1_n4_normalization_config.py +++ b/.config/t1_n4_normalization_config.py @@ -29,7 +29,7 @@ c.N4BiasCorrectionConfiguration.spline_order = 3 -c.N4BiasCorrectionConfiguration.nvox_between_knots = 70.0 +c.N4BiasCorrectionConfiguration.nvox_between_knots = 10.0 c.N4BiasCorrectionConfiguration.iterations = [300, 300, 300, 150, 70] diff --git a/.config/t1_to_b0_syn_config.py b/.config/t1_to_b0_syn_config.py index 6be57ce..957205b 100644 --- a/.config/t1_to_b0_syn_config.py +++ b/.config/t1_to_b0_syn_config.py @@ -35,10 +35,10 @@ c.AntsConfiguration.match_histogram = False c.AntsConfiguration.passes = [{ - "conv_eps": 1e-8, - "conv_max_iter": [100, 100, 70, 50, 20], + "conv_eps": 1e-7, + "conv_max_iter": [200, 200, 140, 100, 40], "conv_win": 10, - "grad_step": 0.1, + "grad_step": 0.05, "var_penality": 3, "var_total": 0, "klass": "mrHARDI.traits.ants.AntsSyN", @@ -48,7 +48,7 @@ "moving_index": 0, "args": [ 0.75, - 64, + 128, "Regular", 1. ], @@ -59,7 +59,7 @@ "moving_index": 0, "args": [ 0.25, - 4, + 8, "Regular", 1. ], diff --git a/.config/t1_to_template_affine_config.py b/.config/t1_to_template_affine_config.py index c2e4184..1673df1 100644 --- a/.config/t1_to_template_affine_config.py +++ b/.config/t1_to_template_affine_config.py @@ -18,7 +18,7 @@ c.AntsRegistration.base_config_file = "" -c.AntsRegistration.init_with_ants_ai = True +c.AntsRegistration.init_with_ants_ai = False c.AntsRegistration.verbose = True @@ -28,7 +28,7 @@ c.AntsConfiguration.coarse_angular_split = 3 -c.AntsConfiguration.coarse_linear_split = 3 +c.AntsConfiguration.fine_angular_split = 4 c.AntsConfiguration.accross_modalities = False @@ -45,10 +45,10 @@ c.AntsConfiguration.match_histogram = True c.AntsConfiguration.passes = [{ - "conv_eps": 1e-6, - "conv_max_iter": [200, 100, 50, 20], + "conv_eps": 1e-7, + "conv_max_iter": [1000, 400, 200, 100, 100], "conv_win": 20, - "grad_step": 0.1, + "grad_step": 0.05, "klass": "mrHARDI.traits.ants.AntsAffine", "metrics": [ { @@ -56,21 +56,34 @@ "moving_index": 0, "args": [ 1.0, - 128, + 4, "Regular", - 0.8, + 1.0 + ], + "klass": "mrHARDI.traits.ants.MetricCC" + }, + { + "target_index": 0, + "moving_index": 0, + "args": [ + 1.0, + 32, + "Regular", + 1.0, True ], "klass": "mrHARDI.traits.ants.MetricMI" } ], "shrinks": [ - 8, + 10, + 6, 4, 2, 1 ], "smoothing": [ + 5., 3., 2., 1., diff --git a/.config/t1_to_template_syn_config.py b/.config/t1_to_template_syn_config.py index 887c0b4..b47998d 100644 --- a/.config/t1_to_template_syn_config.py +++ b/.config/t1_to_template_syn_config.py @@ -36,23 +36,35 @@ c.AntsConfiguration.passes = [{ "conv_eps": 1e-7, - "conv_max_iter": [100, 100, 70, 50, 20], + "conv_max_iter": [200, 200, 140, 100, 40], "conv_win": 10, - "grad_step": 0.1, + "grad_step": 0.05, "var_penality": 3, - "var_total": 0, + "var_total": 3, "klass": "mrHARDI.traits.ants.AntsSyN", "metrics": [ { "target_index": 0, "moving_index": 0, "args": [ - 1.0, + 0.6, 4, "Regular", 1.0 ], "klass": "mrHARDI.traits.ants.MetricCC" + }, + { + "target_index": 0, + "moving_index": 0, + "args": [ + 0.4, + 64, + "Regular", + 1.0, + True + ], + "klass": "mrHARDI.traits.ants.MetricMI" } ], "shrinks": [ diff --git a/.data/maccaca_mulatta/tissue_segmentation/tissue_segmentation_mask_no_bv_dilated.nii.gz b/.data/maccaca_mulatta/tissue_segmentation/tissue_segmentation_mask_no_bv_dilated.nii.gz index 4f9ef3f19ed45f303d0b20ab3d7e7cec3bd50769..0ec15d3c3bf46f5a4bb015c76dfe23cb4d002dd1 100644 GIT binary patch literal 218814 zcmc$`3s_TE+V@>`tdBbCRBCyZqSLA{io#UXR3hTpDgtdiQ00&w6pBDV2&52_*s54+ z(N;u62;m@7M3M?ZOhQO&t;#Wp2q}b3ssagwBvo>dgk-<>3Tkbqoqo?8zIU#QHwNVQoo{dD<81 z7W#w*sj;NzGQzu@*A@qxCVrtlN*}i%H4F`Ppdlj+Z9+o(EAh-_*a#Lim0e;f>DU6jKwJFNw0O)oNBZdy~G`z9iM%94RC6{f_rE*!CC# zbwS0!33Le2RI5w7*&Fq}Q{R<&z~OLoc$-cFhv5vTG;QkAQ1)hSpJjRKYw|K#1%FLu zc&jnWkje=vai-Ach>9U(VHkuAK*(DtL;xWj+7!bzj-;57%$y^tg6qhJ5HBr+#KLt% z3;i;C6vjPfSe9t(>}IYsvs-MDiFjwIqiclj z0CeT-RulkTpWo~1hU+jNY@jRQ~vPV`+phm_9Sur>!sEM#%Oc9GT2w*%&;%s z`E6$(eL~Hf8tasg45s>V(?xvrO>15LD)YCF|C`}j{d3brm1t-XzWhAP_%{p%_0P=| zm7*av47s2o1{z|ap?(xK0z=_wC>ss+q9`=9rvAB?L?^6S>e#e#OHyaUx774#{5u9u zmFrh71%oXusjrmOHh--Iu54JWABd=Mtn7hZ=p>F>kgdGK!QRhVlx zZBd5xFjHWz%@Li3@3;mglUF}{$1C6rLYPcFXfiP%gn%Yf34|<#nW9INX$MRuAxx&8 z4hX4-$>f|2Ayp7kiWO|)YVFHY<6x#77s9OVhFNT?8~OCvU&Bxu&qI~_UF2_m7_p$%R-56AR*!_bIk!Pj1g)_ZBD{wRGieWr`f!^GgC z=`$5gpHvi;kA~3nIgaMaUNm$X4Wa2X6`%v(^j3op8vY!nP#Bs*vk;=L!|+^~Lgt?) zeyv^s(}#N(-r)~(Bm5eCWi#PWPCU%6BQU!b!eOtwFnuP&+z3I_=Ne3(Iq=1sQOGfC zn|c#s(LMO$pP7KaJHuf5G$C9`VETN5<_4N!=VAJ+z*w90gO=5)VZ1V#ix6g5Cxmps z2g#G+gKA;=h%lI^h($>-l`GH;!(gWCAS4Ijstzu<4?^Pfa4mEQ0bDgXz%(|`p!-k3 zgeI5uDY>k5mo<^r(Ub9ViD_isU5?+!E>9-d`J_>^tJ|+&B)6y_8$ zgFW5K81eMz(BFAquJ8Gv#Ue@_8fhn9+N*SFQz`Kdm7m7tt9OmXaeH$^KXC}p55{XAO!ZK=k`7Og49`NcUc~~U#^27fIICA_0lxZ2$Nu564CIt zaHma2PkeM6eF9hE^&{M6=!^~@g1c-Q+=y`~WP&_W=5ZCC)!)L6 zI1_Fmc|6=gpTgwd)D4sW9^4ZlTQ(LPe<0hPzAz_i7wMJpqLv)T0|Q zokJQYDpkO(i~v3OaCvH2PMORDZo=>`xQ^R!hw+eRsD(3p4}!o;2iI{Bt|Jd_!XAYA zez;Tu6+T1=mkKxGCNIEzY6^rXKvsk+A;bb9aw_wTM$&I-2_$4aasHhTG3JGliaoxM@Y|1sdjitz%#7A$7021~pa7d_Pgq*G-)ly5 zMAE@n+m$=Yy!P*n#;muQal4((9YI@BKsU+n6%_Cw#-=M56Dp3YG}J(Jpe{rlJ*aOP zyl1nx?m+K|?$BqCxL0?*Q^R0iXKx?;0JHc$WUMUzGJB7vOcW959-Y3)oC0-E}Jwa^tgP*uNA;vqzLD%Hn(kOt>?rBCYr>-2Oj91n%!$ zNDSTwLbw7UrlLo61BASdIFmq|BgzFz^o5G2q;7)4{%BRv28WB$lROD-|4VR&q_Bd` z+#&lcX$YbN0!Rnk`n+Tiqt86Wm!u||VO{d{DXt4Dfv5OP07&)YMF#+c3YXa=Tywmq z#~Ag8yfDhmbnPxG9iQFr_m=>?XOwRY!mGE(T4`4;C&>(3ir0@jo#c!r`wEUNQTC!L z?_FVil|A42@0A%9nzBB7*A+M2CH84+blbVBLdG^7Hz4|6gJm*bys|Q*Ohc8}YN7(_ z_J|W52eg*3L}u(>CwNkxMehJW@VZHP9oHL;M8~OibCvUr)C)@xhQUKTSNVMV^uhzEPK%^eJ7t;8WC|m?fn~5&wlY> zwpsGVqdP}z!%p>I;^S`*i|*S+ZK6KZsO+pZQI3e2P`e^o7sNY#F1oVY`HQnr$C_=! zGqqWd##h}Q%H}cOKI7CaPB`auD*T)JCFNd!t+;$?x%<8qXR`Z`T)L5bVQbpBD0*pM z=hDihX0bcBvTh@>uO>U^LpCd{)TR-qc)hE)WZ=`ku$t9ylc$zzg!l@b(xd%Axklf7 zWjk0siR++iPFz2O zdjI<-J(R?Z|8Fab^LrV#`y9MM!rbtAg`#_pLFi{yDSz63=cl&Ka(lO)X=!7NEQwcc zik9j)<_J3JTZV^e)xo_-kt0y#j2r}R1h~bQgk%We3qaj2K zXGDu*pw(9(tv(g7;Qt7e{S+kOpQAh2z*qN2ckiU=lgMrY<2J$zSW0Q$r@Fe^0UN2| z18&7cF2za4lJhgvtsdA$iYlA@s$lqW*fDZlN5BSinD#=Em6O~ir3VY6)b$nEa*DE@ zJXi2w@9&%~SO90!bZ@6n? z4B$Z+(j15=^8gtxNOK^f>_#C-mgFji)!OcY&0cB{|63p=1T8NSRW3jXH7R9|h-;Ov z)eiv=B7q0~$fxK6;ok+a#EfLgRY1n~VIYr?EJ-x~gDe3B#fOj4-;C}+drthXQ>YVCSxThPRPto)L%NhBQ_LwUD3gQ zFg}oX&{!7yjvqep@3Gw@4MUbruXp#l1U*cajEbUSSGOou4Vy32JaCJXH!JfxZYb(p zy_s=)T|6EpH=%$_jfzFX=Kh+?%MRu^0=nvamqCEDMy~(DLTnTKP|eUb`{j0|TXF2t zn&i^TbLOl)^dbKcZ+&FeoX*^u@UCdLq-BdVyJ*DnJB|70sm)RQx3$ue^`z3=*^BfF zF*B3wwhxG6ADPVdx$LJ5O08G94Y3RKncmjwX$vE1UUa-SCVHRvQ1`xy1$y?m=+bVR z_m0Zs2xf6b-A39~X3j?8Rp!aD#(I@`Y$LH$bjX%+Dtv8ti2KaaxnvP#h#AlGW6zOhOzmV=cC@g)VOnBkq6%sp82op z5I3t)QC_VykCJ6vdv7q)-pG~(#wDj(%KX@^SF64iwe-a4r@o^ddA_0pq{c0<691e^ zK)RwCkYGlXs6>=-M?<&J5L#z|A+#XX84dkveSwC)0kiS(!l7C{QJr@}#};?0O&;B$ zl;K@t;Fy7ZRFijXWl6*2b&J#m6+JIfB)j6K2vipd6S2hhyias| zUCUZts5zoAghTU|E|rUBtIue9{zSQ%9XDQZUqG0EB{;(RThXxTsr*ZfSYTy=+oFT0-M%jdcR@qpS63zE1W;hvp@ zz<}`b9o+e^0vLi10y{oOasvsLUId%$_D-M+9O=B80FY#D)l@hLA0Cl`L8S zA$PzEtwpPz%dlPfNbx>-1WeG`Ys#d?bq-~?W>?c)Pi z$f&kn=lH4&jku`GQttI5#YxUgtuZ>0o|9b{u|uM4SDe3DanS6(dyn71#O*Qn==}wJ zCgF0%id<`-9lP$Xu3JK3>ZmQE<|$u{Yi){sG@xCV8FirOq%`Z)Q}f%?V)_s8xaTA$oQJ|a>ZbCB9N zf`)!XKB5%XC5)r!ao^aokrzJDU*y6~8kT0t1u5zq(b#Ir{hBfH07R+G1C7yzG=@H+ zNb#5`tJD`Ndj3pl%J!Ov#T)&%m_zU?nYKe5LlGLiTrjfDe=}8a_mm7vzPgXXbM>5! z#U67ECCFM#S3@b)&kX${%7)HmeJGn2Tt8WT!b9o6(er{n2en%A4wD7_0qdz@4-nj_ z)zVnGaF4pyfur_ka0FNE5KpQL#We0gSXd1cTrn{~0}PkV+#kV8oP*{G^}j-%|-NIn{ub~8yXVU9~m#0prl(77* zp&n1*6Ik38n*W-<@dkUP63@Lj$X19+LqfJX z`klK6au9sl%KS!BsHAVhB$m34k&En+QA2ekD?HlPvzgdoo;Vs4tTGe2tZl|wsm8=I zr7RDjXD&j|Q9zF#p~nS=DEKIHJ?^8MGZC$91h8b$U<)Yn6~7cHg8}Qzp~ee^G*0Rc zsqbTff~XS*L}(<8!wza4=mCP5uI{98>7FlOQC$BG=1%QxDLq-ZoWjODr(u!2e;ndA zZ6I`M9!fJ!g4L7~5qe{p|3+%pz)Ts-#NSS-pnE!D2XdM=5gZun5K}1Pb}v^f&e*ht z5Q+dLuTP_V_pDSxYsgWFqz;W#oZE5T2SLgp5KEp4edJ%nD;|_8PRTkSY+G z0JT#lp-e=u_p>-4=lWnkNLr%jB=1Nx&j|k10h_LLp}%}QX%eCnuq6# zEEkQc`a?!vQz)~4>JRe$VxtNc3-pc9_~q{rA8_{G zfw%K*ni^0DsW+U zp%rqqSdhu?D%GfT%1t_ZZh414eOyK^l0VNhrg(gAM)E<_Yz<{Mw+HlFc2+UomX}o} zWeMx8q`P+4tjcSb^!8nETCIL~bUa?ru=^m+>FkLAMYDUW?r*CUiyK@QMusfpzhV}@ z%6ml)4WdpB^xSwb1`YHaFC9!mM_=Wa^u}mKNVO zB=Puv*U|mGByZTL<=$?5XS<=@6t~hkpcgTAL zf~FHWM|4&97ZwSJKH94Gw1&MTXkp}}>#F5_MJ`%Ou6nl>eWK$czFSx#)W&zJlQpE3 z0&FnngpOzGD{m92(faSA`K0wqxB%k!iElL9P1`A-BR)Lm~k9}$ItLaac znIM-CY*2pcnUz|U!3|(TMLfy`RL~(L4)MqxP!WQ7^cyR+{3mq=+)sMsu*P~^u<{bf zrD}C1vT%khU<3h=h$yq<$WJ}x5kgk*CA}i$a5znC0Z}vfymd(2KP?IBG*Tb5Ye36X zoI4*(64^g@{<4_8rbIoV%hmOstvuI`)yy;tC71RGmf6jGMM|n3f~1A3q{Y*=Myf%*KgoCFJc26=lQK zrVHYZ=Q`7lj^^72xGUoIk(JS+ZHyba2Kk(;_>LYz_#!+-b({N6Zd~)D}@O$hpV*f(l-ejGuxH+&n zqEz$=xp$vCXr?XH1dg*$sWq!bI$3f)?Gtj}Mgm1(o6Ihubt-4DVyN|0b-2mA!Ck@9 zFBRls(`0k+1a$+2BO2%_$?L@a!itWpouwuxQ#YzEitO{$jO5ylWnDQj3k5}V zUs-N)-`?Zo4}*g!#bNx85@J`|i>$~k7kt%cOq5Nk&M%{82ugj!WGTt}x(<`0f`Tap zo*MjP@_{WOQ7NXPysq}(y#-^62%eD^_dh@U@6X=85I>;3GI zGiV3q5pNynLCx-4WRQGQI)SqxuL$Rv@dc<^!k>pY2aVfUp|l(mjs&zHMED8gI3xy>p|LoE4PK&Ed3p} zJ6y&wjzX@WDoA)Nn{iFS=0?)PM|Q}W_k`K>aY4S(hP@gOW`Wnc$3&uFAKM8qiM}cN z*VtBpfH6JiIJx#_X)#Tk2v{M8y((x6&pAfEq9`r04khnVuXMoYM9yJy)fl3FL9H>6 z%~roeB#jq**P3%k_x13?LgG-`WcBpl7_x>xFZjMb=VS6^{r?s(T@+31ij5<${2RwrW9zx#o)XBiJXtY8^5^OObF9#v-1cV#~hi-l%!wFdF9h&8OJ6dlsZD+RdE^JEG`f4KU5BUb%KCZ|6|GcYfpIK>4 ztWd~5WZ9^U$hho0?bi&wb9}MVVC0UTI2V|-eJOK)?hbKTL6$E&+%~w_of*8eOt_}z z5o=Q*Uhng1J(WwRPP<3#SesO@H}{Y}v4~bznMGo&WlFC;LWb#a+o;&>EqR7%!1>Lh z!{-7Qh)=O&>Nig~vZI09Teg?m_Dza=HM5neS6vzq?w%0IYPGMzG4|J1Dyx9`b^Z^_5Yr`5 zd$uO8FI$~!oFh1%RSDQzC^}5Oztf8%*s)4qta!cc&#a-1HzL(*TCZ$Sb+Lb1CHT^& zm6n^_(+-pOF^QCmw#mvu7evP>YCTUKm~7q<*_B70D98~_ljWK&gnX>qAGv{2%<9}- zl-JoglNCv-$_6^tY%J@{j$R>Pg$2m=n9g^7tcwiVK{?}Fo?K|{1Sakey6CEAn3ivf zbTF|9n7F6Iz3Uh`YD);^j4>m*2+;WwYd^i%SDkK30(52_SSnzN#t3^<7s2$Wa9Evy z5L^1Mtw9ApFD}8?N=A-V7+MgPp=G1C zN*bG7_cA3b%xfa{f!u$c`3Lh%scUlmpD4#zUgNO$RGO3Iug%6SgdePy5|<&mO*YL` zZ&yE0BQYt5MO;6@w>|QC*t`0FDQpa|KvRc!)FAOVhE7nO4t_tQ6x{^vYmhc=LUI); z*xy9wuROLRy5AOwPtZAs;Ebgm&C4V^@(%+}P{{-d3BcyBJ^lZsQiPT3M66)5Uj1-& z>RUYSp`H$?GN=V?@{%AQ$bnixx}2jI@=x}BgxU2yfpL=RHWzLeuGI_-g;5QSdNb(( z!;-3)Cwj;+M%EoNyWS>>736l0!4K%i4Y%FJbv$3++y3kju^E=H3q>Z(tH;_F-IaGX zeAHsr*+*6+eVEkFdej;oNbz4nry^*c* zYYRoBr>;TJTyjw_5}WM+&HgV~dK{BG7c%`0>uk+>yqj?}?se{Z^QiNkl%tWX?E&IL z(|z-kR}x0Xr(TKg8tA<<^{e)E+0JVhxQDN;9QC8d&&Q=u)2Vz>g(GFxzeS736n-;G%JfjUROTPGNj#OOPA*B z4hN?A=-nw(BVCG|3Ib>ov1<*1YKjUpr8yonWoLOlRThvRl^&S%>V0pDb7WVMw>Id} z%h(NjvU;P{seT>rve?x}W>)ou@e-yMCk}0`nTs`ZE~sCoyhEdyLIIytg(lqewnzeawD}$=z+pC(##>UBg}^~Ux>mQYo=f~?Pt_Wh}EJk zyo1HB_(*yvdTDI_z_HdVM5PO59{dv$9sh(|xny;W`?56~2niQld=wd{F zuioE5ad#IKRXf5OGm_OYR;M*vcnQU>J___N6%EB5YpwOW>q7CeDjZ?YV@>b}fw1}w zglZv#>C)n4*iamlfQ1Zb9Ta8{QKA=^?_1dW38z`)Ohnx3q4cV@$}g~!R^}NjC|R(g z%Gwaf+nnszIneP28J6=t4Une|aepjdf!3_v^i$Q9S>10Y)Fz#B0T(hbVFS1gjj>=m zHvF<_in*obHVwf6=o$4}hi*a>b5q-A`n~1!zdn9?Ku#!2Q^qolvmS-Nqg$cd3vkCjc|g<~bSLFG0LDzAg1N ziT+GEKE_-BwbUQ1f)cBSfyr!1;vTihLW-l%Y+QmsWS6^O;kYJ~%*BnHd2&3pM4@4d zWLo3D9%j~@&~dGZ?;{TG!*z^33YyjtIv>E(!6aNl$-_KnU>`p98IuKIDu#K^!lHj| zDnbTDi%i84w?d+0?JgHV!Zy0+WlGzMxS0Y?>R5{PNls%RqBw+`=q;-Z=9jB`o?W{; zYRUl1YyO2QFwm`MLE5&5vbV&kOv_W(@gVsjSbZ}5jxoi+0SHqOgog%=?&5s+hJjeQ z4mTMM#?`Atx{Jo(IyR?gVVQIIW&9lBPMf0Fa7`$eFedAr+FZm~^i9d7n56L3`_vGv zg}*|()t@_RXfoS+&n5Sj21nHM^SWX=Vw+OYpu67PN);Qg>%WR%_E#&`koxcF%X_yA z-FMT4jSb3O-}BR{o`UzkY!h=osa~qL#_HvNWw>k8+Gx!C!wbJs`oG`RgNNw3YwhGI z@<+MKH2OG;+3AN4iOnR@20uz~d(IK1;KO2c|~m6=p3fj|SRK^;!5Oe~YtwSD{lu zt93H=P3LAcC9*Ai9U;ET$)}TlUM_RZ*BlK@TC55KV4o{;V%>W5XY9M&Wc6y`(=qXVD8A!Z=cUic|=Q~blv@~Eyml622SLYnc3}HyI(@=BmcdLjeuZ8n{zHN>1kS-n4eH!?+w_*xqs+9<53oyTgeQQsLv$csfQR9o}`P>93N?r5S z$67BV5>EmWR}Z0w$u%JHY9KNE6E4j5Y0EtwB=v=7PAkQ&&xtalEVU?+)tKUpeOJC) zy-#(jXM;KZ;;bi+rop3u$tcXF>|9YbYwO6Lu$#FNzvOz5jFqoW|0S@eW6gH5IxSm{ zZ%8F@@U6*2)FANQ(zzp(!FCmQANW~63lYBenX`c0LyT^`dQ31oRP#S;&W$N)2yyf- z-eGjx12K>?MAh8RsCwDV^csWf^wi^7$GB*pY#`}vpB??l?g!)+>!$wXlZj_{2 z%vV~g?d(hSW`lR?JkoQ=!f$|4KtKg1zQ_cfimFMzB|v3bVI0(=&OxPLEL3miC?s=~ zjiflzEs%hHY=R=k(_s{3r~@7LCIh*YD&%F-V7>oX*AfL{2W+n;ZKmeLvt-!9&`1h( zvfLR9y8(tO74X1Z8dJ> zok2s-ME!g&5+!l6d^Q$#4UygEcmRObb_j90Lz^QY4<|?ilIsA-HqWV81n)`W=Qn_y zd=>K7V_65uo2d?+?5L@GqLcqUAaC|UK=$LQ9s}7X z7s}^|1_o`B;yibetb!AQV@(6PD5`-|VPaZSeQ5Hzq9MDnT6xWS#~^T*Lz*}`MkQ4G!Gt zggXhv?TLBy*4s|vk~7|zF7zO_tc(%ls}|1a17gbs zZ}lBzpI_&4)~JT-b2!jOpHQ~r~8F!Xk7<`6K6vN&?R2k~6da6aU&v2Ouz%aPOs4!Zg@AV#|)Mpq$5PX$Kra4`Bi zVDyW?=(U8)y!k%gA*%WgX@RN)j7FJ6BNmGpaRRe?ROkXdWLp^Et*B>6?q<6CSnUio zSIP1c=9z6$l9)(JCg{hG50QJ!8<;j-S|@f%eavnb4J734Y5$AOMr-R^S$%Py&$qg? z@|H`3#{$15lE{P#OOf|bYfe{-AX)t~lD>p^P{>V4Ay3O6Ob<+a^}Z8jf(ku>wgQ*G zX$V*EEKBG?52{%{^74E$tSmG~Tj4?FOPQ)d_}-c_54+BfQ16R;yJrja;6-O2Meb>{ zEH?iD=xv1WdGI`|hUeLfSVIQLabmUFD$YMaX32X|4 zJ)o}}+>l5<2D$P$w6lQt==s zMU$@c&B*~fm{(I_pkR?;20FL-iko)$cwBTUAUzDISDjw+^S zDy5;=>Dhv6CoDA^)kIxu*~|-Kt0y9x7bWBWH7D5W#27r@6DK#-pVm~$h@2jKplQ2V zSYi(4#GsyHh?y_gQ z#GR>OEj_Djyen8^%i|7xV~coRL3p5Gb{(>5RS#G@NI&huN1gL`m6+#{)-fg>9qd_C@?v^>}aC8SsYn5r_AM%%ACJeW%D7*Rf@FYI|;;*sWf!Iu${ws&)2h;Gf@Gc?qa~aB<{bk7(dt{?^>i z<5vBK$TjWLY&Q305w%qpTr5_}`R15Dy0<~j-kPiM?-9#+YxXC5ON2#Y>&6?CvDLB1 z?1LyRH(c%n4s?D)Z}{!W!7wN>e}ITC={)C&w^d@G-dQ{J_4tW8}O0yeL)Pi}b~L zugk$r-`*%xyS1*^;7-hXxJGb%he+Dl3b{tz{q5eATBq6UV&W<=-Sr!9l&Ql5mv3;t zB(%?aC~OFN6qrgJ80qnU?1lV_*(ibMFsOfasU7*e-)kP{_?=HAg(Z8d83q zHLg7Lk_VewX65AkM}d8AKrUwYj~IDve-?WdET#$M?MD6RPNifO)nrlOT1<=E6P2T} zr0+uXUECzWC*cj$Z;EmrOpI3tAYDBJ>FR4xZ$SNNTD;mmg0^?v2-su}SD~WlB$R^^ zLhW=k0#gzyvF<_{dpk}lka^!yoY!=f zqwY!I09eN$Z7FhT5&)5JbDRa0b(*7O4}EHpqEQ&Gu6>Axt~?pqRu`z|EaT1)ls9V* zlNS$L3iBH4)~GN1#?VZzlc1sw(Ou(s1~?uI4wQeUTRL_TfbyA~C+3P7`PjoKtv6QK z0JRP$Q2B#$f01G+*-;TOS0HnE({1~UL$nEw9Nsd4Vmhj>upn$R2Goq`v0_j7!#GO2 zFjS)cbFt@GLDjE{J)t~xY^O{MRI&E;7w2)~VM9%ud+IpI%z2>X-8IO}&4J9EGfLil z1`fx5M0Hf&`3ed_$vafuxtGIiqz1^2YeSSd56akz;$Y%s`yFb0jdiyAecxGulLz(O-lcu!ss~_@s)E^TG7$ zjso^x`H8s$VQjA&jjH2H#ny-xGf``8n57+hICLUUI#S{lVk38$Kk19hOlq&S{dIe72KbuC3fK6Nk`*;6n}8f z!tB4m^s`N4+D-t8bMwh8-H%-5vS^!MR#s-)2yS07Y>EtDTjS}bXWA$3jCo&YVP5dV zma|4Q+;e=K@BC)XB(vXxq@<9u^>~K!oBRo8rFHy8!jE=bc1`5RMr`_WO45<$XCi=wbJ$Dnf9Ne`JB zT}~jm>l{6An^XzCL`v5VtyC%UdoR^X53nBHcw;EMCusw7B;)gemaF(&$~|xR6vnF` zBzx<`lUR>-5)5*E&{;*(IkNgs@JKPiBgN-i`;qdN=0|bQ#jATkaA(1T=T75k{Q18f z4`fz3`^d`kZN$#DCln7f0mZY2f#TJb(gvXT;W3IsPPB;jx_s&riW}EQIw+pGqea>o zxGyc8+`H48QV$d_3PBYAdeFiw%**|n89RdXwTBq;1#zW3kk;pUQ0yieN=D{2@{xlSAz%n!y4Q+(|}`2s9_I?+y+B*L~=J1pfI3hRqsPKvEVY(8U67 z;mNY-FcNMFG8*#}BdeKqWj7>?{DxbUrWJL=9P5EH4|R6hgqKrYN#oG|yl;vgZ{vsG z2!iUcW3Z_PcIrOfjR)K84j}Q^;@B+{u$CHXy)CnKh@qt27dg3XR57Z7Qd5&~0VT&5 zIS$IFRx}d~ke}U-)})QpGZa@DYk!y@<%2!)8Q42r#`U~xsz@5UFnk_mN3MJlwzJ>3 zj*y)aCiN{1ccuiD%O_$x29wsAPp86AU-%4)KVLopds}B*%R5c;l`j2_A;%kY<&&{p zJ&x03QhF)+#I5odusyebHdDYknT?E@G3NwjDbt`N<8e_MRD9e=?509VhA`|2yPxJ2 zg{TZ}Ix2(v4l3gu?5;q?a)UW1$yc9NpgCOZXSW?q!YGac{(FwyNoX&@*nUNa3Wtq| z&(vkK$!xGeIQ$zR^AuE8fp#6H1H8w6l?32D8{n-$e7{9Fcsn>&O8W~z5)>wl{yX8O z%1yoWt0rpAq}0iSr!dXO;qSMf)7z6jYr`Ixmz(u|CEkK{gS&fiYtUfX+sDh|v^nN# z9|EtpO&^Xs34i#~GQ`k}Qzb##cZ2(PXevhr!~A%)tPHch_F)B>)&f&R4;U$W%-ZJB zg?)I^Ii8cbx78r9@-BrSYTw^k?aq)`xvPyQ(-*fU(FO^=__ZDMI|pmAM6tHh%o^RY zVWNt-#^$0=Q*?6g%QAy~if72V2|MR;NOy0o31zPl%#gct*U#ewg=MY`W%GSvui8f{ z?i{nS>kouowKr7Ak6PKnbI{GL=z{K5K|phl5`VFA$QD$0sOyPx{@ALgjdPt7k29n1 zhJPRrDa{JQZ#P)+>SL&MGN^b5*5XUWT?3>UXYbg2erTJ>O5ciAA2x_K^`a*vKN5ZcenU(p z-5RuF1Jj)G`3Mj=mC}U>On>zQhPSufX>Ft|3LUj(eBL0c)2G`lPO}qfxet`jy(=x3 ztk_WYde*Ya>_zyrH$h;7Ha-VW6Q4cGDJ)g!?IVHxqjAr@CmWE|A{~7taekJa7{B`0 z9Db~(r?Rx$8?EYzmK1AEf(PY?YmECi~ z$~@H*m|AbHQXI5Ns;mcb$yg7)JOx!29>384(-gI4s?N}L&T z@IU&yT({9irD2U?N0pvxo@ICtQ(2)9xaO9GJO!pW3tfP@7f-dzcWGV%yD8!M*R5~)7zwLiGwkfcF zu_wXdR*&trYTC>TvB9HhxA@7P1c!v~%lnwjAKOIHkG5|nN(1C|uyyO_JqZU04hfw> z9@~>}AHD}w+)4r60>4}Xn4Jii^+%W;+a>j6gQouO62Zte^ki&DiAx)l$T;?2jOAz1 zY5+$beWFd8*%t=SHhwV1xkJ%sb1q;R105b=zSiN}u-kbx7$xO5ZX<+i54@gx z1~!^KXuVKs<(RV*JN%TfC*$&~8OP@DJ!o6JrRJWcO=2u#Yl8gbYzD{A+RZfa?L+XR zMJoH)0m&LOo38V-ISv@m0ZX;SCMT7>)Qt!3kawLI8^{+2tfUc(gn1!yf=*mJ(Pwf_ zU8KFnSGwq{ZkEeC@;|W-ZNB4*t3;dT+JFhYVSaW zYt^g+>Gs>8!wTD2gTLP^8b(JukX~~tfOqr&SW3ov=)K-(?4I|cNW-!|B~FAIkBhS{ zd6M&2ayu8rx-C?#qTB}HAn-jaO_KqA_9OhtO9Sb4yKS;}2r>`uf_boe_sR__fM0o5 zyGXhxu&?>UeRL0mKc_iJda6Tj>oT`n^lLAx4Ut4Jd;L>gA$bY8I^+rS;z6c%=AK4n zB;W~y*-L+%t3%1lTjdezG-QnP5+L*UUb_)rOYnXV?|O*L-rWpj9BhlbY4h8P+yh#t z_NqM+W#%Hsdgx_??W%p&FPjy782eR|l&ifu>Y6(Zwn~+2uiDT{Xhc{4qo(eFoL3g3 z^wN90L5-y;*Tza}g*=a;vxt{NX9X}HFrrH&8Z=3~w zRDm0xC~FBuzvK{&exhMk+;qXfMYPkp@5zny`?Y4^kU9#>tdQ&iMI>t}MOm_~NJ@4j zZ7@5eWFM@Lf-{i(yO*?{>X4ESk=P&~hrRW%eGB0<-6)&3pG2o@7zlR30`2XadER#y zmk4v?lVmN;R|V>bh|n;Kw>QUAkUKlr8EgK$;y5|tM*Aj$_x-`*yxfBjw*6|On*5OK zBVZd4C`Wt>iH#ypb-~-nUAXQbEO-#xginm(OPXWkB?I6vKem9q1;WoY$H|@!1R_`X zZR84{b_{`0+{FK-#o@4~Vd$}24R5^bQzCTKa3qO!YI`awKz5WCJ8F_so@|?N)Db&& zWuQ7@kDlPl-eLuZD(0Q~9IRkR=FU+{fgU?o;U_pex??C-L&k5Y&a`QfuvMZCc2q<^ zEu3ybP6pNS2m*fFxbQE?NB>Se7%S)ElcWLLMRU|Ixy?ICe%Hdc8{k*!;AgR(<(Dm# z`OE=ZBwO=@UycJ~U;}VWQ8t zY$0tz^tnQD!B&>++t1w8+{m{hDL>UuwKQckZ(Uj!eb_!YoH3mGQQIV2OJtjy>8A@X zSdIhJwD+Rs8=Qe@itnof)m-1)72=atU>a>%G-I9_beu8t_GEf@>{0ve#H}jIJ-g0t zp=K`SVq&F~l)AXg>h6|=^F+{h>kFe)ffI>(bV@Dsl#ZSNL20a)D3U5^i&dZR?q<&N zQI?0R^}g9{;Ss8QS<~tB?$X&opcaR7PdlaNUd9(uS`#rT2^QLnpBLH@ql9k)!Do$0 z4~%!)|Gq~>YSE7T#@zOXeBAZypL~V~9QLl;@?`^l6C_1hY~7K-B+n?-W;dJrUsEU( zB14L@pypr_l*5HPl2)4t2caBJ@pIA&mBY=4nuB3S5k@1_930st$0uOTM{Lne4zF`; z=`3=EeF`F2KkFS?sr}|B`KjMXQvE6yHTH6U?fr+2T$H>Na#6vkk?&u5|Dm}v)aP>dAFpA@)$1hC$r114)L!2(stTVGCnwV3%8{?UOmwugB^2}TQm1Xw6GCxM% zkjdI-ol;ASvDSY~TV0JMYVg6}0{m!w302fFQr_@^nq`^te+I zAuf`%~)p><_ca2 zZrwn**9fL*=&Bjmr;FT+iH=J>lYgB2_$pw#!%Ee3ihl_D17z~2VjZ>J$H*}|(BEmH zxj0Ypg;1u&3aqkeJ^8MTBxh_Ws#6=xyPe6N1z${{3 zEVO63Ur*Orn}@a#(o$EJ2u1TlWTKv|Om$#f^IS?6ub)9V%u|smw2%bI{n6p?e)^Tj z!jSl5o0X)!%7PAFnNb@>r~P)fOIcu|mf0YH3IV8#LAOiEg02yZVm|KLT2kiG*QK~? z^{wtw!fAP%{bbTc@m=@0Xr@BM4X>}6p|@#q@(e>$xsbQ~r*J1jMQ#PJ=BHF=LtaLn zx#p(>&W7U|c~sL+dtD4Pl~+&KcOJ1)E~}oJ=)^Uw6DM1Gu&~vN|FPZfjCQ485!3OT z#3JRYl!~%1w-Ad+tEf@dIFWH!eY}4!yh@6MS66JxfuoGRJ1ni(*uh>$S|OimYb_^+ zk=9b{kJra=oGq0*sB4Zr?H#X=y*M@oJvdskgWA!^ff`=Aa;KMp7RgDQOTW9*+dy+C zr%j~a4<#6mGws*pQfh0`265`W8#dAF_NiZQHB@G`NV#l&LbOK#?(w&3bu<8rdsdLR zV?I0fX#GCj?WLJ#?awbiT%Rg%vJ~_EzUjlm)ryC^>O!Z$fcFd%Quid0%Nc^@3kRj ztxX#v)`wXYoeZV0me*!icJ{QItUWv-s{`-RF}iS?P!VO*YsqCsF^|vgU|#QM?8RTB zS)*(>hqPtJdDT1^Z0>=_GZ#xy0nxeQmbw|t!!v_QOBf13d2ANuj#5cJbt zu9oNDFpQ^kt4%?lI%A`YUMnX0E%l@*+;1EvTkgCrUCPe4sndfbWQvfm&r8r5QssmV z26P@H8)}Ev^HM%A73S5gAWE0^g83=*yr4kN{MjO?Xw{wBr|$ z@K6=G9PC?7na{~TM!ud6zvFTB2}#~>go>@z4(L5OQ+j?TIg;7BnOE(LXqgX}5ZmIb zzOb_2lM-T0fF&!PKMj-DcONB3fAB}hx|%RYFoP7hp88%hNTK{yldvP+s=~bZ{+B6E zt@($^*UrK|_(v!xIB+BNUIXO0US2gDYq95_fPK{DwbUyF1jO7tX_&StR$ZUmx0w=2 zOMtQjSN?1av+-RqWlQJB@ zu34dw*$UVqbwpf4AfN;`u)s(~;lB9Lw(^peyPLeC@#EF*h4bCUc z>%<9`9?K6Y`Z6hXJ9WMI;KSVt=O6hdz=T^!k@EF1jdv9m*Ku~d9-r!M&ra4gn^M z(;0feMqymOCY|x%dS?3W@VIn_@p`6^n8KTF>GKZOX?tzqYPlqoU!5f}tS9|FNmU=X znmHkL4qZ?2Ff2^WAx8nL{yN*x-o}zTw}hqA=3fwx`?i?N)*h*k*4@4-o7P;rp0qMa zgnN_QgEr<3)GPPMwb}E82 zei3ngmH1f^4Bk(!ZF_i9(em#lNc5Ua^(bu55cK`6}z*lvzK&J>&a%;;pq- z>>+*9^Cv5n&R@6P*Z2)j8y#d15-pb^bF5Uo1Rut2*}=>by!_#%pyl-BhtUR4I^-}; zqH>|%)L!laWA%Srd&M>bCTjaZde9QV?7~*f!=$?WljIMnfm_Vgevu`L*AS}CAU$*H zA5_(Lq-UN%Rl4rGGmsO1l<<;Z8mVD^@2Mh`ylrH&PklOVkCDmSl=p75R@3mB`vcTHPvYi9&J8MaI%LgQk5ME@i{- z>Z~zZIfNMC=P}tpTs;QY6GTD4lP&@m?J3U2MsX-`nHs@~!MOmFWz_OSCUt^NLyA7c zcrC@sv67-bW-O(Sv`#OG{+QvBWbS#XAo>%=qC{i=la6j~!N4aB_k+WxxpU(VGwvHi zC*0=h9i20tbG436!O9pb^LhIBl=%jiNbU;b-7Y*)?H>Vp4B<;JdKPASkr7}9qRas^ z+%p#UG&07W@rU=fhk6-^Wx5!gm1BR=!r|{$^8&Gvmn~KNa5b+rbYzL87OE0?f!&X$ zSnBy?wH$h@E%gl%YG)vnI7?0|BKaov=>mH+M;Rl{*)(E`*x6zPj1BdAi=@umF+SHx zqCAwpSqVks^oH)zkU6jYU-sTTu8BKu8?L(IDh2PZi_}u}+3nNP-c(a-HB|(vu6nl~ z*w(f|5#pgrl|xj(2qB5qT34-dw^mURg1X994iOL{gk(G+7382uB7`Ig0)Zik9Fo9< z$-Lj+B;nwpyW94DpXc*_-u|I8<4iK4e6R0yUEk|BA>H0|;hSQ-dlp3}X*7Rp3;bZ! z{~6*nHD`ch4Iy5Vyp&_Y2E{k4sgHT8&DJH6k?H!W`S~Xbgx?gtRCVq*V_Y_IfZ#-j z1#h;xzc{5%&RCmKsuY@Bb-u)AEUNdro1$P!iJ8hcJ(K6*remBB1^YtJbKq+c?jrLa z5ij2!_&$)$9!g7_>Q#T;yISHUd4W>Q2v{Dry}xJicT@R**|833elNEPiVyS zv(~y)m@qmtBCWs%u;FQPm44bvgOU8y-l*$IKxbZ#{zH-L2AcDL)%5M0vFg1u02|(E z`QI^~H&1&9YtuD5_7~`rzI5qhdKIZoxA>e)4Lz=5~Rz0v8)xxtz2}m-| z_(O8-W=N$w}kmu+cI2LLzpkg{jxZL&)+m$lKa|Euo*64zIr%UTI1ZbN^1!EsBwi=nGLm3F^P$d1UWIme6gNNmg3f~t;uIay%|NEFOajUYeoGN-uBQ;sA*X*b9w&r^E_=f-7u5+#65#z&@5 z9SZ#Lbcd2j1&D*qx+EHV1r@3^C9_l+dJ+ElFR1fR>M4CwZW zyT_CIQGrxKmq&bxe5AYVL$r$KEUafVRztpznbx#eB3ytxl>HOb#D|@yy#g3hVrtTF z?vCnvL>nkO&Z=a80w~gapQ8JmQ|2FYRv}}Zn?;{br5&_^Xki##+J5-tx+l)pqISVno<6sCzmOJgX;O#J2pn29IB+FB2 zqp{!&Pv#BeNpmz(=Wi@WPS&O|MJ17Qlw!?)N%H4}^|r?%<*jMoIQM7K=?VA(bOK1S zqmvzn%m}j(4*heWdXdO#?%qskLAq_|QkbdOsXe?+;#mfc93v~NG+>P)R{&1A&8ztx zxwxfWKY5-8HX2*VY4bD)rv^37TDYC-Z3I9|XepDW z6hqE~IN`(H(RCtJ=X&1Ipxocexw8DMF(qoy!TQ}W2g`fy+XPX!LMLsR&VN;XCBmm? zBe-jOqSobl61m`8En?14y7E;>imHx-ZxxArt3wEym8Gt0U|QbT|M473KUj|Ktww+c{&ug!*oiT4{;;OJm7$9k&5EmE#O z0*B3@3s7tV~N-dy?G`C!qysOzzjf^(+dMg-n4fNP~91>m*oUngM6hzop4T@f{*aS>Da(J7rG z@W6O=Z(L_uvi~gim~!v1fTD*rd0uLRTiwAZ^RbSb$iYT_3k;t)L1e+ntJEc(8K^*b`g1A=bavY5aLS< z!PlaB&5KAQBBOr>I;jAWpW}dpLD4Qnqoa4mjDm8e$;My}JIZ;^t3+2hd!T46FW z@A|E}CJwp(&lr*egMa`bHihng2nIPe{jz8bav~Fgqh}x!`q=Xh2*UbKT%yFlUfzid zw^A3z6R+nfS6jHu2Xb4XyNy*p2D$k47ddnTpWjhvN5rBPMZ96%#=n|<1=jov$ z@U-zb{+y_Zr+O7D@QW5TRnfL$QjwC_is+a@f}(o>-z|H85_ z@kanIjpHjLeladB8-`22J2iwTb*)UPW`R!?{n~lqsLHcm$H9S*Xs-;bp0>;kK2>yc zp6-p7_|qKlsp4Y1V8$s~-q8C>(RbieS!tiDY}w47z3JJMchRKlqFtga(uf)To_5w{ zfLHu$w6$(0Nnou5NlHQ1`i|LJ^Bk#HeS#{zBPz@iE6OdTY0{>8+l=hR%Ow7liodlf zmYnc<9GdzJ)-ynV{^gBFT3heNT&+0C=(V*siezECyv-YO321n9?_naAaqLZfn?V-gihmNL|7#B-xOm>zp+1x{5$eKCVCd>XEuEx zN!V^a>*enUPPyj4hk3TDTvv6=A>@@Pke-M(EMe~C85T?6NpCRS`X0uHk!Z$N&RaRVOIf8Nt9X(uwxSt}M=Xf>8FOtR4|=_HLZfDIfd_Xic=`8)%P{x!UE zQmHV6d;{X|E$7UU1`Z_tg3!zn8TmAG`xaT}vj8670mZbIR!K+?0ihVCaqNuakA$Hs z?ERkRa{=Twbb2Lt*_r4CX3&JqiHgsVnBj)`%={V7QDtOVmQFMKi%~__z4GWEITFIZg}nVtnA za~;hBohK}*=DZz{gboO6$B+lwcrt6i0fBd%ANi4d6mh7bIoT*I9!(s&r-qI5W6*}w zYiF@@ns!M;$CnRtoInMzq^w|fv^V1Zx}@b=yno~x zi+rDejCif5e3Lj|Fyef$iaN0v{!LSFGXw)o$^y%L1~}*ig-f&8A0!nBlL{zXFzB?6 z*&YOcC3mhxvWD2)XsE46-)rbyhUw${z z7a323E;@H=fO0Iqw&9$`+*P*3s8;Y*WF7=JnMU051<7~uG$YkOG|^+^p=xO z&;oPaLYwQ~K@`Ikrj(=AWuMOc#*4j>x#2z)@lBMO-Rr)PX=Nmo+65jx9ptO5h)~&e zUL-QzMHi(h6%u}#;TyoKx1_2%zB)Z33hbwx!V?PNw;AJWvJ$&ytuHdosGJ>PY2nuU z|I2{%GpN?Dno526s!f`p-CfGXEu$mMKM~@DQT&xNHFd^LAv_4Qt1Lj9^!Pv(lQeJ= z+Tpu?wblq_`WpjNKmaXYM5#vWj^9y>Uh*lj9BEw06s%sOE2#SRH;OI{+ULp0vL293 zw4ggi(-=Ag@DxV17`S z+I`0@vU0NSSOJQ7ctwMK7l{HCsgMLQ7yz1fa%QLbHvF)XG^E6^tFTaLWfnSq=-AN#I2Rq!Y66^;9ph1mDT zU4qxReHvT@ZaHkUSf}cD3#LZrpWah?GEG~$CQ|nx=M9}@2Fq*i&P*Dw4o{RDzY?hW zOU_S`hwl;8^~fq2S9Ww~=(trd@rxirTRp2~2F8_Gy_6E}N@EAqjUjXE!Vxs-sbzp$ zZ*U?hQX&9T9kQpYmg)HhZI*$Nwp69v7H-Avjw9ti`hp6yGp)166CHa6P4`mdj4Rvm zz%o)DEQc>V z?;tcF@(Vj1doYeE#k*sP?N>R<-Tiw8lQVQ?hxfL#}W`N-&^cDk|if<`X zrxb&I-gUyqvZG7D=)r+Q)!hnZkw9lzs4KhMxs&e!?nBeba*;oRX6g?my#q{>}=15Er# z@a7YvHbA6Gjv`gecWYhw4{sk8rv;zba&s%#QOFgqxKm+sWryiDQG1Q=Tta^M%k?Nx zWk%jO*BMlRbF}%g69o`dh*}LkRWM9I>*}|LSYKvO%?`&}@oPJbuVwnZFJAE*xZv|z z5~=^~PKC%BSDUORHt9l~Y$>icoW%pW%B%W6*ItwQ-|6P@WVu}JRUg3_1WHGMR3$Wb zFBcM?){z2t*+(eeeimkV#%c&rSzDWs`}D1@vg&}F+HxW%jpxsFi75>WV-~5sav^{? zt!{sm>3qjRW_<9D)2iYbyz1qelaqB5IhCZ&g;S;0nP)!=jfoDn2PVg>?-!ss)CMG0 zW}%$aDMSmZU|dDpIw%xH`^>3N!O%M7U7tb*_W%shga-wEkesmRcpT{9&?5VQpV*cG z7@grT^qlbr<(hwkFVTqrdNlZ?y@XKDuHBq;{opXAPu zYvTwD|4la>r4EwedyaN)cPZN2#j2Mt6O8UT*R1?kk^(3+K>ui*;Y_5>p3DT$a4Lj& z=TMo3exk!b)|u&a>NqpA6`06$SGg_ooXyNJF1f$rVXRSe7w)K+gd$5?;?Yo@E@@e=Sfw%Bp0f1*GJ=lK`7nO zaQ~;U)c``$nBdpW2aHHr#P)>&9OMXmiQeHL6o;$%mu+tE?~^AKy+mZ+3N}VQ0+#ga zKz1X{@&m!L~Pw)0Cuysqxd(5L4 z|BNb3L8-<5RxkcoabH5Ik*xIIVf5O0Bk(=4P21tx`&Q3?g6kdsoqPnupR_OR)9gAt zNli}Lb|yIBt=Tc!){?IcM8nI~lSL^{Y!a=_1-a60VF5)JrDj_?wQr~$D?&*+h5 zblJgj*bckHfkF1-arz;sVxr&dQ8$aX>dKdb-5)rF9iiD7@F-toM}z1ao=Mt@at8w@ z)^Pxii*yv*VW|u$=AlXJ0VihP2ii3@_dW8WeyHqy3$!7&7x&4Fdn5sBS|ozb46mHe zTz4D7S#*j48Cf|f=0)d7d6kg54@f`5+tv(>4>%Qnv-R#jAN3;%hNf)}b9%tYmiy7N z(e85n+~)Hq`tjV$OYgc@f(_@VqxYO zBJy_aVHY{)E5W4b{PaD>lWFXmYa+Ki#NW^*&0tC6w;HHdiTqDJd&>Wo9J%~ui*O3L z{=6HpvD?#H^d)8Hs{8+wPBuFdndNC&iDx z(^BTakgfiN&*YS1g)7+zL#B=8s~XNFp8Y2>4Ll`g z>Sag=eEzo37CU_@vXeG!M$G6{1WHHGPP%?bJQLwg>^DfqRaP&>g(Y`BfdtOurr*n)O7SJ$uO>o$We~hHTh(SGe-!`YR%=uri)HO+ zv@D+-zr^|A#KQT)VECm4re4|5Ya~ z7d@;_O0tJd%C#wazG&GDir=$PDqNH(>1x1nI0sxfvpuC_&DQO^-&I z@kQ*J05mrt7$7tbB*@WTYgWJ>`IcM{wEAWB+&DQbba^_T6sRsN{LTXTC;!-1#bONy z@<|Qnyu46`H1(Q)zHAU?j7aoC5w4#7~y5E$Ct(|EaS*0Imu=K5FN{Sc>8#bdQ4+8I06 zNiDweHxfLB6?J<$Tf{qg?`ZlxIIi-8zuFlR_cnR%zb-BiTD*FDjLl&Q`D8{id4tnJ z5q}XUX7=Pj$nwhW$~ID^Uz^8k!Xy2fY?q0j}(9loqrvQ+dYlAA&*yA<2Qr zk$sp3T;e{^AV!wm;Xq(uZ~9Le7#vy?9RV&fpB-WwhC|i>xNeR!@#yfeFVjlNX*Z=H zzV+`?pn&q5L;+}o2TMQEEw{w3oK9ioRNj-oq~Z_jeR`-bl4F&&(5PxkLTHT zkKK<(Waww`(#drO^G3-vlv3o2EyOZz-;hyCo$@=kYU6sb<TQ&Aay6rAIxM7%b?qtthjf}-0;D3}ZI22Z!-f?q-xk)_T;(pWW^Blwo&Pv? zLQnbej1WIS9WSH6om_n$wAqb{f;W)<>WvbNCO4g-Ns$-!f~rJ(M(d{qce;%SezTNM6F8r~N(u&Z8{TwyF{cgS0KyN#EdPedlFphJ`6Rz>em&HR&e8 z?Hj=!+7>ebd@aw)5aPw6L-5TSKCRRFF6y7Y@HyryYT8_~y)|!MR*)g#Sh{EFQSn8D zG9Jf5UuDU!-96A;*%~*ua}Duopm*w0(T0d?JG)t@miJD#9mpA@En!ES9~2YZVm~-= zIDa%8m|5^Z`u?vRm)#1t^)C0f9-LEUJSGg2hAwM&FK;s+k0Z~&Ys zeYLH^9L|G}MF!J^U>V`XA5}#Qu`+M25x!ip>Joobm(U41K!C;p0fH3L`b8GOClNZi zJ-|I9&DY--mSkzZ%hH7!Z_(M8UmSuo!?Lx~|Ax8w`_5c+<1JX*wq}l-dY^s42rYvg zVaA>G`VExxfnfAfs7Pdq(mpg4rz2gAqA|`$aq`SVa!Ef2EaJGHl4cR2A^|X~MubR= zs0f>;BDQotJ;xoA)lYiWXrM;po8B&J(91fY&betXX-7hkHfWu^$63b<(>T+G4%Cwl zPR_)beOx!7#9-K8CfeM6mq1jG{5iFS?gl>kld$8Qay{iT55kVqdqyAPpWbOnUaZ!)J;0|RUX;B0qJe_AsuFmb zmRB6+L6~6aTf~hX?*}V&zOBBnoVPeO5J3*|gaC3X5acLJUL@MV$&zjoXC-<~-*iVA z$OOoV!#C($&Vv?9E;h}Gam_na?YTljyjip#zCyyso5TO3`sNqjJx3wOy(j8Mk1?R? zi!FdX(aY@E<58Yc)pcooVfU(3#Bj>*K~$*p1mvoT_cu(qnT$0?T;q1KzC}=TGH*<4 zE!L#J8fOw020sqz=T*9#VtM~M*m?Axus?A7g#h_afGXmLd_Wv)N-F6@oJdp6Qa=e_ zd!@-=-JYHlueT5`Q#$)X13C{Hr)xYPAFtx}w>1;Uc>YlP!rss`@PKSF3SxUc*sz#O z8_$6U$Er;y=oKUM8qf+|lml>_VY`1jb^RLx4zfF*tagXT!Ks8mM;8WI({jf%Nw@$o zfchFSpK-_y_CRj1Q3y5M;#}YX_x7uR|@Jr{QEUn>Z8`Tlzi8Gw+^w+9Go*u!=qpV)@4DW>R=a;K2(Z z-!R9oL>j9|dv}+WFmu@)t(MPsOV}&$QolgH+qI*VWOISjNE_~6QBE5|doGvzP2On{ zzDRzQOY5)m6A__#-zab)KfgfR&$AxNi{3D^hhWZnszRKmT?T3E2;2ImCpFhr_5VwP z3nE8o+u?Qw2^1ps>f9u__ z%LJNZv0#ohbvVaqs$g#`0FI-)4TCM42M<&gRj%G;>H3+Z&%g3d#fC&GKtz>PQ3Yyo z5kDWEo~+2g2({ScSKN9eOA!BKYXP{)H(PzljuqlaE%ULgNsunTiv$?^Wlg^ zmUvddX=^b9ma}V4{D$+bAyMjqF*{004*-GPIJI*dT4F%cey-y(=ZG%2TnLx~nb&Dl z@*v}(&6fozvqSqn#()kmr5&rwTz?b1p}7vN@SLktpYz0!L4yXoC+B=>=(%W`KafeJ z2YSf18JzJCZrUv_$qkJ;ibfF|8=8UKL;<u4Rp#c+Df$5^re)_ho#v&k2U10YP4D99)kldlrr z!xY=HT;0~7jmE?7D3?JfaT{8I#=~3hc%q16G}?>9tJ1{CbjI(c99xkJi_7%)QVyeq z{08qklI7qi$G2Bj94c0hBfEa|mCWuE`1Ihd)7AI?h6i4OtYal}0eePVIKLqd*5y3~ zH<2(=*YY+@EjWmb9e%a4BGmf(qTOx&5Iz+1f2Y0%In2FBB>o4Y*26JP<#9j|#`*zY~3Mwk@O&l3wW7!N~426HrKxo_Z)5fd>PqBZUL zdh56;oinopT^3CU#(2OLoKXh$YrH2S5fykTVf&zna(N$~J_627)!$%A*{Yn=R{t5W zq>OfMI)*DY4JbmQ%bF^QIeXY%~>WgCNQ;J^%tXl^bge9Xj z@W@ATJl+R&V)XPLREtn`_5m?U);wV$N1w0e9%F~O^EdZ>Rk+m-^kCK$LzBqj9P!$AVMZl^MVZ zr|CN!NN9KgE8KAu>|J^j;KjMApq*YCUf|=Sql56`1RaVToQ*#agwk)H^`!pN`XTe}oX z?kvAOdjWe+9DY_e8&Mm-ND@0vd`YsmnI0CIXJpf1K*b`QN*22!>je$JEt$xinH)Zz z2A8i)2KEdI&=+hAjHR$bqb1ZPoFlf0*Wb5qf@}di zlr3~uqVr)!KF)_3(Ub9Ktf{xJxQO_GyOaB`FSd9_I4~PMwZpyu3>M0VIhUOl(`&n6 zgpJm#(^DuKP3*t|rH9%%%IBcXA@ycvhPm)J_JshNyw#J^tUR%hy;^V-j{bok-iHjE zRXzF5!kLNk%l#8Z@}v8_K|gn~1}5ng83r#&jBK!%EP7!FPZ;_haCBfG{`^hI$6$jF z?hsdH*d{H59JUJ`?xR^5P0;MlFh={jPOdg!ungvfhUNT7_?q_~4%P4+azmpJ1>ZG1 zjKm~&Q}t{ba4PzkgkQv%o~1vj_-_4E$aix`5X(DE*^mU32(3~Jm#qcf0_#3ye4)iO z>#+wB88fP<{3q39i%>m+eAlpj=_s~jm~yhjJWx|JdVFp<9GWj-?o_ST8>KMN4*rpz znk#SEGDM58BzOwQq;3B<7&P#JAq$`a@|@>!+YF1>2uHO5_gT(dfbqK&uN0D+Nj*oq zLD}36m7a4`iFQ?-X1q?MiBHH1W*ds)rtmuxym~&Xv1sb|>DRmS`(Q7&#-b>#vvh$k zV@+e6l9^wMaRnyBszgj?KQNi4z+_;>gEBuc2Z72<1+d~lP^H`ptYnfDoE48SL{mx; zP0{9<*CK$K7G$(BxUQ8MRK~<_nN+e>U~Hz6y4$G>`~DT>^SpCTHACXhN^(u|J%Mxc z)k}5+G@WA-g*&w5Iaa8G_4u;IN`^qprdt%p(q3T+E`S7T%7e^bzp~ZKCT+IZ`sjb5 zh+D@3SJ;sG0;#`%KYbo!^e)*K)qm-Db%`?#$;VuY5~UlaEGrD6!Y+kwQ%0Lj4S1SHBYCLll=$=}e&-&D;SrnOymxKRUO^n_g{q-uuHms2)80I>TMwFo=EjE2i@jOquRd8EHNu{cSB zkrc7Pn*9Gg4x=9?kn}?Z5^jkwUp;+Wu0aSTWT@o?1=Ug7WU;(c;_7wq~%-VoLGGOKI>^8p7+ZsxSE2aR3oXj87 zRDp#>UX8a13xnY>J0GA%7>k*@sPZ_Iuy*0Epeu9kOr?a4ou#90g`KJ~yp|#Ayz47d z82@rzEYB1__}Iwow;p3t=>gprb8)&Zw%e?hy~m@`UzRSlCxH60IalDefQ7ShW-!H z6<{u?&YqzC%vSh)IVQeqYq^~!ej9`J4m0=4^ZMsP$f8_0bH6;lp9uqoa%$5Q{Xc0{egZ{)W|GvS6`rtj7G|sPj`*#b%@npejeRA=poTd%3(c|r#9{0B~+QrYDZeK2k>9%?#;xmC`G~`rRpw&T7 zoPOMEmIz0vVeySr1W#Ptf>MC7%R4Y)RS)mPbY0R*Ol65JnLQsn@g*HNz6ndRI)^UF zdQfDU+@nhOIt}X{vP`b;sIC6QSKy3-qoG26%g?wk`T_T4h1QlD4vpwbcm&TmNYuO% z2OC+@NvrJ!??U!$)i|;dln^|$$Lk&RY#{jrqWOqKQA&DJ^N4FOF!I_YR@W@?gkjl7 z5C}TichDGhol9FUuEYh{i@466xkrBT%RTZ)LR0@fxd|Tq11x55jYY68YAxVRSsM>q zVtGgH!f)%5Y0pX@lbjFIXVAju+vP8FY<>>9vZuS9P16-Rif8i+cU4HixBaTSU6`?# zJNNz>t4u;&N64~(Miy!+k9+y=C9#{91~pL2MO)u&`LC~Bijr+xKGP?>D=eGY!QHs( z*v8+z@QePt?5P#JCO_tzX_dCfzYb`QcE#eGs^n$N$1m9un#I~aAI&4L-dXIz&R`#* znIgiq&0aeXvLgDc?ux7!Po11Ff@;oRs%7;j#*SuRIbb3z7t7);zNsW0+)&epsipCE(&HxLvqZW%nMny3!Y+n(-trfjzN)g^%9QwC zPtVopUloXH>RTrDm;i? zHdXe$DXafZ_$qce74L^1?Bkdi(sleL`cM93y00w&CU_1;&+?Mk4cyY%H)D4>8Fd|evEr47^;xaRS%Rtnd|~-ao&6h zWevi%7hWeeW=NO%=-AZAhAg4cka$smZ`p4upUnzx?9T`&BV@_b6pY}8h=b;eg7>MG zs*8f|^@mL5+1TaY(f6j?=HW?fSt+qm8JZz{*ch;ZBr+^Pn4v!WAbVH1Nxa57D^q-V z#}Sh?yZAHeh?tzKNLnMkMI2IwT%Zb-f@yeocEcBB89u$1x)+Y6nieUua|LamaX+8f z*ZZHiGL*Y{-FJ7ZcEwM|%d^#AkS#u({GZ;k$iFv5DjB%~Yre9+sm&9v+p84k$Q#>v zfpynQ#OwIY>kpb{DcSuUv*MZTa-zOuBA$_r^_~dt$<|zy$LEz0a-306lETsC$^|(k zL>bPo&BEQXwd?t9CQs_5$vt^myeD<4#l0d!d%kdCce`Y>p}Lreyx{wuSa7g?92`DV zw6L>9v@+y$ye07x>&sBm@AKXow-r}NwTe0&XG#nj@r&SszG!QpoLrDFi+kV9D&dc1 zm#ROvE#tDUmKJI&g|VI*7HH&XCQ0{dTb=SF*`(T&JeD`Y{9A>)YMhj zm(nZ5ENOYNPYgpzWw|Mgt2CP6(+N@=z=SNs4iZX?&zA|U@vi*`Oe%#dfI+cr8zp82 zVG-Q8jl0?6i-I~sSJ_A`bRD2hbBbFLsVyarmQMx{P=~CZPZ6FEqDUTB__ZmRwG=Kd ztp7tRoBUW|R7d0p>R|2DB~C#}A5-{^DcLhTlf8p1DPg4T=nPwh@p4LuNS0P*9l6Dm znuIG6Zp11>gW<6j8Ny}_RBcIqa;BEsoF#)VO~wwJUROrt3Yub*6hu-sxmuxIQ+SIw zih$!sr2x7>cF0EZZieA){)m)t_I2Vy26GkGTeLKg{dd#M{}ozF`I+L7X*u%9ZF#R7 z1eR}1waKq5Jf}wq$|ja%C^L=hw{zq%+q$b(aW1Z2&+qhWrxM!{M4TyFU@}boG5fDF z>yisTpBio7Jr^PlxTP*9Z2`d#UOma8{^s$^F`^-v6Yx@cS6-uhkND9BA574eh?OQi zo@0=7iX`BRq>5Mf;m2%co_#KYN}nCJyezf}5F@cT9#`5ZIAJXAF8|5{*BjRzH5n{9 zrSYA-`n9sI6hD#a8rKq`!2PdAuVPsLSoMXh{m8sT)0x2Tw-w?3ccOzBeVw8bZOKCk4#ECs0xK376=)c>vIE=?tSWg*KR&iE7 zmS-mYxHC|Z5mWpczI?UjkZFpau_XRbDtEnXQH}JX=5%{Vkg?k2p2>Vu8YcTdJqx$~ z2*pJAUAh&c`T`bVuPHGEC1(6Oyi5B{rEf;2M#Y@j5V& zHIe(f#kMzbOH=_|x-B|#EQzx}Fh0R5qHJ&DT!sQ@1aUBHo4G`IlQ6N2IRbUQaw4`% zAtQt_-yuSguf$?Il^3DyFH&%dyA%q~zZRK&R%y5E-@sX+apAbDu7LnbS+xDA$yY4B zbPtQxhX=7^^+SloPDCs;Uy$uS96xTNf*MJDq>zMQrSOhgUj3B(gX}8e8m(cs)jRheE=6~{Y5z^I)Abu0l`JaWCbfKTTV^P4!tNBO0E-)6}17m znza(Z2V)z;2VN1vhg8G3S}B$;UC`Y=waxI?;=Zs?S^vKf$Of z&-Zt?)Nfe_TDdJy-jv{_PP5bN|Dzk-))H&pTpW` z$#=8652R3E;4E1w^YKJh6qzbiXW-V6wuc9@jN!>9f;%8OCTCsL{JWyV&L*z5=7t*n zD7qD&pO^3oF01VRFjF$OCjFwOZH?$k{MkI2FV0_K(PS#$+R0Xwe_HH~e>PY1o#~Bf z#+&hpsh0J!#Z|sJnlo(x5PvmI&*bXj$0)phQ0IlF8BUsD&;+G}s64b;s3wx`yxDZi zrt!nspR#J+iMir0_+COW{T4#_aupRT zSAGbyz^_1)F#$lTHynOf7T7-0Ln(hw<~|=OXz&8E0j~+Fh?W*k354#4)=u_Y9106a z-`J4?-Hbz%3`4y^xC$7Og?yA}>JF&4Uo!|2fCftd4G5FAzMWk_;zF#1SYAF_Azr14 z+G8FD2P&m?^44;Rl@zO#4p1=J^f>O?f6|02yl4uM`#~XPT!n3wUL!V2%YD6cVqv%0 zk}GJ9+Gi^NoSXD{HD()qIhfL@r>-LvwST~qBC`wrV%@Uzl+d(f6~+ZZzVTpkp5#~%=f%WBOYGpwi$Rc3tH|y-Q0g98a3{|ae;vdXp@6_j?o3$liRHILj zb}RX3oEgf?@>?OZfNb2Z|1%8(o4@;n5^v&H9nHvO$EnX{F|K40%xu0JC<0&*_4xE@ zZ+}8e`Va92eqC*HCY#@!Wq!Y@5&q{!0%0Lp+VDf(+J0b}h$d_&O9I)~YvJ7HsJ$kT zPNGW-ONrNQg?58Dmi9eRd6PfaD)Ed8qe!Pi&jwlhEu^^>+cKeEV_CNfx$m4Tn)KG5oF{q@y$$#uJ$= z{`ajpp*@>ZOX4fM-P83yKq(xZ`6=DL5$VzXQSrbHpuC|75l-3P?g9-0a2A*e2$Y_#c-k64XW8$=0bO>U^NJBC~VwH$NAjq^M zWC_+PoHhGPwpeH-;z2r0{F2RPKTu|}C7QKlZnOUA=rU4RMeJ44#)78q10k6#!IDhA zTwef$BI%{CY$nDPHDNK>eveDCk3qYS&VRigxe8L`Dr8JkaKKgAUn91?h%-4r2cov+ zO{35W@Fw)1>~i@Av=FR@&bw>XPpU6em0{1oD1B9wP3&Zx|hKdN5@yIqRA ze?DhpR}iV;AP0KNf+O$BYu{)Mu>#Kz0pmf&(ro$eh=GsVe&`pZAzYkaI@S{dKjEOC z!iW)?XvLeMBvgCUjv#GbA#o!3Q=@`1d1Z=KA+~QliX_NQ(7WKi+$3$>UW498!R0W6 z*u~QRD6b#H>^yinGO68d9@(s-5}kiSp`Vt`AL#$}UeNy;pZB)Ar7j_D;@}6jkfqQy z?vPKwfziLT$}KG_#tl(dMl8z*Yh5ni6Y#Lf6%({p$!{T>F{T;Xz6Ymka{mEwNN-h= zpn{h$f)g#tXIrOeuLuj*>p8~WJK6k1&I92ZiAlmGzf{WqLAtGx_3-sMq5Xm#K@2|I zHIpfqgyn@=#-^6X*QM`#1OH6)C@#~Je=;m5w0nQ*_4r%q@h-TBsH1xoqc=uW5igsN zFdc7R(Fvg7dka9J<2_MHeAWcMJAQ732|!`4()*%D7h$Z77j?^K;*qatj+&->7;nWN z{hs@U?89bFK#Cs}yV`QUnw=&IclS?GXv2?mkg2jl~Gt}f@wK?=S zO#$qsMH6be0F|J}pKt-tAv^6xMx?#JLYdNbC0&#BA=EyHUugII5DFkm5$fCF0MPaA zko!Z4KKKMq9W(5;oEHwbp~HQG;q{Fy>tczmFLAh!0L>hOX08xZngTV&QyA+sn4rQO z4`e^DSax}rO>fJV?7}l#FJrO~faa@|N-OoPNs3&6{9;)&RRu1$o@g(gIaF=Fk3kr)a z?Sc2Lu-E+S3NexZc~8_lftq~Xdh%KcSd5l-WFnTl0-c=C*?7=m$PqNvT2?pRJBWQ{ za#Ml~Xs)%?H{G@y1k-Z`%||7xAKebePMZ9XU(j|`QvY{;_{Jl5^TAQ5%?FNsLd6PrC=VF~`|`U@+4=SZ#K&+@NCoFX<6*32IxEVCYy z#kW=!m$4qtuzk@4^MpWllkZN3C78h3kGys!OQ(@Vmfn$qN2YKg)+@H@W{Er9`YU3? zg}l;4uAbMfy;2*jt^G4zVGP@EQdllsjc?}h=Hh&#@n4uGJW1@2Buv3eR&=k*RL;HA zdNH*9Q_zk)J|1e~g@srNfOx9a*OBBhMioI~Zc+Gy(#O20o z@%t`t*U1(teJ^U#Iwl8ks&`Zn0#sPE^hO<5?3^hKxNXiR?5u9P3~+jK!>a@pmc0o( z?R$sxw$pC9ZQAj~QMag+tuqwjW)?^WQ#swRX>M;9^N2;zuV{ymXS8+a-Ps}JGe@U) zwsku~4WdfmGe+H(djVAK@YwPXAq%cpAg{Ds6uibp=Tnw(IJX1pdONP- zO0ZpbvjU{SlqB1)&x~dRz~}MLxvJBA$>d78^=zhAx_UiXR8f2EeX9Y@24HsJ%7iZ8 zkP%Q$s8N?+)6fuf<~~&wgb8wP5{FpY;JQXxI8br2MDc!iqj)X^7xC1dtZcas$p?DoD}OiU~Dc`v*F&Dp=Kny=LKnp3`f%!j9# zu{xz2nZCk~&*Wbvb{Fnt=b1%V3HPzUP|(9tTHN}-g)%;A>2=XG)&>hBI>SSOnkVB5 zn>l%Ece}E8WOk@E_48Fmfp>VOMV{`V@YO1z3nvHzH_7xf=N&O!2<)1tIOt!I7bNcc zOVv8rqm_PpOa}tZeVLvKMOB+*nz8;#rtRsy%M=+YkGg{xJ5E-umnru9?=yXpPQ0k_ zNx>%sabgO%VX~?|%?ZVrktz8Sb?HyhSg;6n>5Z05&wtQbn{JMS zqL^;lv?8~+V`r71N_UJ35o@OBg6I(Hz0c^XgX-Q{{EiO&bPWp>jAoxtp@VO<|hf_F>+oirQ4g5xHinQ*h*4WQ}2p8Nt(f}bg2 z?I!X+Lz|#}4zhZq6^teiI2(v~Da-1sFgAtLWsj(M!a3tQaeQQ@@uD}RY?aJb+9yUk=t`il=s%wBg z9c@HLoEW(IHn782$OyWIOTdF?H{4$UlYqZUduiD{1#~tv>+!IP9_%^xE#erm-hq5i z+ukSxQ{)Vq3HHKpP6Pfsa^S#!Phtx@B$1v$+I*R9 zl2`Fb6CZ~~tyf?iyhbb3j?Uh|Z-d!pO1a7?o!>`{#*-zknZ^)}0COu-GFEBjA#3@T zF0(b_0bv-)Yqu~wFOM-{Of>iKw`M(t-@1+T2Ag=`&-49ogrX)$oH=3D*6+ z(SicKkSpKOZ7IIRee9hO^N=;omTr9Pk?<`~PaYL_dh{Ov4(`pv41V(6Q{(jYQ&s&3 zB)u-ShZkg+tg|UAv=J4wCzc$dDA$&vZoCO~lq9 z`!z&b4+vix4hB@Nz41G1f1qhPc{f4`no%Qp{27f9cF-UKchO2aGr+2(k2~>Yzyt&^ zao`IoUE8>e!vuiv8EqKR?tQjC;}9@{8-fB(L$urYLOpnd)JF1^P=pi=s~>K8yc+(V zh%-Cq0*9E5vpQb^FFU08nkY{&N&J|VslCavhAYHP8RTT#(wUElL@wQr?+)~1hBZ`S zOfZeZJ)tR6Dz2x^q@Eg#8S=T-kwuhS5M{}_D0pbt?sJOQhnzGZ;(Ifs`mF{va?;d) zz?o6m(>tm=s8tGM=rmx@EnvFEnMBYrVMgvF#xCdV1*r}rI$BcCQW%SEjW@ygMgutH zy0@Vjd+|YY0*JQ24J?vZpGGaR*rm2{x#xotvWFD46o3ZZJhpi zi^7rx6j~zfAM3g%=PGec-E3iB)q_;$7G5FlHtV?|u$L$2!CoWm1z*+sf>#EY$Yr)E zUY7;Stv0hsSR=OyFJlQLwN+>_Q)l^Pz-3uHN!^j#e2l`mb~63TN_SU!mp-5|ywB`P zSxY?`y=wgN$No|?%V=vgKAxQLtvI;9>T{}|+dEEB8g90AG>YR7aUM(yEi^A-3d!Jv zQB?EE5{$xc$S$+SYp>*IO0a{A6v^6hu(pj~?lo0f%rOe9MvI1MuLgc0Ys;H=&~!4e z=T*g0|Js>B;@&SrRqpJI55T0Y{zLyn)B5y2n6#znVA2+Q0VZvCpBSRm zJkHMK(nGW#h78ee#2-9Qb7$Vg(9<2Mrjd4ujAl-tVI6@N=%e-wj6*dK^P30e)2Jze z_~keo@Nf+~WHRL_d(;%4Zoo7#wvWG2$8&U3)Zgu;N~>mc;gJ50i>V=VFWU2V5P4^R zMc6O^1cST)4h?a=hc#gdVVXMJ0cYUc7b4J1Y}8h$U^ElknU7wo!;-1J4lT6U*pBri&tTX#b$1%wp4imVSp{wG(Ttk$OtEdILd=FCd$Y-tSx}9Uqb~=NW#ABh4T>p2Y?c*3^s&B1>Z3&8aL+$Ym`Kg8AmB6pl3DbmQ+=F6$EuEmg{QH@q8 z_0xqnVUDNFmG6*Tqia@swHaPC4oLM~s9^QgW>VcvNf^Q6>U@wH)bui$>7*5RSK-(KcsbJxn|tNifM_1UYm zfer@?RfZ#?<``lD&!n3x-M^gX5q)ULl-OQBj^>Iw=>QwG3rnbeREtAi%P|nM*OWc5 z;;1Q5)u=oj7di*(=+MAinyzcxxU^v%6P0!CkPd7weyAzb4To0jb016gXfbA6I^e(2 zS8gQT(@-xRk0)(CZQDqd6SIm}ljVXc!ms#qQf2#zSX5jIzy14_eS__FG1McZTYBT+ z!hh0T14ub6F7ihm)=7v2lH`-gzAWwUcS9~$Z8@^6%RQhHL!$Q1WKdvP z8+Sl_E*4a9u@%`@pn}Vg3huVsR}+B|!vL$D>8a4E`+>g(LE++!Ej3Em1s`e^>~@+w zRgI@IP-8_IJ9a}t{lskBD+*8j>>zE9w7<~z2aebx1b*Cr74^^Yim|dwp#;a_NPs`o zaDiAi*1F>$w*xlpZ&CXylEgbe+7?+Wmww6sCt3*g+X5B4`l>#-42ju&PD2`Os__;U zgJLvW%OzA&7l{%q#q*mh6YqpR?6Lk59{gaOoZpHIzm^D!mDrhUVx=IFyK@icVN-&> zU8E&5v=6;@j<*Dn9^%Jt{fBuGwlcGPmn4pC(N4E+OBgkEL&!De#V^!rBTtyj+?=1{ zyQQnv%S?XuNpoeqHf-mA;vu3YaHxNgIDBDvvK*neYZ) zyP^wD@~r?%8vl#vdi;+o`7Zd;O4Ha(=3JFDPt%%Uyd9tX4R@n#X$dbk^xUJ#t2lSN zqB1Rmc~)AuMuKofyf**}Z@}BN%hv(!YnQL6Je|1?_@y6gZ_svuoL+F&qLcg5NikC-q3s0(uSLsK#~g^h345`CHAWZ9vl=4}8}`?FLa{zwpU-Qba9ms~ zrtUo{Uq{8D&Uc-7ea%0FbyTjvO$_u^nFR1 z;J53^+44}haEJ#*w@jEH|F^gY9Oj>tKLQpBx!PM6G*OaxK`9oKJuq=XK@uoKMnj0e z=0bowWzbLENNSqL;Vi>+$+Z(nD0YS>P=!S*_b?6lH0K3PwbYX-l7DT}GtzdNfb*_{ zIEO4bqe^{drwO>}7qDAE`SlkLA@zoD6s+8{fYUrc`J3Z;0RD1%aj z*>*tqSQh&#p{a1k@!70^Fjp1`U_-?pa4%10zy{c>Ak0vv!AzDmZY-A*q{UQg`6fdb z^$G0}zs0GR^=p6dd{b*1uOEGZD-4X=ZDOK!-s&PK@yNjBS&Rownc=-I zJ2HKGU5;g1usxqCq}p2pj26jJDeql8Qq;6RlgU4ZCO;=quf>eqt+fP2BX^{U6gHRV54H74gQbSUitG2FKW*bG4(R8oX&*)$L*{0LecRH&n>+6 z?xZg@WLPE}gAS=Esqi-bm9$O;D*YAIgeO#1^cYgb{-E1{jNdH~7Gbhf5BrjYvvA%q zn8wtFQnx)Cw8a#p@`AH3%D2Q?YL0ES;H$Jnb?f+bE$v~E58EO3TMT;-TiVkj9=3#o z4-~YX-`vt}{F15@wW^XX+d8TK$+P4;ELBmIN&MKOKUJA&%TcpUF4`-`%iAq1 zmf0=g+sN_kD~DspYT=LFvW*Irw#4cCaP7ViOkqS1kneLWJx9|WheoWe@gs3Jk$xa_ z`Ii3?(-!YOFn3d0z}$^J1Lp3%AN}{3K58X?r|?SAt5+GL<=joO<=3UTnsbeQtHhsl z9nNHKj$fEJweSl3Iw{EotnZ;JRuY5cZ8C3uuht-4oy7`EurUZ z+eCsfy-#>KwhF>y&5y!5VG#DUE6_)nrar8NJ_gg&hxs(y{Ddr*LsSY_=PK-gvKI|k zX2A)_%TZ)3gM$!xtb2ul=y2A?yDgq&p8(f^0IcaLl0%-hD>Znw{`b=!V+UF%vG z-EFnhqEMw2H4?hpRx4CkYXt!zR+LmxQbh<5ld(tFdSDfSB0`>4Bdr`FM2rxUskKTK zLe?OO5R#|}F$6L~PBLLK?{_8%;Gx}p_W8Y^*FWMtM{1etzOL`}z3z!(w`2MUctA!m zGUB0PQQ4n5CKXGQu6MgBO4B{95wA4}h9ASVzeH(ndjJ5f$RR6cR2f0%bx%1-Km*qj z4}>Rc=z69i*<-2-Su=P_Fx0o1adgKBgca9=2<)wtsXEW~0!cjw{SL(N7}Xff{@C$0 z#Fx&#X&Z*fWFsJ^<7QuA4d4gR1Y7!>eeCKhvNdE-F|dmWrw!#WuC@vf3HJEolElJ9Uo2Slw*hD8v%_o;;unMZyyugpGuW`BC5vH zN865s*vhvQhenlC$CWS8k_z)&c|2d<=A+=L_n@~nC=4leu%$y zL6>e5%ue4A@oCokfd$0o>uA!V@@K&FaC;O^MwG1YMH5_^PBa1iBnY5X?Ab&P|N1z1 zD`2~Pp~b!SD98PxW$I8A9H(s3S7>{bs^92#<-eASITs#76E_e)Xd$TN5D*i2OaBpc{2 zC4E5L?9j(8G&>{N{Bzqsb+mAcb=N<$pkFwqKqer3ix{y!!D_*e3=)>4?Bd9*-Tl2F zE4N90z)vVURBO*G#cV#devbnJj>0ovlmgMY97$E;r0&t$Q;{Q_7W|Fd4GNt(BjPzY~-qce`3pPqXdmCgH}Xjo%k# zJqc?Mfu`T< zm@d^OUB7xCXGzgVq!yOk(^JK2(yt>l`d)VMKRqf`RV#1+&+)j$Lg^bLk)-D{hmNY{ zIfs8S=y)!tkD&U6y-!%8p_bx-twBTSJQcW)O@{S3 zpE#6SPOW0gHXF1ZhE`W$3c+4S79i{N(xJX&(hZcAlR##qpB>4AUP2N0Aq_aYYU-MS zQ;O_NhiZ-Z)U^-zLw)_imEC_KkX7AZ=h(!z=UtKA)&9QtHoQqTFZ!yL2vE+3h|b~R zXZ}M42uw8<6kw$1%Nb%F!M33IGW(RK;uU+!?uJ{QS9}~`c}lTsip7C_P~hly)m_ZP z7>OUqZDkQ<4n^#p_cbzR^W+2${#xvMd2eRK$Br*l&IxPr96d~;LYdxr~ER!Gz;BU)Q)Hhaf`K2Qu5_oPLxA%y%aaI!kB3d5KO!LSi=&oo0 zDqWFz0TeY}L5)Mn7ogdSY#?4pG5vBIKnzU*C7!jj9!({f3h*OA2)e+mV67+WlpXus zM(`3gmR3%8q3qobT^x6+6;VB9(N|&rp;*h`kV!3(oK?vON7lp2@(NRv*KI9! z4AaZj+>}?CJnxhNlIUaFu6I+FYv(txwq&BVYYwb449xvsgiz@fC#R_uCxi5glL>(| z+A^R^7CNIwaSyd?!on{fN@&`k+G}*(L|cEp@@I@T=u*ndP}DQq>5>TMu#Q2Cow~$F zY7efTfY&6TzA+@kp{n8~?yT9^N_Nv-(^7g_I9i11!9PXqoyCzd=aXM*O{w(ws7= zk)~O=L(kLyPT^Q%{O5|P6!aoKMazP3Si_#TaMvQW9x^$VIAjUYpj?7VqRQx{Btes! zxO*J#=fZ^ovbhKnESZi5EwTezYvJ)i9=VLW2F=WJedj`Uehv#+xxyTh9S2b3j^w(K zj87eVfwZznQ}`M*k2^9)tGgb%2IZsQ+rmGDSH-v@`LOn$wT*0#zisfq0<*-eP-tzl zJqaB)#V3yafEVprKGr^U8#bj%tjON)SRHS4UwwPCs~^!nXR$mN9+?i3Pv+rvpT7XD zH3FZfnVNzOWja3^`o!@B#cy_eFS2aw9*5j@l8oFO{Vf?$Kl?O!Q1e_D`u3)$9ma3Y zylv@nUD16*DL?E#SAM*&Ei*|%e0vDjlXB1M$RpzG5miZ)^9S}{c9jliT}6c54i0ZCKx$dj`szxz`!R!Q^@)AhCH*!M=y)&-Zt54Net18ziI6UI=c6C^l;LSWS-FFkQ|+zH{PEC@zIuxyE>jij zV$diZ4~4CV10*hskNy(i-)lStLnvw3?R5MCQ)XoA+tFW_oRh$p}@yT-7dKj@fB9_V_m zABo+%S5uFPPVdG!D-+)&q#tg*(&&@}uXT^CY>fU7efZHQjVS|Rk(b>mA0um~4ow+Y z!@cwL+=QvubQ|TP$piN+u#i!G=sD#-<+WGj{?0N_Xr5EW-B}mQmK&!r3mqAzyW>V* ztbcWNAP><@DznNH#N(^09~umyLe+ym6AYmRnb$e+dU;?^P=ajC@uToU@A73X;W-AH zqU{Nh3`;8TK;;p|CEkWZ;Nwi7pH{F9DX-F$-TfjNj+-8Z=o zOAVrVu0{}MNty~WFtK~|$FT05Q!JHY7Py5SF6P!}r?SBAs+6vwvfXH^{D+RDst~yc z-W-{7vwxmO3ls-3aiz=^aa!|XvO6V;_bvIHDB>!zSM!`G$r!se|8m((QR9zh*MIWn zl<$Ri1|JiTtQ3$>jh=7(LcFfI@mv?IHl&LzZrz2vLHg|m^6?_;Qu`Wg(BgfQ=~gkE(#in!R2> zoyOppFGoY^-b@8ZMel`_<>6&E>MU z@(Z-(?luQ79hsT2=mG#t1y5h^dfcdzJjbvc30jg~E2(MtLE<@LJ{nyEZ(<2_pf|Dk z<)#Ee8r7B}?(z+{%#a)v)%kVK|ORkNg!LT4mfx zKqNYux79W2!{pIi$aW0C+Y6{wO!iU-dD|BbX=}nEJ$*{Ip15fVVQzz^!c=k^lAb|v z+@$LuP2n9U-Ds01VG_KcVrz><3#+k^%fC}rih~d=Y;(9c!H7VR8dgNQBC5D&L1vbL z%$%V~S}VJVYbr7Rv(;gME%ozV=nD3;4&w<4kXn18iL!&^uvlJq zz0Y*1%x1Hd51#y##W2qZo_-tUCcQz*bsmew4~<(EJNo!x2l_b6BG))W|5BqdQ1e2B z|M-L(df_$Pi5KpmqmXri06FxhUM!zGGs-jW|B z%x@Sl4s0_|UQj^DlIQT3rZptuM_WH2)3njT!_(kcgSsMlB-lK;sAH2SN7 z*KOg;g&XuM2Fa1qk#}m;vj4n2&A^ z7ohg1HRw|Oa3y95v*wysim-!u`|W$;joRpLll54%F>vH5bJDF0fs=7|loH1J1p4U!8xd~^t+iggJE4(UiAs>DZ=Dv+UA{3kc6%<-&ojS5 zbTRs0CNA@2JhLm}TyivOS#FKT-&SP`)giex?a`=lBqo^1=59+f$IA+AQRp?|=zDmX z)$*B|vxCDc7L+~VE)tYH$14&PzQiaJ6a>o(1^G-ypLhV3@3b0BQk^f7$5mIu{7@i`aEhMeFdC{r4iXq z_{e|}={-u_Dg*YxCUt-sc~9}~qke{epZ}+g-36}o9;I&O8)u&i#9o7+;o&U@b3aB}(gi9C2QR_|h5DI2`o#V9wIk8aYn;p0ERJNkZPbXFn#ADbpPlo;*~w`HcwMjATw14g9> zJ_gQvI+!~jI|(>2id5$leg8lw$2_@K%@(PCTHxyNhRG0op-Ny@@ z@;UstrMw#ZrfGwnYSYH!rf6Y~zU6rAslFoSqbxKU|9yIfdGZ~H?09TlUy+l@FR4>Cvk-G-rvMk`ZhC$e*P+w}{i2GW^sMX{jQjQn0FPw{q7 zHFpm2jD_{hpd!DYx4%Z00+6X9b0e@1+^Y1v{34#>Jyq$B?&10_LytlFZ$)J8!_aXT z&YCTndhIXiX0CBL%RJQ>8*45$bP&<#9glS_zE$;+R*mHq@d^dXQ2jA`Q2BsejdB0W zR3vC{FRZnf>RS>-EK7OY%S06S4B)H*EsI81>;|w!=LbZi%Zv3<=rUnh6#DiteiZsv zWkeMES4lt=`WNXAvpW@@YyCLQS~Z>dOFOH1PLKlW7s5eG0pJ)|^} zs7HN#j}^^a1z*0E98DcyHx<=>4$sADsXlxYi3X@9q6}nE*EWzlFZS z_c0!TStsux|9A|^*dF5Kobgnwx!W*}v3$#o$*1zKKI5cM+r_X6AFqqg@#iGCfDU!Gn%yq>@8P)PZE}MLN=_?4?Oz-jygwYl>wsrOmW!~ zL_!D-EC?ED==H-$=}|HVScB&S|N970N+jb;sy2F|pGFoje;dS)!{4n+CDT}i%&F3xA^NyhnNQu;SO^Y4P|= zF9JHgDC9bxygTr=+O#G&Uih&pWfs4P+VvrxJ5>^G0 zXB+kobY=_@AQg}SN# z6d3tVDJ3S9v%A9Lpp)Zi=#*bWb$FQX(dU{XpI*ZehPzhTwK_95ejxME42Jw}jPSxU zJo(*}icP0-?PRnQM1aXdS;nO)%WIb?Vrb=ULJbPUUqhKoS8TD z(}3F5!w8Bp9u!x-!jEN2>g>tF+)oq8ezT0J7-?0z_*PFQh&ro9YwXdex_Q=kM(>o1 z*_st5WYB>PSxcLA%fpl1^{Si#7sFg+K|LPMf|H>cC5z4*I1A3`IcIbw*$dx{XH+AD zZ#}O|u|zIDcu}gw6NL_)M8MNkxLh6hM{e^J5w_TQL2dd2f2KuRCtz5l5&=8{5`i=rxN9;;mZs!8fba;Kj)Qrd`l}usvIZZ+&*7-Ol?X%(JYGnX^A#UcqpN!h#8m( zPdPmL8^2&j2@9{>4-Po($jX#?{EUk^a{HxRBTp2ok^$5Rb@=rFC+GDO_IWwVv+D30 zxv9~{FHEg3^8;&+tj1H8EC7jh*YKs9dn>3i%2=SPn#+&(oN2W4Q3cr*A7gaeRw+aH zCM-jcFLoNf>yz5{YY{!)xIV>g2t~dKU~Sy#Hf-OWIpBOr(q$`>9o;C7FX_yX>Kw{; z7LsgE8a(R>GPPF@HhJo8W_flBIrOAMz!Qr{yqF-IRmO4vio(-^*8y6J#{lrJ2I`s! z8>18Z4k!Q<(TpOpGwxv&wmClHl0FJG?Xj-HXRESyt2sGm3ZhYc^3epm!`fS=7H7qJ z8AWb)cN^P8#uMjjL`KmifrxcnnId8xyTTN)zUg>IWc=?0g?-X#c%G?eoO&ERJyY|X zVeNqer@)EW7o*5i9@z!Vwa6hr%J~AbOkrEhLRaJadaMg&_7%&}IDBrXbpuf;E@U?E zV$ztqd>?lnya0*ZkO$-zGMCYRtA7jwh0%J@d5bw#b&qp+4cbP~{ zV;m#ve8>`kU90ZSx%{Mi)cOfOMx6@$lJx!pXKtpOYYUtJiwVO!jL7=4@bds6%F%Az zSITgfOP>|)+U)d8%(R(KvGc~{zX4u6!TcGTIxkoyswm-}EUMH|Dqi6SYfd2&A9Z+( zpOt3Yd=N|CYCjG?+`7HqzNiFb)BQzDe3Y4 z)K_Yh@e}R7ApYd?@H6(UIc@vY+?yv8MA(HFL0RQv@aVs(I0N7r>26eq_p&OZjm5_5 z5Ppw11I4S`xv^V>@D(WU%j9p@1#n83&5hx?*5tm^JpryoEh*Rnu|DIhwiMg;<;dU; zl&_h|t!uw**sgN0B6TIRIrW%FCH$NCvK8oE^98;)66v7i~j=b`KTHGX&6$^}$yFosc-z*og9J9DVM0sE%lr~GW zBO=zFofSm_DPxh?zE`hWBx3c~I75iPa;3mIn@(}e#pYTNYUa8mv+K5Gm05cGbhMd! zyZ%jc`0b)#K0;UdRYoN)Zn`ER0~r#sa4PPuR|p#Hn^-dANj0~OSZr>uIorb!aTZ&$ z)a;|k`QM7LMLpGOQ%Po!g_T=vUzFB;39lZY3D%;G zYS+!$1`(&()mNE#2HIo7kB;0Fmu=b|TJ>S^bn6-NtfcHcXAuJ<+eTtu;Wf)$$lzyzMY0Zq zB@(&JIPF~OhJ5bPyy{RV>8S$0*GamYo^M}nNnd&|RA^2C{AlyN^z!dA%Z@aahk4Px zIfyVY`sWa8_vV+0i#)I3;zy$cbF2yYYSnhJTAce0*j&v8Whppey*@#30SW1~9>3rU z$eu?8M`X_>UP>MlT-DB(iKmom5tdKY8q};#7P|0JBd0aq-m^fErhnaa&uoNEK>|bE3nE=FHZ!1&$=@hQI+nu7HuB zI_Q042WSp}pZ;&uE%y;iDNRb=qJ+9VJ@QpQaQlB%xA-6ZyXC^-1;5pVm8sdjS|k^|;hg5b ztGU-#-_I#`)!{cA7l}9*resDN4?Msr>Cwib$k|cG65)FyO!@33jeh8|+{RH@AJ31e zJ1NgN+fxY)QZkr%J~uEI)7t{qtn?g^StEycx{GB!R`_O@i>nsfvb5D7VGiW5tkYvb zv)gQ!yKf&RgbYhSV&<^|Cz`!JLYrVgvf%wpxo(o5A=mD)q;CMsczm^qUx)cQho#Y~ ze9COp75uNX*r8cvh9LByrKT|ob(SYap|&;(cYLXKm5nSlXST`p@T(|u{}qM`qZ_CO zKw~<}N4e3)OzR|(Y9V~vV3DHdXmON~t&vxecY%Js$_#R|_}>Bj=v(mklvns)EP|pY zl&UMJip5)3P(R*3q6?V+O%(%D(pR0pO}!)P_7h7U-_P|OeP|W)cVV)2Yq2mzP9bSn z7L>hcS!uF?Uz~Zmv$unIPL!>ANQqCuX;+3I^DmUSTpHatqI}y&aK=_n@PJp9`S(0v zH*=f`=Fr*$z(Egz6HrscD|}`jl;?gpRomy3^lmn1F4zsn?xUTbhm)SF>Q^6&GJYCA zL86VpDa;mS+_&tZ%=0@D)*Abr+SRvvgIQLP(HnrGBjuRl{IoP_O8~pPM=p&;h%ga$ zcD;+6LbmD1S8|*6u9=w^3C2iP{1zHXjk+f-s6bs1r8fhTBF&pNX6$J5sLEWeo~Cn0 zrk9=e)K9jQz_qqjuvomC^`b<;b^bh{Xa|52aYhLwe8b!SC8Un$%7@)+td$QbZP;hQ zl8(4UM4`7gSpgWabZMiY%rZW0mYHa?%v~(_T6V8l_F5CJ@h9y#xDbf=cio^`BfyS3bU@53P5wkxqv`yA#P@^;%a?uWRAk$09tBU+ek( z@oR9e2{s%Bqp?4EBg!c>WR#=UljH99c$G7TCzZP516til&}iZALS_*EB~2}0e4=G0 z`(4FybXlp~$qoZk?0tM^E66dZXb$F5YE(JV6KFC;35%|j&*P^o&8xP5H?4;%cs}Ds z3Cpt@VN6A_F8+b*%v)nnfHYV@A5=NPXv{gh@|5z52 zNH$Csb_&DSY%6VdqTADwu^)-B1#T{zunzbI+&u-*Jv&)m#m6Ey{wrUNYbiAT^bspr z#Nx%y6B%>a+z>+HmSviy5$BWX&L=QT?2ckJmQ&XbozIA)iMZZ+>$DonT2^sbP~q-E z?UVF+gNRjeP9b8QxBz97&m#an`=(=ti1l?sqn)S)cOXCK9E+6L6H+2jqPgjP{4kJEjIP4x+A`9}W&OJR>iL&9E#v=2kNE9D_zCc(#b;BHdYX8eKA3BRivbu zi(<{ccXM?c`NCblp_HIBOf0Ckr@sn>l^nuZcGb}GVZBND^yI4Z=J_yC?w;C!u{e;%?(V(Jxa=w4 z%fiSaNy_#Mk6jYWPYwiVw|LszY!v_UPG?JwxTRB%h#q|b=+ z3qU_#O~4!;qKkfrQ$5CH$7RmZ*dB$nMlF_CP*#JKvKk2enAI@X^$KyMqH&oyeu=JA z#KLB@%_TOwwkMihjmK6+q3!%Z5RKLh5RL8YjOvi~^(wVky+NwRuCT%4zOp%AE&k_R z`2Vv8>YHT>7XBJ$T({bsq{{iuK9Z(ShniHCTVWsR({I@V)l;4b_8PXrbl1i^273(| z@0)pTyszouyXK^}oiI!@ih0Dcki$$}H(1^>_}y;m(^rxDXpw5ZDNchz|4h;i!6*BjV_e60|@eU_cWm)nKAWG>>|Z`kJQRQ|R+(I`E|td|lUx{ZhEh+j$)8oO&C$ z)U|Yrma161U03?N36TUp{ak-OQeKtdaZSBDa%nkl0Gs@ex)u-f(K%-L@^ebR{%k_) zjX)GV;X@M;Cg82hUrCKRhwt;XJ#+cb$3dY)@m9TO9{&Z+NR_>04KR#i^WZf2{RGL; z$V`u8sMg9`FC_SnY0!(@YP2@?4WkDsU$578ueQb-yFDJ+GE~Is9m*6lUHLZI@cw8@or%?W=$X#P(*LUBA2--g*=fh5k^JhALr>&kMJ) z*wVJ07v`H}b*-(%oyVqxkM@&ocek?V{$sQ&=(2urAJKethl%F7Thpsw&JwTEAg0so z!wnq?Zgl(2f<&ak=0vPlE9yNlfmWpVs!7@x%(jyHOOAIdYQ!r$0dV8Yhwz*j*k4{~ z-d~$}n@N-x*fNZl^v?eIw$ctV#l5M?rCEiGxE(9;LTz0u)$hk6;4@!Z3|!79VDIwt_8k1te#fEd#usGH?e$P)6oKdDho`8P^);@QZT8 zC1ek%oK%AnDmZuuzJgQ2p{BaOWJ~pDjp$}D1vLt9zUTyvJU`0rL+ChkC&G`yK79kH z59jxQ^C897_1aOD*k!YASEJ|)ghMAXM*2UOlaKR$o(CT}J*2Dj6Cu@b8WibAJzYLK z9pT?+rz1torz`!LAS%LO+3Alk)DKry7}tdd88_@E_)mBWlKvz^W50j4GW>2$hbwu= z;Vj}K$YZx=vm#O0-$l-7J7&!>5%pHIzj836*rDCJo-k%vvB`JZnFucK{xR@+@#>Im z_4VN_S4VbzJD2Q#djP#Wp+iNhQIWl5nyFr0k+zR+-@=2j-Qa>L)mFoe77DrhUgrN- zO4vzzM9zhu)Z81n(5V{7YKaKD=!!e6cu|-XkDnM#-)hzkSG;9r*rHF^t4HR<<9)NV zt|xz@TK)Deu-yhWIV}TMzvC=)ciY;~q(H@uZzrcDrS<6s{`sXWIhS0$opU<9p|q?H z8QvdvxKTUDg7UhEmhS#4A`?6P&5vbJ%Z;oOUd0(@Qcq|FQ@UEZIFoD+MBfa`*kSds zge=t#rza1pbDAtcVRjL*!-|ytCWq!4lyA4U5XZiK#X3g;z8FqiNK1a zbsh%*b0Yu~>4jpD#;%|Ou&ZzNRD(}H=IqnvI=$)ppbh*npPu&pX;c4x@7{k3+@Q+u z&QtrmK0Vzepv$fCqp%6iK6Q$pGAI1K_D0~f@D|S#zY@w%2RL0%zEg)tZ@G17>EO>* zdyhPV-+emHU(!KEHu^++h5*^-v+z;HeHMOXwD1dmT%sC@7XCepnXc5XFdm)xJGZ-_ zj~9eaisb0yQ?|88s)$t!<*4d=VH~+S2k`osV0p&%*j=YPLJsMTf!8@(-EP_Uk-eT# zCGyzLrv&ngClStue1aSe{hs}&A-+^4e8kCe#I7HxLmddRH;XjD+wt6tU8gEbt4wBNv-3C5RP_IJ&a1zi%6s%4F;m^r_vDGtB7ZwUOF&@Uj9vu*owRff9IykSYw zwu(#_vctnTeRC-rBe4McT9a7Jtpml2wNaKQWE1ErlLj#lY@1)?S}%w<@`=m%&w%&4 zS`+fS_)m+}Sd#>7mm7LLuxa@XC=~DMuLVS*H_UCpM4sy-DpyF8=jo9Gk+xM2AOxI3;gyvu zvM2aYIRIRX1Ocx?iOcmiz(G`|dh>?fSS}@hDPr;pSFetReLk-BQl)?M=Xupnsq|gE zlGsPR598G@^Yd@1PTAUR>g|z`#)*BWC3qeAnp+yJK%wA$NF&>i`2XH*T<5PU0l2yh z!R{;?xZ|BRpMk@1vd!(Mju5UeBp;17ekF_>9OBr}Z^+X_2fJ~LqHjQ)S(6oVT7V$c zxwB-7*f%tnrI$c{->I(;k(>twPIjgeBP_j#Wxi%)J<2S0hvqmuWZ4JG_{A4y7>VrV z{W_y*u(%Kzw%&R2?%h)!V_Z`+)9tn>joEkG5#Vuqwfu<#%E+2{^lrAVdx1GEM2BU(7qYo^{OigQJri>Y+KyXs~B zGDRKm@kr}sHMf^jN%gy_-UQ3roA8#W`fLab@k&RSve(>S*gOu?5%*siVeSl@^a$Dp z56~7H=S()rZp+Im8Q~n>azQ==^+c7#cS&2T+qxoMF+rER&8LaXkos>N+{GNCl~J8O zSl!l5mJ|rPjxfq(WT8!H_>xi9~3ZoR!j`jGIJ@VMf#I4ELHu z86x8`)jcMWktZ{;`dyE zVLRkS$o_O__4UL+MH*+e`90MonHd|2%8){)%FoWApEZd6J=%61w~B&5QMZ8YN)7>m z&!-67xfJSJd6{FT{BQVN3C1R%f$A-3eHmhU(~I8+fPH^$>Ql{rO+8lYdhtu^YZCgT@JPj5bml#-49@$TbOFYu$ znO-4mL0oRdyNM1@eiZtqI6xyM<;k0rbJQWV!YSf9=r8{Y(WUa;70~r;%xv{64on!a znu&P5YnIK}Q=;k4xe$M&Snp(u*wMn`T8OVqj6V)gwQe$2#EiuLuo8c!sST{%LdAcH z{{T_?CF#JdclJ#aVLz^>dLuz;MT+V9@N7jYB;ZVqT>iIMc_70uX;3|&Q|6&l`t%=E z^clA(6GJ)k$^D0vsJ5R-Su}Wz*D5%+;kzW!8N~6UYc079T-`H>RTOvlYKB zl9Oe?RYG@@MsL1Kh|4|Qnr`y|fuiRlj_@nmwdCkaja_`FHt0S?Qymnqp7zzkgbXs2 zetw1wrC(3`Z7Lemc&Mf2q0Ic9EFO8TnFu>9=#lH?c6a%8g^1<+qbrE`rlKLYk{^x3YvQ*#Q1LZMg-YoEI(AtM}DsJ@8#|8V≫ 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

J~t4 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�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 z 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 a94UarL-c ("$publish" == "true") ? f.contains("metadata") || f.contains("bias_field") ? null - : remove_alg_suffixes(f) - : null - }, mode: params.publish_mode, overwrite: true +label "N4_CORRECTION" +// label params.conservative_resources ? "res_conservative_cpu" : "res_max_cpu" +cpus 20 + +publishDir "${params.output_root}/all/${sid}/$caller_name/${task.process.replaceAll(":", "/")}", mode: "$params.publish_all_mode", enabled: params.publish_all, overwrite: true +publishDir "${params.output_root}/${sid}", saveAs: { + f -> ("$publish" == "true") ? f.contains("metadata") || f.contains("bias_field") ? null + : remove_alg_suffixes(f) + : null +}, mode: params.publish_mode, overwrite: true + +input: + tuple val(sid), path(image), file(anat), file(mask), file(metadata) + val(caller_name) + val(publish) + path(config) +output: + tuple val(sid), path("${image.simpleName}__n4denoised.nii.gz"), emit: image + tuple val(sid), path("${image.simpleName}__n4denoised_metadata.*"), optional: true, emit: metadata + tuple val(sid), path("${image.simpleName}_n4_bias_field.nii.gz"), emit: bias_field +script: +def before_denoise ="" +def after_denoise = "" +def args = "" +def in_img = "$image" +if ( anat.empty() ) { + after_denoise += "mv n4denoise_bias_field.nii.gz ${image.simpleName}_n4_bias_field.nii.gz\n" +} +else { + args += "--apply $image" + in_img = "$anat" + after_denoise += "mv tmp_n4denoised_bias_field.nii.gz ${image.simpleName}_n4_bias_field.nii.gz\n" +} - input: - tuple val(sid), path(image), file(anat), file(mask), file(metadata) - val(caller_name) - val(publish) - path(config) - output: - tuple val(sid), path("${image.simpleName}__n4denoised.nii.gz"), emit: image - tuple val(sid), path("${image.simpleName}__n4denoised_metadata.*"), optional: true, emit: metadata - tuple val(sid), path("${image.simpleName}_n4_bias_field.nii.gz"), emit: bias_field - script: - def before_denoise ="" - def after_denoise = "" - def args = "" - if ( anat.empty() ) { - args += "--in $image" - after_denoise += "mv n4denoise_bias_field.nii.gz ${image.simpleName}_n4_bias_field.nii.gz\n" - } - else { - args += "--in $anat --apply $image" - after_denoise += "mv tmp_n4denoised_bias_field.nii.gz ${image.simpleName}_n4_bias_field.nii.gz\n" - } +if ( !metadata.empty() ) { + after_denoise += "mv n4denoise_metadata.py ${image.simpleName}__n4denoised_metadata.py\n" + args += " --metadata $metadata" +} - if ( !metadata.empty() ) { - after_denoise += "mv n4denoise_metadata.py ${image.simpleName}__n4denoised_metadata.py\n" - args += " --metadata $metadata" - } - after_denoise += "fslmaths n4denoise.nii.gz -thr 0 ${image.simpleName}__n4denoised.nii.gz\n" +if ( !mask.empty() ) { + // args += " --mask mask_for_n4.nii.gz" + if ( !anat.empty() ) { + before_denoise += "antsApplyTransforms -n NearestNeighbor -e 0 -r $anat -t identity -i $mask -o mask_for_n4.nii.gz\n" + before_denoise += "scil_image_math.py convert mask_for_n4.nii.gz mask_for_n4.nii.gz -f --data_type uint8\n" + } + else { + before_denoise += "antsApplyTransforms -n NearestNeighbor -e 0 -r $image -t identity -i $mask -o mask_for_n4.nii.gz\n" + before_denoise += "scil_image_math.py convert mask_for_n4.nii.gz mask_for_n4.nii.gz -f --data_type uint8\n" + } +} - if ( !mask.empty() ) { - args += " --mask mask_for_n4.nii.gz" - if ( !anat.empty() ) { - before_denoise += "antsApplyTransforms -n NearestNeighbor -e 0 -r $anat -t identity -i $mask -o mask_for_n4.nii.gz\n" - before_denoise += "scil_image_math.py convert mask_for_n4.nii.gz mask_for_n4.nii.gz -f --data_type uint8\n" - } - else { - before_denoise += "antsApplyTransforms -n NearestNeighbor -e 0 -r $image -t identity -i $mask -o mask_for_n4.nii.gz\n" - before_denoise += "scil_image_math.py convert mask_for_n4.nii.gz mask_for_n4.nii.gz -f --data_type uint8\n" - } - } +// after_denoise += "scil_apply_bias_field_on_dwi.py $image ${image.simpleName}_n4_bias_field.nii.gz n4denoised.nii.gz -f\n" +after_denoise += "fslmaths n4denoise.nii.gz -thr 0 ${image.simpleName}__n4denoised.nii.gz\n" - """ - export OMP_NUM_THREADS=$task.cpus - export ITK_GLOBAL_DEFAULT_NUMBER_OF_THREADS=$task.cpus - export OPENBLAS_NUM_THREADS=1 - export ANTS_RANDOM_SEED=$params.random_seed +""" +export OMP_NUM_THREADS=$task.cpus +export ITK_GLOBAL_DEFAULT_NUMBER_OF_THREADS=$task.cpus +export OPENBLAS_NUM_THREADS=1 +export ANTS_RANDOM_SEED=$params.random_seed + +$before_denoise + +python3 - << ENDSCRIPT + +import nibabel as nib +import numpy as np + +img = nib.load("$in_img") +mask = nib.load("mask_for_n4.nii.gz") +m = img.get_fdata()[mask.get_fdata().astype(bool)].max() +with open("max.txt", "w+") as f: + f.write(f"{np.ceil(m).astype(int):d}\\n") + +ENDSCRIPT + +ImageMath 3 input.nii.gz RescaleImage $in_img 1 \$(cat max.txt) + +mrhardi n4 --in input.nii.gz $args \ + --out n4denoise \ + --config $config +$after_denoise +""" - $before_denoise - mrhardi n4 $args \ - --out n4denoise \ - --config $config - $after_denoise - """ } process apply_n4_bias_field { diff --git a/modules/processes/reconstruct.nf b/modules/processes/reconstruct.nf index 4f55eed..e5dbbfd 100644 --- a/modules/processes/reconstruct.nf +++ b/modules/processes/reconstruct.nf @@ -256,7 +256,7 @@ process scilpy_csd { mrhardi sh_order --bvals $bval --bvecs $bvec --out sh_order.txt $args scil_compute_ssst_fodf.py $dwi $bval $bvec $response ${sid}_fodf.nii.gz \ --mask mask4scil.nii.gz \ - --force_b0_threshold \ + --skip_b0_check \ --sh_order \$(cat sh_order.txt) \ --processes $task.cpus """ @@ -294,7 +294,7 @@ process scilpy_msmt_csd { --vf ${sid}_vf.nii.gz \ --vf_rgb ${sid}_vf_rgb.nii.gz \ --mask mask4scil.nii.gz \ - --force_b0_threshold \ + --skip_b0_check \ --sh_order \$(cat sh_order.txt) \ --processes $task.cpus """ diff --git a/modules/processes/register.nf b/modules/processes/register.nf index 3f93349..bff2bbd 100644 --- a/modules/processes/register.nf +++ b/modules/processes/register.nf @@ -31,19 +31,46 @@ process ants_register { tuple val(sid), path("${moving[0].simpleName}__registration_warped_metadata.*"), optional: true, emit: metadata script: def mask_arg = "" + def before_cmd = "" + def after_cmd = "" + def tg = [] + def mv = [] if ( !mask.iterator().inject(false) { c, i -> c || i.empty() } ) { mask_arg = "--mask ${mask.iterator().collect{ it.name }.join(',')}" } - + if ( mask.size() == 2 ) { + def i = 0 + before_cmd += "cp ${file(reference).name} reference.nii.gz\n" + before_cmd += "scil_volume_crop.py ${mask[0]} m.nii.gz --output_bbox bbox.nii.gz -f\n" + for (f in target) { + before_cmd += "scil_volume_crop.py $f target${i}.nii.gz --input_bbox bbox.nii.gz -f\n" + tg += ["target${i}.nii.gz"] + i += 1 + } + before_cmd += "scil_volume_crop.py ${mask[1]} m.nii.gz --output_bbox bbox.nii.gz -f\n" + i = 0 + for (f in moving) { + before_cmd += "scil_volume_crop.py $f moving${i}.nii.gz --input_bbox bbox.nii.gz -f\n" + mv += ["moving${i}.nii.gz"] + i += 1 + } + after_cmd += "cp reference.nii.gz ${moving[0].simpleName}__registration_ref.nii.gz\n" + } + else { + tg = target + mv = moving + } """ export OMP_NUM_THREADS=$task.cpus export ITK_GLOBAL_DEFAULT_NUMBER_OF_THREADS=$task.cpus export OPENBLAS_NUM_THREADS=1 export ANTS_RANDOM_SEED=$params.random_seed + $before_cmd + mrhardi ants_registration \ - --moving ${moving.join(",")} \ - --target ${target.join(",")} \ + --moving ${mv.join(",")} \ + --target ${tg.join(",")} \ --out ${moving[0].simpleName}__registration $mask_arg \ ${params.verbose_outputs ? "--verbose" : ""} \ --config $config @@ -88,7 +115,9 @@ process ants_register { break fi done - + + $after_cmd + """ } diff --git a/modules/processes/upsample.nf b/modules/processes/upsample.nf index 8743635..16b9c9b 100644 --- a/modules/processes/upsample.nf +++ b/modules/processes/upsample.nf @@ -17,9 +17,11 @@ process scilpy_resample { publishDir "${["${params.output_root}/${sid}", additional_publish_path].findAll({ it }).join("/")}", saveAs: { f -> f.contains("metadata") ? null : f.contains("${mask.simpleName}") ? ("$publish_mask" == "true") ? mask_prefix ? "${sid}_${mask_prefix}.nii.gz" : remove_alg_suffixes(f) : null : remove_alg_suffixes(f) }, mode: params.publish_mode, overwrite: true input: - tuple val(sid), path(image), file(mask), file(metadata) + tuple val(sid), path(image), file(mask), file(metadata), file(reference) val(caller_name) val(interpolation) + val(antstype) + val(antsinterp) val(publish_mask) val(mask_prefix) val(additional_publish_path) @@ -35,6 +37,9 @@ process scilpy_resample { } if ( !metadata.empty() ) after_script += "mrhardi metadata --in ${image.getSimpleName()}__resampled.nii.gz --update_affine --metadata $metadata\n" + if ( !reference.empty() ) { + after_script += "antsApplyTransforms -v -d 3 -e $antstype -n $antsinterp -r $reference -i ${image.simpleName}__resampled.nii.gz -o ${image.simpleName}__resampled.nii.gz -t identity\n" + } """ export ITK_GLOBAL_DEFAULT_NUMBER_OF_THREADS=1 export OMP_NUM_THREADS=1 @@ -71,7 +76,7 @@ process scilpy_resample_to_reference { script: def after_script = "" if ( !mask.empty() ) { - after_script += "scil_resample_volume.py $mask mask_resampled.nii.gz --ref $reference --interp nn\n" + after_script += "scil_resample_volume.py $mask mask_resampled.nii.gz --ref $reference --interp nn --enforce_dimensions\n" after_script += "scil_image_math.py floor mask_resampled.nii.gz ${mask.getSimpleName()}__resampled.nii.gz --data_type uint8 -f\n" } if ( !metadata.empty() ) @@ -80,7 +85,7 @@ process scilpy_resample_to_reference { export ITK_GLOBAL_DEFAULT_NUMBER_OF_THREADS=1 export OMP_NUM_THREADS=1 export OPENBLAS_NUM_THREADS=1 - scil_resample_volume.py $image resampled.nii.gz --ref $reference --interp $interpolation + scil_resample_volume.py $image resampled.nii.gz --ref $reference --interp $interpolation --enforce_dimensions fslmaths resampled.nii.gz -thr 0 ${image.simpleName}__resampled.nii.gz if [ "\$(mrinfo -datatype $image)" != "\$(mrinfo -datatype ${image.simpleName}__resampled.nii.gz)" ] then diff --git a/modules/workflows/segment.nf b/modules/workflows/segment.nf index 8dcf112..7aacfc0 100644 --- a/modules/workflows/segment.nf +++ b/modules/workflows/segment.nf @@ -23,15 +23,16 @@ include { include { resampling_reference; resampling_reference as resampling_reference_fa; - scilpy_resample_to_reference as resample_template; - scilpy_resample_to_reference as resample_segmentation; - scilpy_resample_to_reference as resample_segmentation_pre_transform; + scilpy_resample as resample_template; + scilpy_resample as resample_template_mask; + scilpy_resample as resample_segmentation; + scilpy_resample as resample_segmentation_pre_transform; scilpy_resample_to_reference as resample_template_fa; scilpy_resample_to_reference as resample_wm_atlas; - scilpy_resample_to_reference as resample_d99; - scilpy_resample_to_reference as resample_charm; - scilpy_resample_to_reference as resample_sarm; - scilpy_resample_to_reference as resample_inia19 + scilpy_resample as resample_d99; + scilpy_resample as resample_charm; + scilpy_resample as resample_sarm; + scilpy_resample as resample_inia19 } from '../processes/upsample.nf' include { ants_transform as transform_d99; @@ -70,11 +71,10 @@ workflow segment_nmt_wkf { if ( template_to_t1_transform && template_resampling_reference ) { resample_segmentation_pre_transform( segmentation_channel - .join(template_resampling_reference) - .map{ it + ["", ""] }, + .map{ it + ["", ""] } + .join(template_resampling_reference), "segmentation", - "nn", - false, + "nn", "0", "NearestNeighbor", false, "", "" ) @@ -96,7 +96,7 @@ workflow segment_nmt_wkf { template_mask_channel = prepend_sid_template_mask(t1_channel.map{ [it[0], file("${params.tissue_segmentation_root}/tissue_segmentation_mask_whole_no_bv.nii.gz")] }) resampling_reference( - t1_channel.join(template_channel).map{ [it[0], it[1..-1]] }, + t1_channel.map{ [it[0], it[1..-1]] }, "segmentation", params.resampling_subdivision, params.resampling_min_resolution, @@ -104,22 +104,27 @@ workflow segment_nmt_wkf { ) resample_template( template_channel - .join(resampling_reference.out.reference) - .join(template_mask_channel) - .map{ it + [""] }, + .map{ it + ["", "", ""] }, "segmentation", - "lin", + "lin", "", "", false, + "", "" + ) + resample_template_mask( + template_mask_channel + .map{ it + ["", ""] } + .join(resample_template.out.image), + "segmentation", + "lin", "0", "NearestNeighbor", false, "", "" ) resample_segmentation( segmentation_channel - .join(resampling_reference.out.reference) - .map{ it + ["", ""] }, + .map{ it + ["", ""] } + .join(resample_template.out.image), "segmentation", - "nn", - false, + "nn", "0", "NearestNeighbor", false, "", "" ) @@ -128,7 +133,7 @@ workflow segment_nmt_wkf { t1_channel.map{ [it[0], [it[1]]] }, resample_template.out.image.map{ [it[0], [it[1]]] }, resample_segmentation.out.image.map{ [it[0], [it[1]]] }, - mask_channel.join(resample_template.out.mask).map{ [it[0], [it[1]]] }, + mask_channel.join(resample_template_mask.out.mask).map{ [it[0], [it[1]]] }, null, null, "segmentation", @@ -186,11 +191,9 @@ workflow transform_atlases_wkf { resample_d99( d99_channel - .join(template_resampling_reference) - .map{ it + ["", ""] }, + .map{ it + ["", "", ""] }, "segmentation", - "nn", - false, + "nn", "", "", false, "", "" ) @@ -213,11 +216,9 @@ workflow transform_atlases_wkf { resample_charm( charm_channel - .join(template_resampling_reference) - .map{ it + ["", ""] }, + .map{ it + ["", "", ""] }, "segmentation", - "nn", - false, + "nn", "", "", false, "", "" ) @@ -240,11 +241,9 @@ workflow transform_atlases_wkf { resample_sarm( sarm_channel - .join(template_resampling_reference) - .map{ it + ["", ""] }, + .map{ it + ["", "", ""] }, "segmentation", - "nn", - false, + "nn", "", "", false, "", "" ) @@ -267,11 +266,9 @@ workflow transform_atlases_wkf { resample_inia19( inia19_channel - .join(template_resampling_reference) - .map{ it + ["", ""] }, + .map{ it + ["", "", ""] }, "segmentation", - "nn", - false, + "nn", "", "", false, "", "" ) diff --git a/modules/workflows/t1_registration.nf b/modules/workflows/t1_registration.nf index 890099c..3c9a2ac 100644 --- a/modules/workflows/t1_registration.nf +++ b/modules/workflows/t1_registration.nf @@ -72,9 +72,9 @@ include { } from '../processes/utils.nf' include { resampling_reference; - scilpy_resample_to_reference as resample_template; - scilpy_resample_to_reference as resample_dilated_mask; - scilpy_resample_to_reference as resample_whole_mask + scilpy_resample as resample_template; + scilpy_resample as resample_dilated_mask; + scilpy_resample as resample_whole_mask } from '../processes/upsample.nf' include { get_data_path; @@ -145,10 +145,7 @@ workflow t12b0_registration { } else { resampling_reference( - dwi_channel - .map{ it[0..1] } - .join(t1_channel) - .join(template_channel) + t1_channel .map{ [it[0], it[1..-1]] }, "preprocess", params.resampling_subdivision, @@ -160,32 +157,27 @@ workflow t12b0_registration { resample_template( template_channel - .join(registration_reference) - .join(template_mask_channel) - .map{ it + [""] }, + .map{ it + ["", "", ""] }, "preprocess", - "lin", - false, + "lin", "", "", false, "", "" ) resample_dilated_mask( template_dilated_mask_channel - .join(registration_reference) - .map{ it + ["", ""] }, + .map{ it + ["", ""] } + .join(resample_template.out.image), "preprocess", - "nn", - false, + "nn", "0", "NearestNeighbor", false, "", "" ) resample_whole_mask( template_whole_mask_channel - .join(registration_reference) - .map{ it + ["", ""] }, + .map{ it + ["", ""] } + .join(resample_template.out.image), "preprocess", - "nn", - false, + "nn", "0", "NearestNeighbor", false, "", "" ) diff --git a/nextflow.config b/nextflow.config index 6c8ed5e..8ad5a7e 100644 --- a/nextflow.config +++ b/nextflow.config @@ -90,7 +90,7 @@ params.use_cuda = false params.conservative_resources = true params.free_processes = 1 params.memory_buffer_gb = 10 -params.max_cpu_per_process = null +params.max_cpu_per_process = 10 params.max_attempts = 3 params.check_memory_requirements = false diff --git a/workflows/preprocess.nf b/workflows/preprocess.nf index d633a28..2317ca5 100644 --- a/workflows/preprocess.nf +++ b/workflows/preprocess.nf @@ -81,13 +81,14 @@ include { normalize_inter_b0 } from '../modules/processes/denoise.nf' include { - scilpy_resample_to_reference as resample_wm; - scilpy_resample_to_reference as resample_gm; - scilpy_resample_to_reference as resample_csf; - scilpy_resample_to_reference as resample_t1; - scilpy_resample_to_reference as resample_dwi; - scilpy_resample_to_reference as resample_raw_dwi; - scilpy_resample_to_reference as resample_raw_t1; + scilpy_resample as resample_wm; + scilpy_resample as resample_gm; + scilpy_resample as resample_csf; + scilpy_resample as resample_t1; + scilpy_resample as resample_dwi; + scilpy_resample as resample_raw_dwi; + scilpy_resample as resample_raw_t1; + scilpy_resample as resample_t1_mask; resampling_reference } from '../modules/processes/upsample.nf' include { @@ -776,7 +777,7 @@ workflow preprocess_wkf { // Compute best resampling reference resampling_reference( - collect_paths(dwi_channel.map{ it[0..1] }.join(t1_channel)), + collect_paths(t1_channel), "preprocess", params.resample_data ? params.resampling_subdivision : "1", params.resample_data ? params.resampling_min_resolution : "", @@ -806,47 +807,51 @@ workflow preprocess_wkf { resample_t1( t1_channel - .join(reference_channel) - .join(t1_mask_channel) - .map{ it + [""] }, - "preprocess", "lin", - true, true, - "t1_mask", "" + .map{ it + ["", "", ""] }, + "preprocess", "lin", "", "", + false, + "", "" + ) + + resample_t1_mask( + t1_mask_channel + .map{ it + ["", ""] } + .join(resample_t1.out.image), + "preprocess", "nn", "0", "NearestNeighbor", + false, + "", "" ) resample_wm( pvf_to_resample_channel .map{ [it[0], it[1][0]] } - .join(reference_channel) - .join(t1_mask_channel) - .map{ it + [""] }, - "preprocess", "nn", - true, false, + .map{ it + ["", ""] } + .join(resample_t1.out.image), + "preprocess", "nn", "0", "NearestNeighbor", + true, "", "segmentation" ) resample_gm( pvf_to_resample_channel .map{ [it[0], it[1][1]] } - .join(reference_channel) - .join(t1_mask_channel) - .map{ it + [""] }, - "preprocess", "nn", - true, false, + .map{ it + ["", ""] } + .join(resample_t1.out.image), + "preprocess", "nn", "0", "NearestNeighbor", + true, "", "segmentation" ) resample_csf( pvf_to_resample_channel .map{ [it[0], it[1][2]] } - .join(reference_channel) - .join(t1_mask_channel) - .map{ it + [""] }, - "preprocess", "nn", - true, false, + .map{ it + ["", ""] } + .join(resample_t1.out.image), + "preprocess", "nn", "0", "NearestNeighbor", + true, "", "segmentation" ) t1_channel = resample_t1.out.image - t1_mask_channel = resample_t1.out.mask + t1_mask_channel = resample_t1_mask.out.image pvf_channel = resample_wm.out.image .join(resample_gm.out.image) @@ -1259,23 +1264,26 @@ workflow preprocess_wkf { params.extract_mean_b0_base_config ) - validate_gradients_wkf(dwi_channel, dwi_mask_channel) + if ( params.preprocess_dwi ) { + validate_gradients_wkf(dwi_channel, dwi_mask_channel) + dwi_channel = rename_processed_dwi( + collect_paths(validate_gradients_wkf.out.dwi), + "dwi_preprocessed" + ).map{ [it[0], it[1][2], it[1][0], it[1][1]] } + + meta_channel = rename_processed_dwi_metadata( + collect_paths(meta_channel), + "dwi_preprocessed_metadata" + ).map{ it.flatten() } + dwi_mask_channel = rename_processed_dwi_mask( + collect_paths(dwi_mask_channel), + "mask_preprocessed" + ).map{ it.flatten() } + } + mask_t1(t1_channel.join(t1_mask_channel).map{ it + [""] }, "preprocess", true) t1_channel = mask_t1.out.image - dwi_channel = rename_processed_dwi( - collect_paths(validate_gradients_wkf.out.dwi), - "dwi_preprocessed" - ).map{ [it[0], it[1][2], it[1][0], it[1][1]] } - meta_channel = rename_processed_dwi_metadata( - collect_paths(meta_channel), - "dwi_preprocessed_metadata" - ).map{ it.flatten() } - dwi_mask_channel = rename_processed_dwi_mask( - collect_paths(dwi_mask_channel), - "mask_preprocessed" - ).map{ it.flatten() } - wm_segmentation_channel = Channel.empty() if ( params.generate_wm_segmentation ) { segment_wm_wkf(dwi_channel, dwi_mask_channel) From 88d921a97b12387977a8f4756e466224dea10334 Mon Sep 17 00:00:00 2001 From: AlexVCaron Date: Wed, 3 Jul 2024 23:18:04 -0400 Subject: [PATCH 05/21] affine for fuji --- .config/t1_to_template_affine_config.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.config/t1_to_template_affine_config.py b/.config/t1_to_template_affine_config.py index 1673df1..998c90a 100644 --- a/.config/t1_to_template_affine_config.py +++ b/.config/t1_to_template_affine_config.py @@ -45,7 +45,7 @@ c.AntsConfiguration.match_histogram = True c.AntsConfiguration.passes = [{ - "conv_eps": 1e-7, + "conv_eps": 1e-5, "conv_max_iter": [1000, 400, 200, 100, 100], "conv_win": 20, "grad_step": 0.05, @@ -55,8 +55,8 @@ "target_index": 0, "moving_index": 0, "args": [ - 1.0, - 4, + 0.75, + 2, "Regular", 1.0 ], @@ -66,7 +66,7 @@ "target_index": 0, "moving_index": 0, "args": [ - 1.0, + 0.25, 32, "Regular", 1.0, From 81b6494bbf35089d9a8fa1a5f7eed893f3504992 Mon Sep 17 00:00:00 2001 From: AlexVCaron Date: Tue, 16 Jul 2024 15:56:19 -0400 Subject: [PATCH 06/21] fix registration --- .../t1_to_b0_registration_affine_config.py | 6 +- main.nf | 62 +-- modules/functions.nf | 2 +- modules/processes/register.nf | 31 ++ modules/processes/utils.nf | 11 +- modules/workflows/segment.nf | 1 + workflows/preprocess.nf | 359 +++++++++++++----- 7 files changed, 340 insertions(+), 132 deletions(-) diff --git a/.config/t1_to_b0_registration_affine_config.py b/.config/t1_to_b0_registration_affine_config.py index bf41d20..1ad97ea 100644 --- a/.config/t1_to_b0_registration_affine_config.py +++ b/.config/t1_to_b0_registration_affine_config.py @@ -14,7 +14,7 @@ c.AntsRegistration.log_level = 30 -c.AntsRegistration.init_with_ants_ai = True +c.AntsRegistration.init_with_ants_ai = False c.AntsRegistration.base_config_file = "" @@ -42,7 +42,7 @@ c.AntsConfiguration.match_histogram = False c.AntsConfiguration.passes = [{ - "conv_eps": 1e-07, + "conv_eps": 1e-7, "conv_max_iter": [500, 300, 150, 50], "conv_win": 10, "grad_step": 0.1, @@ -73,7 +73,7 @@ 0 ] }, { - "conv_eps": 1e-07, + "conv_eps": 1e-7, "conv_max_iter": [300, 150, 100, 50], "conv_win": 10, "grad_step": 0.1, diff --git a/main.nf b/main.nf index f8eb7bc..9481057 100644 --- a/main.nf +++ b/main.nf @@ -3,6 +3,10 @@ nextflow.enable.dsl=2 params.help = false +params.preprocess_images = true +params.reconstruct_diffusion = true +params.measure_diffusion = true +params.pft_tracking = true //include { print_channel } from "./modules/debug.nf" // For debugging purpose only include { load_dataset } from "./workflows/io.nf" @@ -18,34 +22,40 @@ workflow { display_run_info() dataloader = load_dataset() - preprocess_wkf( - dataloader.dwi, - dataloader.rev, - dataloader.anat, - dataloader.pvf, - dataloader.metadata, - dataloader.rev_metadata, - dataloader.dwi_mask, - dataloader.anat_mask - ) + if ( params.preprocess_images ) { + preprocess_wkf( + dataloader.dwi, + dataloader.rev, + dataloader.anat, + dataloader.pvf, + dataloader.metadata, + dataloader.rev_metadata, + dataloader.dwi_mask, + dataloader.anat_mask + ) + } - reconstruct_wkf( - preprocess_wkf.out.dwi, - preprocess_wkf.out.mask, - preprocess_wkf.out.tissue_masks, - preprocess_wkf.out.safe_wm_mask, - preprocess_wkf.out.metadata - ) + if ( params.reconstruct_diffusion || params.measure_diffusion || params.pft_tracking ) { + reconstruct_wkf( + preprocess_wkf.out.dwi, + preprocess_wkf.out.mask, + preprocess_wkf.out.tissue_masks, + preprocess_wkf.out.safe_wm_mask, + preprocess_wkf.out.metadata + ) + } - measure_wkf( - preprocess_wkf.out.dwi, - preprocess_wkf.out.mask, - preprocess_wkf.out.tissue_masks, - reconstruct_wkf.out.csd, - reconstruct_wkf.out.diamond, - reconstruct_wkf.out.diamond_summary, - preprocess_wkf.out.metadata - ) + if ( params.measure_diffusion || params.pft_tracking ) { + measure_wkf( + preprocess_wkf.out.dwi, + preprocess_wkf.out.mask, + preprocess_wkf.out.tissue_masks, + reconstruct_wkf.out.csd, + reconstruct_wkf.out.diamond, + reconstruct_wkf.out.diamond_summary, + preprocess_wkf.out.metadata + ) + } if ( params.pft_tracking ) { tracking_wkf(reconstruct_wkf.out.csd, preprocess_wkf.out.pvf) diff --git a/modules/functions.nf b/modules/functions.nf index 2ab726c..6675738 100644 --- a/modules/functions.nf +++ b/modules/functions.nf @@ -205,7 +205,7 @@ def is_path_list ( pth ) { def collect_paths ( data_channel ) { return data_channel.map{ - [it[0], (it.size() > 2 ? it[1..-1] : [it[1]] ).findAll{ it }] + [it[0], (it.size() > 2 ? it[1..-1] : [it[1]].flatten() ).findAll{ it }] } } diff --git a/modules/processes/register.nf b/modules/processes/register.nf index bff2bbd..f7603e2 100644 --- a/modules/processes/register.nf +++ b/modules/processes/register.nf @@ -184,6 +184,37 @@ process ants_transform { """ } +process identity { + label "FAST" + label "res_single_cpu" + + publishDir "${params.output_root}/all/${sid}/$caller_name/${task.process.replaceAll(":", "/")}", mode: "$params.publish_all_mode", enabled: params.publish_all, overwrite: true + publishDir "${["${params.output_root}/${sid}", additional_publish_path].findAll({ it }).join("/")}", saveAs: { f -> ("$publish" == "true") ? f.contains("metadata") ? null : publish_suffix ? "${sid}_${publish_suffix}.nii.gz" : remove_alg_suffixes(f) : null }, mode: params.publish_mode, overwrite: true + + input: + tuple val(sid), path(img), path(ref), file(metadata) + val(caller_name) + val(additional_publish_path) + val(publish) + val(publish_suffix) + val(intype) + val(outype) + val(interp) + path(config) + output: + tuple val(sid), path("${img.simpleName}__transformed.nii.gz"), emit: image + tuple val(sid), path("${img.simpleName}__transformed.bvec"), optional: true, emit: bvec + tuple val(sid), path("${img.simpleName}__transformed_metadata.*"), optional: true, emit: metadata + script: + """ + export ITK_GLOBAL_DEFAULT_NUMBER_OF_THREADS=1 + export OMP_NUM_THREADS=1 + export OPENBLAS_NUM_THREADS=1 + export ANTS_RANDOM_SEED=$params.random_seed + antsApplyTransforms -e $intype -u $outype -n $interp -t identity -i $img -r $ref -o ${img.simpleName}__transformed.nii.gz + """ +} + process align_to_closest { label "ALIGN" input: diff --git a/modules/processes/utils.nf b/modules/processes/utils.nf index 5821c6b..93114e6 100644 --- a/modules/processes/utils.nf +++ b/modules/processes/utils.nf @@ -277,8 +277,8 @@ process check_dwi_conformity { """ } -def get_tissue_file (tissue_class, image_list) { - return image_list[params.segmentation_classes.indexOf(tissue_class)] +def get_tissue_file (tissue_class, image_list, classes) { + return image_list[classes.indexOf(tissue_class)] } def pvf_space_to_masks ( sid, brain_mask ) { @@ -327,6 +327,7 @@ process pvf_to_mask { input: tuple val(sid), path(pvf_images), path(brain_mask) + val(classes) val(caller_name) val(additional_publish_path) output: @@ -335,8 +336,8 @@ process pvf_to_mask { tuple val(sid), path("${sid}_3t_{${params.tissue_masks_mapping.collect{ it.key }.join(',')}}_pvf.nii.gz"), emit: pvf_3t script: def map_initializer = params.tissue_masks_mapping.collect{ - it.value.size() == 1 ? "cp ${get_tissue_file(it.value[0], pvf_images)} ${sid}_3t_${it.key}_pvf.nii.gz" - : "scil_image_math.py addition ${it.value.collect{ i -> get_tissue_file(i, pvf_images) }.join(' ')} ${sid}_3t_${it.key}_pvf.nii.gz --data_type float32 -f" + it.value.size() == 1 ? "cp ${get_tissue_file(it.value[0], pvf_images, classes)} ${sid}_3t_${it.key}_pvf.nii.gz" + : "scil_image_math.py addition ${it.value.collect{ i -> get_tissue_file(i, pvf_images, classes) }.join(' ')} ${sid}_3t_${it.key}_pvf.nii.gz --data_type float32 -f" } def safe_wm_initializer = params.tissue_masks_mapping.collect{ compute_safe_maps(sid, it.key, dilation_factor = it.key == "csf" ? params.safe_csf_mask_dilation : it.key == "gm" ? params.safe_gm_mask_dilation : false) @@ -744,7 +745,7 @@ process validate_gradients { tuple val(sid), path("${bvec.simpleName}__validated.bvec"), emit: bvecs script: def args = "" - if ( !mask.empty() ) args += " --mask $mask" + // if ( !mask.empty() ) args += " --mask $mask" if ( !peaks_vals.empty() ) args += " --peaks_vals $peaks_vals" """ export ITK_GLOBAL_DEFAULT_NUMBER_OF_THREADS=1 diff --git a/modules/workflows/segment.nf b/modules/workflows/segment.nf index 7aacfc0..0b8fcca 100644 --- a/modules/workflows/segment.nf +++ b/modules/workflows/segment.nf @@ -153,6 +153,7 @@ workflow segment_nmt_wkf { atropos.out.vol_fractions .map{ [it[0], it[1].sort{ a, b -> params.segmentation_classes.findIndexOf{ i -> a.simpleName.contains("_$i") } <=> params.segmentation_classes.findIndexOf{ i -> b.simpleName.contains("_$i") } }] } .join(mask_channel), + params.segmentation_classes, "segmentation", "segmentation" ) diff --git a/workflows/preprocess.nf b/workflows/preprocess.nf index 2317ca5..5d18bab 100644 --- a/workflows/preprocess.nf +++ b/workflows/preprocess.nf @@ -16,7 +16,8 @@ include { extract_b0 as dwi_b0; extract_b0 as extract_epi_corrected_b0; extract_b0 as extract_b0_preprocessed; - extract_b0 as extract_b0_reference + extract_b0 as extract_b0_reference; + extract_b0 as extract_b0_identity } from '../modules/processes/preprocess.nf' include { scil_compute_dti_fa @@ -41,7 +42,17 @@ include { ants_transform as ants_transform_raw_t1_mask; ants_transform as apply_transform_epi_dwi; ants_transform as apply_transform_epi_rev; - ants_transform as apply_transform_epi_field + ants_transform as apply_transform_epi_field; + identity; + identity as identity_t1; + identity as identity_t1_mask; + identity as identity_safe_wm_mask; + identity as identity_wm; + identity as identity_wm_mask; + identity as identity_gm; + identity as identity_gm_mask; + identity as identity_csf; + identity as identity_csf_mask } from '../modules/processes/register.nf' include { convert_float_to_integer as convert_wm_segmentation; @@ -86,6 +97,7 @@ include { scilpy_resample as resample_csf; scilpy_resample as resample_t1; scilpy_resample as resample_dwi; + scilpy_resample as resample_dwi_mask; scilpy_resample as resample_raw_dwi; scilpy_resample as resample_raw_t1; scilpy_resample as resample_t1_mask; @@ -153,9 +165,11 @@ params.resampling_subdivision = 2 params.resampling_min_resolution = false params.force_resampling_resolution = false -// T1 preprocess workflow parameters +// Preprocess workflow parameters params.preprocess_dwi = true +params.preprocess_t1 = true params.resample_dwi = true +params.resample_t1 = true params.denoise_t1 = true params.nlmeans_t1 = true params.t1_intensity_normalization = true @@ -197,9 +211,11 @@ workflow preprocess_wkf { ).map{ [it[0]] } // T1 preprocessing - t1_preprocess_wkf(t1_channel, t1_mask_channel) - t1_channel = t1_preprocess_wkf.out.t1 - t1_mask_channel = t1_preprocess_wkf.out.mask + if ( params.preprocess_t1 ) { + t1_preprocess_wkf(t1_channel, t1_mask_channel) + t1_channel = t1_preprocess_wkf.out.t1 + t1_mask_channel = t1_preprocess_wkf.out.mask + } if (params.preprocess_dwi) { // Fix odd number of slices in phase direction for EPI correction @@ -621,40 +637,55 @@ workflow preprocess_wkf { // Get better mask for the DWI from the T1 (when missing and if present) if ( params.dwi_mask_from_t1_mask ) { - existing_t1_mask_id_channel = exclude_missing_datapoints( - t1_mask_channel, - 1, "" - ).map{ [it[0]] } - absent_t1_mask_id_channel = filter_datapoints( - t1_mask_channel, - { it[1] == "" } - ).map{ [it[0]] } - - n4_denoise_t1_to_b0_wkf( - existing_t1_mask_id_channel.join(epi_corrected_dwi_channel.map{ it[0..1] }), - existing_t1_mask_id_channel.join(b0_channel), - existing_t1_mask_id_channel.join(dwi_mask_channel), - existing_t1_mask_id_channel.join(epi_corrected_meta_channel), - params.dwi_n4_normalization_quick_config, - false - ) + if ( params.register_t1_to_dwi ){ + existing_t1_mask_id_channel = exclude_missing_datapoints( + t1_mask_channel, + 1, "" + ).map{ [it[0]] } + absent_t1_mask_id_channel = filter_datapoints( + t1_mask_channel, + { it[1] == "" } + ).map{ [it[0]] } + + n4_denoise_t1_to_b0_wkf( + existing_t1_mask_id_channel.join(epi_corrected_dwi_channel.map{ it[0..1] }), + existing_t1_mask_id_channel.join(b0_channel), + existing_t1_mask_id_channel.join(dwi_mask_channel), + existing_t1_mask_id_channel.join(epi_corrected_meta_channel), + params.dwi_n4_normalization_quick_config, + false + ) - t1_mask_to_b0( - replace_dwi_file(epi_corrected_dwi_channel, n4_denoise_t1_to_b0_wkf.out.image), - existing_t1_mask_id_channel.join(t1_channel), - existing_t1_mask_id_channel.join(t1_mask_channel), - "false" - ) + t1_mask_to_b0( + replace_dwi_file(epi_corrected_dwi_channel, n4_denoise_t1_to_b0_wkf.out.image), + existing_t1_mask_id_channel.join(t1_channel), + existing_t1_mask_id_channel.join(t1_mask_channel), + "false" + ) - t1_mask_convert_datatype( - t1_mask_to_b0.out.mask, - "uint8", "preprocess", - !params.register_t1_to_dwi, - "dwi_mask", "" - ) + t1_mask_convert_datatype( + t1_mask_to_b0.out.mask, + "uint8", "preprocess", + !params.register_t1_to_dwi, + "dwi_mask", "" + ) - dwi_mask_channel = t1_mask_convert_datatype.out.image - .mix(absent_t1_mask_id_channel.join(dwi_mask_channel)) + dwi_mask_channel = t1_mask_convert_datatype.out.image + .mix(absent_t1_mask_id_channel.join(dwi_mask_channel)) + } + else + { + identity( + t1_mask_channel + .join(b0_channel) + .map{ it + [""] }, + "preprocess", + "", false, "dwi_mask", + 0, "uchar", "NearestNeighbor", + params.ants_transform_base_config + ) + dwi_mask_channel = identity.out.image + } } // Perform Eddy currents and motion correction on the DWI @@ -791,73 +822,82 @@ workflow preprocess_wkf { if (params.resample_dwi) { resample_dwi( dwi_channel - .map{ it[0..1] } - .join(reference_channel) - .join(dwi_mask_channel) - .join(meta_channel), - "preprocess", "lin", - true, true, - "dwi_mask", "" + .map{ it[0..1] + [""] } + .join(meta_channel) + .map{ it + [""] }, + "preprocess", "lin", 3, "", + false, "", "" ) dwi_channel = replace_dwi_file(dwi_channel, resample_dwi.out.image) - dwi_mask_channel = resample_dwi.out.mask meta_channel = resample_dwi.out.metadata + + if ( params.dwi_mask_from_t1_mask ){ + resample_dwi_mask( + dwi_mask_channel + .map{ it + ["", "", ""] }, + "preprocess", "lin", "", "NearestNeighbor", + false, "", "" + ) + dwi_mask_channel = resample_dwi_mask.out.image + } } - resample_t1( - t1_channel - .map{ it + ["", "", ""] }, - "preprocess", "lin", "", "", - false, - "", "" - ) + if ( params.resample_t1 ) { + resample_t1( + t1_channel + .map{ it + ["", "", ""] }, + "preprocess", "lin", "", "", + false, + "", "" + ) - resample_t1_mask( - t1_mask_channel - .map{ it + ["", ""] } - .join(resample_t1.out.image), - "preprocess", "nn", "0", "NearestNeighbor", - false, - "", "" - ) + resample_t1_mask( + t1_mask_channel + .map{ it + ["", ""] } + .join(resample_t1.out.image), + "preprocess", "nn", "0", "NearestNeighbor", + false, + "", "" + ) - resample_wm( - pvf_to_resample_channel - .map{ [it[0], it[1][0]] } - .map{ it + ["", ""] } - .join(resample_t1.out.image), - "preprocess", "nn", "0", "NearestNeighbor", - true, - "", "segmentation" - ) - resample_gm( - pvf_to_resample_channel - .map{ [it[0], it[1][1]] } - .map{ it + ["", ""] } - .join(resample_t1.out.image), - "preprocess", "nn", "0", "NearestNeighbor", - true, - "", "segmentation" - ) - resample_csf( - pvf_to_resample_channel - .map{ [it[0], it[1][2]] } - .map{ it + ["", ""] } - .join(resample_t1.out.image), - "preprocess", "nn", "0", "NearestNeighbor", - true, - "", "segmentation" - ) + resample_wm( + pvf_to_resample_channel + .map{ [it[0], it[1][0]] } + .map{ it + ["", ""] } + .join(resample_t1.out.image), + "preprocess", "nn", "0", "NearestNeighbor", + true, + "", "segmentation" + ) + resample_gm( + pvf_to_resample_channel + .map{ [it[0], it[1][1]] } + .map{ it + ["", ""] } + .join(resample_t1.out.image), + "preprocess", "nn", "0", "NearestNeighbor", + true, + "", "segmentation" + ) + resample_csf( + pvf_to_resample_channel + .map{ [it[0], it[1][2]] } + .map{ it + ["", ""] } + .join(resample_t1.out.image), + "preprocess", "nn", "0", "NearestNeighbor", + true, + "", "segmentation" + ) - t1_channel = resample_t1.out.image - t1_mask_channel = resample_t1_mask.out.image + t1_channel = resample_t1.out.image + t1_mask_channel = resample_t1_mask.out.image - pvf_channel = resample_wm.out.image - .join(resample_gm.out.image) - .join(resample_csf.out.image) - .map{ [it[0], it[1..-1]] } - .mix(pvf_channel.filter{ it[1].isEmpty() }) + pvf_channel = resample_wm.out.image + .join(resample_gm.out.image) + .join(resample_csf.out.image) + .map{ [it[0], it[1..-1]] } + .mix(pvf_channel.filter{ it[1].isEmpty() }) + } if ( params.raw_to_processed_space ) { if (params.resample_dwi) { @@ -894,7 +934,8 @@ workflow preprocess_wkf { pvf_to_mask( pvf_channel .filter{ !it[1].isEmpty() } - .join(dwi_mask_channel), + .join(t1_mask_channel), + params.segmentation_classes, "preprocess", "segmentation" ) @@ -1049,6 +1090,130 @@ workflow preprocess_wkf { raw_t1_mask_channel = ants_transform_raw_t1_mask.out.image } } + else + { + extract_b0_identity( + dwi_channel + .map{ it[0..2] } + .join(meta_channel), + "preprocess", "false", + params.extract_mean_b0_base_config + ) + identity_t1( + t1_channel + .join(extract_b0_identity.out.b0) + .map{ it + [""] }, + "preprocess", + "", false, "t1", + 0, "float", "Linear", + params.ants_transform_base_config + ) + identity_t1_mask( + t1_mask_channel + .join(extract_b0_identity.out.b0) + .map{ it + [""] }, + "preprocess", + "", false, "t1_mask", + 0, "uchar", "NearestNeighbor", + params.ants_transform_base_config + ) + identity_wm( + pvf_channel + .filter{ it[1] } + .map{ [it[0], it[1][0]] } + .join(extract_b0_identity.out.b0) + .map{ it + [""] }, + "preprocess", + "", false, "wm", + 0, "float", "Linear", + params.ants_transform_base_config + ) + identity_safe_wm_mask( + safe_wm_mask_channel + .filter{ it[1] } + .join(extract_b0_identity.out.b0) + .map{ it + [""] }, + "preprocess", + "", false, "wm_mask", + 0, "uchar", "NearestNeighbor", + params.ants_transform_base_config + ) + identity_wm_mask( + tissue_mask_channel + .filter{ it[1] } + .map{ [it[0], it[1][0]] } + .join(extract_b0_identity.out.b0) + .map{ it + [""] }, + "preprocess", + "", false, "wm_mask", + 0, "uchar", "NearestNeighbor", + params.ants_transform_base_config + ) + identity_gm( + pvf_channel + .filter{ it[1] } + .map{ [it[0], it[1][1]] } + .join(extract_b0_identity.out.b0) + .map{ it + [""] }, + "preprocess", + "", false, "gm", + 0, "float", "Linear", + params.ants_transform_base_config + ) + identity_gm_mask( + tissue_mask_channel + .filter{ it[1] } + .map{ [it[0], it[1][1]] } + .join(extract_b0_identity.out.b0) + .map{ it + [""] }, + "preprocess", + "", false, "gm_mask", + 0, "uchar", "NearestNeighbor", + params.ants_transform_base_config + ) + identity_csf( + pvf_channel + .filter{ it[1] } + .map{ [it[0], it[1][2]] } + .join(extract_b0_identity.out.b0) + .map{ it + [""] }, + "preprocess", + "", false, "csf", + 0, "float", "Linear", + params.ants_transform_base_config + ) + identity_csf_mask( + tissue_mask_channel + .filter{ it[1] } + .map{ [it[0], it[1][2]] } + .join(extract_b0_identity.out.b0) + .map{ it + [""] }, + "preprocess", + "", false, "csf_mask", + 0, "uchar", "NearestNeighbor", + params.ants_transform_base_config + ) + + t1_channel = identity_t1.out.image + t1_mask_channel = identity_t1_mask.out.image + + pvf_channel = collect_paths( + identity_wm.out.image + .join(identity_gm.out.image) + .join(identity_csf.out.image) + ).mix(pvf_channel.filter{ it[1].isEmpty() }) + + tissue_mask_channel = collect_paths( + identity_wm_mask.out.image + .join(identity_gm_mask.out.image) + .join(identity_csf_mask.out.image) + ).mix(pvf_channel.filter{ it[1].isEmpty() }) + + safe_wm_mask_channel = pvf_channel + .filter{ it[1].isEmpty() } + .map{ [it[0], ""] } + .mix(identity_safe_wm_mask.out.image) + } // Generate tissue segmentation from T1 d99_atlas_channel = Channel.empty() @@ -1116,7 +1281,7 @@ workflow preprocess_wkf { crop_wm( pvf_to_crop_channel - .map{ [it[0], it[1][2]] } + .map{ [it[0], it[1][0]] } .join(t1_mask_channel) .join(t1_bbox_channel) .map{ it + [""] }, @@ -1132,7 +1297,7 @@ workflow preprocess_wkf { ) crop_csf( pvf_to_crop_channel - .map{ [it[0], it[1][0]] } + .map{ [it[0], it[1][2]] } .join(t1_mask_channel) .join(t1_bbox_channel) .map{ it + [""] }, From de4451fc7d8fa96e65a02547d6b6500d2b48c908 Mon Sep 17 00:00:00 2001 From: Alex Valcourt Caron Date: Sat, 20 Jul 2024 00:04:04 -0400 Subject: [PATCH 07/21] optimize topup --- .config/prepare_topup_base_config.py | 64 ++++++++++++++-------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/.config/prepare_topup_base_config.py b/.config/prepare_topup_base_config.py index 484ba06..615f94f 100644 --- a/.config/prepare_topup_base_config.py +++ b/.config/prepare_topup_base_config.py @@ -28,74 +28,74 @@ c.TopupConfiguration.klass = "mrHARDI.config.topup.TopupConfiguration" c.TopupConfiguration.passes = [{ - "warp_resolution": 8.8, - "subsampling": 2, - "blur_fwhm": 3.5, - "n_iter": 100, + "warp_resolution": 25.1, + "subsampling": 4, + "blur_fwhm": 10, + "n_iter": 10, "estimate_motion": 1, "minimizer": 0, "w_reg": 5E-3 }, { - "warp_resolution": 7.1, - "subsampling": 2, - "blur_fwhm": 2.6, - "n_iter": 100, + "warp_resolution": 20.3, + "subsampling": 4, + "blur_fwhm": 7.4, + "n_iter": 10, "estimate_motion": 1, "minimizer": 0, "w_reg": 1e-3 }, { - "warp_resolution": 6.2, - "subsampling": 2, - "blur_fwhm": 1.8, - "n_iter": 100, + "warp_resolution": 17.7, + "subsampling": 4, + "blur_fwhm": 5.1, + "n_iter": 10, "estimate_motion": 1, "minimizer": 0, "w_reg": 1e-4 }, { - "warp_resolution": 5.3, - "subsampling": 2, - "blur_fwhm": 1.3, - "n_iter": 100, + "warp_resolution": 15.1, + "subsampling": 4, + "blur_fwhm": 3.7, + "n_iter": 10, "estimate_motion": 1, "minimizer": 0, "w_reg": 1.5e-5 }, { - "warp_resolution": 4.4, + "warp_resolution": 12.6, "subsampling": 2, - "blur_fwhm": 1.3, - "n_iter": 100, + "blur_fwhm": 3.7, + "n_iter": 15, "estimate_motion": 1, "minimizer": 0, "w_reg": 5e-6 }, { - "warp_resolution": 2.7, - "subsampling": 1, - "blur_fwhm": 0.9, - "n_iter": 100, + "warp_resolution": 7.7, + "subsampling": 2, + "blur_fwhm": 2.6, + "n_iter": 15, "estimate_motion": 0, "minimizer": 1, "w_reg": 5e-7 }, { - "warp_resolution": 1.7, - "subsampling": 1, - "blur_fwhm": 0.4, - "n_iter": 150, + "warp_resolution": 6.1, + "subsampling": 2, + "blur_fwhm": 1.1, + "n_iter": 20, "estimate_motion": 0, "minimizer": 1, "w_reg": 5e-8 }, { - "warp_resolution": 1.7, + "warp_resolution": 6.1, "subsampling": 1, "blur_fwhm": 0., - "n_iter": 200, + "n_iter": 20, "estimate_motion": 0, "minimizer": 1, "w_reg": 5e-10 }, { - "warp_resolution": 1.5, + "warp_resolution": 6.1, "subsampling": 1, "blur_fwhm": 0., - "n_iter": 400, + "n_iter": 40, "estimate_motion": 0, "minimizer": 1, "w_reg": 1e-11 @@ -105,7 +105,7 @@ c.TopupConfiguration.reg_model = "bending_energy" -c.TopupConfiguration.scale_intensities = False +c.TopupConfiguration.scale_intensities = True c.TopupConfiguration.spl_order = "cubic" From 3c466354d52e867fa9bcdf1d3ab54caff7c70040 Mon Sep 17 00:00:00 2001 From: Alex Valcourt Caron Date: Sat, 20 Jul 2024 00:04:28 -0400 Subject: [PATCH 08/21] optimize n4 --- .config/dwi_n4_normalization_config.py | 6 +++--- .config/t1_n4_normalization_config.py | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.config/dwi_n4_normalization_config.py b/.config/dwi_n4_normalization_config.py index 3ddd7f6..377999f 100644 --- a/.config/dwi_n4_normalization_config.py +++ b/.config/dwi_n4_normalization_config.py @@ -29,15 +29,15 @@ c.N4BiasCorrectionConfiguration.spline_order = 3 -c.N4BiasCorrectionConfiguration.nvox_between_knots = 10.0 +c.N4BiasCorrectionConfiguration.nvox_between_knots = 5.0 -c.N4BiasCorrectionConfiguration.iterations = [300, 300, 300, 150, 70] +c.N4BiasCorrectionConfiguration.iterations = [300, 300, 150, 70] c.N4BiasCorrectionConfiguration.noise = 0.01 c.N4BiasCorrectionConfiguration.rescale = True -c.N4BiasCorrectionConfiguration.shrink = 2 +c.N4BiasCorrectionConfiguration.shrink = 4 c.N4BiasCorrectionConfiguration.threshold = 1E-8 diff --git a/.config/t1_n4_normalization_config.py b/.config/t1_n4_normalization_config.py index 3ddd7f6..3705efa 100644 --- a/.config/t1_n4_normalization_config.py +++ b/.config/t1_n4_normalization_config.py @@ -29,15 +29,15 @@ c.N4BiasCorrectionConfiguration.spline_order = 3 -c.N4BiasCorrectionConfiguration.nvox_between_knots = 10.0 +c.N4BiasCorrectionConfiguration.nvox_between_knots = 4.0 -c.N4BiasCorrectionConfiguration.iterations = [300, 300, 300, 150, 70] +c.N4BiasCorrectionConfiguration.iterations = [300, 300, 150, 70] c.N4BiasCorrectionConfiguration.noise = 0.01 c.N4BiasCorrectionConfiguration.rescale = True -c.N4BiasCorrectionConfiguration.shrink = 2 +c.N4BiasCorrectionConfiguration.shrink = 4 c.N4BiasCorrectionConfiguration.threshold = 1E-8 From f26c98be3acdcc09c8e0cb37e393a49adab3b2e4 Mon Sep 17 00:00:00 2001 From: Alex Valcourt Caron Date: Sat, 20 Jul 2024 00:05:22 -0400 Subject: [PATCH 09/21] remove dumb stuff --- modules/processes/denoise.nf | 20 ++------------------ 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/modules/processes/denoise.nf b/modules/processes/denoise.nf index f30e1f6..623be3e 100644 --- a/modules/processes/denoise.nf +++ b/modules/processes/denoise.nf @@ -109,8 +109,7 @@ process ants_gaussian_denoise { process n4_denoise { label "N4_CORRECTION" -// label params.conservative_resources ? "res_conservative_cpu" : "res_max_cpu" -cpus 20 +label params.conservative_resources ? "res_conservative_cpu" : "res_max_cpu" publishDir "${params.output_root}/all/${sid}/$caller_name/${task.process.replaceAll(":", "/")}", mode: "$params.publish_all_mode", enabled: params.publish_all, overwrite: true publishDir "${params.output_root}/${sid}", saveAs: { @@ -170,22 +169,7 @@ export ANTS_RANDOM_SEED=$params.random_seed $before_denoise -python3 - << ENDSCRIPT - -import nibabel as nib -import numpy as np - -img = nib.load("$in_img") -mask = nib.load("mask_for_n4.nii.gz") -m = img.get_fdata()[mask.get_fdata().astype(bool)].max() -with open("max.txt", "w+") as f: - f.write(f"{np.ceil(m).astype(int):d}\\n") - -ENDSCRIPT - -ImageMath 3 input.nii.gz RescaleImage $in_img 1 \$(cat max.txt) - -mrhardi n4 --in input.nii.gz $args \ +mrhardi n4 --in $in_img $args \ --out n4denoise \ --config $config $after_denoise From de464101dd7032306b8b3998735224c97445aa3d Mon Sep 17 00:00:00 2001 From: Alex Valcourt Caron Date: Sat, 20 Jul 2024 00:06:08 -0400 Subject: [PATCH 10/21] remove long unuseful alignment before topup, do your work acquisitionners --- modules/workflows/preprocess.nf | 16 +---------- workflows/preprocess.nf | 51 ++++++++++++--------------------- 2 files changed, 20 insertions(+), 47 deletions(-) diff --git a/modules/workflows/preprocess.nf b/modules/workflows/preprocess.nf index e09185e..23a94c3 100644 --- a/modules/workflows/preprocess.nf +++ b/modules/workflows/preprocess.nf @@ -185,17 +185,6 @@ workflow epi_correction_wkf { .join(rev_b0_metadata) .map{ [it[0], it[1..-1]] } - ec_align_b0_wkf( - b0_channel, - reverse_b0_channel, - b0_metadata, - rev_b0_metadata - ) - - b0_channel = ec_align_b0_wkf.out.b0 - reverse_b0_channel = ec_align_b0_wkf.out.rev_b0 - b0_meta_with_reverse_channel = ec_align_b0_wkf.out.metadata - acq_channel = dwi_with_reverse_channel .map{ [it[0], [it[2]]] } .join(existing_rev.map{ [it[0], [it[2]]] }) @@ -216,7 +205,7 @@ workflow epi_correction_wkf { metadata_channel = ec_concatenate_b0.out.metadata .join(meta_with_reverse_channel) - .join(b0_meta_with_reverse_channel) + .join(b0_metadata.map{ [it[0], it[1..-1]] }) .map{ [it[0], [it[1]] + it[2] + it[3]] } generate_b0_bval( @@ -296,9 +285,6 @@ workflow epi_correction_wkf { excluded_dwi_metadata = excluded_indexes .join(metadata_channel) .map{ it[0..1] } - forward_transform = ec_align_b0_wkf.out.b0_transform - reverse_transform = ec_align_b0_wkf.out.rev_transform - transform_reference = ec_align_b0_wkf.out.reference } workflow ec_align_b0_wkf { diff --git a/workflows/preprocess.nf b/workflows/preprocess.nf index 5d18bab..d6577c8 100644 --- a/workflows/preprocess.nf +++ b/workflows/preprocess.nf @@ -421,22 +421,22 @@ workflow preprocess_wkf { "preprocess", "false", params.extract_mean_b0_base_config ) - b0_reference_for_registration = extract_b0_reference.out.b0 - apply_transform_epi_rev( - ec_input_rev_channel.map{ it[0..1] } - .join(b0_reference_for_registration) - .join(epi_correction_wkf.out.forward_transform) - .join(epi_correction_wkf.out.reverse_transform) - .map{ it[0..-3] + [it[-2] + it[-1]] } - .map{ it + [["true", "false"], "", ""] }, - "preprocess", - "", - "false", - "", - params.ants_transform_base_config - ) - - rev_channel = replace_dwi_file(rev_channel, apply_transform_epi_rev.out.image) + // b0_reference_for_registration = extract_b0_reference.out.b0 + // apply_transform_epi_rev( + // ec_input_rev_channel.map{ it[0..1] } + // .join(b0_reference_for_registration) + // .join(epi_correction_wkf.out.forward_transform) + // .join(epi_correction_wkf.out.reverse_transform) + // .map{ it[0..-3] + [it[-2] + it[-1]] } + // .map{ it + [["true", "false"], "", ""] }, + // "preprocess", + // "", + // "false", + // "", + // params.ants_transform_base_config + // ) + + // rev_channel = replace_dwi_file(rev_channel, apply_transform_epi_rev.out.image) // Applied estimated susceptibility correction to DWI ec2eddy_channel = Channel.empty() @@ -450,7 +450,7 @@ workflow preprocess_wkf { // Applied estimated susceptibility correction to DWI apply_topup_wkf( ec_input_dwi_channel, - apply_transform_epi_rev.out.image, + rev_channel.map{ it[0..1] }, ec2eddy_channel, ec_input_dwi_meta_channel .join(ec_input_rev_meta_channel) @@ -471,23 +471,10 @@ workflow preprocess_wkf { epi_displacement_field_channel = epi_correction_wkf.out.field epi_fieldmap_channel = epi_correction_wkf.out.fieldmap - apply_transform_epi_field( - epi_displacement_field_channel - .join(b0_reference_for_registration) - .join(epi_correction_wkf.out.forward_transform) - .map{ it[0..-2] + [it[-1]] } - .map{ it + [["true"], "", ""] }, - "preprocess", - "", - "false", - "", - params.ants_transform_base_config - ) - apply_epi_field_wkf( ec_input_dwi_channel.map{ it[0..1] }, - apply_transform_epi_rev.out.image, - apply_transform_epi_field.out.image, + rev_channel.map{ it[0..1] }, + epi_correction_wkf.out.field, ec_input_dwi_meta_channel .map{ [it[0], it[1]] }, "" From 70b299b2c7ec0bbc43adad1e2aa82f25bdf7dc23 Mon Sep 17 00:00:00 2001 From: Alex Valcourt Caron Date: Sat, 20 Jul 2024 00:08:50 -0400 Subject: [PATCH 11/21] all registration with crop to mask before, if available. Do it, it so much simple with it (can be a crude box that fits the brain), I can do center-of-mass initialization ! --- modules/workflows/t1_registration.nf | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/modules/workflows/t1_registration.nf b/modules/workflows/t1_registration.nf index 3c9a2ac..dfab61a 100644 --- a/modules/workflows/t1_registration.nf +++ b/modules/workflows/t1_registration.nf @@ -678,24 +678,27 @@ workflow t1_mask_to_b0 { bet_mask(extract_target_b0.out.b0, "preprocess", "false", "") dwi_mask_channel = bet_mask.out.mask - mask_target_b0(extract_target_b0.out.b0.join(dwi_mask_channel).map{ it + [""] }, "preprocess", "false") + //mask_target_b0(extract_target_b0.out.b0.join(dwi_mask_channel).map{ it + [""] }, "preprocess", "false") compute_target_pdavg(dwi_channel.map{ it[0..2] }.map{ it + ["", ""] }, "preprocess", "false") - mask_target_pdavg(compute_target_pdavg.out.image.join(dwi_mask_channel).map{ it + [""] }, "preprocess", "false") + //mask_target_pdavg(compute_target_pdavg.out.image.join(dwi_mask_channel).map{ it + [""] }, "preprocess", "false") - mask_moving_t1(t1_channel.join(t1_mask_channel).map{ it + [""] }, "preprocess", "false") + //mask_moving_t1(t1_channel.join(t1_mask_channel).map{ it + [""] }, "preprocess", "false") - target_channel = mask_target_b0.out.image - .join(mask_target_pdavg.out.image) + target_channel = extract_target_b0.out.b0 + .join(compute_target_pdavg.out.image) .map{ [it[0], it[1..-1]] } - moving_channel = mask_moving_t1.out.image + moving_channel = t1_channel .map{ [it[0], [it[1]]] } + mask_channel = bet_mask.out.mask + .join(t1_mask_channel) + .map{ [it[0], it[1..-1]] } t1_to_b0_registration_wkf( target_channel, moving_channel, null, - null, + mask_channel, null, null, "", From 1ff5d5ac213caf9e17080fab5c298af2a310a6bc Mon Sep 17 00:00:00 2001 From: Alex Valcourt Caron Date: Sat, 20 Jul 2024 00:09:02 -0400 Subject: [PATCH 12/21] optimize registration --- .../t1_to_b0_registration_affine_config.py | 26 ++++++++++--------- .config/t1_to_template_affine_config.py | 2 -- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/.config/t1_to_b0_registration_affine_config.py b/.config/t1_to_b0_registration_affine_config.py index 1ad97ea..1443cf5 100644 --- a/.config/t1_to_b0_registration_affine_config.py +++ b/.config/t1_to_b0_registration_affine_config.py @@ -42,9 +42,9 @@ c.AntsConfiguration.match_histogram = False c.AntsConfiguration.passes = [{ - "conv_eps": 1e-7, + "conv_eps": 1e-6, "conv_max_iter": [500, 300, 150, 50], - "conv_win": 10, + "conv_win": 20, "grad_step": 0.1, "klass": "mrHARDI.traits.ants.AntsRigid", "metrics": [ @@ -53,9 +53,10 @@ "moving_index": 0, "args": [ 1.0, - 64, + 128, "Regular", - 0.5 + 1.0, + True ], "klass": "mrHARDI.traits.ants.MetricMI" } @@ -67,15 +68,15 @@ 1 ], "smoothing": [ - 1.5, + 3, + 2, 1, - 0.5, 0 ] }, { - "conv_eps": 1e-7, + "conv_eps": 1e-6, "conv_max_iter": [300, 150, 100, 50], - "conv_win": 10, + "conv_win": 20, "grad_step": 0.1, "klass": "mrHARDI.traits.ants.AntsAffine", "metrics": [ @@ -84,9 +85,10 @@ "moving_index": 0, "args": [ 1.0, - 64, + 128, "Regular", - 0.5 + 1.0, + True ], "klass": "mrHARDI.traits.ants.MetricMI" } @@ -98,9 +100,9 @@ 1 ], "smoothing": [ - 1.5, + 3, + 2, 1, - 0.5, 0 ] }] diff --git a/.config/t1_to_template_affine_config.py b/.config/t1_to_template_affine_config.py index 998c90a..6e211b8 100644 --- a/.config/t1_to_template_affine_config.py +++ b/.config/t1_to_template_affine_config.py @@ -14,8 +14,6 @@ c.AntsRegistration.log_level = 30 -c.AntsRegistration.init_with_ants_ai = True - c.AntsRegistration.base_config_file = "" c.AntsRegistration.init_with_ants_ai = False From faf5891c5a4d04da630b4c332951a1678cf41652 Mon Sep 17 00:00:00 2001 From: Alex Valcourt Caron Date: Sun, 21 Jul 2024 22:19:12 -0400 Subject: [PATCH 13/21] fix n4 denoising on dwi --- .config/dwi_n4_normalization_config.py | 4 ++-- .config/dwi_n4_normalization_quick_config.py | 4 +++- modules/processes/denoise.nf | 6 +++--- workflows/preprocess.nf | 4 ++-- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/.config/dwi_n4_normalization_config.py b/.config/dwi_n4_normalization_config.py index 377999f..a734bde 100644 --- a/.config/dwi_n4_normalization_config.py +++ b/.config/dwi_n4_normalization_config.py @@ -29,9 +29,9 @@ c.N4BiasCorrectionConfiguration.spline_order = 3 -c.N4BiasCorrectionConfiguration.nvox_between_knots = 5.0 +c.N4BiasCorrectionConfiguration.nvox_between_knots = 7.0 -c.N4BiasCorrectionConfiguration.iterations = [300, 300, 150, 70] +c.N4BiasCorrectionConfiguration.iterations = [300, 300, 150, 75, 40] c.N4BiasCorrectionConfiguration.noise = 0.01 diff --git a/.config/dwi_n4_normalization_quick_config.py b/.config/dwi_n4_normalization_quick_config.py index dd1cabe..4f7e55f 100644 --- a/.config/dwi_n4_normalization_quick_config.py +++ b/.config/dwi_n4_normalization_quick_config.py @@ -27,7 +27,9 @@ c.N4BiasCorrectionConfiguration.filter_width = 0.6 -c.N4BiasCorrectionConfiguration.nvox_between_knots = 10.0 +c.N4BiasCorrectionConfiguration.spline_order = 3 + +c.N4BiasCorrectionConfiguration.nvox_between_knots = 7.0 c.N4BiasCorrectionConfiguration.iterations = [300, 300, 150, 75, 40] diff --git a/modules/processes/denoise.nf b/modules/processes/denoise.nf index 623be3e..5394a3b 100644 --- a/modules/processes/denoise.nf +++ b/modules/processes/denoise.nf @@ -131,13 +131,13 @@ script: def before_denoise ="" def after_denoise = "" def args = "" -def in_img = "$image" if ( anat.empty() ) { + before_denoise += "fslmaths $image -thr 0 image4n4.nii.gz\n" after_denoise += "mv n4denoise_bias_field.nii.gz ${image.simpleName}_n4_bias_field.nii.gz\n" } else { args += "--apply $image" - in_img = "$anat" + before_denoise += "fslmaths $anat -thr 0 image4n4.nii.gz\n" after_denoise += "mv tmp_n4denoised_bias_field.nii.gz ${image.simpleName}_n4_bias_field.nii.gz\n" } @@ -169,7 +169,7 @@ export ANTS_RANDOM_SEED=$params.random_seed $before_denoise -mrhardi n4 --in $in_img $args \ +mrhardi n4 --in image4n4.nii.gz $args \ --out n4denoise \ --config $config $after_denoise diff --git a/workflows/preprocess.nf b/workflows/preprocess.nf index d6577c8..798c3a1 100644 --- a/workflows/preprocess.nf +++ b/workflows/preprocess.nf @@ -637,7 +637,7 @@ workflow preprocess_wkf { n4_denoise_t1_to_b0_wkf( existing_t1_mask_id_channel.join(epi_corrected_dwi_channel.map{ it[0..1] }), existing_t1_mask_id_channel.join(b0_channel), - existing_t1_mask_id_channel.join(dwi_mask_channel), + Channel.empty(), existing_t1_mask_id_channel.join(epi_corrected_meta_channel), params.dwi_n4_normalization_quick_config, false @@ -735,7 +735,7 @@ workflow preprocess_wkf { n4_denoise_wkf( dwi_channel.map{ it[0..1] }, b0_channel, - dwi_mask_channel, + Channel.empty(), meta_channel, params.dwi_n4_normalization_config, true From 97ce0d7f9a0655ed1b5d8d9290bf4bce0e8729a5 Mon Sep 17 00:00:00 2001 From: Alex Valcourt Caron Date: Sun, 21 Jul 2024 23:51:20 -0400 Subject: [PATCH 14/21] n4fort1 --- .config/t1_n4_normalization_config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.config/t1_n4_normalization_config.py b/.config/t1_n4_normalization_config.py index 3705efa..edc2195 100644 --- a/.config/t1_n4_normalization_config.py +++ b/.config/t1_n4_normalization_config.py @@ -29,7 +29,7 @@ c.N4BiasCorrectionConfiguration.spline_order = 3 -c.N4BiasCorrectionConfiguration.nvox_between_knots = 4.0 +c.N4BiasCorrectionConfiguration.nvox_between_knots = 14.0 c.N4BiasCorrectionConfiguration.iterations = [300, 300, 150, 70] From 8f162ebaff8bff38350955fa35e9bfc947db1625 Mon Sep 17 00:00:00 2001 From: Alex Valcourt Caron Date: Mon, 22 Jul 2024 16:10:21 -0400 Subject: [PATCH 15/21] improve b0 affine alignment near the cortex, adding back the b0, using the PA for contours only --- .config/b0_to_template_affine_config.py | 26 +++++++++++++++++++++++-- .config/b0_to_template_syn_config.py | 18 ++++++++++++++--- 2 files changed, 39 insertions(+), 5 deletions(-) diff --git a/.config/b0_to_template_affine_config.py b/.config/b0_to_template_affine_config.py index 804f16f..bc7f160 100644 --- a/.config/b0_to_template_affine_config.py +++ b/.config/b0_to_template_affine_config.py @@ -49,11 +49,22 @@ "grad_step": 0.05, "klass": "mrHARDI.traits.ants.AntsRigid", "metrics": [ + { + "target_index": 0, + "moving_index": 0, + "args": [ + 0.75, + 128, + "Regular", + 1. + ], + "klass": "mrHARDI.traits.ants.MetricMI" + }, { "target_index": 0, "moving_index": 1, "args": [ - 1., + 0.25, 128, "Regular", 1., @@ -81,11 +92,22 @@ "grad_step": 0.05, "klass": "mrHARDI.traits.ants.AntsAffine", "metrics": [ + { + "target_index": 0, + "moving_index": 0, + "args": [ + 0.75, + 128, + "Regular", + 1. + ], + "klass": "mrHARDI.traits.ants.MetricMI" + }, { "target_index": 0, "moving_index": 1, "args": [ - 1., + 0.25, 128, "Regular", 1., diff --git a/.config/b0_to_template_syn_config.py b/.config/b0_to_template_syn_config.py index d464d18..cc239f6 100644 --- a/.config/b0_to_template_syn_config.py +++ b/.config/b0_to_template_syn_config.py @@ -45,20 +45,32 @@ "metrics": [ { "target_index": 0, - "moving_index": 1, + "moving_index": 0, "args": [ - 0.75, + 0.65, 64, "Regular", 1. ], "klass": "mrHARDI.traits.ants.MetricMI" }, + { + "target_index": 0, + "moving_index": 1, + "args": [ + 0.15, + 64, + "Regular", + 1., + True + ], + "klass": "mrHARDI.traits.ants.MetricMI" + }, { "target_index": 0, "moving_index": 2, "args": [ - 0.25, + 0.20, 4, "Regular", 1. From ca90fc4bfe2f0b2c7a77f090c013880db683183b Mon Sep 17 00:00:00 2001 From: Alex Valcourt Caron Date: Mon, 22 Jul 2024 16:44:26 -0400 Subject: [PATCH 16/21] faster t1 registration syn, affine should do its work --- .config/t1_to_template_syn_config.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.config/t1_to_template_syn_config.py b/.config/t1_to_template_syn_config.py index b47998d..f91e774 100644 --- a/.config/t1_to_template_syn_config.py +++ b/.config/t1_to_template_syn_config.py @@ -38,9 +38,9 @@ "conv_eps": 1e-7, "conv_max_iter": [200, 200, 140, 100, 40], "conv_win": 10, - "grad_step": 0.05, + "grad_step": 0.1, "var_penality": 3, - "var_total": 3, + "var_total": 0, "klass": "mrHARDI.traits.ants.AntsSyN", "metrics": [ { From 4670dbf5fae66913901d5948cced9bc27d349af8 Mon Sep 17 00:00:00 2001 From: AlexVCaron Date: Tue, 23 Jul 2024 00:52:38 -0400 Subject: [PATCH 17/21] further upgrade to registration --- .../t1_to_b0_registration_affine_config.py | 26 +++++++++++++++++-- modules/processes/register.nf | 4 ++- modules/workflows/preprocess.nf | 2 ++ modules/workflows/segment.nf | 2 ++ modules/workflows/t1_registration.nf | 13 ++++++++-- workflows/preprocess.nf | 1 + 6 files changed, 43 insertions(+), 5 deletions(-) diff --git a/.config/t1_to_b0_registration_affine_config.py b/.config/t1_to_b0_registration_affine_config.py index 1443cf5..9ecae3b 100644 --- a/.config/t1_to_b0_registration_affine_config.py +++ b/.config/t1_to_b0_registration_affine_config.py @@ -48,11 +48,22 @@ "grad_step": 0.1, "klass": "mrHARDI.traits.ants.AntsRigid", "metrics": [ + { + "target_index": 0, + "moving_index": 0, + "args": [ + 0.75, + 128, + "Regular", + 1.0 + ], + "klass": "mrHARDI.traits.ants.MetricMI" + }, { "target_index": 1, "moving_index": 0, "args": [ - 1.0, + 0.25, 128, "Regular", 1.0, @@ -80,11 +91,22 @@ "grad_step": 0.1, "klass": "mrHARDI.traits.ants.AntsAffine", "metrics": [ + { + "target_index": 0, + "moving_index": 0, + "args": [ + 0.75, + 128, + "Regular", + 1.0 + ], + "klass": "mrHARDI.traits.ants.MetricMI" + }, { "target_index": 1, "moving_index": 0, "args": [ - 1.0, + 0.25, 128, "Regular", 1.0, diff --git a/modules/processes/register.nf b/modules/processes/register.nf index f7603e2..688c034 100644 --- a/modules/processes/register.nf +++ b/modules/processes/register.nf @@ -18,6 +18,7 @@ process ants_register { input: tuple val(sid), path(moving), path(target), val(reference), file(mask), file(metadata) + val(register_without_masks) val(caller_name) val(additional_publish_path) val(publish) @@ -35,7 +36,8 @@ process ants_register { def after_cmd = "" def tg = [] def mv = [] - if ( !mask.iterator().inject(false) { c, i -> c || i.empty() } ) { + def has_masks = mask.iterator().inject(false) { c, i -> c || i.empty() } + if ( !(register_without_masks && has_masks) ) { mask_arg = "--mask ${mask.iterator().collect{ it.name }.join(',')}" } if ( mask.size() == 2 ) { diff --git a/modules/workflows/preprocess.nf b/modules/workflows/preprocess.nf index 23a94c3..93ea839 100644 --- a/modules/workflows/preprocess.nf +++ b/modules/workflows/preprocess.nf @@ -83,6 +83,7 @@ workflow registration_wkf { publish publish_suffix trans_publish_suffix + register_without_masks registration_parameters transformation_parameters main: @@ -96,6 +97,7 @@ workflow registration_wkf { into_register = join_optional(into_register, mask_channel) ants_register( join_optional(into_register, reg_metadata), + register_without_masks, "preprocess", additional_publish_path, publish, publish_suffix, diff --git a/modules/workflows/segment.nf b/modules/workflows/segment.nf index 0b8fcca..05bb05c 100644 --- a/modules/workflows/segment.nf +++ b/modules/workflows/segment.nf @@ -139,6 +139,7 @@ workflow segment_nmt_wkf { "segmentation", false, "", "", + false, params.segmentation_registration_config, params.ants_transform_segmentation_config ) @@ -341,6 +342,7 @@ workflow segment_wm_wkf { "segmentation", true, "", "", + false, params.segmentation_registration_config, params.ants_transform_segmentation_config ) diff --git a/modules/workflows/t1_registration.nf b/modules/workflows/t1_registration.nf index dfab61a..0d7bae1 100644 --- a/modules/workflows/t1_registration.nf +++ b/modules/workflows/t1_registration.nf @@ -86,7 +86,8 @@ include { rename_sequentially as reorder_template_to_b0; rename_sequentially as reorder_b0_to_template; rename_sequentially as reorder_t1_to_b0; - rename_sequentially as reorder_b0_to_t1 + rename_sequentially as reorder_b0_to_t1; + change_name as rename_reference_mask; } from "../processes/io.nf" params.use_quick = false @@ -382,6 +383,7 @@ workflow t1_to_b0_affine { false, "", "", + true, t1_affine_config, params.ants_transform_mask_config ) @@ -397,6 +399,7 @@ workflow t1_to_b0_affine { false, "", "", + true, b0_affine_config, params.ants_transform_mask_config ) @@ -531,16 +534,19 @@ workflow t1_to_b0_syn { false, "", "", + false, t1_syn_config, params.ants_transform_mask_config ) + dwi_mask_channel = rename_reference_mask(dilated_reference_mask_channel, "dwi_mask") + b0_to_reference_syn( reference_fixed_channel, b0_moving_channel, dwi_mask_channel, dilated_reference_mask_channel - .join(difference_masks.out.mask) + .join(dwi_mask_channel) .map{ [it[0], it[1..-1]] }, null, null, @@ -548,6 +554,7 @@ workflow t1_to_b0_syn { false, "", "", + true, b0_syn_config, params.ants_transform_mask_config ) @@ -578,6 +585,7 @@ workflow t1_to_b0_syn { false, "", "", + true, t1_to_b0_syn_config, params.ants_transform_mask_config ) @@ -705,6 +713,7 @@ workflow t1_mask_to_b0 { false, "", "", + true, params.t1_to_b0_registration_config, "" ) diff --git a/workflows/preprocess.nf b/workflows/preprocess.nf index 798c3a1..12114fb 100644 --- a/workflows/preprocess.nf +++ b/workflows/preprocess.nf @@ -766,6 +766,7 @@ workflow preprocess_wkf { .map{ it[0..1] + [""] }, "", false, "", "", + true, params.b02t1_mask_registration_config, null ) From 663d84d6d6a64f475e3d4c0f7594e630cce555b0 Mon Sep 17 00:00:00 2001 From: AlexVCaron Date: Wed, 24 Jul 2024 10:02:33 -0400 Subject: [PATCH 18/21] use bet mask when available and said so --- workflows/preprocess.nf | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/workflows/preprocess.nf b/workflows/preprocess.nf index 12114fb..8906403 100644 --- a/workflows/preprocess.nf +++ b/workflows/preprocess.nf @@ -152,6 +152,7 @@ include { params.gaussian_noise_correction = true params.gibbs_ringing_correction = true params.dwi_mask_from_t1_mask = true +params.dwi_use_native_t1_mask = false params.epi_correction = true params.epi_algorithm = "topup" params.eddy_correction = true @@ -624,7 +625,20 @@ workflow preprocess_wkf { // Get better mask for the DWI from the T1 (when missing and if present) if ( params.dwi_mask_from_t1_mask ) { - if ( params.register_t1_to_dwi ){ + if ( params.dwi_use_native_t1_mask ) + { + identity( + t1_mask_channel + .join(b0_channel) + .map{ it + [""] }, + "preprocess", + "", false, "dwi_mask", + 0, "uchar", "NearestNeighbor", + params.ants_transform_base_config + ) + dwi_mask_channel = identity.out.image + } + else if ( !params.register_t1_to_dwi ) { existing_t1_mask_id_channel = exclude_missing_datapoints( t1_mask_channel, 1, "" @@ -660,19 +674,6 @@ workflow preprocess_wkf { dwi_mask_channel = t1_mask_convert_datatype.out.image .mix(absent_t1_mask_id_channel.join(dwi_mask_channel)) } - else - { - identity( - t1_mask_channel - .join(b0_channel) - .map{ it + [""] }, - "preprocess", - "", false, "dwi_mask", - 0, "uchar", "NearestNeighbor", - params.ants_transform_base_config - ) - dwi_mask_channel = identity.out.image - } } // Perform Eddy currents and motion correction on the DWI From 2865aefd94b1b88fd0aa19c388c63f3f83bccb87 Mon Sep 17 00:00:00 2001 From: AlexVCaron Date: Sun, 4 Aug 2024 21:57:48 -0400 Subject: [PATCH 19/21] reduce last syn, no need to be that long --- .config/t1_to_b0_syn_config.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.config/t1_to_b0_syn_config.py b/.config/t1_to_b0_syn_config.py index 957205b..e80c9ba 100644 --- a/.config/t1_to_b0_syn_config.py +++ b/.config/t1_to_b0_syn_config.py @@ -35,8 +35,8 @@ c.AntsConfiguration.match_histogram = False c.AntsConfiguration.passes = [{ - "conv_eps": 1e-7, - "conv_max_iter": [200, 200, 140, 100, 40], + "conv_eps": 1e-6, + "conv_max_iter": [200, 100, 40, 20, 10], "conv_win": 10, "grad_step": 0.05, "var_penality": 3, From 8edb34755b40a32c2cde4fbb0edf3b5346ec13ee Mon Sep 17 00:00:00 2001 From: AlexVCaron Date: Mon, 5 Aug 2024 12:56:00 -0400 Subject: [PATCH 20/21] update readme --- README.md | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index b523ddb..d8e1daf 100644 --- a/README.md +++ b/README.md @@ -29,24 +29,20 @@ Frontiers in Neuroinformatics, 10.3389/fninf.2023.1191200, doi.org/10.3389/fninf To run the pipeline, the following tools must be installed : - [Nextflow](https://www.nextflow.io/docs/latest/getstarted.html) (we recommend installing the last available release of version 21) -- [Singularity](https://docs.sylabs.io/guides/3.0/user-guide/installation.html) 3.7.1 or higher, or [Docker](https://docs.docker.com/engine/install/) +- [Apptainer](https://apptainer.org/docs/admin/main/installation.html) 1.3.2 or higher, or [Docker](https://docs.docker.com/engine/install/) (we recommend [Docker Desktop](https://docs.docker.com/desktop/)) ## Dependencies -All dependencies required to run the pipeline have been packaged in singularity +All dependencies required to run the pipeline have been packaged in apptainer and docker images. The `latest` versions come pre-packaged with the CUDA runtime and require a Nvidia GPU to execute. For usage on a machine without a Nvidia GPU, use the images tagged `nogpu`. - Docker : [Docker Hub](https://hub.docker.com/r/avcaron/versa) - `docker pull avcaron/versa:latest` -- Singularity : - - Singularity images are no longer produced in house. To build your singularity, - use a docker tag and the following command : `singularity build docker://avcaron/versa:`. - - Old versions of the singularity images can still be access through the ORAS - container registry : - - Nvidia GPU : `singularity pull oras://mrhardi.azurecr.io/mrHARDI/mrhardi:latest` - - Without GPU : `singularity pull oras://mrhardi.azurecr.io/mrHARDI/mrhardi:nogpu` +- Apptainer : apptainer images must be built locally, using the following command : + - `apptainer build docker://avcaron/versa:latest .` + # Data input format @@ -155,7 +151,7 @@ nextflow run \ Additional parameters to this command can be supplied, such as : - Running with docker image : `-with-docker ` -- Running with singularity image : `-with-singularity ` +- Running with apptainer image : `-with-apptainer ` - Changing output directory : `--output_root ` - Display help and usage : `--help` From e6c4dcd7e3bb34eb85007de4c22a7b3b15bdf24a Mon Sep 17 00:00:00 2001 From: Alex Valcourt Caron Date: Sat, 23 Sep 2023 03:42:33 +0000 Subject: [PATCH 21/21] change naming --- .devcontainer/devcontainer.json | 6 +++--- README.md | 4 +--- modules/functions.nf | 2 +- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 65dfe27..22c513b 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,6 +1,6 @@ // For format details, see https://aka.ms/devcontainer.json { - "name": "mrHARDIflow container", + "name": "versaFlow container", "image": "avcaron/mrhardi:dev", "features": { @@ -41,8 +41,8 @@ }, "forwardPorts": [3000], - "workspaceMount": "source=${localWorkspaceFolder},target=/mrhardiflow,type=bind,consistency=cached", - "workspaceFolder": "/mrhardiflow", + "workspaceMount": "source=${localWorkspaceFolder},target=/versaFlow,type=bind,consistency=cached", + "workspaceFolder": "/versaFlow", "updateContentCommand": "bash .devcontainer/update_container.sh" // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root. diff --git a/README.md b/README.md index d8e1daf..f783469 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,7 @@ [![Docker containers](https://img.shields.io/badge/Docker%20images-dockerhub-blue?style=plaflat&logo=docker&labelColor=2e343b)](https://hub.docker.com/repository/docker/avcaron/versa) [![DOI](https://zenodo.org/badge/430873937.svg)](https://zenodo.org/badge/latestdoi/430873937) -**\*\*DEVELOPMENT REPOSITORY ONLY, GO TO [VERSAFLOW](https://github.com/AlexVCaron/versaFlow) FOR UP-TO-DATE PIPELINES\*\*** - -# mrHARDIflow +# versaFlow versaflow is a diffusion MRI processing pipeline configured to handle high angular and spatial resolution data. By default it is configured to process diff --git a/modules/functions.nf b/modules/functions.nf index 6675738..c500742 100644 --- a/modules/functions.nf +++ b/modules/functions.nf @@ -181,7 +181,7 @@ def separate_b0_from_dwi( data_channel ) { return [exclude_missing_datapoints(data_channel, 2, ""), filter_datapoints(data_channel, { it[2] == "" })] } -LIBRARY_ROOT_NAME = "mrHARDIflow" +LIBRARY_ROOT_NAME = "versaFlow" def get_data_path () { def current_dir = file("$projectDir")