Comments (5)
from spinalcordtoolbox.
Developer note: We may want to consider pinning
onnxruntime<1.16.0
for as long as we can justifiably support Catalina? That said, Catalina reached "End-of-Life" on November 20, 2022, meaning that it no longer receives security updates from Apple. So, I would still urge users to upgrade if their hardware supports it (and perhaps for that reason, it would be unwise to pinonnxruntime<1.16.0
).
Note that we can't even run our test suite for macos Catalina, because GitHub Actions removed support for it in 2022, see #3852. So I think we already can't justifiably support it.
from spinalcordtoolbox.
Hi Giorgia,
Thanks for reaching out. Looking at the install log, it looks like you're running macos version 10.15.7 (Catalina), which was released in 2019. Unfortunately, it looks like one of the libraries that SCT 6.2 depends on (called onnxruntime) requires macos version at least 11 (Big Sur, released in 2020).
But, it looks like the previous version, SCT 6.1, should still be compatible with macos version 10.15.7.
So, I think your two best options would be:
- Either upgrade to a more recent version of macos before installing SCT 6.2 (this is probably ideal if you can do it).
- Or stay on macos 10.15.7, and install SCT 6.1 for now.
from spinalcordtoolbox.
For posterity's sake, here are further technical details that explain why SCT v6.2 requires a version of onnxruntime
incompatible with Catalina:
- For our stable releases, we freeze the package versions in order to ensure a reproducible environment that does not change over time. We want to guarantee that if researchers use a specific version of SCT now, it will still produce identical results 5 years from now.
- For v6.2, we freeze the latest version of
onnxruntime
(onnxruntime==1.17.0
). More generally speaking, we tend to use the newest versions of packages so that we can stay up to date with security/performance improvements, and catch any update-related bugs as soon as the new versions are released. onnxruntime==1.17.0
specifiesonnxruntime-1.17.3-cp39-cp39-macosx_11_0_universal2.whl
in its wheel, meaning it is not compatible with macOS 10.x versions. This change first started with1.17.0
; for previous versions, anonnxruntime-1.16.3-cp311-cp311-macosx_10_15_x86_64.whl
wheel was offered as well, which supports macOS 10.15 versions.- However, if we disregard the "freezing" and look at the development version of SCT, then the allowed version range of
onnxruntime
is actually much wider:
spinalcordtoolbox/requirements.txt
Line 27 in 8f2b0e0
- So, technically it is still possible to install an earlier version of onnxruntime alongside SCT v6.2. The question becomes: Will the results be identical if a Catalina-compatible version of
onnxruntime
is installed? My presumption would be yes.onnxruntime
is only used to run frozen.ONNX
deep learning segmentaion models, which have fixed weights/opset versions/etc. Ifonnxruntime
version updates caused the results to change in a meaningful way, I would be quite surprised, since the whole purpose of ONNX is to enable model interoperability!
For the above reasons, I think it may be possible to install SCT v6.2 on Catalina with the following steps:
# replace the version of `onnxruntime` with an earlier compatible version (https://stackoverflow.com/a/4247319)
sed -i'' -e 's/onnxruntime==1.17.0/onnxruntime==1.15.0/g' /Users/giorgiaquerin/sct_6.2/requirements-freeze.txt
# rerun the 6.2 installer
./Users/giorgiaquerin/sct_6.2/install_sct
I would only do this, though, if you cannot upgrade your version of macOS and need specific features from SCT 6.2 and above. Otherwise, I would stick with one of @mguaypaq's proposed solutions.
Developer note: We may want to consider pinning onnxruntime<1.16.0
for as long as we can justifiably support Catalina? That said, Catalina reached "End-of-Life" on November 20, 2022, meaning that it no longer receives security updates from Apple. So, I would still urge users to upgrade if their hardware supports it (and perhaps for that reason, it would be unwise to pin onnxruntime<1.16.0
).
from spinalcordtoolbox.
Wonderful news! Thank you for letting us know.
from spinalcordtoolbox.
Related Issues (20)
- `-c` (`contrast`) field is not useful or 95% of deepseg models (and is unintuitive for contributors) HOT 2
- Refactor `sct_deepseg` to store model orientation in model dict HOT 4
- Debian Rolling Release CI runs are failing due to `libglib2.0-0` dependency installation
- Integration of EPI segmentation nnUNet model in SCT HOT 3
- Outdated Node.js 16 action present in `automate-changelog-PR.yml` HOT 1
- What colormap should be used for soft segmentation QCs? (single color vs. gradient) HOT 15
- Sagittal mosaic QC report is tiny for 1.0mm istropic image with 75 slices HOT 5
- Running SCT commands in 3DSlicer GUI? HOT 3
- Fix issues with `sct_deepseg` rootlets QC report HOT 1
- Should we issue certificates for the SCT course?
- Indicate versions of `sct_deepseg` models HOT 5
- `Keyword=CombinedLabels` incompatible with `combine=1`
- pytest issue `assert not changed` and how to run in IDE HOT 3
- Custom argparse formatter fails for blank lines in multiline strings HOT 2
- Usage of `sct_label_utils -disc <file>` is unclear
- Project discs orthogonally to the spinal cord segmentation or centerline
- Straightening is not a bijective transformation HOT 25
- viewer syntax at the end does not provide correct output file name HOT 1
- Add postprocessing functionality for the new monai/nnunet models
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from spinalcordtoolbox.