AFNI
Introduction, Concepts, Principles
http://afni.nimh.nih.gov/afni

AFNI = Analysis of Functional NeuroImages
 Developed to provide an environment for FMRI data analyses
 And a platform for development of new software
 AFNI refers to both the program of that name and the entire package of programs and plugins (more than 100)
 Important principles in the development of AFNI:
 Allow user to stay close to the data and view it in many different ways
 Give users the power to assemble pieces in different ways to make customized analyses
ÒWith great power comes great responsibilityÓ Ñ to understand
 ÒProvide mechanism, not policyÓ
 Allow other programmers to add features that can interact with the rest of the package

Principles We* Live By
 Fix significant bugs as soon as possible
 But we define ÒsignificantÓ
 Nothing is secret or hidden (AFNI is open source)
 But possibly not very well documented or advertised
 Release early and often
 All users are beta-testers for life
 Help the user (message board; consulting with NIH users)
 Until our patience expires
 Try to anticipate usersÕ future needs
 What we think you will need may not be what you actually end up needing

Fundamental AFNI Concepts
 Basic unit of data in AFNI is the dataset
 A collection of 1 or more 3D arrays of numbers
 Each entry in the array is in a particular spatial location in a 3D grid (a voxel = 3D pixel)
 Image datasets: each array holds a collection of slices from the scanner
 Each number is the signal intensity for that particular voxel
 Derived datasets: each number is computed from other dataset(s)
 e.g., each voxel value is a t-statistic reporting ÒactivationÓ significance from an FMRI time series dataset, for that voxel
 Each 3D array in a dataset is called a sub-brick
 There is one number in each voxel in each sub-brick

Dataset Contents: Numbers
 Different types of numbers can be stored in datasets
 8 bit bytes (e.g., from grayscale photos)
 16 bit short integers (e.g., from MRI scanners)
 Each sub-brick may also have a floating point scale factor a attached, so that ÒtrueÓ value in each voxel is actually (value in dataset file)
 32 bit floats (e.g., calculated values; lets you avoid the a)
 24 bit RGB color triples (e.g., JPEGs from your digital camera!)
 64 bit complex numbers (e.g., for the physicists in the room)
 Different sub-bricks are allowed to have different numeric types
 But this is not recommended
 Will occur if you ÒcatenateÓ two dissimilar datasets together (e.g., using 3dTcat or 3dbucket commands)
Programs will display a warning to the screen if you try this

Dataset Contents: Header
 Besides the voxel numerical values, a dataset also contains auxiliary information, including (some of which is optional):
 xyz dimensions of each voxel (in mm)
 Orientation of dataset axes;
for example, x-axis=R-L, y-axis=A-P, z-axis=I-S
Þ axial slices  (we call this orientation ÒRAIÓ)
 Location of dataset in scanner coordinates
 Needed to overlay one dataset onto another
 Very important to get right in FMRI, since we deal with many datasets
 Time between sub-bricks, for 3D+time datasets
 Such datasets are the basic unit of FMRI data (one per imaging run)
 Statistical parameters associated with each sub-brick
 e.g., a t-statistic sub-brick has degrees-of-freedom parameter stored
 e.g., an F-statistic sub-brick has 2 DOF parameters stored

AFNI Dataset Files - I
 AFNI formatted datasets are stored in 2 files
 The .HEAD file holds all the auxiliary information
 The .BRIK file holds all the numbers in all the sub-bricks
 Datasets can be in one of 3 coordinate systems (AKA views)
 Original data or +orig view: from the scanner
 AC-PC aligned or +acpc view:
 Dataset rotated/shifted so that the anterior commissure and posterior commissure are horizontal (y-axis), the AC is at (x,y,z)=(0,0,0), and the hemispheric fissure is vertical (z-axis)
 Talairach or +tlrc view:
 Dataset has also been rescaled to conform to the Talairach-Tournoux atlas dimensions (R-L=136 mm; A-P=172 mm; I-S=116 mm)
 AKA Talairach or Stererotaxic coordinates
 Not quite the same as MNI coordinates, but very close

AFNI Dataset Files - II
 AFNI dataset filenames consist of 3 parts
 The user-selected prefix (almost anything)
 The view (one of +orig, +acpc, or +tlrc)
 The suffix (one of .HEAD or .BRIK)
 Example: BillGates+tlrc.HEAD and BillGates+tlrc.BRIK
 When creating a dataset with an AFNI program, you supply the prefix; the program supplies the rest
 AFNI programs can read datasets stored in several formats
 ANALYZE (.hdr/.img file pairs); i.e., from SPM, FSL
 MINC-1 (.mnc); i.e., from mnitools
 CTF (.mri, .svl) MEG analysis volumes
 ASCII text (.1D) Ñ numbers arranged into columns
 Have conversion programs to write out MINC-1, ANALYZE, ASCII, and NIfTI-1.1 files from AFNI datasets, if desired

NIfTI Dataset Files
 NIfTI-1.1 (.nii or .nii.gz) is a new standard format that AFNI, SPM, FSL, BrainVoyager, et al., have agreed upon
 Adaptation and extension of the old ANALYZE 7.5 format
 Goal: easier interoperability of tools from various packages
 All data is stored in 1 file (cf. http://nifti.nimh.nih.gov/)
 348 byte header (extensions allowed; AFNI uses this feature)
 Followed by the image numerical values
 Allows 1D-5D datasets of diverse numerical types
 .nii.gz suffix means file is compressed (with gzip)
 AFNI now reads and writes NIfTI-1.1 formatted datasets
 To write: when you give the prefix for the output filename, end it in Ò.niiÓ or Ò.nii.gzÓ, and all AFNI programs will automatically write NIfTI-1.1 format instead of .HEAD/.BRIK
 To read: just give the full filename ending in Ò.niiÓ or Ò.nii.gzÓ

Dataset Directories
 Datasets are stored in directories, also called sessions
 All the datasets in the same session, in the same view, are presumed to be aligned in xyz-coordinates
 Voxels with same value of (x,y,z) correspond to same brain location
 Can overlay (in color) any one dataset on top of any other one dataset (in grayscale) from same session
 Even if voxel sizes and orientations differ
 Typical AFNI contents of a session directory are all data derived from a single scanning session for one subject
 Anatomical reference (T1-weighted SPGR or MP-RAGE volume)
 10-20 3D+time datasets from FMRI EPI functional runs
 Statistical datasets computed from 3D+time datasets, showing activation (you hope and pray)
 Datasets transformed from +orig to +tlrc coordinates, for comparison and conglomeration with datasets from other subjects

Getting and Installing AFNI
 AFNI runs on Unix systems: Linux, Sun, SGI, Mac OS X
 Can run under Windows with Cygwin Unix emulator
This option is really just for trying it out Ñ not for production use
 If you are at the NIH: SSCC can install AFNI and update it on your system(s)
 You must give us an account with ssh access
 You can download precompiled binaries from our Website
 http://afni.nimh.nih.gov/afni
 Also: documentation, message board, humor, data, É
 You can download source code and compile it
 AFNI is updated fairly frequently, so it is important to update occasionally
 We wonÕt help you with old versions!

AFNI at the NIH Scanners
 AFNI can take images in ÒrealtimeÓ from an external program and assemble them into 3D+time datasets slice-by-slice
 Recently (July 2005), Jerzy Bodurka (FMRIF) has set up the GE Excite-based scanners (3T-1, 1.5 T, NMRF 3 T, and 7 T) to start AFNI automagically when scanning, and send reconstructed images over as soon as they are available:
 For immediate display (images and graphs of time series)
 Plus graphs of estimate subject head movement
 Goal is to let you see data as it is acquired, so that if there are any big problems, you can fix them right away
 Sample problem: someone typed in the imaging field-of-view (FOV) size wrong (240 cm instead of 24 cm), and got garbage data, but only realized this too late (after subject had left the scanner and gone home) Ñ DÕoh!

A Quick Overview of AFNI
 Starting AFNI from the Unix command line
 afni  reads datasets from the current directory
 afni dir1 dir2 É  reads datasets from directories listed
 afni -R  reads datasets from current directory and from all directories below it
 AFNI also reads a file named .afnirc from your home directory
 Used to change many of the defaults
 Window layout and image/graph viewing setup; popup hints; whether to compress .BRIK files when writing
 cf. file README.environment in the AFNI documentation
 Also can read file .afni.startup_script to restore the window layout from a previous run
 Created from Define Datamode->Misc->Save Layout menu
 cf. file README.driver for what can be done with AFNI scripts

AFNI controller window at startup
"AFNI Image Viewer"
AFNI Image Viewer

"AFNI Time Series Graph Viewer"
AFNI Time Series Graph Viewer

"Define Function:"
Define Function: Color Overlay Panel

"Volume Rendering:"
Volume Rendering: an AFNI plugin

Staying Close to Your Data!
Other Parts of AFNI
 Batch mode programs
 Are run by typing commands directly to computer, or by putting commands into a text file (script) and later executing them
 Good points about batch mode
 Can process new datasets exactly the same as old ones
 Can link together a sequence of programs to make a customized analysis (a personalized pipeline)
 Some analyses take a long time
 Bad points about batch mode
 Learning curve is Òall at onceÓ rather than gradual
 If you are, like, under age 35, you may not know how to type commands into a computer
 At least we donÕt make you use punched cards (yet)

AFNI Batch Programs
 Many important capabilities in AFNI are only available in batch programs
 A few examples (of more than 100, from trivial to complex)
 3dDeconvolve = multiple linear regression on 3D+time datasets, to fit each voxelÕs time series to an activation model and then test these fits for significance
 3dvolreg = 3D+time dataset registration, to correct for small subject head movements, and for inter-day head positioning
 3dANOVA = 1-, 2-, 3-, and 4- way ANOVA layouts, for combining & contrasting datasets in Talairach space
 3dcalc = general purpose voxel-wise calculator
 3dclust = find clusters of activated voxels
 3dresample = re-orient and/or re-size dataset voxel grid
 3dSkullStrip = remove ÒskullÓ from anatomical dataset

AFNI Plugins
 A plugin is an extension to AFNI that attaches itself to the interactive AFNI GUI
 Not the same as a batch program
 Offers a relatively easy way to add certain types of interactive functionality to AFNI
 A few examples:
 Draw Dataset = ROI drawing (draws numbers into voxels)
 Render [new] = Volume renderer
 Dataset#N = Lets you plot multiple 3D+time datasets as overlays in an AFNI graph viewer (e.g., fitted model over data)
 Histogram = Plots a histogram of a dataset or piece of one
 Edit Tagset = Lets you attach labeled Òtag pointsÓ to a dataset (e.g., as anatomical reference markers)

SUMA, et alii
 SUMA is the AFNI surface mapper
 For displaying surface models of the cortex
 Surface models come from FreeSurfer (MGH) or SureFit (Wash U) or BrainVoyager
 Can display functional activations mapped from 3D volumes to the cortical surface
 Can draw ROIs directly on the cortical surface
vs. AFNI: ROIs are drawn into the volume
 SUMA is a separate program from AFNI, but can ÒtalkÓ to AFNI so that volume and surface viewing are linked
 Click in AFNI or SUMA to change focus point, and the other program jumps to that location at the same time
 Functional overlay in AFNI can be sent to SUMA for simultaneous display
 And much more Ñ stayed tuned for the SUMA talks to come!

SUMA Teaser Movie
"How to get images into..."
 How to get images into AFNI or NIfTI format (program to3d)
 Detailed hands-on with using AFNI for data viewing (fun)
 Signal modeling & analysis: theory & hands-on (3dDeconvolve)
 Image registration (3dvolreg)
 Volume rendering hands-on (fun level=high)
 ROI drawing hands-on (fun level=extreme)
 Transformation to Talairach hands-on (fun level=low)
 Group analysis: theory and hands-on (3dANOVAx)
 SUMA hands-on (fun level=not-so-bad)
 Surface-based analysis
 Miscellaneous AFNI utility programs and plugins
 A tour of the AFNI Website

"Complex ANOVA models for group..."
 Complex ANOVA models for group analyses
 Unbalanced designs, missing data, continuous covariates, multi-nested designs, É.
 Diffusion ÔtensorÕ analyses
 Computation of D tensor, FA, tracts, É.
 Modeling of Gd-DTPA leakage rates into damaged tissue
 Finishing the changes to 3dDeconvolve to simplify deconvolution analysis on paradigms with irregular timing
 And to incorporate physiological noise cancellation, and correction for EPI time series autocorrelation, and É
 More surface-based analysis tools
 Automatic Talairach-ization + skull stripping (demo now working)
 Better ways to organize collections of datasets