본문 바로가기
Somnology/YASA

[YASA] Spectral analyses

by goatlab 2022. 4. 25.
728x90
반응형
SMALL

야간 스펙트로그램 플롯 (Full-night spectrogram plot)

 

수면곡선의 현재 샘플링 주파수는 30초마다 하나의 값, 즉 ~0.3333Hz이다. 그러나 대부분의 YASA 기능은 수면곡선의 샘플링 주파수가 PSG 데이터의 샘플링 주파수와 같아야 한다. 따라서 이 예에서는 수면곡선 그래프를 0.333Hz에서 100Hz로 업샘플링해야 한다. 이것은 다음 yasa.hypno_upsample_to_data()기능으로 수행할 수 있다.

 

>>> hypno_up = yasa.hypno_upsample_to_data(hypno, sf_hypno=1/30, data=raw)
>>> print(len(hypno_up))

 

이제 수면곡선과 데이터의 모양이 같으므로 밤새 단일 EEG 채널의 시간-주파수 표현을 보여주는 기능을 사용하여 멀티테이퍼 스펙트로그램 위에 수면곡선을 그릴 수 있다. yasa.plot_spectrogram() 스펙트로그램의 x축은 시간 (시간)이고 y축은 주파수 범위 (0~25Hz)이다. 더 따뜻한 색상은 이 채널에 대해 이 특정 시간에 이 특정 주파수 대역에서 더 높은 스펙트럼 전력을 나타냅니다. 이러한 종류의 플롯은 NREM 수면 (5Hz 미만의 주파수에서 높은 전력 및 약 ~14Hz의 스핀들 관련 활동) 및 REM 수면 (5Hz 미만의 주파수에서 전력이 거의 없음) 기간을 신속하게 식별하는 데 매우 유용하다.

 

# We select only the C4-A1 EEG channel.
>>> yasa.plot_spectrogram(data[chan.index("C4-A1")], sf, hypno_up);

YASA에서 새로운 분석을 시작할 때마다 yasa.plot_spectrogram()데이터를 확인하는 기능을 항상 권장한다.

 

특정 주파수 대역의 EEG 전력 (EEG power in specific frequency bands)

 

(EEG 스펙트럼 대역 전력에 대한 입문서는 https://raphaelvallat.com/bandpower.html을 참조)

스펙트럼 분석은 다른 주파수 대역에서 EEG 신호의 전력 (또는 진폭)을 정량화한다. 신경과학에서 가장 일반적인 주파수 대역은 델타 (0.5~4Hz), 세타 (4~8Hz), 알파 (8~12Hz), 베타 (12~30Hz) 및 감마 (30~100Hz)이다. EEG 파워 스펙트럼과 인간의 행동, 인지 상태 또는 정신 질환 사이에 유의미한 관계를 보고한 많은 연구가 있으며, EEG 스펙트럼 분석은 현재 신경 과학 및 수면 연구 분야의 주요 분석 방법 중 하나이다. 수면의 여러 단계가 스펙트럼 함량에서 크게 다르다는 것이 잘 알려져 있기 때문에 수면 분석과 특히 관련이 있다. 예를 들어, 깊은 저파 수면(N3)은 저주파, 특히 델타 대역 (0.5-4Hz)에서 전력 증가와 베타 및 감마 대역에서 전력 감소와 관련이 있다.

 

yasa.bandpower()다른 주파수 대역에서 평균 스펙트럼 전력을 계산하는 것은 다음 기능 을 사용하면 간단하다.

 

>>> yasa.bandpower(raw)

 

이것은 각 채널에 대해 개별적으로 전체 녹음에 걸쳐 주 주파수 대역의 평균 전력을 계산한다. 중요한 것은 값이 상대 전력이라는 것이다. 즉, 가장 낮은 주파수(기본값 0.5Hz)와 가장 높은 주파수(기본값 40Hz) 사이의 총 전력 비율로 표시된다. μV2/HzμV2/Hzrelative=False 인수를 사용하여, 이 동작을 비활성화하고 절대 스펙트럼 전력 값을 얻을 수 있습니다. 마찬가지로 bands매개변수를 사용하여, 사용자 지정 주파수 대역을 정의할 수 있다. 아래 예에서는 1-9Hz 주파수 범위 ("Slow"로 명명) 및 9-30Hz 범위 ("Fast"로 명명)에서 절대 전력을 계산한다.

 

>>> yasa.bandpower(raw, relative=False, bands=[(1, 9, "Slow"), (9, 30, "Fast")])

 

또한 각 수면 단계에 대해 개별적으로 스펙트럼 전력을 계산하기 위해 수면곡선 그래프를 전달할 수 있다. 아래 예에서는 업샘플링된 수면곡선도를 사용하여 N2, N3 및 REM에 대한 스펙트럼 전력을 별도로 계산한다. 결과를 이라는 새 변수에 저장한다 (bandpower).

 

>>> bandpower = yasa.bandpower(raw, hypno=hypno_up, include=(2, 3, 4))

 

bandpower원하는 경우 다음을 사용하여 데이터 프레임을 CSV 파일 로 내보낼 수 있다 pandas.DataFrame.to_csv().

 

>>> bandpower.to_csv("bandpower.csv")

 

마지막으로 yasa.topoplot() 기능을 사용하여 모든 전극에 걸친 스펙트럼 전력을 시각화할 수 있다. pandas.DataFrame.xs()는 아래 예에서는 함수 를 사용하여 단계 N3의 스펙트럼 값만 플로팅한다 . 예상대로 상대 델타 전력은 전면 채널에서 더 높다.

 

>>> fig = yasa.topoplot(bandpower.xs(3)['Delta'])

 

https://raphaelvallat.com/yasa/build/html/quickstart.html#spectral-analyses

 

Quickstart — yasa 0.6.1 documentation

This is an introduction to YASA, geared mainly for new users. However, you’ll need to know a bit of Python, and especially scientific libraries such as NumPy and Pandas. This tutorial also assumes that you are familiar with basic sleep research and metho

raphaelvallat.com

 

728x90
반응형
LIST