diff --git a/_sources/sct_toolbox.ipynb b/_sources/sct_toolbox.ipynb new file mode 100644 index 000000000..0e8a4af4c --- /dev/null +++ b/_sources/sct_toolbox.ipynb @@ -0,0 +1,1700 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "id": "d3f6e7df", + "metadata": { + "colab_type": "text", + "id": "view-in-github" + }, + "source": [ + "\n", + "\"Open " + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "8d9bfb4a", + "metadata": {}, + "source": [ + "## SCT Toolbox Example\n", + "\n", + "Author: Steffen Bollmann" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "LNzwrF3_Hz5K", + "metadata": { + "id": "LNzwrF3_Hz5K" + }, + "source": [ + "## Setup Neurodesk" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "72vKlCGcHueK", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "72vKlCGcHueK", + "outputId": "81d03155-52fb-461d-ab58-b9f2bdfff5f0" + }, + "outputs": [], + "source": [ + "%%capture\n", + "import os\n", + "import sys\n", + "IN_COLAB = 'google.colab' in sys.modules\n", + "\n", + "if IN_COLAB:\n", + " os.environ[\"LD_PRELOAD\"] = \"\";\n", + " os.environ[\"APPTAINER_BINDPATH\"] = \"/content,/tmp,/cvmfs\"\n", + " os.environ[\"MPLCONFIGDIR\"] = \"/content/matplotlib-mpldir\"\n", + " os.environ[\"LMOD_CMD\"] = \"/usr/share/lmod/lmod/libexec/lmod\"\n", + "\n", + " !curl -J -O https://raw.githubusercontent.com/NeuroDesk/neurocommand/main/googlecolab_setup.sh\n", + " !chmod +x googlecolab_setup.sh\n", + " !./googlecolab_setup.sh\n", + "\n", + " os.environ[\"MODULEPATH\"] = ':'.join(map(str, list(map(lambda x: os.path.join(os.path.abspath('/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/'), x),os.listdir('/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/')))))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "14dea26c-562b-4620-9812-691b5d356929", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "vendor_id\t: AuthenticAMD\n", + "model name\t: AMD EPYC 7742 64-Core Processor\n" + ] + } + ], + "source": [ + "# Output CPU information:\n", + "!cat /proc/cpuinfo | grep 'vendor' | uniq\n", + "!cat /proc/cpuinfo | grep 'model name' | uniq" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "52d527e8-c988-4f60-9d12-cc39e248ad11", + "metadata": { + "id": "52d527e8-c988-4f60-9d12-cc39e248ad11" + }, + "source": [ + "# Demonstrating the Spinal Cord Toolbox (SCT) use via Neurodesk" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "35a53844-066e-4384-83b5-c8328622adea", + "metadata": { + "id": "35a53844-066e-4384-83b5-c8328622adea" + }, + "source": [ + "In Neurodesk we can use lmod to load specific versions of tools. Here we load the spinalcordtoolbox in a specific version:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "7a4b17a6", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "7a4b17a6", + "outputId": "ca697a8f-9694-4179-dac2-834e5e7268ca" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "['spinalcordtoolbox/5.8']" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import lmod\n", + "await lmod.load('spinalcordtoolbox/5.8')\n", + "await lmod.list()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "14ea35b6-b419-41f9-a199-0d727868b23f", + "metadata": { + "id": "14ea35b6-b419-41f9-a199-0d727868b23f" + }, + "source": [ + "In this interactive notebook we will go through a series of processing steps specific to spinal cord MRI analysis. We first need to import the necessary tools and setup the filenames and folders in the notebook environment." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "d320ec74-dd2e-4162-a834-409f822593e4", + "metadata": { + "id": "d320ec74-dd2e-4162-a834-409f822593e4" + }, + "source": [ + "The rest of this notebook is copied from the neurolibre project with minor path modifications and code adjustments to work with the current version of SCT: https://mathieuboudreau.github.io/pipelines-jupyter-book/01/sct_mtsat" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "2e447e8b-a6fd-4365-9da3-3de21a4654b2", + "metadata": { + "id": "2e447e8b-a6fd-4365-9da3-3de21a4654b2" + }, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "import numpy as np\n", + "import sys\n", + "import os\n", + "from os.path import join\n", + "from IPython.display import clear_output\n", + "\n", + "base_path = os.getcwd()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "b46d1f4b-edef-495d-8491-3ddc6510564c", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "b46d1f4b-edef-495d-8491-3ddc6510564c", + "outputId": "c271685b-8424-46e9-c2e9-b255f0f9e0aa" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "--\n", + "Spinal Cord Toolbox (5.8)\n", + "\n", + "sct_download_data -d sct_example_data -o ./sct_example_data\n", + "--\n", + "\n", + "\u001b[33mRemoving existing destination folder 'sct_example_data'\u001b[0m\n", + "Trying URL: https://github.com/spinalcordtoolbox/sct_example_data/releases/download/r20180525/20180525_sct_example_data.zip\n", + "Downloading: 20180525_sct_example_data.zip\n", + "Status: 100%|██████████████████████████████| 44.3M/44.3M [00:02<00:00, 19.2MB/s]\n", + "Creating temporary folder (/tmp/sct-20230615031915.792117-lazrhizb)\n", + "Unzip data to: /tmp/sct-20230615031915.792117-lazrhizb\n", + "Copying data to: sct_example_data\n", + "Removing temporary folders...\n", + "\u001b[0mDone!\n", + "\u001b[0m\n" + ] + } + ], + "source": [ + "# Download example data\n", + "!sct_download_data -d sct_example_data -o ./sct_example_data\n", + "\n", + "# Go to MT folder\n", + "os.chdir('./sct_example_data/mt/')" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "f0eed0e8-f6ce-4e6a-b584-ffc4059f7ab4", + "metadata": { + "id": "f0eed0e8-f6ce-4e6a-b584-ffc4059f7ab4" + }, + "outputs": [], + "source": [ + "# Jupyter Notebook config\n", + "verbose = True # False clears cells\n", + "\n", + "# Folder/filename config\n", + "parent_dirs = os.path.split(base_path)\n", + "mt_folder_relative = os.path.join('sct_example_data/mt')\n", + "qc_path = os.path.join(base_path, 'qc')\n", + "\n", + "t1w = 't1w'\n", + "mt0 = 'mt0'\n", + "mt1 = 'mt1'\n", + "label_c3c4 = 'label_c3c4'\n", + "warp_template2anat = 'warp_template2anat'\n", + "mtr = 'mtr'\n", + "mtsat = 'mtsat'\n", + "t1map = 't1map'\n", + "\n", + "file_ext = '.nii.gz'\n", + "\n", + "if not verbose:\n", + " clear_output()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "03eb4552-18fb-4aab-aaf0-0e9c9a746ef0", + "metadata": { + "id": "03eb4552-18fb-4aab-aaf0-0e9c9a746ef0" + }, + "source": [ + "The first processing step consists in segmenting the spinal cord. This is done automatically using an algorithm called Optic that finds the spinal cord centerline, followed by a second algorithm called DeepSeg-SC that relies on deep learning for segmenting the cord." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "111d856b-ab62-4c78-aebc-3075de9e91e7", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "collapsed": true, + "id": "111d856b-ab62-4c78-aebc-3075de9e91e7", + "jupyter": { + "outputs_hidden": true + }, + "outputId": "08307546-0a0a-4ac7-a34b-5c0a2d97973b", + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "--\n", + "Spinal Cord Toolbox (5.8)\n", + "\n", + "sct_deepseg_sc -i t1w.nii.gz -c t1 -qc /home/jovyan/example-notebooks/structural_imaging/qc\n", + "--\n", + "\n", + "Config deepseg_sc:\n", + " Centerline algorithm: svm\n", + " Brain in image: True\n", + " Kernel dimension: 2d\n", + " Contrast: t1\n", + " Threshold: 0.15\n", + "Creating temporary folder (/tmp/sct-20230615031921.202846-b6pbyd5_)\n", + "Reorient the image to RPI, if necessary...\n", + "Finding the spinal cord centerline...\n", + "Creating temporary folder (/tmp/sct-20230615031922.023141-6cp904ym)\n", + "Remove temporary files...\n", + "\u001b[94mrm -rf /tmp/sct-20230615031922.023141-6cp904ym\u001b[0m\n", + "Cropping the image around the spinal cord...\n", + "Normalizing the intensity...\n", + "Segmenting the spinal cord using deep learning on 2D patches...\n", + "Reassembling the image...\n", + "Resampling the segmentation to the native image resolution using linear interpolation...\n", + "Binarizing the resampled segmentation...\n", + "\u001b[33mImage header specifies datatype 'float32', but array is of type 'uint8'. Header metadata will be overwritten to use 'uint8'.\u001b[0m\n", + "Compute shape analysis: 100%|#################| 17/17 [00:00<00:00, 83.86iter/s]\n", + "Remove temporary files...\n", + "\u001b[94mrm -rf /tmp/sct-20230615031921.202846-b6pbyd5_\u001b[0m\n", + "\n", + "*** Generate Quality Control (QC) html report ***\n", + "Resample images to 0.6x0.6 mm\n", + "\u001b[33mImage header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.\u001b[0m\n", + "QcImage: layout with Axial slice\n", + "Compute center of mass at each slice\n", + "/opt/spinalcordtoolbox-5.8/python/envs/venv_sct/lib/python3.8/site-packages/scipy/ndimage/_measurements.py:1407: RuntimeWarning: invalid value encountered in double_scalars\n", + " results = [sum(input * grids[dir].astype(float), labels, index) / normalizer\n", + "/home/jovyan/example-notebooks/structural_imaging/qc/structural_imaging/sct_example_data/mt/sct_deepseg_sc/2023_06_15_031924.913415/bkg_img.png\n", + "\u001b[94mcp /opt/spinalcordtoolbox-5.8/spinalcordtoolbox/reports/assets/_assets/css/bootstrap-table.min.css /home/jovyan/example-notebooks/structural_imaging/qc/_assets/css\u001b[0m\n", + "\u001b[94mcp /opt/spinalcordtoolbox-5.8/spinalcordtoolbox/reports/assets/_assets/css/bootstrap.min.css /home/jovyan/example-notebooks/structural_imaging/qc/_assets/css\u001b[0m\n", + "\u001b[94mcp /opt/spinalcordtoolbox-5.8/spinalcordtoolbox/reports/assets/_assets/css/bootstrap-theme.min.css /home/jovyan/example-notebooks/structural_imaging/qc/_assets/css\u001b[0m\n", + "\u001b[94mcp /opt/spinalcordtoolbox-5.8/spinalcordtoolbox/reports/assets/_assets/css/style.css /home/jovyan/example-notebooks/structural_imaging/qc/_assets/css\u001b[0m\n", + "\u001b[94mcp /opt/spinalcordtoolbox-5.8/spinalcordtoolbox/reports/assets/_assets/css/select2.min.css /home/jovyan/example-notebooks/structural_imaging/qc/_assets/css\u001b[0m\n", + "\u001b[94mcp /opt/spinalcordtoolbox-5.8/spinalcordtoolbox/reports/assets/_assets/css/bootstrap.min.css.map /home/jovyan/example-notebooks/structural_imaging/qc/_assets/css\u001b[0m\n", + "\u001b[94mcp /opt/spinalcordtoolbox-5.8/spinalcordtoolbox/reports/assets/_assets/js/yaml.min.js /home/jovyan/example-notebooks/structural_imaging/qc/_assets/js\u001b[0m\n", + "\u001b[94mcp /opt/spinalcordtoolbox-5.8/spinalcordtoolbox/reports/assets/_assets/js/bootstrap-table.min.js /home/jovyan/example-notebooks/structural_imaging/qc/_assets/js\u001b[0m\n", + "\u001b[94mcp /opt/spinalcordtoolbox-5.8/spinalcordtoolbox/reports/assets/_assets/js/animation.js /home/jovyan/example-notebooks/structural_imaging/qc/_assets/js\u001b[0m\n", + "\u001b[94mcp /opt/spinalcordtoolbox-5.8/spinalcordtoolbox/reports/assets/_assets/js/bootstrap.min.js /home/jovyan/example-notebooks/structural_imaging/qc/_assets/js\u001b[0m\n", + "\u001b[94mcp /opt/spinalcordtoolbox-5.8/spinalcordtoolbox/reports/assets/_assets/js/select2.min.js /home/jovyan/example-notebooks/structural_imaging/qc/_assets/js\u001b[0m\n", + "\u001b[94mcp /opt/spinalcordtoolbox-5.8/spinalcordtoolbox/reports/assets/_assets/js/main.js /home/jovyan/example-notebooks/structural_imaging/qc/_assets/js\u001b[0m\n", + "\u001b[94mcp /opt/spinalcordtoolbox-5.8/spinalcordtoolbox/reports/assets/_assets/js/jquery-3.1.0.min.js /home/jovyan/example-notebooks/structural_imaging/qc/_assets/js\u001b[0m\n", + "\u001b[94mcp /opt/spinalcordtoolbox-5.8/spinalcordtoolbox/reports/assets/_assets/js/filesaver.min.js /home/jovyan/example-notebooks/structural_imaging/qc/_assets/js\u001b[0m\n", + "\u001b[94mcp /opt/spinalcordtoolbox-5.8/spinalcordtoolbox/reports/assets/_assets/imgs/axial.png /home/jovyan/example-notebooks/structural_imaging/qc/_assets/imgs\u001b[0m\n", + "\u001b[94mcp /opt/spinalcordtoolbox-5.8/spinalcordtoolbox/reports/assets/_assets/imgs/sct_logo.png /home/jovyan/example-notebooks/structural_imaging/qc/_assets/imgs\u001b[0m\n", + "\u001b[94mcp /opt/spinalcordtoolbox-5.8/spinalcordtoolbox/reports/assets/_assets/imgs/f-icon.png /home/jovyan/example-notebooks/structural_imaging/qc/_assets/imgs\u001b[0m\n", + "\u001b[94mcp /opt/spinalcordtoolbox-5.8/spinalcordtoolbox/reports/assets/_assets/imgs/keyright.png /home/jovyan/example-notebooks/structural_imaging/qc/_assets/imgs\u001b[0m\n", + "\u001b[94mcp /opt/spinalcordtoolbox-5.8/spinalcordtoolbox/reports/assets/_assets/imgs/keydown.png /home/jovyan/example-notebooks/structural_imaging/qc/_assets/imgs\u001b[0m\n", + "\u001b[94mcp /opt/spinalcordtoolbox-5.8/spinalcordtoolbox/reports/assets/_assets/imgs/keyup.png /home/jovyan/example-notebooks/structural_imaging/qc/_assets/imgs\u001b[0m\n", + "\u001b[94mcp /opt/spinalcordtoolbox-5.8/spinalcordtoolbox/reports/assets/_assets/imgs/sagittal.png /home/jovyan/example-notebooks/structural_imaging/qc/_assets/imgs\u001b[0m\n", + "\u001b[94mcp /opt/spinalcordtoolbox-5.8/spinalcordtoolbox/reports/assets/_assets/fonts/glyphicons-halflings-regular.woff2 /home/jovyan/example-notebooks/structural_imaging/qc/_assets/fonts\u001b[0m\n", + "\u001b[94mcp /opt/spinalcordtoolbox-5.8/spinalcordtoolbox/reports/assets/_assets/fonts/glyphicons-halflings-regular.eot /home/jovyan/example-notebooks/structural_imaging/qc/_assets/fonts\u001b[0m\n", + "\u001b[94mcp /opt/spinalcordtoolbox-5.8/spinalcordtoolbox/reports/assets/_assets/fonts/glyphicons-halflings-regular.svg /home/jovyan/example-notebooks/structural_imaging/qc/_assets/fonts\u001b[0m\n", + "\u001b[94mcp /opt/spinalcordtoolbox-5.8/spinalcordtoolbox/reports/assets/_assets/fonts/glyphicons-halflings-regular.woff /home/jovyan/example-notebooks/structural_imaging/qc/_assets/fonts\u001b[0m\n", + "\u001b[94mcp /opt/spinalcordtoolbox-5.8/spinalcordtoolbox/reports/assets/_assets/fonts/glyphicons-halflings-regular.ttf /home/jovyan/example-notebooks/structural_imaging/qc/_assets/fonts\u001b[0m\n", + "Successfully generated the QC results in /home/jovyan/example-notebooks/structural_imaging/qc/_json/qc_2023_06_15_031924.913415.json\n", + "\u001b[0m\n", + "To see the results in a browser, type:\u001b[0m\n", + "\u001b[92mxdg-open /home/jovyan/example-notebooks/structural_imaging/qc/index.html\n", + "\u001b[0m\n" + ] + } + ], + "source": [ + "# Segment spinal cord\n", + "!sct_deepseg_sc -i {t1w+file_ext} -c t1 -qc {qc_path}\n", + "\n", + "if not verbose:\n", + " clear_output()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "397195b5-1536-45b1-bb52-d17d84d2fb39", + "metadata": { + "id": "397195b5-1536-45b1-bb52-d17d84d2fb39" + }, + "source": [ + "Results of the segmentation appear in Figure 1." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "aa0a7f99-98d9-487b-9756-0415727a5339", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 191 + }, + "id": "aa0a7f99-98d9-487b-9756-0415727a5339", + "outputId": "d0e67792-fe2d-4e0f-bff1-955a0262b9e3" + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Plot QC figures\n", + "\n", + "if sys.platform == 'darwin':\n", + " # For local testing on OSX \n", + " sct_deepseg_sc_qc = 'qc/sct_example_data/mt/sct_deepseg_sc'\n", + "else:\n", + " # For linux and on-line Binder execution\n", + " sct_deepseg_sc_qc = join(qc_path, parent_dirs[-1], mt_folder_relative, 'sct_deepseg_sc')\n", + "\n", + "folders = list(filter(lambda x: os.path.isdir(os.path.join(sct_deepseg_sc_qc, x)), os.listdir(sct_deepseg_sc_qc)))\n", + "\n", + "qc_date = max(folders)\n", + "\n", + "sct_deepseg_sc_qc_dir = join(sct_deepseg_sc_qc, qc_date)\n", + "\n", + "bkg = mpimg.imread(join(sct_deepseg_sc_qc_dir, 'bkg_img.png'))\n", + "overlay = mpimg.imread(join(sct_deepseg_sc_qc_dir, 'overlay_img.png'))\n", + "plt.figure(figsize = (20,2))\n", + "plt.axis('off')\n", + "imgplot = plt.imshow(bkg)\n", + "imgplot = plt.imshow(overlay,alpha=0.3)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "2a2fce01-c4e9-4bdd-bc7f-a7e4a1c31a3a", + "metadata": { + "id": "2a2fce01-c4e9-4bdd-bc7f-a7e4a1c31a3a" + }, + "source": [ + "Figure 1. Quality control (QC) SCT module segmentation results. The segmentation (in red) is overlaid on the T1-weighted anatomical scan (in grayscale). Orientation is axial.\n", + "\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "892be880-a33f-4028-b626-d3b96b6ad566", + "metadata": { + "id": "892be880-a33f-4028-b626-d3b96b6ad566" + }, + "source": [ + "Using the generated segmentation, we create a mask around the spinal cord which will be used to crop the image for faster processing and more accurate registration results: the registration algorithm will concentrate on the spinal cord and not on the surrounding tissue (e.g., muscles, neck fat, etc.) which could move independently from the spinal cord and hence produce spurious motion correction results." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "b15c914d-952c-4351-a18b-a1a10bb91347", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "collapsed": true, + "id": "b15c914d-952c-4351-a18b-a1a10bb91347", + "jupyter": { + "outputs_hidden": true + }, + "outputId": "06f4ea77-475d-43ce-8aff-403afbcbc97f", + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "--\n", + "Spinal Cord Toolbox (5.8)\n", + "\n", + "sct_create_mask -i t1w.nii.gz -p centerline,t1w_seg.nii.gz -size 35mm -o t1w_mask.nii.gz\n", + "--\n", + "\n", + "\u001b[0m OK: t1w_seg.nii.gz\u001b[0m\n", + "Creating temporary folder (/tmp/sct-20230615031929.970280-create_mask-uyscn4aj)\n", + "\u001b[0m\n", + "Orientation:\u001b[0m\n", + "\u001b[0m LPI\u001b[0m\n", + "\u001b[0m\n", + "Dimensions:\u001b[0m\n", + "(192, 192, 22, 1, 0.8958333, 0.8958333, 5.000001, 1)\n", + "\u001b[0m\n", + "Create mask...\u001b[0m\n", + "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/scripts/sct_create_mask.py:230: DeprecationWarning: get_header method is deprecated.\n", + "Please use the ``img.header`` property instead.\n", + "\n", + "* deprecated from version: 2.1\n", + "* Will raise as of version: 4.0\n", + " hdr = centerline.get_header() # get header\n", + "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/scripts/sct_create_mask.py:233: DeprecationWarning: get_data() is deprecated in favor of get_fdata(), which has a more predictable return type. To obtain get_data() behavior going forward, use numpy.asanyarray(img.dataobj).\n", + "\n", + "* deprecated from version: 3.0\n", + "* Will raise as of version: 5.0\n", + " data_centerline = centerline.get_data() # get centerline\n", + "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/scripts/sct_create_mask.py:245: DeprecationWarning: Please use `center_of_mass` from the `scipy.ndimage` namespace, the `scipy.ndimage.measurements` namespace is deprecated.\n", + " cx[iz], cy[iz] = ndimage.measurements.center_of_mass(np.array(data_centerline[:, :, iz]))\n", + "\u001b[33mImage header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.\u001b[0m\n", + "\u001b[33mImage header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.\u001b[0m\n", + "\u001b[33mImage header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.\u001b[0m\n", + "\u001b[33mImage header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.\u001b[0m\n", + "\u001b[33mImage header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.\u001b[0m\n", + "\u001b[33mImage header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.\u001b[0m\n", + "\u001b[33mImage header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.\u001b[0m\n", + "\u001b[33mImage header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.\u001b[0m\n", + "\u001b[33mImage header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.\u001b[0m\n", + "\u001b[33mImage header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.\u001b[0m\n", + "\u001b[33mImage header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.\u001b[0m\n", + "\u001b[33mImage header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.\u001b[0m\n", + "\u001b[33mImage header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.\u001b[0m\n", + "\u001b[33mImage header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.\u001b[0m\n", + "\u001b[33mImage header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.\u001b[0m\n", + "\u001b[33mImage header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.\u001b[0m\n", + "\u001b[33mImage header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.\u001b[0m\n", + "\u001b[33mImage header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.\u001b[0m\n", + "\u001b[33mImage header specifies datatype 'int16', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.\u001b[0m\n", + "\u001b[0m\n", + "Remove temporary files...\u001b[0m\n", + "\u001b[94mrm -rf /tmp/sct-20230615031929.970280-create_mask-uyscn4aj\u001b[0m\n", + "\n", + "--\n", + "Spinal Cord Toolbox (5.8)\n", + "\n", + "sct_crop_image -i t1w.nii.gz -m t1w_mask.nii.gz -o t1w_crop.nii.gz\n", + "--\n", + "\n", + "Bounding box: x=[73, 118], y=[69, 112], z=[4, 21]\n", + "Cropping the image...\n" + ] + } + ], + "source": [ + "# Create mask\n", + "!sct_create_mask -i {t1w+file_ext} -p centerline,{t1w+'_seg'+file_ext} -size 35mm -o {t1w+'_mask'+file_ext}\n", + "\n", + "# Crop data for faster processing\n", + "!sct_crop_image -i {t1w+file_ext} -m {t1w+'_mask'+file_ext} -o {t1w+'_crop'+file_ext}\n", + "\n", + "if not verbose:\n", + " clear_output()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "ca93d3bb-d438-48ff-b4f8-b470fcb58403", + "metadata": { + "id": "ca93d3bb-d438-48ff-b4f8-b470fcb58403" + }, + "source": [ + "Then, we register the proton density weighted (PD) image to the T1w image, and the MT-weighted image to the T1w image, so we end up with the T1w, MTw and PDw images all aligned together, which is a necessary condition for then computing quantitative MR metrics (here: MTsat).\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "155381a3-3f53-45cb-b2fd-9c13fff27055", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "collapsed": true, + "id": "155381a3-3f53-45cb-b2fd-9c13fff27055", + "jupyter": { + "outputs_hidden": true, + "source_hidden": true + }, + "outputId": "3935a350-580c-4f5e-c8dc-f1d0a16e7bde", + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "--\n", + "Spinal Cord Toolbox (5.8)\n", + "\n", + "sct_register_multimodal -i mt0.nii.gz -d t1w_crop.nii.gz -param step=1,type=im,algo=rigid,slicewise=1,metric=CC -x spline\n", + "--\n", + "\n", + "\u001b[0m\n", + "Input parameters:\u001b[0m\n", + "\u001b[0m Source .............. mt0.nii.gz (192, 192, 22)\u001b[0m\n", + "\u001b[0m Destination ......... t1w_crop.nii.gz (45, 43, 17)\u001b[0m\n", + "\u001b[0m Init transfo ........ \u001b[0m\n", + "\u001b[0m Mask ................ \u001b[0m\n", + "\u001b[0m Output name ......... \u001b[0m\n", + "\u001b[0m Remove temp files ... 1\u001b[0m\n", + "\u001b[0m Verbose ............. 1\u001b[0m\n", + "\u001b[0m\n", + "Check if input data are 3D...\u001b[0m\n", + "Creating temporary folder (/tmp/sct-20230615031937.629746-register-d3p7boj6)\n", + "\u001b[0m\n", + "Copying input data to tmp folder and convert to nii...\u001b[0m\n", + "\u001b[0m\n", + "--\n", + "ESTIMATE TRANSFORMATION FOR STEP #0\u001b[0m\n", + "\u001b[0mRegistration parameters:\u001b[0m\n", + "\u001b[0m type ........... im\u001b[0m\n", + "\u001b[0m algo ........... syn\u001b[0m\n", + "\u001b[0m slicewise ...... 0\u001b[0m\n", + "\u001b[0m metric ......... MI\u001b[0m\n", + "\u001b[0m samplStrategy .. None\u001b[0m\n", + "\u001b[0m samplPercent ... 0.2\u001b[0m\n", + "\u001b[0m iter ........... 0\u001b[0m\n", + "\u001b[0m smooth ......... 0\u001b[0m\n", + "\u001b[0m laplacian ...... 0\u001b[0m\n", + "\u001b[0m shrink ......... 1\u001b[0m\n", + "\u001b[0m gradStep ....... 0.5\u001b[0m\n", + "\u001b[0m deformation .... 1x1x0\u001b[0m\n", + "\u001b[0m init ........... \u001b[0m\n", + "\u001b[0m poly ........... 5\u001b[0m\n", + "\u001b[0m filter_size .... 5\u001b[0m\n", + "\u001b[0m dof ............ Tx_Ty_Tz_Rx_Ry_Rz\u001b[0m\n", + "\u001b[0m smoothWarpXY ... 2\u001b[0m\n", + "\u001b[0m rot_method ..... pca\u001b[0m\n", + "\n", + "Estimate transformation\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 3 --transform 'syn[0.5,3,0]' --metric 'MI[dest_RPI.nii,src.nii,1,32]' --convergence 0 --shrink-factors 1 --smoothing-sigmas 0mm --restrict-deformation 1x1x0 --output '[step0,src_regStep0.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20230615031937.629746-register-d3p7boj6\u001b[0m\n", + "\u001b[0m\n", + "--\n", + "ESTIMATE TRANSFORMATION FOR STEP #1\u001b[0m\n", + "\u001b[0m\n", + "Apply transformation from previous step\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i src.nii -o src_reg.nii -t warp_forward_0.nii.gz -r dest_RPI.nii -n 'BSpline[3]' # in /tmp/sct-20230615031937.629746-register-d3p7boj6\u001b[0m\n", + "\u001b[0mRegistration parameters:\u001b[0m\n", + "\u001b[0m type ........... im\u001b[0m\n", + "\u001b[0m algo ........... rigid\u001b[0m\n", + "\u001b[0m slicewise ...... 1\u001b[0m\n", + "\u001b[0m metric ......... CC\u001b[0m\n", + "\u001b[0m samplStrategy .. None\u001b[0m\n", + "\u001b[0m samplPercent ... 0.2\u001b[0m\n", + "\u001b[0m iter ........... 10\u001b[0m\n", + "\u001b[0m smooth ......... 0\u001b[0m\n", + "\u001b[0m laplacian ...... 0\u001b[0m\n", + "\u001b[0m shrink ......... 1\u001b[0m\n", + "\u001b[0m gradStep ....... 0.5\u001b[0m\n", + "\u001b[0m deformation .... 1x1x0\u001b[0m\n", + "\u001b[0m init ........... \u001b[0m\n", + "\u001b[0m poly ........... 5\u001b[0m\n", + "\u001b[0m filter_size .... 5\u001b[0m\n", + "\u001b[0m dof ............ Tx_Ty_Tz_Rx_Ry_Rz\u001b[0m\n", + "\u001b[0m smoothWarpXY ... 2\u001b[0m\n", + "\u001b[0m rot_method ..... pca\u001b[0m\n", + "Creating temporary folder (/tmp/sct-20230615031938.246565-register-4fb0gfrc)\n", + "\n", + "Copy input data to temp folder...\n", + "\n", + "Get image dimensions of destination image...\n", + " matrix size: 45 x 43 x 17\n", + " voxel size: 0.8958333mm x 0.8958333mm x 17mm\n", + "\n", + "Split input volume...\n", + "\n", + "Split destination volume...\n", + "Registering slice 0/16...\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0000.nii,src_Z0000.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0000,src_Z0000_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0000.nii,src_Z0000.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00000Warp.nii.gz -R dest_Z0000.nii warp2d_null0Warp.nii.gz warp2d_00000GenericAffine.mat # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00000InverseWarp.nii.gz -R src_Z0000.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00000GenericAffine.mat # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "Registering slice 1/16...\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0001.nii,src_Z0001.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0001,src_Z0001_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0001.nii,src_Z0001.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00010Warp.nii.gz -R dest_Z0001.nii warp2d_null0Warp.nii.gz warp2d_00010GenericAffine.mat # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00010InverseWarp.nii.gz -R src_Z0001.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00010GenericAffine.mat # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "Registering slice 2/16...\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0002.nii,src_Z0002.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0002,src_Z0002_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0002.nii,src_Z0002.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00020Warp.nii.gz -R dest_Z0002.nii warp2d_null0Warp.nii.gz warp2d_00020GenericAffine.mat # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00020InverseWarp.nii.gz -R src_Z0002.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00020GenericAffine.mat # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "Registering slice 3/16...\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0003.nii,src_Z0003.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0003,src_Z0003_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0003.nii,src_Z0003.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00030Warp.nii.gz -R dest_Z0003.nii warp2d_null0Warp.nii.gz warp2d_00030GenericAffine.mat # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00030InverseWarp.nii.gz -R src_Z0003.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00030GenericAffine.mat # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "Registering slice 4/16...\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0004.nii,src_Z0004.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0004,src_Z0004_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0004.nii,src_Z0004.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00040Warp.nii.gz -R dest_Z0004.nii warp2d_null0Warp.nii.gz warp2d_00040GenericAffine.mat # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00040InverseWarp.nii.gz -R src_Z0004.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00040GenericAffine.mat # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "Registering slice 5/16...\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0005.nii,src_Z0005.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0005,src_Z0005_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0005.nii,src_Z0005.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00050Warp.nii.gz -R dest_Z0005.nii warp2d_null0Warp.nii.gz warp2d_00050GenericAffine.mat # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00050InverseWarp.nii.gz -R src_Z0005.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00050GenericAffine.mat # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "Registering slice 6/16...\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0006.nii,src_Z0006.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0006,src_Z0006_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0006.nii,src_Z0006.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00060Warp.nii.gz -R dest_Z0006.nii warp2d_null0Warp.nii.gz warp2d_00060GenericAffine.mat # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00060InverseWarp.nii.gz -R src_Z0006.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00060GenericAffine.mat # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "Registering slice 7/16...\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0007.nii,src_Z0007.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0007,src_Z0007_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0007.nii,src_Z0007.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00070Warp.nii.gz -R dest_Z0007.nii warp2d_null0Warp.nii.gz warp2d_00070GenericAffine.mat # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00070InverseWarp.nii.gz -R src_Z0007.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00070GenericAffine.mat # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "Registering slice 8/16...\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0008.nii,src_Z0008.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0008,src_Z0008_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0008.nii,src_Z0008.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00080Warp.nii.gz -R dest_Z0008.nii warp2d_null0Warp.nii.gz warp2d_00080GenericAffine.mat # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00080InverseWarp.nii.gz -R src_Z0008.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00080GenericAffine.mat # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "Registering slice 9/16...\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0009.nii,src_Z0009.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0009,src_Z0009_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0009.nii,src_Z0009.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00090Warp.nii.gz -R dest_Z0009.nii warp2d_null0Warp.nii.gz warp2d_00090GenericAffine.mat # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00090InverseWarp.nii.gz -R src_Z0009.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00090GenericAffine.mat # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "Registering slice 10/16...\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0010.nii,src_Z0010.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0010,src_Z0010_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0010.nii,src_Z0010.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00100Warp.nii.gz -R dest_Z0010.nii warp2d_null0Warp.nii.gz warp2d_00100GenericAffine.mat # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00100InverseWarp.nii.gz -R src_Z0010.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00100GenericAffine.mat # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "Registering slice 11/16...\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0011.nii,src_Z0011.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0011,src_Z0011_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0011.nii,src_Z0011.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00110Warp.nii.gz -R dest_Z0011.nii warp2d_null0Warp.nii.gz warp2d_00110GenericAffine.mat # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00110InverseWarp.nii.gz -R src_Z0011.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00110GenericAffine.mat # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "Registering slice 12/16...\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0012.nii,src_Z0012.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0012,src_Z0012_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0012.nii,src_Z0012.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00120Warp.nii.gz -R dest_Z0012.nii warp2d_null0Warp.nii.gz warp2d_00120GenericAffine.mat # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00120InverseWarp.nii.gz -R src_Z0012.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00120GenericAffine.mat # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "Registering slice 13/16...\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0013.nii,src_Z0013.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0013,src_Z0013_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0013.nii,src_Z0013.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00130Warp.nii.gz -R dest_Z0013.nii warp2d_null0Warp.nii.gz warp2d_00130GenericAffine.mat # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00130InverseWarp.nii.gz -R src_Z0013.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00130GenericAffine.mat # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "Registering slice 14/16...\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0014.nii,src_Z0014.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0014,src_Z0014_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0014.nii,src_Z0014.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00140Warp.nii.gz -R dest_Z0014.nii warp2d_null0Warp.nii.gz warp2d_00140GenericAffine.mat # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00140InverseWarp.nii.gz -R src_Z0014.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00140GenericAffine.mat # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "Registering slice 15/16...\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0015.nii,src_Z0015.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0015,src_Z0015_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0015.nii,src_Z0015.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00150Warp.nii.gz -R dest_Z0015.nii warp2d_null0Warp.nii.gz warp2d_00150GenericAffine.mat # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00150InverseWarp.nii.gz -R src_Z0015.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00150GenericAffine.mat # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "Registering slice 16/16...\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0016.nii,src_Z0016.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0016,src_Z0016_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0016.nii,src_Z0016.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00160Warp.nii.gz -R dest_Z0016.nii warp2d_null0Warp.nii.gz warp2d_00160GenericAffine.mat # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00160InverseWarp.nii.gz -R src_Z0016.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00160GenericAffine.mat # in /tmp/sct-20230615031938.246565-register-4fb0gfrc\u001b[0m\n", + "\n", + "Merge warping fields along z...\n", + "\n", + "Move warping fields...\n", + "cp step1Warp.nii.gz /tmp/sct-20230615031937.629746-register-d3p7boj6\n", + "cp step1InverseWarp.nii.gz /tmp/sct-20230615031937.629746-register-d3p7boj6\n", + "rm -rf /tmp/sct-20230615031938.246565-register-4fb0gfrc\n", + "\u001b[0m\n", + "Concatenate transformations...\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 3 warp_src2dest.nii.gz -R dest.nii warp_forward_1.nii.gz warp_forward_0.nii.gz # in /tmp/sct-20230615031937.629746-register-d3p7boj6\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 3 warp_dest2src.nii.gz -R src.nii warp_inverse_0.nii.gz warp_inverse_1.nii.gz # in /tmp/sct-20230615031937.629746-register-d3p7boj6\u001b[0m\n", + "\u001b[0m\n", + "Apply transfo source --> dest...\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i src.nii -o src_reg.nii -t warp_src2dest.nii.gz -r dest.nii -n 'BSpline[3]' # in /tmp/sct-20230615031937.629746-register-d3p7boj6\u001b[0m\n", + "\u001b[0m\n", + "Apply transfo dest --> source...\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i dest.nii -o dest_reg.nii -t warp_dest2src.nii.gz -r src.nii -n 'BSpline[3]' # in /tmp/sct-20230615031937.629746-register-d3p7boj6\u001b[0m\n", + "\u001b[0m\n", + "Generate output files...\u001b[0m\n", + "File created: mt0_reg.nii.gz\n", + "\u001b[94mmv /tmp/sct-20230615031937.629746-register-d3p7boj6/warp_src2dest.nii.gz warp_mt02t1w_crop.nii.gz\u001b[0m\n", + "File created: warp_mt02t1w_crop.nii.gz\n", + "File created: t1w_crop_reg.nii.gz\n", + "\u001b[94mmv /tmp/sct-20230615031937.629746-register-d3p7boj6/warp_dest2src.nii.gz warp_t1w_crop2mt0.nii.gz\u001b[0m\n", + "File created: warp_t1w_crop2mt0.nii.gz\n", + "\u001b[0m\n", + "Remove temporary files...\u001b[0m\n", + "\u001b[94mrm -rf /tmp/sct-20230615031937.629746-register-d3p7boj6\u001b[0m\n", + "\u001b[0m\n", + "Finished! Elapsed time: 7s\u001b[0m\n", + "\n", + "--\n", + "Spinal Cord Toolbox (5.8)\n", + "\n", + "sct_register_multimodal -i mt1.nii.gz -d t1w_crop.nii.gz -param step=1,type=im,algo=rigid,slicewise=1,metric=CC -x spline\n", + "--\n", + "\n", + "\u001b[0m\n", + "Input parameters:\u001b[0m\n", + "\u001b[0m Source .............. mt1.nii.gz (192, 192, 22)\u001b[0m\n", + "\u001b[0m Destination ......... t1w_crop.nii.gz (45, 43, 17)\u001b[0m\n", + "\u001b[0m Init transfo ........ \u001b[0m\n", + "\u001b[0m Mask ................ \u001b[0m\n", + "\u001b[0m Output name ......... \u001b[0m\n", + "\u001b[0m Remove temp files ... 1\u001b[0m\n", + "\u001b[0m Verbose ............. 1\u001b[0m\n", + "\u001b[0m\n", + "Check if input data are 3D...\u001b[0m\n", + "Creating temporary folder (/tmp/sct-20230615031947.925426-register-fjfsnf5q)\n", + "\u001b[0m\n", + "Copying input data to tmp folder and convert to nii...\u001b[0m\n", + "\u001b[0m\n", + "--\n", + "ESTIMATE TRANSFORMATION FOR STEP #0\u001b[0m\n", + "\u001b[0mRegistration parameters:\u001b[0m\n", + "\u001b[0m type ........... im\u001b[0m\n", + "\u001b[0m algo ........... syn\u001b[0m\n", + "\u001b[0m slicewise ...... 0\u001b[0m\n", + "\u001b[0m metric ......... MI\u001b[0m\n", + "\u001b[0m samplStrategy .. None\u001b[0m\n", + "\u001b[0m samplPercent ... 0.2\u001b[0m\n", + "\u001b[0m iter ........... 0\u001b[0m\n", + "\u001b[0m smooth ......... 0\u001b[0m\n", + "\u001b[0m laplacian ...... 0\u001b[0m\n", + "\u001b[0m shrink ......... 1\u001b[0m\n", + "\u001b[0m gradStep ....... 0.5\u001b[0m\n", + "\u001b[0m deformation .... 1x1x0\u001b[0m\n", + "\u001b[0m init ........... \u001b[0m\n", + "\u001b[0m poly ........... 5\u001b[0m\n", + "\u001b[0m filter_size .... 5\u001b[0m\n", + "\u001b[0m dof ............ Tx_Ty_Tz_Rx_Ry_Rz\u001b[0m\n", + "\u001b[0m smoothWarpXY ... 2\u001b[0m\n", + "\u001b[0m rot_method ..... pca\u001b[0m\n", + "\n", + "Estimate transformation\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 3 --transform 'syn[0.5,3,0]' --metric 'MI[dest_RPI.nii,src.nii,1,32]' --convergence 0 --shrink-factors 1 --smoothing-sigmas 0mm --restrict-deformation 1x1x0 --output '[step0,src_regStep0.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20230615031947.925426-register-fjfsnf5q\u001b[0m\n", + "\u001b[0m\n", + "--\n", + "ESTIMATE TRANSFORMATION FOR STEP #1\u001b[0m\n", + "\u001b[0m\n", + "Apply transformation from previous step\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i src.nii -o src_reg.nii -t warp_forward_0.nii.gz -r dest_RPI.nii -n 'BSpline[3]' # in /tmp/sct-20230615031947.925426-register-fjfsnf5q\u001b[0m\n", + "\u001b[0mRegistration parameters:\u001b[0m\n", + "\u001b[0m type ........... im\u001b[0m\n", + "\u001b[0m algo ........... rigid\u001b[0m\n", + "\u001b[0m slicewise ...... 1\u001b[0m\n", + "\u001b[0m metric ......... CC\u001b[0m\n", + "\u001b[0m samplStrategy .. None\u001b[0m\n", + "\u001b[0m samplPercent ... 0.2\u001b[0m\n", + "\u001b[0m iter ........... 10\u001b[0m\n", + "\u001b[0m smooth ......... 0\u001b[0m\n", + "\u001b[0m laplacian ...... 0\u001b[0m\n", + "\u001b[0m shrink ......... 1\u001b[0m\n", + "\u001b[0m gradStep ....... 0.5\u001b[0m\n", + "\u001b[0m deformation .... 1x1x0\u001b[0m\n", + "\u001b[0m init ........... \u001b[0m\n", + "\u001b[0m poly ........... 5\u001b[0m\n", + "\u001b[0m filter_size .... 5\u001b[0m\n", + "\u001b[0m dof ............ Tx_Ty_Tz_Rx_Ry_Rz\u001b[0m\n", + "\u001b[0m smoothWarpXY ... 2\u001b[0m\n", + "\u001b[0m rot_method ..... pca\u001b[0m\n", + "Creating temporary folder (/tmp/sct-20230615031948.175555-register-jzu96wdx)\n", + "\n", + "Copy input data to temp folder...\n", + "\n", + "Get image dimensions of destination image...\n", + " matrix size: 45 x 43 x 17\n", + " voxel size: 0.8958333mm x 0.8958333mm x 17mm\n", + "\n", + "Split input volume...\n", + "\n", + "Split destination volume...\n", + "Registering slice 0/16...\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0000.nii,src_Z0000.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0000,src_Z0000_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0000.nii,src_Z0000.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00000Warp.nii.gz -R dest_Z0000.nii warp2d_null0Warp.nii.gz warp2d_00000GenericAffine.mat # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00000InverseWarp.nii.gz -R src_Z0000.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00000GenericAffine.mat # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "Registering slice 1/16...\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0001.nii,src_Z0001.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0001,src_Z0001_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0001.nii,src_Z0001.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00010Warp.nii.gz -R dest_Z0001.nii warp2d_null0Warp.nii.gz warp2d_00010GenericAffine.mat # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00010InverseWarp.nii.gz -R src_Z0001.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00010GenericAffine.mat # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "Registering slice 2/16...\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0002.nii,src_Z0002.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0002,src_Z0002_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0002.nii,src_Z0002.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00020Warp.nii.gz -R dest_Z0002.nii warp2d_null0Warp.nii.gz warp2d_00020GenericAffine.mat # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00020InverseWarp.nii.gz -R src_Z0002.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00020GenericAffine.mat # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "Registering slice 3/16...\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0003.nii,src_Z0003.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0003,src_Z0003_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0003.nii,src_Z0003.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00030Warp.nii.gz -R dest_Z0003.nii warp2d_null0Warp.nii.gz warp2d_00030GenericAffine.mat # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00030InverseWarp.nii.gz -R src_Z0003.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00030GenericAffine.mat # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "Registering slice 4/16...\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0004.nii,src_Z0004.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0004,src_Z0004_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0004.nii,src_Z0004.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00040Warp.nii.gz -R dest_Z0004.nii warp2d_null0Warp.nii.gz warp2d_00040GenericAffine.mat # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00040InverseWarp.nii.gz -R src_Z0004.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00040GenericAffine.mat # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "Registering slice 5/16...\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0005.nii,src_Z0005.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0005,src_Z0005_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0005.nii,src_Z0005.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00050Warp.nii.gz -R dest_Z0005.nii warp2d_null0Warp.nii.gz warp2d_00050GenericAffine.mat # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00050InverseWarp.nii.gz -R src_Z0005.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00050GenericAffine.mat # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "Registering slice 6/16...\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0006.nii,src_Z0006.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0006,src_Z0006_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0006.nii,src_Z0006.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00060Warp.nii.gz -R dest_Z0006.nii warp2d_null0Warp.nii.gz warp2d_00060GenericAffine.mat # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00060InverseWarp.nii.gz -R src_Z0006.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00060GenericAffine.mat # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "Registering slice 7/16...\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0007.nii,src_Z0007.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0007,src_Z0007_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0007.nii,src_Z0007.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00070Warp.nii.gz -R dest_Z0007.nii warp2d_null0Warp.nii.gz warp2d_00070GenericAffine.mat # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00070InverseWarp.nii.gz -R src_Z0007.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00070GenericAffine.mat # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "Registering slice 8/16...\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0008.nii,src_Z0008.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0008,src_Z0008_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0008.nii,src_Z0008.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00080Warp.nii.gz -R dest_Z0008.nii warp2d_null0Warp.nii.gz warp2d_00080GenericAffine.mat # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00080InverseWarp.nii.gz -R src_Z0008.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00080GenericAffine.mat # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "Registering slice 9/16...\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0009.nii,src_Z0009.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0009,src_Z0009_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0009.nii,src_Z0009.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00090Warp.nii.gz -R dest_Z0009.nii warp2d_null0Warp.nii.gz warp2d_00090GenericAffine.mat # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00090InverseWarp.nii.gz -R src_Z0009.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00090GenericAffine.mat # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "Registering slice 10/16...\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0010.nii,src_Z0010.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0010,src_Z0010_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0010.nii,src_Z0010.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00100Warp.nii.gz -R dest_Z0010.nii warp2d_null0Warp.nii.gz warp2d_00100GenericAffine.mat # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00100InverseWarp.nii.gz -R src_Z0010.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00100GenericAffine.mat # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "Registering slice 11/16...\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0011.nii,src_Z0011.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0011,src_Z0011_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0011.nii,src_Z0011.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00110Warp.nii.gz -R dest_Z0011.nii warp2d_null0Warp.nii.gz warp2d_00110GenericAffine.mat # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00110InverseWarp.nii.gz -R src_Z0011.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00110GenericAffine.mat # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "Registering slice 12/16...\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0012.nii,src_Z0012.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0012,src_Z0012_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0012.nii,src_Z0012.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00120Warp.nii.gz -R dest_Z0012.nii warp2d_null0Warp.nii.gz warp2d_00120GenericAffine.mat # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00120InverseWarp.nii.gz -R src_Z0012.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00120GenericAffine.mat # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "Registering slice 13/16...\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0013.nii,src_Z0013.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0013,src_Z0013_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0013.nii,src_Z0013.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00130Warp.nii.gz -R dest_Z0013.nii warp2d_null0Warp.nii.gz warp2d_00130GenericAffine.mat # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00130InverseWarp.nii.gz -R src_Z0013.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00130GenericAffine.mat # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "Registering slice 14/16...\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0014.nii,src_Z0014.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0014,src_Z0014_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0014.nii,src_Z0014.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00140Warp.nii.gz -R dest_Z0014.nii warp2d_null0Warp.nii.gz warp2d_00140GenericAffine.mat # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00140InverseWarp.nii.gz -R src_Z0014.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00140GenericAffine.mat # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "Registering slice 15/16...\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0015.nii,src_Z0015.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0015,src_Z0015_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0015.nii,src_Z0015.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00150Warp.nii.gz -R dest_Z0015.nii warp2d_null0Warp.nii.gz warp2d_00150GenericAffine.mat # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00150InverseWarp.nii.gz -R src_Z0015.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00150GenericAffine.mat # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "Registering slice 16/16...\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0016.nii,src_Z0016.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0016,src_Z0016_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0016.nii,src_Z0016.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00160Warp.nii.gz -R dest_Z0016.nii warp2d_null0Warp.nii.gz warp2d_00160GenericAffine.mat # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00160InverseWarp.nii.gz -R src_Z0016.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00160GenericAffine.mat # in /tmp/sct-20230615031948.175555-register-jzu96wdx\u001b[0m\n", + "\n", + "Merge warping fields along z...\n", + "\n", + "Move warping fields...\n", + "cp step1Warp.nii.gz /tmp/sct-20230615031947.925426-register-fjfsnf5q\n", + "cp step1InverseWarp.nii.gz /tmp/sct-20230615031947.925426-register-fjfsnf5q\n", + "rm -rf /tmp/sct-20230615031948.175555-register-jzu96wdx\n", + "\u001b[0m\n", + "Concatenate transformations...\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 3 warp_src2dest.nii.gz -R dest.nii warp_forward_1.nii.gz warp_forward_0.nii.gz # in /tmp/sct-20230615031947.925426-register-fjfsnf5q\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 3 warp_dest2src.nii.gz -R src.nii warp_inverse_0.nii.gz warp_inverse_1.nii.gz # in /tmp/sct-20230615031947.925426-register-fjfsnf5q\u001b[0m\n", + "\u001b[0m\n", + "Apply transfo source --> dest...\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i src.nii -o src_reg.nii -t warp_src2dest.nii.gz -r dest.nii -n 'BSpline[3]' # in /tmp/sct-20230615031947.925426-register-fjfsnf5q\u001b[0m\n", + "\u001b[0m\n", + "Apply transfo dest --> source...\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i dest.nii -o dest_reg.nii -t warp_dest2src.nii.gz -r src.nii -n 'BSpline[3]' # in /tmp/sct-20230615031947.925426-register-fjfsnf5q\u001b[0m\n", + "\u001b[0m\n", + "Generate output files...\u001b[0m\n", + "File created: mt1_reg.nii.gz\n", + "\u001b[94mmv /tmp/sct-20230615031947.925426-register-fjfsnf5q/warp_src2dest.nii.gz warp_mt12t1w_crop.nii.gz\u001b[0m\n", + "File created: warp_mt12t1w_crop.nii.gz\n", + "\u001b[33mFile t1w_crop_reg.nii.gz already exists. Deleting it..\u001b[0m\n", + "File created: t1w_crop_reg.nii.gz\n", + "\u001b[94mmv /tmp/sct-20230615031947.925426-register-fjfsnf5q/warp_dest2src.nii.gz warp_t1w_crop2mt1.nii.gz\u001b[0m\n", + "File created: warp_t1w_crop2mt1.nii.gz\n", + "\u001b[0m\n", + "Remove temporary files...\u001b[0m\n", + "\u001b[94mrm -rf /tmp/sct-20230615031947.925426-register-fjfsnf5q\u001b[0m\n", + "\u001b[0m\n", + "Finished! Elapsed time: 6s\u001b[0m\n" + ] + } + ], + "source": [ + "# Register PD->T1w\n", + "# Tips: here we only use rigid transformation because both images have very similar sequence parameters. We don't want to use SyN/BSplineSyN to avoid introducing spurious deformations.\n", + "!sct_register_multimodal -i {mt0+file_ext} -d {t1w+'_crop'+file_ext} -param step=1,type=im,algo=rigid,slicewise=1,metric=CC -x spline\n", + "\n", + "# Register MT->T1w\n", + "!sct_register_multimodal -i {mt1+file_ext} -d {t1w+'_crop'+file_ext} -param step=1,type=im,algo=rigid,slicewise=1,metric=CC -x spline\n", + "\n", + "if not verbose:\n", + " clear_output()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "b16a0e73-1e10-4324-8587-8541134e330d", + "metadata": { + "id": "b16a0e73-1e10-4324-8587-8541134e330d" + }, + "source": [ + "Next step consists in registering the PAM50 template to the T1w image. We first create a label, centered in the spinal cord at level C3-C4 intervertebral disc, then we apply a multi-step non-linear registration algorithm." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "e5c5c1d4-ac06-4cb9-9e5b-06fe8d04b341", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "collapsed": true, + "id": "e5c5c1d4-ac06-4cb9-9e5b-06fe8d04b341", + "jupyter": { + "outputs_hidden": true + }, + "outputId": "0416d3bd-2635-43ef-f538-572ac681966b", + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "--\n", + "Spinal Cord Toolbox (5.8)\n", + "\n", + "sct_label_utils -i t1w_seg.nii.gz -create-seg-mid 4 -o label_c3c4.nii.gz\n", + "--\n", + "\n", + "\u001b[0mGenerating output files...\u001b[0m\n", + "\n", + "--\n", + "Spinal Cord Toolbox (5.8)\n", + "\n", + "sct_register_to_template -i t1w_crop.nii.gz -s t1w_seg.nii.gz -ldisc label_c3c4.nii.gz -ref subject -c t1 -param step=1,type=seg,algo=slicereg,metric=MeanSquares,smooth=2:step=2,type=im,algo=bsplinesyn,metric=MeanSquares,iter=5,gradStep=0.5 -qc /home/jovyan/example-notebooks/structural_imaging/qc\n", + "--\n", + "\n", + "\u001b[0m\n", + "Check template files...\u001b[0m\n", + "\u001b[0m OK: /opt/spinalcordtoolbox-5.8/data/PAM50/template/PAM50_t1.nii.gz\u001b[0m\n", + "\u001b[0m OK: /opt/spinalcordtoolbox-5.8/data/PAM50/template/PAM50_label_disc.nii.gz\u001b[0m\n", + "\u001b[0m OK: /opt/spinalcordtoolbox-5.8/data/PAM50/template/PAM50_cord.nii.gz\u001b[0m\n", + "\u001b[0m\n", + "Check parameters:\u001b[0m\n", + "\u001b[0m Data: t1w_crop.nii.gz\u001b[0m\n", + "\u001b[0m Landmarks: label_c3c4.nii.gz\u001b[0m\n", + "\u001b[0m Segmentation: t1w_seg.nii.gz\u001b[0m\n", + "\u001b[0m Path template: /opt/spinalcordtoolbox-5.8/data/PAM50\u001b[0m\n", + "\u001b[0m Remove temp files: 1\u001b[0m\n", + "\u001b[0m\n", + "Check input labels...\u001b[0m\n", + "Creating temporary folder (/tmp/sct-20230615031959.844851-register_to_template-a546d_k1)\n", + "\u001b[0m\n", + "Copying input data to tmp folder and convert to nii...\u001b[0m\n", + "\u001b[0m\n", + "Check if provided labels are available in the template\u001b[0m\n", + "\u001b[93m\u001b[1mWARNING: Only one label is present. Forcing initial transformation to: Tx_Ty_Tz\u001b[0m\n", + "\u001b[0m\n", + "Binarize segmentation\u001b[0m\n", + "\u001b[0m\n", + "Change orientation of input images to RPI...\u001b[0m\n", + "\u001b[0m\n", + "Remove unused label on template. Keep only label present in the input label image...\u001b[0m\n", + "\u001b[33mFile template_label.nii.gz already exists. Will overwrite it.\u001b[0m\n", + "\u001b[33mFile /tmp/sct-20230615031959.844851-register_to_template-a546d_k1/label_projected_rpi.nii.gz already exists. Will overwrite it.\u001b[0m\n", + "\u001b[33mFile /tmp/sct-20230615031959.844851-register_to_template-a546d_k1/template_label.nii.gz already exists. Will overwrite it.\u001b[0m\n", + "Creating temporary folder (/tmp/sct-20230615032002.828765-register-u7sv1fhw)\n", + "\u001b[0m\n", + "Copying input data to tmp folder and convert to nii...\u001b[0m\n", + "\u001b[0m\n", + "--\n", + "ESTIMATE TRANSFORMATION FOR STEP #0\u001b[0m\n", + "\u001b[0mRegistration parameters:\u001b[0m\n", + "\u001b[0m type ........... label\u001b[0m\n", + "\u001b[0m algo ........... syn\u001b[0m\n", + "\u001b[0m slicewise ...... 0\u001b[0m\n", + "\u001b[0m metric ......... MeanSquares\u001b[0m\n", + "\u001b[0m samplStrategy .. None\u001b[0m\n", + "\u001b[0m samplPercent ... 0.2\u001b[0m\n", + "\u001b[0m iter ........... 10\u001b[0m\n", + "\u001b[0m smooth ......... 0\u001b[0m\n", + "\u001b[0m laplacian ...... 0\u001b[0m\n", + "\u001b[0m shrink ......... 1\u001b[0m\n", + "\u001b[0m gradStep ....... 0.5\u001b[0m\n", + "\u001b[0m deformation .... 1x1x0\u001b[0m\n", + "\u001b[0m init ........... \u001b[0m\n", + "\u001b[0m poly ........... 5\u001b[0m\n", + "\u001b[0m filter_size .... 5\u001b[0m\n", + "\u001b[0m dof ............ Tx_Ty_Tz\u001b[0m\n", + "\u001b[0m smoothWarpXY ... 2\u001b[0m\n", + "\u001b[0m rot_method ..... pca\u001b[0m\n", + "\u001b[93m\u001b[1mParameter 'algo=syn' has no effect for 'type=label' registration.\u001b[0m\n", + "Labels src: [[-0.0, 46.220001220703125, -126.34002685546875], [5.0, 46.220001220703125, -126.34002685546875]]\n", + "Labels dest: [[-2.6386161799539707, 12.005123619921505, 10.510888874530792], [2.7172001843343594, 12.074783655814826, 10.06255692243576]]\n", + "Degrees of freedom (dof): Tx_Ty_Tz\n", + "Optimization terminated successfully.\n", + " Current function value: 0.166230\n", + " Iterations: 2\n", + " Function evaluations: 147\n", + "Matrix:\n", + " [[ 1. 0. 0.]\n", + " [ 0. 1. 0.]\n", + " [-0. 0. 1.]]\n", + "Center:\n", + " [ 0.039292 12.03995364 10.2867229 ]\n", + "Translation:\n", + " [[ 2.460708 34.18004758 -136.62674975]]\n", + "\u001b[0m\n", + "--\n", + "ESTIMATE TRANSFORMATION FOR STEP #1\u001b[0m\n", + "\u001b[0m\n", + "Apply transformation from previous step\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i src_seg.nii -o src_seg_reg.nii -t warp_forward_0.txt -r dest_seg_RPI.nii -n NearestNeighbor # in /tmp/sct-20230615032002.828765-register-u7sv1fhw\u001b[0m\n", + "\u001b[0mRegistration parameters:\u001b[0m\n", + "\u001b[0m type ........... seg\u001b[0m\n", + "\u001b[0m algo ........... slicereg\u001b[0m\n", + "\u001b[0m slicewise ...... 0\u001b[0m\n", + "\u001b[0m metric ......... MeanSquares\u001b[0m\n", + "\u001b[0m samplStrategy .. None\u001b[0m\n", + "\u001b[0m samplPercent ... 0.2\u001b[0m\n", + "\u001b[0m iter ........... 10\u001b[0m\n", + "\u001b[0m smooth ......... 2\u001b[0m\n", + "\u001b[0m laplacian ...... 0\u001b[0m\n", + "\u001b[0m shrink ......... 1\u001b[0m\n", + "\u001b[0m gradStep ....... 0.5\u001b[0m\n", + "\u001b[0m deformation .... 1x1x0\u001b[0m\n", + "\u001b[0m init ........... \u001b[0m\n", + "\u001b[0m poly ........... 5\u001b[0m\n", + "\u001b[0m filter_size .... 5\u001b[0m\n", + "\u001b[0m dof ............ Tx_Ty_Tz_Rx_Ry_Rz\u001b[0m\n", + "\u001b[0m smoothWarpXY ... 2\u001b[0m\n", + "\u001b[0m rot_method ..... pca\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsSliceRegularizedRegistration -t 'Translation[0.5]' -m 'MeanSquares[dest_seg_RPI_crop.nii,src_seg_reg_crop.nii,1,4,None,0.2]' -p 5 -i 10 -f 1 -s 2 -v 1 -o '[step1,src_seg_reg_crop_regStep1.nii]' # in /tmp/sct-20230615032002.828765-register-u7sv1fhw\u001b[0m\n", + "\u001b[0m\n", + "--\n", + "ESTIMATE TRANSFORMATION FOR STEP #2\u001b[0m\n", + "\u001b[0m\n", + "Apply transformation from previous step\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i src.nii -o src_reg.nii -t warp_forward_1.nii.gz warp_forward_0.txt -r dest_RPI.nii -n 'BSpline[3]' # in /tmp/sct-20230615032002.828765-register-u7sv1fhw\u001b[0m\n", + "\u001b[0mRegistration parameters:\u001b[0m\n", + "\u001b[0m type ........... im\u001b[0m\n", + "\u001b[0m algo ........... bsplinesyn\u001b[0m\n", + "\u001b[0m slicewise ...... 0\u001b[0m\n", + "\u001b[0m metric ......... MeanSquares\u001b[0m\n", + "\u001b[0m samplStrategy .. None\u001b[0m\n", + "\u001b[0m samplPercent ... 0.2\u001b[0m\n", + "\u001b[0m iter ........... 5\u001b[0m\n", + "\u001b[0m smooth ......... 0\u001b[0m\n", + "\u001b[0m laplacian ...... 0\u001b[0m\n", + "\u001b[0m shrink ......... 1\u001b[0m\n", + "\u001b[0m gradStep ....... 0.5\u001b[0m\n", + "\u001b[0m deformation .... 1x1x0\u001b[0m\n", + "\u001b[0m init ........... \u001b[0m\n", + "\u001b[0m poly ........... 5\u001b[0m\n", + "\u001b[0m filter_size .... 5\u001b[0m\n", + "\u001b[0m dof ............ Tx_Ty_Tz_Rx_Ry_Rz\u001b[0m\n", + "\u001b[0m smoothWarpXY ... 2\u001b[0m\n", + "\u001b[0m rot_method ..... pca\u001b[0m\n", + "\n", + "Estimate transformation\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 3 --transform 'bsplinesyn[0.5,1,3]' --metric 'MeanSquares[dest_RPI_pad.nii,src_reg.nii,1,4]' --convergence 5 --shrink-factors 1 --smoothing-sigmas 0mm --restrict-deformation 1x1x0 --output '[step2,src_reg_regStep2.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20230615032002.828765-register-u7sv1fhw\u001b[0m\n", + "\u001b[0m\n", + "Concatenate transformations...\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 3 warp_src2dest.nii.gz -R dest.nii warp_forward_2.nii.gz warp_forward_1.nii.gz warp_forward_0.txt # in /tmp/sct-20230615032002.828765-register-u7sv1fhw\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 3 warp_dest2src.nii.gz -R src.nii -i warp_forward_0.txt warp_inverse_1.nii.gz warp_inverse_2.nii.gz # in /tmp/sct-20230615032002.828765-register-u7sv1fhw\u001b[0m\n", + "\u001b[0m\n", + "Apply transfo source --> dest...\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i src.nii -o src_reg.nii -t warp_src2dest.nii.gz -r dest.nii -n Linear # in /tmp/sct-20230615032002.828765-register-u7sv1fhw\u001b[0m\n", + "\u001b[0m\n", + "Apply transfo dest --> source...\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i dest.nii -o dest_reg.nii -t warp_dest2src.nii.gz -r src.nii -n Linear # in /tmp/sct-20230615032002.828765-register-u7sv1fhw\u001b[0m\n", + "\u001b[0m\n", + "Generate output files...\u001b[0m\n", + "\u001b[94mmv /tmp/sct-20230615032002.828765-register-u7sv1fhw/src_reg.nii template_reg.nii\u001b[0m\n", + "File created: template_reg.nii\n", + "\u001b[94mmv /tmp/sct-20230615032002.828765-register-u7sv1fhw/warp_src2dest.nii.gz warp_template2data_rpi.nii.gz\u001b[0m\n", + "File created: warp_template2data_rpi.nii.gz\n", + "\u001b[94mmv /tmp/sct-20230615032002.828765-register-u7sv1fhw/dest_reg.nii data_rpi_reg.nii\u001b[0m\n", + "File created: data_rpi_reg.nii\n", + "\u001b[94mmv /tmp/sct-20230615032002.828765-register-u7sv1fhw/warp_dest2src.nii.gz warp_data_rpi2template.nii.gz\u001b[0m\n", + "File created: warp_data_rpi2template.nii.gz\n", + "\u001b[0m\n", + "Remove temporary files...\u001b[0m\n", + "\u001b[94mrm -rf /tmp/sct-20230615032002.828765-register-u7sv1fhw\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i template.nii -o template2anat.nii.gz -t warp_template2anat.nii.gz -r data.nii -n 'BSpline[3]' # in /tmp/sct-20230615031959.844851-register_to_template-a546d_k1\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i data.nii -o anat2template.nii.gz -t warp_anat2template.nii.gz -r template.nii -n 'BSpline[3]' # in /tmp/sct-20230615031959.844851-register_to_template-a546d_k1\u001b[0m\n", + "\u001b[0m\n", + "Generate output files...\u001b[0m\n", + "\u001b[94mmv /tmp/sct-20230615031959.844851-register_to_template-a546d_k1/warp_template2anat.nii.gz warp_template2anat.nii.gz\u001b[0m\n", + "File created: warp_template2anat.nii.gz\n", + "\u001b[94mmv /tmp/sct-20230615031959.844851-register_to_template-a546d_k1/warp_anat2template.nii.gz warp_anat2template.nii.gz\u001b[0m\n", + "File created: warp_anat2template.nii.gz\n", + "\u001b[94mmv /tmp/sct-20230615031959.844851-register_to_template-a546d_k1/template2anat.nii.gz template2anat.nii.gz\u001b[0m\n", + "File created: template2anat.nii.gz\n", + "\u001b[94mmv /tmp/sct-20230615031959.844851-register_to_template-a546d_k1/anat2template.nii.gz anat2template.nii.gz\u001b[0m\n", + "File created: anat2template.nii.gz\n", + "\u001b[0m\n", + "Delete temporary files...\u001b[0m\n", + "\u001b[94mrm -rf /tmp/sct-20230615031959.844851-register_to_template-a546d_k1\u001b[0m\n", + "\u001b[0m\n", + "Finished! Elapsed time: 65s\u001b[0m\n", + "\n", + "*** Generate Quality Control (QC) html report ***\n", + "Resample images to 0.6x0.6 mm\n", + "\u001b[33mImage header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.\u001b[0m\n", + "QcImage: layout with Axial slice\n", + "Compute center of mass at each slice\n", + "/home/jovyan/example-notebooks/structural_imaging/qc/structural_imaging/sct_example_data/mt/sct_register_to_template/2023_06_15_032105.294593/bkg_img.png\n", + "Successfully generated the QC results in /home/jovyan/example-notebooks/structural_imaging/qc/_json/qc_2023_06_15_032105.294593.json\n", + "\u001b[0m\n", + "To see the results in a browser, type:\u001b[0m\n", + "\u001b[92mxdg-open /home/jovyan/example-notebooks/structural_imaging/qc/index.html\n", + "\u001b[0m\n" + ] + } + ], + "source": [ + "# Create label 4 at the mid-FOV, because we know the FOV is centered at C3-C4 disc.\n", + "!sct_label_utils -i {t1w+'_seg'+file_ext} -create-seg-mid 4 -o {label_c3c4+file_ext}\n", + "\n", + "# Register template->T1w_ax (using template-T1w as initial transformation)\n", + "!sct_register_to_template -i {t1w+'_crop'+file_ext} -s {t1w+'_seg'+file_ext} -ldisc {label_c3c4+file_ext} -ref subject -c t1 -param step=1,type=seg,algo=slicereg,metric=MeanSquares,smooth=2:step=2,type=im,algo=bsplinesyn,metric=MeanSquares,iter=5,gradStep=0.5 -qc {qc_path}\n", + "\n", + "if not verbose:\n", + " clear_output()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "31e67191-557b-4e15-95b4-87cc6f1475df", + "metadata": { + "id": "31e67191-557b-4e15-95b4-87cc6f1475df" + }, + "source": [ + "Once the PAM50 is registered with the T1w image, we can warp all objects pertaining to the PAM50 into the T1w native space. These objects notably include a white matter atlas, which will be subsequently used to extract qMR metrics within specific white matter tracts." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "1108bb46-d989-437d-b095-11e072122254", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "collapsed": true, + "id": "1108bb46-d989-437d-b095-11e072122254", + "jupyter": { + "outputs_hidden": true + }, + "outputId": "19a14162-f654-4413-a97e-863d8001b303", + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "--\n", + "Spinal Cord Toolbox (5.8)\n", + "\n", + "sct_warp_template -d t1w_crop.nii.gz -w warp_template2anat.nii.gz -qc /home/jovyan/example-notebooks/structural_imaging/qc\n", + "--\n", + "\n", + "\u001b[0m\n", + "Check parameters:\u001b[0m\n", + "\u001b[0m Working directory ........ /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[0m Destination image ........ t1w_crop.nii.gz\u001b[0m\n", + "\u001b[0m Warping field ............ warp_template2anat.nii.gz\u001b[0m\n", + "\u001b[0m Path template ............ /opt/spinalcordtoolbox-5.8/data/PAM50\u001b[0m\n", + "\u001b[0m Output folder ............ label\n", + "\u001b[0m\n", + "\u001b[0m\n", + "WARP TEMPLATE:\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/template/PAM50_t1.nii.gz -o label/template/PAM50_t1.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/template/PAM50_t2.nii.gz -o label/template/PAM50_t2.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/template/PAM50_t2s.nii.gz -o label/template/PAM50_t2s.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/template/PAM50_cord.nii.gz -o label/template/PAM50_cord.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n NearestNeighbor # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/template/PAM50_wm.nii.gz -o label/template/PAM50_wm.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/template/PAM50_gm.nii.gz -o label/template/PAM50_gm.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/template/PAM50_csf.nii.gz -o label/template/PAM50_csf.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n NearestNeighbor # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/template/PAM50_levels.nii.gz -o label/template/PAM50_levels.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n NearestNeighbor # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/template/PAM50_levels_continuous.nii.gz -o label/template/PAM50_levels_continuous.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/template/PAM50_label_body.nii.gz -o label/template/PAM50_label_body.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/template/PAM50_label_disc.nii.gz -o label/template/PAM50_label_disc.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/template/PAM50_label_discPosterior.nii.gz -o label/template/PAM50_label_discPosterior.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/template/PAM50_spine.nii.gz -o label/template/PAM50_spine.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/template/PAM50_centerline.nii.gz -o label/template/PAM50_centerline.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/template/PAM50_label_spinal_levels.nii.gz -o label/template/PAM50_label_spinal_levels.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n NearestNeighbor # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94mcp /opt/spinalcordtoolbox-5.8/data/PAM50/template/info_label.txt label/template\u001b[0m\n", + "\u001b[0m\n", + "WARP ATLAS OF WHITE MATTER TRACTS:\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/atlas/PAM50_atlas_00.nii.gz -o label/atlas/PAM50_atlas_00.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/atlas/PAM50_atlas_01.nii.gz -o label/atlas/PAM50_atlas_01.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/atlas/PAM50_atlas_02.nii.gz -o label/atlas/PAM50_atlas_02.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/atlas/PAM50_atlas_03.nii.gz -o label/atlas/PAM50_atlas_03.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/atlas/PAM50_atlas_04.nii.gz -o label/atlas/PAM50_atlas_04.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/atlas/PAM50_atlas_05.nii.gz -o label/atlas/PAM50_atlas_05.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/atlas/PAM50_atlas_06.nii.gz -o label/atlas/PAM50_atlas_06.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/atlas/PAM50_atlas_07.nii.gz -o label/atlas/PAM50_atlas_07.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/atlas/PAM50_atlas_08.nii.gz -o label/atlas/PAM50_atlas_08.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/atlas/PAM50_atlas_09.nii.gz -o label/atlas/PAM50_atlas_09.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/atlas/PAM50_atlas_10.nii.gz -o label/atlas/PAM50_atlas_10.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/atlas/PAM50_atlas_11.nii.gz -o label/atlas/PAM50_atlas_11.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/atlas/PAM50_atlas_12.nii.gz -o label/atlas/PAM50_atlas_12.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/atlas/PAM50_atlas_13.nii.gz -o label/atlas/PAM50_atlas_13.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/atlas/PAM50_atlas_14.nii.gz -o label/atlas/PAM50_atlas_14.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/atlas/PAM50_atlas_15.nii.gz -o label/atlas/PAM50_atlas_15.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/atlas/PAM50_atlas_16.nii.gz -o label/atlas/PAM50_atlas_16.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/atlas/PAM50_atlas_17.nii.gz -o label/atlas/PAM50_atlas_17.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/atlas/PAM50_atlas_18.nii.gz -o label/atlas/PAM50_atlas_18.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/atlas/PAM50_atlas_19.nii.gz -o label/atlas/PAM50_atlas_19.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/atlas/PAM50_atlas_20.nii.gz -o label/atlas/PAM50_atlas_20.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/atlas/PAM50_atlas_21.nii.gz -o label/atlas/PAM50_atlas_21.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/atlas/PAM50_atlas_22.nii.gz -o label/atlas/PAM50_atlas_22.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/atlas/PAM50_atlas_23.nii.gz -o label/atlas/PAM50_atlas_23.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/atlas/PAM50_atlas_24.nii.gz -o label/atlas/PAM50_atlas_24.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/atlas/PAM50_atlas_25.nii.gz -o label/atlas/PAM50_atlas_25.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/atlas/PAM50_atlas_26.nii.gz -o label/atlas/PAM50_atlas_26.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/atlas/PAM50_atlas_27.nii.gz -o label/atlas/PAM50_atlas_27.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/atlas/PAM50_atlas_28.nii.gz -o label/atlas/PAM50_atlas_28.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/atlas/PAM50_atlas_29.nii.gz -o label/atlas/PAM50_atlas_29.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/atlas/PAM50_atlas_30.nii.gz -o label/atlas/PAM50_atlas_30.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/atlas/PAM50_atlas_31.nii.gz -o label/atlas/PAM50_atlas_31.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/atlas/PAM50_atlas_32.nii.gz -o label/atlas/PAM50_atlas_32.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/atlas/PAM50_atlas_33.nii.gz -o label/atlas/PAM50_atlas_33.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/atlas/PAM50_atlas_34.nii.gz -o label/atlas/PAM50_atlas_34.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/atlas/PAM50_atlas_35.nii.gz -o label/atlas/PAM50_atlas_35.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94m/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i /opt/spinalcordtoolbox-5.8/data/PAM50/atlas/PAM50_atlas_36.nii.gz -o label/atlas/PAM50_atlas_36.nii.gz -t warp_template2anat.nii.gz -r t1w_crop.nii.gz -n Linear # in /home/jovyan/example-notebooks/structural_imaging/sct_example_data/mt\u001b[0m\n", + "\u001b[94mcp /opt/spinalcordtoolbox-5.8/data/PAM50/atlas/info_label.txt label/atlas\u001b[0m\n", + "\n", + "*** Generate Quality Control (QC) html report ***\n", + "Resample images to 0.6x0.6 mm\n", + "QcImage: layout with Axial slice\n", + "Compute center of mass at each slice\n", + "/home/jovyan/example-notebooks/structural_imaging/qc/structural_imaging/sct_example_data/mt/sct_warp_template/2023_06_15_032147.388375/bkg_img.png\n", + "Successfully generated the QC results in /home/jovyan/example-notebooks/structural_imaging/qc/_json/qc_2023_06_15_032147.388375.json\n", + "\u001b[0m\n", + "To see the results in a browser, type:\u001b[0m\n", + "\u001b[92mxdg-open /home/jovyan/example-notebooks/structural_imaging/qc/index.html\n", + "\u001b[0m\n" + ] + } + ], + "source": [ + "# Warp template\n", + "!sct_warp_template -d {t1w+'_crop'+file_ext} -w {warp_template2anat+file_ext} -qc {qc_path}\n", + "\n", + "if not verbose:\n", + " clear_output()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "308610e2-429a-458a-bc93-064acddfb199", + "metadata": { + "id": "308610e2-429a-458a-bc93-064acddfb199" + }, + "source": [ + "Results of the registration/warming appear in Figure 2." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "2e9e4587-16ab-4d8a-97e9-05d8f9ffe603", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 114 + }, + "id": "2e9e4587-16ab-4d8a-97e9-05d8f9ffe603", + "outputId": "13153ed9-2089-47c1-f653-015b75a3f9e0" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABiIAAABhCAYAAABbPrlDAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOz9ya9tyZUfBv8i9j7t7e/rX/Z9kskiWZ0Ln4SCZHhQBmzBsCBAHnlgzz33P2AD9sATQ4ChoScCDKMMwYY1sGVJwCfVV3IVJbGKxSKZTGbz8vXvvtuddu+IbxD7F/u348a5771kJskk9wIy7337nrMjYsWKFatfxnvv0UMPPfTQQw899NBDDz300EMPPfTQQw899NBDDz308BWA/WVPoIceeuihhx566KGHHnrooYceeuihhx566KGHHnr49YXeEdFDDz300EMPPfTQQw899NBDDz300EMPPfTQQw89fGXQOyJ66KGHHnrooYceeuihhx566KGHHnrooYceeuihh68MekdEDz300EMPPfTQQw899NBDDz300EMPPfTQQw899PCVQe+I6KGHHnrooYceeuihhx566KGHHnrooYceeuihhx6+MugdET300EMPPfTQQw899NBDDz300EMPPfTQQw899NDDVwa9I6KHHnrooYceeuihhx566KGHHnrooYceeuihhx56+Mqgd0T00EMPPfTQQw899NBDDz300EMPPfTQQw899NBDD18Z9I6IHnrooYceeuihhx566KGHHnrooYceeuihhx566OErg/J5P2iM+Srn0UMPPfTQQw899NBDDz300EMPPfTQQw899NBDDz18jcB7/1yfe25HBOGb3/wmtre3AQBFUQAAXn/9dQwGAwDA7du3MZlMcHZ2huVyCQA4OzvD6ekplsslZrMZAGC9XuP09BQA4JwDEJwdfKc6PobDIQBgd3cXALBYLPCjH/0I9+7dQ13XmE6n+OCDD/D6669jOBxitVqhqqr4bucc6rpGXdcAgLquMZvNUNd1nIP3HovFAgBgbZso8tZbbwEAPvjggzin7e1tWGtxdHQU33l0dITVagXnXET++fk5ZrMZhsMhJpNJQHhZYjKZwBiDsizjWnd2dmCMwd7eXhyb8/irv/qr+OxHP/oR6rqOeNLPFUUR5zgejzEajTAajTCdTuPYnDv3y3sfcXV2dhbf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qUnv6Z1ORw7VdL5Rn3e7XZlH2ithGMpa9jxP2tRrjBeEd+/eFbnietB9ozNBwwzwcKlhecbjsUAFaOcln6N5QVnUupvOKF4Oso/j8biwj2l+UkZ835f9VjuwNWwKiXzRuo4HdW0r6rGSb4eHh2i1WgJlQiqzj/haOyU5D5xDIJ1bzht/U6vV0G630e/3xdbRDh2tT5j9p7HH79+/X3hP8187L6nP9SX7aDRCGIYFu6UsyyJJEoHR0nAG/I3WqeSpdlzpgBid1WBMCj9B2djf35dLbr2n09HICwDf9/Hhhx/CGFOYW77W8qftXdKjR4/kMo08Gg6HAvWgI6br9XrBKR7HRXhTEuVTB2/QTtNOce7fdCJp/moMb/ZvNBoV9mfucy7MJEnrT64xfYlHaBLt9CEsnYuZr3W4frbeqzU8GolBK48ePZJnbm5uCqydhsMi7IZ7UcnLd/KH8lS2X+p9g2PVUHvUN77vi4x0u13s7++j3W6LncDxurYHX2s+U69pXUU9wUs/8kdnJgLp3NIxx0AgOtB40ap5Thki6Tlx+zgYDAr99TyvsIcS27zZbBbkimdj8ieOY3HKlV2C7OzsyHh4Id7v9wtnHe4PnIednR3s7u4eq9/Fs7oOBCQ8HNc8kNupGg6Y39PrQdv27C9lTsM6jsdjfPzxxwjDUPjLgANrrThBddtuvQIghdzj86m/dLR2WfYN91lCYPHZH330kXxOYj+0riMUl5b9sgwC6hS9Pmm36H2MtrF78cT9y70EcdvR64b9GI1GEhCks83dGhL6TKptM8q5Xg8aDpBjYiCKhgEbj8din7sZHu4FK8dRFpGveU6ono2NDVlP1Oe6P1zfOjCTQbJuLRheqGj7SJ8nSJQ7ffY/ODiQPVnbQpwHjrHX64kto/enMvucMEO6PyfVzXTP89rfoqGiNjc3C8FpQDGwhKSDRXU7QLr+OJ579+4VngXkcFh6D+VerS9YNRRc2UWPljXaSuvr6wXdPjMzU4B81/CbFVVU0VeXjHW9Pid98XN2AFZUUUUVVVRRRRVVVFFFFVVUUUUVVVRRRRVVVFFFX116wuuFJ8+IeNIHVlRRRRVVVFFFFVVUUUUVVVRRRRVVVFFFFVVUUUUVkR5f6bmiiiqqqKKKKqqooooqqqiiiiqqqKKKKqqooooqquhTUnURUVFFFVVUUUUVVVRRRRVVVFFFFVVUUUUVVVRRRRV9YVRdRFRUUUUVVVRRRRVVVFFFFVVUUUUVVVRRRRVVVFFFXxhVFxEVVVRRRRVVVFFFFVVUUUUVVVRRRRVVVFFFFVVU0RdG1UVERRVVVFFFFVVUUUUVVVRRRRVVVFFFFVVUUUUVVfSFUXURUVFFFVVUUUUVVVRRRRVVVFFFFVVUUUUVVVRRRRV9YVRdRFRUUUUVVVRRRRVVVFFFFVVUUUUVVVRRRRVVVFFFXxhVFxEVVVRRRRVVVFFFFVVUUUUVVVRRRRVVVFFFFVVU0RdG1UVERRVVVFFFFVVUUUUVVVRRRRVVVFFFFVVUUUUVVfSF0f8PoO9PlUgKrGoAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Plot QC figures\n", + "if sys.platform == 'darwin':\n", + " # For local testing on OSX \n", + " sct_warp_template_qc = 'qc/sct_example_data/mt/sct_warp_template'\n", + "else:\n", + " # For linux and on-line Binder execution\n", + " sct_warp_template_qc = join(qc_path, parent_dirs[-1], mt_folder_relative, 'sct_warp_template')\n", + "\n", + "folders = list(filter(lambda x: os.path.isdir(os.path.join(sct_warp_template_qc, x)), os.listdir(sct_warp_template_qc)))\n", + "qc_date = max(folders)\n", + "\n", + "sct_warp_template_qc_dir = join(sct_warp_template_qc, qc_date)\n", + "\n", + "bkg = mpimg.imread(join(sct_warp_template_qc_dir, 'bkg_img.png'))\n", + "overlay = mpimg.imread(join(sct_warp_template_qc_dir, 'overlay_img.png'))\n", + "plt.figure(figsize = (20,2))\n", + "plt.axis('off')\n", + "imgplot = plt.imshow(bkg)\n", + "imgplot = plt.imshow(overlay,alpha=0.3)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "17a26386-28c2-4cdd-91d4-e8901d80bc90", + "metadata": { + "id": "17a26386-28c2-4cdd-91d4-e8901d80bc90" + }, + "source": [ + "Figure 2. Quality control (QC) SCT module registration/warping results of the PAM50 template and atlas to the T1w native space. The white matter (in blue) is overlaid on the T1-weighted anatomical scan (in grayscale). Orientation is axial.Once co-registration between images and registration to the template is complete, we can venture into computing our favorite qMR metrics. Here, we compute the magnetization transfer ratio (MTR) and the magnetization transfer saturation (MTsat).\n", + "\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "0ce3b344-dcb0-4780-af8e-633a96a2a2d7", + "metadata": { + "id": "0ce3b344-dcb0-4780-af8e-633a96a2a2d7" + }, + "source": [ + "Once co-registration between images and registration to the template is complete, we can venture into computing our favorite qMR metrics. Here, we compute the magnetization transfer ratio (MTR) and the magnetization transfer saturation (MTsat)." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "88002f53-c2f6-466a-a8ef-1c66769ede57", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "88002f53-c2f6-466a-a8ef-1c66769ede57", + "outputId": "00c67668-1177-4cf0-a9b5-bffae555cd13" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "--\n", + "Spinal Cord Toolbox (5.8)\n", + "\n", + "sct_compute_mtr -mt1 mt1_reg.nii.gz -mt0 mt0_reg.nii.gz\n", + "--\n", + "\n", + "\u001b[0m\n", + "Compute MTR...\u001b[0m\n", + "Found 0 voxels with value=0. These will be replaced by nan.\n", + "Threshold to clip values: +/- 100\n", + "\n", + "--\n", + "Spinal Cord Toolbox (5.8)\n", + "\n", + "sct_compute_mtsat -mt mt1_reg.nii.gz -pd mt0_reg.nii.gz -t1 t1w_crop.nii.gz -trmt 57 -trpd 57 -trt1 15 -famt 9 -fapd 9 -fat1 15\n", + "--\n", + "\n", + "\u001b[0mLoad data...\u001b[0m\n", + "Compute T1 map...\n", + "\u001b[33mR1 values were found to be lower than 0.01. They will be set to inf, producing T1=0 for these voxels.\u001b[0m\n", + "Compute A...\n", + "Compute MTsat...\n", + "\u001b[33mMTsat values were found to be larger than 1. They will be set to zero for these voxels.\u001b[0m\n", + "\u001b[0mGenerate output files...\u001b[0m\n" + ] + } + ], + "source": [ + "# Compute MTR\n", + "!sct_compute_mtr -mt1 {mt1+'_reg'+file_ext} -mt0 {mt0+'_reg'+file_ext}\n", + "\n", + "# Compute MTsat and T1\n", + "!sct_compute_mtsat -mt {mt1+'_reg'+file_ext} -pd {mt0+'_reg'+file_ext} -t1 {t1w+'_crop'+file_ext} -trmt 57 -trpd 57 -trt1 15 -famt 9 -fapd 9 -fat1 15\n", + "\n", + "if not verbose:\n", + " clear_output()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "05a6db46-5c1e-4003-a942-bdc02119efd6", + "metadata": { + "id": "05a6db46-5c1e-4003-a942-bdc02119efd6" + }, + "source": [ + "Now that our metrics are computed, we want to extract their values within specific tracts of the spinal cord. This is done with the function sct_extract_metric." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "e88784d8-9f0c-4498-9574-13c1321e9a8f", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "e88784d8-9f0c-4498-9574-13c1321e9a8f", + "outputId": "fcde05ee-5c01-4b05-b2a4-3432b7ae007b" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "--\n", + "Spinal Cord Toolbox (5.8)\n", + "\n", + "sct_extract_metric -i mtr.nii.gz -l 51 -vert 2:4 -perlevel 1 -o mtr_in_wm.csv\n", + "--\n", + "\n", + "\u001b[0m\n", + "Load metric image...\u001b[0m\n", + "\u001b[0mEstimation for label: white matter\u001b[0m\n", + "\u001b[0m\n", + "Done! To view results, type:\u001b[0m\n", + "\u001b[92mxdg-open mtr_in_wm.csv\n", + "\u001b[0m\n", + "\n", + "--\n", + "Spinal Cord Toolbox (5.8)\n", + "\n", + "sct_extract_metric -i mtsat.nii.gz -l 51 -vert 2:4 -perlevel 1 -o mtsat_in_wm.csv\n", + "--\n", + "\n", + "\u001b[0m\n", + "Load metric image...\u001b[0m\n", + "\u001b[0mEstimation for label: white matter\u001b[0m\n", + "\u001b[0m\n", + "Done! To view results, type:\u001b[0m\n", + "\u001b[92mxdg-open mtsat_in_wm.csv\n", + "\u001b[0m\n", + "\n", + "--\n", + "Spinal Cord Toolbox (5.8)\n", + "\n", + "sct_extract_metric -i t1map.nii.gz -l 51 -vert 2:4 -perlevel 1 -o t1_in_wm.csv\n", + "--\n", + "\n", + "\u001b[0m\n", + "Load metric image...\u001b[0m\n", + "\u001b[0mEstimation for label: white matter\u001b[0m\n", + "\u001b[0m\n", + "Done! To view results, type:\u001b[0m\n", + "\u001b[92mxdg-open t1_in_wm.csv\n", + "\u001b[0m\n" + ] + } + ], + "source": [ + "# Extract MTR, MTsat and T1 in WM between C2 and C4 vertebral levels\n", + "!sct_extract_metric -i mtr.nii.gz -l 51 -vert 2:4 -perlevel 1 -o mtr_in_wm.csv\n", + "!sct_extract_metric -i mtsat.nii.gz -l 51 -vert 2:4 -perlevel 1 -o mtsat_in_wm.csv\n", + "!sct_extract_metric -i t1map.nii.gz -l 51 -vert 2:4 -perlevel 1 -o t1_in_wm.csv\n", + "\n", + "if not verbose:\n", + " clear_output()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "f0236cad-fe87-4897-b320-2fee4e2be4c4", + "metadata": { + "id": "f0236cad-fe87-4897-b320-2fee4e2be4c4" + }, + "source": [ + "Results are output as csv files, which we can then open and display as bar graphs." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "8caee1f1-8386-420b-ad9b-bfffbd1bc2fc", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "8caee1f1-8386-420b-ad9b-bfffbd1bc2fc", + "outputId": "1b25a434-43f9-4f29-b9e6-b5461faf3241" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Collecting pandas\n", + " Downloading pandas-2.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.3 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m12.3/12.3 MB\u001b[0m \u001b[31m109.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m00:01\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: python-dateutil>=2.8.2 in /opt/conda/lib/python3.10/site-packages (from pandas) (2.8.2)\n", + "Requirement already satisfied: numpy>=1.21.0 in /opt/conda/lib/python3.10/site-packages (from pandas) (1.23.5)\n", + "Requirement already satisfied: pytz>=2020.1 in /opt/conda/lib/python3.10/site-packages (from pandas) (2022.6)\n", + "Collecting tzdata>=2022.1\n", + " Using cached tzdata-2023.3-py2.py3-none-any.whl (341 kB)\n", + "Requirement already satisfied: six>=1.5 in /opt/conda/lib/python3.10/site-packages (from python-dateutil>=2.8.2->pandas) (1.16.0)\n", + "Installing collected packages: tzdata, pandas\n", + "Successfully installed pandas-2.0.2 tzdata-2023.3\n" + ] + } + ], + "source": [ + "!pip install pandas" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "16ca0687-1b43-4a6c-9ae1-1c72da3014ed", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 388 + }, + "id": "16ca0687-1b43-4a6c-9ae1-1c72da3014ed", + "outputId": "92848cd5-5fc6-4ee8-ffc7-0112a1fe24a5" + }, + "outputs": [ + { + "data": { + "image/png": "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PWoYhmFER0cbd9xxh8ucoqIiQ5Kxfft2l/EnnnjCuPLKK+utY8mSJUaPHj2MEydOOMcqKyuNgIAAY8OGDYZhGMa0adOMG264wfn8hg0bjNatWxs///yzYRiG2/U+//zzZ3lXAAANhT4DAPAk+gzQcDjTDDC59NJL1b9/fy1dulSS9M033+jDDz/U+PHjtXXrVi1fvlxt2rRx/hs6dKhOnDihoqIi5zr69ev3q+vYunWrvv76awUFBTm3FRoaqmPHjumbb76RJN17773atGmTfvzxR0nS66+/rltuuUVt27Z1rsOdegEAjYc+AwDwJPoM0HBaWV0A4I0mTJighx56SPPnz9eyZcsUHR2tG2+8USdOnNCkSZM0bdq0Ost07tzZ+fcFF1zwq2s4ceKE+vbtq9dff73Ocx06dJAkXXPNNerWrZtWrVqlyZMna+3atVq2bJnLOtypFwDQuOgzAABPos8ADYPQDKjH6NGj9fDDD2vlypVasWKFJk6cKJvNpj59+mj37t26+OKLz2l9rVu3lnTyN/ru6tOnj1avXq2wsDAFBwefdl5iYqJef/11derUSS1atNDw4cNd1nE+9QIAPIs+AwDwJPoM0DD4eSZQjzZt2mjMmDF67LHH9OOPP+r++++XJD366KPavHmzpkyZoh07duirr77SO++8o6lTp55xfWFhYQoICFBOTo5++uknlZWVOZ87evSoduzY4fLv66+/1r333qv27dvr9ttv14cffqiioiLl5+fr4Ycf1g8//OBc/t5779W2bdv09NNP66677pK/v7/zufOtFwDgWfQZAIAn0WeAhkFoBpzGhAkTdOjQId10003OU3979eql/Px8ffXVVxowYIB69+6txx9/XB07djzjulq1aqUXX3xRL730kiIjI3X77bc7n/vyyy/Vu3dvl38PPvigAgMD9cEHH6hz584aOXKkevbsqfHjx+vo0aMu39R0795dV199tXbu3Om8y0yt860XAOB59BkAgCfRZ4Bfz2YYp9yHFgAAAAAAAABnmgEAAAAAAABmhGYAAAAAAACACaEZAAAAAAAAYEJoBgAAAAAAAJgQmgEAAAAAAAAmhGYAAAAAAACACaEZAAAAAAAAYEJoBgAAAAAAAJgQmgEAAAAAAAAmhGYAAAAAAACACaEZAAAAAAAAYEJoBgAAAAAAAJj8f/HkdCAMhpdOAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Display plots of results\n", + "import pandas as pd\n", + "fig, ax = plt.subplots(ncols=3, figsize=(15,4))\n", + "\n", + "# Build dic for plot\n", + "plot_dic = {'file': ['mtr_in_wm.csv', 'mtsat_in_wm.csv', 't1_in_wm.csv'],\n", + " 'ylabel': ['MTR [%]', 'MTsat [a.u.]', 'T1 [s]']}\n", + "\n", + "# Loop across dic entries\n", + "for i in range(len(plot_dic)+1):\n", + " df = pd.read_csv(plot_dic['file'][i])\n", + " df.plot.bar(x='VertLevel', y='WA()', rot=0, ax=ax[i], legend=False)\n", + " ax[i].set_ylabel(plot_dic['ylabel'][i])\n", + " ax[i].yaxis.grid()\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "6453da33-fdd5-407d-bd28-153822b3d127", + "metadata": { + "id": "6453da33-fdd5-407d-bd28-153822b3d127" + }, + "source": [ + "Figure 3. Quantitative MRI metrics in WM between C2 and C4 vertebral levels. The three calculated metrics from this dataset using SCT are the magnetization transfer ratio (MTR – [%]), magnetization transfer saturation (MTsat – [a.u.]), and longitudinal relaxation time (T1 – [s])." + ] + } + ], + "metadata": { + "colab": { + "include_colab_link": true, + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.4" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/genindex.html b/genindex.html index d171ed47d..073f9941c 100644 --- a/genindex.html +++ b/genindex.html @@ -153,7 +153,7 @@ - diff --git a/index.html b/index.html index 5ed03b47b..b8b9f5ad9 100644 --- a/index.html +++ b/index.html @@ -1,2 +1,2 @@ - + diff --git a/objects.inv b/objects.inv index df35301c4..16b7470f8 100644 Binary files a/objects.inv and b/objects.inv differ diff --git a/sct_toolbox.html b/sct_toolbox.html new file mode 100644 index 000000000..13314aec2 --- /dev/null +++ b/sct_toolbox.html @@ -0,0 +1,2095 @@ + + + + + + + + + + + + SCT Toolbox Example — Neurodesk + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + + +
+ +
+
+ +
+
+ +
+ +
+ +
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ + + +
+

SCT Toolbox Example

+ +
+ +
+
+ + + + +
+ +

Open In Colab

+
+

SCT Toolbox Example#

+

Author: Steffen Bollmann

+
+
+

Setup Neurodesk#

+
+
+
%%capture
+import os
+import sys
+IN_COLAB = 'google.colab' in sys.modules
+
+if IN_COLAB:
+  os.environ["LD_PRELOAD"] = "";
+  os.environ["APPTAINER_BINDPATH"] = "/content,/tmp,/cvmfs"
+  os.environ["MPLCONFIGDIR"] = "/content/matplotlib-mpldir"
+  os.environ["LMOD_CMD"] = "/usr/share/lmod/lmod/libexec/lmod"
+
+  !curl -J -O https://raw.githubusercontent.com/NeuroDesk/neurocommand/main/googlecolab_setup.sh
+  !chmod +x googlecolab_setup.sh
+  !./googlecolab_setup.sh
+
+  os.environ["MODULEPATH"] = ':'.join(map(str, list(map(lambda x: os.path.join(os.path.abspath('/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/'), x),os.listdir('/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/')))))
+
+
+
+
+
+
+
# Output CPU information:
+!cat /proc/cpuinfo | grep 'vendor' | uniq
+!cat /proc/cpuinfo | grep 'model name' | uniq
+
+
+
+
+
vendor_id	: AuthenticAMD
+
+
+
model name	: AMD EPYC-Rome Processor
+
+
+
+
+
+
+

Demonstrating the Spinal Cord Toolbox (SCT) use via Neurodesk#

+

In Neurodesk we can use lmod to load specific versions of tools. Here we load the spinalcordtoolbox in a specific version:

+
+
+
import lmod
+await lmod.load('spinalcordtoolbox/5.8')
+await lmod.list()
+
+
+
+
+
['Lmod',
+ 'Warning:',
+ 'The',
+ 'environment',
+ 'MODULEPATH',
+ 'has',
+ 'been',
+ 'changed',
+ 'in',
+ 'unexpected',
+ 'ways.',
+ 'Lmod',
+ 'is',
+ 'unable',
+ 'to',
+ 'use',
+ 'given',
+ 'MODULEPATH.',
+ 'It',
+ 'is',
+ 'using:',
+ '"/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/functional_imaging:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/rodent_imaging:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/image_registration:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/structural_imaging:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/image_segmentation:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/quantitative_imaging:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/workflows:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/hippocampus:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/image_reconstruction:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/data_organisation:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/electrophysiology:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/phase_processing:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/programming:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/machine_learning:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/diffusion_imaging:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/body:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/visualization:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/spectroscopy:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/quality_control:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/statistics:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/shape_analysis:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/spine:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/molecular_biology:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/bids_apps:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/cryo_EM:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/_diffusion_imaging:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/_functional_imaging:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/_workflows::".',
+ 'Please',
+ 'use',
+ '"module',
+ 'use',
+ 'to',
+ 'change',
+ 'MODULEPATH',
+ 'instead.',
+ 'spinalcordtoolbox/5.8']
+
+
+
+
+

In this interactive notebook we will go through a series of processing steps specific to spinal cord MRI analysis. We first need to import the necessary tools and setup the filenames and folders in the notebook environment.

+

The rest of this notebook is copied from the neurolibre project with minor path modifications and code adjustments to work with the current version of SCT: https://mathieuboudreau.github.io/pipelines-jupyter-book/01/sct_mtsat

+
+
+
%matplotlib inline
+import matplotlib.pyplot as plt
+import matplotlib.image as mpimg
+import numpy as np
+import sys
+import os
+from os.path import join
+from IPython.display import clear_output
+
+base_path = os.getcwd()
+
+
+
+
+
+
+
# Download example data
+!sct_download_data -d sct_example_data -o ./sct_example_data
+
+# Go to MT folder
+os.chdir('./sct_example_data/mt/')
+
+
+
+
+
--
+Spinal Cord Toolbox (5.8)
+
+sct_download_data -d sct_example_data -o ./sct_example_data
+--
+
+Removing existing destination folder 'sct_example_data'
+Trying URL: https://github.com/spinalcordtoolbox/sct_example_data/releases/download/r20180525/20180525_sct_example_data.zip
+
+
+
Downloading: 20180525_sct_example_data.zip
+
+
+
Status:   0%|                                       | 0.00/44.3M [00:00<?, ?B/s]
+
+
+
Status:  21%|██████▎                       | 9.30M/44.3M [00:00<00:00, 92.9MB/s]
+
+
+
Status:  54%|████████████████▊              | 24.0M/44.3M [00:00<00:00, 125MB/s]
+
+
+
Status:  82%|█████████████████████████▌     | 36.5M/44.3M [00:00<00:00, 122MB/s]
+
+
+
Status: 100%|███████████████████████████████| 44.3M/44.3M [00:00<00:00, 121MB/s]
+Creating temporary folder (/tmp/sct-20241017005027.449442-upud6xo2)
+Unzip data to: /tmp/sct-20241017005027.449442-upud6xo2
+
+
+
Copying data to: sct_example_data
+
+
+
Removing temporary folders...
+
+
+
Done!
+
+
+
+
+
+
+
+
# Jupyter Notebook config
+verbose = True # False clears cells
+
+# Folder/filename config
+parent_dirs = os.path.split(base_path)
+mt_folder_relative = os.path.join('sct_example_data/mt')
+qc_path = os.path.join(base_path, 'qc')
+
+t1w = 't1w'
+mt0 = 'mt0'
+mt1 = 'mt1'
+label_c3c4 = 'label_c3c4'
+warp_template2anat = 'warp_template2anat'
+mtr = 'mtr'
+mtsat = 'mtsat'
+t1map = 't1map'
+
+file_ext = '.nii.gz'
+
+if not verbose:
+    clear_output()
+
+
+
+
+

The first processing step consists in segmenting the spinal cord. This is done automatically using an algorithm called Optic that finds the spinal cord centerline, followed by a second algorithm called DeepSeg-SC that relies on deep learning for segmenting the cord.

+
+
+
# Segment spinal cord
+!sct_deepseg_sc -i {t1w+file_ext} -c t1 -qc {qc_path}
+
+if not verbose:
+    clear_output()
+
+
+
+
+
--
+Spinal Cord Toolbox (5.8)
+
+sct_deepseg_sc -i t1w.nii.gz -c t1 -qc /storage/tmp/tmpnhgyrqup/qc
+--
+
+
+
Config deepseg_sc:
+  Centerline algorithm: svm
+  Brain in image: True
+  Kernel dimension: 2d
+  Contrast: t1
+  Threshold: 0.15
+Creating temporary folder (/tmp/sct-20241017005036.109654-rsbjre52)
+Reorient the image to RPI, if necessary...
+
+
+
Finding the spinal cord centerline...
+
+
+
Creating temporary folder (/tmp/sct-20241017005037.723751-07mknx7y)
+
+
+
Remove temporary files...
+rm -rf /tmp/sct-20241017005037.723751-07mknx7y
+
+
+
Cropping the image around the spinal cord...
+
+
+
Normalizing the intensity...
+Segmenting the spinal cord using deep learning on 2D patches...
+
+
+
Reassembling the image...
+Resampling the segmentation to the native image resolution using linear interpolation...
+
+
+
Binarizing the resampled segmentation...
+
+
+
Image header specifies datatype 'float32', but array is of type 'uint8'. Header metadata will be overwritten to use 'uint8'.
+
+
+
Compute shape analysis:   0%|                          | 0/17 [00:00<?, ?iter/s]
+
+
+
Compute shape analysis:   6%|#                 | 1/17 [00:00<00:02,  5.47iter/s]
+
+
+
Compute shape analysis: 100%|#################| 17/17 [00:00<00:00, 68.56iter/s]
+Remove temporary files...
+rm -rf /tmp/sct-20241017005036.109654-rsbjre52
+
+*** Generate Quality Control (QC) html report ***
+
+
+
Resample images to 0.6x0.6 mm
+
+
+
Image header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.
+Traceback (most recent call last):
+  File "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/scripts/sct_deepseg_sc.py", line 214, in <module>
+    main(sys.argv[1:])
+  File "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/scripts/sct_deepseg_sc.py", line 207, in main
+    generate_qc(fname_image, fname_seg=fname_seg, args=argv, path_qc=os.path.abspath(path_qc),
+  File "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/reports/qc.py", line 851, in generate_qc
+    add_entry(
+  File "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/reports/qc.py", line 718, in add_entry
+    layout(qcslice)
+  File "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/reports/qc.py", line 290, in wrapped_f
+    self.qc_report.make_content_path()
+  File "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/reports/qc.py", line 604, in make_content_path
+    raise err
+  File "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/reports/qc.py", line 601, in make_content_path
+    os.makedirs(target_img_folder, exist_ok=True)
+  File "/opt/spinalcordtoolbox-5.8/python/envs/venv_sct/lib/python3.8/os.py", line 213, in makedirs
+    makedirs(head, exist_ok=exist_ok)
+  File "/opt/spinalcordtoolbox-5.8/python/envs/venv_sct/lib/python3.8/os.py", line 213, in makedirs
+    makedirs(head, exist_ok=exist_ok)
+  File "/opt/spinalcordtoolbox-5.8/python/envs/venv_sct/lib/python3.8/os.py", line 213, in makedirs
+    makedirs(head, exist_ok=exist_ok)
+  [Previous line repeated 2 more times]
+  File "/opt/spinalcordtoolbox-5.8/python/envs/venv_sct/lib/python3.8/os.py", line 223, in makedirs
+    mkdir(name, mode)
+OSError: [Errno 30] Read-only file system: '/storage/tmp/tmpnhgyrqup/qc'
+
+
+
+
+

Results of the segmentation appear in Figure 1.

+
+
+
# Plot QC figures
+
+if sys.platform == 'darwin':
+    # For local testing on OSX    
+    sct_deepseg_sc_qc = 'qc/sct_example_data/mt/sct_deepseg_sc'
+else:
+    # For linux and on-line Binder execution
+    sct_deepseg_sc_qc = join(qc_path, parent_dirs[-1], mt_folder_relative, 'sct_deepseg_sc')
+
+folders = list(filter(lambda x: os.path.isdir(os.path.join(sct_deepseg_sc_qc, x)), os.listdir(sct_deepseg_sc_qc)))
+
+qc_date = max(folders)
+
+sct_deepseg_sc_qc_dir = join(sct_deepseg_sc_qc, qc_date)
+
+bkg = mpimg.imread(join(sct_deepseg_sc_qc_dir, 'bkg_img.png'))
+overlay = mpimg.imread(join(sct_deepseg_sc_qc_dir, 'overlay_img.png'))
+plt.figure(figsize = (20,2))
+plt.axis('off')
+imgplot = plt.imshow(bkg)
+imgplot = plt.imshow(overlay,alpha=0.3)
+
+
+
+
+
---------------------------------------------------------------------------
+FileNotFoundError                         Traceback (most recent call last)
+Cell In[8], line 10
+      6 else:
+      7     # For linux and on-line Binder execution
+      8     sct_deepseg_sc_qc = join(qc_path, parent_dirs[-1], mt_folder_relative, 'sct_deepseg_sc')
+---> 10 folders = list(filter(lambda x: os.path.isdir(os.path.join(sct_deepseg_sc_qc, x)), os.listdir(sct_deepseg_sc_qc)))
+     12 qc_date = max(folders)
+     14 sct_deepseg_sc_qc_dir = join(sct_deepseg_sc_qc, qc_date)
+
+FileNotFoundError: [Errno 2] No such file or directory: '/storage/tmp/tmpnhgyrqup/qc/tmpnhgyrqup/sct_example_data/mt/sct_deepseg_sc'
+
+
+
+
+

Figure 1. Quality control (QC) SCT module segmentation results. The segmentation (in red) is overlaid on the T1-weighted anatomical scan (in grayscale). Orientation is axial.

+

Using the generated segmentation, we create a mask around the spinal cord which will be used to crop the image for faster processing and more accurate registration results: the registration algorithm will concentrate on the spinal cord and not on the surrounding tissue (e.g., muscles, neck fat, etc.) which could move independently from the spinal cord and hence produce spurious motion correction results.

+
+
+
# Create mask
+!sct_create_mask -i {t1w+file_ext} -p centerline,{t1w+'_seg'+file_ext} -size 35mm -o {t1w+'_mask'+file_ext}
+
+# Crop data for faster processing
+!sct_crop_image -i {t1w+file_ext} -m {t1w+'_mask'+file_ext} -o {t1w+'_crop'+file_ext}
+
+if not verbose:
+    clear_output()
+
+
+
+
+
--
+Spinal Cord Toolbox (5.8)
+
+sct_create_mask -i t1w.nii.gz -p centerline,t1w_seg.nii.gz -size 35mm -o t1w_mask.nii.gz
+--
+
+  OK: t1w_seg.nii.gz
+Creating temporary folder (/tmp/sct-20241017005050.435433-create_mask-izuszn2u)
+
+Orientation:
+  LPI
+
+
+

+Dimensions:
+(192, 192, 22, 1, 0.8958333, 0.8958333, 5.000001, 1)
+
+Create mask...
+/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/scripts/sct_create_mask.py:230: DeprecationWarning: get_header method is deprecated.
+Please use the ``img.header`` property instead.
+
+* deprecated from version: 2.1
+* Will raise <class 'nibabel.deprecator.ExpiredDeprecationError'> as of version: 4.0
+  hdr = centerline.get_header()  # get header
+/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/scripts/sct_create_mask.py:233: DeprecationWarning: get_data() is deprecated in favor of get_fdata(), which has a more predictable return type. To obtain get_data() behavior going forward, use numpy.asanyarray(img.dataobj).
+
+* deprecated from version: 3.0
+* Will raise <class 'nibabel.deprecator.ExpiredDeprecationError'> as of version: 5.0
+  data_centerline = centerline.get_data()  # get centerline
+/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/scripts/sct_create_mask.py:245: DeprecationWarning: Please use `center_of_mass` from the `scipy.ndimage` namespace, the `scipy.ndimage.measurements` namespace is deprecated.
+  cx[iz], cy[iz] = ndimage.measurements.center_of_mass(np.array(data_centerline[:, :, iz]))
+
+
+
Image header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.
+Image header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.
+Image header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.
+Image header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.
+Image header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.
+Image header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.
+Image header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.
+Image header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.
+Image header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.
+Image header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.
+Image header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.
+Image header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.
+Image header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.
+Image header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.
+Image header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.
+Image header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.
+Image header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.
+Image header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.
+
+
+
Image header specifies datatype 'int16', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.
+
+
+

+Remove temporary files...
+rm -rf /tmp/sct-20241017005050.435433-create_mask-izuszn2u
+
+
+
--
+Spinal Cord Toolbox (5.8)
+
+sct_crop_image -i t1w.nii.gz -m t1w_mask.nii.gz -o t1w_crop.nii.gz
+--
+
+
+
Bounding box: x=[73, 118], y=[69, 112], z=[4, 21]
+Cropping the image...
+
+
+
+
+

Then, we register the proton density weighted (PD) image to the T1w image, and the MT-weighted image to the T1w image, so we end up with the T1w, MTw and PDw images all aligned together, which is a necessary condition for then computing quantitative MR metrics (here: MTsat).

+
+
+
# Register PD->T1w
+# Tips: here we only use rigid transformation because both images have very similar sequence parameters. We don't want to use SyN/BSplineSyN to avoid introducing spurious deformations.
+!sct_register_multimodal -i {mt0+file_ext} -d {t1w+'_crop'+file_ext} -param step=1,type=im,algo=rigid,slicewise=1,metric=CC -x spline
+
+# Register MT->T1w
+!sct_register_multimodal -i {mt1+file_ext} -d {t1w+'_crop'+file_ext} -param step=1,type=im,algo=rigid,slicewise=1,metric=CC -x spline
+
+if not verbose:
+    clear_output()
+
+
+
+
+
--
+Spinal Cord Toolbox (5.8)
+
+sct_register_multimodal -i mt0.nii.gz -d t1w_crop.nii.gz -param step=1,type=im,algo=rigid,slicewise=1,metric=CC -x spline
+--
+
+
+Input parameters:
+
+
+
  Source .............. mt0.nii.gz (192, 192, 22)
+  Destination ......... t1w_crop.nii.gz (45, 43, 17)
+  Init transfo ........ 
+  Mask ................ 
+  Output name ......... 
+  Remove temp files ... 1
+  Verbose ............. 1
+
+Check if input data are 3D...
+Creating temporary folder (/tmp/sct-20241017005100.639353-register-x5wdnejo)
+
+Copying input data to tmp folder and convert to nii...
+
+
+

+--
+ESTIMATE TRANSFORMATION FOR STEP #0
+Registration parameters:
+  type ........... im
+  algo ........... syn
+  slicewise ...... 0
+  metric ......... MI
+  samplStrategy .. None
+  samplPercent ... 0.2
+  iter ........... 0
+  smooth ......... 0
+  laplacian ...... 0
+  shrink ......... 1
+  gradStep ....... 0.5
+  deformation .... 1x1x0
+  init ........... 
+  poly ........... 5
+  filter_size .... 5
+  dof ............ Tx_Ty_Tz_Rx_Ry_Rz
+  smoothWarpXY ... 2
+  rot_method ..... pca
+
+Estimate transformation
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 3 --transform 'syn[0.5,3,0]' --metric 'MI[dest_RPI.nii,src.nii,1,32]' --convergence 0 --shrink-factors 1 --smoothing-sigmas 0mm --restrict-deformation 1x1x0 --output '[step0,src_regStep0.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005100.639353-register-x5wdnejo
+
+
+

+--
+ESTIMATE TRANSFORMATION FOR STEP #1
+
+Apply transformation from previous step
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i src.nii -o src_reg.nii -t warp_forward_0.nii.gz -r dest_RPI.nii -n 'BSpline[3]' # in /tmp/sct-20241017005100.639353-register-x5wdnejo
+
+
+
Registration parameters:
+  type ........... im
+  algo ........... rigid
+  slicewise ...... 1
+  metric ......... CC
+  samplStrategy .. None
+  samplPercent ... 0.2
+  iter ........... 10
+  smooth ......... 0
+  laplacian ...... 0
+  shrink ......... 1
+  gradStep ....... 0.5
+  deformation .... 1x1x0
+  init ........... 
+  poly ........... 5
+  filter_size .... 5
+  dof ............ Tx_Ty_Tz_Rx_Ry_Rz
+  smoothWarpXY ... 2
+  rot_method ..... pca
+Creating temporary folder (/tmp/sct-20241017005101.291005-register-03lgs9vi)
+
+Copy input data to temp folder...
+
+Get image dimensions of destination image...
+  matrix size: 45 x 43 x 17
+  voxel size: 0.8958333mm x 0.8958333mm x 17mm
+
+Split input volume...
+
+
+
Split destination volume...
+
+
+
Registering slice 0/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0000.nii,src_Z0000.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0000,src_Z0000_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0000.nii,src_Z0000.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00000Warp.nii.gz -R dest_Z0000.nii warp2d_null0Warp.nii.gz warp2d_00000GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00000InverseWarp.nii.gz -R src_Z0000.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00000GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
Registering slice 1/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0001.nii,src_Z0001.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0001,src_Z0001_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0001.nii,src_Z0001.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00010Warp.nii.gz -R dest_Z0001.nii warp2d_null0Warp.nii.gz warp2d_00010GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00010InverseWarp.nii.gz -R src_Z0001.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00010GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
Registering slice 2/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0002.nii,src_Z0002.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0002,src_Z0002_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0002.nii,src_Z0002.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00020Warp.nii.gz -R dest_Z0002.nii warp2d_null0Warp.nii.gz warp2d_00020GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00020InverseWarp.nii.gz -R src_Z0002.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00020GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
Registering slice 3/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0003.nii,src_Z0003.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0003,src_Z0003_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0003.nii,src_Z0003.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00030Warp.nii.gz -R dest_Z0003.nii warp2d_null0Warp.nii.gz warp2d_00030GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00030InverseWarp.nii.gz -R src_Z0003.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00030GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
Registering slice 4/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0004.nii,src_Z0004.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0004,src_Z0004_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0004.nii,src_Z0004.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00040Warp.nii.gz -R dest_Z0004.nii warp2d_null0Warp.nii.gz warp2d_00040GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00040InverseWarp.nii.gz -R src_Z0004.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00040GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
Registering slice 5/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0005.nii,src_Z0005.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0005,src_Z0005_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0005.nii,src_Z0005.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00050Warp.nii.gz -R dest_Z0005.nii warp2d_null0Warp.nii.gz warp2d_00050GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00050InverseWarp.nii.gz -R src_Z0005.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00050GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
Registering slice 6/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0006.nii,src_Z0006.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0006,src_Z0006_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0006.nii,src_Z0006.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00060Warp.nii.gz -R dest_Z0006.nii warp2d_null0Warp.nii.gz warp2d_00060GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00060InverseWarp.nii.gz -R src_Z0006.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00060GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
Registering slice 7/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0007.nii,src_Z0007.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0007,src_Z0007_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0007.nii,src_Z0007.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00070Warp.nii.gz -R dest_Z0007.nii warp2d_null0Warp.nii.gz warp2d_00070GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00070InverseWarp.nii.gz -R src_Z0007.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00070GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
Registering slice 8/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0008.nii,src_Z0008.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0008,src_Z0008_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0008.nii,src_Z0008.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00080Warp.nii.gz -R dest_Z0008.nii warp2d_null0Warp.nii.gz warp2d_00080GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00080InverseWarp.nii.gz -R src_Z0008.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00080GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
Registering slice 9/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0009.nii,src_Z0009.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0009,src_Z0009_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0009.nii,src_Z0009.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00090Warp.nii.gz -R dest_Z0009.nii warp2d_null0Warp.nii.gz warp2d_00090GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00090InverseWarp.nii.gz -R src_Z0009.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00090GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
Registering slice 10/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0010.nii,src_Z0010.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0010,src_Z0010_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0010.nii,src_Z0010.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00100Warp.nii.gz -R dest_Z0010.nii warp2d_null0Warp.nii.gz warp2d_00100GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00100InverseWarp.nii.gz -R src_Z0010.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00100GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
Registering slice 11/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0011.nii,src_Z0011.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0011,src_Z0011_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0011.nii,src_Z0011.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00110Warp.nii.gz -R dest_Z0011.nii warp2d_null0Warp.nii.gz warp2d_00110GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00110InverseWarp.nii.gz -R src_Z0011.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00110GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
Registering slice 12/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0012.nii,src_Z0012.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0012,src_Z0012_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0012.nii,src_Z0012.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00120Warp.nii.gz -R dest_Z0012.nii warp2d_null0Warp.nii.gz warp2d_00120GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00120InverseWarp.nii.gz -R src_Z0012.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00120GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
Registering slice 13/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0013.nii,src_Z0013.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0013,src_Z0013_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0013.nii,src_Z0013.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00130Warp.nii.gz -R dest_Z0013.nii warp2d_null0Warp.nii.gz warp2d_00130GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00130InverseWarp.nii.gz -R src_Z0013.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00130GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
Registering slice 14/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0014.nii,src_Z0014.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0014,src_Z0014_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0014.nii,src_Z0014.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00140Warp.nii.gz -R dest_Z0014.nii warp2d_null0Warp.nii.gz warp2d_00140GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00140InverseWarp.nii.gz -R src_Z0014.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00140GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
Registering slice 15/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0015.nii,src_Z0015.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0015,src_Z0015_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0015.nii,src_Z0015.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00150Warp.nii.gz -R dest_Z0015.nii warp2d_null0Warp.nii.gz warp2d_00150GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00150InverseWarp.nii.gz -R src_Z0015.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00150GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
Registering slice 16/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0016.nii,src_Z0016.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0016,src_Z0016_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0016.nii,src_Z0016.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00160Warp.nii.gz -R dest_Z0016.nii warp2d_null0Warp.nii.gz warp2d_00160GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00160InverseWarp.nii.gz -R src_Z0016.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00160GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
Merge warping fields along z...
+
+
+
Move warping fields...
+cp step1Warp.nii.gz /tmp/sct-20241017005100.639353-register-x5wdnejo
+cp step1InverseWarp.nii.gz /tmp/sct-20241017005100.639353-register-x5wdnejo
+rm -rf /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+Concatenate transformations...
+/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 3 warp_src2dest.nii.gz -R dest.nii warp_forward_1.nii.gz warp_forward_0.nii.gz # in /tmp/sct-20241017005100.639353-register-x5wdnejo
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 3 warp_dest2src.nii.gz -R src.nii warp_inverse_0.nii.gz warp_inverse_1.nii.gz # in /tmp/sct-20241017005100.639353-register-x5wdnejo
+
+
+

+Apply transfo source --> dest...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i src.nii -o src_reg.nii -t warp_src2dest.nii.gz -r dest.nii -n 'BSpline[3]' # in /tmp/sct-20241017005100.639353-register-x5wdnejo
+
+
+

+Apply transfo dest --> source...
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i dest.nii -o dest_reg.nii -t warp_dest2src.nii.gz -r src.nii -n 'BSpline[3]' # in /tmp/sct-20241017005100.639353-register-x5wdnejo
+
+
+

+Generate output files...
+File created: mt0_reg.nii.gz
+
+
+
mv /tmp/sct-20241017005100.639353-register-x5wdnejo/warp_src2dest.nii.gz warp_mt02t1w_crop.nii.gz
+File created: warp_mt02t1w_crop.nii.gz
+
+
+
File created: t1w_crop_reg.nii.gz
+mv /tmp/sct-20241017005100.639353-register-x5wdnejo/warp_dest2src.nii.gz warp_t1w_crop2mt0.nii.gz
+File created: warp_t1w_crop2mt0.nii.gz
+
+Remove temporary files...
+rm -rf /tmp/sct-20241017005100.639353-register-x5wdnejo
+
+Finished! Elapsed time: 11s
+
+
+
--
+Spinal Cord Toolbox (5.8)
+
+sct_register_multimodal -i mt1.nii.gz -d t1w_crop.nii.gz -param step=1,type=im,algo=rigid,slicewise=1,metric=CC -x spline
+--
+
+
+Input parameters:
+  Source .............. mt1.nii.gz (192, 192, 22)
+  Destination ......... t1w_crop.nii.gz (45, 43, 17)
+  Init transfo ........ 
+  Mask ................ 
+  Output name ......... 
+  Remove temp files ... 1
+  Verbose ............. 1
+
+Check if input data are 3D...
+
+
+
Creating temporary folder (/tmp/sct-20241017005118.646955-register-e_racygw)
+
+Copying input data to tmp folder and convert to nii...
+
+
+

+--
+ESTIMATE TRANSFORMATION FOR STEP #0
+Registration parameters:
+  type ........... im
+  algo ........... syn
+  slicewise ...... 0
+  metric ......... MI
+  samplStrategy .. None
+  samplPercent ... 0.2
+  iter ........... 0
+  smooth ......... 0
+  laplacian ...... 0
+  shrink ......... 1
+  gradStep ....... 0.5
+  deformation .... 1x1x0
+  init ........... 
+  poly ........... 5
+  filter_size .... 5
+  dof ............ Tx_Ty_Tz_Rx_Ry_Rz
+  smoothWarpXY ... 2
+  rot_method ..... pca
+
+Estimate transformation
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 3 --transform 'syn[0.5,3,0]' --metric 'MI[dest_RPI.nii,src.nii,1,32]' --convergence 0 --shrink-factors 1 --smoothing-sigmas 0mm --restrict-deformation 1x1x0 --output '[step0,src_regStep0.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005118.646955-register-e_racygw
+
+
+

+--
+ESTIMATE TRANSFORMATION FOR STEP #1
+
+Apply transformation from previous step
+/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i src.nii -o src_reg.nii -t warp_forward_0.nii.gz -r dest_RPI.nii -n 'BSpline[3]' # in /tmp/sct-20241017005118.646955-register-e_racygw
+
+
+
Registration parameters:
+  type ........... im
+  algo ........... rigid
+  slicewise ...... 1
+  metric ......... CC
+  samplStrategy .. None
+  samplPercent ... 0.2
+  iter ........... 10
+  smooth ......... 0
+  laplacian ...... 0
+  shrink ......... 1
+  gradStep ....... 0.5
+  deformation .... 1x1x0
+  init ........... 
+  poly ........... 5
+  filter_size .... 5
+  dof ............ Tx_Ty_Tz_Rx_Ry_Rz
+  smoothWarpXY ... 2
+  rot_method ..... pca
+Creating temporary folder (/tmp/sct-20241017005119.199548-register-zuxf9378)
+
+Copy input data to temp folder...
+
+Get image dimensions of destination image...
+
+
+
  matrix size: 45 x 43 x 17
+  voxel size: 0.8958333mm x 0.8958333mm x 17mm
+
+Split input volume...
+
+
+
Split destination volume...
+
+
+
Registering slice 0/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0000.nii,src_Z0000.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0000,src_Z0000_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0000.nii,src_Z0000.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00000Warp.nii.gz -R dest_Z0000.nii warp2d_null0Warp.nii.gz warp2d_00000GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00000InverseWarp.nii.gz -R src_Z0000.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00000GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
Registering slice 1/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0001.nii,src_Z0001.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0001,src_Z0001_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0001.nii,src_Z0001.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00010Warp.nii.gz -R dest_Z0001.nii warp2d_null0Warp.nii.gz warp2d_00010GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00010InverseWarp.nii.gz -R src_Z0001.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00010GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
Registering slice 2/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0002.nii,src_Z0002.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0002,src_Z0002_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0002.nii,src_Z0002.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00020Warp.nii.gz -R dest_Z0002.nii warp2d_null0Warp.nii.gz warp2d_00020GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00020InverseWarp.nii.gz -R src_Z0002.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00020GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
Registering slice 3/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0003.nii,src_Z0003.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0003,src_Z0003_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0003.nii,src_Z0003.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00030Warp.nii.gz -R dest_Z0003.nii warp2d_null0Warp.nii.gz warp2d_00030GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00030InverseWarp.nii.gz -R src_Z0003.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00030GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
Registering slice 4/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0004.nii,src_Z0004.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0004,src_Z0004_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0004.nii,src_Z0004.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00040Warp.nii.gz -R dest_Z0004.nii warp2d_null0Warp.nii.gz warp2d_00040GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00040InverseWarp.nii.gz -R src_Z0004.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00040GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
Registering slice 5/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0005.nii,src_Z0005.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0005,src_Z0005_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0005.nii,src_Z0005.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00050Warp.nii.gz -R dest_Z0005.nii warp2d_null0Warp.nii.gz warp2d_00050GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00050InverseWarp.nii.gz -R src_Z0005.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00050GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
Registering slice 6/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0006.nii,src_Z0006.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0006,src_Z0006_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0006.nii,src_Z0006.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00060Warp.nii.gz -R dest_Z0006.nii warp2d_null0Warp.nii.gz warp2d_00060GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00060InverseWarp.nii.gz -R src_Z0006.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00060GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
Registering slice 7/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0007.nii,src_Z0007.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0007,src_Z0007_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0007.nii,src_Z0007.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00070Warp.nii.gz -R dest_Z0007.nii warp2d_null0Warp.nii.gz warp2d_00070GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00070InverseWarp.nii.gz -R src_Z0007.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00070GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
Registering slice 8/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0008.nii,src_Z0008.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0008,src_Z0008_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0008.nii,src_Z0008.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00080Warp.nii.gz -R dest_Z0008.nii warp2d_null0Warp.nii.gz warp2d_00080GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00080InverseWarp.nii.gz -R src_Z0008.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00080GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
Registering slice 9/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0009.nii,src_Z0009.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0009,src_Z0009_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0009.nii,src_Z0009.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00090Warp.nii.gz -R dest_Z0009.nii warp2d_null0Warp.nii.gz warp2d_00090GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00090InverseWarp.nii.gz -R src_Z0009.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00090GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
Registering slice 10/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0010.nii,src_Z0010.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0010,src_Z0010_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0010.nii,src_Z0010.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00100Warp.nii.gz -R dest_Z0010.nii warp2d_null0Warp.nii.gz warp2d_00100GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00100InverseWarp.nii.gz -R src_Z0010.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00100GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
Registering slice 11/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0011.nii,src_Z0011.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0011,src_Z0011_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0011.nii,src_Z0011.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00110Warp.nii.gz -R dest_Z0011.nii warp2d_null0Warp.nii.gz warp2d_00110GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00110InverseWarp.nii.gz -R src_Z0011.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00110GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
Registering slice 12/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0012.nii,src_Z0012.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0012,src_Z0012_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0012.nii,src_Z0012.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00120Warp.nii.gz -R dest_Z0012.nii warp2d_null0Warp.nii.gz warp2d_00120GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00120InverseWarp.nii.gz -R src_Z0012.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00120GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
Registering slice 13/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0013.nii,src_Z0013.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0013,src_Z0013_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0013.nii,src_Z0013.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00130Warp.nii.gz -R dest_Z0013.nii warp2d_null0Warp.nii.gz warp2d_00130GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00130InverseWarp.nii.gz -R src_Z0013.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00130GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
Registering slice 14/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0014.nii,src_Z0014.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0014,src_Z0014_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0014.nii,src_Z0014.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00140Warp.nii.gz -R dest_Z0014.nii warp2d_null0Warp.nii.gz warp2d_00140GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00140InverseWarp.nii.gz -R src_Z0014.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00140GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
Registering slice 15/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0015.nii,src_Z0015.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0015,src_Z0015_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0015.nii,src_Z0015.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00150Warp.nii.gz -R dest_Z0015.nii warp2d_null0Warp.nii.gz warp2d_00150GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00150InverseWarp.nii.gz -R src_Z0015.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00150GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
Registering slice 16/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0016.nii,src_Z0016.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0016,src_Z0016_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0016.nii,src_Z0016.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00160Warp.nii.gz -R dest_Z0016.nii warp2d_null0Warp.nii.gz warp2d_00160GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00160InverseWarp.nii.gz -R src_Z0016.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00160GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
Merge warping fields along z...
+
+
+
Move warping fields...
+cp step1Warp.nii.gz /tmp/sct-20241017005118.646955-register-e_racygw
+cp step1InverseWarp.nii.gz /tmp/sct-20241017005118.646955-register-e_racygw
+rm -rf /tmp/sct-20241017005119.199548-register-zuxf9378
+
+Concatenate transformations...
+/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 3 warp_src2dest.nii.gz -R dest.nii warp_forward_1.nii.gz warp_forward_0.nii.gz # in /tmp/sct-20241017005118.646955-register-e_racygw
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 3 warp_dest2src.nii.gz -R src.nii warp_inverse_0.nii.gz warp_inverse_1.nii.gz # in /tmp/sct-20241017005118.646955-register-e_racygw
+
+
+

+Apply transfo source --> dest...
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i src.nii -o src_reg.nii -t warp_src2dest.nii.gz -r dest.nii -n 'BSpline[3]' # in /tmp/sct-20241017005118.646955-register-e_racygw
+
+
+

+Apply transfo dest --> source...
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i dest.nii -o dest_reg.nii -t warp_dest2src.nii.gz -r src.nii -n 'BSpline[3]' # in /tmp/sct-20241017005118.646955-register-e_racygw
+
+
+

+Generate output files...
+
+
+
File created: mt1_reg.nii.gz
+mv /tmp/sct-20241017005118.646955-register-e_racygw/warp_src2dest.nii.gz warp_mt12t1w_crop.nii.gz
+File created: warp_mt12t1w_crop.nii.gz
+File t1w_crop_reg.nii.gz already exists. Deleting it..
+
+
+
File created: t1w_crop_reg.nii.gz
+mv /tmp/sct-20241017005118.646955-register-e_racygw/warp_dest2src.nii.gz warp_t1w_crop2mt1.nii.gz
+File created: warp_t1w_crop2mt1.nii.gz
+
+Remove temporary files...
+rm -rf /tmp/sct-20241017005118.646955-register-e_racygw
+
+Finished! Elapsed time: 11s
+
+
+
+
+

Next step consists in registering the PAM50 template to the T1w image. We first create a label, centered in the spinal cord at level C3-C4 intervertebral disc, then we apply a multi-step non-linear registration algorithm.

+
+
+
# Create label 4 at the mid-FOV, because we know the FOV is centered at C3-C4 disc.
+!sct_label_utils -i {t1w+'_seg'+file_ext} -create-seg-mid 4 -o {label_c3c4+file_ext}
+
+# Register template->T1w_ax (using template-T1w as initial transformation)
+!sct_register_to_template -i {t1w+'_crop'+file_ext} -s {t1w+'_seg'+file_ext} -ldisc {label_c3c4+file_ext} -ref subject -c t1 -param step=1,type=seg,algo=slicereg,metric=MeanSquares,smooth=2:step=2,type=im,algo=bsplinesyn,metric=MeanSquares,iter=5,gradStep=0.5 -qc {qc_path}
+
+if not verbose:
+    clear_output()
+
+
+
+
+
--
+Spinal Cord Toolbox (5.8)
+
+sct_label_utils -i t1w_seg.nii.gz -create-seg-mid 4 -o label_c3c4.nii.gz
+--
+
+Generating output files...
+
+
+
--
+Spinal Cord Toolbox (5.8)
+
+sct_register_to_template -i t1w_crop.nii.gz -s t1w_seg.nii.gz -ldisc label_c3c4.nii.gz -ref subject -c t1 -param step=1,type=seg,algo=slicereg,metric=MeanSquares,smooth=2:step=2,type=im,algo=bsplinesyn,metric=MeanSquares,iter=5,gradStep=0.5 -qc /storage/tmp/tmpnhgyrqup/qc
+--
+
+Traceback (most recent call last):
+  File "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/scripts/sct_register_to_template.py", line 817, in <module>
+    main(sys.argv[1:])
+  File "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/scripts/sct_register_to_template.py", line 304, in main
+    arguments = parser.parse_args(argv)
+  File "/opt/spinalcordtoolbox-5.8/python/envs/venv_sct/lib/python3.8/argparse.py", line 1768, in parse_args
+    args, argv = self.parse_known_args(args, namespace)
+  File "/opt/spinalcordtoolbox-5.8/python/envs/venv_sct/lib/python3.8/argparse.py", line 1800, in parse_known_args
+    namespace, args = self._parse_known_args(args, namespace)
+  File "/opt/spinalcordtoolbox-5.8/python/envs/venv_sct/lib/python3.8/argparse.py", line 2006, in _parse_known_args
+    start_index = consume_optional(start_index)
+  File "/opt/spinalcordtoolbox-5.8/python/envs/venv_sct/lib/python3.8/argparse.py", line 1946, in consume_optional
+    take_action(action, args, option_string)
+  File "/opt/spinalcordtoolbox-5.8/python/envs/venv_sct/lib/python3.8/argparse.py", line 1874, in take_action
+    action(self, namespace, argument_values, option_string)
+  File "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/utils/shell.py", line 230, in __call__
+    folders = self.create_folder(values)
+  File "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/utils/shell.py", line 223, in create_folder
+    os.makedirs(folder_name, exist_ok=True)
+  File "/opt/spinalcordtoolbox-5.8/python/envs/venv_sct/lib/python3.8/os.py", line 223, in makedirs
+    mkdir(name, mode)
+OSError: [Errno 30] Read-only file system: '/storage/tmp/tmpnhgyrqup/qc'
+
+
+
+
+

Once the PAM50 is registered with the T1w image, we can warp all objects pertaining to the PAM50 into the T1w native space. These objects notably include a white matter atlas, which will be subsequently used to extract qMR metrics within specific white matter tracts.

+
+
+
# Warp template
+!sct_warp_template -d {t1w+'_crop'+file_ext} -w {warp_template2anat+file_ext} -qc {qc_path}
+
+if not verbose:
+    clear_output()
+
+
+
+
+
--
+Spinal Cord Toolbox (5.8)
+
+sct_warp_template -d t1w_crop.nii.gz -w warp_template2anat.nii.gz -qc /storage/tmp/tmpnhgyrqup/qc
+--
+
+Traceback (most recent call last):
+  File "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/scripts/sct_warp_template.py", line 292, in <module>
+    main(sys.argv[1:])
+  File "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/scripts/sct_warp_template.py", line 235, in main
+    arguments = parser.parse_args(argv)
+  File "/opt/spinalcordtoolbox-5.8/python/envs/venv_sct/lib/python3.8/argparse.py", line 1768, in parse_args
+    args, argv = self.parse_known_args(args, namespace)
+  File "/opt/spinalcordtoolbox-5.8/python/envs/venv_sct/lib/python3.8/argparse.py", line 1800, in parse_known_args
+    namespace, args = self._parse_known_args(args, namespace)
+  File "/opt/spinalcordtoolbox-5.8/python/envs/venv_sct/lib/python3.8/argparse.py", line 2006, in _parse_known_args
+    start_index = consume_optional(start_index)
+  File "/opt/spinalcordtoolbox-5.8/python/envs/venv_sct/lib/python3.8/argparse.py", line 1946, in consume_optional
+    take_action(action, args, option_string)
+  File "/opt/spinalcordtoolbox-5.8/python/envs/venv_sct/lib/python3.8/argparse.py", line 1874, in take_action
+    action(self, namespace, argument_values, option_string)
+  File "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/utils/shell.py", line 230, in __call__
+    folders = self.create_folder(values)
+  File "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/utils/shell.py", line 223, in create_folder
+    os.makedirs(folder_name, exist_ok=True)
+  File "/opt/spinalcordtoolbox-5.8/python/envs/venv_sct/lib/python3.8/os.py", line 223, in makedirs
+    mkdir(name, mode)
+OSError: [Errno 30] Read-only file system: '/storage/tmp/tmpnhgyrqup/qc'
+
+
+
+
+

Results of the registration/warming appear in Figure 2.

+
+
+
# Plot QC figures
+if sys.platform == 'darwin':
+    # For local testing on OSX    
+    sct_warp_template_qc = 'qc/sct_example_data/mt/sct_warp_template'
+else:
+    # For linux and on-line Binder execution
+    sct_warp_template_qc = join(qc_path, parent_dirs[-1],  mt_folder_relative, 'sct_warp_template')
+
+folders = list(filter(lambda x: os.path.isdir(os.path.join(sct_warp_template_qc, x)), os.listdir(sct_warp_template_qc)))
+qc_date = max(folders)
+
+sct_warp_template_qc_dir = join(sct_warp_template_qc, qc_date)
+
+bkg = mpimg.imread(join(sct_warp_template_qc_dir, 'bkg_img.png'))
+overlay = mpimg.imread(join(sct_warp_template_qc_dir, 'overlay_img.png'))
+plt.figure(figsize = (20,2))
+plt.axis('off')
+imgplot = plt.imshow(bkg)
+imgplot = plt.imshow(overlay,alpha=0.3)
+
+
+
+
+
---------------------------------------------------------------------------
+FileNotFoundError                         Traceback (most recent call last)
+Cell In[13], line 9
+      5 else:
+      6     # For linux and on-line Binder execution
+      7     sct_warp_template_qc = join(qc_path, parent_dirs[-1],  mt_folder_relative, 'sct_warp_template')
+----> 9 folders = list(filter(lambda x: os.path.isdir(os.path.join(sct_warp_template_qc, x)), os.listdir(sct_warp_template_qc)))
+     10 qc_date = max(folders)
+     12 sct_warp_template_qc_dir = join(sct_warp_template_qc, qc_date)
+
+FileNotFoundError: [Errno 2] No such file or directory: '/storage/tmp/tmpnhgyrqup/qc/tmpnhgyrqup/sct_example_data/mt/sct_warp_template'
+
+
+
+
+

Figure 2. Quality control (QC) SCT module registration/warping results of the PAM50 template and atlas to the T1w native space. The white matter (in blue) is overlaid on the T1-weighted anatomical scan (in grayscale). Orientation is axial.Once co-registration between images and registration to the template is complete, we can venture into computing our favorite qMR metrics. Here, we compute the magnetization transfer ratio (MTR) and the magnetization transfer saturation (MTsat).

+

Once co-registration between images and registration to the template is complete, we can venture into computing our favorite qMR metrics. Here, we compute the magnetization transfer ratio (MTR) and the magnetization transfer saturation (MTsat).

+
+
+
# Compute MTR
+!sct_compute_mtr -mt1 {mt1+'_reg'+file_ext} -mt0 {mt0+'_reg'+file_ext}
+
+# Compute MTsat and T1
+!sct_compute_mtsat -mt {mt1+'_reg'+file_ext} -pd {mt0+'_reg'+file_ext} -t1 {t1w+'_crop'+file_ext} -trmt 57 -trpd 57 -trt1 15 -famt 9 -fapd 9 -fat1 15
+
+if not verbose:
+    clear_output()
+
+
+
+
+
--
+Spinal Cord Toolbox (5.8)
+
+sct_compute_mtr -mt1 mt1_reg.nii.gz -mt0 mt0_reg.nii.gz
+--
+
+
+Compute MTR...
+Found 0 voxels with value=0. These will be replaced by nan.
+Threshold to clip values: +/- 100
+
+
+
--
+Spinal Cord Toolbox (5.8)
+
+sct_compute_mtsat -mt mt1_reg.nii.gz -pd mt0_reg.nii.gz -t1 t1w_crop.nii.gz -trmt 57 -trpd 57 -trt1 15 -famt 9 -fapd 9 -fat1 15
+--
+
+Load data...
+
+
+
Compute T1 map...
+R1 values were found to be lower than 0.01. They will be set to inf, producing T1=0 for these voxels.
+Compute A...
+Compute MTsat...
+MTsat values were found to be larger than 1. They will be set to zero for these voxels.
+Generate output files...
+
+
+
+
+

Now that our metrics are computed, we want to extract their values within specific tracts of the spinal cord. This is done with the function sct_extract_metric.

+
+
+
# Extract MTR, MTsat and T1 in WM between C2 and C4 vertebral levels
+!sct_extract_metric -i mtr.nii.gz -l 51 -vert 2:4 -perlevel 1 -o mtr_in_wm.csv
+!sct_extract_metric -i mtsat.nii.gz -l 51 -vert 2:4 -perlevel 1 -o mtsat_in_wm.csv
+!sct_extract_metric -i t1map.nii.gz -l 51 -vert 2:4 -perlevel 1 -o t1_in_wm.csv
+
+if not verbose:
+    clear_output()
+
+
+
+
+
--
+Spinal Cord Toolbox (5.8)
+
+sct_extract_metric -i mtr.nii.gz -l 51 -vert 2:4 -perlevel 1 -o mtr_in_wm.csv
+--
+
+Traceback (most recent call last):
+  File "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/scripts/sct_extract_metric.py", line 397, in <module>
+    main(sys.argv[1:])
+  File "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/scripts/sct_extract_metric.py", line 348, in main
+    raise RuntimeError(path_label + ' does not exist')
+RuntimeError: label/atlas does not exist
+
+
+
--
+Spinal Cord Toolbox (5.8)
+
+sct_extract_metric -i mtsat.nii.gz -l 51 -vert 2:4 -perlevel 1 -o mtsat_in_wm.csv
+--
+
+Traceback (most recent call last):
+  File "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/scripts/sct_extract_metric.py", line 397, in <module>
+    main(sys.argv[1:])
+  File "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/scripts/sct_extract_metric.py", line 348, in main
+    raise RuntimeError(path_label + ' does not exist')
+RuntimeError: label/atlas does not exist
+
+
+
--
+Spinal Cord Toolbox (5.8)
+
+sct_extract_metric -i t1map.nii.gz -l 51 -vert 2:4 -perlevel 1 -o t1_in_wm.csv
+--
+
+Traceback (most recent call last):
+  File "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/scripts/sct_extract_metric.py", line 397, in <module>
+    main(sys.argv[1:])
+  File "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/scripts/sct_extract_metric.py", line 348, in main
+    raise RuntimeError(path_label + ' does not exist')
+RuntimeError: label/atlas does not exist
+
+
+
+
+

Results are output as csv files, which we can then open and display as bar graphs.

+
+
+
!pip install pandas
+
+
+
+
+
Defaulting to user installation because normal site-packages is not writeable
+
+
+
Requirement already satisfied: pandas in /home/ubuntu/.local/lib/python3.10/site-packages (2.1.4)
+
+
+
Requirement already satisfied: numpy<2,>=1.22.4 in /home/ubuntu/.local/lib/python3.10/site-packages (from pandas) (1.26.2)
+Requirement already satisfied: python-dateutil>=2.8.2 in /home/ubuntu/.local/lib/python3.10/site-packages (from pandas) (2.8.2)
+Requirement already satisfied: pytz>=2020.1 in /usr/lib/python3/dist-packages (from pandas) (2022.1)
+Requirement already satisfied: tzdata>=2022.1 in /home/ubuntu/.local/lib/python3.10/site-packages (from pandas) (2023.3)
+Requirement already satisfied: six>=1.5 in /usr/lib/python3/dist-packages (from python-dateutil>=2.8.2->pandas) (1.16.0)
+
+
+
WARNING: Error parsing dependencies of distro-info: Invalid version: '1.1build1'
+
+
+
+
WARNING: Error parsing dependencies of python-debian: Invalid version: '0.1.43ubuntu1'
+
+
+
+
+
+
+
+
# Display plots of results
+import pandas as pd
+fig, ax = plt.subplots(ncols=3, figsize=(15,4))
+
+# Build dic for plot
+plot_dic = {'file': ['mtr_in_wm.csv', 'mtsat_in_wm.csv', 't1_in_wm.csv'],
+            'ylabel': ['MTR [%]', 'MTsat [a.u.]', 'T1 [s]']}
+
+# Loop across dic entries
+for i in range(len(plot_dic)+1):
+    df = pd.read_csv(plot_dic['file'][i])
+    df.plot.bar(x='VertLevel', y='WA()', rot=0, ax=ax[i], legend=False)
+    ax[i].set_ylabel(plot_dic['ylabel'][i])
+    ax[i].yaxis.grid()
+
+
+
+
+
---------------------------------------------------------------------------
+FileNotFoundError                         Traceback (most recent call last)
+Cell In[17], line 11
+      9 # Loop across dic entries
+     10 for i in range(len(plot_dic)+1):
+---> 11     df = pd.read_csv(plot_dic['file'][i])
+     12     df.plot.bar(x='VertLevel', y='WA()', rot=0, ax=ax[i], legend=False)
+     13     ax[i].set_ylabel(plot_dic['ylabel'][i])
+
+File ~/.local/lib/python3.10/site-packages/pandas/io/parsers/readers.py:948, in read_csv(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, skipfooter, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, date_format, dayfirst, cache_dates, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, doublequote, escapechar, comment, encoding, encoding_errors, dialect, on_bad_lines, delim_whitespace, low_memory, memory_map, float_precision, storage_options, dtype_backend)
+    935 kwds_defaults = _refine_defaults_read(
+    936     dialect,
+    937     delimiter,
+   (...)
+    944     dtype_backend=dtype_backend,
+    945 )
+    946 kwds.update(kwds_defaults)
+--> 948 return _read(filepath_or_buffer, kwds)
+
+File ~/.local/lib/python3.10/site-packages/pandas/io/parsers/readers.py:611, in _read(filepath_or_buffer, kwds)
+    608 _validate_names(kwds.get("names", None))
+    610 # Create the parser.
+--> 611 parser = TextFileReader(filepath_or_buffer, **kwds)
+    613 if chunksize or iterator:
+    614     return parser
+
+File ~/.local/lib/python3.10/site-packages/pandas/io/parsers/readers.py:1448, in TextFileReader.__init__(self, f, engine, **kwds)
+   1445     self.options["has_index_names"] = kwds["has_index_names"]
+   1447 self.handles: IOHandles | None = None
+-> 1448 self._engine = self._make_engine(f, self.engine)
+
+File ~/.local/lib/python3.10/site-packages/pandas/io/parsers/readers.py:1705, in TextFileReader._make_engine(self, f, engine)
+   1703     if "b" not in mode:
+   1704         mode += "b"
+-> 1705 self.handles = get_handle(
+   1706     f,
+   1707     mode,
+   1708     encoding=self.options.get("encoding", None),
+   1709     compression=self.options.get("compression", None),
+   1710     memory_map=self.options.get("memory_map", False),
+   1711     is_text=is_text,
+   1712     errors=self.options.get("encoding_errors", "strict"),
+   1713     storage_options=self.options.get("storage_options", None),
+   1714 )
+   1715 assert self.handles is not None
+   1716 f = self.handles.handle
+
+File ~/.local/lib/python3.10/site-packages/pandas/io/common.py:863, in get_handle(path_or_buf, mode, encoding, compression, memory_map, is_text, errors, storage_options)
+    858 elif isinstance(handle, str):
+    859     # Check whether the filename is to be opened in binary mode.
+    860     # Binary mode does not support 'encoding' and 'newline'.
+    861     if ioargs.encoding and "b" not in ioargs.mode:
+    862         # Encoding
+--> 863         handle = open(
+    864             handle,
+    865             ioargs.mode,
+    866             encoding=ioargs.encoding,
+    867             errors=errors,
+    868             newline="",
+    869         )
+    870     else:
+    871         # Binary mode
+    872         handle = open(handle, ioargs.mode)
+
+FileNotFoundError: [Errno 2] No such file or directory: 'mtr_in_wm.csv'
+
+
+_images/bc215981e109743989603d8d1c8ae9359f60763287ca50d32a1b16995c782e08.png +
+
+

Figure 3. Quantitative MRI metrics in WM between C2 and C4 vertebral levels. The three calculated metrics from this dataset using SCT are the magnetization transfer ratio (MTR – [%]), magnetization transfer saturation (MTsat – [a.u.]), and longitudinal relaxation time (T1 – [s]).

+
+ + + + +
+ + + + + + +
+ +
+
+
+ +
+ + + + + + +
+
+ + +
+ + +
+
+
+ + + + + +
+
+ + \ No newline at end of file diff --git a/search.html b/search.html index 44102ef94..4ea88adce 100644 --- a/search.html +++ b/search.html @@ -155,7 +155,7 @@ - diff --git a/searchindex.js b/searchindex.js index 310ce94a1..598049d6a 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["nipype_full"], "filenames": ["nipype_full.ipynb"], "titles": ["Nipype on Neurodesk"], "terms": {"author": 0, "monika": 0, "doerig": 0, "press": 0, "space": 0, "proce": 0, "through": 0, "In": 0, "code": 0, "cell": 0, "you": 0, "shift": 0, "enter": 0, "usual": 0, "evalu": 0, "your": 0, "directli": 0, "move": 0, "next": 0, "alreadi": 0, "displai": 0, "ctrl": 0, "run": 0, "command": 0, "without": 0, "direclti": 0, "captur": 0, "os": 0, "sy": 0, "in_colab": 0, "googl": 0, "colab": 0, "modul": 0, "environ": 0, "ld_preload": 0, "apptainer_bindpath": 0, "tmp": 0, "cvmf": 0, "mplconfigdir": 0, "matplotlib": 0, "mpldir": 0, "lmod_cmd": 0, "usr": 0, "share": 0, "lmod": 0, "libexec": 0, "curl": 0, "j": 0, "o": 0, "http": 0, "raw": 0, "githubusercont": 0, "com": 0, "neurocommand": 0, "main": 0, "googlecolab_setup": 0, "sh": 0, "chmod": 0, "x": 0, "modulepath": 0, "join": 0, "map": 0, "str": 0, "list": 0, "lambda": 0, "path": 0, "abspath": 0, "ardc": 0, "edu": 0, "au": 0, "listdir": 0, "cpu": 0, "inform": 0, "cat": 0, "proc": 0, "cpuinfo": 0, "grep": 0, "vendor": 0, "uniq": 0, "model": 0, "name": 0, "vendor_id": 0, "authenticamd": 0, "amd": 0, "epyc": 0, "rome": 0, "processor": 0, "keep": 0, "advanc": 0, "slide": 0, "object": 0, "know": 0, "basic": 0, "And": 0, "how": 0, "us": 0, "learn": 0, "can": 0, "appli": 0, "analyz": 0, "neuroimag": 0, "practic": 0, "get": 0, "pointer": 0, "Be": 0, "awar": 0, "part": 0, "larg": 0, "ecosystem": 0, "therefor": 0, "about": 0, "what": 0, "out": 0, "empow": 0, "new": 0, "sometim": 0, "devil": 0, "thing": 0, "take": 0, "time": 0, "open": 0, "sourc": 0, "origin": 0, "commun": 0, "provid": 0, "unifi": 0, "divers": 0, "packag": 0, "includ": 0, "ant": 0, "spm": 0, "freesurf": 0, "other": 0, "facilit": 0, "seamless": 0, "between": 0, "Its": 0, "flexibl": 0, "ha": 0, "made": 0, "prefer": 0, "basi": 0, "wide": 0, "pre": 0, "process": 0, "fmriprep": 0, "rightarrow": 0, "primari": 0, "goal": 0, "drive": 0, "simplifi": 0, "integr": 0, "variou": 0, "allow": 0, "util": 0, "algorithm": 0, "ar": 0, "most": 0, "appropri": 0, "specif": 0, "problem": 0, "figur": 0, "enabl": 0, "all": 0, "applic": 0, "insid": 0, "comput": 0, "demonstr": 0, "we": 0, "softwar": 0, "manag": 0, "load": 0, "librair": 0, "It": 0, "access": 0, "user": 0, "easili": 0, "switch": 0, "version": 0, "ensur": 0, "compat": 0, "Or": 0, "ani": 0, "await": 0, "0": 0, "7": 0, "warn": 0, "been": 0, "chang": 0, "unexpect": 0, "wai": 0, "unabl": 0, "given": 0, "functional_imag": 0, "rodent_imag": 0, "image_registr": 0, "structural_imag": 0, "image_segment": 0, "quantitative_imag": 0, "hippocampu": 0, "image_reconstruct": 0, "data_organis": 0, "electrophysiolog": 0, "phase_process": 0, "program": 0, "machine_learn": 0, "diffusion_imag": 0, "bodi": 0, "visual": 0, "spectroscopi": 0, "quality_control": 0, "statist": 0, "shape_analysi": 0, "spine": 0, "molecular_biolog": 0, "bids_app": 0, "cryo_em": 0, "_diffusion_imag": 0, "_functional_imag": 0, "_workflow": 0, "pleas": 0, "instead": 0, "fsloutputtyp": 0, "nifti_gz": 0, "default": 0, "nifti": 0, "from": 0, "base": 0, "info": 0, "print": 0, "output_typ": 0, "If": 0, "abov": 0, "kernel": 0, "need": 0, "restart": 0, "afni": 0, "well": 0, "22": 0, "06": 0, "spm12": 0, "r7771": 0, "architectur": 0, "wrap": 0, "function": 0, "direct": 0, "graph": 0, "forest": 0, "whose": 0, "edg": 0, "repres": 0, "flow": 0, "mani": 0, "grab": 0, "select": 0, "structur": 0, "handl": 0, "stream": 0, "compon": 0, "describ": 0, "should": 0, "subject": 0, "flanker": 0, "dataset": 0, "pattern": 0, "sub": 0, "datalad": 0, "github": 0, "openneurodataset": 0, "ds000102": 0, "git": 0, "cd": 0, "clone": 0, "attempt": 0, "00": 0, "candid": 0, "locat": 0, "enumer": 0, "count": 0, "27": 0, "compress": 0, "23": 0, "receiv": 0, "15k": 0, "resolv": 0, "537": 0, "delta": 0, "scan": 0, "unlock": 0, "file": 0, "thi": 0, "mai": 0, "some": 0, "remot": 0, "usabl": 0, "annex": 0, "ignor": 0, "sibl": 0, "s3": 0, "privat": 0, "auto": 0, "d": 0, "storag": 0, "tmp9ub_itpf": 0, "1minstal": 0, "0m": 0, "32mok": 0, "35mdataset": 0, "total": 0, "136m": 0, "byte": 0, "02": 0, "2_t1w": 0, "nii": 0, "gz": 0, "10": 0, "7m": 0, "17": 0, "9k": 0, "20": 0, "76": 0, "4k": 0, "34": 0, "3k": 0, "03": 0, "47": 0, "0k": 0, "51": 0, "7k": 0, "01": 0, "04": 0, "11": 0, "42": 0, "85": 0, "5k": 0, "08": 0, "56": 0, "6k": 0, "103k": 0, "55": 0, "60": 0, "8k": 0, "120k": 0, "44": 0, "64": 0, "138k": 0, "36": 0, "67": 0, "173k": 0, "28": 0, "71": 0, "2k": 0, "190k": 0, "25": 0, "72": 0, "207k": 0, "73": 0, "225k": 0, "80": 0, "260k": 0, "52": 0, "93": 0, "277k": 0, "54": 0, "91": 0, "1k": 0, "347k": 0, "09": 0, "149k": 0, "382k": 0, "151k": 0, "451k": 0, "194k": 0, "503k": 0, "50": 0, "204k": 0, "573k": 0, "05": 0, "43": 0, "234k": 0, "660k": 0, "730k": 0, "29": 0, "337k": 0, "8": 0, "851k": 0, "343k": 0, "9": 0, "938k": 0, "391k": 0, "08m": 0, "416k": 0, "20m": 0, "469k": 0, "13": 0, "37m": 0, "533k": 0, "14": 0, "55m": 0, "15": 0, "597k": 0, "16": 0, "72m": 0, "07": 0, "651k": 0, "18": 0, "95m": 0, "745k": 0, "17m": 0, "819k": 0, "42m": 0, "894k": 0, "70m": 0, "987k": 0, "99m": 0, "31": 0, "29m": 0, "65m": 0, "24m": 0, "37": 0, "02m": 0, "41": 0, "44m": 0, "46m": 0, "45": 0, "87m": 0, "59m": 0, "34m": 0, "73m": 0, "85m": 0, "59": 0, "39m": 0, "65": 0, "98m": 0, "07m": 0, "60m": 0, "26m": 0, "77": 0, "45m": 0, "83": 0, "96m": 0, "15m": 0, "98": 0, "5m": 0, "12m": 0, "12": 0, "841k": 0, "f": 0, "_bold": 0, "2m": 0, "862k": 0, "79m": 0, "66m": 0, "74m": 0, "78m": 0, "04m": 0, "84m": 0, "28m": 0, "21": 0, "00m": 0, "52m": 0, "22m": 0, "76m": 0, "48m": 0, "03m": 0, "82m": 0, "38": 0, "25m": 0, "14m": 0, "49": 0, "3m": 0, "71m": 0, "19": 0, "23m": 0, "9m": 0, "53m": 0, "4m": 0, "49m": 0, "35m": 0, "24": 0, "32m": 0, "88": 0, "95": 0, "8m": 0, "99": 0, "39": 0, "67m": 0, "68m": 0, "33m": 0, "19m": 0, "46": 0, "27m": 0, "58": 0, "06m": 0, "63": 0, "6m": 0, "57m": 0, "75": 0, "79": 0, "1m": 0, "69": 0, "1_t1w": 0, "62m": 0, "88m": 0, "11m": 0, "77m": 0, "30": 0, "97m": 0, "53": 0, "56m": 0, "68": 0, "69m": 0, "61m": 0, "58m": 0, "108m": 0, "26": 0, "92m": 0, "81m": 0, "10m": 0, "33": 0, "62": 0, "66": 0, "74": 0, "87": 0, "1mget": 0, "anat": 0, "02_t1w": 0, "35mfile": 0, "public": 0, "func": 0, "02_task": 0, "flanker_run": 0, "1_bold": 0, "2_bold": 0, "01_t1w": 0, "01_task": 0, "35mdirectori": 0, "action": 0, "summari": 0, "ok": 0, "pip": 0, "nilearn": 0, "becaus": 0, "normal": 0, "site": 0, "writeabl": 0, "requir": 0, "satisfi": 0, "home": 0, "ubuntu": 0, "local": 0, "lib": 0, "python3": 0, "joblib": 0, "lxml": 0, "nibabel": 0, "numpi": 0, "dist": 0, "panda": 0, "request": 0, "32": 0, "scikit": 0, "scipi": 0, "dateutil": 0, "pytz": 0, "2020": 0, "2022": 0, "tzdata": 0, "2023": 0, "charset": 0, "idna": 0, "urllib3": 0, "certifi": 0, "2017": 0, "threadpoolctl": 0, "six": 0, "33mwarn": 0, "error": 0, "pars": 0, "distro": 0, "invalid": 0, "1build1": 0, "debian": 0, "43ubuntu1": 0, "identityinterfac": 0, "plot": 0, "ipython": 0, "imag": 0, "opj": 0, "pyplot": 0, "plt": 0, "np": 0, "nib": 0, "creat": 0, "directori": 0, "doesn": 0, "t": 0, "exist": 0, "yet": 0, "mkdir": 0, "particular": 0, "even": 0, "written": 0, "anoth": 0, "languag": 0, "than": 0, "dcm2nii": 0, "nipi": 0, "mne": 0, "dipi": 0, "Such": 0, "sort": 0, "option": 0, "extern": 0, "e": 0, "g": 0, "track": 0, "check": 0, "expect": 0, "type": 0, "framework": 0, "page": 0, "class": 0, "help": 0, "gener": 0, "explan": 0, "possibl": 0, "mandatori": 0, "paramet": 0, "skull": 0, "strip": 0, "For": 0, "complet": 0, "see": 0, "document": 0, "fmrib": 0, "ox": 0, "ac": 0, "uk": 0, "fslwiki": 0, "userguid": 0, "_": 0, "btr": 0, "in_fil": 0, "frac": 0, "out_fil": 0, "brain_anat": 0, "cmdline": 0, "70": 0, "re": 0, "doctest": 0, "skip": 0, "pathlik": 0, "string": 0, "argument": 0, "posit": 0, "outlin": 0, "boolean": 0, "surfac": 0, "mask": 0, "binari": 0, "m": 0, "no_output": 0, "don": 0, "segment": 0, "n": 0, "float": 0, "fraction": 0, "intens": 0, "threshold": 0, "2f": 0, "vertical_gradi": 0, "vertic": 0, "gradient": 0, "radiu": 0, "integ": 0, "head": 0, "r": 0, "center": 0, "item": 0, "which": 0, "graviti": 0, "voxel": 0, "c": 0, "mesh": 0, "vtk": 0, "robust": 0, "centr": 0, "estim": 0, "sever": 0, "mutually_exclus": 0, "reduce_bia": 0, "pad": 0, "remove_ey": 0, "t2_guid": 0, "improv": 0, "fov": 0, "veri": 0, "small": 0, "z": 0, "temporarili": 0, "end": 0, "slice": 0, "ey": 0, "optic": 0, "nerv": 0, "cleanup": 0, "siena": 0, "bet2": 0, "betsurf": 0, "addit": 0, "scalp": 0, "registr": 0, "when": 0, "also": 0, "feed": 0, "non": 0, "t2": 0, "a2": 0, "4d": 0, "fmri": 0, "bia": 0, "field": 0, "neck": 0, "b": 0, "nifti_pair": 0, "nifti_pair_gz": 0, "arg": 0, "dictionari": 0, "none": 0, "valu": 0, "variabl": 0, "skullstrip": 0, "mask_fil": 0, "outline_fil": 0, "meshfil": 0, "inskull_mask_fil": 0, "inskul": 0, "inskull_mesh_fil": 0, "outskull_mask_fil": 0, "outskul": 0, "outskull_mesh_fil": 0, "outskin_mask_fil": 0, "outskin": 0, "outskin_mesh_fil": 0, "skull_mask_fil": 0, "skull_fil": 0, "instanc": 0, "t1w_nipype_bet": 0, "spit": 0, "result": 0, "why": 0, "rel": 0, "work": 0, "store": 0, "temporari": 0, "like": 0, "show": 0, "undefin": 0, "give": 0, "transpar": 0, "happen": 0, "under": 0, "hood": 0, "one": 0, "line": 0, "To": 0, "streamlin": 0, "multipl": 0, "sensibl": 0, "order": 0, "thei": 0, "put": 0, "certain": 0, "specifi": 0, "script": 0, "each": 0, "consist": 0, "categori": 0, "least": 0, "expos": 0, "its": 0, "own": 0, "add": 0, "quit": 0, "similar": 0, "oper": 0, "over": 0, "separ": 0, "ultim": 0, "return": 0, "them": 0, "motion": 0, "correct": 0, "b1": 0, "b2": 0, "b3": 0, "afterward": 0, "togeth": 0, "glm": 0, "i": 0, "arrai": 0, "repetit": 0, "split": 0, "branch": 0, "same": 0, "preprocess": 0, "do": 0, "infer": 0, "opposit": 0, "effect": 0, "merg": 0, "back": 0, "conjunct": 0, "upstream": 0, "reassembl": 0, "downstream": 0, "group": 0, "level": 0, "pipelin": 0, "nodenam": 0, "nodetyp": 0, "interface_funct": 0, "labelnam": 0, "come": 0, "label": 0, "defin": 0, "method": 0, "underli": 0, "base_dir": 0, "absolut": 0, "otherwis": 0, "would": 0, "save": 0, "somewher": 0, "unlik": 0, "off": 0, "hierarchi": 0, "reason": 0, "becom": 0, "clear": 0, "section": 0, "pass": 0, "filenam": 0, "input_fil": 0, "getcwd": 0, "output_fil": 0, "bet_nod": 0, "true": 0, "241017": 0, "598": 0, "tmpcl8cgy4v": 0, "605": 0, "409": 0, "stdout": 0, "2024": 0, "17t00": 0, "409603": 0, "412": 0, "412044": 0, "valid": 0, "413": 0, "557": 0, "finish": 0, "elaps": 0, "94854": 0, "560": 0, "nodeexecutionerror": 0, "traceback": 0, "recent": 0, "call": 0, "last": 0, "py": 0, "527": 0, "self": 0, "updatehash": 0, "524": 0, "savepkl": 0, "op": 0, "outdir": 0, "_input": 0, "pklz": 0, "get_traitsfre": 0, "526": 0, "try": 0, "_run_interfac": 0, "528": 0, "except": 0, "529": 0, "logger": 0, "fullnam": 0, "645": 0, "643": 0, "_update_hash": 0, "644": 0, "_load_result": 0, "_run_command": 0, "771": 0, "copyfil": 0, "769": 0, "alwai": 0, "along": 0, "770": 0, "msg": 0, "_tab": 0, "runtim": 0, "rais": 0, "773": 0, "while": 0, "stderr": 0, "runtimeerror": 0, "subprocess": 0, "exit": 0, "produc": 0, "plot_anat": 0, "titl": 0, "cut_coord": 0, "display_mod": 0, "ortho": 0, "dim": 0, "draw_cross": 0, "fals": 0, "annot": 0, "properti": 0, "encod": 0, "acycl": 0, "dag": 0, "where": 0, "stage": 0, "unidirection": 0, "cycl": 0, "direction": 0, "make": 0, "relationship": 0, "explicit": 0, "control": 0, "setup": 0, "individu": 0, "Will": 0, "care": 0, "arrang": 0, "effici": 0, "element": 0, "By": 0, "manual": 0, "dure": 0, "tutori": 0, "write_graph": 0, "graphviz": 0, "dot": 0, "png": 0, "obtain": 0, "smooth": 0, "isotropicsmooth": 0, "fwhm": 0, "applymask": 0, "workshop": 0, "working_dir": 0, "wf_work_dir": 0, "initi": 0, "wf": 0, "smoothflow": 0, "go": 0, "actual": 0, "being": 0, "There": 0, "two": 0, "establish": 0, "source_output": 0, "dest": 0, "dest_input": 0, "onc": 0, "source_output1": 0, "dest_input1": 0, "source_output2": 0, "dest_input2": 0, "workflow_graph": 0, "graph2us": 0, "hierarch": 0, "simple_form": 0, "further": 0, "inspect": 0, "flat": 0, "graph_detail": 0, "530": 0, "serial": 0, "here": 0, "log": 0, "monitor": 0, "566": 0, "568": 0, "573": 0, "105": 0, "105149": 0, "107": 0, "109": 0, "288": 0, "712472": 0, "292": 0, "295": 0, "fail": 0, "host": 0, "runner": 0, "296": 0, "crash": 0, "20241017": 0, "005117": 0, "ac06cc5d": 0, "3b22": 0, "4017": 0, "9dba": 0, "a208f3c816dc": 0, "linear": 0, "01_t1w_brain": 0, "299": 0, "303": 0, "math": 0, "550": 0, "549927": 0, "No": 0, "match": 0, "553": 0, "553468": 0, "termin": 0, "after": 0, "throw": 0, "std": 0, "runtime_error": 0, "554": 0, "944": 0, "944336": 0, "contain": 0, "fsl_6": 0, "4_20231005": 0, "fslmath": 0, "3598199": 0, "abort": 0, "dump": 0, "singular": 0, "silent": 0, "exec": 0, "neurodesk_singularity_opt": 0, "pwd": 0, "simg": 0, "114": 0, "808403": 0, "119": 0, "122": 0, "123": 0, "005118": 0, "69e96b27": 0, "758c": 0, "437a": 0, "a8b7": 0, "0b3b278d2d97": 0, "69864": 0, "01_t1w_smooth": 0, "134": 0, "125": 0, "128": 0, "could": 0, "129": 0, "crashfil": 0, "130": 0, "132": 0, "133": 0, "linearplugin": 0, "config": 0, "_status_callback": 0, "start": 0, "48": 0, "exc": 0, "wa": 0, "caus": 0, "follow": 0, "638": 0, "plugin_arg": 0, "636": 0, "str2bool": 0, "create_report": 0, "637": 0, "_write_report_info": 0, "execgraph": 0, "639": 0, "datestr": 0, "datetim": 0, "utcnow": 0, "strftime": 0, "y": 0, "dt": 0, "h": 0, "640": 0, "write_proven": 0, "82": 0, "len": 0, "78": 0, "tree": 0, "js": 0, "json": 0, "html": 0, "_report": 0, "34moutput": 0, "00mgraph_detail": 0, "00mgraph": 0, "34mskullstrip": 0, "00mcommand": 0, "txt": 0, "36msub": 0, "31m": 0, "34msmooth": 0, "00mworkflow_graph": 0, "helper": 0, "3d": 0, "def": 0, "plot_slic": 0, "fname": 0, "img": 0, "get_fdata": 0, "cut": 0, "middl": 0, "int": 0, "shape": 0, "imshow": 0, "rot90": 0, "cmap": 0, "grai": 0, "gca": 0, "set_axis_off": 0, "figsiz": 0, "01_t1w_brain_mask": 0, "01_t1w_smooth_mask": 0, "add_subplot": 0, "filenotfounderror": 0, "loadsav": 0, "100": 0, "kwarg": 0, "stat_result": 0, "stat": 0, "101": 0, "oserror": 0, "errno": 0, "occur": 0, "102": 0, "103": 0, "st_size": 0, "104": 0, "imagefileerror": 0, "empti": 0, "across": 0, "parallel": 0, "easi": 0, "machin": 0, "singl": 0, "determin": 0, "topoloci": 0, "multicor": 0, "multiprocess": 0, "librari": 0, "distribut": 0, "job": 0, "submiss": 0, "cluster": 0, "schedul": 0, "htcondor": 0, "pb": 0, "slurm": 0, "sge": 0, "oar": 0, "lsf": 0, "submit": 0, "dagman": 0, "complex": 0, "capabl": 0, "special": 0, "soma": 0, "hpc": 0, "often": 0, "plugin_nam": 0, "args_dict": 0, "number": 0, "thread": 0, "automat": 0, "detect": 0, "multiproc": 0, "n_proc": 0, "num_thread": 0, "memory_gb": 0, "num_gb": 0, "simpli": 0, "templat": 0, "want": 0, "sbatch_arg": 0, "partit": 0, "gre": 0, "etc": 0, "sbatch": 0, "underneath": 0, "jobid_r": 0, "regular": 0, "express": 0, "custom": 0, "id": 0, "search": 0, "versatil": 0, "retriev": 0, "criteria": 0, "wildcard": 0, "support": 0, "almost": 0, "organ": 0, "But": 0, "altern": 0, "avail": 0, "selectfil": 0, "simpler": 0, "built": 0, "format": 0, "replac": 0, "curli": 0, "brace": 0, "bidsdatagrabb": 0, "bid": 0, "compliant": 0, "datafind": 0, "less": 0, "proscript": 0, "approach": 0, "gather": 0, "compar": 0, "freesurfersourc": 0, "case": 0, "grabber": 0, "recon": 0, "jsonfilegrabb": 0, "s3datagrabb": 0, "pull": 0, "amazon": 0, "bucket": 0, "sshdatagrabb": 0, "extens": 0, "ssh": 0, "server": 0, "xnatsourc": 0, "xnat": 0, "let": 0, "assum": 0, "anatom": 0, "l": 0, "csv": 0, "pdf": 0, "34mds000102": 0, "00mchang": 0, "00mdataset_descript": 0, "34mderiv": 0, "34mmriqc": 0, "00mparticip": 0, "tsv": 0, "00mreadm": 0, "34msub": 0, "34manat": 0, "pf": 0, "md5e": 0, "s10581116": 0, "757e697a01eeea5c97a7d6fbc7153373": 0, "34mfunc": 0, "w9": 0, "s28061534": 0, "8e8c44ff53f9b5d46f2caae5916fa4ef": 0, "00msub": 0, "1_event": 0, "s28143286": 0, "f0bcf782c3688e2cf7149b4665949484": 0, "2_event": 0, "ff": 0, "s10737123": 0, "cbd4181ee26559e8ec0a441fa2f834a7": 0, "8v": 0, "2j": 0, "s29188378": 0, "80050f0deb13562c24f2fc23f8d095bd": 0, "fm": 0, "kw": 0, "s29193540": 0, "cc013f2d7d148b448edca8aada349d02": 0, "40": 0, "01msub": 0, "03_t1w": 0, "7w": 0, "9z": 0, "s10707026": 0, "8f1858934cc7c7457e3a4a71cc2131fc": 0, "03_task": 0, "q6": 0, "kf": 0, "s28755729": 0, "b19466702eee6b9385bd6e19e362f94c": 0, "zv": 0, "k1": 0, "s28782544": 0, "8d9700a435d08c90f0c1d534efdc8b69": 0, "04_t1w": 0, "fw": 0, "s10738444": 0, "2a9a2ba4ea7d2324c84bf5a2882f196c": 0, "04_task": 0, "0q": 0, "s29062799": 0, "27171406951ea275cb5857ea0dc32345": 0, "fz": 0, "s29071279": 0, "f89b61fe3ebab26df1374f2564bd95c2": 0, "05_t1w": 0, "k2": 0, "kj": 0, "s10753867": 0, "c4b5788da5f4c627f0f5862da5f46c35": 0, "05_task": 0, "vz": 0, "z5": 0, "s29667270": 0, "0ce9ac78b6aa9a77fc94c655a6ff5a06": 0, "z7": 0, "mp": 0, "s29660544": 0, "752750dabb21e2cf28e87d1d550a71b9": 0, "06_t1w": 0, "5w": 0, "g0": 0, "s10620585": 0, "1132eab3830fe59b8a10b6582bb49004": 0, "06_task": 0, "3x": 0, "qj": 0, "s29386982": 0, "e671c0c647ce7d0d4596e35b702ee970": 0, "9j": 0, "6p": 0, "s29379265": 0, "e513a2746d2b5c603f96044cf48c557c": 0, "07_t1w": 0, "s10718092": 0, "38481fbc489dfb1ec4b174b57591a074": 0, "07_task": 0, "z1": 0, "s28946009": 0, "5baf7a314874b280543fc0f91f2731af": 0, "jf": 0, "w7": 0, "s28960603": 0, "682e13963bfc49cc6ae05e9ba5c62619": 0, "08_t1w": 0, "mw": 0, "mm": 0, "s10561256": 0, "b94dddd8dc1c146aa8cd97f8d9994146": 0, "08_task": 0, "zx": 0, "v9": 0, "s28641609": 0, "47314e6d1a14b8545686110b5b67f8b8": 0, "wz": 0, "f0": 0, "s28636310": 0, "4535bf26281e1c5556ad0d3468e7fe4": 0, "09_t1w": 0, "zz": 0, "s10775967": 0, "e6a18e64bc0a6b17254a9564cf9b8f82": 0, "09_task": 0, "k9": 0, "1x": 0, "s29200533": 0, "59e86a903e0ab3d1d320c794ba1f0777": 0, "w3": 0, "94": 0, "s29223017": 0, "7f3fb9e260d3bd28e29b0b586ce4c344": 0, "10_t1w": 0, "5f": 0, "3f": 0, "s10750712": 0, "bde2309077bffe22cb65e42ebdce5bfa": 0, "10_task": 0, "3p": 0, "qp": 0, "s29732696": 0, "339715d5cec387f4d44dfe94f304a429": 0, "s29724034": 0, "16f2bf452524a315182f188becc1866d": 0, "11_t1w": 0, "xx": 0, "s10534963": 0, "9e5bff7ec0b5df2850e1d05b1af281ba": 0, "11_task": 0, "35": 0, "fk": 0, "s28226875": 0, "d5012074c2c7a0a394861b010bcf9a8f": 0, "j7": 0, "s28198976": 0, "c0a64e3b549568c44bb40b1588027c9a": 0, "12_t1w": 0, "kx": 0, "s10550168": 0, "a7f651adc817b6678148b575654532a4": 0, "12_task": 0, "m0": 0, "fx": 0, "s28403807": 0, "f1c3eb2e519020f4315a696ea845fc01": 0, "vw": 0, "v0": 0, "s28424992": 0, "8740628349be3c056a0411bf4a852b25": 0, "13_t1w": 0, "wm": 0, "xw": 0, "s10609761": 0, "440413c3251d182086105649164222c6": 0, "13_task": 0, "mf": 0, "m4": 0, "s28180916": 0, "aa35f4ad0cf630d6396a8a2dd1f3dda6": 0, "xp": 0, "s28202786": 0, "8caf1ac548c87b2b35f85e8ae2bf72c1": 0, "14_t1w": 0, "zw": 0, "0z": 0, "s9223596": 0, "33abfb5da565f3487e3a7aebc15f940c": 0, "14_task": 0, "jp": 0, "s29001492": 0, "250f1e4daa9be1d95e06af0d56629cc9": 0, "pk": 0, "v2": 0, "s29068193": 0, "5621a3b0af8132c509420b4ad9aaf8fb": 0, "15_t1w": 0, "mz": 0, "qq": 0, "s10752891": 0, "ddd2622f115ec0d29a0c7ab2366f6f95": 0, "15_task": 0, "jj": 0, "s28285239": 0, "feda22c4526af1910fcee58d4c42f07": 0, "9f": 0, "0w": 0, "s28289760": 0, "433000a1def662e72d8433dba151c61b": 0, "16_t1w": 0, "4g": 0, "s10927450": 0, "a196f7075c793328dd6ff3cebf36ea6b": 0, "16_task": 0, "g2": 0, "s29757991": 0, "1a1648b2fa6cc74e31c94f109d8137ba": 0, "k8": 0, "4f": 0, "s29773832": 0, "fe08739ea816254395b985ee704aaa99": 0, "17_t1w": 0, "jq": 0, "mq": 0, "s10826014": 0, "8e2a6b062df4d1c4327802f2b905ef36": 0, "17_task": 0, "2p": 0, "s28991563": 0, "9845f461a017a39d1f6e18baaa0c9c41": 0, "s29057821": 0, "84ccc041163bcc5b3a9443951e2a5a78": 0, "18_t1w": 0, "3v": 0, "s10571510": 0, "6fc4b5792bc50ea4d14eb5247676faf": 0, "18_task": 0, "p2": 0, "s28185776": 0, "5b3879ec6fc4bbe1e48efc64984f88cf": 0, "s28234699": 0, "58019d798a133e5d7806569374dd8160": 0, "19_t1w": 0, "p8": 0, "s8861893": 0, "d338005753d8af3f3d7bd8dc293e2a97": 0, "19_task": 0, "k6": 0, "s28178448": 0, "3874e748258cf19aa69a05a7c37ad137": 0, "p4": 0, "s28190932": 0, "91e6b3e4318ca28f01de8cb967cf8421": 0, "20_t1w": 0, "g1": 0, "s11025608": 0, "5929806a7aa5720fc755687e1450b06c": 0, "20_task": 0, "v5": 0, "zj": 0, "s29931631": 0, "bf9abb057367ce66961f0b7913e8e707": 0, "j3": 0, "s29945590": 0, "96cfd5b77cd096f6c6a3530015fea32d": 0, "21_t1w": 0, "s8662805": 0, "77b262ddd929fa08d78591bfbe558ac6": 0, "21_task": 0, "p9": 0, "s28756041": 0, "9ae556d4e3042532d25af5dc4ab31840": 0, "xf": 0, "m3": 0, "s28758438": 0, "81866411fc6b6333ec382a20ff0be718": 0, "22_t1w": 0, "jg": 0, "s9282392": 0, "9e7296a6a5b68df46b77836182b6681a": 0, "22_task": 0, "qw": 0, "gw": 0, "s28002098": 0, "c6bea10177a38667ceea3261a642b3c6": 0, "vx": 0, "s28027568": 0, "b34d0df9ad62485aba25296939429885": 0, "23_t1w": 0, "4z": 0, "4x": 0, "s10626062": 0, "db5a6ba6730b319c6425f2e847ce9b14": 0, "23_task": 0, "vk": 0, "8f": 0, "s28965005": 0, "4a9a96d9322563510ca14439e7fd6cea": 0, "s29050413": 0, "753b0d2c23c4af6592501219c2e2c6bd": 0, "24_t1w": 0, "fv": 0, "s10739691": 0, "458f0046eff18ee8c43456637766a819": 0, "24_task": 0, "km": 0, "s29354610": 0, "29ebfa60e52d49f7dac6814cb5fdc2bc": 0, "wj": 0, "kk": 0, "s29423307": 0, "fedaa1d7c6e34420735bb3bbe5a2fe38": 0, "25_t1w": 0, "gk": 0, "fq": 0, "s8998578": 0, "f560d832f13e757b485c16d570bf6ebc": 0, "25_task": 0, "1v": 0, "s29473003": 0, "49b04e7e4b450ec5ef93ff02d4158775": 0, "qm": 0, "m7": 0, "s29460132": 0, "b0e9039e9f33510631f229c8c2193285": 0, "26_t1w": 0, "s10850250": 0, "5f103b2660f488e4afa193f9307c1291": 0, "26_task": 0, "qv": 0, "s30127491": 0, "8e30aa4bbfcc461bac8598bf621283c5": 0, "3g": 0, "s30162480": 0, "80fd132e7cb1600ab248249e78f6f1aa": 0, "00mt1w": 0, "00mtask": 0, "flanker_bold": 0, "136": 0, "desir": 0, "_t1w": 0, "_task": 0, "_run": 0, "mean": 0, "rewrit": 0, "base_directori": 0, "subject_id": 0, "flanker_run_": 0, "run_id": 0, "context": 0, "datagabb": 0, "data_dir": 0, "dynam": 0, "subj_list": 0, "run_list": 0, "initialis": 0, "wf_input": 0, "data_input": 0, "stepwis": 0, "crashfile_format": 0, "identifi": 0, "dg": 0, "infield": 0, "outfield": 0, "folder": 0, "necessari": 0, "sort_filelist": 0, "filelist": 0, "task": 0, "fill": 0, "below": 0, "template_arg": 0, "dict": 0, "find": 0, "field_templ": 0, "s_t1w": 0, "s_task": 0, "d_bold": 0, "either": 0, "our": 0, "subgraph": 0, "simpl": 0, "ident": 0, "onli": 0, "infosourc": 0, "attribut": 0, "815": 0, "832": 0, "834": 0, "_subject_id_01": 0, "840": 0, "io": 0, "845": 0, "001044": 0, "851": 0, "_subject_id_02": 0, "855": 0, "858": 0, "000568": 0, "networkx": 0, "digraph": 0, "0x7fc4a38cfd30": 0, "cach": 0, "extran": 0, "report": 0, "hashfil": 0, "state": 0, "00m_input": 0, "00m_node": 0, "34m_report": 0, "00mreport": 0, "rst": 0, "00mresult_skullstrip": 0, "00mresult_smooth": 0, "restructur": 0, "renam": 0, "spatial": 0, "differenti": 0, "relev": 0, "intermedi": 0, "look": 0, "standard": 0, "creation": 0, "arbitrari": 0, "frontend": 0, "mysql": 0, "sqlite": 0, "databas": 0, "jsonfilesink": 0, "mysqlsink": 0, "sqlitesink": 0, "xnatsink": 0, "subdirectori": 0, "sinker": 0, "inputnod": 0, "place": 0, "second": 0, "port": 0, "subfold": 0, "mask_out_fil": 0, "syntax": 0, "tell": 0, "final": 0, "mini": 0, "wf_preproc": 0, "preproc": 0, "mcflirt": 0, "save_plot": 0, "three": 0, "mc_img": 0, "par_fil": 0, "color": 0, "363": 0, "386": 0, "394": 0, "399": 0, "readi": 0, "free": 0, "memori": 0, "gb": 0, "113": 0, "001864": 0, "401": 0, "407": 0, "628": 0, "647": 0, "584": 0, "929657": 0, "587": 0, "590": 0, "404": 0, "406": 0, "005124": 0, "f21cbf8a": 0, "f7a9": 0, "4f3c": 0, "b61a": 0, "7c81030a77a7": 0, "run_nod": 0, "1_bold_mcf": 0, "read": 0, "volum": 0, "3599520": 0, "453": 0, "aggregate_output": 0, "setattr": 0, "val": 0, "traits_extens": 0, "330": 0, "super": 0, "objekt": 0, "return_pathlik": 0, "135": 0, "trait": 0, "base_trait_handl": 0, "traiterror": 0, "trait_error": 0, "mcflirtoutputspec": 0, "must": 0, "par": 0, "400": 0, "460": 0, "410": 0, "403": 0, "405": 0, "224": 0, "distributedpluginbas": 0, "218": 0, "219": 0, "220": 0, "221": 0, "222": 0, "dir": 0, "tip": 0, "offer": 0, "substitut": 0, "rid": 0, "bold": 0, "adapt": 0, "again": 0, "818": 0, "833": 0, "843": 0, "000711": 0, "848": 0, "854": 0, "105651": 0, "108": 0, "108039": 0, "110": 0, "111": 0, "509": 0, "509223": 0, "3600924": 0, "913379": 0, "776": 0, "777": 0, "779": 0, "005127": 0, "517fa5a8": 0, "28b9": 0, "4a5a": 0, "807d": 0, "64f9b2eff31f": 0, "780": 0, "781": 0, "782": 0, "endstatu": 0, "nutshel": 0, "servic": 0, "construct": 0, "tailor": 0, "form": 0, "meant": 0, "nest": 0, "Is": 0, "standalon": 0, "design": 0, "analyt": 0, "scientif": 0, "domain": 0, "wherea": 0, "aim": 0, "lightweight": 0, "manipul": 0, "serv": 0, "reproduc": 0, "scalabl": 0, "reusabl": 0, "fulli": 0, "autom": 0, "combin": 0, "customiz": 0, "power": 0, "runnabl": 0, "submitt": 0, "unpack": 0, "worker": 0, "coordin": 0, "compos": 0, "depth": 0, "encourag": 0, "global": 0, "reduc": 0, "recomput": 0, "container": 0, "greater": 0, "semant": 0, "loop": 0, "mapreduc": 0, "extend": 0, "simp": 0, "promot": 0, "enhanc": 0, "modular": 0, "subclass": 0, "concept": 0, "functiontask": 0, "shell": 0, "shellcommandtask": 0, "incorpor": 0, "straightforward": 0, "containertask": 0, "associ": 0, "via": 0, "docker": 0, "commandlin": 0, "recombin": 0, "resembl": 0, "splitter": 0, "synchron": 0, "both": 0, "regard": 0, "hash": 0, "avoid": 0, "unnecessari": 0, "proven": 0, "activ": 0, "consum": 0, "record": 0, "address": 0, "reus": 0, "previous": 0, "peopl": 0, "laboratori": 0, "have": 0, "rerun": 0, "audit": 0, "ld": 0, "messag": 0, "mechan": 0, "These": 0, "howev": 0, "philosophi": 0, "vs": 0, "leverag": 0, "dask": 0, "grow": 0, "watermark": 0, "characterist": 0, "importlib": 0, "metadata": 0, "setuptool": 0, "decor": 0, "jedi": 0, "inlin": 0, "prompt": 0, "toolkit": 0, "pygment": 0, "stack": 0, "traitlet": 0, "exceptiongroup": 0, "pexpect": 0, "parso": 0, "wcwidth": 0, "asttoken": 0, "pure": 0, "eval": 0, "load_ext": 0, "ivers": 0, "updat": 0, "344574": 0, "implement": 0, "cpython": 0, "compil": 0, "gcc": 0, "linux": 0, "releas": 0, "x86_64": 0, "64bit": 0, "nov": 0, "gorgolewski": 0, "k": 0, "burn": 0, "madison": 0, "clark": 0, "halchenko": 0, "yo": 0, "waskom": 0, "ml": 0, "ghosh": 0, "ss": 0, "2011": 0, "front": 0, "neuroinform": 0, "jarecka": 0, "dorota": 0, "goncalv": 0, "mathia": 0, "markiewicz": 0, "christoph": 0, "esteban": 0, "oscar": 0, "lo": 0, "nicol": 0, "kaczmarzyk": 0, "jakub": 0, "satrajit": 0, "analys": 0, "139": 0, "25080": 0, "majora": 0, "342d178e": 0, "012": 0, "renton": 0, "dao": 0, "johnston": 0, "et": 0, "al": 0, "portabl": 0, "nat": 0, "doi": 0, "org": 0, "1038": 0, "s41592": 0, "023": 0, "02145": 0, "websit": 0}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"nipyp": 0, "neurodesk": 0, "an": 0, "interact": 0, "rise": 0, "slideshow": 0, "set": 0, "up": 0, "tabl": 0, "content": 0, "1": 0, "introduct": 0, "2": 0, "jupyt": 0, "notebook": 0, "3": 0, "explor": 0, "s": 0, "build": 0, "block": 0, "prepar": 0, "download": 0, "opensourc": 0, "data": 0, "instal": 0, "import": 0, "interfac": 0, "The": 0, "core": 0, "piec": 0, "exampl": 0, "fsl": 0, "brain": 0, "extract": 0, "tool": 0, "bet": 0, "node": 0, "light": 0, "wrapper": 0, "around": 0, "mapnod": 0, "iter": 0, "joinnod": 0, "workflow": 0, "connect": 0, "within": 0, "4": 0, "execut": 0, "plugin": 0, "differ": 0, "system": 0, "5": 0, "input": 0, "first": 0, "step": 0, "everi": 0, "analysi": 0, "datagrabb": 0, "6": 0, "output": 0, "datasink": 0, "pydra": 0, "A": 0, "modern": 0, "dataflow": 0, "engin": 0, "develop": 0, "project": 0, "kei": 0, "featur": 0, "more": 0, "detail": 0, "depend": 0, "python": 0, "refer": 0, "resourc": 0}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx": 56}}) \ No newline at end of file +Search.setIndex({"docnames": ["sct_toolbox"], "filenames": ["sct_toolbox.ipynb"], "titles": ["SCT Toolbox Example"], "terms": {"author": 0, "steffen": 0, "bollmann": 0, "captur": 0, "import": 0, "os": 0, "sy": 0, "in_colab": 0, "googl": 0, "colab": 0, "modul": 0, "environ": 0, "ld_preload": 0, "apptainer_bindpath": 0, "content": 0, "tmp": 0, "cvmf": 0, "mplconfigdir": 0, "matplotlib": 0, "mpldir": 0, "lmod_cmd": 0, "usr": 0, "share": 0, "lmod": 0, "libexec": 0, "curl": 0, "j": 0, "o": 0, "http": 0, "raw": 0, "githubusercont": 0, "com": 0, "neurocommand": 0, "main": 0, "googlecolab_setup": 0, "sh": 0, "chmod": 0, "x": 0, "modulepath": 0, "join": 0, "map": 0, "str": 0, "list": 0, "lambda": 0, "path": 0, "abspath": 0, "ardc": 0, "edu": 0, "au": 0, "listdir": 0, "output": 0, "cpu": 0, "inform": 0, "cat": 0, "proc": 0, "cpuinfo": 0, "grep": 0, "vendor": 0, "uniq": 0, "model": 0, "name": 0, "vendor_id": 0, "authenticamd": 0, "amd": 0, "epyc": 0, "rome": 0, "processor": 0, "In": 0, "we": 0, "can": 0, "load": 0, "specif": 0, "version": 0, "tool": 0, "here": 0, "spinalcordtoolbox": 0, "await": 0, "5": 0, "8": 0, "warn": 0, "The": 0, "ha": 0, "been": 0, "chang": 0, "unexpect": 0, "wai": 0, "unabl": 0, "given": 0, "It": 0, "functional_imag": 0, "rodent_imag": 0, "image_registr": 0, "structural_imag": 0, "image_segment": 0, "quantitative_imag": 0, "workflow": 0, "hippocampu": 0, "image_reconstruct": 0, "data_organis": 0, "electrophysiolog": 0, "phase_process": 0, "program": 0, "machine_learn": 0, "diffusion_imag": 0, "bodi": 0, "visual": 0, "spectroscopi": 0, "quality_control": 0, "statist": 0, "shape_analysi": 0, "spine": 0, "molecular_biolog": 0, "bids_app": 0, "cryo_em": 0, "_diffusion_imag": 0, "_functional_imag": 0, "_workflow": 0, "pleas": 0, "instead": 0, "thi": 0, "interact": 0, "notebook": 0, "go": 0, "through": 0, "seri": 0, "process": 0, "step": 0, "mri": 0, "analysi": 0, "first": 0, "need": 0, "necessari": 0, "filenam": 0, "folder": 0, "rest": 0, "copi": 0, "from": 0, "neurolibr": 0, "project": 0, "minor": 0, "modif": 0, "code": 0, "adjust": 0, "work": 0, "current": 0, "mathieuboudreau": 0, "github": 0, "io": 0, "pipelin": 0, "jupyt": 0, "book": 0, "01": 0, "sct_mtsat": 0, "inlin": 0, "pyplot": 0, "plt": 0, "imag": 0, "mpimg": 0, "numpi": 0, "np": 0, "ipython": 0, "displai": 0, "clear_output": 0, "base_path": 0, "getcwd": 0, "download": 0, "data": 0, "sct_download_data": 0, "d": 0, "sct_example_data": 0, "mt": 0, "chdir": 0, "33mremov": 0, "exist": 0, "destin": 0, "0m": 0, "try": 0, "url": 0, "releas": 0, "r20180525": 0, "20180525_sct_example_data": 0, "zip": 0, "statu": 0, "0": 0, "00": 0, "44": 0, "3m": 0, "b": 0, "s": 0, "21": 0, "9": 0, "30m": 0, "92": 0, "9mb": 0, "54": 0, "24": 0, "125mb": 0, "82": 0, "36": 0, "5m": 0, "122mb": 0, "100": 0, "121mb": 0, "creat": 0, "temporari": 0, "20241017005027": 0, "449442": 0, "upud6xo2": 0, "unzip": 0, "remov": 0, "0mdone": 0, "config": 0, "verbos": 0, "true": 0, "fals": 0, "clear": 0, "cell": 0, "parent_dir": 0, "split": 0, "mt_folder_rel": 0, "qc_path": 0, "qc": 0, "t1w": 0, "mt0": 0, "mt1": 0, "label_c3c4": 0, "warp_template2anat": 0, "mtr": 0, "mtsat": 0, "t1map": 0, "file_ext": 0, "nii": 0, "gz": 0, "consist": 0, "segment": 0, "done": 0, "automat": 0, "an": 0, "algorithm": 0, "call": 0, "optic": 0, "find": 0, "centerlin": 0, "follow": 0, "second": 0, "deepseg": 0, "sc": 0, "reli": 0, "deep": 0, "learn": 0, "sct_deepseg_sc": 0, "i": 0, "c": 0, "t1": 0, "storag": 0, "tmpnhgyrqup": 0, "deepseg_sc": 0, "svm": 0, "brain": 0, "kernel": 0, "dimens": 0, "2d": 0, "contrast": 0, "threshold": 0, "15": 0, "20241017005036": 0, "109654": 0, "rsbjre52": 0, "reorient": 0, "rpi": 0, "20241017005037": 0, "723751": 0, "07mknx7y": 0, "file": 0, "94mrm": 0, "rf": 0, "crop": 0, "around": 0, "normal": 0, "intens": 0, "patch": 0, "reassembl": 0, "resampl": 0, "nativ": 0, "resolut": 0, "linear": 0, "interpol": 0, "binar": 0, "33mimag": 0, "header": 0, "specifi": 0, "datatyp": 0, "float32": 0, "arrai": 0, "type": 0, "uint8": 0, "metadata": 0, "overwritten": 0, "comput": 0, "shape": 0, "17": 0, "iter": 0, "6": 0, "1": 0, "02": 0, "47iter": 0, "68": 0, "56iter": 0, "gener": 0, "qualiti": 0, "control": 0, "html": 0, "report": 0, "6x0": 0, "mm": 0, "int64": 0, "traceback": 0, "most": 0, "recent": 0, "last": 0, "opt": 0, "script": 0, "py": 0, "line": 0, "214": 0, "argv": 0, "207": 0, "generate_qc": 0, "fname_imag": 0, "fname_seg": 0, "arg": 0, "path_qc": 0, "851": 0, "add_entri": 0, "718": 0, "layout": 0, "qcslice": 0, "290": 0, "wrapped_f": 0, "self": 0, "qc_report": 0, "make_content_path": 0, "604": 0, "rais": 0, "err": 0, "601": 0, "makedir": 0, "target_img_fold": 0, "exist_ok": 0, "python": 0, "env": 0, "venv_sct": 0, "lib": 0, "python3": 0, "213": 0, "head": 0, "previou": 0, "repeat": 0, "2": 0, "more": 0, "time": 0, "223": 0, "mkdir": 0, "mode": 0, "oserror": 0, "errno": 0, "30": 0, "read": 0, "onli": 0, "system": 0, "result": 0, "appear": 0, "figur": 0, "plot": 0, "platform": 0, "darwin": 0, "For": 0, "local": 0, "test": 0, "osx": 0, "sct_deepseg_sc_qc": 0, "els": 0, "linux": 0, "binder": 0, "execut": 0, "filter": 0, "isdir": 0, "qc_date": 0, "max": 0, "sct_deepseg_sc_qc_dir": 0, "bkg": 0, "imread": 0, "bkg_img": 0, "png": 0, "overlai": 0, "overlay_img": 0, "figsiz": 0, "20": 0, "axi": 0, "off": 0, "imgplot": 0, "imshow": 0, "alpha": 0, "3": 0, "filenotfounderror": 0, "10": 0, "7": 0, "12": 0, "14": 0, "No": 0, "directori": 0, "red": 0, "overlaid": 0, "weight": 0, "anatom": 0, "scan": 0, "grayscal": 0, "orient": 0, "axial": 0, "mask": 0, "which": 0, "faster": 0, "accur": 0, "registr": 0, "concentr": 0, "surround": 0, "tissu": 0, "e": 0, "g": 0, "muscl": 0, "neck": 0, "fat": 0, "etc": 0, "could": 0, "move": 0, "independ": 0, "henc": 0, "produc": 0, "spuriou": 0, "motion": 0, "correct": 0, "sct_create_mask": 0, "p": 0, "_seg": 0, "size": 0, "35mm": 0, "_mask": 0, "sct_crop_imag": 0, "m": 0, "_crop": 0, "t1w_seg": 0, "t1w_mask": 0, "ok": 0, "20241017005050": 0, "435433": 0, "create_mask": 0, "izuszn2u": 0, "lpi": 0, "192": 0, "22": 0, "8958333": 0, "000001": 0, "230": 0, "deprecationwarn": 0, "get_head": 0, "method": 0, "deprec": 0, "img": 0, "properti": 0, "Will": 0, "class": 0, "nibabel": 0, "expireddeprecationerror": 0, "4": 0, "hdr": 0, "get": 0, "233": 0, "get_data": 0, "favor": 0, "get_fdata": 0, "predict": 0, "return": 0, "To": 0, "obtain": 0, "behavior": 0, "forward": 0, "asanyarrai": 0, "dataobj": 0, "data_centerlin": 0, "245": 0, "center_of_mass": 0, "scipi": 0, "ndimag": 0, "namespac": 0, "measur": 0, "cx": 0, "iz": 0, "cy": 0, "int16": 0, "t1w_crop": 0, "bound": 0, "box": 0, "73": 0, "118": 0, "y": 0, "69": 0, "112": 0, "z": 0, "Then": 0, "regist": 0, "proton": 0, "densiti": 0, "pd": 0, "so": 0, "end": 0, "up": 0, "mtw": 0, "pdw": 0, "all": 0, "align": 0, "togeth": 0, "condit": 0, "quantit": 0, "mr": 0, "metric": 0, "tip": 0, "rigid": 0, "transform": 0, "becaus": 0, "both": 0, "have": 0, "veri": 0, "similar": 0, "sequenc": 0, "paramet": 0, "don": 0, "t": 0, "want": 0, "syn": 0, "bsplinesyn": 0, "avoid": 0, "introduc": 0, "deform": 0, "sct_register_multimod": 0, "param": 0, "im": 0, "algo": 0, "slicewis": 0, "cc": 0, "spline": 0, "input": 0, "sourc": 0, "45": 0, "43": 0, "init": 0, "transfo": 0, "temp": 0, "check": 0, "ar": 0, "3d": 0, "20241017005100": 0, "639353": 0, "x5wdnejo": 0, "convert": 0, "estim": 0, "FOR": 0, "0mregistr": 0, "mi": 0, "samplstrategi": 0, "none": 0, "samplperc": 0, "smooth": 0, "laplacian": 0, "shrink": 0, "gradstep": 0, "1x1x0": 0, "poli": 0, "filter_s": 0, "dof": 0, "tx_ty_tz_rx_ry_rz": 0, "smoothwarpxi": 0, "rot_method": 0, "pca": 0, "94m": 0, "bin": 0, "isct_antsregistr": 0, "dimension": 0, "dest_rpi": 0, "src": 0, "32": 0, "converg": 0, "factor": 0, "sigma": 0, "0mm": 0, "restrict": 0, "step0": 0, "src_regstep0": 0, "bspline": 0, "appli": 0, "isct_antsapplytransform": 0, "src_reg": 0, "warp_forward_0": 0, "r": 0, "n": 0, "20241017005101": 0, "291005": 0, "03lgs9vi": 0, "matrix": 0, "voxel": 0, "8958333mm": 0, "17mm": 0, "volum": 0, "slice": 0, "16": 0, "dest_z0000": 0, "src_z0000": 0, "warp2d_0000": 0, "src_z0000_reg": 0, "warp2d_nul": 0, "f": 0, "isct_composemultitransform": 0, "warp2d_00000warp": 0, "warp2d_null0warp": 0, "warp2d_00000genericaffin": 0, "mat": 0, "warp2d_00000inversewarp": 0, "warp2d_null0inversewarp": 0, "dest_z0001": 0, "src_z0001": 0, "warp2d_0001": 0, "src_z0001_reg": 0, "warp2d_00010warp": 0, "warp2d_00010genericaffin": 0, "warp2d_00010inversewarp": 0, "dest_z0002": 0, "src_z0002": 0, "warp2d_0002": 0, "src_z0002_reg": 0, "warp2d_00020warp": 0, "warp2d_00020genericaffin": 0, "warp2d_00020inversewarp": 0, "dest_z0003": 0, "src_z0003": 0, "warp2d_0003": 0, "src_z0003_reg": 0, "warp2d_00030warp": 0, "warp2d_00030genericaffin": 0, "warp2d_00030inversewarp": 0, "dest_z0004": 0, "src_z0004": 0, "warp2d_0004": 0, "src_z0004_reg": 0, "warp2d_00040warp": 0, "warp2d_00040genericaffin": 0, "warp2d_00040inversewarp": 0, "dest_z0005": 0, "src_z0005": 0, "warp2d_0005": 0, "src_z0005_reg": 0, "warp2d_00050warp": 0, "warp2d_00050genericaffin": 0, "warp2d_00050inversewarp": 0, "dest_z0006": 0, "src_z0006": 0, "warp2d_0006": 0, "src_z0006_reg": 0, "warp2d_00060warp": 0, "warp2d_00060genericaffin": 0, "warp2d_00060inversewarp": 0, "dest_z0007": 0, "src_z0007": 0, "warp2d_0007": 0, "src_z0007_reg": 0, "warp2d_00070warp": 0, "warp2d_00070genericaffin": 0, "warp2d_00070inversewarp": 0, "dest_z0008": 0, "src_z0008": 0, "warp2d_0008": 0, "src_z0008_reg": 0, "warp2d_00080warp": 0, "warp2d_00080genericaffin": 0, "warp2d_00080inversewarp": 0, "dest_z0009": 0, "src_z0009": 0, "warp2d_0009": 0, "src_z0009_reg": 0, "warp2d_00090warp": 0, "warp2d_00090genericaffin": 0, "warp2d_00090inversewarp": 0, "dest_z0010": 0, "src_z0010": 0, "warp2d_0010": 0, "src_z0010_reg": 0, "warp2d_00100warp": 0, "warp2d_00100genericaffin": 0, "warp2d_00100inversewarp": 0, "11": 0, "dest_z0011": 0, "src_z0011": 0, "warp2d_0011": 0, "src_z0011_reg": 0, "warp2d_00110warp": 0, "warp2d_00110genericaffin": 0, "warp2d_00110inversewarp": 0, "dest_z0012": 0, "src_z0012": 0, "warp2d_0012": 0, "src_z0012_reg": 0, "warp2d_00120warp": 0, "warp2d_00120genericaffin": 0, "warp2d_00120inversewarp": 0, "13": 0, "dest_z0013": 0, "src_z0013": 0, "warp2d_0013": 0, "src_z0013_reg": 0, "warp2d_00130warp": 0, "warp2d_00130genericaffin": 0, "warp2d_00130inversewarp": 0, "dest_z0014": 0, "src_z0014": 0, "warp2d_0014": 0, "src_z0014_reg": 0, "warp2d_00140warp": 0, "warp2d_00140genericaffin": 0, "warp2d_00140inversewarp": 0, "dest_z0015": 0, "src_z0015": 0, "warp2d_0015": 0, "src_z0015_reg": 0, "warp2d_00150warp": 0, "warp2d_00150genericaffin": 0, "warp2d_00150inversewarp": 0, "dest_z0016": 0, "src_z0016": 0, "warp2d_0016": 0, "src_z0016_reg": 0, "warp2d_00160warp": 0, "warp2d_00160genericaffin": 0, "warp2d_00160inversewarp": 0, "merg": 0, "warp": 0, "field": 0, "along": 0, "cp": 0, "step1warp": 0, "step1inversewarp": 0, "rm": 0, "concaten": 0, "warp_src2dest": 0, "dest": 0, "warp_forward_1": 0, "warp_dest2src": 0, "warp_inverse_0": 0, "warp_inverse_1": 0, "dest_reg": 0, "mt0_reg": 0, "94mmv": 0, "warp_mt02t1w_crop": 0, "t1w_crop_reg": 0, "warp_t1w_crop2mt0": 0, "finish": 0, "elaps": 0, "20241017005118": 0, "646955": 0, "e_racygw": 0, "20241017005119": 0, "199548": 0, "zuxf9378": 0, "mt1_reg": 0, "warp_mt12t1w_crop": 0, "33mfile": 0, "alreadi": 0, "delet": 0, "warp_t1w_crop2mt1": 0, "next": 0, "pam50": 0, "templat": 0, "label": 0, "center": 0, "level": 0, "c3": 0, "c4": 0, "intervertebr": 0, "disc": 0, "multi": 0, "non": 0, "mid": 0, "fov": 0, "know": 0, "sct_label_util": 0, "seg": 0, "t1w_ax": 0, "initi": 0, "sct_register_to_templ": 0, "ldisc": 0, "ref": 0, "subject": 0, "slicereg": 0, "meansquar": 0, "0mgener": 0, "817": 0, "304": 0, "argument": 0, "parser": 0, "parse_arg": 0, "argpars": 0, "1768": 0, "parse_known_arg": 0, "1800": 0, "_parse_known_arg": 0, "2006": 0, "start_index": 0, "consume_opt": 0, "1946": 0, "take_act": 0, "action": 0, "option_str": 0, "1874": 0, "argument_valu": 0, "util": 0, "shell": 0, "__call__": 0, "create_fold": 0, "valu": 0, "folder_nam": 0, "onc": 0, "object": 0, "pertain": 0, "space": 0, "These": 0, "notabl": 0, "includ": 0, "white": 0, "matter": 0, "atla": 0, "subsequ": 0, "extract": 0, "qmr": 0, "within": 0, "tract": 0, "sct_warp_templ": 0, "w": 0, "292": 0, "235": 0, "warm": 0, "sct_warp_template_qc": 0, "sct_warp_template_qc_dir": 0, "blue": 0, "co": 0, "between": 0, "complet": 0, "ventur": 0, "our": 0, "favorit": 0, "magnet": 0, "transfer": 0, "ratio": 0, "satur": 0, "sct_compute_mtr": 0, "_reg": 0, "sct_compute_mtsat": 0, "trmt": 0, "57": 0, "trpd": 0, "trt1": 0, "famt": 0, "fapd": 0, "fat1": 0, "found": 0, "replac": 0, "nan": 0, "clip": 0, "0mload": 0, "33mr1": 0, "were": 0, "lower": 0, "than": 0, "thei": 0, "set": 0, "inf": 0, "A": 0, "33mmtsat": 0, "larger": 0, "zero": 0, "now": 0, "function": 0, "sct_extract_metr": 0, "wm": 0, "c2": 0, "vertebr": 0, "l": 0, "51": 0, "vert": 0, "perlevel": 0, "mtr_in_wm": 0, "csv": 0, "mtsat_in_wm": 0, "t1_in_wm": 0, "397": 0, "348": 0, "runtimeerror": 0, "path_label": 0, "doe": 0, "open": 0, "bar": 0, "graph": 0, "pip": 0, "instal": 0, "panda": 0, "default": 0, "user": 0, "site": 0, "packag": 0, "writeabl": 0, "requir": 0, "satisfi": 0, "home": 0, "ubuntu": 0, "26": 0, "dateutil": 0, "pytz": 0, "2020": 0, "dist": 0, "2022": 0, "tzdata": 0, "2023": 0, "six": 0, "33mwarn": 0, "error": 0, "pars": 0, "depend": 0, "distro": 0, "info": 0, "invalid": 0, "1build1": 0, "33m": 0, "debian": 0, "43ubuntu1": 0, "fig": 0, "ax": 0, "subplot": 0, "ncol": 0, "build": 0, "dic": 0, "plot_dic": 0, "ylabel": 0, "u": 0, "loop": 0, "across": 0, "entri": 0, "rang": 0, "len": 0, "df": 0, "read_csv": 0, "vertlevel": 0, "wa": 0, "rot": 0, "legend": 0, "set_ylabel": 0, "yaxi": 0, "grid": 0, "reader": 0, "948": 0, "filepath_or_buff": 0, "sep": 0, "delimit": 0, "index_col": 0, "usecol": 0, "dtype": 0, "engin": 0, "true_valu": 0, "false_valu": 0, "skipinitialspac": 0, "skiprow": 0, "skipfoot": 0, "nrow": 0, "na_valu": 0, "keep_default_na": 0, "na_filt": 0, "skip_blank_lin": 0, "parse_d": 0, "infer_datetime_format": 0, "keep_date_col": 0, "date_pars": 0, "date_format": 0, "dayfirst": 0, "cache_d": 0, "chunksiz": 0, "compress": 0, "thousand": 0, "decim": 0, "linetermin": 0, "quotechar": 0, "quot": 0, "doublequot": 0, "escapechar": 0, "comment": 0, "encod": 0, "encoding_error": 0, "dialect": 0, "on_bad_lin": 0, "delim_whitespac": 0, "low_memori": 0, "memory_map": 0, "float_precis": 0, "storage_opt": 0, "dtype_backend": 0, "935": 0, "kwds_default": 0, "_refine_defaults_read": 0, "936": 0, "937": 0, "944": 0, "945": 0, "946": 0, "kwd": 0, "updat": 0, "_read": 0, "611": 0, "608": 0, "_validate_nam": 0, "610": 0, "textfileread": 0, "613": 0, "614": 0, "1448": 0, "__init__": 0, "1445": 0, "option": 0, "has_index_nam": 0, "1447": 0, "handl": 0, "iohandl": 0, "_engin": 0, "_make_engin": 0, "1705": 0, "1703": 0, "1704": 0, "get_handl": 0, "1706": 0, "1707": 0, "1708": 0, "1709": 0, "1710": 0, "1711": 0, "is_text": 0, "1712": 0, "strict": 0, "1713": 0, "1714": 0, "1715": 0, "assert": 0, "1716": 0, "common": 0, "863": 0, "path_or_buf": 0, "858": 0, "elif": 0, "isinst": 0, "859": 0, "whether": 0, "binari": 0, "860": 0, "support": 0, "newlin": 0, "861": 0, "ioarg": 0, "862": 0, "864": 0, "865": 0, "866": 0, "867": 0, "868": 0, "869": 0, "870": 0, "871": 0, "872": 0, "three": 0, "calcul": 0, "dataset": 0, "longitudin": 0, "relax": 0}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"sct": 0, "toolbox": 0, "exampl": 0, "setup": 0, "neurodesk": 0, "demonstr": 0, "spinal": 0, "cord": 0, "us": 0, "via": 0}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx": 56}}) \ No newline at end of file diff --git a/structural_imaging/sct_toolbox.html b/structural_imaging/sct_toolbox.html new file mode 100644 index 000000000..13314aec2 --- /dev/null +++ b/structural_imaging/sct_toolbox.html @@ -0,0 +1,2095 @@ + + + + + + + + + + + + SCT Toolbox Example — Neurodesk + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + + +
+ +
+
+ +
+
+ +
+ +
+ +
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ + + +
+

SCT Toolbox Example

+ +
+ +
+
+ + + + +
+ +

Open In Colab

+
+

SCT Toolbox Example#

+

Author: Steffen Bollmann

+
+
+

Setup Neurodesk#

+
+
+
%%capture
+import os
+import sys
+IN_COLAB = 'google.colab' in sys.modules
+
+if IN_COLAB:
+  os.environ["LD_PRELOAD"] = "";
+  os.environ["APPTAINER_BINDPATH"] = "/content,/tmp,/cvmfs"
+  os.environ["MPLCONFIGDIR"] = "/content/matplotlib-mpldir"
+  os.environ["LMOD_CMD"] = "/usr/share/lmod/lmod/libexec/lmod"
+
+  !curl -J -O https://raw.githubusercontent.com/NeuroDesk/neurocommand/main/googlecolab_setup.sh
+  !chmod +x googlecolab_setup.sh
+  !./googlecolab_setup.sh
+
+  os.environ["MODULEPATH"] = ':'.join(map(str, list(map(lambda x: os.path.join(os.path.abspath('/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/'), x),os.listdir('/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/')))))
+
+
+
+
+
+
+
# Output CPU information:
+!cat /proc/cpuinfo | grep 'vendor' | uniq
+!cat /proc/cpuinfo | grep 'model name' | uniq
+
+
+
+
+
vendor_id	: AuthenticAMD
+
+
+
model name	: AMD EPYC-Rome Processor
+
+
+
+
+
+
+

Demonstrating the Spinal Cord Toolbox (SCT) use via Neurodesk#

+

In Neurodesk we can use lmod to load specific versions of tools. Here we load the spinalcordtoolbox in a specific version:

+
+
+
import lmod
+await lmod.load('spinalcordtoolbox/5.8')
+await lmod.list()
+
+
+
+
+
['Lmod',
+ 'Warning:',
+ 'The',
+ 'environment',
+ 'MODULEPATH',
+ 'has',
+ 'been',
+ 'changed',
+ 'in',
+ 'unexpected',
+ 'ways.',
+ 'Lmod',
+ 'is',
+ 'unable',
+ 'to',
+ 'use',
+ 'given',
+ 'MODULEPATH.',
+ 'It',
+ 'is',
+ 'using:',
+ '"/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/functional_imaging:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/rodent_imaging:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/image_registration:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/structural_imaging:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/image_segmentation:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/quantitative_imaging:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/workflows:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/hippocampus:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/image_reconstruction:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/data_organisation:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/electrophysiology:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/phase_processing:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/programming:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/machine_learning:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/diffusion_imaging:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/body:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/visualization:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/spectroscopy:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/quality_control:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/statistics:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/shape_analysis:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/spine:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/molecular_biology:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/bids_apps:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/cryo_EM:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/_diffusion_imaging:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/_functional_imaging:/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/_workflows::".',
+ 'Please',
+ 'use',
+ '"module',
+ 'use',
+ 'to',
+ 'change',
+ 'MODULEPATH',
+ 'instead.',
+ 'spinalcordtoolbox/5.8']
+
+
+
+
+

In this interactive notebook we will go through a series of processing steps specific to spinal cord MRI analysis. We first need to import the necessary tools and setup the filenames and folders in the notebook environment.

+

The rest of this notebook is copied from the neurolibre project with minor path modifications and code adjustments to work with the current version of SCT: https://mathieuboudreau.github.io/pipelines-jupyter-book/01/sct_mtsat

+
+
+
%matplotlib inline
+import matplotlib.pyplot as plt
+import matplotlib.image as mpimg
+import numpy as np
+import sys
+import os
+from os.path import join
+from IPython.display import clear_output
+
+base_path = os.getcwd()
+
+
+
+
+
+
+
# Download example data
+!sct_download_data -d sct_example_data -o ./sct_example_data
+
+# Go to MT folder
+os.chdir('./sct_example_data/mt/')
+
+
+
+
+
--
+Spinal Cord Toolbox (5.8)
+
+sct_download_data -d sct_example_data -o ./sct_example_data
+--
+
+Removing existing destination folder 'sct_example_data'
+Trying URL: https://github.com/spinalcordtoolbox/sct_example_data/releases/download/r20180525/20180525_sct_example_data.zip
+
+
+
Downloading: 20180525_sct_example_data.zip
+
+
+
Status:   0%|                                       | 0.00/44.3M [00:00<?, ?B/s]
+
+
+
Status:  21%|██████▎                       | 9.30M/44.3M [00:00<00:00, 92.9MB/s]
+
+
+
Status:  54%|████████████████▊              | 24.0M/44.3M [00:00<00:00, 125MB/s]
+
+
+
Status:  82%|█████████████████████████▌     | 36.5M/44.3M [00:00<00:00, 122MB/s]
+
+
+
Status: 100%|███████████████████████████████| 44.3M/44.3M [00:00<00:00, 121MB/s]
+Creating temporary folder (/tmp/sct-20241017005027.449442-upud6xo2)
+Unzip data to: /tmp/sct-20241017005027.449442-upud6xo2
+
+
+
Copying data to: sct_example_data
+
+
+
Removing temporary folders...
+
+
+
Done!
+
+
+
+
+
+
+
+
# Jupyter Notebook config
+verbose = True # False clears cells
+
+# Folder/filename config
+parent_dirs = os.path.split(base_path)
+mt_folder_relative = os.path.join('sct_example_data/mt')
+qc_path = os.path.join(base_path, 'qc')
+
+t1w = 't1w'
+mt0 = 'mt0'
+mt1 = 'mt1'
+label_c3c4 = 'label_c3c4'
+warp_template2anat = 'warp_template2anat'
+mtr = 'mtr'
+mtsat = 'mtsat'
+t1map = 't1map'
+
+file_ext = '.nii.gz'
+
+if not verbose:
+    clear_output()
+
+
+
+
+

The first processing step consists in segmenting the spinal cord. This is done automatically using an algorithm called Optic that finds the spinal cord centerline, followed by a second algorithm called DeepSeg-SC that relies on deep learning for segmenting the cord.

+
+
+
# Segment spinal cord
+!sct_deepseg_sc -i {t1w+file_ext} -c t1 -qc {qc_path}
+
+if not verbose:
+    clear_output()
+
+
+
+
+
--
+Spinal Cord Toolbox (5.8)
+
+sct_deepseg_sc -i t1w.nii.gz -c t1 -qc /storage/tmp/tmpnhgyrqup/qc
+--
+
+
+
Config deepseg_sc:
+  Centerline algorithm: svm
+  Brain in image: True
+  Kernel dimension: 2d
+  Contrast: t1
+  Threshold: 0.15
+Creating temporary folder (/tmp/sct-20241017005036.109654-rsbjre52)
+Reorient the image to RPI, if necessary...
+
+
+
Finding the spinal cord centerline...
+
+
+
Creating temporary folder (/tmp/sct-20241017005037.723751-07mknx7y)
+
+
+
Remove temporary files...
+rm -rf /tmp/sct-20241017005037.723751-07mknx7y
+
+
+
Cropping the image around the spinal cord...
+
+
+
Normalizing the intensity...
+Segmenting the spinal cord using deep learning on 2D patches...
+
+
+
Reassembling the image...
+Resampling the segmentation to the native image resolution using linear interpolation...
+
+
+
Binarizing the resampled segmentation...
+
+
+
Image header specifies datatype 'float32', but array is of type 'uint8'. Header metadata will be overwritten to use 'uint8'.
+
+
+
Compute shape analysis:   0%|                          | 0/17 [00:00<?, ?iter/s]
+
+
+
Compute shape analysis:   6%|#                 | 1/17 [00:00<00:02,  5.47iter/s]
+
+
+
Compute shape analysis: 100%|#################| 17/17 [00:00<00:00, 68.56iter/s]
+Remove temporary files...
+rm -rf /tmp/sct-20241017005036.109654-rsbjre52
+
+*** Generate Quality Control (QC) html report ***
+
+
+
Resample images to 0.6x0.6 mm
+
+
+
Image header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.
+Traceback (most recent call last):
+  File "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/scripts/sct_deepseg_sc.py", line 214, in <module>
+    main(sys.argv[1:])
+  File "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/scripts/sct_deepseg_sc.py", line 207, in main
+    generate_qc(fname_image, fname_seg=fname_seg, args=argv, path_qc=os.path.abspath(path_qc),
+  File "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/reports/qc.py", line 851, in generate_qc
+    add_entry(
+  File "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/reports/qc.py", line 718, in add_entry
+    layout(qcslice)
+  File "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/reports/qc.py", line 290, in wrapped_f
+    self.qc_report.make_content_path()
+  File "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/reports/qc.py", line 604, in make_content_path
+    raise err
+  File "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/reports/qc.py", line 601, in make_content_path
+    os.makedirs(target_img_folder, exist_ok=True)
+  File "/opt/spinalcordtoolbox-5.8/python/envs/venv_sct/lib/python3.8/os.py", line 213, in makedirs
+    makedirs(head, exist_ok=exist_ok)
+  File "/opt/spinalcordtoolbox-5.8/python/envs/venv_sct/lib/python3.8/os.py", line 213, in makedirs
+    makedirs(head, exist_ok=exist_ok)
+  File "/opt/spinalcordtoolbox-5.8/python/envs/venv_sct/lib/python3.8/os.py", line 213, in makedirs
+    makedirs(head, exist_ok=exist_ok)
+  [Previous line repeated 2 more times]
+  File "/opt/spinalcordtoolbox-5.8/python/envs/venv_sct/lib/python3.8/os.py", line 223, in makedirs
+    mkdir(name, mode)
+OSError: [Errno 30] Read-only file system: '/storage/tmp/tmpnhgyrqup/qc'
+
+
+
+
+

Results of the segmentation appear in Figure 1.

+
+
+
# Plot QC figures
+
+if sys.platform == 'darwin':
+    # For local testing on OSX    
+    sct_deepseg_sc_qc = 'qc/sct_example_data/mt/sct_deepseg_sc'
+else:
+    # For linux and on-line Binder execution
+    sct_deepseg_sc_qc = join(qc_path, parent_dirs[-1], mt_folder_relative, 'sct_deepseg_sc')
+
+folders = list(filter(lambda x: os.path.isdir(os.path.join(sct_deepseg_sc_qc, x)), os.listdir(sct_deepseg_sc_qc)))
+
+qc_date = max(folders)
+
+sct_deepseg_sc_qc_dir = join(sct_deepseg_sc_qc, qc_date)
+
+bkg = mpimg.imread(join(sct_deepseg_sc_qc_dir, 'bkg_img.png'))
+overlay = mpimg.imread(join(sct_deepseg_sc_qc_dir, 'overlay_img.png'))
+plt.figure(figsize = (20,2))
+plt.axis('off')
+imgplot = plt.imshow(bkg)
+imgplot = plt.imshow(overlay,alpha=0.3)
+
+
+
+
+
---------------------------------------------------------------------------
+FileNotFoundError                         Traceback (most recent call last)
+Cell In[8], line 10
+      6 else:
+      7     # For linux and on-line Binder execution
+      8     sct_deepseg_sc_qc = join(qc_path, parent_dirs[-1], mt_folder_relative, 'sct_deepseg_sc')
+---> 10 folders = list(filter(lambda x: os.path.isdir(os.path.join(sct_deepseg_sc_qc, x)), os.listdir(sct_deepseg_sc_qc)))
+     12 qc_date = max(folders)
+     14 sct_deepseg_sc_qc_dir = join(sct_deepseg_sc_qc, qc_date)
+
+FileNotFoundError: [Errno 2] No such file or directory: '/storage/tmp/tmpnhgyrqup/qc/tmpnhgyrqup/sct_example_data/mt/sct_deepseg_sc'
+
+
+
+
+

Figure 1. Quality control (QC) SCT module segmentation results. The segmentation (in red) is overlaid on the T1-weighted anatomical scan (in grayscale). Orientation is axial.

+

Using the generated segmentation, we create a mask around the spinal cord which will be used to crop the image for faster processing and more accurate registration results: the registration algorithm will concentrate on the spinal cord and not on the surrounding tissue (e.g., muscles, neck fat, etc.) which could move independently from the spinal cord and hence produce spurious motion correction results.

+
+
+
# Create mask
+!sct_create_mask -i {t1w+file_ext} -p centerline,{t1w+'_seg'+file_ext} -size 35mm -o {t1w+'_mask'+file_ext}
+
+# Crop data for faster processing
+!sct_crop_image -i {t1w+file_ext} -m {t1w+'_mask'+file_ext} -o {t1w+'_crop'+file_ext}
+
+if not verbose:
+    clear_output()
+
+
+
+
+
--
+Spinal Cord Toolbox (5.8)
+
+sct_create_mask -i t1w.nii.gz -p centerline,t1w_seg.nii.gz -size 35mm -o t1w_mask.nii.gz
+--
+
+  OK: t1w_seg.nii.gz
+Creating temporary folder (/tmp/sct-20241017005050.435433-create_mask-izuszn2u)
+
+Orientation:
+  LPI
+
+
+

+Dimensions:
+(192, 192, 22, 1, 0.8958333, 0.8958333, 5.000001, 1)
+
+Create mask...
+/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/scripts/sct_create_mask.py:230: DeprecationWarning: get_header method is deprecated.
+Please use the ``img.header`` property instead.
+
+* deprecated from version: 2.1
+* Will raise <class 'nibabel.deprecator.ExpiredDeprecationError'> as of version: 4.0
+  hdr = centerline.get_header()  # get header
+/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/scripts/sct_create_mask.py:233: DeprecationWarning: get_data() is deprecated in favor of get_fdata(), which has a more predictable return type. To obtain get_data() behavior going forward, use numpy.asanyarray(img.dataobj).
+
+* deprecated from version: 3.0
+* Will raise <class 'nibabel.deprecator.ExpiredDeprecationError'> as of version: 5.0
+  data_centerline = centerline.get_data()  # get centerline
+/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/scripts/sct_create_mask.py:245: DeprecationWarning: Please use `center_of_mass` from the `scipy.ndimage` namespace, the `scipy.ndimage.measurements` namespace is deprecated.
+  cx[iz], cy[iz] = ndimage.measurements.center_of_mass(np.array(data_centerline[:, :, iz]))
+
+
+
Image header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.
+Image header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.
+Image header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.
+Image header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.
+Image header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.
+Image header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.
+Image header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.
+Image header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.
+Image header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.
+Image header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.
+Image header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.
+Image header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.
+Image header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.
+Image header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.
+Image header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.
+Image header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.
+Image header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.
+Image header specifies datatype 'uint8', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.
+
+
+
Image header specifies datatype 'int16', but array is of type 'int64'. Header metadata will be overwritten to use 'int64'.
+
+
+

+Remove temporary files...
+rm -rf /tmp/sct-20241017005050.435433-create_mask-izuszn2u
+
+
+
--
+Spinal Cord Toolbox (5.8)
+
+sct_crop_image -i t1w.nii.gz -m t1w_mask.nii.gz -o t1w_crop.nii.gz
+--
+
+
+
Bounding box: x=[73, 118], y=[69, 112], z=[4, 21]
+Cropping the image...
+
+
+
+
+

Then, we register the proton density weighted (PD) image to the T1w image, and the MT-weighted image to the T1w image, so we end up with the T1w, MTw and PDw images all aligned together, which is a necessary condition for then computing quantitative MR metrics (here: MTsat).

+
+
+
# Register PD->T1w
+# Tips: here we only use rigid transformation because both images have very similar sequence parameters. We don't want to use SyN/BSplineSyN to avoid introducing spurious deformations.
+!sct_register_multimodal -i {mt0+file_ext} -d {t1w+'_crop'+file_ext} -param step=1,type=im,algo=rigid,slicewise=1,metric=CC -x spline
+
+# Register MT->T1w
+!sct_register_multimodal -i {mt1+file_ext} -d {t1w+'_crop'+file_ext} -param step=1,type=im,algo=rigid,slicewise=1,metric=CC -x spline
+
+if not verbose:
+    clear_output()
+
+
+
+
+
--
+Spinal Cord Toolbox (5.8)
+
+sct_register_multimodal -i mt0.nii.gz -d t1w_crop.nii.gz -param step=1,type=im,algo=rigid,slicewise=1,metric=CC -x spline
+--
+
+
+Input parameters:
+
+
+
  Source .............. mt0.nii.gz (192, 192, 22)
+  Destination ......... t1w_crop.nii.gz (45, 43, 17)
+  Init transfo ........ 
+  Mask ................ 
+  Output name ......... 
+  Remove temp files ... 1
+  Verbose ............. 1
+
+Check if input data are 3D...
+Creating temporary folder (/tmp/sct-20241017005100.639353-register-x5wdnejo)
+
+Copying input data to tmp folder and convert to nii...
+
+
+

+--
+ESTIMATE TRANSFORMATION FOR STEP #0
+Registration parameters:
+  type ........... im
+  algo ........... syn
+  slicewise ...... 0
+  metric ......... MI
+  samplStrategy .. None
+  samplPercent ... 0.2
+  iter ........... 0
+  smooth ......... 0
+  laplacian ...... 0
+  shrink ......... 1
+  gradStep ....... 0.5
+  deformation .... 1x1x0
+  init ........... 
+  poly ........... 5
+  filter_size .... 5
+  dof ............ Tx_Ty_Tz_Rx_Ry_Rz
+  smoothWarpXY ... 2
+  rot_method ..... pca
+
+Estimate transformation
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 3 --transform 'syn[0.5,3,0]' --metric 'MI[dest_RPI.nii,src.nii,1,32]' --convergence 0 --shrink-factors 1 --smoothing-sigmas 0mm --restrict-deformation 1x1x0 --output '[step0,src_regStep0.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005100.639353-register-x5wdnejo
+
+
+

+--
+ESTIMATE TRANSFORMATION FOR STEP #1
+
+Apply transformation from previous step
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i src.nii -o src_reg.nii -t warp_forward_0.nii.gz -r dest_RPI.nii -n 'BSpline[3]' # in /tmp/sct-20241017005100.639353-register-x5wdnejo
+
+
+
Registration parameters:
+  type ........... im
+  algo ........... rigid
+  slicewise ...... 1
+  metric ......... CC
+  samplStrategy .. None
+  samplPercent ... 0.2
+  iter ........... 10
+  smooth ......... 0
+  laplacian ...... 0
+  shrink ......... 1
+  gradStep ....... 0.5
+  deformation .... 1x1x0
+  init ........... 
+  poly ........... 5
+  filter_size .... 5
+  dof ............ Tx_Ty_Tz_Rx_Ry_Rz
+  smoothWarpXY ... 2
+  rot_method ..... pca
+Creating temporary folder (/tmp/sct-20241017005101.291005-register-03lgs9vi)
+
+Copy input data to temp folder...
+
+Get image dimensions of destination image...
+  matrix size: 45 x 43 x 17
+  voxel size: 0.8958333mm x 0.8958333mm x 17mm
+
+Split input volume...
+
+
+
Split destination volume...
+
+
+
Registering slice 0/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0000.nii,src_Z0000.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0000,src_Z0000_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0000.nii,src_Z0000.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00000Warp.nii.gz -R dest_Z0000.nii warp2d_null0Warp.nii.gz warp2d_00000GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00000InverseWarp.nii.gz -R src_Z0000.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00000GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
Registering slice 1/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0001.nii,src_Z0001.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0001,src_Z0001_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0001.nii,src_Z0001.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00010Warp.nii.gz -R dest_Z0001.nii warp2d_null0Warp.nii.gz warp2d_00010GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00010InverseWarp.nii.gz -R src_Z0001.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00010GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
Registering slice 2/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0002.nii,src_Z0002.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0002,src_Z0002_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0002.nii,src_Z0002.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00020Warp.nii.gz -R dest_Z0002.nii warp2d_null0Warp.nii.gz warp2d_00020GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00020InverseWarp.nii.gz -R src_Z0002.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00020GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
Registering slice 3/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0003.nii,src_Z0003.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0003,src_Z0003_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0003.nii,src_Z0003.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00030Warp.nii.gz -R dest_Z0003.nii warp2d_null0Warp.nii.gz warp2d_00030GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00030InverseWarp.nii.gz -R src_Z0003.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00030GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
Registering slice 4/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0004.nii,src_Z0004.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0004,src_Z0004_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0004.nii,src_Z0004.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00040Warp.nii.gz -R dest_Z0004.nii warp2d_null0Warp.nii.gz warp2d_00040GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00040InverseWarp.nii.gz -R src_Z0004.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00040GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
Registering slice 5/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0005.nii,src_Z0005.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0005,src_Z0005_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0005.nii,src_Z0005.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00050Warp.nii.gz -R dest_Z0005.nii warp2d_null0Warp.nii.gz warp2d_00050GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00050InverseWarp.nii.gz -R src_Z0005.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00050GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
Registering slice 6/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0006.nii,src_Z0006.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0006,src_Z0006_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0006.nii,src_Z0006.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00060Warp.nii.gz -R dest_Z0006.nii warp2d_null0Warp.nii.gz warp2d_00060GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00060InverseWarp.nii.gz -R src_Z0006.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00060GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
Registering slice 7/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0007.nii,src_Z0007.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0007,src_Z0007_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0007.nii,src_Z0007.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00070Warp.nii.gz -R dest_Z0007.nii warp2d_null0Warp.nii.gz warp2d_00070GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00070InverseWarp.nii.gz -R src_Z0007.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00070GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
Registering slice 8/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0008.nii,src_Z0008.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0008,src_Z0008_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0008.nii,src_Z0008.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00080Warp.nii.gz -R dest_Z0008.nii warp2d_null0Warp.nii.gz warp2d_00080GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00080InverseWarp.nii.gz -R src_Z0008.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00080GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
Registering slice 9/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0009.nii,src_Z0009.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0009,src_Z0009_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0009.nii,src_Z0009.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00090Warp.nii.gz -R dest_Z0009.nii warp2d_null0Warp.nii.gz warp2d_00090GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00090InverseWarp.nii.gz -R src_Z0009.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00090GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
Registering slice 10/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0010.nii,src_Z0010.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0010,src_Z0010_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0010.nii,src_Z0010.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00100Warp.nii.gz -R dest_Z0010.nii warp2d_null0Warp.nii.gz warp2d_00100GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00100InverseWarp.nii.gz -R src_Z0010.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00100GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
Registering slice 11/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0011.nii,src_Z0011.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0011,src_Z0011_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0011.nii,src_Z0011.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00110Warp.nii.gz -R dest_Z0011.nii warp2d_null0Warp.nii.gz warp2d_00110GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00110InverseWarp.nii.gz -R src_Z0011.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00110GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
Registering slice 12/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0012.nii,src_Z0012.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0012,src_Z0012_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0012.nii,src_Z0012.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00120Warp.nii.gz -R dest_Z0012.nii warp2d_null0Warp.nii.gz warp2d_00120GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00120InverseWarp.nii.gz -R src_Z0012.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00120GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
Registering slice 13/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0013.nii,src_Z0013.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0013,src_Z0013_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0013.nii,src_Z0013.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00130Warp.nii.gz -R dest_Z0013.nii warp2d_null0Warp.nii.gz warp2d_00130GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00130InverseWarp.nii.gz -R src_Z0013.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00130GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
Registering slice 14/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0014.nii,src_Z0014.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0014,src_Z0014_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0014.nii,src_Z0014.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00140Warp.nii.gz -R dest_Z0014.nii warp2d_null0Warp.nii.gz warp2d_00140GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00140InverseWarp.nii.gz -R src_Z0014.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00140GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
Registering slice 15/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0015.nii,src_Z0015.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0015,src_Z0015_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0015.nii,src_Z0015.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00150Warp.nii.gz -R dest_Z0015.nii warp2d_null0Warp.nii.gz warp2d_00150GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00150InverseWarp.nii.gz -R src_Z0015.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00150GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
Registering slice 16/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0016.nii,src_Z0016.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0016,src_Z0016_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0016.nii,src_Z0016.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00160Warp.nii.gz -R dest_Z0016.nii warp2d_null0Warp.nii.gz warp2d_00160GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00160InverseWarp.nii.gz -R src_Z0016.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00160GenericAffine.mat # in /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+
+
Merge warping fields along z...
+
+
+
Move warping fields...
+cp step1Warp.nii.gz /tmp/sct-20241017005100.639353-register-x5wdnejo
+cp step1InverseWarp.nii.gz /tmp/sct-20241017005100.639353-register-x5wdnejo
+rm -rf /tmp/sct-20241017005101.291005-register-03lgs9vi
+
+Concatenate transformations...
+/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 3 warp_src2dest.nii.gz -R dest.nii warp_forward_1.nii.gz warp_forward_0.nii.gz # in /tmp/sct-20241017005100.639353-register-x5wdnejo
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 3 warp_dest2src.nii.gz -R src.nii warp_inverse_0.nii.gz warp_inverse_1.nii.gz # in /tmp/sct-20241017005100.639353-register-x5wdnejo
+
+
+

+Apply transfo source --> dest...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i src.nii -o src_reg.nii -t warp_src2dest.nii.gz -r dest.nii -n 'BSpline[3]' # in /tmp/sct-20241017005100.639353-register-x5wdnejo
+
+
+

+Apply transfo dest --> source...
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i dest.nii -o dest_reg.nii -t warp_dest2src.nii.gz -r src.nii -n 'BSpline[3]' # in /tmp/sct-20241017005100.639353-register-x5wdnejo
+
+
+

+Generate output files...
+File created: mt0_reg.nii.gz
+
+
+
mv /tmp/sct-20241017005100.639353-register-x5wdnejo/warp_src2dest.nii.gz warp_mt02t1w_crop.nii.gz
+File created: warp_mt02t1w_crop.nii.gz
+
+
+
File created: t1w_crop_reg.nii.gz
+mv /tmp/sct-20241017005100.639353-register-x5wdnejo/warp_dest2src.nii.gz warp_t1w_crop2mt0.nii.gz
+File created: warp_t1w_crop2mt0.nii.gz
+
+Remove temporary files...
+rm -rf /tmp/sct-20241017005100.639353-register-x5wdnejo
+
+Finished! Elapsed time: 11s
+
+
+
--
+Spinal Cord Toolbox (5.8)
+
+sct_register_multimodal -i mt1.nii.gz -d t1w_crop.nii.gz -param step=1,type=im,algo=rigid,slicewise=1,metric=CC -x spline
+--
+
+
+Input parameters:
+  Source .............. mt1.nii.gz (192, 192, 22)
+  Destination ......... t1w_crop.nii.gz (45, 43, 17)
+  Init transfo ........ 
+  Mask ................ 
+  Output name ......... 
+  Remove temp files ... 1
+  Verbose ............. 1
+
+Check if input data are 3D...
+
+
+
Creating temporary folder (/tmp/sct-20241017005118.646955-register-e_racygw)
+
+Copying input data to tmp folder and convert to nii...
+
+
+

+--
+ESTIMATE TRANSFORMATION FOR STEP #0
+Registration parameters:
+  type ........... im
+  algo ........... syn
+  slicewise ...... 0
+  metric ......... MI
+  samplStrategy .. None
+  samplPercent ... 0.2
+  iter ........... 0
+  smooth ......... 0
+  laplacian ...... 0
+  shrink ......... 1
+  gradStep ....... 0.5
+  deformation .... 1x1x0
+  init ........... 
+  poly ........... 5
+  filter_size .... 5
+  dof ............ Tx_Ty_Tz_Rx_Ry_Rz
+  smoothWarpXY ... 2
+  rot_method ..... pca
+
+Estimate transformation
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 3 --transform 'syn[0.5,3,0]' --metric 'MI[dest_RPI.nii,src.nii,1,32]' --convergence 0 --shrink-factors 1 --smoothing-sigmas 0mm --restrict-deformation 1x1x0 --output '[step0,src_regStep0.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005118.646955-register-e_racygw
+
+
+

+--
+ESTIMATE TRANSFORMATION FOR STEP #1
+
+Apply transformation from previous step
+/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i src.nii -o src_reg.nii -t warp_forward_0.nii.gz -r dest_RPI.nii -n 'BSpline[3]' # in /tmp/sct-20241017005118.646955-register-e_racygw
+
+
+
Registration parameters:
+  type ........... im
+  algo ........... rigid
+  slicewise ...... 1
+  metric ......... CC
+  samplStrategy .. None
+  samplPercent ... 0.2
+  iter ........... 10
+  smooth ......... 0
+  laplacian ...... 0
+  shrink ......... 1
+  gradStep ....... 0.5
+  deformation .... 1x1x0
+  init ........... 
+  poly ........... 5
+  filter_size .... 5
+  dof ............ Tx_Ty_Tz_Rx_Ry_Rz
+  smoothWarpXY ... 2
+  rot_method ..... pca
+Creating temporary folder (/tmp/sct-20241017005119.199548-register-zuxf9378)
+
+Copy input data to temp folder...
+
+Get image dimensions of destination image...
+
+
+
  matrix size: 45 x 43 x 17
+  voxel size: 0.8958333mm x 0.8958333mm x 17mm
+
+Split input volume...
+
+
+
Split destination volume...
+
+
+
Registering slice 0/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0000.nii,src_Z0000.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0000,src_Z0000_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0000.nii,src_Z0000.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00000Warp.nii.gz -R dest_Z0000.nii warp2d_null0Warp.nii.gz warp2d_00000GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00000InverseWarp.nii.gz -R src_Z0000.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00000GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
Registering slice 1/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0001.nii,src_Z0001.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0001,src_Z0001_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0001.nii,src_Z0001.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00010Warp.nii.gz -R dest_Z0001.nii warp2d_null0Warp.nii.gz warp2d_00010GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00010InverseWarp.nii.gz -R src_Z0001.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00010GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
Registering slice 2/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0002.nii,src_Z0002.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0002,src_Z0002_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0002.nii,src_Z0002.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00020Warp.nii.gz -R dest_Z0002.nii warp2d_null0Warp.nii.gz warp2d_00020GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00020InverseWarp.nii.gz -R src_Z0002.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00020GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
Registering slice 3/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0003.nii,src_Z0003.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0003,src_Z0003_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0003.nii,src_Z0003.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00030Warp.nii.gz -R dest_Z0003.nii warp2d_null0Warp.nii.gz warp2d_00030GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00030InverseWarp.nii.gz -R src_Z0003.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00030GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
Registering slice 4/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0004.nii,src_Z0004.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0004,src_Z0004_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0004.nii,src_Z0004.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00040Warp.nii.gz -R dest_Z0004.nii warp2d_null0Warp.nii.gz warp2d_00040GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00040InverseWarp.nii.gz -R src_Z0004.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00040GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
Registering slice 5/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0005.nii,src_Z0005.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0005,src_Z0005_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0005.nii,src_Z0005.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00050Warp.nii.gz -R dest_Z0005.nii warp2d_null0Warp.nii.gz warp2d_00050GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00050InverseWarp.nii.gz -R src_Z0005.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00050GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
Registering slice 6/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0006.nii,src_Z0006.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0006,src_Z0006_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0006.nii,src_Z0006.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00060Warp.nii.gz -R dest_Z0006.nii warp2d_null0Warp.nii.gz warp2d_00060GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00060InverseWarp.nii.gz -R src_Z0006.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00060GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
Registering slice 7/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0007.nii,src_Z0007.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0007,src_Z0007_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0007.nii,src_Z0007.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00070Warp.nii.gz -R dest_Z0007.nii warp2d_null0Warp.nii.gz warp2d_00070GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00070InverseWarp.nii.gz -R src_Z0007.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00070GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
Registering slice 8/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0008.nii,src_Z0008.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0008,src_Z0008_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0008.nii,src_Z0008.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00080Warp.nii.gz -R dest_Z0008.nii warp2d_null0Warp.nii.gz warp2d_00080GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00080InverseWarp.nii.gz -R src_Z0008.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00080GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
Registering slice 9/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0009.nii,src_Z0009.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0009,src_Z0009_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0009.nii,src_Z0009.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00090Warp.nii.gz -R dest_Z0009.nii warp2d_null0Warp.nii.gz warp2d_00090GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00090InverseWarp.nii.gz -R src_Z0009.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00090GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
Registering slice 10/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0010.nii,src_Z0010.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0010,src_Z0010_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0010.nii,src_Z0010.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00100Warp.nii.gz -R dest_Z0010.nii warp2d_null0Warp.nii.gz warp2d_00100GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00100InverseWarp.nii.gz -R src_Z0010.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00100GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
Registering slice 11/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0011.nii,src_Z0011.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0011,src_Z0011_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0011.nii,src_Z0011.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00110Warp.nii.gz -R dest_Z0011.nii warp2d_null0Warp.nii.gz warp2d_00110GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00110InverseWarp.nii.gz -R src_Z0011.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00110GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
Registering slice 12/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0012.nii,src_Z0012.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0012,src_Z0012_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0012.nii,src_Z0012.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00120Warp.nii.gz -R dest_Z0012.nii warp2d_null0Warp.nii.gz warp2d_00120GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00120InverseWarp.nii.gz -R src_Z0012.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00120GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
Registering slice 13/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0013.nii,src_Z0013.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0013,src_Z0013_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0013.nii,src_Z0013.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00130Warp.nii.gz -R dest_Z0013.nii warp2d_null0Warp.nii.gz warp2d_00130GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00130InverseWarp.nii.gz -R src_Z0013.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00130GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
Registering slice 14/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0014.nii,src_Z0014.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0014,src_Z0014_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0014.nii,src_Z0014.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00140Warp.nii.gz -R dest_Z0014.nii warp2d_null0Warp.nii.gz warp2d_00140GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00140InverseWarp.nii.gz -R src_Z0014.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00140GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
Registering slice 15/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0015.nii,src_Z0015.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0015,src_Z0015_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0015.nii,src_Z0015.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00150Warp.nii.gz -R dest_Z0015.nii warp2d_null0Warp.nii.gz warp2d_00150GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00150InverseWarp.nii.gz -R src_Z0015.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00150GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
Registering slice 16/16...
+/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration --dimensionality 2 --transform 'Rigid[0.5]' --metric 'CC[dest_Z0016.nii,src_Z0016.nii,1,4]' --convergence 10 --shrink-factors 1 --smoothing-sigmas 0mm --output '[warp2d_0016,src_Z0016_reg.nii]' --interpolation 'BSpline[3]' --verbose 1 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsRegistration -d 2 -t 'SyN[1,1,1]' -c 0 -m 'MI[dest_Z0016.nii,src_Z0016.nii,1,32]' -o warp2d_null -f 1 -s 0 # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00160Warp.nii.gz -R dest_Z0016.nii warp2d_null0Warp.nii.gz warp2d_00160GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 2 warp2d_00160InverseWarp.nii.gz -R src_Z0016.nii warp2d_null0InverseWarp.nii.gz -i warp2d_00160GenericAffine.mat # in /tmp/sct-20241017005119.199548-register-zuxf9378
+
+
+
Merge warping fields along z...
+
+
+
Move warping fields...
+cp step1Warp.nii.gz /tmp/sct-20241017005118.646955-register-e_racygw
+cp step1InverseWarp.nii.gz /tmp/sct-20241017005118.646955-register-e_racygw
+rm -rf /tmp/sct-20241017005119.199548-register-zuxf9378
+
+Concatenate transformations...
+/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 3 warp_src2dest.nii.gz -R dest.nii warp_forward_1.nii.gz warp_forward_0.nii.gz # in /tmp/sct-20241017005118.646955-register-e_racygw
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_ComposeMultiTransform 3 warp_dest2src.nii.gz -R src.nii warp_inverse_0.nii.gz warp_inverse_1.nii.gz # in /tmp/sct-20241017005118.646955-register-e_racygw
+
+
+

+Apply transfo source --> dest...
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i src.nii -o src_reg.nii -t warp_src2dest.nii.gz -r dest.nii -n 'BSpline[3]' # in /tmp/sct-20241017005118.646955-register-e_racygw
+
+
+

+Apply transfo dest --> source...
+
+
+
/opt/spinalcordtoolbox-5.8/bin/isct_antsApplyTransforms -d 3 -i dest.nii -o dest_reg.nii -t warp_dest2src.nii.gz -r src.nii -n 'BSpline[3]' # in /tmp/sct-20241017005118.646955-register-e_racygw
+
+
+

+Generate output files...
+
+
+
File created: mt1_reg.nii.gz
+mv /tmp/sct-20241017005118.646955-register-e_racygw/warp_src2dest.nii.gz warp_mt12t1w_crop.nii.gz
+File created: warp_mt12t1w_crop.nii.gz
+File t1w_crop_reg.nii.gz already exists. Deleting it..
+
+
+
File created: t1w_crop_reg.nii.gz
+mv /tmp/sct-20241017005118.646955-register-e_racygw/warp_dest2src.nii.gz warp_t1w_crop2mt1.nii.gz
+File created: warp_t1w_crop2mt1.nii.gz
+
+Remove temporary files...
+rm -rf /tmp/sct-20241017005118.646955-register-e_racygw
+
+Finished! Elapsed time: 11s
+
+
+
+
+

Next step consists in registering the PAM50 template to the T1w image. We first create a label, centered in the spinal cord at level C3-C4 intervertebral disc, then we apply a multi-step non-linear registration algorithm.

+
+
+
# Create label 4 at the mid-FOV, because we know the FOV is centered at C3-C4 disc.
+!sct_label_utils -i {t1w+'_seg'+file_ext} -create-seg-mid 4 -o {label_c3c4+file_ext}
+
+# Register template->T1w_ax (using template-T1w as initial transformation)
+!sct_register_to_template -i {t1w+'_crop'+file_ext} -s {t1w+'_seg'+file_ext} -ldisc {label_c3c4+file_ext} -ref subject -c t1 -param step=1,type=seg,algo=slicereg,metric=MeanSquares,smooth=2:step=2,type=im,algo=bsplinesyn,metric=MeanSquares,iter=5,gradStep=0.5 -qc {qc_path}
+
+if not verbose:
+    clear_output()
+
+
+
+
+
--
+Spinal Cord Toolbox (5.8)
+
+sct_label_utils -i t1w_seg.nii.gz -create-seg-mid 4 -o label_c3c4.nii.gz
+--
+
+Generating output files...
+
+
+
--
+Spinal Cord Toolbox (5.8)
+
+sct_register_to_template -i t1w_crop.nii.gz -s t1w_seg.nii.gz -ldisc label_c3c4.nii.gz -ref subject -c t1 -param step=1,type=seg,algo=slicereg,metric=MeanSquares,smooth=2:step=2,type=im,algo=bsplinesyn,metric=MeanSquares,iter=5,gradStep=0.5 -qc /storage/tmp/tmpnhgyrqup/qc
+--
+
+Traceback (most recent call last):
+  File "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/scripts/sct_register_to_template.py", line 817, in <module>
+    main(sys.argv[1:])
+  File "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/scripts/sct_register_to_template.py", line 304, in main
+    arguments = parser.parse_args(argv)
+  File "/opt/spinalcordtoolbox-5.8/python/envs/venv_sct/lib/python3.8/argparse.py", line 1768, in parse_args
+    args, argv = self.parse_known_args(args, namespace)
+  File "/opt/spinalcordtoolbox-5.8/python/envs/venv_sct/lib/python3.8/argparse.py", line 1800, in parse_known_args
+    namespace, args = self._parse_known_args(args, namespace)
+  File "/opt/spinalcordtoolbox-5.8/python/envs/venv_sct/lib/python3.8/argparse.py", line 2006, in _parse_known_args
+    start_index = consume_optional(start_index)
+  File "/opt/spinalcordtoolbox-5.8/python/envs/venv_sct/lib/python3.8/argparse.py", line 1946, in consume_optional
+    take_action(action, args, option_string)
+  File "/opt/spinalcordtoolbox-5.8/python/envs/venv_sct/lib/python3.8/argparse.py", line 1874, in take_action
+    action(self, namespace, argument_values, option_string)
+  File "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/utils/shell.py", line 230, in __call__
+    folders = self.create_folder(values)
+  File "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/utils/shell.py", line 223, in create_folder
+    os.makedirs(folder_name, exist_ok=True)
+  File "/opt/spinalcordtoolbox-5.8/python/envs/venv_sct/lib/python3.8/os.py", line 223, in makedirs
+    mkdir(name, mode)
+OSError: [Errno 30] Read-only file system: '/storage/tmp/tmpnhgyrqup/qc'
+
+
+
+
+

Once the PAM50 is registered with the T1w image, we can warp all objects pertaining to the PAM50 into the T1w native space. These objects notably include a white matter atlas, which will be subsequently used to extract qMR metrics within specific white matter tracts.

+
+
+
# Warp template
+!sct_warp_template -d {t1w+'_crop'+file_ext} -w {warp_template2anat+file_ext} -qc {qc_path}
+
+if not verbose:
+    clear_output()
+
+
+
+
+
--
+Spinal Cord Toolbox (5.8)
+
+sct_warp_template -d t1w_crop.nii.gz -w warp_template2anat.nii.gz -qc /storage/tmp/tmpnhgyrqup/qc
+--
+
+Traceback (most recent call last):
+  File "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/scripts/sct_warp_template.py", line 292, in <module>
+    main(sys.argv[1:])
+  File "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/scripts/sct_warp_template.py", line 235, in main
+    arguments = parser.parse_args(argv)
+  File "/opt/spinalcordtoolbox-5.8/python/envs/venv_sct/lib/python3.8/argparse.py", line 1768, in parse_args
+    args, argv = self.parse_known_args(args, namespace)
+  File "/opt/spinalcordtoolbox-5.8/python/envs/venv_sct/lib/python3.8/argparse.py", line 1800, in parse_known_args
+    namespace, args = self._parse_known_args(args, namespace)
+  File "/opt/spinalcordtoolbox-5.8/python/envs/venv_sct/lib/python3.8/argparse.py", line 2006, in _parse_known_args
+    start_index = consume_optional(start_index)
+  File "/opt/spinalcordtoolbox-5.8/python/envs/venv_sct/lib/python3.8/argparse.py", line 1946, in consume_optional
+    take_action(action, args, option_string)
+  File "/opt/spinalcordtoolbox-5.8/python/envs/venv_sct/lib/python3.8/argparse.py", line 1874, in take_action
+    action(self, namespace, argument_values, option_string)
+  File "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/utils/shell.py", line 230, in __call__
+    folders = self.create_folder(values)
+  File "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/utils/shell.py", line 223, in create_folder
+    os.makedirs(folder_name, exist_ok=True)
+  File "/opt/spinalcordtoolbox-5.8/python/envs/venv_sct/lib/python3.8/os.py", line 223, in makedirs
+    mkdir(name, mode)
+OSError: [Errno 30] Read-only file system: '/storage/tmp/tmpnhgyrqup/qc'
+
+
+
+
+

Results of the registration/warming appear in Figure 2.

+
+
+
# Plot QC figures
+if sys.platform == 'darwin':
+    # For local testing on OSX    
+    sct_warp_template_qc = 'qc/sct_example_data/mt/sct_warp_template'
+else:
+    # For linux and on-line Binder execution
+    sct_warp_template_qc = join(qc_path, parent_dirs[-1],  mt_folder_relative, 'sct_warp_template')
+
+folders = list(filter(lambda x: os.path.isdir(os.path.join(sct_warp_template_qc, x)), os.listdir(sct_warp_template_qc)))
+qc_date = max(folders)
+
+sct_warp_template_qc_dir = join(sct_warp_template_qc, qc_date)
+
+bkg = mpimg.imread(join(sct_warp_template_qc_dir, 'bkg_img.png'))
+overlay = mpimg.imread(join(sct_warp_template_qc_dir, 'overlay_img.png'))
+plt.figure(figsize = (20,2))
+plt.axis('off')
+imgplot = plt.imshow(bkg)
+imgplot = plt.imshow(overlay,alpha=0.3)
+
+
+
+
+
---------------------------------------------------------------------------
+FileNotFoundError                         Traceback (most recent call last)
+Cell In[13], line 9
+      5 else:
+      6     # For linux and on-line Binder execution
+      7     sct_warp_template_qc = join(qc_path, parent_dirs[-1],  mt_folder_relative, 'sct_warp_template')
+----> 9 folders = list(filter(lambda x: os.path.isdir(os.path.join(sct_warp_template_qc, x)), os.listdir(sct_warp_template_qc)))
+     10 qc_date = max(folders)
+     12 sct_warp_template_qc_dir = join(sct_warp_template_qc, qc_date)
+
+FileNotFoundError: [Errno 2] No such file or directory: '/storage/tmp/tmpnhgyrqup/qc/tmpnhgyrqup/sct_example_data/mt/sct_warp_template'
+
+
+
+
+

Figure 2. Quality control (QC) SCT module registration/warping results of the PAM50 template and atlas to the T1w native space. The white matter (in blue) is overlaid on the T1-weighted anatomical scan (in grayscale). Orientation is axial.Once co-registration between images and registration to the template is complete, we can venture into computing our favorite qMR metrics. Here, we compute the magnetization transfer ratio (MTR) and the magnetization transfer saturation (MTsat).

+

Once co-registration between images and registration to the template is complete, we can venture into computing our favorite qMR metrics. Here, we compute the magnetization transfer ratio (MTR) and the magnetization transfer saturation (MTsat).

+
+
+
# Compute MTR
+!sct_compute_mtr -mt1 {mt1+'_reg'+file_ext} -mt0 {mt0+'_reg'+file_ext}
+
+# Compute MTsat and T1
+!sct_compute_mtsat -mt {mt1+'_reg'+file_ext} -pd {mt0+'_reg'+file_ext} -t1 {t1w+'_crop'+file_ext} -trmt 57 -trpd 57 -trt1 15 -famt 9 -fapd 9 -fat1 15
+
+if not verbose:
+    clear_output()
+
+
+
+
+
--
+Spinal Cord Toolbox (5.8)
+
+sct_compute_mtr -mt1 mt1_reg.nii.gz -mt0 mt0_reg.nii.gz
+--
+
+
+Compute MTR...
+Found 0 voxels with value=0. These will be replaced by nan.
+Threshold to clip values: +/- 100
+
+
+
--
+Spinal Cord Toolbox (5.8)
+
+sct_compute_mtsat -mt mt1_reg.nii.gz -pd mt0_reg.nii.gz -t1 t1w_crop.nii.gz -trmt 57 -trpd 57 -trt1 15 -famt 9 -fapd 9 -fat1 15
+--
+
+Load data...
+
+
+
Compute T1 map...
+R1 values were found to be lower than 0.01. They will be set to inf, producing T1=0 for these voxels.
+Compute A...
+Compute MTsat...
+MTsat values were found to be larger than 1. They will be set to zero for these voxels.
+Generate output files...
+
+
+
+
+

Now that our metrics are computed, we want to extract their values within specific tracts of the spinal cord. This is done with the function sct_extract_metric.

+
+
+
# Extract MTR, MTsat and T1 in WM between C2 and C4 vertebral levels
+!sct_extract_metric -i mtr.nii.gz -l 51 -vert 2:4 -perlevel 1 -o mtr_in_wm.csv
+!sct_extract_metric -i mtsat.nii.gz -l 51 -vert 2:4 -perlevel 1 -o mtsat_in_wm.csv
+!sct_extract_metric -i t1map.nii.gz -l 51 -vert 2:4 -perlevel 1 -o t1_in_wm.csv
+
+if not verbose:
+    clear_output()
+
+
+
+
+
--
+Spinal Cord Toolbox (5.8)
+
+sct_extract_metric -i mtr.nii.gz -l 51 -vert 2:4 -perlevel 1 -o mtr_in_wm.csv
+--
+
+Traceback (most recent call last):
+  File "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/scripts/sct_extract_metric.py", line 397, in <module>
+    main(sys.argv[1:])
+  File "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/scripts/sct_extract_metric.py", line 348, in main
+    raise RuntimeError(path_label + ' does not exist')
+RuntimeError: label/atlas does not exist
+
+
+
--
+Spinal Cord Toolbox (5.8)
+
+sct_extract_metric -i mtsat.nii.gz -l 51 -vert 2:4 -perlevel 1 -o mtsat_in_wm.csv
+--
+
+Traceback (most recent call last):
+  File "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/scripts/sct_extract_metric.py", line 397, in <module>
+    main(sys.argv[1:])
+  File "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/scripts/sct_extract_metric.py", line 348, in main
+    raise RuntimeError(path_label + ' does not exist')
+RuntimeError: label/atlas does not exist
+
+
+
--
+Spinal Cord Toolbox (5.8)
+
+sct_extract_metric -i t1map.nii.gz -l 51 -vert 2:4 -perlevel 1 -o t1_in_wm.csv
+--
+
+Traceback (most recent call last):
+  File "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/scripts/sct_extract_metric.py", line 397, in <module>
+    main(sys.argv[1:])
+  File "/opt/spinalcordtoolbox-5.8/spinalcordtoolbox/scripts/sct_extract_metric.py", line 348, in main
+    raise RuntimeError(path_label + ' does not exist')
+RuntimeError: label/atlas does not exist
+
+
+
+
+

Results are output as csv files, which we can then open and display as bar graphs.

+
+
+
!pip install pandas
+
+
+
+
+
Defaulting to user installation because normal site-packages is not writeable
+
+
+
Requirement already satisfied: pandas in /home/ubuntu/.local/lib/python3.10/site-packages (2.1.4)
+
+
+
Requirement already satisfied: numpy<2,>=1.22.4 in /home/ubuntu/.local/lib/python3.10/site-packages (from pandas) (1.26.2)
+Requirement already satisfied: python-dateutil>=2.8.2 in /home/ubuntu/.local/lib/python3.10/site-packages (from pandas) (2.8.2)
+Requirement already satisfied: pytz>=2020.1 in /usr/lib/python3/dist-packages (from pandas) (2022.1)
+Requirement already satisfied: tzdata>=2022.1 in /home/ubuntu/.local/lib/python3.10/site-packages (from pandas) (2023.3)
+Requirement already satisfied: six>=1.5 in /usr/lib/python3/dist-packages (from python-dateutil>=2.8.2->pandas) (1.16.0)
+
+
+
WARNING: Error parsing dependencies of distro-info: Invalid version: '1.1build1'
+
+
+
+
WARNING: Error parsing dependencies of python-debian: Invalid version: '0.1.43ubuntu1'
+
+
+
+
+
+
+
+
# Display plots of results
+import pandas as pd
+fig, ax = plt.subplots(ncols=3, figsize=(15,4))
+
+# Build dic for plot
+plot_dic = {'file': ['mtr_in_wm.csv', 'mtsat_in_wm.csv', 't1_in_wm.csv'],
+            'ylabel': ['MTR [%]', 'MTsat [a.u.]', 'T1 [s]']}
+
+# Loop across dic entries
+for i in range(len(plot_dic)+1):
+    df = pd.read_csv(plot_dic['file'][i])
+    df.plot.bar(x='VertLevel', y='WA()', rot=0, ax=ax[i], legend=False)
+    ax[i].set_ylabel(plot_dic['ylabel'][i])
+    ax[i].yaxis.grid()
+
+
+
+
+
---------------------------------------------------------------------------
+FileNotFoundError                         Traceback (most recent call last)
+Cell In[17], line 11
+      9 # Loop across dic entries
+     10 for i in range(len(plot_dic)+1):
+---> 11     df = pd.read_csv(plot_dic['file'][i])
+     12     df.plot.bar(x='VertLevel', y='WA()', rot=0, ax=ax[i], legend=False)
+     13     ax[i].set_ylabel(plot_dic['ylabel'][i])
+
+File ~/.local/lib/python3.10/site-packages/pandas/io/parsers/readers.py:948, in read_csv(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, skipfooter, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, date_format, dayfirst, cache_dates, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, doublequote, escapechar, comment, encoding, encoding_errors, dialect, on_bad_lines, delim_whitespace, low_memory, memory_map, float_precision, storage_options, dtype_backend)
+    935 kwds_defaults = _refine_defaults_read(
+    936     dialect,
+    937     delimiter,
+   (...)
+    944     dtype_backend=dtype_backend,
+    945 )
+    946 kwds.update(kwds_defaults)
+--> 948 return _read(filepath_or_buffer, kwds)
+
+File ~/.local/lib/python3.10/site-packages/pandas/io/parsers/readers.py:611, in _read(filepath_or_buffer, kwds)
+    608 _validate_names(kwds.get("names", None))
+    610 # Create the parser.
+--> 611 parser = TextFileReader(filepath_or_buffer, **kwds)
+    613 if chunksize or iterator:
+    614     return parser
+
+File ~/.local/lib/python3.10/site-packages/pandas/io/parsers/readers.py:1448, in TextFileReader.__init__(self, f, engine, **kwds)
+   1445     self.options["has_index_names"] = kwds["has_index_names"]
+   1447 self.handles: IOHandles | None = None
+-> 1448 self._engine = self._make_engine(f, self.engine)
+
+File ~/.local/lib/python3.10/site-packages/pandas/io/parsers/readers.py:1705, in TextFileReader._make_engine(self, f, engine)
+   1703     if "b" not in mode:
+   1704         mode += "b"
+-> 1705 self.handles = get_handle(
+   1706     f,
+   1707     mode,
+   1708     encoding=self.options.get("encoding", None),
+   1709     compression=self.options.get("compression", None),
+   1710     memory_map=self.options.get("memory_map", False),
+   1711     is_text=is_text,
+   1712     errors=self.options.get("encoding_errors", "strict"),
+   1713     storage_options=self.options.get("storage_options", None),
+   1714 )
+   1715 assert self.handles is not None
+   1716 f = self.handles.handle
+
+File ~/.local/lib/python3.10/site-packages/pandas/io/common.py:863, in get_handle(path_or_buf, mode, encoding, compression, memory_map, is_text, errors, storage_options)
+    858 elif isinstance(handle, str):
+    859     # Check whether the filename is to be opened in binary mode.
+    860     # Binary mode does not support 'encoding' and 'newline'.
+    861     if ioargs.encoding and "b" not in ioargs.mode:
+    862         # Encoding
+--> 863         handle = open(
+    864             handle,
+    865             ioargs.mode,
+    866             encoding=ioargs.encoding,
+    867             errors=errors,
+    868             newline="",
+    869         )
+    870     else:
+    871         # Binary mode
+    872         handle = open(handle, ioargs.mode)
+
+FileNotFoundError: [Errno 2] No such file or directory: 'mtr_in_wm.csv'
+
+
+_images/bc215981e109743989603d8d1c8ae9359f60763287ca50d32a1b16995c782e08.png +
+
+

Figure 3. Quantitative MRI metrics in WM between C2 and C4 vertebral levels. The three calculated metrics from this dataset using SCT are the magnetization transfer ratio (MTR – [%]), magnetization transfer saturation (MTsat – [a.u.]), and longitudinal relaxation time (T1 – [s]).

+
+ + + + +
+ + + + + + +
+ +
+
+
+ +
+ + + + + + +
+
+ + +
+ + +
+
+
+ + + + + + + + \ No newline at end of file