How to do gPPI to event-related fMRI ?

Hi AFNI experts,
I will do gPPI analysis to my fMRI data with event-related design. I read the tutorial of gPPI ( and I have some questions :

  1. How to select a impulse response function in step 3?
    A impulse response function is assumed firstly. And then the seed time series is deconvolve (step 3) and Inter_neuA.1D is convolved (step 4) using this response function. Whether some certain requirements for selecting a response function need satisfying? For example, I think it will be better to choose a response function which is the same as the one used in the following GLM regression (step 6). Which function should I choose if the Rmodel used is ‘BLOCK5(1,1)’ in the following GLM regression?
  2. What other modification should I make on the template to make it suite my situation?
    The script provided by the link mention above is a template for block design fMRI deconvolved using the Rmodel ‘BLOCK(3,1)’ in the GLM regression. Whether there are some key difference in the gPPI operation between a block design data using ‘BLOCK(3,1)’ and my event-related data using ‘BLOCK5(1,1)’ in the following GLM regression?
    3)Whether the signals in the input file pb04.* mentioned in the above link have been scaled to percentages? Need I scale each voxel time series to have a mean of 100 before gPPI?
    4)Could you provide more learning materials or links with more detail on how to do gPPI in AFNI ?
    I am very sorry to post so many questions to trouble you. But I will be very appreciated with your answers!
    Thank you!


You may follow the updated PPI scripts under the directory “AFNI_data6” that Rick Reynolds put together a while ago:

The README.txt file is a top-level script that assumes ~/subject_data is populated by running the main single subject analysis script:

The AFNI_data6.tgz package is directly available here:

I am very sorry to trouble you again. The demo in the learning materials (PPI[/url]) you mentioned is also about block design fMRI with the duration of 20s. I have read every word in the learning materials you provided but I haven’t found the answers. On the contrary, they make me more confused because some operation in these materials is so different from the link I mentioned([url=]gPPI). The questions I asked before remain unsolved, and besides, I have two more questions:
5)What’s the function of the symbol ‘:t’ in tcsh scripts? I find ‘:t’ in many rows in the scripts you provided (PPI), for example, ‘set seed = $seed:t’ and
‘set tfile = $timingdir/$stim_files[$sind]:t’ in the script ‘cmd.ppi.2.make.regs’.
6)The inputs ( pb04.*) of gPPI in the link I mentioned are signal values while the inputs of PPI in the scripts you provided are the residual error time series generated by regression. Is that the difference between gPPI and PPI?

I’ve consulted a lot of senior colleagues in our institute before these questions are published here. But they all know little about the answers besides using the same script provided in this link ( gPPI ) to all experiments.
If you are busy, you need not to reply me until you have enough free time.
Thank you!

Hi Po,

Yes, you should use an impulse response function that
matches what you used in the main analysis. So if you
used BLOCK5 in your analysis, use it in the PPI, but of
course use an “instantaneous event”, as we approximately
do with the 0.1 s duration.

The event durations should not approach zero, but they
are also not required to be long.

  1. Try it. The :t gets the tail of a pathname, removing
    the leading directories.

  2. Use the residuals, as done in the FT_analysis example.

No, the difference between PPI and gPPI is computing the
result not as an interaction, but as a single contribution
beta. An interaction can be taken as a simple contrast of
two of them.

  • rick

Hi Rick,
Thank you very much for your helpful answers! I’ve got four more questions about the PPI demo in AFNI_data6:

1.How to do group analysis if there are many subjects ?
I ran the PPI demo[/url] following the instruction of [url=]README.txt and the results file PPI.full.stats.FT+tlrc was generated. See the brick labels in this dataset:
I don’t know how to do group analysis and I think there are two options for group analysis:
1) Output the Correlation coefficient (r) of the contrast (vis - aud) of each subject and then transform r to z (fisher-z transform).

3dcalc -a PPI.full.stats.FT+tlrc'[28]' -b PPI.full.stats.FT+tlrc'[26]' -expr 'ispositive(b)*sqrt(a)-isnegative(b)*sqrt(a)' -prefix Contrast_R
3dcalc -a Contrast_R+tlrc -expr 'log((1+a)/(1-a))/2' -prefix Contrast_Z
   And compare z values of several subjects to zero just like what we do in the classical PPI. 
  2)Output single-subject Correlation coefficient (r) of each condition (vis and aud seperately) and transform them.

3dcalc -a PPI.full.stats.FT+tlrc'[4]' -b PPI.full.stats.FT+tlrc'[2]' -expr 'ispositive(b)*sqrt(a)-isnegative(b)*sqrt(a)' -prefix Vis_R
3dcalc -a Vis_R+tlrc -expr 'log((1+a)/(1-a))/2' -prefix Vis_Z
3dcalc -a PPI.full.stats.FT+tlrc'[8]' -b PPI.full.stats.FT+tlrc'[6]' -expr 'ispositive(b)*sqrt(a)-isnegative(b)*sqrt(a)' -prefix Aud_R
3dcalc -a Aud_R+tlrc -expr 'log((1+a)/(1-a))/2' -prefix Aud_Z

Then compare the z values of two conditions within group using paired t-test.
Do you think which one is better? Is there something wrong with my code of outputting and transforming?

2.What’s the function of run.ppi.example.txt?
I find another file (run.ppi.example.txt[/url]) in the [url=]PPI directory. I can’t figured out what’s the function of this script. What this script want to do is an essential processing step for gPPI or not?

3.How to choose appropriate input for 3dTfitter?
The optional inputs of 3dTfitter are difference between the two PPI version:
Gang’s page:

3dTfitter -RHS Seed_ts.1D -FALTUNG GammaHR.1D Seed_Neur 012 0

PPI demo in AFNI_data6:

3dTfitter -RHS $pprev.seed.$TRnup.r$rind.1D -FALTUNG $hrf_file temp.1D 012 -2 -l2lasso -6

The options -FALTUNG and -l2lasso are so different. How to choose better inputs of these two options for my event-related fMRI?

4.The senior colleagues in our lab used almost the same gPPI codes[/url] (which is provided by Gang’s page) to fMRI data with both block and event-related design.The only modification they made to match an event-related design was to replace the Rmodel input ‘BLOCK(3,1)’ in the regression step (step6) in [url=]the codes to ‘BLOCK5(1,1)’. They want to know if there are critical errors in using almost the same codes as those provided by Gang’s page to fMRI data of event-related design.

You need not to reply me until you have enough free time. I will be very appreciated!

UP… I am very sorry but the messages were buried.

Hi Po,

Sorry for being slow…

  1. Group analysis can be done on the PPI betas, such as
    #10 = PPI.vis#0_Coef. Note that it would be the contrast
    between that and #14 = PPI.aud#0_Coef that would actually
    be the interaction, i.e. index #26.

We recommend using the betas rather than the transformed
correlations for a few reasons. See PPI.pdf

  1. The run.ppi.example.txt is designed to show the pieces
    that go into a time series, and which we are trying to
    evaluate when doing a PPI. I have not yet added descriptions
    of them in the handout, though that script should make it

  2. The PPI demo scripts under AFNI_data6 should be followed.

  3. You can see in the PPI/cmd.ppi.2.make.regs file that it
    uses BLOCK(0.1,1) for the shape of the impulse response
    function. This should match your main analysis (the event
    durations are not relevant). If you used something with
    BLOCK5, the PPI script should use that, too.

BLOCK vs. BLOCK5 vs. GAM are the shapes assumed for the
response functions. Given a consistent shape, there is no
difference between event-related and block analyses (though
of course the shorter the blocks, the more difficult they
are to evaluate accurately).

  • rick