본문 바로가기
728x90
반응형
SMALL

Brain Engineering114

Preprocessing : Choosing a Reference Choosing a Reference EEG 기록은 뇌의 일부와 기준점 사이의 전압차를 측정하여 수집된다. 데이터를 수집한 후 참조를 변경할 수 있으며 이 과정을 재참조라고 한다. 기준이 변경되면 채널의 신호 진폭도 달라진다. 따라서 참조는 EEG 데이터에 매우 중요합니다. 재참조는 다음과 같이 공식화할 수 있다. 채널 'x'의 새로운 전위 = 채널 'x'의 전위 + 원래 기준의 전위 - 새 기준의 전위 (참고 : 'x'는 채널 ID에 해당) Selecting the reference 참조를 선택하기 위한 최적의 전략은 없지만 일반적으로 적용되는 몇 가지 접근 방식이 있다. 한 가지 방법은 모든 채널에서 전위의 평균을 계산하고 이 평균 전위를 기준으로 사용하는 것이다. 새 참조는 기존 채널일 필요는 없으.. 2022. 4. 5.
Preprocessing : Baseline Correction Baseline Correction EEG는 시간 분해 신호이므로 실험 질문과 관련이 없는 일시적인 드리프트가 있는 경우가 많다. 다양한 내부 및 외부 소스로 인해 시간이 지남에 따라 그리고 전극 간에도 변화하는 일시적인 드리프트가 발생할 수 있다. 이러한 드리프트의 영향을 줄이기 위해 소위 베이스라인 보정을 수행하는 것이 일반적이다. 기본적으로 이것은 기준 기간 동안, 즉 외부 사건이 발생하기 전의 EEG 활동을 사용하여 자극 후 간격 (즉, 외부 사건이 발생한 후 시간)에 걸쳐 활동을 수정하는 것으로 구성된다. 기준선 보정을 위한 다양한 접근 방식이 있다. 전통적인 방법은 기준선과 자극 후 간격의 모든 시점에서 기준선 기간의 평균을 빼는 것이다. Baseline Correction with MNE M.. 2022. 4. 5.
Preprocessing : Data Visualization Visualize EEG Data EEG 데이터는 공간 (ex. 두피에 분포된 전극)과 시간에서 다차원에 대한 풍부한 정보를 포함한다. EEG 데이터에 포함된 반응 및 활동 유형을 먼저 이해하려면 이 정보를 효율적으로 시각화하는 것이 중요하다. 주요 초점은 eeg 데이터에 대한 시각화 도구의 개요를 알아간다. import mne # For elimiating warnings from warnings import simplefilter # ignore all future warnings simplefilter(action='ignore', category=FutureWarning) #Load epoched data data_file = '../study1/study1_eeg/epochdata/P-02' #.. 2022. 4. 5.
Preprocessing : Data Loading (2) Loading EEG data EEG 데이터는 주어진 경로에서 직접 로드할 수 있다. 데이터가 이미 epoch된 경우 mne.read_epochs() 함수를 사용하여 '.fif' 파일에서 epoch된 데이터를 읽을 수 있다. ## Loading Epoched data # The file name should end with'-epo.fif': data_file = '../datasets/817_1_PDDys_ODDBALL_Clean_curated-epo' # Read the EEG epochs: epochs = mne.read_epochs(data_file + '.fif', verbose='error') Reading ../datasets/817_1_PDDys_ODDBALL_Clean_curated-ep.. 2022. 4. 5.
Preprocessing : Data Loading (1) Data Loading EEG 데이터는 원시 데이터, 신기원 데이터 및 유발 (평균) 데이터의 3가지 유형으로 간주할 수 있다. 원시 데이터 : 연속 데이터는 MNE에서 원시 개체로 저장된다. 원시 객체의 데이터는 채널×시간 차원의 2D 배열로 간주된다. Epoch 데이터 : 시간 제한이 있는 시도로 구성된다. 데이터는 이벤트×채널×시간의 3차원 배열이다. 평균 이벤트 관련 가능성 : 이것은 시도에 대해 에포크된 데이터를 평균화한 결과이다. 출력은 외부 이벤트에 대해 시간 고정되며 채널×시간의 2D 배열로 저장된다. Loading datasets available in MNE : EEGBCI motor imagery Dataset MNE 패키지 (EEGBI 모터 이미지 데이터 세트)에서 사용 가능한 데이.. 2022. 4. 5.
Signal Processing : Acquiring Data What is a signal 신경 과학에서 대부분의 신호는 시간에 따라 변하는 전압이다. ECG, EEG, EMG 등과 같은 많은 생체 신호는 증폭되고 필터링된 전위 (ex. 전압)이다. 다른 것들은 변환기의 결과일 수 있으며, 다른 물리적 측정값 (ex. 거리, 압력)이 (일반적으로 전압) 될 수 있다. 주목할만한 예외는 시선 추적과 같은 모든 비디오 기반 신호이다. 이들은 일반적으로 디지털 형식으로 직접 임의의 단위로 기록된다. Analog to Digital 대부분의 신호는 아날로그 신호로 측정된다. 이는 시간이 지남에 따라 연속적임을 의미한다. 컴퓨터는 아날로그 신호를 저장하거나 처리할 수 없다. 따라서 주석에 표시된 대로 수행 하는 아날로그-디지털 변환기 (ADC)를 사용한다. 이 단계를 이산.. 2022. 4. 5.
Signal Processing : Temporal / Spectral Space (2) Direct current (DC) 직류는 일정하게 유지되는 신호이다 (따라서 시간이 지나도 변하지 않음). PSD는 f=0에 완전히 집중되어 있다. fig, ax = plt.subplots(1,3,figsize=(12,4)); # Direct current(DC) x = [1 for x in t] f = [0] X = [1] fp,Xp = periodogram(x,fs=sr,detrend=False) ax[0].axis([0,1,0,1.1]) ax[0].plot(t,x) ax[1].axis([-1,sr/2,10**-2,2]) ax[1].stem(f,X,use_line_collection=True) ax[1].set_yscale('log') ax[2].axis([-1,sr/2,10**-2,2]) ax[2.. 2022. 4. 5.
Signal Processing : Temporal / Spectral Space (1) Temporal / Spectral Space 필터링을 이해하려면 신호를 주파수 구성 요소로 보는 것이 좋다. Fourier Series 푸리에 급수는 일련의 조화롭게 연결된 (모든 주파수는 가장 낮은 주파수의 배수) 정현파로, 일단 가중되고 합산되면 기본 주기 (신호에 존재하는 가장 낮은 주파수) 동안 임의의 신호와 동일하다. 또는 신호가 결정된 길이인 경우 해당 신호의 길이보다 1배 더 많다. 이를 설명하기 위해 듀티 사이클이 50%인 440Hz에서 구형파 신호를 분해하면, 신호의 정확히 절반이 양수이고 절반이 음수인 경우 초당 +1에서 -1까지 440번 진동하는 주기적 신호이다. ## load libraries import matplotlib.pyplot as plt import matplotlib.. 2022. 4. 5.
Signal Processing : Complex Numbers Complex Numbers 공학에서 시간 불변 진폭 (A), 각주파수 (ω) 및 초기 위상 (φ)을 갖는 사인파 신호는 페이저 (phasor)라고 하는 복소수로 나타낼 수 있다는 것이다. (위상 벡터의 약자) 진폭 (A) : 신호 중간 값에서 최대값까지의 거리 각주파수 (w) : 주파수로 변환하지만 신호가 주기를 얼마나 빨리 통과하는지 나타낸다. 주파수에서 계산하는 것은 간단하다. 주파수 (f) : 신호가 중간 값을 중심으로 진동하는 빈도 위상 : 신호 주기의 임의 지점과 관련된 지연, 일반적으로 다른 신호의 시작 지점 오일러의 공식을 사용한다. 페이저는 시간 변화에 대한 참조 없이 작성되지만 다른 신호에 대해서만 작성되므로 일반적으로 다음과 같이 작성된다. The Imaginary Number Rep.. 2022. 4. 4.
[MNE-Python] fNIRS 장치에서 데이터 가져오기 (2) Loading legacy data in CSV or TSV format fNIRS 측정값은 MNE-Python에서 지원하지 않고 SNIRF로 쉽게 변환할 수 없는 비표준 형식으로 저장될 수 있다. 이 레거시 데이터는 CSV 또는 TSV 형식인 경우가 많으며 파일 형식 (채널의 이름 지정 및 순서, 형식 및 데이터 스케일링, 센서 위치 사양은 벤더마다 다름) CSV가 시작된 시스템에 따라 이를 조정해야 할 수 있다. import os.path as op import numpy as np import pandas as pd import mne pd.DataFrame(np.random.normal(size=(16, 100))).to_csv("fnirs.csv") MNE-Python에 로드될 예제 CSV 파일.. 2022. 4. 4.
728x90
반응형
LIST