AFNI (Analysis of Functional NeuroImages) is a suite of programs for looking at and analyzing MRI brain images at all stages of analysis (planning, setting up acquisition, preprocessing, analysis, quality control and statistical analysis). It contains C, Python and R programs, as well as shell scripts, primarily developed for the analysis and display of multiple MRI modalities:
- functional MRI (FMRI)
- resting state, task-based or naturalistic paradigms
- single- or multi-echo acquisitions
- anatomical/structural MRI
- at various field strengths
- diffusion weighted imaging (DWI)
- for DTI or HARDI modeling and tractography
Many AFNI programs have been applied and adapted to other modalities, such as ECoG, EEG, MEG, and more.
It has graphical displays for both slice-wise and surface-based viewing. In both cases, many aspects of visualization can be scripted for automatic image generation.
Installing AFNI on your system
Educational resources
Code, command, script and functionality examples
Additional resources
Currently, the top directory contains three sub-directories, each with further code stratification:
- doc/
- documentation for AFNI (though this is outdated; current doc content resides in its own git tree here: https://github.com/afni/afni_doc)
- src/
- source code for AFNI
- src/python_scripts/
- Python command programs and library files; distributed together as the afnipy module, which can be imported and used as:
from afnipy import ...
- tests/
- tests for AFNI codebase
AFNI benefits from integration and collaboration with several other actively developed neuroimaging software packages. We greatly appreciate the work of (and often the discussions with) their developers, and note some of these projects here. Further useful dependencies are cited within the codebase.
The following software are distributed within AFNI directly:
- dcm2niix,
included as
dcm2niix_afni
- NiiVue,
included as
niivue_afni.umd.js
- NIFTI library
- GIFTI library
AFNI also has several programs and features that complement directly with the following projects:
- FreeSurfer,
via
@SUMA_Make_Spec_FS
andafni_proc.py
- tedana,
via
afni_proc.py
There are also several software projects that include AFNI as a dependency, such as:
Make yourself known to git-land:
git config --global user.name "Fred Mertz" git config --global user.email [email protected] git config --global core.editor vim
Create a copy of the repository on your machine:
git clone https://github.com/afni/afni.git
Forking a branch and making a pull request (PR):
https://afni.nimh.nih.gov/pub/dist/doc/htmldoc/devdocs/pull_requests/pr_ex.html
Getting updates from the master branch of the repository:
git pull origin master
Seeing what changes you have made locally:
git status
To commit some files to your LOCAL repository (preferred):
git commit -m "PLEASE comment" FILE1 FILE2 ...
To commit all tracked files with changes (locally):
git commit -a -m "PLEASE try to put a comment here"
If you have new files to add into the repository; PLEASE PLEASE PLEASE, be careful with wildcards!!! The main thing is to avoid adding very large files (such as binaries) by mistake!:
git add -f FILE1 FILE2 ...
Sending the local updates to the master (github.com) repository:
git push origin master
In src/, you need to choose one of the Makefile.* files that is closest to your system, and cp it to be named Makefile. Makefile is set up to install into the INSTALLDIR location, defined in that file -- you should probably change that to be appropriate for your use.
If you are using Mac OS X, choose one of the Makefile.macosx_* files.
For later versions of Mac OS X, Apple's C compiler does not support OpenMP, so we recommend downloading and installing a version of gcc from http://hpc.sourceforge.net/ or purchasing a commercial C compiler (e.g., Intel's icc) that does support OpenMP. Several important programs in the AFNI suite are parallelized via OpenMP, and will run much faster if compiled appropriately.
If you are using Linux, try Makefile.linux_openmp_64 first.
To make and install everything do:
make vastness
The command:
make cleanest
will remove all the *.o files, etc.