T1w human neuroimage processing with antspyx
APACHE-2.0 License
the outputs of these processes can be used for data inspection/cleaning/triage as well for interrogating neuroscientific hypotheses.
this package also keeps track of the latest preferred algorithm variations for production environments.
install by calling (within the source directory):
python setup.py install
or install via pip install antspyt1w
provide example data
brain extraction
denoising
n4 bias correction
brain parcellation into tissues, hemispheres, lobes and regions
hippocampus specific segmentation
t1 hypointensity segmentation and classification exploratory
deformable registration with robust and repeatable parameters
registration-based labeling of major white matter tracts
helpers that organize and annotate segmentation variables into data frames
hypothalamus segmentation FIXME/TODO
the two most time-consuming processes are hippocampus-specific segentation (because it uses augmentation) and registration. both take 10-20 minutes depending on your available computational resources and the data. both could be made computationally cheaper at the cost of accuracy/reliability.
import antspyt1w
antspyt1w.get_data()
NOTE: get_data
has a force_download
option to make sure the latest
package data is installed.
import os
os.environ["TF_NUM_INTEROP_THREADS"] = "8"
os.environ["TF_NUM_INTRAOP_THREADS"] = "8"
os.environ["ITK_GLOBAL_DEFAULT_NUMBER_OF_THREADS"] = "8"
import antspyt1w
import antspynet
import ants
##### get example data + reference templates
# NOTE: PPMI-3803-20120814-MRI_T1-I340756 is a good example of our naming style
# Study-SubjectID-Date-Modality-UniqueID
# where Modality could also be measurement or something else
fn = antspyt1w.get_data('PPMI-3803-20120814-MRI_T1-I340756', target_extension='.nii.gz' )
img = ants.image_read( fn )
# generalized default processing
myresults = antspyt1w.hierarchical( img, output_prefix = '/tmp/XXX' )
##### organize summary data into data frames - user should pivot these to columns
# and attach to unique IDs when accumulating for large-scale studies
# see below for how to easily pivot into wide format
# https://stackoverflow.com/questions/28337117/how-to-pivot-a-dataframe-in-pandas
An example "full study" (at small scale) is illustrated in ~/.antspyt1w/run_dlbs.py
which demonstrates/comments on:
if you get an odd certificate error when calling force_download
, try:
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
before doing this - make sure you have a recent run of pip-compile pyproject.toml
rm -r -f build/ antspyt1w.egg-info/ dist/
python3 -m build .
python3 -m pip install --upgrade twine
python3 -m twine upload --repository antspyt1w dist/*