gPPI analysis and Upsampling

Hi All,

I am running a gPPI for the first time and need to upsample my time series because the stimulus presentations were not locked to the TR. Aside from the example of a sub_TR of 0.1 s, is there a principled way to determine the length of a sub_TR?



Hi Andrew,

It is also to allow for a more smooth sampling of data,
with the intention of making the PPI filtering being a
somewhat invertible operation, rather than having the
PPI filter heavily blur the BOLD signal.

Of course, this is from the perspective of a TR that
is much longer. For a short TR, that interval might
come down, too.

  • rick

Hi AFNI team,

I had a similar problem. The functional scans were collected on a TR of 1.5. However, the stimulus times were not in TR times (e.g., 3, 155). I wanted to upsample the functional data to 1.5 so that the functional scans are in seconds. However, 1dupsample only allows for integers between 2 and 32. Is there another way to do this or an equivalent workaround? Your help is greatly appreciated.


Hi Ekarin,

To be sure, you just mean to upsample the seed time series, is
that right? It is not quite clear what your stimulus times were,
but I guess you mean they happened every 1.5 seconds. And
maybe that means your TR was bigger, like 2 s? How long
were the stimulus events?

On advantage of upsampling to 0.1 s is that it handles not
only event onsets that are not locked, but the durations, too.
If the stimulus events happened at multiples of 1.5 s, but
the events were 0.2 s long, it does not really help to leave
the data on the 1.5 s grid.

In any case, you could oversample the seed time series
to 0.1 and then downsample to 1.5, if desired.

  • rick

Sorry, I did mean upsampling the seed time series. The TR is 1.5s and number of time points/volumes is 260; however, the stimuli onsets and durations occur outside of the TR. For example, the stimuli onset times are 5, 60, 115, 145, 200, 255, 285, and 340 seconds (total of 390 sec); and the stimulus durations are 25 seconds for the stimulus that occurs at 115 and 255 seconds and the duration is 50 seconds for the remainder of the stimuli. I hope that is more clear.

If I am understanding your advice about oversampling correctly, I think that upsampling by a factor of 3 (sub_TR of .5) and multiplying the stim times by 2 should do the trick? I tried this method and it appears to be working with matching 780-time points in the seed time series, stim file, and interaction files before downsampling back down to 260-time points again.

Sure, that seems great. And indeed, further oversampling
is not too important with durations of 25 and 50 seconds!

  • rick

I see, great! thanks so much!