diff --git a/scripts/scil_gradients_validate_sampling.py b/scripts/scil_gradients_validate_sampling.py index 000f03775..73c5640a2 100644 --- a/scripts/scil_gradients_validate_sampling.py +++ b/scripts/scil_gradients_validate_sampling.py @@ -24,6 +24,13 @@ optimal b-vectors on a single shell and then saves them as png. Use one or the other, not both. For more options on visualization, please use scil_viz_gradients_screenshot.py. +------------------------------------------------------------------------------ +Reference: +[1] Emmanuel Caruyer, Christophe Lenglet, Guillermo Sapiro, + Rachid Deriche. Design of multishell gradient sampling with uniform coverage + in diffusion MRI. Magnetic Resonance in Medicine, Wiley, 2013, 69 (6), + pp. 1534-1540. +------------------------------------------------------------------------------ """ import argparse @@ -45,21 +52,14 @@ from scilpy.gradients.gen_gradient_sampling import (generate_gradient_sampling, energy_comparison) from scilpy.viz.gradients import (plot_proj_shell, build_ms_from_shell_idx) - - -EPILOG = """ -References: [1] Emmanuel Caruyer, Christophe Lenglet, Guillermo Sapiro, -Rachid Deriche. Design of multishell gradient sampling with uniform coverage -in diffusion MRI. Magnetic Resonance in Medicine, Wiley, 2013, 69 (6), -pp. 1534-1540. - """ +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser( - formatter_class=argparse.RawTextHelpFormatter, - description=__doc__, - epilog=EPILOG) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) + p.add_argument('in_gradients', nargs='+', help='Path(s) to the gradient file(s). Either FSL ' '(.bval, .bvec) or MRtrix (.b).') diff --git a/scripts/scil_plot_stats_per_point.py b/scripts/scil_plot_stats_per_point.py index 777bce27d..3179f465b 100755 --- a/scripts/scil_plot_stats_per_point.py +++ b/scripts/scil_plot_stats_per_point.py @@ -22,11 +22,14 @@ assert_output_dirs_exist_and_empty, add_verbose_arg) from scilpy.viz.plot import plot_metrics_stats +from scilpy.version import version_string def _build_arg_parser(): p = argparse.ArgumentParser(description=__doc__, - formatter_class=argparse.RawTextHelpFormatter) + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) + p.add_argument('in_json', help='JSON file containing the mean/std per point. For ' 'example, can be created using ' diff --git a/scripts/scil_qball_metrics.py b/scripts/scil_qball_metrics.py index 7e5584a99..9c2320f85 100755 --- a/scripts/scil_qball_metrics.py +++ b/scripts/scil_qball_metrics.py @@ -39,14 +39,17 @@ assert_inputs_exist, assert_outputs_exist, parse_sh_basis_arg, validate_nbr_processes, assert_headers_compatible) +from scilpy.version import version_string DEFAULT_SMOOTH = 0.006 def _build_arg_parser(): - p = argparse.ArgumentParser( - description=__doc__, formatter_class=argparse.RawTextHelpFormatter) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) + p.add_argument('in_dwi', help='Path of the input diffusion volume.') p.add_argument('in_bval', diff --git a/scripts/scil_rgb_convert.py b/scripts/scil_rgb_convert.py index 10b6921fe..f16c5d376 100755 --- a/scripts/scil_rgb_convert.py +++ b/scripts/scil_rgb_convert.py @@ -30,12 +30,13 @@ from scilpy.io.utils import (add_overwrite_arg, assert_inputs_exist, assert_outputs_exist, add_verbose_arg) +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser( - formatter_class=argparse.RawTextHelpFormatter, - description=__doc__) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_image', help='name of input RGB image.\n' + diff --git a/scripts/scil_search_keywords.py b/scripts/scil_search_keywords.py index 71ad5f543..533c107c5 100755 --- a/scripts/scil_search_keywords.py +++ b/scripts/scil_search_keywords.py @@ -64,11 +64,13 @@ ) from scilpy.utils.scilpy_bot import SPACING_LEN, VOCAB_FILE_PATH from scilpy.io.utils import add_verbose_arg +from scilpy.version import version_string def _build_arg_parser(): p = argparse.ArgumentParser(description=__doc__, - formatter_class=argparse.RawTextHelpFormatter) + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('expressions', nargs='+', help='Search the provided list of expressions.\n' diff --git a/scripts/scil_sh_convert.py b/scripts/scil_sh_convert.py index c817b1aaf..e7137dc4b 100755 --- a/scripts/scil_sh_convert.py +++ b/scripts/scil_sh_convert.py @@ -23,11 +23,13 @@ add_processes_arg, add_verbose_arg, assert_inputs_exist, assert_outputs_exist, parse_sh_basis_arg) +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter, - description=__doc__) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_sh', help='Input SH filename. (nii or nii.gz)') diff --git a/scripts/scil_sh_fusion.py b/scripts/scil_sh_fusion.py index ced8acdd8..4701ba4d7 100755 --- a/scripts/scil_sh_fusion.py +++ b/scripts/scil_sh_fusion.py @@ -12,6 +12,18 @@ Based on [1] and [2]. Formerly: scil_merge_sh.py +--------------------------------------------------------------------------------- +References: +[1] Garyfallidis, E., Zucchelli, M., Houde, J-C., Descoteaux, M. + How to perform best ODF reconstruction from the Human Connectome + Project sampling scheme? + ISMRM 2014. + +[2] Khachaturian, M. H., Wisco, J. J., & Tuch, D. S. (2007). Boosting the + sampling efficiency of q‐ball imaging using multiple wavevector fusion. + Magnetic Resonance in Medicine: An Official Journal of the International + Society for Magnetic Resonance in Medicine, 57(2), 289-296. +--------------------------------------------------------------------------------- """ import argparse @@ -23,25 +35,13 @@ from scilpy.io.image import assert_same_resolution from scilpy.io.utils import (add_overwrite_arg, assert_inputs_exist, assert_outputs_exist, add_verbose_arg) - - -EPILOG = """ -Reference: -[1] Garyfallidis, E., Zucchelli, M., Houde, J-C., Descoteaux, M. - How to perform best ODF reconstruction from the Human Connectome - Project sampling scheme? - ISMRM 2014. - -[2] Khachaturian, M. H., Wisco, J. J., & Tuch, D. S. (2007). Boosting the - sampling efficiency of q‐ball imaging using multiple wavevector fusion. - Magnetic Resonance in Medicine: An Official Journal of the International - Society for Magnetic Resonance in Medicine, 57(2), 289-296. -""" +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter, - description=__doc__, epilog=EPILOG) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_shs', nargs="+", help='List of SH files.') diff --git a/scripts/scil_sh_to_aodf.py b/scripts/scil_sh_to_aodf.py index 48c4cbb53..46306d198 100755 --- a/scripts/scil_sh_to_aodf.py +++ b/scripts/scil_sh_to_aodf.py @@ -13,6 +13,16 @@ Make sure you have pyopencl installed before using this option. By default, the OpenCL program will run on the cpu. To use a gpu instead, also specify the option --device gpu. +---------------------------------------------------------------------------------- +References: +[1] Poirier and Descoteaux, 2024, "A Unified Filtering Method for Estimating + Asymmetric Orientation Distribution Functions", Neuroimage, vol. 287, + https://doi.org/10.1016/j.neuroimage.2024.120516 + +[2] Poirier et al, 2021, "Investigating the Occurrence of Asymmetric Patterns + in White Matter Fiber Orientation Distribution Functions", ISMRM 2021 + (abstract 0865) +--------------------------------------------------------------------------------- """ import argparse @@ -28,22 +38,14 @@ assert_inputs_exist, add_sh_basis_args, assert_outputs_exist, parse_sh_basis_arg) from scilpy.denoise.asym_filtering import (cosine_filtering, unified_filtering) - - -EPILOG = """ -[1] Poirier and Descoteaux, 2024, "A Unified Filtering Method for Estimating - Asymmetric Orientation Distribution Functions", Neuroimage, vol. 287, - https://doi.org/10.1016/j.neuroimage.2024.120516 - -[2] Poirier et al, 2021, "Investigating the Occurrence of Asymmetric Patterns - in White Matter Fiber Orientation Distribution Functions", ISMRM 2021 - (abstract 0865) -""" +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser(description=__doc__, epilog=EPILOG, - formatter_class=argparse.RawTextHelpFormatter) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) + p.add_argument('in_sh', help='Path to the input file.') diff --git a/scripts/scil_sh_to_rish.py b/scripts/scil_sh_to_rish.py index c26785604..757680114 100755 --- a/scripts/scil_sh_to_rish.py +++ b/scripts/scil_sh_to_rish.py @@ -13,11 +13,13 @@ Each RISH feature will be saved as a separate file. -[1] Mirzaalian, Hengameh, et al. "Harmonizing diffusion MRI data across -multiple sites and scanners." MICCAI 2015. -https://scholar.harvard.edu/files/hengameh/files/miccai2015.pdf - Formerly: scil_compute_rish_from_sh.py +----------------------------------------------------------------------- +Reference: +[1] Mirzaalian, Hengameh, et al. "Harmonizing diffusion MRI data across + multiple sites and scanners." MICCAI 2015. + https://scholar.harvard.edu/files/hengameh/files/miccai2015.pdf +----------------------------------------------------------------------- """ import argparse import logging @@ -31,11 +33,14 @@ assert_outputs_exist, add_verbose_arg, assert_headers_compatible) from scilpy.reconst.sh import compute_rish +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser( - description=__doc__, formatter_class=argparse.RawTextHelpFormatter) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) + p.add_argument('in_sh', help='Path of the sh image. They can be formatted in any ' 'sh basis, but we \nexpect it to be a symmetrical ' diff --git a/scripts/scil_sh_to_sf.py b/scripts/scil_sh_to_sf.py index 514e1a7b1..7b1f82d0b 100755 --- a/scripts/scil_sh_to_sf.py +++ b/scripts/scil_sh_to_sf.py @@ -29,11 +29,14 @@ assert_inputs_exist, assert_outputs_exist, parse_sh_basis_arg, validate_nbr_processes) from scilpy.reconst.sh import convert_sh_to_sf +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser( - description=__doc__, formatter_class=argparse.RawTextHelpFormatter) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) + p.add_argument('in_sh', help='Path of the SH volume.') p.add_argument('out_sf', diff --git a/scripts/scil_stats_group_comparison.py b/scripts/scil_stats_group_comparison.py index 919f0c8fc..bdede0278 100755 --- a/scripts/scil_stats_group_comparison.py +++ b/scripts/scil_stats_group_comparison.py @@ -56,12 +56,13 @@ get_group_data_sample, visualise_distribution, write_current_dictionnary) +from scilpy.version import version_string def _build_arg_parser(): - - p = argparse.ArgumentParser( - description=__doc__, formatter_class=argparse.RawTextHelpFormatter) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_json', metavar='IN_JSON', help='Input JSON file from tractometry nextflow pipeline' diff --git a/scripts/scil_surface_apply_transform.py b/scripts/scil_surface_apply_transform.py index 7fbde4107..636b54764 100755 --- a/scripts/scil_surface_apply_transform.py +++ b/scripts/scil_surface_apply_transform.py @@ -18,6 +18,11 @@ (aligned over the b0 in MI-Brain). Formerly: scil_apply_transform_to_surface.py. +------------------------------------------------------------------- +Reference: +[1] St-Onge, E., Daducci, A., Girard, G. and Descoteaux, M. 2018. + Surface-enhanced tractography (SET). NeuroImage. +------------------------------------------------------------------- """ import argparse @@ -33,18 +38,13 @@ assert_outputs_exist, load_matrix_in_any_format) from scilpy.surfaces.surface_operations import apply_transform - - -EPILOG = """ -References: -[1] St-Onge, E., Daducci, A., Girard, G. and Descoteaux, M. 2018. - Surface-enhanced tractography (SET). NeuroImage. -""" +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser(description=__doc__, epilog=EPILOG, - formatter_class=argparse.RawTextHelpFormatter) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_moving_surface', help='Input surface (.vtk).') diff --git a/scripts/scil_surface_convert.py b/scripts/scil_surface_convert.py index 303e05de9..253afbe02 100755 --- a/scripts/scil_surface_convert.py +++ b/scripts/scil_surface_convert.py @@ -11,6 +11,11 @@ > scil_surface_convert.py surf.vtk converted_surf.ply Formerly: scil_convert_surface.py +----------------------------------------------------------------- +Reference: +[1] St-Onge, E., Daducci, A., Girard, G. and Descoteaux, M. 2018. + Surface-enhanced tractography (SET). NeuroImage. +----------------------------------------------------------------- """ import argparse import logging @@ -26,17 +31,13 @@ add_verbose_arg, assert_inputs_exist, assert_outputs_exist) - -EPILOG = """ -References: -[1] St-Onge, E., Daducci, A., Girard, G. and Descoteaux, M. 2018. - Surface-enhanced tractography (SET). NeuroImage. -""" +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser(description=__doc__, epilog=EPILOG, - formatter_class=argparse.RawTextHelpFormatter) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_surface', help='Input a surface (FreeSurfer or supported by VTK).') diff --git a/scripts/scil_surface_create.py b/scripts/scil_surface_create.py index 0324502bc..dd97c8392 100755 --- a/scripts/scil_surface_create.py +++ b/scripts/scil_surface_create.py @@ -10,6 +10,11 @@ scil_surface_create.py out_surface.vtk \\ --in_labels s1a1/mask/S1-A1_wmparc.a2009s.nii.gz\\ --list_indices 16:32 --opening 2 --smooth 2 -v +----------------------------------------------------------------- +Reference: +[1] St-Onge, E., Daducci, A., Girard, G. and Descoteaux, M. 2018. + Surface-enhanced tractography (SET). NeuroImage. +----------------------------------------------------------------- """ import argparse @@ -35,17 +40,13 @@ assert_inputs_exist, assert_outputs_exist, ranged_type) - -EPILOG = """ -References: -[1] St-Onge, E., Daducci, A., Girard, G. and Descoteaux, M. 2018. - Surface-enhanced tractography (SET). NeuroImage. -""" +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser(description=__doc__, epilog=EPILOG, - formatter_class=argparse.RawTextHelpFormatter) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) g1 = p.add_argument_group("Input (Labels or Mask)") mxg = g1.add_mutually_exclusive_group(required=True) diff --git a/scripts/scil_surface_flip.py b/scripts/scil_surface_flip.py index 9a8a2f440..9a650e257 100755 --- a/scripts/scil_surface_flip.py +++ b/scripts/scil_surface_flip.py @@ -8,6 +8,11 @@ Can also be used to reverse the orientation of the surface normals. Formerly: scil_flip_surface.py +----------------------------------------------------------------- +Reference: +[1] St-Onge, E., Daducci, A., Girard, G. and Descoteaux, M. 2018. + Surface-enhanced tractography (SET). NeuroImage. +----------------------------------------------------------------- """ import argparse @@ -20,17 +25,13 @@ assert_inputs_exist, assert_outputs_exist) from scilpy.surfaces.surface_operations import flip - -EPILOG = """ -References: -[1] St-Onge, E., Daducci, A., Girard, G. and Descoteaux, M. 2018. - Surface-enhanced tractography (SET). NeuroImage. -""" +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser(description=__doc__, epilog=EPILOG, - formatter_class=argparse.RawTextHelpFormatter) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_surface', help='Input surface (.vtk).') diff --git a/scripts/scil_surface_smooth.py b/scripts/scil_surface_smooth.py index de55814d6..0e7f6a389 100755 --- a/scripts/scil_surface_smooth.py +++ b/scripts/scil_surface_smooth.py @@ -13,6 +13,11 @@ large amount of smoothing [step_size 100, nb_steps 1000] Formerly: scil_smooth_surface.py +----------------------------------------------------------------- +Reference: +[1] St-Onge, E., Daducci, A., Girard, G. and Descoteaux, M. 2018. + Surface-enhanced tractography (SET). NeuroImage. +----------------------------------------------------------------- """ import argparse @@ -25,18 +30,13 @@ add_verbose_arg, assert_inputs_exist, assert_outputs_exist) - - -EPILOG = """ -References: -[1] St-Onge, E., Daducci, A., Girard, G. and Descoteaux, M. 2018. - Surface-enhanced tractography (SET). NeuroImage. -""" +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser(description=__doc__, epilog=EPILOG, - formatter_class=argparse.RawTextHelpFormatter) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_surface', help='Input surface (.vtk).') diff --git a/scripts/scil_tracking_local.py b/scripts/scil_tracking_local.py index 53a0f75a2..97d71f35d 100755 --- a/scripts/scil_tracking_local.py +++ b/scripts/scil_tracking_local.py @@ -45,16 +45,15 @@ All the input nifti files must be in isotropic resolution. - -References ----------- -[1]: Garyfallidis, E. (2012). Towards an accurate brain tractography -[PhD thesis]. University of Cambridge. United Kingdom. - -[2]: Aydogan, D. B., & Shi, Y. (2020). Parallel transport tractography. -IEEE transactions on medical imaging, 40(2), 635-647. - Formerly: scil_compute_local_tracking.py +-------------------------------------------------------------------------------- +References: +[1] Garyfallidis, E. (2012). Towards an accurate brain tractography + [PhD thesis]. University of Cambridge. United Kingdom. + +[2] Aydogan, D. B., & Shi, Y. (2020). Parallel transport tractography. + IEEE transactions on medical imaging, 40(2), 635-647. +-------------------------------------------------------------------------------- """ import argparse @@ -82,6 +81,7 @@ get_direction_getter, get_theta, save_tractogram, verify_seed_options, verify_streamline_length_options) +from scilpy.version import version_string # GPU tracking arguments default values DEFAULT_BATCH_SIZE = 10000 @@ -91,9 +91,9 @@ def _build_arg_parser(): - p = argparse.ArgumentParser( - description=__doc__, - formatter_class=argparse.RawTextHelpFormatter) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) # Options that are the same in this script and scil_tracking_local_dev: add_mandatory_options_tracking(p) diff --git a/scripts/scil_tracking_local_dev.py b/scripts/scil_tracking_local_dev.py index d250c6f55..44ada4e4d 100755 --- a/scripts/scil_tracking_local_dev.py +++ b/scripts/scil_tracking_local_dev.py @@ -38,11 +38,13 @@ 2. As a rule of thumb, doubling the rk_order will double the computation time in the worst case. -References: [1] Girard, G., Whittingstall K., Deriche, R., and - Descoteaux, M. (2014). Towards quantitative connectivity analysis: - reducing tractography biases. Neuroimage, 98, 266-278. - Formerly: scil_compute_local_tracking_dev.py +------------------------------------------------------------------------------- +Reference: +[1] Girard, G., Whittingstall K., Deriche, R., and Descoteaux, M. (2014). + Towards quantitative connectivity analysis:reducing tractography biases. + Neuroimage, 98, 266-278. +------------------------------------------------------------------------------- """ import argparse import logging @@ -73,12 +75,13 @@ get_theta, verify_streamline_length_options, verify_seed_options) +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser( - formatter_class=argparse.RawTextHelpFormatter, - description=__doc__) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) # Options common to both scripts add_mandatory_options_tracking(p) diff --git a/scripts/scil_tracking_pft.py b/scripts/scil_tracking_pft.py index e4c086b19..36a4ed04d 100755 --- a/scripts/scil_tracking_pft.py +++ b/scripts/scil_tracking_pft.py @@ -26,6 +26,12 @@ All the input nifti files must be in isotropic resolution. Formerly: scil_compute_pft.py +----------------------------------------------------------------------------- +Reference: +[1] Girard, G., Whittingstall K., Deriche, R., and Descoteaux, M. (2014). + Towards quantitative connectivity analysis: reducing tractographybiases. + Neuroimage. +----------------------------------------------------------------------------- """ import argparse @@ -52,15 +58,14 @@ assert_headers_compatible, add_compression_arg, verify_compression_th) from scilpy.tracking.utils import get_theta +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser( - description=__doc__, formatter_class=argparse.RawTextHelpFormatter, - epilog='References: [1] Girard, G., Whittingstall K., Deriche, R., ' - 'and Descoteaux, M. (2014). Towards quantitative connectivity ' - 'analysis: reducing tractography biases. Neuroimage, 98, ' - '266-278.') + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) + p._optionals.title = 'Generic options' p.add_argument('in_sh', diff --git a/scripts/scil_tracking_pft_maps.py b/scripts/scil_tracking_pft_maps.py index c01206169..5ad7d209a 100755 --- a/scripts/scil_tracking_pft_maps.py +++ b/scripts/scil_tracking_pft_maps.py @@ -11,6 +11,12 @@ biases. Neuroimage. Formerly: scil_compute_maps_for_particle_filter_tracking.py +----------------------------------------------------------------------------- +Reference: +[1] Girard, G., Whittingstall K., Deriche, R., and Descoteaux, M. (2014). + Towards quantitative connectivity analysis: reducing tractographybiases. + Neuroimage. +----------------------------------------------------------------------------- """ import argparse @@ -23,11 +29,14 @@ assert_inputs_exist, assert_outputs_exist, add_verbose_arg) +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser( - description=__doc__, formatter_class=argparse.RawTextHelpFormatter) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) + p.add_argument('in_wm', help='White matter PVE map (nifti). From normal FAST ' 'output, has a PVE_2 name suffix.') diff --git a/scripts/scil_tracking_pft_maps_edit.py b/scripts/scil_tracking_pft_maps_edit.py index 17a01bf70..a0d731714 100755 --- a/scripts/scil_tracking_pft_maps_edit.py +++ b/scripts/scil_tracking_pft_maps_edit.py @@ -17,27 +17,29 @@ from scilpy.io.utils import (add_overwrite_arg, add_verbose_arg, assert_inputs_exist, assert_outputs_exist, assert_headers_compatible) +from scilpy.version import version_string def _build_arg_parser(): - parser = argparse.ArgumentParser( - description=__doc__, - formatter_class=argparse.RawTextHelpFormatter) - parser.add_argument('map_include', + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) + + p.add_argument('map_include', help='PFT map include.') - parser.add_argument('map_exclude', + p.add_argument('map_exclude', help='PFT map exclude.') - parser.add_argument('additional_mask', + p.add_argument('additional_mask', help='Allow PFT tracking in this mask.') - parser.add_argument('map_include_corr', + p.add_argument('map_include_corr', help='Corrected PFT map include output file name.') - parser.add_argument('map_exclude_corr', + p.add_argument('map_exclude_corr', help='Corrected PFT map exclude output file name.') - add_verbose_arg(parser) - add_overwrite_arg(parser) + add_verbose_arg(p) + add_overwrite_arg(p) - return parser + return p def main(): diff --git a/scripts/scil_tractogram_apply_transform.py b/scripts/scil_tractogram_apply_transform.py index 357509ec4..5347e3d9e 100755 --- a/scripts/scil_tractogram_apply_transform.py +++ b/scripts/scil_tractogram_apply_transform.py @@ -54,11 +54,13 @@ assert_outputs_exist, load_matrix_in_any_format) from scilpy.tractograms.tractogram_operations import transform_warp_sft +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter, - description=__doc__) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_moving_tractogram', help='Path of the tractogram to be transformed.\n' diff --git a/scripts/scil_tractogram_apply_transform_to_hdf5.py b/scripts/scil_tractogram_apply_transform_to_hdf5.py index 825f12829..9304dd567 100755 --- a/scripts/scil_tractogram_apply_transform_to_hdf5.py +++ b/scripts/scil_tractogram_apply_transform_to_hdf5.py @@ -33,11 +33,13 @@ assert_outputs_exist, load_matrix_in_any_format) from scilpy.tractograms.tractogram_operations import transform_warp_sft +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter, - description=__doc__) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_hdf5', help='Path of the hdf5 containing the moving tractogram, ' diff --git a/scripts/scil_tractogram_assign_custom_color.py b/scripts/scil_tractogram_assign_custom_color.py index 321770568..4e716f7bb 100755 --- a/scripts/scil_tractogram_assign_custom_color.py +++ b/scripts/scil_tractogram_assign_custom_color.py @@ -69,12 +69,13 @@ from scilpy.viz.color import ( get_lookup_table, prepare_colorbar_figure, ambiant_occlusion, generate_local_coloring) +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser( - description=__doc__, - formatter_class=argparse.RawTextHelpFormatter) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_tractogram', help='Input tractogram (.trk or .tck).') diff --git a/scripts/scil_tractogram_assign_uniform_color.py b/scripts/scil_tractogram_assign_uniform_color.py index 6a1e15413..ea57b48cb 100755 --- a/scripts/scil_tractogram_assign_uniform_color.py +++ b/scripts/scil_tractogram_assign_uniform_color.py @@ -31,12 +31,13 @@ add_verbose_arg, add_reference_arg, assert_headers_compatible) from scilpy.viz.color import format_hexadecimal_color_to_rgb, ambiant_occlusion +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser( - description=__doc__, - formatter_class=argparse.RawTextHelpFormatter) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_tractograms', nargs='+', help='Input tractograms (.trk or .tck).') diff --git a/scripts/scil_tractogram_commit.py b/scripts/scil_tractogram_commit.py index d51efb523..d03433552 100755 --- a/scripts/scil_tractogram_commit.py +++ b/scripts/scil_tractogram_commit.py @@ -71,6 +71,16 @@ - Compare the density map before and after (essential tractogram) Formerly: scil_run_commit.py +-------------------------------------------------------------------------------- +References: +[1] Daducci, Alessandro, et al. "COMMIT: convex optimization modeling for + microstructure informed tractography." IEEE transactions on medical + imaging 34.1 (2014): 246-257. + +[2] Schiavi, Simona, et al. "A new method for accurate in vivo mapping of + human brain connections using microstructural and anatomical information." + Science advances 6.31 (2020): eaba8245. +-------------------------------------------------------------------------------- """ import argparse @@ -107,21 +117,13 @@ add_reference_arg) from scilpy.gradients.bvec_bval_tools import identify_shells, \ check_b0_threshold - -EPILOG = """ -References: -[1] Daducci, Alessandro, et al. "COMMIT: convex optimization modeling for - microstructure informed tractography." IEEE transactions on medical - imaging 34.1 (2014): 246-257. -[2] Schiavi, Simona, et al. "A new method for accurate in vivo mapping of - human brain connections using microstructural and anatomical information." - Science advances 6.31 (2020): eaba8245. -""" +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser(description=__doc__, epilog=EPILOG, - formatter_class=argparse.RawTextHelpFormatter) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_tractogram', help='Input tractogram (.trk or .tck or .h5).') diff --git a/scripts/scil_tractogram_compress.py b/scripts/scil_tractogram_compress.py index 6dc7d31c7..648e33a3f 100755 --- a/scripts/scil_tractogram_compress.py +++ b/scripts/scil_tractogram_compress.py @@ -23,11 +23,14 @@ from scilpy.io.utils import (add_overwrite_arg, add_verbose_arg, assert_inputs_exist, assert_outputs_exist, verify_compression_th) +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser( - description=__doc__, formatter_class=argparse.RawTextHelpFormatter) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) + p.add_argument('in_tractogram', help='Path of the input tractogram file (trk or tck).') p.add_argument('out_tractogram', diff --git a/scripts/scil_tractogram_compute_TODI.py b/scripts/scil_tractogram_compute_TODI.py index a2ad1ed06..e0996198a 100755 --- a/scripts/scil_tractogram_compute_TODI.py +++ b/scripts/scil_tractogram_compute_TODI.py @@ -10,6 +10,12 @@ or SH representation, based on streamlines' segments. Formerly: scil_compute_todi.py +------------------------------------------------------------------------------------ +Reference: +[1] Dhollander T, Emsell L, Van Hecke W, Maes F, Sunaert S, Suetens P. + Track orientation density imaging (TODI) and track orientation distribution (TOD) + based tractography. NeuroImage. 2014 Jul 1;94:312-36. +------------------------------------------------------------------------------------ """ import argparse @@ -25,20 +31,13 @@ assert_inputs_exist, assert_outputs_exist, parse_sh_basis_arg, assert_headers_compatible) from scilpy.tractanalysis.todi import TrackOrientationDensityImaging - - -EPILOG = """ -References: - [1] Dhollander T, Emsell L, Van Hecke W, Maes F, Sunaert S, Suetens P. - Track orientation density imaging (TODI) and - track orientation distribution (TOD) based tractography. - NeuroImage. 2014 Jul 1;94:312-36. -""" +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser(description=__doc__, epilog=EPILOG, - formatter_class=argparse.RawTextHelpFormatter) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_tractogram', help='Input streamlines file.') diff --git a/scripts/scil_tractogram_compute_density_map.py b/scripts/scil_tractogram_compute_density_map.py index ebe7d28c3..312f959cb 100755 --- a/scripts/scil_tractogram_compute_density_map.py +++ b/scripts/scil_tractogram_compute_density_map.py @@ -19,11 +19,14 @@ assert_inputs_exist, add_verbose_arg, assert_outputs_exist) from scilpy.tractanalysis.streamlines_metrics import compute_tract_counts_map +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser( - description=__doc__, formatter_class=argparse.RawTextHelpFormatter) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) + p.add_argument('in_bundle', help='Tractogram filename.') p.add_argument('out_img', diff --git a/scripts/scil_tractogram_convert.py b/scripts/scil_tractogram_convert.py index 5ff37a2db..d4741cb13 100755 --- a/scripts/scil_tractogram_convert.py +++ b/scripts/scil_tractogram_convert.py @@ -21,11 +21,13 @@ add_reference_arg, assert_inputs_exist, assert_outputs_exist, add_verbose_arg) from trimeshpy.vtk_util import lines_to_vtk_polydata, save_polydata +from scilpy.version import version_string def _build_arg_parser(): p = argparse.ArgumentParser(description=__doc__, - formatter_class=argparse.RawTextHelpFormatter) + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_tractogram', help='Tractogram filename. Format must be one of \n' diff --git a/scripts/scil_tractogram_convert_hdf5_to_trk.py b/scripts/scil_tractogram_convert_hdf5_to_trk.py index f13ff313d..2d3c15878 100755 --- a/scripts/scil_tractogram_convert_hdf5_to_trk.py +++ b/scripts/scil_tractogram_convert_hdf5_to_trk.py @@ -38,11 +38,14 @@ from scilpy.io.utils import (add_overwrite_arg, add_verbose_arg, assert_inputs_exist, assert_output_dirs_exist_and_empty) +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser( - description=__doc__, formatter_class=argparse.RawTextHelpFormatter) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) + p.add_argument('in_hdf5', help='HDF5 filename (.h5) containing decomposed ' 'connections.') diff --git a/scripts/scil_tractogram_convert_trk_to_hdf5.py b/scripts/scil_tractogram_convert_trk_to_hdf5.py index bf3da6faa..590cee920 100755 --- a/scripts/scil_tractogram_convert_trk_to_hdf5.py +++ b/scripts/scil_tractogram_convert_trk_to_hdf5.py @@ -39,11 +39,14 @@ from scilpy.io.utils import (add_overwrite_arg, add_verbose_arg, assert_inputs_exist, assert_outputs_exist) +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser( - description=__doc__, formatter_class=argparse.RawTextHelpFormatter) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) + p.add_argument('in_bundles', nargs='+', help='Path of the input connection(s) or bundle(s).') p.add_argument('out_hdf5', diff --git a/scripts/scil_tractogram_count_streamlines.py b/scripts/scil_tractogram_count_streamlines.py index b83503d7c..5d874c0e3 100755 --- a/scripts/scil_tractogram_count_streamlines.py +++ b/scripts/scil_tractogram_count_streamlines.py @@ -18,11 +18,14 @@ assert_inputs_exist) from scilpy.tractograms.lazy_tractogram_operations import \ lazy_streamlines_count +from scilpy.version import version_string def _build_arg_parser(): p = argparse.ArgumentParser(description=__doc__, - formatter_class=argparse.RawTextHelpFormatter) + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) + p.add_argument('in_tractogram', help='Path of the input tractogram file.') p.add_argument('--print_count_alone', action='store_true', diff --git a/scripts/scil_tractogram_cut_streamlines.py b/scripts/scil_tractogram_cut_streamlines.py index ef957334d..f2a5710a1 100755 --- a/scripts/scil_tractogram_cut_streamlines.py +++ b/scripts/scil_tractogram_cut_streamlines.py @@ -52,6 +52,7 @@ CuttingStyle from scilpy.tractograms.streamline_operations import \ resample_streamlines_step_size +from scilpy.version import version_string # Mapping the arguments to the cutting style # (keep_longest, trim_endpoints) -> CuttingStyle @@ -61,9 +62,10 @@ def _build_arg_parser(): - p = argparse.ArgumentParser( - description=__doc__, - formatter_class=argparse.RawTextHelpFormatter) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) + p.add_argument('in_tractogram', help='Input tractogram file.') diff --git a/scripts/scil_tractogram_detect_loops.py b/scripts/scil_tractogram_detect_loops.py index c1581c12d..87b6df6ca 100755 --- a/scripts/scil_tractogram_detect_loops.py +++ b/scripts/scil_tractogram_detect_loops.py @@ -16,6 +16,10 @@ scil_tractogram_filter_by_anatomy.py Formerly: scil_detect_streamlines_loops.py +------------------------------------------------------------------------------ +Reference: +[1] QuickBundles, based on [Garyfallidis12] Frontiers in Neuroscience, 2012. +------------------------------------------------------------------------------ """ import argparse @@ -37,17 +41,14 @@ validate_nbr_processes, ranged_type) from scilpy.tractograms.streamline_operations import \ remove_loops_and_sharp_turns - - -EPILOG = """ -References: - QuickBundles, based on [Garyfallidis12] Frontiers in Neuroscience, 2012. -""" +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter, - description=__doc__, epilog=EPILOG) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) + p.add_argument('in_tractogram', help='Tractogram input file name.') p.add_argument('out_tractogram', diff --git a/scripts/scil_tractogram_dpp_math.py b/scripts/scil_tractogram_dpp_math.py index 5949fddb6..51bde92f9 100755 --- a/scripts/scil_tractogram_dpp_math.py +++ b/scripts/scil_tractogram_dpp_math.py @@ -43,12 +43,13 @@ perform_correlation_on_endpoints, perform_operation_on_dpp, perform_operation_dpp_to_dps) +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser( - formatter_class=argparse.RawTextHelpFormatter, - description=__doc__) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('operation', metavar='OPERATION', choices=['mean', 'sum', 'min', 'max', 'correlation'], diff --git a/scripts/scil_tractogram_dps_math.py b/scripts/scil_tractogram_dps_math.py index 0130f6bd3..90b6527d7 100755 --- a/scripts/scil_tractogram_dps_math.py +++ b/scripts/scil_tractogram_dps_math.py @@ -35,13 +35,13 @@ check_tract_trk, load_matrix_in_any_format, save_matrix_in_any_format) +from scilpy.version import version_string def _build_arg_parser(): - - p = argparse.ArgumentParser( - description=__doc__, - formatter_class=argparse.RawTextHelpFormatter) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_tractogram', help='Input tractogram (.trk for all operations,' diff --git a/scripts/scil_tractogram_extract_ushape.py b/scripts/scil_tractogram_extract_ushape.py index 7b5cc6565..175b0b5b6 100755 --- a/scripts/scil_tractogram_extract_ushape.py +++ b/scripts/scil_tractogram_extract_ushape.py @@ -29,11 +29,14 @@ assert_outputs_exist, check_tracts_same_format, ranged_type) from scilpy.tractanalysis.bundle_operations import detect_ushape +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter, - description=__doc__) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) + p.add_argument('in_tractogram', help='Tractogram input file name.') p.add_argument('out_tractogram', diff --git a/scripts/scil_tractogram_filter_by_anatomy.py b/scripts/scil_tractogram_filter_by_anatomy.py index bbdf9b3f3..30a5f23a7 100755 --- a/scripts/scil_tractogram_filter_by_anatomy.py +++ b/scripts/scil_tractogram_filter_by_anatomy.py @@ -59,6 +59,17 @@ NOTE: As of version 2.0.0, the dilation of the cortical mask has changed; from an in-house process to scipy's dilation. Results may differ from previous versions. +---------------------------------------------------------------------------- +References: +[1] Jörgens, D., Descoteaux, M., Moreno, R., 2021. Challenges for + tractogram filtering. In: Özarslan, E., Schultz, T., Zhang, E., Fuster, + A. (Eds.), Anisotropy Across Fields and Scales. Springer. Mathematics + and Visualization. + +[2] Legarreta, J., Petit, L., Rheault, F., Theaud, G., Lemaire, C., + Descoteaux, M., Jodoin, P.M. Filtering in tractography using + autoencoders (FINTA). Medical Image Analysis. 2021 +---------------------------------------------------------------------------- """ import argparse @@ -85,23 +96,13 @@ from scilpy.segment.streamlines import filter_grid_roi from scilpy.tractograms.streamline_operations import \ filter_streamlines_by_length, remove_loops_and_sharp_turns - - -EPILOG = """ - References: - [1] Jörgens, D., Descoteaux, M., Moreno, R., 2021. Challenges for - tractogram filtering. In: Özarslan, E., Schultz, T., Zhang, E., Fuster, - A. (Eds.), Anisotropy Across Fields and Scales. Springer. Mathematics - and Visualization. - [2] Legarreta, J., Petit, L., Rheault, F., Theaud, G., Lemaire, C., - Descoteaux, M., Jodoin, P.M. Filtering in tractography using - autoencoders (FINTA). Medical Image Analysis. 2021 - """ +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter, - epilog=EPILOG, description=__doc__) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_tractogram', help='Path of the input tractogram file.') diff --git a/scripts/scil_tractogram_filter_by_length.py b/scripts/scil_tractogram_filter_by_length.py index 9b3ba5871..05192182f 100755 --- a/scripts/scil_tractogram_filter_by_length.py +++ b/scripts/scil_tractogram_filter_by_length.py @@ -30,11 +30,13 @@ assert_outputs_exist, ranged_type) from scilpy.tractograms.streamline_operations import \ filter_streamlines_by_length +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser( - formatter_class=argparse.RawTextHelpFormatter, description=__doc__) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_tractogram', help='Streamlines input file name.') diff --git a/scripts/scil_tractogram_filter_by_orientation.py b/scripts/scil_tractogram_filter_by_orientation.py index a389e7dc3..581df5ee1 100755 --- a/scripts/scil_tractogram_filter_by_orientation.py +++ b/scripts/scil_tractogram_filter_by_orientation.py @@ -40,11 +40,13 @@ assert_outputs_exist) from scilpy.tractograms.streamline_operations import \ filter_streamlines_by_total_length_per_dim +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser( - formatter_class=argparse.RawTextHelpFormatter, description=__doc__) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_tractogram', help='Streamlines input file name.') diff --git a/scripts/scil_tractogram_filter_by_roi.py b/scripts/scil_tractogram_filter_by_roi.py index 8bb203893..fa94bd418 100755 --- a/scripts/scil_tractogram_filter_by_roi.py +++ b/scripts/scil_tractogram_filter_by_roi.py @@ -102,14 +102,16 @@ read_info_from_mb_bdo, assert_headers_compatible) from scilpy.segment.streamlines import (filter_cuboid, filter_ellipsoid, filter_grid_roi) +from scilpy.version import version_string MODES = ['any', 'all', 'either_end', 'both_ends'] CRITERIA = ['include', 'exclude'] def _build_arg_parser(): - p = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter, - description=__doc__) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_tractogram', help='Path of the input tractogram file.') diff --git a/scripts/scil_tractogram_filter_collisions.py b/scripts/scil_tractogram_filter_collisions.py index 76bb389ca..d2ccc4e89 100644 --- a/scripts/scil_tractogram_filter_collisions.py +++ b/scripts/scil_tractogram_filter_collisions.py @@ -90,12 +90,13 @@ add_overwrite_arg, add_verbose_arg, add_json_args) +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser( - formatter_class=argparse.RawTextHelpFormatter, - description=__doc__) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_tractogram', help='Path to the tractogram file containing the \n' diff --git a/scripts/scil_tractogram_flip.py b/scripts/scil_tractogram_flip.py index 8eacb2caf..22c27fb51 100755 --- a/scripts/scil_tractogram_flip.py +++ b/scripts/scil_tractogram_flip.py @@ -23,11 +23,13 @@ assert_inputs_exist, assert_outputs_exist) from scilpy.tractograms.tractogram_operations import flip_sft +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser( - description=__doc__, formatter_class=argparse.RawTextHelpFormatter) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_tractogram', help='Path of the input tractogram file.') diff --git a/scripts/scil_tractogram_math.py b/scripts/scil_tractogram_math.py index 364580ad4..dcc5bcc67 100755 --- a/scripts/scil_tractogram_math.py +++ b/scripts/scil_tractogram_math.py @@ -61,12 +61,13 @@ from scilpy.tractograms.lazy_tractogram_operations import lazy_concatenate from scilpy.tractograms.tractogram_operations import ( perform_tractogram_operation_on_sft, concatenate_sft) +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser( - formatter_class=argparse.RawTextHelpFormatter, - description=__doc__) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('operation', metavar='OPERATION', choices=['difference', 'intersection', 'union', diff --git a/scripts/scil_tractogram_pairwise_comparison.py b/scripts/scil_tractogram_pairwise_comparison.py index fdcaa7e74..8f36ca02b 100755 --- a/scripts/scil_tractogram_pairwise_comparison.py +++ b/scripts/scil_tractogram_pairwise_comparison.py @@ -40,13 +40,13 @@ validate_nbr_processes) from scilpy.tractanalysis.reproducibility_measures import \ tractogram_pairwise_comparison +from scilpy.version import version_string def _build_arg_parser(): - - p = argparse.ArgumentParser( - description=__doc__, - formatter_class=argparse.RawTextHelpFormatter) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_tractogram_1', help='Input tractogram 1.') diff --git a/scripts/scil_tractogram_print_info.py b/scripts/scil_tractogram_print_info.py index bdea51b95..eada25c74 100755 --- a/scripts/scil_tractogram_print_info.py +++ b/scripts/scil_tractogram_print_info.py @@ -27,11 +27,13 @@ add_reference_arg, add_verbose_arg, assert_inputs_exist) +from scilpy.version import version_string def _build_arg_parser(): p = argparse.ArgumentParser(description=__doc__, - formatter_class=argparse.RawTextHelpFormatter) + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_tractogram', help='Tractogram file.') diff --git a/scripts/scil_tractogram_project_map_to_streamlines.py b/scripts/scil_tractogram_project_map_to_streamlines.py index 60e8d5e03..2ce958775 100755 --- a/scripts/scil_tractogram_project_map_to_streamlines.py +++ b/scripts/scil_tractogram_project_map_to_streamlines.py @@ -40,12 +40,13 @@ from scilpy.image.volume_space_management import DataVolume from scilpy.tractograms.dps_and_dpp_management import ( project_map_to_streamlines) +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser( - description=__doc__, - formatter_class=argparse.RawTextHelpFormatter) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) # Mandatory arguments input and output tractogram must be in trk format p.add_argument('in_tractogram', diff --git a/scripts/scil_tractogram_project_streamlines_to_map.py b/scripts/scil_tractogram_project_streamlines_to_map.py index c3d86bd34..1a60a8f30 100755 --- a/scripts/scil_tractogram_project_streamlines_to_map.py +++ b/scripts/scil_tractogram_project_streamlines_to_map.py @@ -46,12 +46,13 @@ from scilpy.tractograms.dps_and_dpp_management import ( convert_dps_to_dpp, perform_operation_dpp_to_dps, project_dpp_to_map) from scilpy.utils.filenames import split_name_with_nii +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser( - description=__doc__, - formatter_class=argparse.RawTextHelpFormatter) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_bundle', help='Fiber bundle file.') diff --git a/scripts/scil_tractogram_qbx.py b/scripts/scil_tractogram_qbx.py index 972867800..81f59719f 100755 --- a/scripts/scil_tractogram_qbx.py +++ b/scripts/scil_tractogram_qbx.py @@ -35,11 +35,13 @@ assert_outputs_exist, assert_output_dirs_exist_and_empty, add_verbose_arg) +from scilpy.version import version_string def _build_arg_parser(): p = argparse.ArgumentParser(description=__doc__, - formatter_class=argparse.RawTextHelpFormatter) + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_tractogram', help='Tractogram filename.\n' diff --git a/scripts/scil_tractogram_register.py b/scripts/scil_tractogram_register.py index 8c69b0a68..165c3cf78 100755 --- a/scripts/scil_tractogram_register.py +++ b/scripts/scil_tractogram_register.py @@ -10,6 +10,13 @@ https://scilpy.readthedocs.io/en/latest/documentation/tractogram_registration.html Formerly: scil_register_tractogram.py +---------------------------------------------------------------------------------- +Reference: +[1] E. Garyfallidis, O. Ocegueda, D. Wassermann, M. Descoteaux + Robust and efficient linear registration of white-matter fascicles in the + space of streamlines, NeuroImage, Volume 117, 15 August 2015, Pages 124-140 + (http://www.sciencedirect.com/science/article/pii/S1053811915003961) +---------------------------------------------------------------------------------- """ import argparse @@ -23,18 +30,13 @@ from scilpy.io.utils import (add_overwrite_arg, add_reference_arg, add_verbose_arg, assert_inputs_exist, assert_outputs_exist) - -EPILOG = """References: -[1] E. Garyfallidis, O. Ocegueda, D. Wassermann, M. Descoteaux -Robust and efficient linear registration of white-matter fascicles in the -space of streamlines, NeuroImage, Volume 117, 15 August 2015, Pages 124-140 -(http://www.sciencedirect.com/science/article/pii/S1053811915003961) -""" +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter, - description=__doc__, epilog=EPILOG) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('moving_tractogram', help='Path of the moving tractogram.') diff --git a/scripts/scil_tractogram_remove_invalid.py b/scripts/scil_tractogram_remove_invalid.py index 9e5ce3b58..18d107d03 100755 --- a/scripts/scil_tractogram_remove_invalid.py +++ b/scripts/scil_tractogram_remove_invalid.py @@ -24,11 +24,13 @@ cut_invalid_streamlines, remove_overlapping_points_streamlines, remove_single_point_streamlines) +from scilpy.version import version_string def _build_arg_parser(): p = argparse.ArgumentParser(description=__doc__, - formatter_class=argparse.RawTextHelpFormatter) + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_tractogram', help='Tractogram filename. Format must be one of \n' diff --git a/scripts/scil_tractogram_resample.py b/scripts/scil_tractogram_resample.py index 72497d94d..e564c89fd 100755 --- a/scripts/scil_tractogram_resample.py +++ b/scripts/scil_tractogram_resample.py @@ -53,11 +53,13 @@ split_sft_randomly, split_sft_randomly_per_cluster, upsample_tractogram) +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter, - description=__doc__) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_tractogram', help='Input tractography file.') diff --git a/scripts/scil_tractogram_resample_nb_points.py b/scripts/scil_tractogram_resample_nb_points.py index 441a5a1fc..5a6ba6ab5 100755 --- a/scripts/scil_tractogram_resample_nb_points.py +++ b/scripts/scil_tractogram_resample_nb_points.py @@ -20,11 +20,13 @@ assert_outputs_exist) from scilpy.tractograms.streamline_operations import \ resample_streamlines_num_points, resample_streamlines_step_size +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser( - formatter_class=argparse.RawTextHelpFormatter, description=__doc__) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_tractogram', help='Streamlines input file name.') diff --git a/scripts/scil_tractogram_seed_density_map.py b/scripts/scil_tractogram_seed_density_map.py index 115f69c83..1bdab2136 100755 --- a/scripts/scil_tractogram_seed_density_map.py +++ b/scripts/scil_tractogram_seed_density_map.py @@ -29,11 +29,13 @@ add_overwrite_arg, assert_inputs_exist, assert_outputs_exist, ranged_type) +from scilpy.version import version_string def _build_arg_parser(): p = argparse.ArgumentParser(description=__doc__, - formatter_class=argparse.RawTextHelpFormatter) + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('tractogram_filename', help='Tracts filename. Format must be .trk. \nFile should ' diff --git a/scripts/scil_tractogram_segment_connections_from_labels.py b/scripts/scil_tractogram_segment_connections_from_labels.py index b4dbf0dc5..a306322ad 100755 --- a/scripts/scil_tractogram_segment_connections_from_labels.py +++ b/scripts/scil_tractogram_segment_connections_from_labels.py @@ -85,6 +85,7 @@ construct_hdf5_from_connectivity, extract_longest_segments_from_profile) from scilpy.tractograms.uncompress import streamlines_to_voxel_coordinates +from scilpy.version import version_string def _get_output_paths(args): @@ -132,9 +133,9 @@ def _create_required_output_dirs(args, out_paths): def _build_arg_parser(): - p = argparse.ArgumentParser( - formatter_class=argparse.RawTextHelpFormatter, - description=__doc__) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_tractograms', nargs='+', help='Tractogram filename (s). Format must be one of \n' 'trk, tck, vtk, fib, dpy.\n' diff --git a/scripts/scil_tractogram_segment_with_ROI_and_score.py b/scripts/scil_tractogram_segment_with_ROI_and_score.py index d2585fdf6..6288db1fb 100755 --- a/scripts/scil_tractogram_segment_with_ROI_and_score.py +++ b/scripts/scil_tractogram_segment_with_ROI_and_score.py @@ -79,6 +79,15 @@ "endpoints": "PATH/file1.nii.gz" } } +--------------------------------------------------------------------------------- +References: +[1] Côté, M.-A., et al. (2013). Tractometer: Towards Validation of Tractography + Pipelines, Medical Image Analysis, 17(7), 844-857. + +[2] Renauld, E., et al. (2023) Validate your white matter tractography + algorithms with a reappraised ISMRM 2015 Tractography Challenge scoring system, + Scientific Reports, 13:2347 (2023). Online Enhanced PDF, or Download PDF. +--------------------------------------------------------------------------------- """ import argparse import json @@ -105,22 +114,15 @@ segment_tractogram_from_roi) from scilpy.tractanalysis.scoring import compute_tractometry from scilpy.tractanalysis.scoring import __doc__ as tractometry_description +from scilpy.version import version_string -EPILOG = """ -[1] Côté, M.-A., et al. (2013). Tractometer: Towards Validation of Tractography -Pipelines, Medical Image Analysis, 17(7), 844-857. -[2] Renauld, E., et al. (2023) Validate your white matter tractography -algorithms with a reappraised ISMRM 2015 Tractography Challenge scoring system, -Scientific Reports, 13:2347 (2023). Online Enhanced PDF, or Download PDF. -""" def_len = [0, np.inf] def _build_arg_parser(): - p = argparse.ArgumentParser( - description=__doc__ + tractometry_description, - formatter_class=argparse.RawTextHelpFormatter, - epilog=EPILOG) + p = argparse.ArgumentParser(description=__doc__ + tractometry_description, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument("in_tractogram", help="Input tractogram to score") diff --git a/scripts/scil_tractogram_segment_with_bundleseg.py b/scripts/scil_tractogram_segment_with_bundleseg.py index e1c05e924..af8c82751 100755 --- a/scripts/scil_tractogram_segment_with_bundleseg.py +++ b/scripts/scil_tractogram_segment_with_bundleseg.py @@ -27,6 +27,12 @@ in parallel and can lead to a RAM overflow. Formerly: scil_recognize_multi_bundles.py +------------------------------------------------------------------------------------------ +Reference: +[1] St-Onge, Etienne, Kurt G. Schilling, and Francois Rheault."BundleSeg: A versatile, + reliable and reproducible approach to white matter bundle segmentation." International + Workshop on Computational Diffusion MRI. Cham: Springer Nature Switzerland (2023) +------------------------------------------------------------------------------------------ """ import argparse @@ -43,20 +49,13 @@ assert_output_dirs_exist_and_empty, load_matrix_in_any_format, ranged_type) from scilpy.segment.voting_scheme import VotingScheme - -EPILOG = """ -[1] St-Onge, Etienne, Kurt G. Schilling, and Francois Rheault. -"BundleSeg: A versatile,reliable and reproducible approach to white -matter bundle segmentation." International Workshop on Computational -Diffusion MRI. Cham: Springer Nature Switzerland (2023) -""" +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser( - formatter_class=argparse.RawTextHelpFormatter, - description=__doc__, - epilog=EPILOG) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_tractograms', nargs='+', help='Input tractogram filename (.trk or .tck).') diff --git a/scripts/scil_tractogram_segment_with_recobundles.py b/scripts/scil_tractogram_segment_with_recobundles.py index ccac5e29a..1a95180d5 100755 --- a/scripts/scil_tractogram_segment_with_recobundles.py +++ b/scripts/scil_tractogram_segment_with_recobundles.py @@ -18,6 +18,12 @@ transformation is very close to identity and both 'directions' will work. Formerly: scil_recognize_single_bundles.py +------------------------------------------------------------------------------- +Reference: +[1] Garyfallidis, E., Cote, M. A., Rheault, F., ... & Descoteaux, M. (2018). + Recognition of white matter bundles using local and global streamline-based + registration and clustering. NeuroImage, 170, 283-295. +------------------------------------------------------------------------------- """ import argparse @@ -36,18 +42,13 @@ assert_outputs_exist, load_matrix_in_any_format, ranged_type) from scilpy.utils.spatial import compute_distance_barycenters - -EPILOG = """ -Garyfallidis, E., Cote, M. A., Rheault, F., ... & Descoteaux, M. (2018). -Recognition of white matter bundles using local and global streamline-based -registration and clustering. NeuroImage, 170, 283-295. -""" +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser( - formatter_class=argparse.RawTextHelpFormatter, - description=__doc__, epilog=EPILOG) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_tractogram', help='Input tractogram filename.') diff --git a/scripts/scil_tractogram_shuffle.py b/scripts/scil_tractogram_shuffle.py index 8ffafaaf3..20ee947ee 100755 --- a/scripts/scil_tractogram_shuffle.py +++ b/scripts/scil_tractogram_shuffle.py @@ -17,12 +17,13 @@ assert_inputs_exist, add_verbose_arg, assert_outputs_exist) from scilpy.tractograms.tractogram_operations import shuffle_streamlines +from scilpy.version import version_string def _build_arg_parser(): - - p = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter, - description=__doc__) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_tractogram', help='Input tractography file.') diff --git a/scripts/scil_tractogram_smooth.py b/scripts/scil_tractogram_smooth.py index c73288190..41a8ecc03 100755 --- a/scripts/scil_tractogram_smooth.py +++ b/scripts/scil_tractogram_smooth.py @@ -39,11 +39,13 @@ assert_outputs_exist, add_compression_arg) from scilpy.tractograms.streamline_operations import smooth_line_gaussian, \ smooth_line_spline +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter, - description=__doc__) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_tractogram', help='Input tractography file.') diff --git a/scripts/scil_tractogram_split.py b/scripts/scil_tractogram_split.py index ddd14269b..1733a1ee6 100755 --- a/scripts/scil_tractogram_split.py +++ b/scripts/scil_tractogram_split.py @@ -28,12 +28,13 @@ split_sft_sequentially, split_sft_randomly, split_sft_randomly_per_cluster) +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser( - formatter_class=argparse.RawTextHelpFormatter, - description=__doc__) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_tractogram', help='Tractogram input file name.') diff --git a/scripts/scil_viz_bingham_fit.py b/scripts/scil_viz_bingham_fit.py index 566bfd047..ecacd11da 100755 --- a/scripts/scil_viz_bingham_fit.py +++ b/scripts/scil_viz_bingham_fit.py @@ -22,6 +22,7 @@ from scilpy.utils.spatial import RAS_AXES_NAMES from scilpy.utils.spatial import get_axis_index +from scilpy.version import version_string from scilpy.viz.backends.fury import (create_interactive_window, create_scene, snapshot_scenes) @@ -31,7 +32,8 @@ def _build_arg_parser(): p = argparse.ArgumentParser(description=__doc__, - formatter_class=argparse.RawTextHelpFormatter) + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) # Positional arguments p.add_argument('in_bingham', help='Input SH image file.') diff --git a/scripts/scil_viz_bundle.py b/scripts/scil_viz_bundle.py index 8bb7de76c..2703b6897 100755 --- a/scripts/scil_viz_bundle.py +++ b/scripts/scil_viz_bundle.py @@ -35,16 +35,18 @@ from scilpy.io.utils import (assert_inputs_exist, add_verbose_arg, parser_color_type) +from scilpy.version import version_string from scilpy.viz.color import generate_local_coloring - streamline_actor = {'tube': actor.streamtube, 'line': actor.line} def _build_arg_parser(): - p = argparse.ArgumentParser( - description=__doc__, formatter_class=argparse.RawTextHelpFormatter) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) + p.add_argument('in_bundles', nargs='+', help='List of tractography files supported by nibabel.') p2 = p.add_argument_group(title='Colouring options') diff --git a/scripts/scil_viz_bundle_screenshot_mni.py b/scripts/scil_viz_bundle_screenshot_mni.py index 848076a36..b92b4799f 100755 --- a/scripts/scil_viz_bundle_screenshot_mni.py +++ b/scripts/scil_viz_bundle_screenshot_mni.py @@ -38,14 +38,16 @@ assert_outputs_exist) from scilpy.image.volume_operations import register_image from scilpy.utils.spatial import get_axis_name, RAS_AXES_NAMES +from scilpy.version import version_string from scilpy.viz.legacy import display_slices from scilpy.viz.color import get_lookup_table def _build_arg_parser(): - p = argparse.ArgumentParser( - description=__doc__, - formatter_class=argparse.RawTextHelpFormatter) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) + p.add_argument('in_bundle', help='Path of the input bundle.') p.add_argument('in_anat', diff --git a/scripts/scil_viz_bundle_screenshot_mosaic.py b/scripts/scil_viz_bundle_screenshot_mosaic.py index 6bfba5256..ca99b626d 100755 --- a/scripts/scil_viz_bundle_screenshot_mosaic.py +++ b/scripts/scil_viz_bundle_screenshot_mosaic.py @@ -27,12 +27,15 @@ assert_output_dirs_exist_and_empty, assert_headers_compatible) from scilpy.utils.filenames import split_name_with_nii +from scilpy.version import version_string from scilpy.viz.backends.pil import fetch_truetype_font def _build_arg_parser(): - p = argparse.ArgumentParser( - description=__doc__, formatter_class=argparse.RawTextHelpFormatter) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) + p.add_argument('in_volume', help='Volume used as background (e.g. T1, FA, b0).') p.add_argument('in_bundles', nargs='+', diff --git a/scripts/scil_viz_connectivity.py b/scripts/scil_viz_connectivity.py index 604af6c35..55ac3d821 100755 --- a/scripts/scil_viz_connectivity.py +++ b/scripts/scil_viz_connectivity.py @@ -44,13 +44,15 @@ assert_outputs_exist, add_verbose_arg, load_matrix_in_any_format) +from scilpy.version import version_string from scilpy.viz.legacy.chord_chart import chordDiagram, polar2xy from scilpy.viz.color import get_lookup_table def _build_arg_parser(): - p = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter, - description=__doc__) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_matrix', help='Connectivity matrix in numpy (.npy) format.') diff --git a/scripts/scil_viz_dti_screenshot.py b/scripts/scil_viz_dti_screenshot.py index 01e3f5b24..26ef7a5c0 100755 --- a/scripts/scil_viz_dti_screenshot.py +++ b/scripts/scil_viz_dti_screenshot.py @@ -28,13 +28,15 @@ from scilpy.image.volume_operations import register_image from scilpy.utils.spatial import RAS_AXES_NAMES from scilpy.utils.spatial import get_axis_name +from scilpy.version import version_string from scilpy.viz.legacy import display_slices def _build_arg_parser(): - p = argparse.ArgumentParser( - description=__doc__, - formatter_class=argparse.RawTextHelpFormatter) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) + p.add_argument('in_dwi', help='Path of the input diffusion volume.') p.add_argument('in_bval', diff --git a/scripts/scil_viz_fodf.py b/scripts/scil_viz_fodf.py index b48b67a1a..9d73ba777 100755 --- a/scripts/scil_viz_fodf.py +++ b/scripts/scil_viz_fodf.py @@ -34,6 +34,7 @@ assert_headers_compatible) from scilpy.io.image import assert_same_resolution, get_data_as_mask from scilpy.utils.spatial import RAS_AXES_NAMES +from scilpy.version import version_string from scilpy.viz.backends.fury import (create_interactive_window, create_scene, snapshot_scenes) @@ -46,7 +47,8 @@ def _build_arg_parser(): p = argparse.ArgumentParser(description=__doc__, - formatter_class=argparse.RawTextHelpFormatter) + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) # Positional arguments p.add_argument('in_fodf', default=None, help='Input SH image file.') diff --git a/scripts/scil_viz_gradients_screenshot.py b/scripts/scil_viz_gradients_screenshot.py index fff913c4c..72a991fca 100755 --- a/scripts/scil_viz_gradients_screenshot.py +++ b/scripts/scil_viz_gradients_screenshot.py @@ -20,6 +20,7 @@ assert_gradients_filenames_valid, assert_inputs_exist, assert_outputs_exist) +from scilpy.version import version_string from scilpy.viz.gradients import (build_ms_from_shell_idx, plot_each_shell, plot_proj_shell) @@ -29,9 +30,9 @@ def _build_arg_parser(): - p = argparse.ArgumentParser( - formatter_class=argparse.RawDescriptionHelpFormatter, - description=__doc__) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) g = p.add_mutually_exclusive_group(required=True) g.add_argument( diff --git a/scripts/scil_viz_tractogram_collisions.py b/scripts/scil_viz_tractogram_collisions.py index ded9d0df8..cfd6012a9 100644 --- a/scripts/scil_viz_tractogram_collisions.py +++ b/scripts/scil_viz_tractogram_collisions.py @@ -17,12 +17,13 @@ add_reference_arg, assert_inputs_exist, assert_outputs_exist) +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser( - description=__doc__, - formatter_class=argparse.RawTextHelpFormatter) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_tractogram_invalid', help='Tractogram file containing the colliding \n' diff --git a/scripts/scil_viz_tractogram_seeds.py b/scripts/scil_viz_tractogram_seeds.py index 568739506..c865a41d7 100755 --- a/scripts/scil_viz_tractogram_seeds.py +++ b/scripts/scil_viz_tractogram_seeds.py @@ -21,12 +21,14 @@ add_verbose_arg, assert_inputs_exist, assert_outputs_exist) +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser( - description=__doc__, - formatter_class=argparse.RawTextHelpFormatter) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) + p.add_argument('tractogram', help='Tractogram file (must be trk)') p.add_argument('--save', diff --git a/scripts/scil_viz_tractogram_seeds_3d.py b/scripts/scil_viz_tractogram_seeds_3d.py index cb0e1f7b1..87ac3fc75 100755 --- a/scripts/scil_viz_tractogram_seeds_3d.py +++ b/scripts/scil_viz_tractogram_seeds_3d.py @@ -19,16 +19,18 @@ from scilpy.io.utils import (assert_inputs_exist, add_verbose_arg, parser_color_type) +from scilpy.version import version_string from scilpy.viz.color import lut_from_matplotlib_name - streamline_actor = {'tube': actor.streamtube, 'line': actor.line} def _build_arg_parser(): - p = argparse.ArgumentParser( - description=__doc__, formatter_class=argparse.RawTextHelpFormatter) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) + p.add_argument('in_seed_map', help='Seed density map.') p.add_argument('--tractogram', type=str, diff --git a/scripts/scil_viz_volume_histogram.py b/scripts/scil_viz_volume_histogram.py index be7e90453..98f98b3b7 100755 --- a/scripts/scil_viz_volume_histogram.py +++ b/scripts/scil_viz_volume_histogram.py @@ -21,11 +21,13 @@ from scilpy.io.utils import (add_overwrite_arg, assert_inputs_exist, assert_outputs_exist, add_verbose_arg, assert_headers_compatible) +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter, - description=__doc__) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_metric', help='Metric map ex : FA, MD,... .') diff --git a/scripts/scil_viz_volume_scatterplot.py b/scripts/scil_viz_volume_scatterplot.py index 272a4396c..7fba179f1 100755 --- a/scripts/scil_viz_volume_scatterplot.py +++ b/scripts/scil_viz_volume_scatterplot.py @@ -51,11 +51,13 @@ from scilpy.io.image import get_data_as_mask from scilpy.io.utils import (add_overwrite_arg, add_verbose_arg, assert_inputs_exist, assert_headers_compatible) +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter, - description=__doc__) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_x_map', help='Map in x axis, FA for example.') diff --git a/scripts/scil_viz_volume_screenshot.py b/scripts/scil_viz_volume_screenshot.py index 1e20af53a..cb317ae26 100755 --- a/scripts/scil_viz_volume_screenshot.py +++ b/scripts/scil_viz_volume_screenshot.py @@ -65,6 +65,7 @@ get_default_screenshotting_data) from scilpy.image.utils import check_slice_indices from scilpy.utils.spatial import get_axis_index +from scilpy.version import version_string from scilpy.viz.screenshot import (compose_image, screenshot_contour, screenshot_peaks, @@ -72,9 +73,9 @@ def _build_arg_parser(): - p = argparse.ArgumentParser(description=__doc__, - formatter_class=argparse.RawTextHelpFormatter) + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) sg = p.add_argument_group(title="Slicing") xg = p.add_argument_group(title="Input overlays") diff --git a/scripts/scil_viz_volume_screenshot_mosaic.py b/scripts/scil_viz_volume_screenshot_mosaic.py index dd151566d..c18a2e332 100755 --- a/scripts/scil_viz_volume_screenshot_mosaic.py +++ b/scripts/scil_viz_volume_screenshot_mosaic.py @@ -56,6 +56,7 @@ get_default_screenshotting_data, ranged_type) from scilpy.image.utils import check_slice_indices +from scilpy.version import version_string from scilpy.viz.screenshot import (compose_mosaic, screenshot_contour, screenshot_volume) @@ -63,9 +64,9 @@ def _build_arg_parser(): - p = argparse.ArgumentParser(description=__doc__, - formatter_class=argparse.RawTextHelpFormatter) + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) xg = p.add_argument_group(title="Input overlays") vg = p.add_argument_group(title="Volume rendering") diff --git a/scripts/scil_volume_apply_transform.py b/scripts/scil_volume_apply_transform.py index 4d9ed555e..4ebab865a 100755 --- a/scripts/scil_volume_apply_transform.py +++ b/scripts/scil_volume_apply_transform.py @@ -21,11 +21,13 @@ assert_outputs_exist, add_verbose_arg, load_matrix_in_any_format) from scilpy.utils.filenames import split_name_with_nii +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter, - description=__doc__) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_file', help='Path of the file to be transformed (nii or nii.gz)') diff --git a/scripts/scil_volume_b0_synthesis.py b/scripts/scil_volume_b0_synthesis.py index c12ba1a91..31a974360 100755 --- a/scripts/scil_volume_b0_synthesis.py +++ b/scripts/scil_volume_b0_synthesis.py @@ -16,6 +16,11 @@ - tensorflow-addons - tensorrt - tensorflow +------------------------------------------------------------------------------- +Reference: +[1] Schilling, Kurt G., et al. "Synthesized b0 for diffusion distortion + correction (Synb0-DisCo)." Magnetic resonance imaging 64 (2019): 62-70. +------------------------------------------------------------------------------- """ import argparse @@ -29,18 +34,14 @@ from scilpy.io.utils import (add_overwrite_arg, add_verbose_arg, assert_inputs_exist, assert_outputs_exist, assert_headers_compatible) - -EPILOG = """ -[1] Schilling, Kurt G., et al. "Synthesized b0 for diffusion distortion - correction (Synb0-DisCo)." Magnetic resonance imaging 64 (2019): 62-70. -""" +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser( - description=__doc__, - formatter_class=argparse.RawTextHelpFormatter, - epilog=EPILOG) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) + p.add_argument('in_b0', help='Input b0 image.') p.add_argument('in_b0_mask', diff --git a/scripts/scil_volume_count_non_zero_voxels.py b/scripts/scil_volume_count_non_zero_voxels.py index e58cb7184..27a80a05a 100755 --- a/scripts/scil_volume_count_non_zero_voxels.py +++ b/scripts/scil_volume_count_non_zero_voxels.py @@ -22,11 +22,14 @@ from scilpy.image.volume_operations import count_non_zero_voxels from scilpy.io.utils import assert_inputs_exist, add_verbose_arg, \ assert_outputs_exist, add_overwrite_arg +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser( - description=__doc__, formatter_class=argparse.RawTextHelpFormatter) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) + p.add_argument('in_image', metavar='IN_FILE', help='Input file name, in nifti format.') diff --git a/scripts/scil_volume_crop.py b/scripts/scil_volume_crop.py index 1f8ffb657..b94ecd33d 100755 --- a/scripts/scil_volume_crop.py +++ b/scripts/scil_volume_crop.py @@ -34,11 +34,14 @@ assert_outputs_exist) from scilpy.image.utils import compute_nifti_bounding_box from scilpy.image.volume_operations import crop_volume +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter, - description=__doc__) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) + p.add_argument('in_image', help='Path of the nifti file to crop.') p.add_argument('out_image', diff --git a/scripts/scil_volume_distance_map.py b/scripts/scil_volume_distance_map.py index 4b14918c2..480921ef9 100755 --- a/scripts/scil_volume_distance_map.py +++ b/scripts/scil_volume_distance_map.py @@ -34,11 +34,14 @@ from scilpy.io.image import get_data_as_mask from scilpy.io.utils import add_overwrite_arg, add_verbose_arg, \ assert_headers_compatible, assert_inputs_exist, assert_outputs_exist +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser( - description=__doc__, formatter_class=argparse.RawTextHelpFormatter) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) + p.add_argument('in_mask_1', metavar='IN_SOURCE', help='Input file name, in nifti format.') p.add_argument('in_mask_2', metavar='IN_TARGET', diff --git a/scripts/scil_volume_flip.py b/scripts/scil_volume_flip.py index a9bc9897d..d63191105 100755 --- a/scripts/scil_volume_flip.py +++ b/scripts/scil_volume_flip.py @@ -15,12 +15,14 @@ from scilpy.image.volume_operations import flip_volume from scilpy.io.utils import (add_overwrite_arg, assert_inputs_exist, add_verbose_arg, assert_outputs_exist) +from scilpy.version import version_string def _build_arg_parser(): + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) - p = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter, - description=__doc__) p.add_argument('in_image', help='Path of the input volume (nifti).') p.add_argument('out_image', diff --git a/scripts/scil_volume_math.py b/scripts/scil_volume_math.py index 51aae3f79..ae721aec3 100755 --- a/scripts/scil_volume_math.py +++ b/scripts/scil_volume_math.py @@ -28,16 +28,16 @@ add_verbose_arg, assert_outputs_exist) from scilpy.utils import is_float +from scilpy.version import version_string OPERATIONS = get_image_ops() - __doc__ += get_operations_doc(OPERATIONS) def _build_arg_parser(): - p = argparse.ArgumentParser( - formatter_class=argparse.RawTextHelpFormatter, - description=__doc__) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('operation', choices=OPERATIONS.keys(), diff --git a/scripts/scil_volume_pairwise_comparison.py b/scripts/scil_volume_pairwise_comparison.py index 8db1cf550..8c15f12ca 100755 --- a/scripts/scil_volume_pairwise_comparison.py +++ b/scripts/scil_volume_pairwise_comparison.py @@ -48,12 +48,14 @@ validate_nbr_processes) from scilpy.image.labels import get_data_as_labels from scilpy.tractanalysis.reproducibility_measures import compare_volume_wrapper +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser( - description=__doc__, - formatter_class=argparse.RawTextHelpFormatter) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) + p.add_argument('in_volumes', nargs='*', help='Path of the input volumes.') p.add_argument('out_json', diff --git a/scripts/scil_volume_remove_outliers_ransac.py b/scripts/scil_volume_remove_outliers_ransac.py index 14da34c21..f4943b84a 100755 --- a/scripts/scil_volume_remove_outliers_ransac.py +++ b/scripts/scil_volume_remove_outliers_ransac.py @@ -21,11 +21,13 @@ add_verbose_arg, assert_inputs_exist, assert_outputs_exist) +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser( - description=__doc__, formatter_class=argparse.RawTextHelpFormatter) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_image', help='Nifti image.') diff --git a/scripts/scil_volume_resample.py b/scripts/scil_volume_resample.py index 0a659e709..dd732930b 100755 --- a/scripts/scil_volume_resample.py +++ b/scripts/scil_volume_resample.py @@ -25,11 +25,13 @@ from scilpy.io.utils import (add_verbose_arg, add_overwrite_arg, assert_inputs_exist, assert_outputs_exist) from scilpy.image.volume_operations import resample_volume +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser( - description=__doc__, formatter_class=argparse.RawTextHelpFormatter) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_image', help='Path of the input volume.') diff --git a/scripts/scil_volume_reshape.py b/scripts/scil_volume_reshape.py index cb2a4f722..6430590ed 100755 --- a/scripts/scil_volume_reshape.py +++ b/scripts/scil_volume_reshape.py @@ -24,11 +24,13 @@ from scilpy.io.utils import (add_verbose_arg, add_overwrite_arg, assert_inputs_exist, assert_outputs_exist) from scilpy.image.volume_operations import reshape_volume +from scilpy.version import version_string def _build_arg_parser(): - p = argparse.ArgumentParser( - description=__doc__, formatter_class=argparse.RawTextHelpFormatter) + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_image', help='Path of the input volume.') diff --git a/scripts/scil_volume_reslice_to_reference.py b/scripts/scil_volume_reslice_to_reference.py index 36bdc1d56..05b35fcaa 100755 --- a/scripts/scil_volume_reslice_to_reference.py +++ b/scripts/scil_volume_reslice_to_reference.py @@ -28,11 +28,13 @@ from scilpy.image.volume_operations import apply_transform from scilpy.io.utils import (add_overwrite_arg, assert_inputs_exist, add_verbose_arg, assert_outputs_exist) +from scilpy.version import version_string def _build_arg_parser(): p = argparse.ArgumentParser(description=__doc__, - formatter_class=argparse.RawTextHelpFormatter) + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_file', help='Path of the image (.nii or .mgz) to be reshaped.') diff --git a/scripts/scil_volume_stats_in_ROI.py b/scripts/scil_volume_stats_in_ROI.py index e31cb29f9..ccb4e16a9 100755 --- a/scripts/scil_volume_stats_in_ROI.py +++ b/scripts/scil_volume_stats_in_ROI.py @@ -27,11 +27,13 @@ assert_headers_compatible) from scilpy.utils.filenames import split_name_with_nii from scilpy.utils.metrics_tools import weighted_mean_std +from scilpy.version import version_string def _build_arg_parser(): p = argparse.ArgumentParser(description=__doc__, - formatter_class=argparse.RawTextHelpFormatter) + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) p.add_argument('in_rois', nargs='+', help='ROIs volume filenames.\nCan be binary masks or ' diff --git a/scripts/scil_volume_stats_in_labels.py b/scripts/scil_volume_stats_in_labels.py index 5ff5c6f7c..eb079b037 100755 --- a/scripts/scil_volume_stats_in_labels.py +++ b/scripts/scil_volume_stats_in_labels.py @@ -24,11 +24,14 @@ from scilpy.io.utils import (add_json_args, add_overwrite_arg, add_verbose_arg, assert_inputs_exist, assert_headers_compatible) from scilpy.utils.filenames import split_name_with_nii +from scilpy.version import version_string def _build_arg_parser(): p = argparse.ArgumentParser(description=__doc__, - formatter_class=argparse.RawTextHelpFormatter) + formatter_class=argparse.RawTextHelpFormatter, + epilog=version_string) + p.add_argument('in_labels', help='Path of the input label file.') p.add_argument('in_labels_lut',