S-PLUS Library - AnalyzeIO


This page explains how to install the S-PLUS library AnalyzeIO. I assume that you have a basic knowledge of UNIX/LINUX and that you already have S-PLUS (5.x, 6.0) installed on your machine.

AnalyzeIO contains functions that allow ANALYZE image format .img and .hdr files to be read into S-PLUS automatically

I created this package for two reasons.

(1) These functions provide an interface between S-PLUS and ANALYZE files. Many fMRI datasets are stored in this format and S-PLUS provides a very flexible platform upon which to explore and analyze these datasets. I hope this may be useful to other Statisticians/Researchers.

(2) I wanted to practise how to create a S-PLUS library! To do this i used the book `S Programming' by Venables and Ripley.

If you have any problems/suggestions using this package, please email me on marchini@stats.ox.ac.uk


1. Download the g-zipped tar archive  AnalyzeIO.tar.gz

2. Unzip the file using                   gunzip AnalyzeIO.tar.gz

3. Unpack the archive using       tar -xvf AnalyzeIO.tar

This will create a directory in called AnalyzeIO

4.  Move this directory (with it's contents) to the default S-PLUS library tree on your machine IF you have permission.
    If not create your own library directory somewhere i.e.   mkdir ~/lib and move the directory AnalyzeIO there.

5.  Create the library from within the AnalyzeIO directory using

                   ./INS5        (for S_PLUS 5.x)

                    ./INS6   (for S_PLUS 6.x)

6.  You can then start an S-PLUS session from where you like and load the library using

    library(AnalyzeIO,lib.loc="~/lib") - Assuming you put it in ~/lib
    library(AnalyzeIO) - Assuming you put it into the default S-PLUS library tree

7. Use the EXAMPLES section to see how the functions work.


The package contains the following functions

f.read.analyze.header - reads a .hdr file and returns it as a list
f.read.analyze.volume - reads in a .img file into an array
f.read.analyze.slice - reads in a specified slice from a .img file
f.read.analyze.slice.at.all.time.points - reads in a specified slice from a .img file
f.read.analyze.ts - reads in a specified time series from a .img file
f.analyze.file.summary - summarises the contents of a .img file
f.spectral.summary - plots a graphical summary of the frequency characteristics of an fMRI dataset stored in a .img file
f.basic.hdr.list.create - creates a basic list that can be used to write a .hdr file
f.write.analyze - creates a .img and .hdr pair of files froma given array
f.write.array.to.img.2bytes - writes an array into a .img file of 2 byte integers
f.write.array.to.img.float - writes an array into a .img file of 4 byte flotas
f.write.list.to.hdr - writes a list to a .hdr file

The functions come with help files


You can download a g-zipped .img/.hdr image pair from


The file example.img is a 4D fMRI dataset.
There are 21 axial slices each consisting of a 64x64 grid of 4mmx4mmx6mm voxels.
There is only one time point.

For the purpose of this example I assume you have put them in the same directory in which you started an S-PLUS session and unzipped them.

1.  Load the library AnalyzeIO  (as described above).

2. Get a summary of the data stored in the .img file using

[1]        File name: ./example.img
[1]   Data Dimension: 4-D
[1]      X dimension: 64
[1]      Y dimension: 64
[1]      Z dimension: 21
[1]   Time dimension: 1 time points
[1] Voxel dimensions: 4mmx4mmx6mm
[1]        Data type: signed short (16 bits per voxel)

3. Read in the data from the .img file into an array using


4. Check the dimensions of the array

[1] 64 64 21  1

6. Print out a slice of the dataset using


7. Read in a specific slice


and plot it using


8. Read in a time series from a given location


NB. Because example.img consists of only one time point this will only return one value

9. Create an array and save it in a file of 4 byte floats



If you have any problems/suggestions using this package, please email me on marchini@stats.ox.ac.uk