Comparing PLI, wPLI, and dPLI#

This example demonstrates the different connectivity information captured by the phase lag index (PLI) 1, weighted phase lag index (wPLI) 2, and directed phase lag index (dPLI) 3 on simulated data.

# Authors: Kenji Marshall <kenji.marshall99@gmail.com>
#          Charlotte Maschke <charlotte.maschke@mail.mcgill.ca>
#          Stefanie Blain-Moraes <stefanie.blain-moraes@mcgill.ca>
#
# License: BSD (3-clause)


import mne
import numpy as np
import matplotlib.pyplot as plt

from mne_connectivity import spectral_connectivity_epochs
from mne.datasets import sample

Background#

The formulae for PLI, wPLI, and dPLI are given below. In these equations, \(X_{ij}\) is the cross-spectral density (CSD) between two signals \(i, j\). Importantly, the imaginary component of the CSD is maximal when the signals have a phase difference given by \(k\pi+\frac{\pi}{2}\), and is \(0\) when the phase difference is given by \(k\pi\) (where \(k \in \mathbb{Z}\)). This property provides protection against recognizing volume conduction effects as connectivity, and is the backbone for these methods 2. In the equations below, \(\mathcal{I}\) refers to the imaginary component, \(\mathcal{H}\) refers to the Heaviside step function, and \(sgn\) refers to the sign function.

\(PLI = |E[sgn(\mathcal{I}(X_{ij}))]|\) 1

\(wPLI = \frac{|E[\mathcal{I}(X_{ij})]|}{E[|\mathcal{I}(X_{ij})|]}\) 2

\(dPLI = E[\mathcal{H}(\mathcal{I}(X_{ij}))]\) 3

All three of these metrics are bounded in the range \([0, 1]\).

  • For PLI, \(0\) means that signal \(i\) leads and lags signal \(j\) equally often, while a value greater than \(0\) means that there is an imbalance in the likelihood for signal \(i\) to be leading or lagging. A value of \(1\) means that signal \(i\) only leads or only lags signal \(j\).

  • For wPLI, \(0\) means that the total weight (not the quantity) of all leading relationships equals the total weight of lagging relationships, while a value greater than \(0\) means that there is an imbalance between these weights. A value of \(1\), just as in PLI, means that signal \(i\) only leads or only lags signal \(j\).

  • With dPLI, we gain the ability to distinguish whether signal \(i\) is leading or lagging signal \(j\), complementing the information provided by PLI or wPLI. A value of \(0.5\) means that signal \(i\) leads and lags signal \(j\) equally often. A value in the range \((0.5, 1.0]\) means that signal \(i\) leads signal \(j\) more often than it lags, with a value of \(1\) meaning that signal \(i\) always leads signal \(j\). A value in the range \([0.0, 0.5)\) means that signal \(i\) lags signal \(j\) more often than it leads, with a value of \(0\) meaning that signal \(i\) always lags signal \(j\). The PLI can actually be extracted from the dPLI by the relationship \(PLI = 2|dPLI - 0.5|\), but this relationship is not invertible (dPLI can not be estimated from the PLI).

Overall, these different approaches are closely related but have subtle differences, as will be demonstrated throughout the rest of this example.

Capturing Leading/Lagging Phase Relationships with dPLI#

The main advantage of dPLI is that it’s directed, meaning it can differentiate between phase relationships which are leading or lagging. To illustrate this, we generate sinusoids with Gaussian noise. In particular, we generate signals with phase differences of \([-\pi, -\frac{\pi}{2}, 0, \frac{\pi}{2}, \pi]\) relative to a reference signal. A negative difference means that the reference signal is lagging the other signal.

fs = 250  # sampling rate (Hz)
n_e = 300  # number of epochs
T = 10  # length of epochs (s)
f = 10  # frequency of sinusoids (Hz)
t = np.arange(0, T, 1 / fs)
A = 1  # noise amplitude
sigma = 0.5  # Gaussian noise variance

data = []

phase_differences = [0, -np.pi, -np.pi / 2, 0, np.pi / 2, np.pi]
for ps in zip(phase_differences):
    sig = []
    for _ in range(n_e):
        sig.append(np.sin(2 * np.pi * f * t - ps) +
                   A * np.random.normal(0, sigma, size=t.shape))
    data.append(sig)

data = np.swapaxes(np.array(data), 0, 1)  # make epochs the first dimension

A snippet of this simulated data is shown below. The blue signal is the reference signal.

fig, ax = plt.subplots(1, 2, figsize=(12, 5), sharey=True)
ax[0].plot(t[:fs], data[0, 0, :fs], label="Reference")
ax[0].plot(t[:fs], data[0, 2, :fs])

ax[0].set_title(r"Phase Lagging ($-\pi/2$ Phase Difference)")
ax[0].set_xlabel("Time (s)")
ax[0].set_ylabel("Signal")
ax[0].legend()

ax[1].plot(t[:fs], data[0, 0, :fs], label="Reference")
ax[1].plot(t[:fs], data[0, 4, :fs])
ax[1].set_title(r"Phase Leading ($\pi/2$ Phase Difference)")
ax[1].set_xlabel("Time (s)")

plt.show()
Phase Lagging ($-\pi/2$ Phase Difference), Phase Leading ($\pi/2$ Phase Difference)

We will now compute PLI, wPLI, and dPLI for each phase relationship.

conn = []
indices = ([0, 0, 0, 0, 0], [1, 2, 3, 4, 5])
for method in ['pli', 'wpli', 'dpli']:
    conn.append(
        spectral_connectivity_epochs(
            data, method=method, sfreq=fs, indices=indices,
            fmin=9, fmax=11, faverage=True).get_data()[:, 0])
conn = np.array(conn)
Connectivity computation...
    computing connectivity for 5 connections
    using t=0.000s..9.996s for estimation (2500 points)
    frequencies: 9.0Hz..11.0Hz (21 points)
    connectivity scores will be averaged for each band
    Using multitaper spectrum estimation with 7 DPSS windows
    the following metrics will be computed: PLI
    computing connectivity for epoch 1
    computing connectivity for epoch 2
    computing connectivity for epoch 3
    computing connectivity for epoch 4
    computing connectivity for epoch 5
    computing connectivity for epoch 6
    computing connectivity for epoch 7
    computing connectivity for epoch 8
    computing connectivity for epoch 9
    computing connectivity for epoch 10
    computing connectivity for epoch 11
    computing connectivity for epoch 12
    computing connectivity for epoch 13
    computing connectivity for epoch 14
    computing connectivity for epoch 15
    computing connectivity for epoch 16
    computing connectivity for epoch 17
    computing connectivity for epoch 18
    computing connectivity for epoch 19
    computing connectivity for epoch 20
    computing connectivity for epoch 21
    computing connectivity for epoch 22
    computing connectivity for epoch 23
    computing connectivity for epoch 24
    computing connectivity for epoch 25
    computing connectivity for epoch 26
    computing connectivity for epoch 27
    computing connectivity for epoch 28
    computing connectivity for epoch 29
    computing connectivity for epoch 30
    computing connectivity for epoch 31
    computing connectivity for epoch 32
    computing connectivity for epoch 33
    computing connectivity for epoch 34
    computing connectivity for epoch 35
    computing connectivity for epoch 36
    computing connectivity for epoch 37
    computing connectivity for epoch 38
    computing connectivity for epoch 39
    computing connectivity for epoch 40
    computing connectivity for epoch 41
    computing connectivity for epoch 42
    computing connectivity for epoch 43
    computing connectivity for epoch 44
    computing connectivity for epoch 45
    computing connectivity for epoch 46
    computing connectivity for epoch 47
    computing connectivity for epoch 48
    computing connectivity for epoch 49
    computing connectivity for epoch 50
    computing connectivity for epoch 51
    computing connectivity for epoch 52
    computing connectivity for epoch 53
    computing connectivity for epoch 54
    computing connectivity for epoch 55
    computing connectivity for epoch 56
    computing connectivity for epoch 57
    computing connectivity for epoch 58
    computing connectivity for epoch 59
    computing connectivity for epoch 60
    computing connectivity for epoch 61
    computing connectivity for epoch 62
    computing connectivity for epoch 63
    computing connectivity for epoch 64
    computing connectivity for epoch 65
    computing connectivity for epoch 66
    computing connectivity for epoch 67
    computing connectivity for epoch 68
    computing connectivity for epoch 69
    computing connectivity for epoch 70
    computing connectivity for epoch 71
    computing connectivity for epoch 72
    computing connectivity for epoch 73
    computing connectivity for epoch 74
    computing connectivity for epoch 75
    computing connectivity for epoch 76
    computing connectivity for epoch 77
    computing connectivity for epoch 78
    computing connectivity for epoch 79
    computing connectivity for epoch 80
    computing connectivity for epoch 81
    computing connectivity for epoch 82
    computing connectivity for epoch 83
    computing connectivity for epoch 84
    computing connectivity for epoch 85
    computing connectivity for epoch 86
    computing connectivity for epoch 87
    computing connectivity for epoch 88
    computing connectivity for epoch 89
    computing connectivity for epoch 90
    computing connectivity for epoch 91
    computing connectivity for epoch 92
    computing connectivity for epoch 93
    computing connectivity for epoch 94
    computing connectivity for epoch 95
    computing connectivity for epoch 96
    computing connectivity for epoch 97
    computing connectivity for epoch 98
    computing connectivity for epoch 99
    computing connectivity for epoch 100
    computing connectivity for epoch 101
    computing connectivity for epoch 102
    computing connectivity for epoch 103
    computing connectivity for epoch 104
    computing connectivity for epoch 105
    computing connectivity for epoch 106
    computing connectivity for epoch 107
    computing connectivity for epoch 108
    computing connectivity for epoch 109
    computing connectivity for epoch 110
    computing connectivity for epoch 111
    computing connectivity for epoch 112
    computing connectivity for epoch 113
    computing connectivity for epoch 114
    computing connectivity for epoch 115
    computing connectivity for epoch 116
    computing connectivity for epoch 117
    computing connectivity for epoch 118
    computing connectivity for epoch 119
    computing connectivity for epoch 120
    computing connectivity for epoch 121
    computing connectivity for epoch 122
    computing connectivity for epoch 123
    computing connectivity for epoch 124
    computing connectivity for epoch 125
    computing connectivity for epoch 126
    computing connectivity for epoch 127
    computing connectivity for epoch 128
    computing connectivity for epoch 129
    computing connectivity for epoch 130
    computing connectivity for epoch 131
    computing connectivity for epoch 132
    computing connectivity for epoch 133
    computing connectivity for epoch 134
    computing connectivity for epoch 135
    computing connectivity for epoch 136
    computing connectivity for epoch 137
    computing connectivity for epoch 138
    computing connectivity for epoch 139
    computing connectivity for epoch 140
    computing connectivity for epoch 141
    computing connectivity for epoch 142
    computing connectivity for epoch 143
    computing connectivity for epoch 144
    computing connectivity for epoch 145
    computing connectivity for epoch 146
    computing connectivity for epoch 147
    computing connectivity for epoch 148
    computing connectivity for epoch 149
    computing connectivity for epoch 150
    computing connectivity for epoch 151
    computing connectivity for epoch 152
    computing connectivity for epoch 153
    computing connectivity for epoch 154
    computing connectivity for epoch 155
    computing connectivity for epoch 156
    computing connectivity for epoch 157
    computing connectivity for epoch 158
    computing connectivity for epoch 159
    computing connectivity for epoch 160
    computing connectivity for epoch 161
    computing connectivity for epoch 162
    computing connectivity for epoch 163
    computing connectivity for epoch 164
    computing connectivity for epoch 165
    computing connectivity for epoch 166
    computing connectivity for epoch 167
    computing connectivity for epoch 168
    computing connectivity for epoch 169
    computing connectivity for epoch 170
    computing connectivity for epoch 171
    computing connectivity for epoch 172
    computing connectivity for epoch 173
    computing connectivity for epoch 174
    computing connectivity for epoch 175
    computing connectivity for epoch 176
    computing connectivity for epoch 177
    computing connectivity for epoch 178
    computing connectivity for epoch 179
    computing connectivity for epoch 180
    computing connectivity for epoch 181
    computing connectivity for epoch 182
    computing connectivity for epoch 183
    computing connectivity for epoch 184
    computing connectivity for epoch 185
    computing connectivity for epoch 186
    computing connectivity for epoch 187
    computing connectivity for epoch 188
    computing connectivity for epoch 189
    computing connectivity for epoch 190
    computing connectivity for epoch 191
    computing connectivity for epoch 192
    computing connectivity for epoch 193
    computing connectivity for epoch 194
    computing connectivity for epoch 195
    computing connectivity for epoch 196
    computing connectivity for epoch 197
    computing connectivity for epoch 198
    computing connectivity for epoch 199
    computing connectivity for epoch 200
    computing connectivity for epoch 201
    computing connectivity for epoch 202
    computing connectivity for epoch 203
    computing connectivity for epoch 204
    computing connectivity for epoch 205
    computing connectivity for epoch 206
    computing connectivity for epoch 207
    computing connectivity for epoch 208
    computing connectivity for epoch 209
    computing connectivity for epoch 210
    computing connectivity for epoch 211
    computing connectivity for epoch 212
    computing connectivity for epoch 213
    computing connectivity for epoch 214
    computing connectivity for epoch 215
    computing connectivity for epoch 216
    computing connectivity for epoch 217
    computing connectivity for epoch 218
    computing connectivity for epoch 219
    computing connectivity for epoch 220
    computing connectivity for epoch 221
    computing connectivity for epoch 222
    computing connectivity for epoch 223
    computing connectivity for epoch 224
    computing connectivity for epoch 225
    computing connectivity for epoch 226
    computing connectivity for epoch 227
    computing connectivity for epoch 228
    computing connectivity for epoch 229
    computing connectivity for epoch 230
    computing connectivity for epoch 231
    computing connectivity for epoch 232
    computing connectivity for epoch 233
    computing connectivity for epoch 234
    computing connectivity for epoch 235
    computing connectivity for epoch 236
    computing connectivity for epoch 237
    computing connectivity for epoch 238
    computing connectivity for epoch 239
    computing connectivity for epoch 240
    computing connectivity for epoch 241
    computing connectivity for epoch 242
    computing connectivity for epoch 243
    computing connectivity for epoch 244
    computing connectivity for epoch 245
    computing connectivity for epoch 246
    computing connectivity for epoch 247
    computing connectivity for epoch 248
    computing connectivity for epoch 249
    computing connectivity for epoch 250
    computing connectivity for epoch 251
    computing connectivity for epoch 252
    computing connectivity for epoch 253
    computing connectivity for epoch 254
    computing connectivity for epoch 255
    computing connectivity for epoch 256
    computing connectivity for epoch 257
    computing connectivity for epoch 258
    computing connectivity for epoch 259
    computing connectivity for epoch 260
    computing connectivity for epoch 261
    computing connectivity for epoch 262
    computing connectivity for epoch 263
    computing connectivity for epoch 264
    computing connectivity for epoch 265
    computing connectivity for epoch 266
    computing connectivity for epoch 267
    computing connectivity for epoch 268
    computing connectivity for epoch 269
    computing connectivity for epoch 270
    computing connectivity for epoch 271
    computing connectivity for epoch 272
    computing connectivity for epoch 273
    computing connectivity for epoch 274
    computing connectivity for epoch 275
    computing connectivity for epoch 276
    computing connectivity for epoch 277
    computing connectivity for epoch 278
    computing connectivity for epoch 279
    computing connectivity for epoch 280
    computing connectivity for epoch 281
    computing connectivity for epoch 282
    computing connectivity for epoch 283
    computing connectivity for epoch 284
    computing connectivity for epoch 285
    computing connectivity for epoch 286
    computing connectivity for epoch 287
    computing connectivity for epoch 288
    computing connectivity for epoch 289
    computing connectivity for epoch 290
    computing connectivity for epoch 291
    computing connectivity for epoch 292
    computing connectivity for epoch 293
    computing connectivity for epoch 294
    computing connectivity for epoch 295
    computing connectivity for epoch 296
    computing connectivity for epoch 297
    computing connectivity for epoch 298
    computing connectivity for epoch 299
    computing connectivity for epoch 300
[Connectivity computation done]
Connectivity computation...
    computing connectivity for 5 connections
    using t=0.000s..9.996s for estimation (2500 points)
    frequencies: 9.0Hz..11.0Hz (21 points)
    connectivity scores will be averaged for each band
    Using multitaper spectrum estimation with 7 DPSS windows
    the following metrics will be computed: WPLI
    computing connectivity for epoch 1
    computing connectivity for epoch 2
    computing connectivity for epoch 3
    computing connectivity for epoch 4
    computing connectivity for epoch 5
    computing connectivity for epoch 6
    computing connectivity for epoch 7
    computing connectivity for epoch 8
    computing connectivity for epoch 9
    computing connectivity for epoch 10
    computing connectivity for epoch 11
    computing connectivity for epoch 12
    computing connectivity for epoch 13
    computing connectivity for epoch 14
    computing connectivity for epoch 15
    computing connectivity for epoch 16
    computing connectivity for epoch 17
    computing connectivity for epoch 18
    computing connectivity for epoch 19
    computing connectivity for epoch 20
    computing connectivity for epoch 21
    computing connectivity for epoch 22
    computing connectivity for epoch 23
    computing connectivity for epoch 24
    computing connectivity for epoch 25
    computing connectivity for epoch 26
    computing connectivity for epoch 27
    computing connectivity for epoch 28
    computing connectivity for epoch 29
    computing connectivity for epoch 30
    computing connectivity for epoch 31
    computing connectivity for epoch 32
    computing connectivity for epoch 33
    computing connectivity for epoch 34
    computing connectivity for epoch 35
    computing connectivity for epoch 36
    computing connectivity for epoch 37
    computing connectivity for epoch 38
    computing connectivity for epoch 39
    computing connectivity for epoch 40
    computing connectivity for epoch 41
    computing connectivity for epoch 42
    computing connectivity for epoch 43
    computing connectivity for epoch 44
    computing connectivity for epoch 45
    computing connectivity for epoch 46
    computing connectivity for epoch 47
    computing connectivity for epoch 48
    computing connectivity for epoch 49
    computing connectivity for epoch 50
    computing connectivity for epoch 51
    computing connectivity for epoch 52
    computing connectivity for epoch 53
    computing connectivity for epoch 54
    computing connectivity for epoch 55
    computing connectivity for epoch 56
    computing connectivity for epoch 57
    computing connectivity for epoch 58
    computing connectivity for epoch 59
    computing connectivity for epoch 60
    computing connectivity for epoch 61
    computing connectivity for epoch 62
    computing connectivity for epoch 63
    computing connectivity for epoch 64
    computing connectivity for epoch 65
    computing connectivity for epoch 66
    computing connectivity for epoch 67
    computing connectivity for epoch 68
    computing connectivity for epoch 69
    computing connectivity for epoch 70
    computing connectivity for epoch 71
    computing connectivity for epoch 72
    computing connectivity for epoch 73
    computing connectivity for epoch 74
    computing connectivity for epoch 75
    computing connectivity for epoch 76
    computing connectivity for epoch 77
    computing connectivity for epoch 78
    computing connectivity for epoch 79
    computing connectivity for epoch 80
    computing connectivity for epoch 81
    computing connectivity for epoch 82
    computing connectivity for epoch 83
    computing connectivity for epoch 84
    computing connectivity for epoch 85
    computing connectivity for epoch 86
    computing connectivity for epoch 87
    computing connectivity for epoch 88
    computing connectivity for epoch 89
    computing connectivity for epoch 90
    computing connectivity for epoch 91
    computing connectivity for epoch 92
    computing connectivity for epoch 93
    computing connectivity for epoch 94
    computing connectivity for epoch 95
    computing connectivity for epoch 96
    computing connectivity for epoch 97
    computing connectivity for epoch 98
    computing connectivity for epoch 99
    computing connectivity for epoch 100
    computing connectivity for epoch 101
    computing connectivity for epoch 102
    computing connectivity for epoch 103
    computing connectivity for epoch 104
    computing connectivity for epoch 105
    computing connectivity for epoch 106
    computing connectivity for epoch 107
    computing connectivity for epoch 108
    computing connectivity for epoch 109
    computing connectivity for epoch 110
    computing connectivity for epoch 111
    computing connectivity for epoch 112
    computing connectivity for epoch 113
    computing connectivity for epoch 114
    computing connectivity for epoch 115
    computing connectivity for epoch 116
    computing connectivity for epoch 117
    computing connectivity for epoch 118
    computing connectivity for epoch 119
    computing connectivity for epoch 120
    computing connectivity for epoch 121
    computing connectivity for epoch 122
    computing connectivity for epoch 123
    computing connectivity for epoch 124
    computing connectivity for epoch 125
    computing connectivity for epoch 126
    computing connectivity for epoch 127
    computing connectivity for epoch 128
    computing connectivity for epoch 129
    computing connectivity for epoch 130
    computing connectivity for epoch 131
    computing connectivity for epoch 132
    computing connectivity for epoch 133
    computing connectivity for epoch 134
    computing connectivity for epoch 135
    computing connectivity for epoch 136
    computing connectivity for epoch 137
    computing connectivity for epoch 138
    computing connectivity for epoch 139
    computing connectivity for epoch 140
    computing connectivity for epoch 141
    computing connectivity for epoch 142
    computing connectivity for epoch 143
    computing connectivity for epoch 144
    computing connectivity for epoch 145
    computing connectivity for epoch 146
    computing connectivity for epoch 147
    computing connectivity for epoch 148
    computing connectivity for epoch 149
    computing connectivity for epoch 150
    computing connectivity for epoch 151
    computing connectivity for epoch 152
    computing connectivity for epoch 153
    computing connectivity for epoch 154
    computing connectivity for epoch 155
    computing connectivity for epoch 156
    computing connectivity for epoch 157
    computing connectivity for epoch 158
    computing connectivity for epoch 159
    computing connectivity for epoch 160
    computing connectivity for epoch 161
    computing connectivity for epoch 162
    computing connectivity for epoch 163
    computing connectivity for epoch 164
    computing connectivity for epoch 165
    computing connectivity for epoch 166
    computing connectivity for epoch 167
    computing connectivity for epoch 168
    computing connectivity for epoch 169
    computing connectivity for epoch 170
    computing connectivity for epoch 171
    computing connectivity for epoch 172
    computing connectivity for epoch 173
    computing connectivity for epoch 174
    computing connectivity for epoch 175
    computing connectivity for epoch 176
    computing connectivity for epoch 177
    computing connectivity for epoch 178
    computing connectivity for epoch 179
    computing connectivity for epoch 180
    computing connectivity for epoch 181
    computing connectivity for epoch 182
    computing connectivity for epoch 183
    computing connectivity for epoch 184
    computing connectivity for epoch 185
    computing connectivity for epoch 186
    computing connectivity for epoch 187
    computing connectivity for epoch 188
    computing connectivity for epoch 189
    computing connectivity for epoch 190
    computing connectivity for epoch 191
    computing connectivity for epoch 192
    computing connectivity for epoch 193
    computing connectivity for epoch 194
    computing connectivity for epoch 195
    computing connectivity for epoch 196
    computing connectivity for epoch 197
    computing connectivity for epoch 198
    computing connectivity for epoch 199
    computing connectivity for epoch 200
    computing connectivity for epoch 201
    computing connectivity for epoch 202
    computing connectivity for epoch 203
    computing connectivity for epoch 204
    computing connectivity for epoch 205
    computing connectivity for epoch 206
    computing connectivity for epoch 207
    computing connectivity for epoch 208
    computing connectivity for epoch 209
    computing connectivity for epoch 210
    computing connectivity for epoch 211
    computing connectivity for epoch 212
    computing connectivity for epoch 213
    computing connectivity for epoch 214
    computing connectivity for epoch 215
    computing connectivity for epoch 216
    computing connectivity for epoch 217
    computing connectivity for epoch 218
    computing connectivity for epoch 219
    computing connectivity for epoch 220
    computing connectivity for epoch 221
    computing connectivity for epoch 222
    computing connectivity for epoch 223
    computing connectivity for epoch 224
    computing connectivity for epoch 225
    computing connectivity for epoch 226
    computing connectivity for epoch 227
    computing connectivity for epoch 228
    computing connectivity for epoch 229
    computing connectivity for epoch 230
    computing connectivity for epoch 231
    computing connectivity for epoch 232
    computing connectivity for epoch 233
    computing connectivity for epoch 234
    computing connectivity for epoch 235
    computing connectivity for epoch 236
    computing connectivity for epoch 237
    computing connectivity for epoch 238
    computing connectivity for epoch 239
    computing connectivity for epoch 240
    computing connectivity for epoch 241
    computing connectivity for epoch 242
    computing connectivity for epoch 243
    computing connectivity for epoch 244
    computing connectivity for epoch 245
    computing connectivity for epoch 246
    computing connectivity for epoch 247
    computing connectivity for epoch 248
    computing connectivity for epoch 249
    computing connectivity for epoch 250
    computing connectivity for epoch 251
    computing connectivity for epoch 252
    computing connectivity for epoch 253
    computing connectivity for epoch 254
    computing connectivity for epoch 255
    computing connectivity for epoch 256
    computing connectivity for epoch 257
    computing connectivity for epoch 258
    computing connectivity for epoch 259
    computing connectivity for epoch 260
    computing connectivity for epoch 261
    computing connectivity for epoch 262
    computing connectivity for epoch 263
    computing connectivity for epoch 264
    computing connectivity for epoch 265
    computing connectivity for epoch 266
    computing connectivity for epoch 267
    computing connectivity for epoch 268
    computing connectivity for epoch 269
    computing connectivity for epoch 270
    computing connectivity for epoch 271
    computing connectivity for epoch 272
    computing connectivity for epoch 273
    computing connectivity for epoch 274
    computing connectivity for epoch 275
    computing connectivity for epoch 276
    computing connectivity for epoch 277
    computing connectivity for epoch 278
    computing connectivity for epoch 279
    computing connectivity for epoch 280
    computing connectivity for epoch 281
    computing connectivity for epoch 282
    computing connectivity for epoch 283
    computing connectivity for epoch 284
    computing connectivity for epoch 285
    computing connectivity for epoch 286
    computing connectivity for epoch 287
    computing connectivity for epoch 288
    computing connectivity for epoch 289
    computing connectivity for epoch 290
    computing connectivity for epoch 291
    computing connectivity for epoch 292
    computing connectivity for epoch 293
    computing connectivity for epoch 294
    computing connectivity for epoch 295
    computing connectivity for epoch 296
    computing connectivity for epoch 297
    computing connectivity for epoch 298
    computing connectivity for epoch 299
    computing connectivity for epoch 300
[Connectivity computation done]
Connectivity computation...
    computing connectivity for 5 connections
    using t=0.000s..9.996s for estimation (2500 points)
    frequencies: 9.0Hz..11.0Hz (21 points)
    connectivity scores will be averaged for each band
    Using multitaper spectrum estimation with 7 DPSS windows
    the following metrics will be computed: DPLI
    computing connectivity for epoch 1
    computing connectivity for epoch 2
    computing connectivity for epoch 3
    computing connectivity for epoch 4
    computing connectivity for epoch 5
    computing connectivity for epoch 6
    computing connectivity for epoch 7
    computing connectivity for epoch 8
    computing connectivity for epoch 9
    computing connectivity for epoch 10
    computing connectivity for epoch 11
    computing connectivity for epoch 12
    computing connectivity for epoch 13
    computing connectivity for epoch 14
    computing connectivity for epoch 15
    computing connectivity for epoch 16
    computing connectivity for epoch 17
    computing connectivity for epoch 18
    computing connectivity for epoch 19
    computing connectivity for epoch 20
    computing connectivity for epoch 21
    computing connectivity for epoch 22
    computing connectivity for epoch 23
    computing connectivity for epoch 24
    computing connectivity for epoch 25
    computing connectivity for epoch 26
    computing connectivity for epoch 27
    computing connectivity for epoch 28
    computing connectivity for epoch 29
    computing connectivity for epoch 30
    computing connectivity for epoch 31
    computing connectivity for epoch 32
    computing connectivity for epoch 33
    computing connectivity for epoch 34
    computing connectivity for epoch 35
    computing connectivity for epoch 36
    computing connectivity for epoch 37
    computing connectivity for epoch 38
    computing connectivity for epoch 39
    computing connectivity for epoch 40
    computing connectivity for epoch 41
    computing connectivity for epoch 42
    computing connectivity for epoch 43
    computing connectivity for epoch 44
    computing connectivity for epoch 45
    computing connectivity for epoch 46
    computing connectivity for epoch 47
    computing connectivity for epoch 48
    computing connectivity for epoch 49
    computing connectivity for epoch 50
    computing connectivity for epoch 51
    computing connectivity for epoch 52
    computing connectivity for epoch 53
    computing connectivity for epoch 54
    computing connectivity for epoch 55
    computing connectivity for epoch 56
    computing connectivity for epoch 57
    computing connectivity for epoch 58
    computing connectivity for epoch 59
    computing connectivity for epoch 60
    computing connectivity for epoch 61
    computing connectivity for epoch 62
    computing connectivity for epoch 63
    computing connectivity for epoch 64
    computing connectivity for epoch 65
    computing connectivity for epoch 66
    computing connectivity for epoch 67
    computing connectivity for epoch 68
    computing connectivity for epoch 69
    computing connectivity for epoch 70
    computing connectivity for epoch 71
    computing connectivity for epoch 72
    computing connectivity for epoch 73
    computing connectivity for epoch 74
    computing connectivity for epoch 75
    computing connectivity for epoch 76
    computing connectivity for epoch 77
    computing connectivity for epoch 78
    computing connectivity for epoch 79
    computing connectivity for epoch 80
    computing connectivity for epoch 81
    computing connectivity for epoch 82
    computing connectivity for epoch 83
    computing connectivity for epoch 84
    computing connectivity for epoch 85
    computing connectivity for epoch 86
    computing connectivity for epoch 87
    computing connectivity for epoch 88
    computing connectivity for epoch 89
    computing connectivity for epoch 90
    computing connectivity for epoch 91
    computing connectivity for epoch 92
    computing connectivity for epoch 93
    computing connectivity for epoch 94
    computing connectivity for epoch 95
    computing connectivity for epoch 96
    computing connectivity for epoch 97
    computing connectivity for epoch 98
    computing connectivity for epoch 99
    computing connectivity for epoch 100
    computing connectivity for epoch 101
    computing connectivity for epoch 102
    computing connectivity for epoch 103
    computing connectivity for epoch 104
    computing connectivity for epoch 105
    computing connectivity for epoch 106
    computing connectivity for epoch 107
    computing connectivity for epoch 108
    computing connectivity for epoch 109
    computing connectivity for epoch 110
    computing connectivity for epoch 111
    computing connectivity for epoch 112
    computing connectivity for epoch 113
    computing connectivity for epoch 114
    computing connectivity for epoch 115
    computing connectivity for epoch 116
    computing connectivity for epoch 117
    computing connectivity for epoch 118
    computing connectivity for epoch 119
    computing connectivity for epoch 120
    computing connectivity for epoch 121
    computing connectivity for epoch 122
    computing connectivity for epoch 123
    computing connectivity for epoch 124
    computing connectivity for epoch 125
    computing connectivity for epoch 126
    computing connectivity for epoch 127
    computing connectivity for epoch 128
    computing connectivity for epoch 129
    computing connectivity for epoch 130
    computing connectivity for epoch 131
    computing connectivity for epoch 132
    computing connectivity for epoch 133
    computing connectivity for epoch 134
    computing connectivity for epoch 135
    computing connectivity for epoch 136
    computing connectivity for epoch 137
    computing connectivity for epoch 138
    computing connectivity for epoch 139
    computing connectivity for epoch 140
    computing connectivity for epoch 141
    computing connectivity for epoch 142
    computing connectivity for epoch 143
    computing connectivity for epoch 144
    computing connectivity for epoch 145
    computing connectivity for epoch 146
    computing connectivity for epoch 147
    computing connectivity for epoch 148
    computing connectivity for epoch 149
    computing connectivity for epoch 150
    computing connectivity for epoch 151
    computing connectivity for epoch 152
    computing connectivity for epoch 153
    computing connectivity for epoch 154
    computing connectivity for epoch 155
    computing connectivity for epoch 156
    computing connectivity for epoch 157
    computing connectivity for epoch 158
    computing connectivity for epoch 159
    computing connectivity for epoch 160
    computing connectivity for epoch 161
    computing connectivity for epoch 162
    computing connectivity for epoch 163
    computing connectivity for epoch 164
    computing connectivity for epoch 165
    computing connectivity for epoch 166
    computing connectivity for epoch 167
    computing connectivity for epoch 168
    computing connectivity for epoch 169
    computing connectivity for epoch 170
    computing connectivity for epoch 171
    computing connectivity for epoch 172
    computing connectivity for epoch 173
    computing connectivity for epoch 174
    computing connectivity for epoch 175
    computing connectivity for epoch 176
    computing connectivity for epoch 177
    computing connectivity for epoch 178
    computing connectivity for epoch 179
    computing connectivity for epoch 180
    computing connectivity for epoch 181
    computing connectivity for epoch 182
    computing connectivity for epoch 183
    computing connectivity for epoch 184
    computing connectivity for epoch 185
    computing connectivity for epoch 186
    computing connectivity for epoch 187
    computing connectivity for epoch 188
    computing connectivity for epoch 189
    computing connectivity for epoch 190
    computing connectivity for epoch 191
    computing connectivity for epoch 192
    computing connectivity for epoch 193
    computing connectivity for epoch 194
    computing connectivity for epoch 195
    computing connectivity for epoch 196
    computing connectivity for epoch 197
    computing connectivity for epoch 198
    computing connectivity for epoch 199
    computing connectivity for epoch 200
    computing connectivity for epoch 201
    computing connectivity for epoch 202
    computing connectivity for epoch 203
    computing connectivity for epoch 204
    computing connectivity for epoch 205
    computing connectivity for epoch 206
    computing connectivity for epoch 207
    computing connectivity for epoch 208
    computing connectivity for epoch 209
    computing connectivity for epoch 210
    computing connectivity for epoch 211
    computing connectivity for epoch 212
    computing connectivity for epoch 213
    computing connectivity for epoch 214
    computing connectivity for epoch 215
    computing connectivity for epoch 216
    computing connectivity for epoch 217
    computing connectivity for epoch 218
    computing connectivity for epoch 219
    computing connectivity for epoch 220
    computing connectivity for epoch 221
    computing connectivity for epoch 222
    computing connectivity for epoch 223
    computing connectivity for epoch 224
    computing connectivity for epoch 225
    computing connectivity for epoch 226
    computing connectivity for epoch 227
    computing connectivity for epoch 228
    computing connectivity for epoch 229
    computing connectivity for epoch 230
    computing connectivity for epoch 231
    computing connectivity for epoch 232
    computing connectivity for epoch 233
    computing connectivity for epoch 234
    computing connectivity for epoch 235
    computing connectivity for epoch 236
    computing connectivity for epoch 237
    computing connectivity for epoch 238
    computing connectivity for epoch 239
    computing connectivity for epoch 240
    computing connectivity for epoch 241
    computing connectivity for epoch 242
    computing connectivity for epoch 243
    computing connectivity for epoch 244
    computing connectivity for epoch 245
    computing connectivity for epoch 246
    computing connectivity for epoch 247
    computing connectivity for epoch 248
    computing connectivity for epoch 249
    computing connectivity for epoch 250
    computing connectivity for epoch 251
    computing connectivity for epoch 252
    computing connectivity for epoch 253
    computing connectivity for epoch 254
    computing connectivity for epoch 255
    computing connectivity for epoch 256
    computing connectivity for epoch 257
    computing connectivity for epoch 258
    computing connectivity for epoch 259
    computing connectivity for epoch 260
    computing connectivity for epoch 261
    computing connectivity for epoch 262
    computing connectivity for epoch 263
    computing connectivity for epoch 264
    computing connectivity for epoch 265
    computing connectivity for epoch 266
    computing connectivity for epoch 267
    computing connectivity for epoch 268
    computing connectivity for epoch 269
    computing connectivity for epoch 270
    computing connectivity for epoch 271
    computing connectivity for epoch 272
    computing connectivity for epoch 273
    computing connectivity for epoch 274
    computing connectivity for epoch 275
    computing connectivity for epoch 276
    computing connectivity for epoch 277
    computing connectivity for epoch 278
    computing connectivity for epoch 279
    computing connectivity for epoch 280
    computing connectivity for epoch 281
    computing connectivity for epoch 282
    computing connectivity for epoch 283
    computing connectivity for epoch 284
    computing connectivity for epoch 285
    computing connectivity for epoch 286
    computing connectivity for epoch 287
    computing connectivity for epoch 288
    computing connectivity for epoch 289
    computing connectivity for epoch 290
    computing connectivity for epoch 291
    computing connectivity for epoch 292
    computing connectivity for epoch 293
    computing connectivity for epoch 294
    computing connectivity for epoch 295
    computing connectivity for epoch 296
    computing connectivity for epoch 297
    computing connectivity for epoch 298
    computing connectivity for epoch 299
    computing connectivity for epoch 300
[Connectivity computation done]

The estimated connectivites are shown in the figure below, which provides insight into the differences between PLI/wPLI, and dPLI.

Similarities Of All Measures

  • Capture presence of connectivity in same situations (phase difference of \(\pm\frac{\pi}{2}\))

  • Do not predict connectivity when phase difference is a multiple of \(\pi\)

  • Bounded between \(0\) and \(1\)

How dPLI is Different Than PLI/wPLI

  • Null connectivity is \(0\) for PLI and wPLI, but \(0.5\) for dPLI

  • dPLI differentiates whether the reference signal is leading or lagging the other signal (lagging if \(0 <= dPlI < 0.5\), leading if \(0.5 < dPLI <= 1.0\))

x = np.arange(5)

plt.figure()
plt.bar(x - 0.2, conn[0], 0.2, align='center', label="PLI")
plt.bar(x, conn[1], 0.2, align='center', label="wPLI")
plt.bar(x + 0.2, conn[2], 0.2, align='center', label="dPLI")

plt.title("Connectivity Estimation Comparison")
plt.xticks(x, (r"$-\pi$", r"$-\pi/2$", r"$0$", r"$\pi/2$", r"$\pi$"))
plt.legend()
plt.xlabel("Phase Difference")
plt.ylabel("Estimated Connectivity")

plt.show()
Connectivity Estimation Comparison

Robustness to Outliers and Noise with wPLI#

The previous experiment illustrated the advantages conferred by dPLI when differentiating leading and lagging phase relationships. This experiment will now focus on understanding the advantages of wPLI, and explore how it extends upon PLI.

The main difference between PLI and wPLI is in how different phase relationships are weighted. In PLI, phase differences are weighted as \(-1\) or \(1\) according to their sign. In wPLI, phase differences are weighted based on their value, meaning that phase differences closer to \(\pm\frac{\pi}{2}\) are weighted more heavily than those close to \(0\) or any other multiple of \(\pi\).

This avoids a discontinuity at the transition between positive and negative phase, treating all phase differences near this transition in a similar way. This provides some robustness against outliers and noise when estimating connectivity. For instance, volume conduction can distort EEG/MEG recordings, wherein signals emanating from the same neural source will be picked up by multiple sensors on the scalp. This can effect connectivity estimations, bringing the relative phase differences between two signals close to \(0\). wPLI minimizes the contribution of phase relationships that are small but non-zero (and may thus be attributed to volume conduciton), while PLI weighs these in the same way as phase relationships of \(\pm\frac{\pi}{2}\).

To demonstrate this, we recreate a result from (Vinck et al, 2011) 2. Two sinusoids are simulated, where the phase difference for half of the epochs is \(\frac{\pi}{2}\), and is \(-\frac{\pi}{100}\) for the others. We also explore the effect of applying uniform noise to this phase difference.

n_noise = 41  # amount of noise amplitude samples in [0, 4]
data = [[]]

# Generate reference
for _ in range(n_e):
    data[0].append(np.sin(2 * np.pi * f * t))

A_list = np.linspace(0, 4, n_noise)

for A in A_list:
    sig = []
    # Generate other signal
    for _ in range(int(n_e / 2)):  # phase difference -pi/100
        sig.append(np.sin(2 * np.pi * f * t + np.pi /
                   100 + A * np.random.uniform(-1, 1)))
    for _ in range(int(n_e / 2), n_e):  # phase difference pi/2
        sig.append(np.sin(2 * np.pi * f * t - np.pi /
                   2 + A * np.random.uniform(-1, 1)))
    data.append(sig)

data = np.swapaxes(np.array(data), 0, 1)

# Visualize the data
fig, ax = plt.subplots(1, 2, figsize=(12, 5), sharey=True)
ax[0].plot(t[:10], data[0, 0, :10], label="Reference")
ax[0].plot(t[:10], data[1, 1, :10])

ax[0].set_title(r"Phase Lagging ($-\pi/100$ Phase Difference)")
ax[0].set_xlabel("Time (s)")
ax[0].set_ylabel("Signal")
ax[0].legend()

ax[1].plot(t[:fs], data[0, 0, :fs], label="Reference")
ax[1].plot(t[:fs], data[-1, 1, :fs])
ax[1].set_title(r"Phase Leading ($\pi/2$ Phase Difference)")
ax[1].set_xlabel("Time (s)")

plt.show()
Phase Lagging ($-\pi/100$ Phase Difference), Phase Leading ($\pi/2$ Phase Difference)

We can now compute PLI and wPLI

conn = []
indices = ([0] * n_noise, np.arange(1, n_noise + 1))
for method in ['pli', 'wpli']:
    conn.append(
        spectral_connectivity_epochs(
            data, method=method, sfreq=fs, indices=indices,
            fmin=9, fmax=11, faverage=True).get_data()[:, 0])
conn = np.array(conn)
Connectivity computation...
    computing connectivity for 41 connections
    using t=0.000s..9.996s for estimation (2500 points)
    frequencies: 9.0Hz..11.0Hz (21 points)
    connectivity scores will be averaged for each band
    Using multitaper spectrum estimation with 7 DPSS windows
    the following metrics will be computed: PLI
    computing connectivity for epoch 1
    computing connectivity for epoch 2
    computing connectivity for epoch 3
    computing connectivity for epoch 4
    computing connectivity for epoch 5
    computing connectivity for epoch 6
    computing connectivity for epoch 7
    computing connectivity for epoch 8
    computing connectivity for epoch 9
    computing connectivity for epoch 10
    computing connectivity for epoch 11
    computing connectivity for epoch 12
    computing connectivity for epoch 13
    computing connectivity for epoch 14
    computing connectivity for epoch 15
    computing connectivity for epoch 16
    computing connectivity for epoch 17
    computing connectivity for epoch 18
    computing connectivity for epoch 19
    computing connectivity for epoch 20
    computing connectivity for epoch 21
    computing connectivity for epoch 22
    computing connectivity for epoch 23
    computing connectivity for epoch 24
    computing connectivity for epoch 25
    computing connectivity for epoch 26
    computing connectivity for epoch 27
    computing connectivity for epoch 28
    computing connectivity for epoch 29
    computing connectivity for epoch 30
    computing connectivity for epoch 31
    computing connectivity for epoch 32
    computing connectivity for epoch 33
    computing connectivity for epoch 34
    computing connectivity for epoch 35
    computing connectivity for epoch 36
    computing connectivity for epoch 37
    computing connectivity for epoch 38
    computing connectivity for epoch 39
    computing connectivity for epoch 40
    computing connectivity for epoch 41
    computing connectivity for epoch 42
    computing connectivity for epoch 43
    computing connectivity for epoch 44
    computing connectivity for epoch 45
    computing connectivity for epoch 46
    computing connectivity for epoch 47
    computing connectivity for epoch 48
    computing connectivity for epoch 49
    computing connectivity for epoch 50
    computing connectivity for epoch 51
    computing connectivity for epoch 52
    computing connectivity for epoch 53
    computing connectivity for epoch 54
    computing connectivity for epoch 55
    computing connectivity for epoch 56
    computing connectivity for epoch 57
    computing connectivity for epoch 58
    computing connectivity for epoch 59
    computing connectivity for epoch 60
    computing connectivity for epoch 61
    computing connectivity for epoch 62
    computing connectivity for epoch 63
    computing connectivity for epoch 64
    computing connectivity for epoch 65
    computing connectivity for epoch 66
    computing connectivity for epoch 67
    computing connectivity for epoch 68
    computing connectivity for epoch 69
    computing connectivity for epoch 70
    computing connectivity for epoch 71
    computing connectivity for epoch 72
    computing connectivity for epoch 73
    computing connectivity for epoch 74
    computing connectivity for epoch 75
    computing connectivity for epoch 76
    computing connectivity for epoch 77
    computing connectivity for epoch 78
    computing connectivity for epoch 79
    computing connectivity for epoch 80
    computing connectivity for epoch 81
    computing connectivity for epoch 82
    computing connectivity for epoch 83
    computing connectivity for epoch 84
    computing connectivity for epoch 85
    computing connectivity for epoch 86
    computing connectivity for epoch 87
    computing connectivity for epoch 88
    computing connectivity for epoch 89
    computing connectivity for epoch 90
    computing connectivity for epoch 91
    computing connectivity for epoch 92
    computing connectivity for epoch 93
    computing connectivity for epoch 94
    computing connectivity for epoch 95
    computing connectivity for epoch 96
    computing connectivity for epoch 97
    computing connectivity for epoch 98
    computing connectivity for epoch 99
    computing connectivity for epoch 100
    computing connectivity for epoch 101
    computing connectivity for epoch 102
    computing connectivity for epoch 103
    computing connectivity for epoch 104
    computing connectivity for epoch 105
    computing connectivity for epoch 106
    computing connectivity for epoch 107
    computing connectivity for epoch 108
    computing connectivity for epoch 109
    computing connectivity for epoch 110
    computing connectivity for epoch 111
    computing connectivity for epoch 112
    computing connectivity for epoch 113
    computing connectivity for epoch 114
    computing connectivity for epoch 115
    computing connectivity for epoch 116
    computing connectivity for epoch 117
    computing connectivity for epoch 118
    computing connectivity for epoch 119
    computing connectivity for epoch 120
    computing connectivity for epoch 121
    computing connectivity for epoch 122
    computing connectivity for epoch 123
    computing connectivity for epoch 124
    computing connectivity for epoch 125
    computing connectivity for epoch 126
    computing connectivity for epoch 127
    computing connectivity for epoch 128
    computing connectivity for epoch 129
    computing connectivity for epoch 130
    computing connectivity for epoch 131
    computing connectivity for epoch 132
    computing connectivity for epoch 133
    computing connectivity for epoch 134
    computing connectivity for epoch 135
    computing connectivity for epoch 136
    computing connectivity for epoch 137
    computing connectivity for epoch 138
    computing connectivity for epoch 139
    computing connectivity for epoch 140
    computing connectivity for epoch 141
    computing connectivity for epoch 142
    computing connectivity for epoch 143
    computing connectivity for epoch 144
    computing connectivity for epoch 145
    computing connectivity for epoch 146
    computing connectivity for epoch 147
    computing connectivity for epoch 148
    computing connectivity for epoch 149
    computing connectivity for epoch 150
    computing connectivity for epoch 151
    computing connectivity for epoch 152
    computing connectivity for epoch 153
    computing connectivity for epoch 154
    computing connectivity for epoch 155
    computing connectivity for epoch 156
    computing connectivity for epoch 157
    computing connectivity for epoch 158
    computing connectivity for epoch 159
    computing connectivity for epoch 160
    computing connectivity for epoch 161
    computing connectivity for epoch 162
    computing connectivity for epoch 163
    computing connectivity for epoch 164
    computing connectivity for epoch 165
    computing connectivity for epoch 166
    computing connectivity for epoch 167
    computing connectivity for epoch 168
    computing connectivity for epoch 169
    computing connectivity for epoch 170
    computing connectivity for epoch 171
    computing connectivity for epoch 172
    computing connectivity for epoch 173
    computing connectivity for epoch 174
    computing connectivity for epoch 175
    computing connectivity for epoch 176
    computing connectivity for epoch 177
    computing connectivity for epoch 178
    computing connectivity for epoch 179
    computing connectivity for epoch 180
    computing connectivity for epoch 181
    computing connectivity for epoch 182
    computing connectivity for epoch 183
    computing connectivity for epoch 184
    computing connectivity for epoch 185
    computing connectivity for epoch 186
    computing connectivity for epoch 187
    computing connectivity for epoch 188
    computing connectivity for epoch 189
    computing connectivity for epoch 190
    computing connectivity for epoch 191
    computing connectivity for epoch 192
    computing connectivity for epoch 193
    computing connectivity for epoch 194
    computing connectivity for epoch 195
    computing connectivity for epoch 196
    computing connectivity for epoch 197
    computing connectivity for epoch 198
    computing connectivity for epoch 199
    computing connectivity for epoch 200
    computing connectivity for epoch 201
    computing connectivity for epoch 202
    computing connectivity for epoch 203
    computing connectivity for epoch 204
    computing connectivity for epoch 205
    computing connectivity for epoch 206
    computing connectivity for epoch 207
    computing connectivity for epoch 208
    computing connectivity for epoch 209
    computing connectivity for epoch 210
    computing connectivity for epoch 211
    computing connectivity for epoch 212
    computing connectivity for epoch 213
    computing connectivity for epoch 214
    computing connectivity for epoch 215
    computing connectivity for epoch 216
    computing connectivity for epoch 217
    computing connectivity for epoch 218
    computing connectivity for epoch 219
    computing connectivity for epoch 220
    computing connectivity for epoch 221
    computing connectivity for epoch 222
    computing connectivity for epoch 223
    computing connectivity for epoch 224
    computing connectivity for epoch 225
    computing connectivity for epoch 226
    computing connectivity for epoch 227
    computing connectivity for epoch 228
    computing connectivity for epoch 229
    computing connectivity for epoch 230
    computing connectivity for epoch 231
    computing connectivity for epoch 232
    computing connectivity for epoch 233
    computing connectivity for epoch 234
    computing connectivity for epoch 235
    computing connectivity for epoch 236
    computing connectivity for epoch 237
    computing connectivity for epoch 238
    computing connectivity for epoch 239
    computing connectivity for epoch 240
    computing connectivity for epoch 241
    computing connectivity for epoch 242
    computing connectivity for epoch 243
    computing connectivity for epoch 244
    computing connectivity for epoch 245
    computing connectivity for epoch 246
    computing connectivity for epoch 247
    computing connectivity for epoch 248
    computing connectivity for epoch 249
    computing connectivity for epoch 250
    computing connectivity for epoch 251
    computing connectivity for epoch 252
    computing connectivity for epoch 253
    computing connectivity for epoch 254
    computing connectivity for epoch 255
    computing connectivity for epoch 256
    computing connectivity for epoch 257
    computing connectivity for epoch 258
    computing connectivity for epoch 259
    computing connectivity for epoch 260
    computing connectivity for epoch 261
    computing connectivity for epoch 262
    computing connectivity for epoch 263
    computing connectivity for epoch 264
    computing connectivity for epoch 265
    computing connectivity for epoch 266
    computing connectivity for epoch 267
    computing connectivity for epoch 268
    computing connectivity for epoch 269
    computing connectivity for epoch 270
    computing connectivity for epoch 271
    computing connectivity for epoch 272
    computing connectivity for epoch 273
    computing connectivity for epoch 274
    computing connectivity for epoch 275
    computing connectivity for epoch 276
    computing connectivity for epoch 277
    computing connectivity for epoch 278
    computing connectivity for epoch 279
    computing connectivity for epoch 280
    computing connectivity for epoch 281
    computing connectivity for epoch 282
    computing connectivity for epoch 283
    computing connectivity for epoch 284
    computing connectivity for epoch 285
    computing connectivity for epoch 286
    computing connectivity for epoch 287
    computing connectivity for epoch 288
    computing connectivity for epoch 289
    computing connectivity for epoch 290
    computing connectivity for epoch 291
    computing connectivity for epoch 292
    computing connectivity for epoch 293
    computing connectivity for epoch 294
    computing connectivity for epoch 295
    computing connectivity for epoch 296
    computing connectivity for epoch 297
    computing connectivity for epoch 298
    computing connectivity for epoch 299
    computing connectivity for epoch 300
[Connectivity computation done]
Connectivity computation...
    computing connectivity for 41 connections
    using t=0.000s..9.996s for estimation (2500 points)
    frequencies: 9.0Hz..11.0Hz (21 points)
    connectivity scores will be averaged for each band
    Using multitaper spectrum estimation with 7 DPSS windows
    the following metrics will be computed: WPLI
    computing connectivity for epoch 1
    computing connectivity for epoch 2
    computing connectivity for epoch 3
    computing connectivity for epoch 4
    computing connectivity for epoch 5
    computing connectivity for epoch 6
    computing connectivity for epoch 7
    computing connectivity for epoch 8
    computing connectivity for epoch 9
    computing connectivity for epoch 10
    computing connectivity for epoch 11
    computing connectivity for epoch 12
    computing connectivity for epoch 13
    computing connectivity for epoch 14
    computing connectivity for epoch 15
    computing connectivity for epoch 16
    computing connectivity for epoch 17
    computing connectivity for epoch 18
    computing connectivity for epoch 19
    computing connectivity for epoch 20
    computing connectivity for epoch 21
    computing connectivity for epoch 22
    computing connectivity for epoch 23
    computing connectivity for epoch 24
    computing connectivity for epoch 25
    computing connectivity for epoch 26
    computing connectivity for epoch 27
    computing connectivity for epoch 28
    computing connectivity for epoch 29
    computing connectivity for epoch 30
    computing connectivity for epoch 31
    computing connectivity for epoch 32
    computing connectivity for epoch 33
    computing connectivity for epoch 34
    computing connectivity for epoch 35
    computing connectivity for epoch 36
    computing connectivity for epoch 37
    computing connectivity for epoch 38
    computing connectivity for epoch 39
    computing connectivity for epoch 40
    computing connectivity for epoch 41
    computing connectivity for epoch 42
    computing connectivity for epoch 43
    computing connectivity for epoch 44
    computing connectivity for epoch 45
    computing connectivity for epoch 46
    computing connectivity for epoch 47
    computing connectivity for epoch 48
    computing connectivity for epoch 49
    computing connectivity for epoch 50
    computing connectivity for epoch 51
    computing connectivity for epoch 52
    computing connectivity for epoch 53
    computing connectivity for epoch 54
    computing connectivity for epoch 55
    computing connectivity for epoch 56
    computing connectivity for epoch 57
    computing connectivity for epoch 58
    computing connectivity for epoch 59
    computing connectivity for epoch 60
    computing connectivity for epoch 61
    computing connectivity for epoch 62
    computing connectivity for epoch 63
    computing connectivity for epoch 64
    computing connectivity for epoch 65
    computing connectivity for epoch 66
    computing connectivity for epoch 67
    computing connectivity for epoch 68
    computing connectivity for epoch 69
    computing connectivity for epoch 70
    computing connectivity for epoch 71
    computing connectivity for epoch 72
    computing connectivity for epoch 73
    computing connectivity for epoch 74
    computing connectivity for epoch 75
    computing connectivity for epoch 76
    computing connectivity for epoch 77
    computing connectivity for epoch 78
    computing connectivity for epoch 79
    computing connectivity for epoch 80
    computing connectivity for epoch 81
    computing connectivity for epoch 82
    computing connectivity for epoch 83
    computing connectivity for epoch 84
    computing connectivity for epoch 85
    computing connectivity for epoch 86
    computing connectivity for epoch 87
    computing connectivity for epoch 88
    computing connectivity for epoch 89
    computing connectivity for epoch 90
    computing connectivity for epoch 91
    computing connectivity for epoch 92
    computing connectivity for epoch 93
    computing connectivity for epoch 94
    computing connectivity for epoch 95
    computing connectivity for epoch 96
    computing connectivity for epoch 97
    computing connectivity for epoch 98
    computing connectivity for epoch 99
    computing connectivity for epoch 100
    computing connectivity for epoch 101
    computing connectivity for epoch 102
    computing connectivity for epoch 103
    computing connectivity for epoch 104
    computing connectivity for epoch 105
    computing connectivity for epoch 106
    computing connectivity for epoch 107
    computing connectivity for epoch 108
    computing connectivity for epoch 109
    computing connectivity for epoch 110
    computing connectivity for epoch 111
    computing connectivity for epoch 112
    computing connectivity for epoch 113
    computing connectivity for epoch 114
    computing connectivity for epoch 115
    computing connectivity for epoch 116
    computing connectivity for epoch 117
    computing connectivity for epoch 118
    computing connectivity for epoch 119
    computing connectivity for epoch 120
    computing connectivity for epoch 121
    computing connectivity for epoch 122
    computing connectivity for epoch 123
    computing connectivity for epoch 124
    computing connectivity for epoch 125
    computing connectivity for epoch 126
    computing connectivity for epoch 127
    computing connectivity for epoch 128
    computing connectivity for epoch 129
    computing connectivity for epoch 130
    computing connectivity for epoch 131
    computing connectivity for epoch 132
    computing connectivity for epoch 133
    computing connectivity for epoch 134
    computing connectivity for epoch 135
    computing connectivity for epoch 136
    computing connectivity for epoch 137
    computing connectivity for epoch 138
    computing connectivity for epoch 139
    computing connectivity for epoch 140
    computing connectivity for epoch 141
    computing connectivity for epoch 142
    computing connectivity for epoch 143
    computing connectivity for epoch 144
    computing connectivity for epoch 145
    computing connectivity for epoch 146
    computing connectivity for epoch 147
    computing connectivity for epoch 148
    computing connectivity for epoch 149
    computing connectivity for epoch 150
    computing connectivity for epoch 151
    computing connectivity for epoch 152
    computing connectivity for epoch 153
    computing connectivity for epoch 154
    computing connectivity for epoch 155
    computing connectivity for epoch 156
    computing connectivity for epoch 157
    computing connectivity for epoch 158
    computing connectivity for epoch 159
    computing connectivity for epoch 160
    computing connectivity for epoch 161
    computing connectivity for epoch 162
    computing connectivity for epoch 163
    computing connectivity for epoch 164
    computing connectivity for epoch 165
    computing connectivity for epoch 166
    computing connectivity for epoch 167
    computing connectivity for epoch 168
    computing connectivity for epoch 169
    computing connectivity for epoch 170
    computing connectivity for epoch 171
    computing connectivity for epoch 172
    computing connectivity for epoch 173
    computing connectivity for epoch 174
    computing connectivity for epoch 175
    computing connectivity for epoch 176
    computing connectivity for epoch 177
    computing connectivity for epoch 178
    computing connectivity for epoch 179
    computing connectivity for epoch 180
    computing connectivity for epoch 181
    computing connectivity for epoch 182
    computing connectivity for epoch 183
    computing connectivity for epoch 184
    computing connectivity for epoch 185
    computing connectivity for epoch 186
    computing connectivity for epoch 187
    computing connectivity for epoch 188
    computing connectivity for epoch 189
    computing connectivity for epoch 190
    computing connectivity for epoch 191
    computing connectivity for epoch 192
    computing connectivity for epoch 193
    computing connectivity for epoch 194
    computing connectivity for epoch 195
    computing connectivity for epoch 196
    computing connectivity for epoch 197
    computing connectivity for epoch 198
    computing connectivity for epoch 199
    computing connectivity for epoch 200
    computing connectivity for epoch 201
    computing connectivity for epoch 202
    computing connectivity for epoch 203
    computing connectivity for epoch 204
    computing connectivity for epoch 205
    computing connectivity for epoch 206
    computing connectivity for epoch 207
    computing connectivity for epoch 208
    computing connectivity for epoch 209
    computing connectivity for epoch 210
    computing connectivity for epoch 211
    computing connectivity for epoch 212
    computing connectivity for epoch 213
    computing connectivity for epoch 214
    computing connectivity for epoch 215
    computing connectivity for epoch 216
    computing connectivity for epoch 217
    computing connectivity for epoch 218
    computing connectivity for epoch 219
    computing connectivity for epoch 220
    computing connectivity for epoch 221
    computing connectivity for epoch 222
    computing connectivity for epoch 223
    computing connectivity for epoch 224
    computing connectivity for epoch 225
    computing connectivity for epoch 226
    computing connectivity for epoch 227
    computing connectivity for epoch 228
    computing connectivity for epoch 229
    computing connectivity for epoch 230
    computing connectivity for epoch 231
    computing connectivity for epoch 232
    computing connectivity for epoch 233
    computing connectivity for epoch 234
    computing connectivity for epoch 235
    computing connectivity for epoch 236
    computing connectivity for epoch 237
    computing connectivity for epoch 238
    computing connectivity for epoch 239
    computing connectivity for epoch 240
    computing connectivity for epoch 241
    computing connectivity for epoch 242
    computing connectivity for epoch 243
    computing connectivity for epoch 244
    computing connectivity for epoch 245
    computing connectivity for epoch 246
    computing connectivity for epoch 247
    computing connectivity for epoch 248
    computing connectivity for epoch 249
    computing connectivity for epoch 250
    computing connectivity for epoch 251
    computing connectivity for epoch 252
    computing connectivity for epoch 253
    computing connectivity for epoch 254
    computing connectivity for epoch 255
    computing connectivity for epoch 256
    computing connectivity for epoch 257
    computing connectivity for epoch 258
    computing connectivity for epoch 259
    computing connectivity for epoch 260
    computing connectivity for epoch 261
    computing connectivity for epoch 262
    computing connectivity for epoch 263
    computing connectivity for epoch 264
    computing connectivity for epoch 265
    computing connectivity for epoch 266
    computing connectivity for epoch 267
    computing connectivity for epoch 268
    computing connectivity for epoch 269
    computing connectivity for epoch 270
    computing connectivity for epoch 271
    computing connectivity for epoch 272
    computing connectivity for epoch 273
    computing connectivity for epoch 274
    computing connectivity for epoch 275
    computing connectivity for epoch 276
    computing connectivity for epoch 277
    computing connectivity for epoch 278
    computing connectivity for epoch 279
    computing connectivity for epoch 280
    computing connectivity for epoch 281
    computing connectivity for epoch 282
    computing connectivity for epoch 283
    computing connectivity for epoch 284
    computing connectivity for epoch 285
    computing connectivity for epoch 286
    computing connectivity for epoch 287
    computing connectivity for epoch 288
    computing connectivity for epoch 289
    computing connectivity for epoch 290
    computing connectivity for epoch 291
    computing connectivity for epoch 292
    computing connectivity for epoch 293
    computing connectivity for epoch 294
    computing connectivity for epoch 295
    computing connectivity for epoch 296
    computing connectivity for epoch 297
    computing connectivity for epoch 298
    computing connectivity for epoch 299
    computing connectivity for epoch 300
[Connectivity computation done]

The results from the simulation are shown in the figure below. In the case without noise, the difference between wPLI and PLI is made obvious. In PLI, no connectivity is detected, as the \(-\frac{\pi}{100}\) phase differences are weighted in the exact same way as the \(\frac{\pi}{2}\) relationships. wPLI is able to avoid the cancellation of the \(\frac{\pi}{2}\) relationships.

As noise gets added, PLI increases since the \(-\frac{\pi}{100}\) relationships are made positive more often than the \(\frac{\pi}{2}\) relationships are made negative. However, wPLI maintains an advantage in its ability to distinguish the underlying structure. Beyond a certain point, the noise dominates any pre-defined structure, and both methods behave similarly, tending toward \(0\). For a more detailed analysis of this result and the properties of wPLI, please refer to (Vinck et al, 2011) 2.

plt.figure()
plt.plot(A_list, conn[0], "o-", label="PLI")
plt.plot(A_list, conn[1], "o-", label="wPLI")
plt.legend()
plt.xlabel("Noise Amplitude")
plt.ylabel("Connectivity Measure")
plt.title("wPLI and PLI Under Increasing Noise")
plt.show()
wPLI and PLI Under Increasing Noise

Demo On MEG Data#

To finish this example, we also quickly demonstrate these methods on some sample MEG data recorded during visual stimulation.

data_path = sample.data_path()
raw_fname = data_path / 'MEG/sample/sample_audvis_filt-0-40_raw.fif'
event_fname = data_path / 'MEG/sample/sample_audvis_filt-0-40_raw-eve.fif'
raw = mne.io.read_raw_fif(raw_fname)
events = mne.read_events(event_fname)


# Select gradiometers
picks = mne.pick_types(raw.info, meg='grad', eeg=False, stim=False, eog=True,
                       exclude='bads')

# Create epochs
event_id, tmin, tmax = 3, -0.2, 1.5  # need a long enough epoch for 5 cycles
epochs = mne.Epochs(raw, events, event_id, tmin, tmax, picks=picks,
                    baseline=(None, 0), reject=dict(grad=4000e-13, eog=150e-6))
epochs.load_data().pick_types(meg='grad')  # just keep MEG and no EOG now

fmin, fmax = 4., 9.  # compute connectivity within 4-9 Hz
sfreq = raw.info['sfreq']  # the sampling frequency
tmin = 0.0  # exclude the baseline period

# Compute PLI, wPLI, and dPLI
con_pli = spectral_connectivity_epochs(
    epochs, method='pli', mode='multitaper', sfreq=sfreq, fmin=fmin,
    fmax=fmax, faverage=True, tmin=tmin, mt_adaptive=False, n_jobs=1)

con_wpli = spectral_connectivity_epochs(
    epochs, method='wpli', mode='multitaper', sfreq=sfreq, fmin=fmin,
    fmax=fmax, faverage=True, tmin=tmin, mt_adaptive=False, n_jobs=1)

con_dpli = spectral_connectivity_epochs(
    epochs, method='dpli', mode='multitaper', sfreq=sfreq, fmin=fmin,
    fmax=fmax, faverage=True, tmin=tmin, mt_adaptive=False, n_jobs=1)
Opening raw data file /home/circleci/mne_data/MNE-sample-data/MEG/sample/sample_audvis_filt-0-40_raw.fif...
    Read a total of 4 projection items:
        PCA-v1 (1 x 102)  idle
        PCA-v2 (1 x 102)  idle
        PCA-v3 (1 x 102)  idle
        Average EEG reference (1 x 60)  idle
    Range : 6450 ... 48149 =     42.956 ...   320.665 secs
Ready.
Not setting metadata
73 matching events found
Setting baseline interval to [-0.19979521315838786, 0.0] sec
Applying baseline correction (mode: mean)
4 projection items activated
Loading data for 73 events and 256 original time points ...
    Rejecting  epoch based on EOG : ['EOG 061']
    Rejecting  epoch based on EOG : ['EOG 061']
    Rejecting  epoch based on EOG : ['EOG 061']
    Rejecting  epoch based on EOG : ['EOG 061']
    Rejecting  epoch based on EOG : ['EOG 061']
    Rejecting  epoch based on EOG : ['EOG 061']
    Rejecting  epoch based on EOG : ['EOG 061']
    Rejecting  epoch based on EOG : ['EOG 061']
    Rejecting  epoch based on EOG : ['EOG 061']
    Rejecting  epoch based on EOG : ['EOG 061']
    Rejecting  epoch based on EOG : ['EOG 061']
    Rejecting  epoch based on EOG : ['EOG 061']
    Rejecting  epoch based on EOG : ['EOG 061']
    Rejecting  epoch based on EOG : ['EOG 061']
    Rejecting  epoch based on EOG : ['EOG 061']
    Rejecting  epoch based on EOG : ['EOG 061']
    Rejecting  epoch based on EOG : ['EOG 061']
    Rejecting  epoch based on EOG : ['EOG 061']
    Rejecting  epoch based on EOG : ['EOG 061']
    Rejecting  epoch based on EOG : ['EOG 061']
    Rejecting  epoch based on EOG : ['EOG 061']
    Rejecting  epoch based on EOG : ['EOG 061']
    Rejecting  epoch based on EOG : ['EOG 061']
    Rejecting  epoch based on EOG : ['EOG 061']
24 bad epochs dropped
Removing projector <Projection | PCA-v1, active : True, n_channels : 102>
Removing projector <Projection | PCA-v2, active : True, n_channels : 102>
Removing projector <Projection | PCA-v3, active : True, n_channels : 102>
Removing projector <Projection | Average EEG reference, active : True, n_channels : 60>
Adding metadata with 3 columns
Connectivity computation...
only using indices for lower-triangular matrix
    computing connectivity for 20503 connections
    using t=0.000s..1.498s for estimation (226 points)
    frequencies: 4.7Hz..8.6Hz (7 points)
    connectivity scores will be averaged for each band
    Using multitaper spectrum estimation with 7 DPSS windows
    the following metrics will be computed: PLI
    computing connectivity for epoch 1
    computing connectivity for epoch 2
    computing connectivity for epoch 3
    computing connectivity for epoch 4
    computing connectivity for epoch 5
    computing connectivity for epoch 6
    computing connectivity for epoch 7
    computing connectivity for epoch 8
    computing connectivity for epoch 9
    computing connectivity for epoch 10
    computing connectivity for epoch 11
    computing connectivity for epoch 12
    computing connectivity for epoch 13
    computing connectivity for epoch 14
    computing connectivity for epoch 15
    computing connectivity for epoch 16
    computing connectivity for epoch 17
    computing connectivity for epoch 18
    computing connectivity for epoch 19
    computing connectivity for epoch 20
    computing connectivity for epoch 21
    computing connectivity for epoch 22
    computing connectivity for epoch 23
    computing connectivity for epoch 24
    computing connectivity for epoch 25
    computing connectivity for epoch 26
    computing connectivity for epoch 27
    computing connectivity for epoch 28
    computing connectivity for epoch 29
    computing connectivity for epoch 30
    computing connectivity for epoch 31
    computing connectivity for epoch 32
    computing connectivity for epoch 33
    computing connectivity for epoch 34
    computing connectivity for epoch 35
    computing connectivity for epoch 36
    computing connectivity for epoch 37
    computing connectivity for epoch 38
    computing connectivity for epoch 39
    computing connectivity for epoch 40
    computing connectivity for epoch 41
    computing connectivity for epoch 42
    computing connectivity for epoch 43
    computing connectivity for epoch 44
    computing connectivity for epoch 45
    computing connectivity for epoch 46
    computing connectivity for epoch 47
    computing connectivity for epoch 48
    computing connectivity for epoch 49
    assembling connectivity matrix
[Connectivity computation done]
Replacing existing metadata with 3 columns
Connectivity computation...
only using indices for lower-triangular matrix
    computing connectivity for 20503 connections
    using t=0.000s..1.498s for estimation (226 points)
    frequencies: 4.7Hz..8.6Hz (7 points)
    connectivity scores will be averaged for each band
    Using multitaper spectrum estimation with 7 DPSS windows
    the following metrics will be computed: WPLI
    computing connectivity for epoch 1
    computing connectivity for epoch 2
    computing connectivity for epoch 3
    computing connectivity for epoch 4
    computing connectivity for epoch 5
    computing connectivity for epoch 6
    computing connectivity for epoch 7
    computing connectivity for epoch 8
    computing connectivity for epoch 9
    computing connectivity for epoch 10
    computing connectivity for epoch 11
    computing connectivity for epoch 12
    computing connectivity for epoch 13
    computing connectivity for epoch 14
    computing connectivity for epoch 15
    computing connectivity for epoch 16
    computing connectivity for epoch 17
    computing connectivity for epoch 18
    computing connectivity for epoch 19
    computing connectivity for epoch 20
    computing connectivity for epoch 21
    computing connectivity for epoch 22
    computing connectivity for epoch 23
    computing connectivity for epoch 24
    computing connectivity for epoch 25
    computing connectivity for epoch 26
    computing connectivity for epoch 27
    computing connectivity for epoch 28
    computing connectivity for epoch 29
    computing connectivity for epoch 30
    computing connectivity for epoch 31
    computing connectivity for epoch 32
    computing connectivity for epoch 33
    computing connectivity for epoch 34
    computing connectivity for epoch 35
    computing connectivity for epoch 36
    computing connectivity for epoch 37
    computing connectivity for epoch 38
    computing connectivity for epoch 39
    computing connectivity for epoch 40
    computing connectivity for epoch 41
    computing connectivity for epoch 42
    computing connectivity for epoch 43
    computing connectivity for epoch 44
    computing connectivity for epoch 45
    computing connectivity for epoch 46
    computing connectivity for epoch 47
    computing connectivity for epoch 48
    computing connectivity for epoch 49
    assembling connectivity matrix
[Connectivity computation done]
Replacing existing metadata with 3 columns
Connectivity computation...
only using indices for lower-triangular matrix
    computing connectivity for 20503 connections
    using t=0.000s..1.498s for estimation (226 points)
    frequencies: 4.7Hz..8.6Hz (7 points)
    connectivity scores will be averaged for each band
    Using multitaper spectrum estimation with 7 DPSS windows
    the following metrics will be computed: DPLI
    computing connectivity for epoch 1
    computing connectivity for epoch 2
    computing connectivity for epoch 3
    computing connectivity for epoch 4
    computing connectivity for epoch 5
    computing connectivity for epoch 6
    computing connectivity for epoch 7
    computing connectivity for epoch 8
    computing connectivity for epoch 9
    computing connectivity for epoch 10
    computing connectivity for epoch 11
    computing connectivity for epoch 12
    computing connectivity for epoch 13
    computing connectivity for epoch 14
    computing connectivity for epoch 15
    computing connectivity for epoch 16
    computing connectivity for epoch 17
    computing connectivity for epoch 18
    computing connectivity for epoch 19
    computing connectivity for epoch 20
    computing connectivity for epoch 21
    computing connectivity for epoch 22
    computing connectivity for epoch 23
    computing connectivity for epoch 24
    computing connectivity for epoch 25
    computing connectivity for epoch 26
    computing connectivity for epoch 27
    computing connectivity for epoch 28
    computing connectivity for epoch 29
    computing connectivity for epoch 30
    computing connectivity for epoch 31
    computing connectivity for epoch 32
    computing connectivity for epoch 33
    computing connectivity for epoch 34
    computing connectivity for epoch 35
    computing connectivity for epoch 36
    computing connectivity for epoch 37
    computing connectivity for epoch 38
    computing connectivity for epoch 39
    computing connectivity for epoch 40
    computing connectivity for epoch 41
    computing connectivity for epoch 42
    computing connectivity for epoch 43
    computing connectivity for epoch 44
    computing connectivity for epoch 45
    computing connectivity for epoch 46
    computing connectivity for epoch 47
    computing connectivity for epoch 48
    computing connectivity for epoch 49
    assembling connectivity matrix
[Connectivity computation done]

In this example, there is strong connectivity between sensors 190-200 and sensors 110-160.

Moreover, after observing the presence of connectivity, dPLI can be used to ascertain the direction of the phase relationship. Here, it appears that the dPLI connectivity in this area is less than \(0.5\), and thus sensors 190-200 are lagging sensors 110-160.

In keeping with the previous simulation, we can see that wPLI identifies stronger connectivity relationships than PLI. This is due to its robustness against volume conduction effects decreasing the detected connectivity strength, as was mentioned earlier.

fig, axs = plt.subplots(1, 3, figsize=(14, 5), sharey=True)
axs[0].imshow(con_pli.get_data('dense'), vmin=0, vmax=1)
axs[0].set_title("PLI")
axs[0].set_ylabel("Sensor 1")
axs[0].set_xlabel("Sensor 2")

axs[1].imshow(con_wpli.get_data('dense'), vmin=0, vmax=1)
axs[1].set_title("wPLI")
axs[1].set_xlabel("Sensor 2")

im = axs[2].imshow(con_dpli.get_data('dense'), vmin=0, vmax=1)
axs[2].set_title("dPLI")
axs[2].set_xlabel("Sensor 2")

fig.colorbar(im, ax=axs.ravel())
plt.show()
PLI, wPLI, dPLI

Conclusions#

Both wPLI and dPLI are extensions upon the original PLI method, and provide complementary information about underlying connectivity.

  • To identify the presence of an underlying phase relationship, wPLI is the method of choice for most researchers as it provides an improvement in robustness over the original PLI method

  • To know the directionality of the connectivity identified by wPLI, dPLI should be used

Ultimately, these methods work great together, providing a comprehensive estimate of phase-based connectivity.

References#

1(1,2)

Cornelis J. Stam, Guido Nolte, and Andreas Daffertshofer. Phase lag index: assessment of functional connectivity from multi channel EEG and MEG with diminished bias from common sources. Human Brain Mapping, 28(11):1178–1193, 2007. doi:10.1002/hbm.20346.

2(1,2,3,4,5)

Martin Vinck, Robert Oostenveld, Marijn van Wingerden, Franscesco Battaglia, and Cyriel M.A. Pennartz. An improved index of phase-synchronization for electrophysiological data in the presence of volume-conduction, noise and sample-size bias. NeuroImage, 55(4):1548–1565, 2011. doi:10.1016/j.neuroimage.2011.01.055.

3(1,2)

C. J. Stam and E. C. W. van Straaten. Go with the flow: use of a directed phase lag index (dpli) to characterize patterns of phase relations in a large-scale model of brain dynamics. NeuroImage, 62(3):1415–1428, Sep 2012. doi:10.1016/j.neuroimage.2012.05.050.

Total running time of the script: ( 0 minutes 14.894 seconds)

Gallery generated by Sphinx-Gallery