High-frequency changes in Intersubject Phase Synchrony (ISPS)?

We have a dataset where a group of subjects watched a ~9 minute video (~500 TRs; TR = 1 sec). We applied ISPS to the dataset and generated plots of the timecourse for each ROI, and in addition to some potentially interesting slower changes, there are a lot of high-frequency changes (4 of the plots are attached below, while the rest look similar) compared to the results reported by Glerean et al. (2012). We had also used the narrow frequency band (0.04-0.07 Hz) in the analysis as recommended in the paper.

We did follow this ISPS tutorial, which does seem to show similar high-frequency changes after applying ISPS to their example data.

For those who have worked with ISPS and tried it on their data: have you seen similar effects? What would you say could be driving them?


Hi @josie.equita, thanks for sharing this. I’m not quite sure what’s going on there. Dynamic synchrony is probably going to be inherently noisy, particularly when you are using instantaneous measures. It looks like the changes are happening at every TR. It could be some type of aliased signal, but my guess is that it has to do with either (1) the bandpass filtering or (2) the frequency band. Sometimes when there are multiple frequencies in the frequency band you used for the hilbert transform you can see strange things in the signal. This can be solved by picking a more narrow frequency band. The shape and type of the bandpass filter used can also impact this.

1 Like

Hi @ljchang , thank you so much for the response! I will definitely try a more narrow frequency band next.

also try playing with the filter, FIR instead if IIR, different cutoffs/order could be impacting this too

1 Like

Will do. Did you notice that it looks like this for the Sherlock data in the tutorial too? Seems like whatever is happening on our data is also happening there. Will report back if anything changes after we play around with some different filter settings

@josie.equita @emily.s.finn I just wanted to let you know that I finally figured out this problem. This is pretty embarrassing, but it turns out it was a bug, in which the hilbert transform was using the wrong axis of the matrix. I have fixed it, and will update nltools in the next week or so with the change. Sorry for taking so long to figure this out!

1 Like

Also, I have two different methods now implemented. One is simply the length of the resultant vector of phase angles. The other is the length of the resultant vector of pairwise differences between phase angles. They are very similar, but the latter seems a bit more conservative.

1 Like

Awesome, thanks for the update on this @ljchang ! Looks great now.