← W1 | LAB

下載與分析 EDF

下載範例檔案

本課程使用 Sleep-EDF 資料集。請在上課前下載以下兩個檔案:PSG 原始訊號 + 睡眠分期標註(Hypnogram)。

PSG 原始訊號(21.8 MB)

7 頻道:EEG × 2、EOG、EMG、呼吸、體溫、事件標記

Hypnogram 睡眠分期(4.5 KB)

人工標註的睡眠階段:W / N1 / N2 / N3 / N4 / REM

wget https://physionet.org/files/sleep-edfx/1.0.0/sleep-cassette/SC4002E0-PSG.edf
wget https://physionet.org/files/sleep-edfx/1.0.0/sleep-cassette/SC4002EC-Hypnogram.edf

課堂實作:EDF Viewer

我們會用 Claude Code 來寫一個 Streamlit 應用程式,讓你可以在瀏覽器中即時瀏覽 EDF 檔案的訊號波形。

1

確認環境準備好

確保你已經完成 Conda 環境的安裝,並且 Claude Code 可以正常運作。

# 啟動課程的 Conda 環境
$conda activate bioagent

# 安裝需要的套件
$pip install streamlit mne plotly

# 確認 Claude Code 可以啟動
$claude
2

準備 EDF 檔案

把下載好的 EDF 檔案放到專案目錄中。

$mkdir -p edf-viewer/data
$cd edf-viewer

# 把你下載的 EDF 檔案放進 data/ 目錄
$cp ~/Downloads/SC4002E0-PSG.edf data/
$cp ~/Downloads/SC4002EC-Hypnogram.edf data/
3

用 Claude Code 寫 Streamlit App

在專案目錄中啟動 Claude Code,給它以下指令:

# 在 edf-viewer 目錄中啟動 Claude Code
$claude

給 Claude Code 的 PROMPT

幫我用 Streamlit 寫一個 EDF Viewer: 1. 讓使用者可以上傳 .edf 檔案,或從 data/ 目錄選擇現有檔案 2. 頁面頂部用一行 caption 顯示檔案基本資訊(檔名、頻道數、取樣率、總時長、錄製時間),不要用 header 或 metric 卡片 3. 讓使用者在 sidebar 選擇要看哪些頻道 4. 用 Plotly 畫出互動式的訊號波形圖,可以縮放和平移。波形圖應該是頁面的主角,不要被其他元素擠壓 5. 加上 epoch 導覽功能,放在波形圖正上方,全部排在同一行:-100、-1、+1、+100 的按鈕,epoch 編號輸入框可直接跳轉,以及跳到下一個指定睡眠階段(W、N1、N2、N3、REM)的按鈕。Epoch 長度的設定放在 sidebar 6. 如果 data/ 目錄中有對應的 Hypnogram 檔案(例如 SC4002EC-Hypnogram.edf),自動載入並用 mne.read_annotations() 讀取睡眠分期標註,在導覽列下方用對應顏色的大字顯示目前 epoch 所在的睡眠階段(W / N1 / N2 / N3 / N4 / REM),不要用色塊背景,純文字加顏色就好 7. 每個頻道的基本統計(最大值、最小值、平均值、標準差)收在波形圖下方的 expander 裡,預設收合 8. 整體設計原則:不要用多餘的 header,畫面要乾淨,使用者一打開就直接看到波形 使用 mne 讀取 EDF 檔案,plotly 做視覺化。
4

啟動 Viewer

Claude Code 寫完後,啟動 Streamlit 看成果。

$streamlit run app.py

# 瀏覽器會自動打開 http://localhost:8501
# 你可以上傳 EDF 檔案,或選擇 data/ 目錄中的檔案來瀏覽
EDF Viewer 完成畫面

你會看到什麼?

檔案資訊面板

  • 受試者 ID、錄製日期
  • 錄製時長(例:7 小時 32 分鐘)
  • 頻道數量與名稱
  • 各頻道取樣率

互動式波形圖

  • 多頻道同步顯示
  • 滑鼠滾輪縮放時間軸
  • 拖曳平移瀏覽不同時段
  • 點擊圖例開關頻道顯示

睡眠分期顯示

  • 自動載入 Hypnogram 標註檔
  • 不同顏色大字顯示目前睡眠階段
  • 上一個 / 下一個 epoch 快速切換
  • 輸入 epoch 編號直接跳轉

其他公開 EDF 資料集

想深入?來找這兩位老師

這門課只是帶你入門——用 AI 工具快速上手生醫訊號的讀取與視覺化。但生醫訊號的世界遠不止於此:從硬體設備設計到睡眠生理的深層機制,背後有大量值得鑽研的課題。如果你上完課覺得意猶未盡,歡迎直接聯繫以下兩位教授的實驗室,展開更深入的研究。

郭博昭 教授

專注於生醫設備開發與訊號分析,研究如何將醫療級的量測技術從實驗室搬到可攜式裝置上。

  • 醫療設備設計與製作 — 從硬體電路到韌體開發,打造生理訊號擷取系統
  • 穿戴式醫療設備 — 將心電、腦波、血氧等量測功能微型化,實現長時間連續監測
  • 生理訊號分析 — ECG、EEG、EMG 等多模態訊號的特徵擷取與演算法開發
  • 醫療技術轉移 — 將臨床檢測技術轉化為嵌入式裝置上的即時運算

楊靜修 教授

專注於睡眠生理學的深入研究,探索睡眠過程中各種生理現象背後的機制與臨床意義。

  • 睡眠結構分析 — 睡眠分期、睡眠週期特徵、微覺醒事件的量化與研究
  • 睡眠呼吸障礙 — 阻塞型與中樞型睡眠呼吸中止症的生理機轉與評估
  • 自律神經與睡眠 — 心率變異度在不同睡眠階段的變化及其臨床意義
  • 睡眠生理現象深究 — 從腦波、眼動、肌電等多維度訊號解析睡眠中的複雜生理現象