EPICA

The code of EPICA is FREELY available to the community of PET data analysis. Matlab software is required for EPICA.

  1. Download
  2. Background of EPICA
  3. Unpacking the EPICA Zip File
  4. Required Data
  5. Usage
  6. Summary of Inputs, Outputs, and Options
  7. Demonstration
  8. Copyright
  9. Licensing the Software Package for Proprietary Programs
Download →top

Before downloading the codes of EPICA, we'd like to ask you to complete the following registration form. Your information is helpful for us to announce you some additional informaion about EPICA.

Please fill out the following form, at least your name, institution and location. This information is for a demographic purpose ONLY. No individual details will be released. Your email address (if supplied) will not be added to any list or publicly accessible file.
Any additional comments are welcome.

Your Name (required)
Institution (required)
Location (required)
Email Address (optional)

Background of EPICA →top

In the kinetic analysis of dynamic positron emission tomography (PET) data, the input function of the compartment model [the plasma time-activity curve (pTAC)] was obtained by serial arterial blood sampling. It is of clinical interest to develop a method for PET studies that estimates the pTAC without needing serial arterial blood sampling. For this purpose, we proposed a method to extract the pTAC from the dynamic brain PET images using a modified independent component analysis [extraction of the pTAC using independent component analysis (EPICA). EPICA performs the appropriate preprocessing and spatial independent component analysis (ICA) using a cost function that takes the various properties of the pTAC into account. Spatial ICA seeks statistically independent images from mixed data.

This code implements an EPICA algorithm proposed in an article, "Extraction of the Plasma Time-activity Curve based on Independent Component Analysis", (M. Naganawa, Y. Kimura, K. Ishii, K. Oda, K. Ishiwata, A. Matani). This paper can be downloaded from (the Web site). We adopted the FastICA algorithm developed by Dr. Hyvärinen. This code is also used in an article, "Omission of Serial Arterial Blood Sampling in Neuroreceptor Imaging with Independent Component Analysis", (M. Naganawa, Y. Kimura, T. Nariai, K. Ishii, K. Oda, Y. Manabe, K. Chihara, K. Ishiwata) in NeuroImage (in press).

The code included in this program is written in Matlab (version 6.5), Mathworks, tested on PC and Linux.

Unpacking the EPICA Zip File →top
The EPICA codes are compressed into EPICA.zip. The ZIP file includes the following files:
  • Manual.html - This file.
  • GPL.txt
  • License.txt
  • Epica.m - Main Program.
  • Epica-ICA.m - ICA.
  • Pow5exp.m - Calculation of the cost function.
  • Demo_Epica.m - Demonstration of EPICA.
Required Data →top

The input data, which are required to perform EPICA, are demonstrated below.

  1. Dynamic PET data (double). (Fig. 1)

    The dynamic PET data are represented as a 2D matrix.
    The number of row is equal to the number of frame.
    The number of column is equal to the number of voxels.



    Figure 1 Dynamic PET image matrix (Click the image to enlarge)

  2. Frame arrangement (int). (Fig. 2)

    The frame arrangement is represented as a column array.
    Each element corresponds to a middle point of a scan frame.



    Figure 2 Frame arrangement (Click the image to enlarge)

  3. Dimension of dynamic PET data (int). (Fig. 3)

    The dimension of dynamic PET data is a row array.



    Figure 3 Dimension of data (Click the image to enlarge)

  4. Mask Pattern (uint8). (Fig. 4)

    The mask pattern is a row array.
    If a given voxel is located in the brain, the corresponding element of the mask pattern is 1, otherwise is 0.



    Figure 4 Mask of data (Click the image to enlarge)

Usage →top
To run EPICA, type

>> Est = Epica(Data, Options);

Example:

>> Epica(FDGData);
>> Epica(FDGData, {'Para',[-50, 0.3]}, {'NSlice', [1,20]}, {'NFrame',[1 23]},{'NComp', 3}....);

Summary of Inputs, Outputs, and Options →top
INPUTS:

The function of EPICA takes only one mandatory argument, a structure. Its fields has the following meanings.
Variable
Type Description
Data
structure dynamic data
Data.Dim
[X, Y, Slice] dimension of data
Data.Frame
[double (Frames-by-1)] scan arrangement of PET data
Data.D
[double (Frames-by-Voxels)] dynamic images
Data.Mask
[uint8 (1-by-Voxels)] mask image

OPTIONS:

The function of EPICA has various options to modify its algorithm. The option must be a cell that contains two elements. The 1st element is a string to denote the option and the 2nd element is a value for the option.
(PC = Principal Component)
Variable
Type Description
NComp
[int] number of ICs to be estimated (Default: 2)
NFrame
[int, int] number of frames used for estimation (Default: all frames)
Para
[double, double] parameters of the cost function (Default: [-50, 0.3])
PCSpace
... population-based PC space (implementing...)
NSlice
[int, int] slice used for estimation (Default: all slices)

OUTPUTS:

A result is returned as a structure.
(IC = Independent Component)
Variable
Type Description
Est
structure estimated data
Est.Dim
[X, Y, Slice] equal to Data.Dim
Est.IcAxis
[double (Frame-by-NComp)] IC mixing matrix (The 1st column is the estimated pTAC.)
Est.IcInvWhiten
[double (NComp-by-NComp)] inverse of whitening matrix
Est.IcSep
[double (NComp-by-Frame)] IC separating matrix
Est.IcWhiten
[double (NComp-by-NComp)] whitening matrix
Est.Mask
[uint8 (1-by-Voxel)] equal to Data.Mask
Est.NComp
[int] equal to NComp of Option
Est.NFrame
[int, int] equal to NFrame of Option
Est.NSlice
[int, int] equal to NSlice of Option
Est.Para
[double, double] parameters of FastICA (Default:[0.0001 2000])
Est.PcAxis
[double (Frame-by-Frame)] PC vector
Est.PcVariance
[double (Frame-by-1)] PC variance
Est.RunP
[lambda, k] equal to Para of Option
Est.Stand
[0 or 1] Standardization (Default: 1)


ICA LINEAR MODEL

The relationship among the above inputs and outputs is represented as the following equations.

IC
= (rotation matrix) * (Est.IcWhiten) * (Est.PcAxis)' * (Data)
= (Est.IcSep) * (Data)
= (separating matrix) * (Data)


(Data)
= (Est.PcAxis) * (Est.IcInvWhiten) * (rotation matrix)' * IC
= (Est.IcAxis) * IC
= (mixing matrix) * IC


Demonstration →top
Clinical FDG data and noise added simulated data are prepared for demonstration. The demonstration program is run by typing:

>> Demo_Epica(Sw);

Sw is either 'clinical' or 'simulate'.
Example:

>> Demo_Epica('clinical');

The initial vector for FastICA is a random vector, therefore a shape of the 1st estimated IC is pTAC-like or tTAC-like. If the estimated IC is tTAC-like as shown in Fig. 5, type 'y';

>> Continue? (y/n) y



Figure 5 tTAC-like IC is estimated. (Click the image to enlarge)

If the estimated IC is pTAC-like as shown in Fig. 5, type 'n';

>> Continue? (y/n) n



Figure 6 pTAC-like IC is estimated. (Click the image to enlarge)

Then, the true pTAC and the estimated pTAC are plotted in the same figure (Fig. 7).



Figure 7 The true and the estimated pTACs. (Click the image to enlarge)

Copyright →top
The EPICA codes are Copyright (C) 2005-2013 by Mika Naganawa and Yuichi Kimura. The software package is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or any later version.
The software package is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
Licensing the Software Package for Proprietary Programs →top
As stated in the GNU General Public License, it is not possible to include this software library in a proprietary program without written permission from the owners of the copyright. If you wish to obtain such permission, you can reach us by paper mail:

Yale PET Center,
Yale University, 801 Howard Avenue, PO Box 208048
New Haven, CT, 06520-8048, USA

or by sending email to Mika Naganawa (mika.naganawa[at]yale.edu).

Back to My page.