Note
Go to the end to download the full example code.
Using the connectivity classes#
Compute different connectivity measures and then demonstrate the utility of the class.
Here we compute the Phase Lag Index (PLI) between all gradiometers and showcase how we can interact with the connectivity class.
# Authors: Adam Li <adam2392@gmail.com>
#
# License: BSD (3-clause)
import os.path as op
import mne
import numpy as np
from mne.datasets import sample
from mne_connectivity import spectral_connectivity_epochs
Set parameters
data_path = sample.data_path()
raw_fname = op.join(data_path, "MEG", "sample", "sample_audvis_filt-0-40_raw.fif")
event_fname = op.join(data_path, "MEG", "sample", "sample_audvis_filt-0-40_raw-eve.fif")
# Setup for reading the raw data
raw = mne.io.read_raw_fif(raw_fname)
events = mne.read_events(event_fname)
# Add a bad channel
raw.info["bads"] += ["MEG 2443"]
# Pick MEG gradiometers
picks = mne.pick_types(
raw.info, meg="grad", eeg=False, stim=False, eog=True, exclude="bads"
)
# Create epochs for the visual condition
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),
)
# Compute connectivity for the alpha band that contains the evoked response
# (4-9 Hz). We exclude the baseline period:
fmin, fmax = 4.0, 9.0
cwt_freqs = np.linspace(fmin, fmax, 5)
sfreq = raw.info["sfreq"] # the sampling frequency
tmin = 0.0 # exclude the baseline period
epochs.load_data().pick_types(meg="grad") # just keep MEG and no EOG now
con = spectral_connectivity_epochs(
epochs,
method="pli",
mode="cwt_morlet",
sfreq=sfreq,
fmin=fmin,
fmax=fmax,
faverage=False,
tmin=tmin,
cwt_freqs=cwt_freqs,
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] s
Applying baseline correction (mode: mean)
0 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
NOTE: pick_types() is a legacy function. New code should use inst.pick(...).
Adding metadata with 3 columns
Connectivity computation...
using t=0.000s..1.498s for estimation (226 points)
frequencies: 4.0Hz..9.0Hz (5 points)
only using indices for lower-triangular matrix
computing connectivity for 20503 connections
using CWT with Morlet wavelets to estimate spectra
the following metrics will be computed: PLI
computing cross-spectral density for epoch 1
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 2
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 3
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 4
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 5
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 6
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 7
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 8
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 9
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 10
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 11
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 12
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 13
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 14
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 15
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 16
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 17
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 18
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 19
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 20
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 21
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 22
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 23
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 24
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 25
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 26
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 27
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 28
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 29
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 30
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 31
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 32
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 33
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 34
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 35
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 36
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 37
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 38
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 39
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 40
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 41
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 42
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 43
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 44
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 45
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 46
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 47
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 48
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
computing cross-spectral density for epoch 49
/home/circleci/project/mne_connectivity/spectral/epochs.py:422: UserWarning: At least one of the wavelets (419) is longer than the signal (226). Consider using a longer signal or shorter wavelets.
this_x_t = cwt(
assembling connectivity matrix
[Connectivity computation done]
Now, we can look at different functionalities of the connectivity
class returned by mne_connectivity.spectral_connectivity_epochs()
. The
following are some basic attributes of connectivity classes.
# the dimensions of the data corresponding to each axis
print(con.dims)
# the coordinates for each axis of the data
print(con.coords)
# the number of nodes matches the number of electrodes used to compute the
# spectral measure
print(con.n_nodes)
# the names of each node correspond to the electrode names
print(con.names)
('node_in -> node_out', 'freqs', 'times')
Coordinates:
* node_in -> node_out (node_in -> node_out) <U5 824kB '0' '1' ... '41208'
* freqs (freqs) float64 40B 4.0 5.25 6.5 7.75 9.0
* times (times) float64 2kB 0.0 0.00666 0.01332 ... 1.492 1.498
203
['MEG 0113', 'MEG 0112', 'MEG 0122', 'MEG 0123', 'MEG 0132', 'MEG 0133', 'MEG 0143', 'MEG 0142', 'MEG 0213', 'MEG 0212', 'MEG 0222', 'MEG 0223', 'MEG 0232', 'MEG 0233', 'MEG 0243', 'MEG 0242', 'MEG 0313', 'MEG 0312', 'MEG 0322', 'MEG 0323', 'MEG 0333', 'MEG 0332', 'MEG 0343', 'MEG 0342', 'MEG 0413', 'MEG 0412', 'MEG 0422', 'MEG 0423', 'MEG 0432', 'MEG 0433', 'MEG 0443', 'MEG 0442', 'MEG 0513', 'MEG 0512', 'MEG 0523', 'MEG 0522', 'MEG 0532', 'MEG 0533', 'MEG 0542', 'MEG 0543', 'MEG 0613', 'MEG 0612', 'MEG 0622', 'MEG 0623', 'MEG 0633', 'MEG 0632', 'MEG 0642', 'MEG 0643', 'MEG 0713', 'MEG 0712', 'MEG 0723', 'MEG 0722', 'MEG 0733', 'MEG 0732', 'MEG 0743', 'MEG 0742', 'MEG 0813', 'MEG 0812', 'MEG 0822', 'MEG 0823', 'MEG 0913', 'MEG 0912', 'MEG 0923', 'MEG 0922', 'MEG 0932', 'MEG 0933', 'MEG 0942', 'MEG 0943', 'MEG 1013', 'MEG 1012', 'MEG 1023', 'MEG 1022', 'MEG 1032', 'MEG 1033', 'MEG 1043', 'MEG 1042', 'MEG 1112', 'MEG 1113', 'MEG 1123', 'MEG 1122', 'MEG 1133', 'MEG 1132', 'MEG 1142', 'MEG 1143', 'MEG 1213', 'MEG 1212', 'MEG 1223', 'MEG 1222', 'MEG 1232', 'MEG 1233', 'MEG 1243', 'MEG 1242', 'MEG 1312', 'MEG 1313', 'MEG 1323', 'MEG 1322', 'MEG 1333', 'MEG 1332', 'MEG 1342', 'MEG 1343', 'MEG 1412', 'MEG 1413', 'MEG 1423', 'MEG 1422', 'MEG 1433', 'MEG 1432', 'MEG 1442', 'MEG 1443', 'MEG 1512', 'MEG 1513', 'MEG 1522', 'MEG 1523', 'MEG 1533', 'MEG 1532', 'MEG 1543', 'MEG 1542', 'MEG 1613', 'MEG 1612', 'MEG 1622', 'MEG 1623', 'MEG 1632', 'MEG 1633', 'MEG 1643', 'MEG 1642', 'MEG 1713', 'MEG 1712', 'MEG 1722', 'MEG 1723', 'MEG 1732', 'MEG 1733', 'MEG 1743', 'MEG 1742', 'MEG 1813', 'MEG 1812', 'MEG 1822', 'MEG 1823', 'MEG 1832', 'MEG 1833', 'MEG 1843', 'MEG 1842', 'MEG 1912', 'MEG 1913', 'MEG 1923', 'MEG 1922', 'MEG 1932', 'MEG 1933', 'MEG 1943', 'MEG 1942', 'MEG 2013', 'MEG 2012', 'MEG 2023', 'MEG 2022', 'MEG 2032', 'MEG 2033', 'MEG 2042', 'MEG 2043', 'MEG 2113', 'MEG 2112', 'MEG 2122', 'MEG 2123', 'MEG 2133', 'MEG 2132', 'MEG 2143', 'MEG 2142', 'MEG 2212', 'MEG 2213', 'MEG 2223', 'MEG 2222', 'MEG 2233', 'MEG 2232', 'MEG 2242', 'MEG 2243', 'MEG 2312', 'MEG 2313', 'MEG 2323', 'MEG 2322', 'MEG 2332', 'MEG 2333', 'MEG 2343', 'MEG 2342', 'MEG 2412', 'MEG 2413', 'MEG 2423', 'MEG 2422', 'MEG 2433', 'MEG 2432', 'MEG 2442', 'MEG 2512', 'MEG 2513', 'MEG 2522', 'MEG 2523', 'MEG 2533', 'MEG 2532', 'MEG 2543', 'MEG 2542', 'MEG 2612', 'MEG 2613', 'MEG 2623', 'MEG 2622', 'MEG 2633', 'MEG 2632', 'MEG 2642', 'MEG 2643']
The underlying connectivity measure can be stored in two ways: i) raveled
and ii) dense. Raveled storage will be a 1D column flattened array, similar
to what one might expect when using numpy.ravel
. However, if you ask for
the dense data, then the shape will show the N by N connectivity.
In general, you might prefer the raveled version if you specify a subset of
indices (e.g. some subset of sources) for the computation
of a bivariate connectivity measure or if you have a symmetric measure
(e.g. coherence). The ‘dense’ output on the other hand provides an actual
square matrix, which can be used for post-hoc analysis that expects a matrix
shape.
# the underlying data is stored "raveled", and the connectivity measure is
# flattened into one dimension
print(con.shape)
# the 'dense' output will show the connectivity measure's N x N axis
print(con.get_data(output="dense").shape)
(41209, 5, 226)
(203, 203, 5, 226)
The underlying data is stored as an xarray, so we have access to DataArray attributes. Each connectivity measure function automatically stores relevant metadata. For example, the method used in this example is the phase-lag index (‘pli’).
print(con.attrs.keys())
print(con.attrs.get("method"))
# You can also store additional metadata relevant to your experiment, which can
# easily be done, because ``attrs`` is just a dictionary.
con.attrs["experimenter"] = "mne"
print(con.attrs.keys())
dict_keys(['spec_method', 'n_epochs_used', 'patterns', 'freqs_used', 'times_used', 'n_tapers', 'rank', 'n_lags', 'node_names', 'method', 'indices', 'n_nodes', 'events'])
pli
dict_keys(['spec_method', 'n_epochs_used', 'patterns', 'freqs_used', 'times_used', 'n_tapers', 'rank', 'n_lags', 'node_names', 'method', 'indices', 'n_nodes', 'events', 'experimenter'])
Other properties of the connectivity class, special to the spectro-temporal connectivity class.
Note
Not all connectivity classes will have these properties.
[4.0, 5.25, 6.5, 7.75, 9.0]
[0.0, 0.006659840438612929, 0.013319680877225858, 0.019979521315838786, 0.026639361754451717, 0.03329920219306465, 0.03995904263167757, 0.0466188830702905, 0.05327872350890343, 0.05993856394751636, 0.0665984043861293, 0.07325824482474222, 0.07991808526335514, 0.08657792570196808, 0.093237766140581, 0.09989760657919393, 0.10655744701780687, 0.11321728745641979, 0.11987712789503271, 0.12653696833364564, 0.1331968087722586, 0.13985664921087151, 0.14651648964948444, 0.15317633008809736, 0.1598361705267103, 0.1664960109653232, 0.17315585140393616, 0.17981569184254909, 0.186475532281162, 0.19313537271977493, 0.19979521315838786, 0.20645505359700078, 0.21311489403561373, 0.21977473447422666, 0.22643457491283958, 0.2330944153514525, 0.23975425579006543, 0.24641409622867838, 0.2530739366672913, 0.25973377710590423, 0.2663936175445172, 0.2730534579831301, 0.27971329842174303, 0.2863731388603559, 0.2930329792989689, 0.2996928197375818, 0.3063526601761947, 0.3130125006148077, 0.3196723410534206, 0.3263321814920335, 0.3329920219306464, 0.33965186236925937, 0.3463117028078723, 0.3529715432464852, 0.35963138368509817, 0.36629122412371107, 0.372951064562324, 0.37961090500093697, 0.38627074543954987, 0.3929305858781628, 0.3995904263167757, 0.40625026675538867, 0.41291010719400156, 0.4195699476326145, 0.42622978807122747, 0.43288962850984036, 0.4395494689484533, 0.4462093093870662, 0.45286914982567916, 0.4595289902642921, 0.466188830702905, 0.47284867114151796, 0.47950851158013086, 0.4861683520187438, 0.49282819245735676, 0.49948803289596966, 0.5061478733345826, 0.5128077137731956, 0.5194675542118085, 0.5261273946504214, 0.5327872350890344, 0.5394470755276473, 0.5461069159662602, 0.552766756404873, 0.5594265968434861, 0.566086437282099, 0.5727462777207118, 0.5794061181593249, 0.5860659585979378, 0.5927257990365506, 0.5993856394751635, 0.6060454799137766, 0.6127053203523894, 0.6193651607910023, 0.6260250012296154, 0.6326848416682282, 0.6393446821068411, 0.6460045225454542, 0.652664362984067, 0.6593242034226799, 0.6659840438612928, 0.6726438842999058, 0.6793037247385187, 0.6859635651771316, 0.6926234056157446, 0.6992832460543575, 0.7059430864929704, 0.7126029269315833, 0.7192627673701963, 0.7259226078088092, 0.7325824482474221, 0.7392422886860351, 0.745902129124648, 0.7525619695632609, 0.7592218100018739, 0.7658816504404868, 0.7725414908790997, 0.7792013313177126, 0.7858611717563256, 0.7925210121949385, 0.7991808526335514, 0.8058406930721644, 0.8125005335107773, 0.8191603739493902, 0.8258202143880031, 0.8324800548266161, 0.839139895265229, 0.8457997357038419, 0.8524595761424549, 0.8591194165810678, 0.8657792570196807, 0.8724390974582937, 0.8790989378969066, 0.8857587783355195, 0.8924186187741324, 0.8990784592127454, 0.9057382996513583, 0.9123981400899712, 0.9190579805285842, 0.9257178209671971, 0.93237766140581, 0.939037501844423, 0.9456973422830359, 0.9523571827216488, 0.9590170231602617, 0.9656768635988747, 0.9723367040374876, 0.9789965444761005, 0.9856563849147135, 0.9923162253533264, 0.9989760657919393, 1.0056359062305522, 1.012295746669165, 1.0189555871077782, 1.0256154275463911, 1.032275267985004, 1.038935108423617, 1.0455949488622298, 1.0522547893008427, 1.0589146297394556, 1.0655744701780687, 1.0722343106166816, 1.0788941510552945, 1.0855539914939074, 1.0922138319325203, 1.0988736723711332, 1.105533512809746, 1.1121933532483592, 1.1188531936869721, 1.125513034125585, 1.132172874564198, 1.1388327150028108, 1.1454925554414237, 1.1521523958800366, 1.1588122363186497, 1.1654720767572626, 1.1721319171958755, 1.1787917576344884, 1.1854515980731013, 1.1921114385117142, 1.198771278950327, 1.2054311193889402, 1.212090959827553, 1.218750800266166, 1.225410640704779, 1.2320704811433918, 1.2387303215820047, 1.2453901620206178, 1.2520500024592307, 1.2587098428978436, 1.2653696833364565, 1.2720295237750694, 1.2786893642136823, 1.2853492046522952, 1.2920090450909083, 1.2986688855295212, 1.305328725968134, 1.311988566406747, 1.3186484068453599, 1.3253082472839728, 1.3319680877225857, 1.3386279281611988, 1.3452877685998117, 1.3519476090384246, 1.3586074494770375, 1.3652672899156504, 1.3719271303542633, 1.3785869707928762, 1.3852468112314893, 1.3919066516701022, 1.398566492108715, 1.405226332547328, 1.4118861729859409, 1.4185460134245538, 1.4252058538631667, 1.4318656943017798, 1.4385255347403927, 1.4451853751790056, 1.4518452156176185, 1.4585050560562314, 1.4651648964948443, 1.4718247369334574, 1.4784845773720703, 1.4851444178106832, 1.491804258249296, 1.498464098687909]
Total running time of the script: (0 minutes 20.071 seconds)