Configuring AIR 2.0

Several aspects of AIR 2.0 can be configured before compilation to make the package more usefult at your site. Most options are configured by modifying the AIR.h header file that is located in the subdirectory AIR2.0/src/. This file can be modified using the text editor of your choice. You should be very careful not to change any punctuation in the file since this may confuse the C compiler when it tries to read the modified file.

The following lines in AIR.h can be configured:
#define PLATF 1
This variable allows the C compiler to assign machine dependent constants that are appropriate for your platform. If your C compiler has the include file float.h, choose option 3 preferentially (if you are not sure, you can try using 3 and come back to the choice between 1 and 2 if the compiler complains about not being able to find float.h). The standard C compiler on Sun SPARCstations does not include float.h, so you must choose 1 for SPARCs. Be sure that you are using AIR 2.02 or later in order to choose option 3.
#define VERBOSITY 0
This variable governs how chatty the programs are. If you want to minimize the amount of onscreen printing, leave it as 0, if you want lots of reassuring messages, change it to a 1.
#define PIX_SIZE_ERR .0001
The variable decides how fussy the AIR package is about deciding that pixel sizes are identical. If you plan to round off pixel sizes only to the nearest .1 mm, you need to make this value .1. If you like to type everything out to many decimal places, you can make the AIR package equally compulsive.
#define PIXEL_MAX_SIZE 10
The AIR package will warn you if you load a file with pixels bigger than 10 mm (on the assumption that this is an error). If you regularly use huge pixels, make this number really big.
#define PIXEL_MIN_SIZE .1
The AIR package will warn you if you load a file with pixels smaller than .1 mm (on the assumption that this is an error). If you regularly use tiny pixels, make this number really small.
#define EDITED 5.0
This is included for compatibility with the AIR 1.0 programs alignpettomri and alignmritopet. You probably can leave it as is.
#define OLD_ANALYZE 1
ANALYZE 2.0 (a very old version) will sometimes change all the pixel sizes to 1.0 when you save a file. If you use ANALYZE 2.0, leave this value as 1 and you will be warned whenever a file claiming to have voxel sizes of exactly 1.0 x 1.0 x 1.0 is loaded. If you don't use ANALYZE 2.0, change this to a 0.
#define COMPRESS 1
If this value is 1, AIR will automatically attempt to decompress an image file if the uncompressed version is not available. This is accomplished using the UNIX uncompress command. The data is subsequently recompressed using the UNIX compress command. If compression/decompression is causing problems with compilation (e.g., if you aren't on a UNIX machine) set this to 0 to deactivate this feature.
#define CLOCK 0
The program alignlinear, when run in verbose mode (using the command line -v option) will time each iteration as it performs alignment if this variable is set to 1. This feature is highly non-portable, and I would leave it as 0 unless you are using a Sun compiler.
#define OUTBITS 8
The acceptable values are 8 and 16. If you choose 8, data will be represented internally and saved as 8 bits/pixel. If you choose 16, data will be represented internally and saved as 16 bits/pixel. (Either way, you will be able to read in 8 or 16 bit data, this variable only controls output data). If you are not sure what to do here, the issue of 8 and 16 bit data is discussed elsewhere at length.
#define REP16 3
This variable is irrelevant if you have OUTBITS set to 8. The acceptable values are 1, 2 and 3. The variable controls the format of 16 bit data saved to disk by the AIR package. If you are not sure what to do here, the issue of 16 bit data types is discussed elsewhere at length.
#if(OUTBITS==8)
#define THRESHOLD1 55
#define THRESHOLD2 55
#elif(OUTBITS==16)
#define THRESHOLD1 7000
#define THRESHOLD2 7000
#endif
THRESHOLD1 and THRESHOLD2 control the default pixel value thresholds used by the registration programs. If you have set OUTBITS to 8, only the first set of thresholds is used. If you have set OUTBITS to 16, only the second set is used. The thresholds should be values that will typically separate brain (suprathreshold) from nonbrain (subthreshold). For 8 bit PET data, thresholds of 55 work well for me, but for MRI a threshold of 10 is usually more appropriate. For 16 bit data, it's a tough call--maybe around 7000 for PET, but MRI could be anywhere from 100 to 1000 or beyond. Look at some data to make a reasonable guess, and bear in mind that these thresholds are easily overridden on a per use basis.


Modified: January 23, 1996

© 1996 Roger P. Woods, M.D.(rwoods@ucla.edu)