|
3 | 3 | import numpy as np |
4 | 4 | import one.alf as alf |
5 | 5 | from brainbox.processing import bincount2D |
| 6 | +from brainbox.io.spikeglx import stream |
6 | 7 | from brainbox.population.decode import xcorr |
7 | 8 | from brainbox.task import passive |
| 9 | +from ibllib.dsp import voltage |
8 | 10 | import scipy |
9 | 11 | from PyQt5 import QtGui |
10 | 12 |
|
@@ -472,6 +474,38 @@ def median_subtract(a): |
472 | 474 |
|
473 | 475 | return data_img, data_probe |
474 | 476 |
|
| 477 | + # only for IBL sorry |
| 478 | + def get_raw_data_image(self, pid, t0=(1000, 2000, 3000), one=None): |
| 479 | + |
| 480 | + def gain2level(gain): |
| 481 | + return 10 ** (gain / 20) * 4 * np.array([-1, 1]) |
| 482 | + data_img = dict() |
| 483 | + for t in t0: |
| 484 | + |
| 485 | + sr, t = stream(pid, t, one=one) |
| 486 | + raw = sr[:, :-sr.nsync].T |
| 487 | + channel_labels, channel_features = voltage.detect_bad_channels(raw, sr.fs) |
| 488 | + raw = voltage.destripe(raw, fs=sr.fs, channel_labels=channel_labels) |
| 489 | + raw_image = raw[:, int((450 / 1e3) * sr.fs):int((500 / 1e3) * sr.fs)].T |
| 490 | + x_range = np.array([0, raw_image.shape[0] - 1]) / sr.fs * 1e3 |
| 491 | + levels = gain2level(-90) |
| 492 | + xscale = (x_range[1] - x_range[0]) / raw_image.shape[0] |
| 493 | + yscale = (self.chn_max - self.chn_min) / raw_image.shape[1] |
| 494 | + |
| 495 | + data_raw = { |
| 496 | + 'img': raw_image, |
| 497 | + 'scale': np.array([xscale, yscale]), |
| 498 | + 'levels': levels, |
| 499 | + 'offset': np.array([0, 0]), |
| 500 | + 'cmap': 'bone', |
| 501 | + 'xrange': x_range, |
| 502 | + 'xaxis': 'Time (ms)', |
| 503 | + 'title': 'Power (uV)' |
| 504 | + } |
| 505 | + data_img[f'Raw data t={t}'] = data_raw |
| 506 | + |
| 507 | + return data_img |
| 508 | + |
475 | 509 | def get_lfp_spectrum_data(self): |
476 | 510 | freq_bands = np.vstack(([0, 4], [4, 10], [10, 30], [30, 80], [80, 200])) |
477 | 511 | data_probe = {} |
|
0 commit comments