From bffacca21b6bc2fbb47c8d4a954c52d02031f307 Mon Sep 17 00:00:00 2001 From: Robert Smith Date: Tue, 11 Jun 2024 15:57:00 +1000 Subject: [PATCH 1/2] SIFT2: Changes to output streamline weights units - Rather than being approximately centred around unity, streamline weights will now be written appropriately pre-multiplied such that they have units mm^2. - These units can be modified both at the command-line and in the MRtrix configuration file. - Update tcksift2 reference to OHBM Aperture article. --- cmd/tcksift2.cpp | 95 ++++++++++++++++++- docs/reference/commands/tcksift2.rst | 16 +++- docs/reference/config_file_options.rst | 7 ++ src/dwi/tractography/SIFT/track_index_range.h | 1 + src/dwi/tractography/SIFT/types.h | 2 - src/dwi/tractography/SIFT2/tckfactor.cpp | 13 ++- src/dwi/tractography/SIFT2/tckfactor.h | 3 +- src/dwi/tractography/SIFT2/units.cpp | 46 +++++++++ src/dwi/tractography/SIFT2/units.h | 32 +++++++ testing/binaries/CMakeLists.txt | 1 + testing/binaries/tests/tcksift2/units | 28 ++++++ 11 files changed, 233 insertions(+), 11 deletions(-) create mode 100644 src/dwi/tractography/SIFT2/units.cpp create mode 100644 src/dwi/tractography/SIFT2/units.h create mode 100644 testing/binaries/tests/tcksift2/units diff --git a/cmd/tcksift2.cpp b/cmd/tcksift2.cpp index b673869909..06393c07c5 100644 --- a/cmd/tcksift2.cpp +++ b/cmd/tcksift2.cpp @@ -19,6 +19,7 @@ #include "header.h" #include "image.h" +#include "file/config.h" #include "file/path.h" #include "dwi/directions/set.h" @@ -29,6 +30,7 @@ #include "dwi/tractography/SIFT/sift.h" #include "dwi/tractography/SIFT2/tckfactor.h" +#include "dwi/tractography/SIFT2/units.h" using namespace MR; using namespace App; @@ -109,17 +111,75 @@ void usage() { SYNOPSIS = "Optimise per-streamline cross-section multipliers" " to match a whole-brain tractogram to fixel-wise fibre densities"; + DESCRIPTION + + "Interpretation of not just the relative magnitudes of the output weights of different streamlines," + " but their ABSOLUTE magnitude," + " depends on the presence or absence of any modulations applied to those values;" + " by the tcksift2 command itself," + " and/or other experimental factors applied," + " whether implicit or explicit." + " This has been termed \"inter-subject connection density normalisation\"." + " Within the scope of the tcksift2 command," + " some control of this normalisation is available by specifying the units of those output weights." + " The options available for these units," + " and their corresponding interpretations," + " are described in further detail in the following paragraphs." + + + "- \"NOS\" (Number Of Streamlines) / \"none\":" + " No explicit scaling of the output streamline weights is performed." + " A key component of the SIFT model as originally devised" + " was to scale the contributions of all streamlines by proportionality coefficient mu," + " to facilitate direct comparison of tractogram and fixel-wise fibre densities." + " This is therefore the \"native\" form in which these streamline weights are computed." + " In the contex of output of the SIFT2 method," + " this makes the per-streamline weights approximately centred around unity," + " such that the overall magnitude of inter-areal connection weights" + " will be comparable to that of the number-of-streamlines metric." + " This was the behaviour of the tcksift2 command prior to software version 3.1.0." + + + "- \"AFD/mm\" / \"AFD.mm-1\", \"AFD.mm^-1\":" + " The streamline weights in their native representation" + " are multiplied by SIFT model proportionality coefficient mu" + " as they are exported to file." + " These values encode the AFD per millimetre of length" + " that is contributed to the model by that streamline." + " Only under specific circumstances" + " does utilising these units permit direct comparison of Fibre Bundle Capacity (FBC)" + " between reconstructions:" + " a) Use of common response function(s);" + " b) Having used some mechanism for global intensity normalisation" + " (as required for any analysis of AFD);" + " c) All DWI data have the same spatial resolution." + + + "- \"mm2\" / \"mm^2\":" + " The streamline weights in their native representation" + " are multiplied both by SIFT model proportionality coefficient mu" + " and by the voxel volume in mm^3 as they are exported to file." + " These units interpret the fixel-wise AFD values as volume fractions" + " (despite the fact that these values do not have an upper bound of 1.0)," + " such that the streamline weights may be interpreted" + " as a physical fibre cross-sectional area in units of mm^2;" + " each streamline therefore contributes some fibre volume per unit length." + " Only under specific circumstances" + " does utilising these units permit direct comparison of Fibre Bundle Capacity (FBC)" + " between reconstructions:" + " a) Use of common response function(s);" + " b) Having used some mechanism for global intensity normalisation" + " (as required for any analysis of AFD)." + " Unlike the AFD/mm units however," + " streamline weights exported in these units are invariant" + " to the resolution of the FOD voxel grid used in the SIFT2 optimisation."; + REFERENCES + "Smith, R. E.; Tournier, J.-D.; Calamante, F. & Connelly, A. " // Internal "SIFT2: Enabling dense quantitative assessment of brain white matter connectivity" " using streamlines tractography. " "NeuroImage, 2015, 119, 338-351" - + "* If using the -linear option: \n" - "Smith, RE; Raffelt, D; Tournier, J-D; Connelly, A. " // Internal + + "Smith, RE; Raffelt, D; Tournier, J-D; Connelly, A. " // Internal "Quantitative Streamlines Tractography:" " Methods and Inter-Subject Normalisation. " - "Open Science Framework, https://doi.org/10.31219/osf.io/c67kn."; + "OHBM Aperture, doi: 10.52294/ApertureNeuro.2022.2.NEOD9565."; ARGUMENTS + Argument ("in_tracks", "the input track file").type_tracks_in() @@ -127,6 +187,8 @@ void usage() { + Argument ("out_weights", "output text file containing the weighting factor for each streamline").type_file_out(); OPTIONS + + Option ("units", "specify the physical units for the output streamline weights (see Description)") + + Argument ("choice").type_choice(SIFT2::units_choices) + SIFT::SIFTModelProcMaskOption + SIFT::SIFTModelOption @@ -141,6 +203,29 @@ void usage() { } // clang-format on +// CONF option: SIFT2DefaultUnits +// CONF default: "mm^2" +// CONF A string indicating the units of the streamline weights +// CONF yielded by the tcksift2 command. +SIFT2::units_t get_units() { + auto opt = get_options("units"); + if (!opt.empty()) { + try { + return SIFT2::str2units(opt[0][0]); + } catch (Exception& e) { + throw Exception("Incorrectly specified SIFT2 units on command-line"); + } + } + const std::string from_config = File::Config::get("SIFT2DefaultUnits"); + if (from_config.empty()) + return SIFT2::default_units; + try { + return SIFT2::str2units(from_config); + } catch (Exception& e) { + throw Exception(e, "Incorrectly specified SIFT2 units in MRtrix config file"); + } +} + void run() { if (!get_options("min_factor").empty() && !get_options("min_coeff").empty()) @@ -151,6 +236,8 @@ void run() { if (Path::has_suffix(argument[2], ".tck")) throw Exception("Output of tcksift2 command should be a text file, not a tracks file"); + const SIFT2::units_t units = get_units(); + auto in_dwi = Image::open(argument[1]); DWI::Directions::FastLookupSet dirs(1281); @@ -220,7 +307,7 @@ void run() { tckfactor.report_entropy(); - tckfactor.output_factors(argument[2]); + tckfactor.output_factors(argument[2], units); auto opt = get_options("out_coeffs"); if (!opt.empty()) diff --git a/docs/reference/commands/tcksift2.rst b/docs/reference/commands/tcksift2.rst index c514a159da..81715f3693 100644 --- a/docs/reference/commands/tcksift2.rst +++ b/docs/reference/commands/tcksift2.rst @@ -19,9 +19,22 @@ Usage - *in_fod*: input image containing the spherical harmonics of the fibre orientation distributions - *out_weights*: output text file containing the weighting factor for each streamline +Description +----------- + +Interpretation of not just the relative magnitudes of the output weights of different streamlines, but their ABSOLUTE magnitude, depends on the presence or absence of any modulations applied to those values; by the tcksift2 command itself, and/or other experimental factors applied, whether implicit or explicit. This has been termed "inter-subject connection density normalisation". Within the scope of the tcksift2 command, some control of this normalisation is available by specifying the units of those output weights. The options available for these units, and their corresponding interpretations, are described in further detail in the following paragraphs. + +- "NOS" (Number Of Streamlines) / "none": No explicit scaling of the output streamline weights is performed. A key component of the SIFT model as originally devised was to scale the contributions of all streamlines by proportionality coefficient mu, to facilitate direct comparison of tractogram and fixel-wise fibre densities. This is therefore the "native" form in which these streamline weights are computed. In the contex of output of the SIFT2 method, this makes the per-streamline weights approximately centred around unity, such that the overall magnitude of inter-areal connection weights will be comparable to that of the number-of-streamlines metric. This was the behaviour of the tcksift2 command prior to software version 3.1.0. + +- "AFD/mm" / "AFD.mm-1", "AFD.mm^-1": The streamline weights in their native representation are multiplied by SIFT model proportionality coefficient mu as they are exported to file. These values encode the AFD per millimetre of length that is contributed to the model by that streamline. Only under specific circumstances does utilising these units permit direct comparison of Fibre Bundle Capacity (FBC) between reconstructions: a) Use of common response function(s); b) Having used some mechanism for global intensity normalisation (as required for any analysis of AFD); c) All DWI data have the same spatial resolution. + +- "mm2" / "mm^2": The streamline weights in their native representation are multiplied both by SIFT model proportionality coefficient mu and by the voxel volume in mm^3 as they are exported to file. These units interpret the fixel-wise AFD values as volume fractions (despite the fact that these values do not have an upper bound of 1.0), such that the streamline weights may be interpreted as a physical fibre cross-sectional area in units of mm^2; each streamline therefore contributes some fibre volume per unit length. Only under specific circumstances does utilising these units permit direct comparison of Fibre Bundle Capacity (FBC) between reconstructions: a) Use of common response function(s); b) Having used some mechanism for global intensity normalisation (as required for any analysis of AFD). Unlike the AFD/mm units however, streamline weights exported in these units are invariant to the resolution of the FOD voxel grid used in the SIFT2 optimisation. + Options ------- +- **-units choice** specify the physical units for the output streamline weights (see Description) + Options for setting the processing mask for the SIFT fixel-streamlines comparison model ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -107,8 +120,7 @@ References Smith, R. E.; Tournier, J.-D.; Calamante, F. & Connelly, A. SIFT2: Enabling dense quantitative assessment of brain white matter connectivity using streamlines tractography. NeuroImage, 2015, 119, 338-351 -* If using the -linear option: |br| - Smith, RE; Raffelt, D; Tournier, J-D; Connelly, A. Quantitative Streamlines Tractography: Methods and Inter-Subject Normalisation. Open Science Framework, https://doi.org/10.31219/osf.io/c67kn. +Smith, RE; Raffelt, D; Tournier, J-D; Connelly, A. Quantitative Streamlines Tractography: Methods and Inter-Subject Normalisation. OHBM Aperture, doi: 10.52294/ApertureNeuro.2022.2.NEOD9565. Tournier, J.-D.; Smith, R. E.; Raffelt, D.; Tabbara, R.; Dhollander, T.; Pietsch, M.; Christiaens, D.; Jeurissen, B.; Yeh, C.-H. & Connelly, A. MRtrix3: A fast, flexible and open software framework for medical image processing and visualisation. NeuroImage, 2019, 202, 116137 diff --git a/docs/reference/config_file_options.rst b/docs/reference/config_file_options.rst index 50529c797c..0ebb3f1a91 100644 --- a/docs/reference/config_file_options.rst +++ b/docs/reference/config_file_options.rst @@ -675,6 +675,13 @@ List of MRtrix3 configuration file options Linear registration: smallest gradient descent step measured in fraction of a voxel at which to stop registration. +.. option:: SIFT2DefaultUnits + + *default: "mm^2"* + + A string indicating the units of the streamline weights + yielded by the tcksift2 command. + .. option:: ScriptScratchDir *default: `.`* diff --git a/src/dwi/tractography/SIFT/track_index_range.h b/src/dwi/tractography/SIFT/track_index_range.h index 448d7bd764..d73a3ba1f9 100644 --- a/src/dwi/tractography/SIFT/track_index_range.h +++ b/src/dwi/tractography/SIFT/track_index_range.h @@ -17,6 +17,7 @@ #pragma once #include "dwi/tractography/SIFT/types.h" +#include "thread_queue.h" #include "progressbar.h" namespace MR::DWI::Tractography::SIFT { diff --git a/src/dwi/tractography/SIFT/types.h b/src/dwi/tractography/SIFT/types.h index 3c24e149f0..67cc4c6f09 100644 --- a/src/dwi/tractography/SIFT/types.h +++ b/src/dwi/tractography/SIFT/types.h @@ -16,8 +16,6 @@ #pragma once -#include "thread_queue.h" - namespace MR::DWI::Tractography::SIFT { using track_t = unsigned int; diff --git a/src/dwi/tractography/SIFT2/tckfactor.cpp b/src/dwi/tractography/SIFT2/tckfactor.cpp index 213f3c8f7e..79f59aae9b 100644 --- a/src/dwi/tractography/SIFT2/tckfactor.cpp +++ b/src/dwi/tractography/SIFT2/tckfactor.cpp @@ -349,7 +349,7 @@ void TckFactor::report_entropy() const { str(equiv_N) + " equally-weighted streamlines"); } -void TckFactor::output_factors(const std::string &path) const { +void TckFactor::output_factors(const std::string &path, const units_t units) const { if (size_t(coefficients.size()) != contributions.size()) throw Exception("Cannot output weighting factors if they have not first been estimated!"); decltype(coefficients) weights; @@ -359,9 +359,18 @@ void TckFactor::output_factors(const std::string &path) const { WARN("Unable to assign memory for output factor file: \"" + Path::basename(path) + "\" not created"); return; } + default_type units_multiplier = 0.0; + switch (units) { + case units_t::NOS: units_multiplier = 1.0; break; + case units_t::AFDpermm: units_multiplier = mu(); break; + case units_t::mm2: units_multiplier = mu() * header().spacing(0) * header().spacing(1) * header().spacing(2); break; + } for (SIFT::track_t i = 0; i != num_tracks(); ++i) weights[i] = (coefficients[i] == min_coeff || !std::isfinite(coefficients[i])) ? 0.0 : std::exp(coefficients[i]); - File::Matrix::save_vector(weights, path); + KeyValues keyval; + keyval["SIFT_mu"] = str(mu()); + keyval["Units"] = units2str(units); + File::Matrix::save_vector(units_multiplier * weights, path, keyval); } void TckFactor::output_coefficients(const std::string &path) const { File::Matrix::save_vector(coefficients, path); } diff --git a/src/dwi/tractography/SIFT2/tckfactor.h b/src/dwi/tractography/SIFT2/tckfactor.h index 6e831d1329..3a1c16c736 100644 --- a/src/dwi/tractography/SIFT2/tckfactor.h +++ b/src/dwi/tractography/SIFT2/tckfactor.h @@ -29,6 +29,7 @@ #include "dwi/tractography/SIFT/output.h" #include "dwi/tractography/SIFT2/fixel.h" +#include "dwi/tractography/SIFT2/units.h" #define SIFT2_REGULARISATION_TIKHONOV_DEFAULT 0.0 #define SIFT2_REGULARISATION_TV_DEFAULT 0.1 @@ -88,7 +89,7 @@ class TckFactor : public SIFT::Model { void report_entropy() const; - void output_factors(const std::string &) const; + void output_factors(const std::string &, const units_t) const; void output_coefficients(const std::string &) const; void output_TD_images(const std::string &, const std::string &, const std::string &) const; diff --git a/src/dwi/tractography/SIFT2/units.cpp b/src/dwi/tractography/SIFT2/units.cpp new file mode 100644 index 0000000000..f56225bf89 --- /dev/null +++ b/src/dwi/tractography/SIFT2/units.cpp @@ -0,0 +1,46 @@ +/* Copyright (c) 2008-2024 the MRtrix3 contributors. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Covered Software is provided under this License on an "as is" + * basis, without warranty of any kind, either expressed, implied, or + * statutory, including, without limitation, warranties that the + * Covered Software is free of defects, merchantable, fit for a + * particular purpose or non-infringing. + * See the Mozilla Public License v. 2.0 for more details. + * + * For more details, see http://www.mrtrix.org/. + */ + +#include "dwi/tractography/SIFT2/units.h" + +#include "exception.h" +#include "mrtrix.h" + +namespace MR::DWI::Tractography::SIFT2 { + +extern const char* const units_choices[] = { "NOS", "none", "AFD/mm", "AFD.mm-1", "AFD.mm^-1", "mm2", "mm^2", nullptr }; + +units_t str2units(const std::string& s) { + const std::string slower = lowercase(s); + if (slower == "nos" || slower == "none") + return units_t::NOS; + if (slower == "afd/mm" || slower == "afd.mm-1" || slower == "afd.mm^-1") + return units_t::AFDpermm; + if (slower == "mm2" || slower == "mm^2") + return units_t::mm2; + throw Exception("Unable to convert string \"" + s + "\" to SIFT2 streamline weight units"); +} + +std::string units2str(units_t units) { + switch (units) { + case units_t::NOS: return "NOS"; + case units_t::AFDpermm: return "AFD/mm"; + case units_t::mm2: return "mm^2"; + } + throw Exception("Unexpected units provided to SIFT2::units2str()"); +} + +} // namespace MR::DWI::Tractography::SIFT2 diff --git a/src/dwi/tractography/SIFT2/units.h b/src/dwi/tractography/SIFT2/units.h new file mode 100644 index 0000000000..21ae0a2185 --- /dev/null +++ b/src/dwi/tractography/SIFT2/units.h @@ -0,0 +1,32 @@ +/* Copyright (c) 2008-2024 the MRtrix3 contributors. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Covered Software is provided under this License on an "as is" + * basis, without warranty of any kind, either expressed, implied, or + * statutory, including, without limitation, warranties that the + * Covered Software is free of defects, merchantable, fit for a + * particular purpose or non-infringing. + * See the Mozilla Public License v. 2.0 for more details. + * + * For more details, see http://www.mrtrix.org/. + */ + +#pragma once + +#include + +namespace MR::DWI::Tractography::SIFT2 { + +extern const char* const units_choices[]; + +enum class units_t { NOS, AFDpermm, mm2 }; + +constexpr units_t default_units = units_t::mm2; + +units_t str2units(const std::string&); +std::string units2str(units_t); + +} // namespace MR::DWI::Tractography::SIFT2 diff --git a/testing/binaries/CMakeLists.txt b/testing/binaries/CMakeLists.txt index f7bfb23400..b2fa41efda 100644 --- a/testing/binaries/CMakeLists.txt +++ b/testing/binaries/CMakeLists.txt @@ -404,6 +404,7 @@ add_bash_binary_test(tcksample/tdifraction) add_bash_binary_test(tcksift/default) add_bash_binary_test(tcksift2/default) +add_bash_binary_test(tcksift2/units) add_bash_binary_test(tcktransform/unitwarp) diff --git a/testing/binaries/tests/tcksift2/units b/testing/binaries/tests/tcksift2/units new file mode 100644 index 0000000000..3b47ef818a --- /dev/null +++ b/testing/binaries/tests/tcksift2/units @@ -0,0 +1,28 @@ +#!/bin/bash +# Verify manipulation of the units of the output SIFT2 weights + +# 1. If the streamline weights are of units AFD/mm, +# then if one takes for each voxel, +# for every streamline the product of the streamline weight and the length of the intersection, +# and sum these across all streamlines intersecting that voxel, +# then the result should be close to the AFD of that voxel + +tcksift2 SIFT_phantom/tracks.tck SIFT_phantom/fods.mif tmp.csv -proc_mask SIFT_phantom/mask.mif -units AFD/mm -force +# Zero out the streamlines density outside of the bundles; we don't want those to contribute to the difference calculation +tckmap SIFT_phantom/tracks.tck -template SIFT_phantom/mask.mif -precise -tck_weights_in tmp.csv - | \ +mrcalc - SIFT_phantom/mask.mif -mult tmp_AFD_tractogram.mif -force +fixel2voxel SIFT_phantom/fixels/fd.mif sum tmp_AFD_fixels.mif -force +testing_diff_image tmp_AFD_tractogram.mif tmp_AFD_fixels.mif -abs 0.1 + +# 2. The SIFT phantom has a voxel size of 2mm^3. +# If you take the AFD in a fixel and multiply it by the voxel volume, +# you get the total fibre volume represented by that fixel in mm^3. +# If your streamline weights are in mm^2, +# and you sum the products of these weights with the voxel intersection lengths, +# you get a tractogram-based reconstructed fibre volume in mm^3. +tcksift2 SIFT_phantom/tracks.tck SIFT_phantom/fods.mif tmp.csv -proc_mask SIFT_phantom/mask.mif -units mm^2 -force +tckmap SIFT_phantom/tracks.tck -template SIFT_phantom/mask.mif -precise -tck_weights_in tmp.csv - | \ +mrcalc - SIFT_phantom/mask.mif -mult tmp_mm3_tractogram.mif -force +fixel2voxel SIFT_phantom/fixels/fd.mif sum - | \ +mrcalc - 8.0 -mult tmp_mm3_fixels.mif -force +testing_diff_image tmp_mm3_tractogram.mif tmp_mm3_fixels.mif -frac 0.1 From 6cacd2720d54a5568c06bef3ad38425e6d008391 Mon Sep 17 00:00:00 2001 From: Robert Smith Date: Mon, 5 Aug 2024 16:02:08 +1000 Subject: [PATCH 2/2] Docs: Initial work on normalisation page --- cmd/tcksift2.cpp | 2 + docs/concepts/afd_connectivity.rst | 15 +- .../connection_density_normalisation.rst | 389 ++++++++++++++++++ .../after.png} | Bin .../before.png} | Bin .../labelconvert_tutorial.rst | 4 +- .../normalisation/AFD_sum.png | Bin 0 -> 32592 bytes .../normalisation/wmfod_l0.png | Bin 0 -> 37062 bytes .../normalisation/wmfod_scaled.png | Bin 0 -> 39593 bytes src/dwi/tractography/SIFT/sift.cpp | 3 +- 10 files changed, 403 insertions(+), 10 deletions(-) create mode 100644 docs/quantitative_structural_connectivity/connection_density_normalisation.rst rename docs/quantitative_structural_connectivity/{labelconvert_after.png => labelconvert/after.png} (100%) rename docs/quantitative_structural_connectivity/{labelconvert_before.png => labelconvert/before.png} (100%) create mode 100644 docs/quantitative_structural_connectivity/normalisation/AFD_sum.png create mode 100644 docs/quantitative_structural_connectivity/normalisation/wmfod_l0.png create mode 100644 docs/quantitative_structural_connectivity/normalisation/wmfod_scaled.png diff --git a/cmd/tcksift2.cpp b/cmd/tcksift2.cpp index 06393c07c5..7691269b6e 100644 --- a/cmd/tcksift2.cpp +++ b/cmd/tcksift2.cpp @@ -318,6 +318,8 @@ void run() { opt = get_options("out_mu"); if (!opt.empty()) { + CONSOLE("Note that while \"-out_mu\" option remains available, " + "value of proportionality coefficient is also available in output file header comments"); File::OFStream out_mu(opt[0][0]); out_mu << tckfactor.mu(); } diff --git a/docs/concepts/afd_connectivity.rst b/docs/concepts/afd_connectivity.rst index cdd3e2d476..9042ab81fd 100644 --- a/docs/concepts/afd_connectivity.rst +++ b/docs/concepts/afd_connectivity.rst @@ -1,18 +1,19 @@ +.. _motivation_for_afdconnectivity: + Motivation for ``afdconnectivity`` ================================== .. NOTE:: - A `preprint `_ has now been uploaded, which - expands on the concepts within this page with figures and greater detail, - and includes explanation of the newer SIFT2 method available in command - :ref:`tcksift2`. Readers may find it more informative and up-to-date than - the content of this documentation page. + A published journal article expands on the concepts within this page + with figures and greater detail [Smith2022]_; + readers may find it more informative and up-to-date + than the content of this documentation page. Due to the interest in the :ref:`afdconnectivity` command, I thought I'd explain the reasoning behind the approach, the rationale behind the -improvements made in commit -`40ccdb62 `_, +improvements made in commit +`40ccdb62 `_, and the argument for why we recommend the use of :ref:`sift` as an alternative if possible. diff --git a/docs/quantitative_structural_connectivity/connection_density_normalisation.rst b/docs/quantitative_structural_connectivity/connection_density_normalisation.rst new file mode 100644 index 0000000000..ba4db26625 --- /dev/null +++ b/docs/quantitative_structural_connectivity/connection_density_normalisation.rst @@ -0,0 +1,389 @@ +.. _connection_density_normalisation: + +Inter-subject connection density normalisation +============================================== + +The SIFT [Smith2013]_ and SIFT2 [Smith2015]_ methods were originally advertised +as addressing the issue where the number of streamlines reconstructed +for different bundles within a brain were not concordant with the underlying +densities of white matter fibres constituting those connections. +What was not initially described in those manuscripts was the way in which +these methods could be used to perform meaningful comparison +of the densities of a given white matter bundle *between* individuals. + +More recently, a manuscript [Smith2022]_ has been published that: + +- *Defines* the "Fibre Bundle Capacity (FBC)" metric for performing such comparisons; +- Explains on a conceptual level *why* this is a suitable metric for inter-subject comparisons; +- Explains the quantitative corrections necessary to achieve this + "*inter-subject connection density normalisation*"; +- Shows the *relationship* between the SIFT and SIFT2 methods + and the older ``afdconnectivity`` command + (for which an older documentation page can be found here_). + +The purpose of this documentation page is to give a more pragmatic explanation +of how to obtain the desired quantitative properties +when performing quantitative structural connectivity. + +Global intensity normalisation for Apparent Fibre Density (AFD) +--------------------------------------------------------------- + +The SIFT(2) commands currently accept as input a white matter FOD image, +and computes fixel-wise AFD values from that image. +As such, any subsequent calculations relating to overall scaling of connection density +are intrinsically dependent on the scaling of AFD. +The topic of global intensity normalisation is explained in greater detail here_. + +For the vast majority of software users, +the simplest way to deal with these confounds +is to use the same approach as that of the Fixel-Based Analysis (FBA) pipeline +for the analysis of AFD: + +- Use the same response function(s) for every participant. + +- Perform global intensity normalisation of DWI data. + This is most commonly achieved through the ``mtnormalise`` command, + which applies the requisite scaling to the previously estimated Orientation Distribution Function(s) (ODFs) + rather than the DWI data directly. + Command ``dwibiasnormmask`` achieves a similar goal + (indeed its internal operation is driven primarily by ``mtnormalise``), + but differs in that: + - It applies intensity normalisation to the DWI data directly + rather than just the resulting ODFs; + - The "reference" that is used to modulate the global image intensity + is not that which achieves close to unity sum of tissue ODFs, + but rather the b=0 signal intensity in CSF. + The ``dwibiasnormmask`` command is discussed in more detail here_. + +# TODO Move dwibiasnormmask out of the DWI masking page and into its own page + +SIFT and the proportionality coefficient $mu$ +--------------------------------------------- + +Within the SIFT model, +parameter $/mu$ provides a global scaling factor +that facilitates direct comparison between streamlines density and AFD. +As explained in the more recent manuscript [Smith2022]_, +this parameter has units of AFD/mm: +this is the fibre volume contributed by the streamline per unit length. +Further, the physical dimensions of this parameter are $L2$: a cross-section. + +The following suggestions apply to the ``tcksift`` command: + +- If DWI data for all participants possess the same spatial resolution, + then multiplying streamline counts by the value that parameter $/mu$ takes + *at the completion of filtering* + is recommended. + This will appropriately correct for inter-subject global differences in tractogram density + (which can occur even if the *number* of streamlines is equivalent) + and/or typical fibre densities within the WM. + +- If DWI data have different spatial resolutions between different participants / reconstructions, + then it is recommended to multiply streamline counts by *both* parameter $/mu$ + *and* the volume of the DWI voxels in $mm3$. + +SIFT2 and the units of streamline weights +----------------------------------------- + +Because the ``tcksift2`` command exports a set of streamline weights +rather than a modified tractogram, +it is possible for the software to include or exclude such scaling factors in that output. +The interface for doing so involves setting the *units* of the output weights. +What follows is an explanation of the relationship between the choice of these units, +and what quantitative properties the resulting data will have. + +SIFT2 operation +^^^^^^^^^^^^^^^ + +Unlike ``tcksift``, in ``tcksift2`` the value of $/mu$ *does not change*. + +One consequence of determining the initial scaling via this parameter +is that when every streamline is initialised with a naive weight of 1.0, +the sum of squared differences between tractogram and fibre densities +should be close to the minimum achievable in the absence of per-streamline weighting. +As SIFT2 performs its optimisation, +different streamlines will take weights that are greater or lesser than 1.0, +but as a whole they will remain distributed approximately around 1.0. +For the purpose of this article I will refer to this as the *native scaling* of the streamline weights: +this is the form in which the optimisation of the streamline weights is performed; +any subsequent scaling of these weights is performed *only* at the export stage. + +SIFT2 units & scaling factors +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The relevant software interface for modifying the normalisation behaviour of SIFT2 +involves setting the *units* of the output streamline weights. +The relationship between these choices of units, +and what scaling factors are applied to the data, +are as follows: + +- "*Number of Streamlines (NoS)*": + The streamline weights are written to file with their native scaling. + Since these weights are naturally distributed approximately around unity, + subsequent quantitative data derived from these weights will have approximately + the same overall scaling as would a naive number-of-streamlines measure + using the same tractogram. + +- "*AFD/mm*": + The streamline weights written to file are pre-multiplied by the value of the + proportionality coefficient $/mu$. + This therefore duplicates the internal scaling that is used by the SIFT model + when comparing, for any given fixel, + the tractogram density to the AFD ascribed to that fixel. + +- "*mm2*": + The streamline weights written to file are multiplied *both* by the value of $/mu$ + *and* by the volume of the image voxel in $mm3$. + While this quantification is not used internally by either SIFT command, + it is the preferred units for quantification of FBC + given that it is independent of the resolution of the FOD grid + and therefore provides robust scaling even if different subjects + have DWI data of different spatial resolutions. + + Note that while this choice purports to yield physical units, + and therefore one may be tempted to infer that there may have ben physical constraints + imposed upon the tractogram, + this interpretation is made with some liberty. + To achieve the export of data in these units, + the AFD of each fixel is interpreted as a voxel partial volume, + such that the product of the AFD and the voxel size yields an absolute fibre volume in $mm2$. + This is somewhat contrary to the fact that the AFD measure is not constrained to be no greater than 1.0. + It is therefore entirely possible for the tractogram density within an image voxel + (computed as, for every streamline, the product of the streamline weight and the length of the streamline-voxel intersection, + summed across all intersecting streamlines) + to be greater than the physical volume of that voxel. + +SIFT & SIFT2 units / scaling demonstration +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +In this section, +I present data intended to demonstrate exactly what the data look like +under different use cases, +and contrast the relative global scaling of different quantitative parameters +between those use cases. + +This first set of images are data that apply to all reconstruction / normalisation approaches. + +1. WM *l*=0 image + + .. figure:: normalisation/wmfod_l0.png + :alt: normalisation\_wmfod_lzero + + Note that the intensity of this image in the middle of the white matter + is an unintuitive value of approximately 0.28; + this corresponds to $1//sqrt(4*pi)$ (0.282095), + and arises due to the spherical harmonic basis of the FOD. + +2. WM *l*=0 image x sqrt(4pi) + + .. figure:: normalisation/wmfod_scaled.png + :alt: normalisation\_wmfod_scaled + + This image was generated using the following command, + where "``wmfod_norm.mif``" is the image displayed in point 1. above:: + + mrcalc 4.0 pi -mult -sqrt wmfod_norm.mif -mult wmfod_norm_scaled.mif + + By explicitly multiplying the white matter ODF *l*=0 term by sqrt(4pi), + one obtains an image where the intensity in voxels containing only WM + should be approximately 1.0. + While this is technically not a signal or volume *fraction*, + given that it is not explicitly constrained to not exceed unity, + these data are nevertheless similar in both interpretation and scale + to the concept of fibre volume fractions. + +3. Voxel-wise sum of fixel AFDs + + .. figure:: normalisation/afd_sum.png + :alt: normalisation\_afd_sum + + This image shows, for each voxel, + the *sum* of Apparent Fibre Densities (AFD) + for all fixels within that voxel. + This was computed using the following:: + + fod2fixel wmfod_norm.mif fixels/ -afd afd.mif + fixel2voxel fixels/afd.mif sum fixels/afdsum.mif + + Important features of this image are as follows: + + - The overall intensity scaling of this image + is close to that of the image shown in point 2. above. + This is due to calibration of the algorithm that performs segmentation of the FODs + (as described in Appendix 2 of [Smith2013]_). + For an image voxel where the DWI signal is equivalent to the WM response function, + segmentation of the resulting FOD should yield a single FOD lobe, + for which numerical integration of that lobe yields an AFD for that fixel of 1.0. + + - The brightness of this image is however almost exclusively less than that + of the image associated with point 2. above. + This is because the segmentation of FODs into fixels + can only *remove* AFD as a consequence of FOD lobes failing to satisfy + the thresholds imposed in order to survive as fixels. + Indeed, the only way for this image to be brighter + is if the FOD contains directions with negative amplitudes, + for which the corresponding negative-AFD lobes will be excluded from the fixel output. + + - This image is slightly noisier than that in point 2. above. + While the DWI signal intensity that is attributed to the WM FOD + is relatively consistent and smooth between adjacent voxels, + it is possible for the thresholds associated with FOD segmentation + to yield different results between adjacent voxels + (eg. both possess an FOD lobe in a similar direction, + but that lobe is supra-threshold in one voxel but sub-threshold in the other). + As such, it is generally suggested to use the WM *l*=0 term + to encode the estimated total Apparent Fibre Density [Calamante2015]_. + +Case 1: Unmodified tractogram +""""""""""""""""""""""""""""" + +Here, the "unmodified tractogram" is defined as a tractogram where, +while the SIFT model has been *imposed*, +no tractogram modification in order to *optimise* that model has been performed. + +1. Tractogram weights: + + ``[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ...]`` + + ie. All streamlines contribute equally to one another; + an uninformative weight of unity is inferred, + as is used for initialisation for the SIFT2 method. + +2. Proportionality coefficient (AFD/mm): + # TODO + +3. Tractogram density maps: + # TODO + # Consider doing: + # - Without -precise + # - With -precise + # - With -precise & multiplying by mu + # - Comparison against AFD sum + Note the display scaling in this image; + because of the number of streamlines reconstructed, + WM voxels contain values that are orders of magnitude greater + than those images previously presented. + +4. Connectomes: + # TODO + # - Without modulation; ie. literally streamline count + # - With modulation by mu + +Case 2: Tractogram filtered using SIFT +"""""""""""""""""""""""""""""""""""""" + +1. Tractogram weights: + + ``[0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, ...]`` + + The primary interface of the ``tcksift`` command + involves export of a new tractogram file + that contains only the set of streamlines retained. + This can however be equivalently expressed as a vector of weights, + one value per streamline, + with values of 1 for retained streamlines and 0 for removed streamlines + (this information can be accessed using ``tcksift -out_selection``). + This conceptualisation better harmonises the operation of the original SIFT method [Smith2013]_ + with subsequent related methods + as well as the overarching logic presented in this document. + +2. Proportionality coefficient (AFD/mm): + # TODO + Note that the value here is greater in magnitude than that of case 1. + This is due to the design of the SIFT algorithm: + as streamlines are removed from the tractogram, + the proportionality coefficient is increased in proportion to that removal + in order for the global scaling between tractogram and fibre densities to remain valid. + This also preserves the capability for interpreting the outcomes of the SIFT method + as a vector of ones and zeroes corresponding to preserved and removed streamlines + as per point 1 above. + +3. Tractogram density maps: + # TODO + # - Without normalisation; is. NoS + # - With normalisation + + - For these density maps, + there are two different ways in which this can be achieved. + The logical approach is to provide as input to the ``tckmap`` command + the filtered tractogram that is created by the ``tcksift`` command. + The equivalent effect can however be obtained by providing + the comprehensive tractogram to the ``tckmap`` command, + but then providing the output of the ``tcksift -out_selection`` + as input via the ``-tck_weights_in`` option. + This causes retained streamlines to contribute to the density map with a value of 1, + and removed streamlines to not contribute to the density map + (given their ascribed weight of 0). + + - Note that for the unmodulated tractogram, + the overall intensity of the image is around an order of magnitude less + than the unmodified (& unmodulated) tractogram shown in Case 1 above; + this is the result of the removal of streamlines by the SIFT method. + The intensity of this image is however nevertheless reflective of + the "number of streamlines" as a density metric. + + - The modulated tractogram shows a density map with an overall intensity + that is comparable to the sum of AFD per voxel from the diffusion model. + This highlights the importance of use of the value of the proportionality coefficient + *at completion of filtering* + to achieve the appropriate intensity normalisation. + +4. Connectomes: + # TODO + # - Without modulation; ie. literally streamline count + # - With modulation + +Case 3: SIFT2 with units "Number of Streamlines (NoS)" +"""""""""""""""""""""""""""""""""""""""""""""""""""""" + +1. Tractogram weights: + + # TODO Weights in "native" units + + As described earlier, + these exported streamline weights possess the "native" scaling + upon which the SIFT2 optimisation is performed. + While these data do not literally represent a "number" of streamlines, + given that each individual streamline contributes some real numerical value, + + + + + +# TODO: +For each of [Before SIFT, After SIFT, No SIFT2, SIFT2 w. NoS units, SIFT2 w. AFD/mm units, SIFT2 w. mm^2 units]: + Show head of streamline weights file (or list of 1's in the No SIFT2 case / 0's & 1's in the SIFT case?) + Show TDI; compare to appropriately scaled WM ODF l=0, fixel AFDs? + Show connectome matrix; highlight scale + +Could generate lobar 8x8 connectomes? & lower spatial resolution image data? + +The following series of images exemplify the quantitative behaviour +of measures commonly derived from tractograms following either SIFT method. +Particular attention should be paid to the relative scales of colour bars, +as these assist in communicating any global differences in intensities. + +WM l=0 +WM l=0 * sqrt(4pi) +Voxel-wise sum of fixel AFDs + + Tractogram modulation Proportionality coefficient (AFD/mm) Tractogram density map Explicitly modulated tractogram density map Connectome Explicitly modulated connectome +Before SIFT: column of 1's, init_mu, tractogram density, tractogram density * init_mu, connectome connectome * mu +After SIFT: column of 1's and 0's, final_mu, tractogram density, tractogram density * final_mu, connectome connectome * mu +SIFT2 NoS: column of native weights, mu, weighted tractogram density, weighted tractogram density * mu, weighted connectome weighted connectome * mu +SIFT2 AFD/mm: column of scaled weights, mu, weighted tractogram density, N/A, scaled connectome N/A +SIFT2 mm^2: column of scaled weights, mu, weighted tractogram density, N/A, scaled connectome N/A + +Notes: + +- As noted in the relevant manuscript [Smith2022]_, + the removal of streamlines by the SIFT method is mathematically equivalent + to setting the per-streamline weights in the SIFT2 model to 1.0 for retained streamlines + and 0.0 for removed streamlines. + While this may not be reflected in the interface of the ``tcksift`` command, + whose output is a tractogram file containing only the retained streamlines, + this particular interpretation is nevertheless beneficial in this context. + +- For SIFT2 units mm^2, + the difference in scaling + diff --git a/docs/quantitative_structural_connectivity/labelconvert_after.png b/docs/quantitative_structural_connectivity/labelconvert/after.png similarity index 100% rename from docs/quantitative_structural_connectivity/labelconvert_after.png rename to docs/quantitative_structural_connectivity/labelconvert/after.png diff --git a/docs/quantitative_structural_connectivity/labelconvert_before.png b/docs/quantitative_structural_connectivity/labelconvert/before.png similarity index 100% rename from docs/quantitative_structural_connectivity/labelconvert_before.png rename to docs/quantitative_structural_connectivity/labelconvert/before.png diff --git a/docs/quantitative_structural_connectivity/labelconvert_tutorial.rst b/docs/quantitative_structural_connectivity/labelconvert_tutorial.rst index 47c06df759..838556c872 100644 --- a/docs/quantitative_structural_connectivity/labelconvert_tutorial.rst +++ b/docs/quantitative_structural_connectivity/labelconvert_tutorial.rst @@ -20,7 +20,7 @@ Desikan-Killiany atlas. The default FreeSurfer pipeline provides the volumetric image aparc+aseg.mgz; this is the file that will be used to define the nodes of our connectome. -.. figure:: labelconvert_before.png +.. figure:: labelconvert/before.png :alt: labelconvert\_before Looking at the raw image itself, each node possesses a particular @@ -103,7 +103,7 @@ This is what the actual command call looks like: And this is what the resulting image looks like: -.. figure:: labelconvert_after.png +.. figure:: labelconvert/after.png :alt: labelconvert\_after The integer labels of the underlying grey matter parcels have been diff --git a/docs/quantitative_structural_connectivity/normalisation/AFD_sum.png b/docs/quantitative_structural_connectivity/normalisation/AFD_sum.png new file mode 100644 index 0000000000000000000000000000000000000000..a96da98d74afd0f03a83bc41e1f756639c45f200 GIT binary patch literal 32592 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 Kso;*;v;PO{dgglo literal 0 HcmV?d00001 diff --git a/docs/quantitative_structural_connectivity/normalisation/wmfod_l0.png b/docs/quantitative_structural_connectivity/normalisation/wmfod_l0.png new file mode 100644 index 0000000000000000000000000000000000000000..3538f67eeef5a6ee29e55eee90785e46cb6b2baa GIT binary patch literal 37062 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 BzaIbq literal 0 HcmV?d00001 diff --git a/src/dwi/tractography/SIFT/sift.cpp b/src/dwi/tractography/SIFT/sift.cpp index 48ccf5879c..557a829afd 100644 --- a/src/dwi/tractography/SIFT/sift.cpp +++ b/src/dwi/tractography/SIFT/sift.cpp @@ -58,7 +58,8 @@ const OptionGroup SIFTOutputOption = "output statistics of execution per iteration to a .csv file") + Argument("file").type_file_out() + Option("out_mu", - "output the final value of SIFT proportionality coefficient mu to a text file") + "output the final value of SIFT proportionality coefficient mu to a text file" + " (note: also available in output file headers)") + Argument("file").type_file_out() + Option("output_debug", "write to a directory various output images for assessing & debugging performance etc.")