|
|
|
|
|
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 |
|
|
|
|
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 |
|
|
|
|
|
|
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 |
|
|
|
|
|
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 a×(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 |
|
|
|
|
|
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 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 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-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Ó |
|
|
|
|
|
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 |
|
|
|
|
|
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 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! |
|
|
|
|
|
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 |
|
|
|
|
|
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) |
|
|
|
|
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 |
|
|
|
|
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 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! |
|
|
|
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 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 |