Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implemented method to register lesion mask to MT space #95

Open
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

jcohenadad
Copy link
Member

@jcohenadad jcohenadad commented May 23, 2024

This PR implements the following features:

  • linearly register SC lesion masks in subject PSIR to subject MT space
  • calculate MTR for ROIs excluding SC lesions

Warning

The script is now calling sct_deepseg (to segment the PSIR image), which requires SCT v6.3 or later.

TODO:

Fixes #91

@jcohenadad
Copy link
Member Author

After testing image-based and segmentation-based registration, I think the segmentation-based registration is better suited and probably more robust. Example in CAN-03-RRM-092-M0: qc.zip

Compare:

  • 2024-05-22 22:53:13 --> image based
  • 2024-05-22 22:57:54 --> segmentation based

@jcohenadad
Copy link
Member Author

jcohenadad commented May 23, 2024

Example of registered lesion:

ezgif-1-b2b5a2e47a

It is far from perfect. The main issue is likely that the lesion mask comes from a sagittal image (with 3mm thick slices) to be mapped onto an axial image (with 0.9 mm in-plane resolution). Unfortunately there is nothing we can do about it.

@jcohenadad
Copy link
Member Author

@leelisae I still need to add code to exclude the lesion mask from the calculation of MTR, but could you already give the lesion registration a try? You just need to 'git checkout' that branch:

git checkout jca/91-register-lesion-mask

Also make sure to upgrade to SCT 6.3 as indicated above.

@lisaeylee
Copy link

@jcohenadad Yes, I upgraded to SCT 6.3 then, ran your code for an example subject - lesion registration looks good! Thank you (and also in advance for the code to calculate MTR for ROIs excluding lesions)!

@jcohenadad
Copy link
Member Author

Update: upsampling the PSIR to 0.7mm iso before running the segmentation and registration seems to improve the registration quality. See below (comparing: PSIR_resampled_reg, PSIR_reg, mt_t1):

ezgif-4-c0dd3057ff

@jcohenadad
Copy link
Member Author

Comparing the new registration method (632bdab) vs. the old one :

ezgif-2-4c6f392d95

sliiiiightly better

@jcohenadad
Copy link
Member Author

jcohenadad commented May 31, 2024

Next step: test new contrast-agnostic model

The new code outputs CSV files with suffix '_nolesion'
@jcohenadad
Copy link
Member Author

69e9183 now implements code to estimate MTR excluding lesions. See example below the left and right CST (green) that is subtracted from the registered lesion mask (yellow):

Screenshot 2024-05-31 at 2 59 07 PM

And the resulting output CSV in the whole spinal cord without the lesion mask (first row) with with the lesion mask (2nd row):

Timestamp SCT Version Filename Slice (I->S) VertLevel DistancePMJ Label Size [vox] MAP() STD()
2024-05-31 14:59:23 git-nk/4481-add-monai-postprocessing-aadf57aa587f6cd921f0946514abb2c3a19e9d71 /Users/julien/Desktop/canproco2/data/CAN-03-RRM-092-M0/mt/mtr.nii.gz 8:16 2:4 spinal cord 717.0782670044073 48.01110572968546 5.3898473009545445
2024-05-31 13:41:44 git-nk/4481-add-monai-postprocessing-aadf57aa587f6cd921f0946514abb2c3a19e9d71 /Users/julien/Desktop/canproco2/data/CAN-03-RRM-092-M0/mt/mtr.nii.gz 8:16 2:4 spinal cord 735.8115947564245 47.50436930652403 5.4287692925640725

@lisaeylee can you give it a try?

@jcohenadad
Copy link
Member Author

@lisaeylee If you haven't tried it already, please make sure to update to SCT's latest branch to benefit from the latest contrast-agnostic model that works better for PSIR/STIR data (spinalcordtoolbox/spinalcordtoolbox@bb479d8)

@leelisae
Copy link
Collaborator

leelisae commented Jun 5, 2024

@jcohenadad I had a few other tasks to complete earlier this week for a deadline, but this is on my agenda for today and tomorrow! To clarify, is this feature implemented in the SCT v6.3 that I recently updated to, or is it a separate update? If the latter, where can I find the exact steps to follow?

@jcohenadad
Copy link
Member Author

To clarify, is this feature implemented in the SCT v6.3 that I recently updated to, or is it a separate update? If the latter, where can I find the exact steps to follow?

Separate update. Step to follow (just do steps 1 and 3): https://spinalcordtoolbox.com/user_section/installation/mac.html#option-2-install-from-github-development

@lisaeylee
Copy link

@jcohenadad I just realized that the update you suggested above failed to install. Here is the install_sct_log.txt. Do you know why this might be? Thank you!

install_sct_log.txt

@jcohenadad
Copy link
Member Author

@joshuacwnewton would you mind helping @lisaeylee with this? thanks!

@joshuacwnewton

This comment was marked as resolved.

@lisaeylee

This comment was marked as resolved.

@lisaeylee

This comment was marked as resolved.

@joshuacwnewton

This comment was marked as resolved.

@lisaeylee

This comment was marked as resolved.

@joshuacwnewton

This comment was marked as resolved.

@lisaeylee

This comment was marked as resolved.

@joshuacwnewton

This comment was marked as resolved.

@lisaeylee

This comment was marked as resolved.

@joshuacwnewton

This comment was marked as resolved.

@joshuacwnewton
Copy link
Member

joshuacwnewton commented Jun 17, 2024

It's possible that this is Big Sur-specific? macOS 10.16/11.0 hit "end of life" last year, and so we're not able to test it on GitHub anymore, so an issue may have slipped through (e.g. the lazy loading code).

I'm setting up a virtual machine to test on Big Sur right now, though. :)

@lisaeylee

This comment was marked as resolved.

@joshuacwnewton
Copy link
Member

Aha! I was able to reproduce the issue on my Big Sur virtual machine:

image

This should make it much easier to debug. I'll update when I have a fix. :)

@joshuacwnewton
Copy link
Member

joshuacwnewton commented Jun 18, 2024

I've isolated the issue to onnx (which monai depends on, hence the crash when importing monai):

image

If I reinstall from 6.3, onnx==1.16.0 gets installed, and there is no crash. However, if I install from the master branch, onnx==1.16.1 gets installed, and there is a crash. (This update to the onnx package happened on May 23rd, which is why we're only now seeing this crash.)

I have reported this issue to the onnx developers upstream:

For now, I will make sure we avoid this buggy version in SCT.


To quickly fix your installation, you can run this command to downgrade the version of onnx back to 1.16.0:

cd $SCT_DIR
./python/envs/venv_sct/bin/pip3 install onnx==1.16.0

(I've also minimized the prior debugging we did to keep this PR neat and tidy.)

@lisaeylee
Copy link

lisaeylee commented Jun 19, 2024

@joshuacwnewton - I tried 1) running the command you provided above, 2) remove current spinalcordtoolbox, 3) re-install spinalcordtoolbox. But, I still get the same error message (see below). Did I misunderstand anything? What else can I try? I am very grateful for your generous help and time on this!

Console log
Last login: Mon Jun 17 16:58:16 on ttys005
(base) msresearch@MSs-MacBook-Pro ~ % cd $SCT_DIR
./python/envs/venv_sct/bin/pip3 install onnx==1.16.0
Collecting onnx==1.16.0
  Using cached onnx-1.16.0-cp39-cp39-macosx_10_15_x86_64.whl.metadata (16 kB)
Requirement already satisfied: numpy>=1.20 in ./python/envs/venv_sct/lib/python3.9/site-packages (from onnx==1.16.0) (1.26.4)
Requirement already satisfied: protobuf>=3.20.2 in ./python/envs/venv_sct/lib/python3.9/site-packages (from onnx==1.16.0) (4.25.3)
Using cached onnx-1.16.0-cp39-cp39-macosx_10_15_x86_64.whl (15.0 MB)
Installing collected packages: onnx
  Attempting uninstall: onnx
    Found existing installation: onnx 1.16.1
    Uninstalling onnx-1.16.1:
      Successfully uninstalled onnx-1.16.1
Successfully installed onnx-1.16.0
(base) msresearch@MSs-MacBook-Pro spinalcordtoolbox % ls
CHANGES.md			bin				python
CODE_OF_CONDUCT.md		contrib				requirements.txt
CONTRIBUTING.rst		data				setup.cfg
LICENSE				documentation			setup.py
MANIFEST.in			install_sct			spinalcordtoolbox
README.rst			install_sct.bat			spinalcordtoolbox.egg-info
batch_processing.sh		install_sct_log.txt		testing
(base) msresearch@MSs-MacBook-Pro spinalcordtoolbox % cd ../
(base) msresearch@MSs-MacBook-Pro ~ % ls
Applications		Library			Public			sct_testing_data
Desktop			Movies			canproco		spinalcordtoolbox
Documents		Music			opt			spinalcordtoolbox-6.3
Downloads		Pictures		sct_6.3			test
(base) msresearch@MSs-MacBook-Pro ~ % rm spinalcordtoolbox
rm: spinalcordtoolbox: is a directory
(base) msresearch@MSs-MacBook-Pro ~ % rm -r spinalcordtoolbox
override r--r--r--  msresearch/staff for spinalcordtoolbox/.git/objects/pack/pack-ad75749c08ca27b1462868679981ace0fe909904.idx? y
override r--r--r--  msresearch/staff for spinalcordtoolbox/.git/objects/pack/pack-ad75749c08ca27b1462868679981ace0fe909904.pack? y
(base) msresearch@MSs-MacBook-Pro ~ % ls
Applications		Library			Public			sct_testing_data
Desktop			Movies			canproco		spinalcordtoolbox-6.3
Documents		Music			opt			test
Downloads		Pictures		sct_6.3
(base) msresearch@MSs-MacBook-Pro ~ % git clone https://github.com/spinalcordtoolbox/spinalcordtoolbox

cd spinalcordtoolbox
Cloning into 'spinalcordtoolbox'...
remote: Enumerating objects: 61660, done.
remote: Counting objects: 100% (2879/2879), done.
remote: Compressing objects: 100% (1739/1739), done.
remote: Total 61660 (delta 1948), reused 1845 (delta 1117), pack-reused 58781
Receiving objects: 100% (61660/61660), 119.61 MiB | 13.79 MiB/s, done.
Resolving deltas: 100% (35603/35603), done.
(base) msresearch@MSs-MacBook-Pro spinalcordtoolbox % ./install_sct


*******************************
* Welcome to SCT installation *
*******************************



Checking OS type and version...

Darwin MSs-MacBook-Pro.local 20.6.0 Darwin Kernel Version 20.6.0: Wed Jun 23 00:26:27 PDT 2021; root:xnu-7195.141.2~5/RELEASE_ARM64_T8101 arm64
ProductVersion:	11.5.2

Checking requirements...


OK!


SCT version ......... 6.4.dev0
Installation type ... in-place
Operating system .... osx (11.5.2)
Shell config ........ /Users/msresearch/.zshrc

SCT will be installed here: [/Users/msresearch/spinalcordtoolbox]



Do you agree? [y]es/[n]o: y

Skipping copy of source files (source and destination folders are the same)


Do you want to add the sct_* scripts to your PATH environment? [y]es/[n]o: y

Downloading Miniconda...


curl -sS -o /var/folders/mm/vhlf215s7k338w7srsxw2chm0000gn/T/tmp.u1bGwRsO/miniconda.sh -L https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh


Installing Miniconda...


bash /var/folders/mm/vhlf215s7k338w7srsxw2chm0000gn/T/tmp.u1bGwRsO/miniconda.sh -p /Users/msresearch/spinalcordtoolbox/python -b -f

PREFIX=/Users/msresearch/spinalcordtoolbox/python
Unpacking payload ...

Installing base environment...

Preparing transaction: ...working... done
Executing transaction: ...working... 
done
installation finished.

Creating conda environment...

Retrieving notices: ...working... done
Channels:
 - defaults
Platform: osx-64
Collecting package metadata (repodata.json): ...working... done
Solving environment: ...working... done

## Package Plan ##

  environment location: /Users/msresearch/spinalcordtoolbox/python/envs/venv_sct

  added / updated specs:
    - python=3.9


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    openssl-3.0.14             |       h46256e1_0         4.4 MB
    pip-24.0                   |   py39hecd8cb5_0         2.6 MB
    python-3.9.19              |       h5ee71fb_1        12.7 MB
    setuptools-69.5.1          |   py39hecd8cb5_0        1004 KB
    wheel-0.43.0               |   py39hecd8cb5_0         107 KB
    ------------------------------------------------------------
                                           Total:        20.8 MB

The following NEW packages will be INSTALLED:

  ca-certificates    pkgs/main/osx-64::ca-certificates-2024.3.11-hecd8cb5_0 
  libcxx             pkgs/main/osx-64::libcxx-14.0.6-h9765a3e_0 
  libffi             pkgs/main/osx-64::libffi-3.4.4-hecd8cb5_1 
  ncurses            pkgs/main/osx-64::ncurses-6.4-hcec6c5f_0 
  openssl            pkgs/main/osx-64::openssl-3.0.14-h46256e1_0 
  pip                pkgs/main/osx-64::pip-24.0-py39hecd8cb5_0 
  python             pkgs/main/osx-64::python-3.9.19-h5ee71fb_1 
  readline           pkgs/main/osx-64::readline-8.2-hca72f7f_0 
  setuptools         pkgs/main/osx-64::setuptools-69.5.1-py39hecd8cb5_0 
  sqlite             pkgs/main/osx-64::sqlite-3.45.3-h6c40b1e_0 
  tk                 pkgs/main/osx-64::tk-8.6.14-h4d00af3_0 
  tzdata             pkgs/main/noarch::tzdata-2024a-h04d1e81_0 
  wheel              pkgs/main/osx-64::wheel-0.43.0-py39hecd8cb5_0 
  xz                 pkgs/main/osx-64::xz-5.4.6-h6c40b1e_1 
  zlib               pkgs/main/osx-64::zlib-1.2.13-h4b97444_1 



Downloading and Extracting Packages: ...working... done
Preparing transaction: ...working... done
Verifying transaction: ...working... done
Executing transaction: ...working... done
#
# To activate this environment, use
#
#     $ conda activate /Users/msresearch/spinalcordtoolbox/python/envs/venv_sct
#
# To deactivate an active environment, use
#
#     $ conda deactivate

Requirement already satisfied: pip!=21.2.* in ./python/envs/venv_sct/lib/python3.9/site-packages (24.0)

Installing Python dependencies...


Using requirements.txt (git installation)

Looking in indexes: https://pypi.org/simple, https://download.pytorch.org/whl/cpu
Ignoring msvc-runtime: markers 'sys_platform == "win32"' don't match your environment
Collecting certifi
  Using cached certifi-2024.6.2-py3-none-any.whl.metadata (2.2 kB)
Collecting dipy!=1.6.*,!=1.7.*,<1.9.0 (from -r requirements.txt (line 6))
  Using cached dipy-1.8.0-cp39-cp39-macosx_10_9_x86_64.whl.metadata (8.6 kB)
Collecting ivadomed (from -r requirements.txt (line 10))
  Using cached ivadomed-2.9.10-py3-none-any.whl.metadata (6.4 kB)
Collecting matplotlib (from -r requirements.txt (line 11))
  Using cached matplotlib-3.9.0-cp39-cp39-macosx_10_12_x86_64.whl.metadata (11 kB)
Collecting matplotlib-inline (from -r requirements.txt (line 16))
  Using cached matplotlib_inline-0.1.7-py3-none-any.whl.metadata (3.9 kB)
Collecting nibabel (from -r requirements.txt (line 25))
  Using cached nibabel-5.2.1-py3-none-any.whl.metadata (8.8 kB)
Collecting nilearn (from -r requirements.txt (line 26))
  Using cached nilearn-0.10.4-py3-none-any.whl.metadata (7.8 kB)
Collecting nnunetv2!=2.4.0,!=2.4.1,>=2.3.1 (from -r requirements.txt (line 29))
  Using cached nnunetv2-2.4.2-py3-none-any.whl
Collecting numpy<2 (from -r requirements.txt (line 31))
  Using cached numpy-1.26.4-cp39-cp39-macosx_10_9_x86_64.whl.metadata (61 kB)
Collecting onnxruntime!=1.16.0,>=1.7.0 (from -r requirements.txt (line 35))
  Using cached onnxruntime-1.18.0-cp39-cp39-macosx_11_0_universal2.whl.metadata (4.2 kB)
Collecting pandas (from -r requirements.txt (line 36))
  Using cached pandas-2.2.2-cp39-cp39-macosx_10_9_x86_64.whl.metadata (19 kB)
Collecting portalocker (from -r requirements.txt (line 37))
  Using cached portalocker-2.8.2-py3-none-any.whl.metadata (8.5 kB)
Collecting psutil (from -r requirements.txt (line 38))
  Downloading psutil-6.0.0-cp36-abi3-macosx_10_9_x86_64.whl.metadata (21 kB)
Collecting pyqt5==5.12.3 (from -r requirements.txt (line 43))
  Using cached PyQt5-5.12.3-5.12.10-cp35.cp36.cp37.cp38.cp39-abi3-macosx_10_6_intel.whl.metadata (2.2 kB)
Collecting pyqt5-sip<12.13.0 (from -r requirements.txt (line 45))
  Using cached PyQt5_sip-12.12.2-cp39-cp39-macosx_10_9_universal2.whl.metadata (504 bytes)
Collecting pystrum>=0.3 (from -r requirements.txt (line 48))
  Using cached pystrum-0.4-py3-none-any.whl
Collecting pytest (from -r requirements.txt (line 49))
  Using cached pytest-8.2.2-py3-none-any.whl.metadata (7.6 kB)
Collecting pytest-cov (from -r requirements.txt (line 50))
  Using cached pytest_cov-5.0.0-py3-none-any.whl.metadata (27 kB)
Collecting requests (from -r requirements.txt (line 51))
  Using cached requests-2.32.3-py3-none-any.whl.metadata (4.6 kB)
Collecting requirements-parser (from -r requirements.txt (line 52))
  Using cached requirements_parser-0.9.0-py3-none-any.whl.metadata (3.2 kB)
Collecting scipy (from -r requirements.txt (line 53))
  Using cached scipy-1.13.1-cp39-cp39-macosx_10_9_x86_64.whl.metadata (60 kB)
Collecting scikit-image (from -r requirements.txt (line 54))
  Downloading scikit_image-0.24.0-cp39-cp39-macosx_10_9_x86_64.whl.metadata (14 kB)
Collecting scikit-learn (from -r requirements.txt (line 55))
  Using cached scikit_learn-1.5.0-cp39-cp39-macosx_10_9_x86_64.whl.metadata (11 kB)
Collecting xlwt (from -r requirements.txt (line 56))
  Using cached xlwt-1.3.0-py2.py3-none-any.whl.metadata (3.5 kB)
Collecting tqdm (from -r requirements.txt (line 57))
  Using cached tqdm-4.66.4-py3-none-any.whl.metadata (57 kB)
Collecting transforms3d (from -r requirements.txt (line 58))
  Using cached transforms3d-0.4.2-py3-none-any.whl
Collecting urllib3 (from -r requirements.txt (line 59))
  Using cached urllib3-2.2.2-py3-none-any.whl.metadata (6.4 kB)
Collecting pytest_console_scripts (from -r requirements.txt (line 60))
  Using cached pytest_console_scripts-1.4.1-py3-none-any.whl.metadata (11 kB)
Collecting pyyaml (from -r requirements.txt (line 61))
  Using cached PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl.metadata (2.1 kB)
Collecting voxelmorph (from -r requirements.txt (line 62))
  Using cached voxelmorph-0.2-py3-none-any.whl.metadata (660 bytes)
Collecting wquantiles (from -r requirements.txt (line 63))
  Using cached wquantiles-0.6-py3-none-any.whl.metadata (1.1 kB)
Collecting xlsxwriter (from -r requirements.txt (line 66))
  Using cached XlsxWriter-3.2.0-py3-none-any.whl.metadata (2.6 kB)
Collecting monai[nibabel] (from -r requirements.txt (line 17))
  Using cached monai-1.3.1-py3-none-any.whl.metadata (10 kB)
Collecting cython!=0.29.29,>=0.29.24 (from dipy!=1.6.*,!=1.7.*,<1.9.0->-r requirements.txt (line 6))
  Using cached Cython-3.0.10-cp39-cp39-macosx_10_9_x86_64.whl.metadata (3.2 kB)
Collecting h5py>=3.1.0 (from dipy!=1.6.*,!=1.7.*,<1.9.0->-r requirements.txt (line 6))
  Using cached h5py-3.11.0-cp39-cp39-macosx_10_9_x86_64.whl.metadata (2.5 kB)
Collecting packaging>=21 (from dipy!=1.6.*,!=1.7.*,<1.9.0->-r requirements.txt (line 6))
  Using cached packaging-24.1-py3-none-any.whl.metadata (3.2 kB)
Collecting trx-python>=0.2.9 (from dipy!=1.6.*,!=1.7.*,<1.9.0->-r requirements.txt (line 6))
  Using cached trx_python-0.2.9-py3-none-any.whl.metadata (2.7 kB)
Collecting csv-diff>=1.0 (from ivadomed->-r requirements.txt (line 10))
  Using cached csv_diff-1.1-py3-none-any.whl.metadata (4.1 kB)
Collecting loguru~=0.5 (from ivadomed->-r requirements.txt (line 10))
  Using cached loguru-0.7.2-py3-none-any.whl.metadata (23 kB)
Collecting imageio>=2.31.4 (from ivadomed->-r requirements.txt (line 10))
  Using cached imageio-2.34.1-py3-none-any.whl.metadata (4.9 kB)
Collecting joblib~=1.0 (from ivadomed->-r requirements.txt (line 10))
  Using cached joblib-1.4.2-py3-none-any.whl.metadata (5.4 kB)
Collecting onnx (from ivadomed->-r requirements.txt (line 10))
  Using cached onnx-1.16.1-cp39-cp39-macosx_11_0_universal2.whl.metadata (16 kB)
Collecting pandas (from -r requirements.txt (line 36))
  Using cached pandas-1.5.3-cp39-cp39-macosx_10_9_x86_64.whl.metadata (11 kB)
Collecting pybids<0.15.6,>=0.14.0 (from ivadomed->-r requirements.txt (line 10))
  Using cached pybids-0.15.5-py3-none-any.whl.metadata (3.2 kB)
Collecting seaborn~=0.11 (from ivadomed->-r requirements.txt (line 10))
  Using cached seaborn-0.13.2-py3-none-any.whl.metadata (5.4 kB)
Collecting tensorboard>=1.15.0 (from ivadomed->-r requirements.txt (line 10))
  Using cached tensorboard-2.17.0-py3-none-any.whl.metadata (1.6 kB)
Collecting torchio>=0.18.68 (from ivadomed->-r requirements.txt (line 10))
  Using cached torchio-0.19.7-py2.py3-none-any.whl.metadata (49 kB)
Collecting torch>=1.8.1 (from ivadomed->-r requirements.txt (line 10))
  Using cached https://download.pytorch.org/whl/cpu/torch-2.2.2-cp39-none-macosx_10_9_x86_64.whl (151.0 MB)
Collecting torchvision>=0.9.1 (from ivadomed->-r requirements.txt (line 10))
  Using cached https://download.pytorch.org/whl/cpu/torchvision-0.17.2-cp39-cp39-macosx_10_13_x86_64.whl (1.7 MB)
Collecting wandb>=0.12.11 (from ivadomed->-r requirements.txt (line 10))
  Using cached wandb-0.17.2-py3-none-macosx_10_9_x86_64.whl.metadata (10 kB)
Collecting contourpy>=1.0.1 (from matplotlib->-r requirements.txt (line 11))
  Using cached contourpy-1.2.1-cp39-cp39-macosx_10_9_x86_64.whl.metadata (5.8 kB)
Collecting cycler>=0.10 (from matplotlib->-r requirements.txt (line 11))
  Using cached cycler-0.12.1-py3-none-any.whl.metadata (3.8 kB)
Collecting fonttools>=4.22.0 (from matplotlib->-r requirements.txt (line 11))
  Using cached fonttools-4.53.0-cp39-cp39-macosx_10_9_universal2.whl.metadata (162 kB)
Collecting kiwisolver>=1.3.1 (from matplotlib->-r requirements.txt (line 11))
  Using cached kiwisolver-1.4.5-cp39-cp39-macosx_10_9_x86_64.whl.metadata (6.4 kB)
Collecting pillow>=8 (from matplotlib->-r requirements.txt (line 11))
  Using cached pillow-10.3.0-cp39-cp39-macosx_10_10_x86_64.whl.metadata (9.2 kB)
Collecting pyparsing>=2.3.1 (from matplotlib->-r requirements.txt (line 11))
  Using cached pyparsing-3.1.2-py3-none-any.whl.metadata (5.1 kB)
Collecting python-dateutil>=2.7 (from matplotlib->-r requirements.txt (line 11))
  Using cached python_dateutil-2.9.0.post0-py2.py3-none-any.whl.metadata (8.4 kB)
Collecting importlib-resources>=3.2.0 (from matplotlib->-r requirements.txt (line 11))
  Using cached importlib_resources-6.4.0-py3-none-any.whl.metadata (3.9 kB)
Collecting traitlets (from matplotlib-inline->-r requirements.txt (line 16))
  Using cached traitlets-5.14.3-py3-none-any.whl.metadata (10 kB)
Collecting lxml (from nilearn->-r requirements.txt (line 26))
  Using cached lxml-5.2.2-cp39-cp39-macosx_10_9_x86_64.whl.metadata (3.4 kB)
Collecting acvl-utils<0.3,>=0.2 (from nnunetv2!=2.4.0,!=2.4.1,>=2.3.1->-r requirements.txt (line 29))
  Using cached acvl_utils-0.2-py3-none-any.whl
Collecting dynamic-network-architectures<0.4,>=0.3.1 (from nnunetv2!=2.4.0,!=2.4.1,>=2.3.1->-r requirements.txt (line 29))
  Using cached dynamic_network_architectures-0.3.1-py3-none-any.whl
Collecting dicom2nifti (from nnunetv2!=2.4.0,!=2.4.1,>=2.3.1->-r requirements.txt (line 29))
  Using cached dicom2nifti-2.4.11-py3-none-any.whl.metadata (1.3 kB)
Collecting batchgenerators>=0.25 (from nnunetv2!=2.4.0,!=2.4.1,>=2.3.1->-r requirements.txt (line 29))
  Using cached batchgenerators-0.25-py3-none-any.whl
Collecting SimpleITK>=2.2.1 (from nnunetv2!=2.4.0,!=2.4.1,>=2.3.1->-r requirements.txt (line 29))
  Using cached SimpleITK-2.3.1-cp39-cp39-macosx_10_9_x86_64.whl.metadata (7.9 kB)
Collecting graphviz (from nnunetv2!=2.4.0,!=2.4.1,>=2.3.1->-r requirements.txt (line 29))
  Using cached graphviz-0.20.3-py3-none-any.whl.metadata (12 kB)
Collecting tifffile (from nnunetv2!=2.4.0,!=2.4.1,>=2.3.1->-r requirements.txt (line 29))
  Downloading tifffile-2024.6.18-py3-none-any.whl.metadata (31 kB)
Collecting imagecodecs (from nnunetv2!=2.4.0,!=2.4.1,>=2.3.1->-r requirements.txt (line 29))
  Using cached imagecodecs-2024.6.1-cp39-cp39-macosx_10_14_x86_64.whl.metadata (18 kB)
Collecting yacs (from nnunetv2!=2.4.0,!=2.4.1,>=2.3.1->-r requirements.txt (line 29))
  Using cached yacs-0.1.8-py3-none-any.whl.metadata (639 bytes)
Collecting coloredlogs (from onnxruntime!=1.16.0,>=1.7.0->-r requirements.txt (line 35))
  Using cached coloredlogs-15.0.1-py2.py3-none-any.whl.metadata (12 kB)
Collecting flatbuffers (from onnxruntime!=1.16.0,>=1.7.0->-r requirements.txt (line 35))
  Using cached flatbuffers-24.3.25-py2.py3-none-any.whl.metadata (850 bytes)
Collecting protobuf (from onnxruntime!=1.16.0,>=1.7.0->-r requirements.txt (line 35))
  Using cached protobuf-5.27.1-cp38-abi3-macosx_10_9_universal2.whl.metadata (592 bytes)
Collecting sympy (from onnxruntime!=1.16.0,>=1.7.0->-r requirements.txt (line 35))
  Using cached sympy-1.12.1-py3-none-any.whl.metadata (12 kB)
Collecting pytz>=2020.1 (from pandas->-r requirements.txt (line 36))
  Using cached pytz-2024.1-py2.py3-none-any.whl.metadata (22 kB)
Collecting six (from pystrum>=0.3->-r requirements.txt (line 48))
  Using cached six-1.16.0-py2.py3-none-any.whl.metadata (1.8 kB)
Collecting iniconfig (from pytest->-r requirements.txt (line 49))
  Using cached iniconfig-2.0.0-py3-none-any.whl.metadata (2.6 kB)
Collecting pluggy<2.0,>=1.5 (from pytest->-r requirements.txt (line 49))
  Using cached pluggy-1.5.0-py3-none-any.whl.metadata (4.8 kB)
Collecting exceptiongroup>=1.0.0rc8 (from pytest->-r requirements.txt (line 49))
  Using cached exceptiongroup-1.2.1-py3-none-any.whl.metadata (6.6 kB)
Collecting tomli>=1 (from pytest->-r requirements.txt (line 49))
  Using cached tomli-2.0.1-py3-none-any.whl.metadata (8.9 kB)
Collecting coverage>=5.2.1 (from coverage[toml]>=5.2.1->pytest-cov->-r requirements.txt (line 50))
  Using cached coverage-7.5.3-cp39-cp39-macosx_10_9_x86_64.whl.metadata (8.2 kB)
Collecting charset-normalizer<4,>=2 (from requests->-r requirements.txt (line 51))
  Using cached charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl.metadata (33 kB)
Collecting idna<4,>=2.5 (from requests->-r requirements.txt (line 51))
  Using cached idna-3.7-py3-none-any.whl.metadata (9.9 kB)
Collecting types-setuptools>=69.1.0 (from requirements-parser->-r requirements.txt (line 52))
  Using cached types_setuptools-70.0.0.20240524-py3-none-any.whl.metadata (1.6 kB)
Collecting networkx>=2.8 (from scikit-image->-r requirements.txt (line 54))
  Using cached https://download.pytorch.org/whl/networkx-3.2.1-py3-none-any.whl (1.6 MB)
Collecting lazy-loader>=0.4 (from scikit-image->-r requirements.txt (line 54))
  Using cached lazy_loader-0.4-py3-none-any.whl.metadata (7.6 kB)
Collecting threadpoolctl>=3.1.0 (from scikit-learn->-r requirements.txt (line 55))
  Using cached threadpoolctl-3.5.0-py3-none-any.whl.metadata (13 kB)
Collecting importlib-metadata>=3.6 (from pytest_console_scripts->-r requirements.txt (line 60))
  Using cached importlib_metadata-7.1.0-py3-none-any.whl.metadata (4.7 kB)
Collecting neurite>=0.2 (from voxelmorph->-r requirements.txt (line 62))
  Using cached neurite-0.2-py3-none-any.whl.metadata (653 bytes)
Collecting connected-components-3d (from acvl-utils<0.3,>=0.2->nnunetv2!=2.4.0,!=2.4.1,>=2.3.1->-r requirements.txt (line 29))
  Downloading connected_components_3d-3.16.1-cp39-cp39-macosx_10_9_x86_64.whl.metadata (30 kB)
Collecting future (from batchgenerators>=0.25->nnunetv2!=2.4.0,!=2.4.1,>=2.3.1->-r requirements.txt (line 29))
  Using cached future-1.0.0-py3-none-any.whl.metadata (4.0 kB)
Collecting unittest2 (from batchgenerators>=0.25->nnunetv2!=2.4.0,!=2.4.1,>=2.3.1->-r requirements.txt (line 29))
  Using cached unittest2-1.1.0-py2.py3-none-any.whl.metadata (15 kB)
Collecting click (from csv-diff>=1.0->ivadomed->-r requirements.txt (line 10))
  Using cached click-8.1.7-py3-none-any.whl.metadata (3.0 kB)
Collecting dictdiffer (from csv-diff>=1.0->ivadomed->-r requirements.txt (line 10))
  Using cached dictdiffer-0.9.0-py2.py3-none-any.whl.metadata (4.8 kB)
Collecting zipp>=0.5 (from importlib-metadata>=3.6->pytest_console_scripts->-r requirements.txt (line 60))
  Using cached zipp-3.19.2-py3-none-any.whl.metadata (3.6 kB)
Collecting formulaic<0.4,>=0.2.4 (from pybids<0.15.6,>=0.14.0->ivadomed->-r requirements.txt (line 10))
  Using cached formulaic-0.3.4-py3-none-any.whl.metadata (5.6 kB)
Collecting sqlalchemy<1.4.0.dev0 (from pybids<0.15.6,>=0.14.0->ivadomed->-r requirements.txt (line 10))
  Using cached SQLAlchemy-1.3.24-cp39-cp39-macosx_10_14_x86_64.whl.metadata (7.9 kB)
Collecting bids-validator (from pybids<0.15.6,>=0.14.0->ivadomed->-r requirements.txt (line 10))
  Using cached bids_validator-1.14.6-py3-none-any.whl.metadata (38 kB)
Collecting num2words (from pybids<0.15.6,>=0.14.0->ivadomed->-r requirements.txt (line 10))
  Using cached num2words-0.5.13-py3-none-any.whl.metadata (12 kB)
Collecting absl-py>=0.4 (from tensorboard>=1.15.0->ivadomed->-r requirements.txt (line 10))
  Using cached absl_py-2.1.0-py3-none-any.whl.metadata (2.3 kB)
Collecting grpcio>=1.48.2 (from tensorboard>=1.15.0->ivadomed->-r requirements.txt (line 10))
  Using cached grpcio-1.64.1-cp39-cp39-macosx_10_9_universal2.whl.metadata (3.3 kB)
Collecting markdown>=2.6.8 (from tensorboard>=1.15.0->ivadomed->-r requirements.txt (line 10))
  Using cached Markdown-3.6-py3-none-any.whl.metadata (7.0 kB)
Collecting protobuf (from onnxruntime!=1.16.0,>=1.7.0->-r requirements.txt (line 35))
  Using cached protobuf-4.25.3-cp37-abi3-macosx_10_9_universal2.whl.metadata (541 bytes)
Collecting setuptools>=41.0.0 (from tensorboard>=1.15.0->ivadomed->-r requirements.txt (line 10))
  Downloading setuptools-70.1.0-py3-none-any.whl.metadata (6.0 kB)
Collecting tensorboard-data-server<0.8.0,>=0.7.0 (from tensorboard>=1.15.0->ivadomed->-r requirements.txt (line 10))
  Using cached tensorboard_data_server-0.7.2-py3-none-macosx_10_9_x86_64.whl.metadata (1.1 kB)
Collecting werkzeug>=1.0.1 (from tensorboard>=1.15.0->ivadomed->-r requirements.txt (line 10))
  Using cached werkzeug-3.0.3-py3-none-any.whl.metadata (3.7 kB)
Collecting filelock (from torch>=1.8.1->ivadomed->-r requirements.txt (line 10))
  Using cached filelock-3.15.1-py3-none-any.whl.metadata (2.8 kB)
Collecting typing-extensions>=4.8.0 (from torch>=1.8.1->ivadomed->-r requirements.txt (line 10))
  Using cached typing_extensions-4.12.2-py3-none-any.whl.metadata (3.0 kB)
Collecting jinja2 (from torch>=1.8.1->ivadomed->-r requirements.txt (line 10))
  Using cached jinja2-3.1.4-py3-none-any.whl.metadata (2.6 kB)
Collecting fsspec (from torch>=1.8.1->ivadomed->-r requirements.txt (line 10))
  Using cached fsspec-2024.6.0-py3-none-any.whl.metadata (11 kB)
Collecting Deprecated (from torchio>=0.18.68->ivadomed->-r requirements.txt (line 10))
  Using cached Deprecated-1.2.14-py2.py3-none-any.whl.metadata (5.4 kB)
Collecting humanize (from torchio>=0.18.68->ivadomed->-r requirements.txt (line 10))
  Using cached humanize-4.9.0-py3-none-any.whl.metadata (7.9 kB)
Collecting typer[all] (from torchio>=0.18.68->ivadomed->-r requirements.txt (line 10))
  Using cached typer-0.12.3-py3-none-any.whl.metadata (15 kB)
Collecting setuptools-scm (from trx-python>=0.2.9->dipy!=1.6.*,!=1.7.*,<1.9.0->-r requirements.txt (line 6))
  Using cached setuptools_scm-8.1.0-py3-none-any.whl.metadata (6.6 kB)
Collecting deepdiff (from trx-python>=0.2.9->dipy!=1.6.*,!=1.7.*,<1.9.0->-r requirements.txt (line 6))
  Using cached deepdiff-7.0.1-py3-none-any.whl.metadata (6.8 kB)
Collecting docker-pycreds>=0.4.0 (from wandb>=0.12.11->ivadomed->-r requirements.txt (line 10))
  Using cached docker_pycreds-0.4.0-py2.py3-none-any.whl.metadata (1.8 kB)
Collecting gitpython!=3.1.29,>=1.0.0 (from wandb>=0.12.11->ivadomed->-r requirements.txt (line 10))
  Using cached GitPython-3.1.43-py3-none-any.whl.metadata (13 kB)
Collecting platformdirs (from wandb>=0.12.11->ivadomed->-r requirements.txt (line 10))
  Using cached platformdirs-4.2.2-py3-none-any.whl.metadata (11 kB)
Collecting sentry-sdk>=1.0.0 (from wandb>=0.12.11->ivadomed->-r requirements.txt (line 10))
  Downloading sentry_sdk-2.6.0-py2.py3-none-any.whl.metadata (10 kB)
Collecting setproctitle (from wandb>=0.12.11->ivadomed->-r requirements.txt (line 10))
  Using cached setproctitle-1.3.3-cp39-cp39-macosx_10_9_x86_64.whl.metadata (9.9 kB)
Collecting humanfriendly>=9.1 (from coloredlogs->onnxruntime!=1.16.0,>=1.7.0->-r requirements.txt (line 35))
  Using cached humanfriendly-10.0-py2.py3-none-any.whl.metadata (9.2 kB)
Collecting pydicom>=2.2.0 (from dicom2nifti->nnunetv2!=2.4.0,!=2.4.1,>=2.3.1->-r requirements.txt (line 29))
  Using cached pydicom-2.4.4-py3-none-any.whl.metadata (7.8 kB)
Collecting python-gdcm (from dicom2nifti->nnunetv2!=2.4.0,!=2.4.1,>=2.3.1->-r requirements.txt (line 29))
  Using cached python_gdcm-3.0.24.1-cp39-cp39-macosx_10_9_x86_64.whl.metadata (3.7 kB)
Collecting mpmath<1.4.0,>=1.1.0 (from sympy->onnxruntime!=1.16.0,>=1.7.0->-r requirements.txt (line 35))
  Using cached https://download.pytorch.org/whl/mpmath-1.3.0-py3-none-any.whl (536 kB)
Collecting astor>=0.8 (from formulaic<0.4,>=0.2.4->pybids<0.15.6,>=0.14.0->ivadomed->-r requirements.txt (line 10))
  Using cached astor-0.8.1-py2.py3-none-any.whl.metadata (4.2 kB)
Collecting interface-meta<2.0.0,>=1.2.0 (from formulaic<0.4,>=0.2.4->pybids<0.15.6,>=0.14.0->ivadomed->-r requirements.txt (line 10))
  Using cached interface_meta-1.3.0-py3-none-any.whl.metadata (6.7 kB)
Collecting wrapt>=1.0 (from formulaic<0.4,>=0.2.4->pybids<0.15.6,>=0.14.0->ivadomed->-r requirements.txt (line 10))
  Using cached wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl.metadata (6.6 kB)
Collecting gitdb<5,>=4.0.1 (from gitpython!=3.1.29,>=1.0.0->wandb>=0.12.11->ivadomed->-r requirements.txt (line 10))
  Using cached gitdb-4.0.11-py3-none-any.whl.metadata (1.2 kB)
Collecting MarkupSafe>=2.1.1 (from werkzeug>=1.0.1->tensorboard>=1.15.0->ivadomed->-r requirements.txt (line 10))
  Using cached https://download.pytorch.org/whl/MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl (14 kB)
Collecting ordered-set<4.2.0,>=4.1.0 (from deepdiff->trx-python>=0.2.9->dipy!=1.6.*,!=1.7.*,<1.9.0->-r requirements.txt (line 6))
  Using cached ordered_set-4.1.0-py3-none-any.whl.metadata (5.3 kB)
Collecting docopt>=0.6.2 (from num2words->pybids<0.15.6,>=0.14.0->ivadomed->-r requirements.txt (line 10))
  Using cached docopt-0.6.2-py2.py3-none-any.whl
WARNING: typer 0.12.3 does not provide the extra 'all'
Collecting shellingham>=1.3.0 (from typer[all]->torchio>=0.18.68->ivadomed->-r requirements.txt (line 10))
  Using cached shellingham-1.5.4-py2.py3-none-any.whl.metadata (3.5 kB)
Collecting rich>=10.11.0 (from typer[all]->torchio>=0.18.68->ivadomed->-r requirements.txt (line 10))
  Using cached rich-13.7.1-py3-none-any.whl.metadata (18 kB)
Collecting argparse (from unittest2->batchgenerators>=0.25->nnunetv2!=2.4.0,!=2.4.1,>=2.3.1->-r requirements.txt (line 29))
  Using cached argparse-1.4.0-py2.py3-none-any.whl.metadata (2.8 kB)
Collecting traceback2 (from unittest2->batchgenerators>=0.25->nnunetv2!=2.4.0,!=2.4.1,>=2.3.1->-r requirements.txt (line 29))
  Using cached traceback2-1.4.0-py2.py3-none-any.whl.metadata (1.5 kB)
Collecting smmap<6,>=3.0.1 (from gitdb<5,>=4.0.1->gitpython!=3.1.29,>=1.0.0->wandb>=0.12.11->ivadomed->-r requirements.txt (line 10))
  Using cached smmap-5.0.1-py3-none-any.whl.metadata (4.3 kB)
Collecting markdown-it-py>=2.2.0 (from rich>=10.11.0->typer[all]->torchio>=0.18.68->ivadomed->-r requirements.txt (line 10))
  Using cached markdown_it_py-3.0.0-py3-none-any.whl.metadata (6.9 kB)
Collecting pygments<3.0.0,>=2.13.0 (from rich>=10.11.0->typer[all]->torchio>=0.18.68->ivadomed->-r requirements.txt (line 10))
  Using cached pygments-2.18.0-py3-none-any.whl.metadata (2.5 kB)
Collecting linecache2 (from traceback2->unittest2->batchgenerators>=0.25->nnunetv2!=2.4.0,!=2.4.1,>=2.3.1->-r requirements.txt (line 29))
  Using cached linecache2-1.0.0-py2.py3-none-any.whl.metadata (1000 bytes)
Collecting mdurl~=0.1 (from markdown-it-py>=2.2.0->rich>=10.11.0->typer[all]->torchio>=0.18.68->ivadomed->-r requirements.txt (line 10))
  Using cached mdurl-0.1.2-py3-none-any.whl.metadata (1.6 kB)
Using cached PyQt5-5.12.3-5.12.10-cp35.cp36.cp37.cp38.cp39-abi3-macosx_10_6_intel.whl (39.8 MB)
Using cached certifi-2024.6.2-py3-none-any.whl (164 kB)
Using cached dipy-1.8.0-cp39-cp39-macosx_10_9_x86_64.whl (8.5 MB)
Using cached ivadomed-2.9.10-py3-none-any.whl (240 kB)
Using cached matplotlib-3.9.0-cp39-cp39-macosx_10_12_x86_64.whl (7.9 MB)
Using cached matplotlib_inline-0.1.7-py3-none-any.whl (9.9 kB)
Using cached nibabel-5.2.1-py3-none-any.whl (3.3 MB)
Using cached nilearn-0.10.4-py3-none-any.whl (10.4 MB)
Using cached numpy-1.26.4-cp39-cp39-macosx_10_9_x86_64.whl (20.6 MB)
Using cached onnxruntime-1.18.0-cp39-cp39-macosx_11_0_universal2.whl (15.9 MB)
Using cached pandas-1.5.3-cp39-cp39-macosx_10_9_x86_64.whl (12.0 MB)
Using cached portalocker-2.8.2-py3-none-any.whl (17 kB)
Downloading psutil-6.0.0-cp36-abi3-macosx_10_9_x86_64.whl (250 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 251.0/251.0 kB 5.5 MB/s eta 0:00:00
Using cached PyQt5_sip-12.12.2-cp39-cp39-macosx_10_9_universal2.whl (142 kB)
Using cached pytest-8.2.2-py3-none-any.whl (339 kB)
Using cached pytest_cov-5.0.0-py3-none-any.whl (21 kB)
Using cached requests-2.32.3-py3-none-any.whl (64 kB)
Using cached requirements_parser-0.9.0-py3-none-any.whl (14 kB)
Using cached scipy-1.13.1-cp39-cp39-macosx_10_9_x86_64.whl (39.4 MB)
Downloading scikit_image-0.24.0-cp39-cp39-macosx_10_9_x86_64.whl (14.1 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 14.1/14.1 MB 12.9 MB/s eta 0:00:00
Using cached scikit_learn-1.5.0-cp39-cp39-macosx_10_9_x86_64.whl (12.1 MB)
Using cached xlwt-1.3.0-py2.py3-none-any.whl (99 kB)
Using cached tqdm-4.66.4-py3-none-any.whl (78 kB)
Using cached urllib3-2.2.2-py3-none-any.whl (121 kB)
Using cached pytest_console_scripts-1.4.1-py3-none-any.whl (10 kB)
Using cached PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl (197 kB)
Using cached voxelmorph-0.2-py3-none-any.whl (54 kB)
Using cached wquantiles-0.6-py3-none-any.whl (3.3 kB)
Using cached XlsxWriter-3.2.0-py3-none-any.whl (159 kB)
Using cached charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl (122 kB)
Using cached contourpy-1.2.1-cp39-cp39-macosx_10_9_x86_64.whl (260 kB)
Using cached coverage-7.5.3-cp39-cp39-macosx_10_9_x86_64.whl (204 kB)
Using cached csv_diff-1.1-py3-none-any.whl (12 kB)
Using cached cycler-0.12.1-py3-none-any.whl (8.3 kB)
Using cached Cython-3.0.10-cp39-cp39-macosx_10_9_x86_64.whl (3.1 MB)
Using cached exceptiongroup-1.2.1-py3-none-any.whl (16 kB)
Using cached fonttools-4.53.0-cp39-cp39-macosx_10_9_universal2.whl (2.8 MB)
Using cached h5py-3.11.0-cp39-cp39-macosx_10_9_x86_64.whl (3.5 MB)
Using cached idna-3.7-py3-none-any.whl (66 kB)
Using cached imageio-2.34.1-py3-none-any.whl (313 kB)
Using cached importlib_metadata-7.1.0-py3-none-any.whl (24 kB)
Using cached importlib_resources-6.4.0-py3-none-any.whl (38 kB)
Using cached joblib-1.4.2-py3-none-any.whl (301 kB)
Using cached kiwisolver-1.4.5-cp39-cp39-macosx_10_9_x86_64.whl (68 kB)
Using cached lazy_loader-0.4-py3-none-any.whl (12 kB)
Using cached loguru-0.7.2-py3-none-any.whl (62 kB)
Using cached neurite-0.2-py3-none-any.whl (108 kB)
Using cached packaging-24.1-py3-none-any.whl (53 kB)
Using cached pillow-10.3.0-cp39-cp39-macosx_10_10_x86_64.whl (3.5 MB)
Using cached pluggy-1.5.0-py3-none-any.whl (20 kB)
Using cached pybids-0.15.5-py3-none-any.whl (14.9 MB)
Using cached pyparsing-3.1.2-py3-none-any.whl (103 kB)
Using cached python_dateutil-2.9.0.post0-py2.py3-none-any.whl (229 kB)
Using cached pytz-2024.1-py2.py3-none-any.whl (505 kB)
Using cached seaborn-0.13.2-py3-none-any.whl (294 kB)
Using cached SimpleITK-2.3.1-cp39-cp39-macosx_10_9_x86_64.whl (44.9 MB)
Using cached six-1.16.0-py2.py3-none-any.whl (11 kB)
Using cached tensorboard-2.17.0-py3-none-any.whl (5.5 MB)
Using cached protobuf-4.25.3-cp37-abi3-macosx_10_9_universal2.whl (394 kB)
Using cached threadpoolctl-3.5.0-py3-none-any.whl (18 kB)
Downloading tifffile-2024.6.18-py3-none-any.whl (226 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 226.0/226.0 kB 6.8 MB/s eta 0:00:00
Using cached tomli-2.0.1-py3-none-any.whl (12 kB)
Using cached torchio-0.19.7-py2.py3-none-any.whl (174 kB)
Using cached trx_python-0.2.9-py3-none-any.whl (45 kB)
Using cached types_setuptools-70.0.0.20240524-py3-none-any.whl (62 kB)
Using cached wandb-0.17.2-py3-none-macosx_10_9_x86_64.whl (6.8 MB)
Using cached coloredlogs-15.0.1-py2.py3-none-any.whl (46 kB)
Using cached dicom2nifti-2.4.11-py3-none-any.whl (43 kB)
Using cached flatbuffers-24.3.25-py2.py3-none-any.whl (26 kB)
Using cached graphviz-0.20.3-py3-none-any.whl (47 kB)
Using cached imagecodecs-2024.6.1-cp39-cp39-macosx_10_14_x86_64.whl (15.1 MB)
Using cached iniconfig-2.0.0-py3-none-any.whl (5.9 kB)
Using cached lxml-5.2.2-cp39-cp39-macosx_10_9_x86_64.whl (4.4 MB)
Using cached monai-1.3.1-py3-none-any.whl (1.4 MB)
Using cached onnx-1.16.1-cp39-cp39-macosx_11_0_universal2.whl (16.5 MB)
Using cached sympy-1.12.1-py3-none-any.whl (5.7 MB)
Using cached traitlets-5.14.3-py3-none-any.whl (85 kB)
Using cached yacs-0.1.8-py3-none-any.whl (14 kB)
Using cached absl_py-2.1.0-py3-none-any.whl (133 kB)
Using cached click-8.1.7-py3-none-any.whl (97 kB)
Using cached docker_pycreds-0.4.0-py2.py3-none-any.whl (9.0 kB)
Using cached formulaic-0.3.4-py3-none-any.whl (68 kB)
Using cached GitPython-3.1.43-py3-none-any.whl (207 kB)
Using cached grpcio-1.64.1-cp39-cp39-macosx_10_9_universal2.whl (10.4 MB)
Using cached humanfriendly-10.0-py2.py3-none-any.whl (86 kB)
Using cached Markdown-3.6-py3-none-any.whl (105 kB)
Using cached pydicom-2.4.4-py3-none-any.whl (1.8 MB)
Downloading sentry_sdk-2.6.0-py2.py3-none-any.whl (296 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 296.1/296.1 kB 7.8 MB/s eta 0:00:00
Downloading setuptools-70.1.0-py3-none-any.whl (882 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 882.6/882.6 kB 10.6 MB/s eta 0:00:00
Using cached SQLAlchemy-1.3.24-cp39-cp39-macosx_10_14_x86_64.whl (1.2 MB)
Using cached tensorboard_data_server-0.7.2-py3-none-macosx_10_9_x86_64.whl (4.8 MB)
Using cached typing_extensions-4.12.2-py3-none-any.whl (37 kB)
Using cached werkzeug-3.0.3-py3-none-any.whl (227 kB)
Using cached zipp-3.19.2-py3-none-any.whl (9.0 kB)
Using cached bids_validator-1.14.6-py3-none-any.whl (22 kB)
Downloading connected_components_3d-3.16.1-cp39-cp39-macosx_10_9_x86_64.whl (649 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 649.3/649.3 kB 10.8 MB/s eta 0:00:00
Using cached deepdiff-7.0.1-py3-none-any.whl (80 kB)
Using cached Deprecated-1.2.14-py2.py3-none-any.whl (9.6 kB)
Using cached dictdiffer-0.9.0-py2.py3-none-any.whl (16 kB)
Using cached filelock-3.15.1-py3-none-any.whl (15 kB)
Using cached fsspec-2024.6.0-py3-none-any.whl (176 kB)
Using cached future-1.0.0-py3-none-any.whl (491 kB)
Using cached humanize-4.9.0-py3-none-any.whl (126 kB)
Using cached jinja2-3.1.4-py3-none-any.whl (133 kB)
Using cached num2words-0.5.13-py3-none-any.whl (143 kB)
Using cached platformdirs-4.2.2-py3-none-any.whl (18 kB)
Using cached python_gdcm-3.0.24.1-cp39-cp39-macosx_10_9_x86_64.whl (12.7 MB)
Using cached setproctitle-1.3.3-cp39-cp39-macosx_10_9_x86_64.whl (11 kB)
Using cached setuptools_scm-8.1.0-py3-none-any.whl (43 kB)
Using cached unittest2-1.1.0-py2.py3-none-any.whl (96 kB)
Using cached astor-0.8.1-py2.py3-none-any.whl (27 kB)
Using cached gitdb-4.0.11-py3-none-any.whl (62 kB)
Using cached interface_meta-1.3.0-py3-none-any.whl (14 kB)
Using cached ordered_set-4.1.0-py3-none-any.whl (7.6 kB)
Using cached rich-13.7.1-py3-none-any.whl (240 kB)
Using cached shellingham-1.5.4-py2.py3-none-any.whl (9.8 kB)
Using cached wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl (37 kB)
Using cached argparse-1.4.0-py2.py3-none-any.whl (23 kB)
Using cached traceback2-1.4.0-py2.py3-none-any.whl (16 kB)
Using cached typer-0.12.3-py3-none-any.whl (47 kB)
Using cached markdown_it_py-3.0.0-py3-none-any.whl (87 kB)
Using cached pygments-2.18.0-py3-none-any.whl (1.2 MB)
Using cached smmap-5.0.1-py3-none-any.whl (24 kB)
Using cached linecache2-1.0.0-py2.py3-none-any.whl (12 kB)
Using cached mdurl-0.1.2-py3-none-any.whl (10.0 kB)
Installing collected packages: xlwt, SimpleITK, pytz, mpmath, linecache2, flatbuffers, docopt, dictdiffer, argparse, zipp, xlsxwriter, wrapt, urllib3, typing-extensions, types-setuptools, traitlets, traceback2, tqdm, tomli, threadpoolctl, tensorboard-data-server, sympy, sqlalchemy, smmap, six, shellingham, setuptools, setproctitle, pyyaml, python-gdcm, pyqt5-sip, pyparsing, pygments, pydicom, psutil, protobuf, portalocker, pluggy, platformdirs, pillow, packaging, ordered-set, numpy, num2words, networkx, mdurl, MarkupSafe, lxml, loguru, kiwisolver, joblib, interface-meta, iniconfig, idna, humanize, humanfriendly, grpcio, graphviz, future, fsspec, fonttools, filelock, exceptiongroup, cython, cycler, coverage, click, charset-normalizer, certifi, bids-validator, astor, absl-py, yacs, wquantiles, werkzeug, unittest2, transforms3d, tifffile, setuptools-scm, sentry-sdk, scipy, requirements-parser, requests, python-dateutil, pytest, pyqt5, onnx, nibabel, matplotlib-inline, markdown-it-py, lazy-loader, jinja2, importlib-resources, importlib-metadata, imageio, imagecodecs, h5py, gitdb, docker-pycreds, Deprecated, deepdiff, csv-diff, contourpy, connected-components-3d, coloredlogs, trx-python, torch, scikit-learn, scikit-image, rich, pytest-cov, pytest_console_scripts, pandas, onnxruntime, matplotlib, markdown, gitpython, dicom2nifti, wandb, typer, torchvision, tensorboard, seaborn, pystrum, nilearn, monai, formulaic, dynamic-network-architectures, dipy, batchgenerators, pybids, neurite, acvl-utils, voxelmorph, torchio, nnunetv2, ivadomed
Successfully installed Deprecated-1.2.14 MarkupSafe-2.1.5 SimpleITK-2.3.1 absl-py-2.1.0 acvl-utils-0.2 argparse-1.4.0 astor-0.8.1 batchgenerators-0.25 bids-validator-1.14.6 certifi-2024.6.2 charset-normalizer-3.3.2 click-8.1.7 coloredlogs-15.0.1 connected-components-3d-3.16.1 contourpy-1.2.1 coverage-7.5.3 csv-diff-1.1 cycler-0.12.1 cython-3.0.10 deepdiff-7.0.1 dicom2nifti-2.4.11 dictdiffer-0.9.0 dipy-1.8.0 docker-pycreds-0.4.0 docopt-0.6.2 dynamic-network-architectures-0.3.1 exceptiongroup-1.2.1 filelock-3.15.1 flatbuffers-24.3.25 fonttools-4.53.0 formulaic-0.3.4 fsspec-2024.6.0 future-1.0.0 gitdb-4.0.11 gitpython-3.1.43 graphviz-0.20.3 grpcio-1.64.1 h5py-3.11.0 humanfriendly-10.0 humanize-4.9.0 idna-3.7 imagecodecs-2024.6.1 imageio-2.34.1 importlib-metadata-7.1.0 importlib-resources-6.4.0 iniconfig-2.0.0 interface-meta-1.3.0 ivadomed-2.9.10 jinja2-3.1.4 joblib-1.4.2 kiwisolver-1.4.5 lazy-loader-0.4 linecache2-1.0.0 loguru-0.7.2 lxml-5.2.2 markdown-3.6 markdown-it-py-3.0.0 matplotlib-3.9.0 matplotlib-inline-0.1.7 mdurl-0.1.2 monai-1.3.1 mpmath-1.3.0 networkx-3.2.1 neurite-0.2 nibabel-5.2.1 nilearn-0.10.4 nnunetv2-2.4.2 num2words-0.5.13 numpy-1.26.4 onnx-1.16.1 onnxruntime-1.18.0 ordered-set-4.1.0 packaging-24.1 pandas-1.5.3 pillow-10.3.0 platformdirs-4.2.2 pluggy-1.5.0 portalocker-2.8.2 protobuf-4.25.3 psutil-6.0.0 pybids-0.15.5 pydicom-2.4.4 pygments-2.18.0 pyparsing-3.1.2 pyqt5-5.12.3 pyqt5-sip-12.12.2 pystrum-0.4 pytest-8.2.2 pytest-cov-5.0.0 pytest_console_scripts-1.4.1 python-dateutil-2.9.0.post0 python-gdcm-3.0.24.1 pytz-2024.1 pyyaml-6.0.1 requests-2.32.3 requirements-parser-0.9.0 rich-13.7.1 scikit-image-0.24.0 scikit-learn-1.5.0 scipy-1.13.1 seaborn-0.13.2 sentry-sdk-2.6.0 setproctitle-1.3.3 setuptools-69.5.1 setuptools-scm-8.1.0 shellingham-1.5.4 six-1.16.0 smmap-5.0.1 sqlalchemy-1.3.24 sympy-1.12.1 tensorboard-2.17.0 tensorboard-data-server-0.7.2 threadpoolctl-3.5.0 tifffile-2024.6.18 tomli-2.0.1 torch-2.2.2 torchio-0.19.7 torchvision-0.17.2 tqdm-4.66.4 traceback2-1.4.0 traitlets-5.14.3 transforms3d-0.4.2 trx-python-0.2.9 typer-0.12.3 types-setuptools-70.0.0.20240524 typing-extensions-4.12.2 unittest2-1.1.0 urllib3-2.2.2 voxelmorph-0.2 wandb-0.17.2 werkzeug-3.0.3 wquantiles-0.6 wrapt-1.16.0 xlsxwriter-3.2.0 xlwt-1.3.0 yacs-0.1.8 zipp-3.19.2

Installing spinalcordtoolbox...

Obtaining file:///Users/msresearch/spinalcordtoolbox
  Preparing metadata (setup.py): started
  Preparing metadata (setup.py): finished with status 'done'
Installing collected packages: spinalcordtoolbox
  Running setup.py develop for spinalcordtoolbox
Successfully installed spinalcordtoolbox-6.4.dev0

Creating launchers for Python scripts...


Installing binaries...


sct_download_data -d binaries_osx -k


--
Spinal Cord Toolbox (git-master-a631c4d978cbd1d8a5e14da4b7a30e244eca2f9c)

sct_download_data -d binaries_osx -k
--

Trying URL: https://github.com/spinalcordtoolbox/spinalcordtoolbox-binaries/releases/download/r20221018/spinalcordtoolbox-binaries_osx.tar.gz
Downloading: spinalcordtoolbox-binaries_osx.tar.gz
Status: 100%|██████████| 65.3M/65.3M [00:04<00:00, 14.5MB/s]
Creating temporary folder (/var/folders/mm/vhlf215s7k338w7srsxw2chm0000gn/T/sct_2024-06-19_11-59-04_install-data_iafcabfs)
Unzip data to: /var/folders/mm/vhlf215s7k338w7srsxw2chm0000gn/T/sct_2024-06-19_11-59-04_install-data_iafcabfs
Copying data to: /Users/msresearch/spinalcordtoolbox/bin
Removing temporary folders...
Done!


All requirements installed!


Installing data...


mkdir -p /Users/msresearch/spinalcordtoolbox/data


sct_download_data -d PAM50


--
Spinal Cord Toolbox (git-master-a631c4d978cbd1d8a5e14da4b7a30e244eca2f9c)

sct_download_data -d PAM50
--

Trying URL: https://github.com/spinalcordtoolbox/PAM50/releases/download/r20240215/PAM50-r20240215.zip
Downloading: PAM50-r20240215.zip
Status: 100%|██████████| 104M/104M [00:07<00:00, 14.6MB/s] 
Creating temporary folder (/var/folders/mm/vhlf215s7k338w7srsxw2chm0000gn/T/sct_2024-06-19_11-59-13_install-data_qhg25lfh)
Unzip data to: /var/folders/mm/vhlf215s7k338w7srsxw2chm0000gn/T/sct_2024-06-19_11-59-13_install-data_qhg25lfh
Copying data to: /Users/msresearch/spinalcordtoolbox/data/PAM50
Removing temporary folders...
Done!


sct_download_data -d deepseg_sc_models


--
Spinal Cord Toolbox (git-master-a631c4d978cbd1d8a5e14da4b7a30e244eca2f9c)

sct_download_data -d deepseg_sc_models
--

Trying URL: https://github.com/spinalcordtoolbox/deepseg_sc_models/releases/download/r20180610/20220325_deepseg_sc_models_onnx.zip
Downloading: 20220325_deepseg_sc_models_onnx.zip
Status: 100%|██████████| 19.5M/19.5M [00:01<00:00, 15.2MB/s]
Creating temporary folder (/var/folders/mm/vhlf215s7k338w7srsxw2chm0000gn/T/sct_2024-06-19_11-59-15_install-data_hxlj1mpj)
Unzip data to: /var/folders/mm/vhlf215s7k338w7srsxw2chm0000gn/T/sct_2024-06-19_11-59-15_install-data_hxlj1mpj
Copying data to: /Users/msresearch/spinalcordtoolbox/data/deepseg_sc_models
Removing temporary folders...
Done!


sct_download_data -d deepseg_gm_models


--
Spinal Cord Toolbox (git-master-a631c4d978cbd1d8a5e14da4b7a30e244eca2f9c)

sct_download_data -d deepseg_gm_models
--

Trying URL: https://github.com/spinalcordtoolbox/deepseg_gm_models/releases/download/r20180205/20220325_deepseg_gm_models_onnx.zip
Downloading: 20220325_deepseg_gm_models_onnx.zip
Status: 100%|██████████| 2.24M/2.24M [00:00<00:00, 14.1MB/s]
Creating temporary folder (/var/folders/mm/vhlf215s7k338w7srsxw2chm0000gn/T/sct_2024-06-19_11-59-16_install-data_cat_29ik)
Unzip data to: /var/folders/mm/vhlf215s7k338w7srsxw2chm0000gn/T/sct_2024-06-19_11-59-16_install-data_cat_29ik
Copying data to: /Users/msresearch/spinalcordtoolbox/data/deepseg_gm_models
Removing temporary folders...
Done!


sct_download_data -d deepseg_lesion_models


--
Spinal Cord Toolbox (git-master-a631c4d978cbd1d8a5e14da4b7a30e244eca2f9c)

sct_download_data -d deepseg_lesion_models
--

Trying URL: https://github.com/spinalcordtoolbox/deepseg_lesion_models/releases/download/r20180613/20220325_deepseg_lesion_models_onnx.zip
Downloading: 20220325_deepseg_lesion_models_onnx.zip
Status: 100%|██████████| 5.35M/5.35M [00:00<00:00, 13.3MB/s]
Creating temporary folder (/var/folders/mm/vhlf215s7k338w7srsxw2chm0000gn/T/sct_2024-06-19_11-59-18_install-data_28dkxfl4)
Unzip data to: /var/folders/mm/vhlf215s7k338w7srsxw2chm0000gn/T/sct_2024-06-19_11-59-18_install-data_28dkxfl4
Copying data to: /Users/msresearch/spinalcordtoolbox/data/deepseg_lesion_models
Removing temporary folders...
Done!


sct_download_data -d deepreg_models


--
Spinal Cord Toolbox (git-master-a631c4d978cbd1d8a5e14da4b7a30e244eca2f9c)

sct_download_data -d deepreg_models
--

Trying URL: https://github.com/ivadomed/multimodal-registration/releases/download/r20220512/models.zip
Downloading: models.zip
Status: 100%|██████████| 158M/158M [00:09<00:00, 16.0MB/s] 
Creating temporary folder (/var/folders/mm/vhlf215s7k338w7srsxw2chm0000gn/T/sct_2024-06-19_11-59-28_install-data_1w9wslk9)
Unzip data to: /var/folders/mm/vhlf215s7k338w7srsxw2chm0000gn/T/sct_2024-06-19_11-59-28_install-data_1w9wslk9
Copying data to: /Users/msresearch/spinalcordtoolbox/data/deepreg_models
Removing temporary folders...
Done!


sct_download_data -d PAM50_normalized_metrics


--
Spinal Cord Toolbox (git-master-a631c4d978cbd1d8a5e14da4b7a30e244eca2f9c)

sct_download_data -d PAM50_normalized_metrics
--

Trying URL: https://github.com/spinalcordtoolbox/PAM50-normalized-metrics/archive/refs/tags/r20230222.zip
Downloading: PAM50-normalized-metrics-r20230222.zip
Status: 6.92MB [00:00, 8.05MB/s]                  
Creating temporary folder (/var/folders/mm/vhlf215s7k338w7srsxw2chm0000gn/T/sct_2024-06-19_11-59-31_install-data_0b80ly4s)
Unzip data to: /var/folders/mm/vhlf215s7k338w7srsxw2chm0000gn/T/sct_2024-06-19_11-59-31_install-data_0b80ly4s
Copying data to: /Users/msresearch/spinalcordtoolbox/data/PAM50_normalized_metrics
Removing temporary folders...
Done!

Status: 100%|██████████| 18.0M/18.0M [00:01<00:00, 15.1MB/s]

Validate installation...


--
Spinal Cord Toolbox (git-master-a631c4d978cbd1d8a5e14da4b7a30e244eca2f9c)

sct_check_dependencies 
--


SYSTEM INFORMATION
------------------
SCT info:
- version: git-master-a631c4d978cbd1d8a5e14da4b7a30e244eca2f9c
- path: /Users/msresearch/spinalcordtoolbox
OS: osx (macOS-10.16-x86_64-i386-64bit)
CPU cores: Available: 8, Used by ITK functions: 8
RAM: Total: 8192MB, Used: 644MB, Available: 1014MB

OPTIONAL DEPENDENCIES
---------------------
Check FSLeyes version...............................[OK] (1.0.13)

MANDATORY DEPENDENCIES
----------------------
Check Python executable.............................[OK]
  Using bundled python 3.9.19 (main, May  6 2024, 14:46:57) 
[Clang 14.0.6 ] at /Users/msresearch/spinalcordtoolbox/python/envs/venv_sct/bin/python
Check if data are installed.........................[OK]
Check if dipy is installed........................../Users/msresearch/spinalcordtoolbox/spinalcordtoolbox/scripts/sct_check_dependencies.py:163: UserWarning: Private repos not supported. Skipping.
  for req in requirements.parse(requirements_txt):
[OK] (1.8.0)
Check if ivadomed is installed......................[OK] (2.9.10)
Check if matplotlib is installed....................[OK] (3.9.0)
Check if matplotlib-inline is installed.............[OK]
Check if monai is installed.........................
Installation validation Failed!


Installation failed!

Please find the file "/Users/msresearch/spinalcordtoolbox/install_sct_log.txt",
then upload it as a .txt attachment in a new topic on SCT's forum:
--> https://forum.spinalcordmri.org/c/sct

(base) msresearch@MSs-MacBook-Pro spinalcordtoolbox % 

@joshuacwnewton
Copy link
Member

joshuacwnewton commented Jun 19, 2024

Ah, yes! There has been a misunderstanding. There is no need to re-run install_sct a second time -- once you run the "install onnx 1.16.0" command, you are done. :)

(you can rerun sct_check_dependencies after installing onnx, and it should no longer crash, indicating that the broken installation has been fixed)

@lisaeylee
Copy link

@joshuacwnewton - It works now! I successfully ran the full script and got results very similar, though not exactly the same, as Julien's above. The slight differences in the numbers might be due to the different SCT versions we're using.

I will run the script for the rest of the subjects and do QC. Hopefully, we can submit the revised manuscript soon! Thank you and your team for your very kind help!

image image

@joshuacwnewton
Copy link
Member

Yay! I'm so glad things are working now. Thank you so much for your patience, and for providing lots of useful debugging information to help narrow down the issue. ☺️

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
4 participants