ANTsPy is a Python library which wraps the C++ biomedical image processing library ANTs, matches much of the statistical capabilities of ANTsR, and allows seamless integration with numpy, scikit-learn, and the greater Python community.
ANTsPy includes blazing-fast IO (~40% faster than nibabel for loading Nifti images and converting them to numpy arrays), registration, segmentation, statistical learning, visualization, and other useful utility functions.
ANTsPy also provides a low-barrier opportunity for users to quickly wrap their ITK (or general C++) code in Python without having to build an entire IO/plotting/wrapping code base from scratch - see C++ Wrap Guide for a succinct tutorial.
If you want to contribute to ANTsPy or simply want to learn about the package architecture and wrapping process, please read the extensive contributors guide.
If you have any questions or feature requests, feel free to open an issue or email Nick (ncullen at pennmedicine dot upenn dot edu).
We recommend that users install the latest pre-compiled binaries, which takes ~1 minute. Note that ANTsPy is not currently tested for Python 2.7 support. Copy the following command and paste it into your bash terminal:
For MacOS:
pip install https://github.com/ANTsX/ANTsPy/releases/download/Weekly/antspy-0.1.4-cp36-cp36m-macosx_10_7_x86_64.whl
For Linux:
pip install https://github.com/ANTsX/ANTsPy/releases/download/v0.1.4/antspy-0.1.4-cp36-cp36m-linux_x86_64.whl
If the above doesn't work, or you want more detailed instructions on installing ANTsPy, you can read the installation tutorial.
By default, ANTsPy will search for an existing ITK build by checking if the ITK_DIR
environment variable is set. If that is not
found, it will build it for you. It does NOT require the Python wrappings for
ITK.
By default, ANTsPy will search for an existing VTK build by checking if the VTK_DIR
environment variable is set. If that is not
found, it will build it for you. It does NOT require the Python wrappings for
VTK. If you do not want VTK, then add the --novtk
flag to setup (e.g. python setup.py install --novtk
).
Here is a quick example to show the similarity with ANTsR:
ANTsR code:
library(ANTsR)
img <- antsImageRead(getANTsRData("r16"))
img <- resampleImage(img, c(64,64), 1, 0 )
mask <- getMask(img)
segs1 <- atropos(a=img, m='[0.2,1x1]', c='[2,0]', i='kmeans[3]', x=mask )
ANTsPy code:
import ants
img = ants.image_read(ants.get_data("r16"))
img = ants.resample_image(img, (64,64), 1, 0 )
mask = ants.get_mask(img)
segs1 = ants.atropos(a=img, m='[0.2,1x1]', c='[2,0]', i='kmeans[3]', x=mask )
We provide numerous tutorials for new users: https://github.com/ANTsX/ANTsPy/tree/master/tutorials