Closed paulokanda closed 2 years ago
Hi @paulokanda,
Thanks for your message. You need to use np.squeeze(data)
to ensure that time
and data
are both one-dimensional (by default data is 2D, i.e. data.shape = (n_channels, n_times)).
Hope this helps, Thanks, Raphael
I think that yasa is considering index as a value because
I reduced raw (from edf+) to one channel:
raw1 = raw.pick_channels(['F3']) data = raw1.get_data() etc...
data.shape (1, 80800)
raw_df1.head()
time | F3
0 0 | 1.016440e-13 1 10 | -3.411143e-01 2 20 | -3.844158e-01 3 30 | -4.245883e-01 4 40 | -5.764858e-01
data array([[ 1.01643954e-19, -3.41114305e-07, -3.84415789e-07, ..., 3.68912472e-06, 3.24150894e-06, -1.01643954e-19]])
error remains:
ValueError: x and y must have same first dimension, but have shapes (80800,) and (1, 80800)
It doesnot happen when plotting with other methods in mne.
Is it an yasa bug? Please what I'm missing? Thanks in advance.
Hi @paulokanda,
This is not a YASA bug since your code does not include any YASA functions. Rather, the issue is that when you use raw.get_data()
with a single channel in MNE, you still end up with a two-dimensional array, even though you have only one channel. The output dimension of the array is (n_channels, n_samples). However, the time
vector that we use in the matplotlib plt.plot() function is one-dimensional. The following should work:
plt.plot(time, np.squeeze(data))
Thanks, Raphael
Thank you for your time and clear explanation.
Dear Professor Vallat,
First of all many thanks for taking the time to bring us this very usefull yasa script.
I already use edf in mne in some tasks. Now I'm learning yasa to get information from resting state awake EEG without events.
I've managed to import and use mne raw in this tutorial:
08_bandpower.ipynb .
but when I try this very interesting tutorial: https://raphaelvallat.com/bandpower.html (A)
I receive an error:
Could you show me a path to follow?
Thanks in advance Paulo Kanda University of São Paulo