下載範例檔案
本課程使用 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/ 目錄中的檔案來瀏覽
你會看到什麼?
檔案資訊面板
- 受試者 ID、錄製日期
- 錄製時長(例:7 小時 32 分鐘)
- 頻道數量與名稱
- 各頻道取樣率
互動式波形圖
- 多頻道同步顯示
- 滑鼠滾輪縮放時間軸
- 拖曳平移瀏覽不同時段
- 點擊圖例開關頻道顯示
睡眠分期顯示
- 自動載入 Hypnogram 標註檔
- 不同顏色大字顯示目前睡眠階段
- 上一個 / 下一個 epoch 快速切換
- 輸入 epoch 編號直接跳轉
其他公開 EDF 資料集
想深入?來找這兩位老師
這門課只是帶你入門——用 AI 工具快速上手生醫訊號的讀取與視覺化。但生醫訊號的世界遠不止於此:從硬體設備設計到睡眠生理的深層機制,背後有大量值得鑽研的課題。如果你上完課覺得意猶未盡,歡迎直接聯繫以下兩位教授的實驗室,展開更深入的研究。
郭博昭 教授
專注於生醫設備開發與訊號分析,研究如何將醫療級的量測技術從實驗室搬到可攜式裝置上。
- 醫療設備設計與製作 — 從硬體電路到韌體開發,打造生理訊號擷取系統
- 穿戴式醫療設備 — 將心電、腦波、血氧等量測功能微型化,實現長時間連續監測
- 生理訊號分析 — ECG、EEG、EMG 等多模態訊號的特徵擷取與演算法開發
- 醫療技術轉移 — 將臨床檢測技術轉化為嵌入式裝置上的即時運算
楊靜修 教授
專注於睡眠生理學的深入研究,探索睡眠過程中各種生理現象背後的機制與臨床意義。
- 睡眠結構分析 — 睡眠分期、睡眠週期特徵、微覺醒事件的量化與研究
- 睡眠呼吸障礙 — 阻塞型與中樞型睡眠呼吸中止症的生理機轉與評估
- 自律神經與睡眠 — 心率變異度在不同睡眠階段的變化及其臨床意義
- 睡眠生理現象深究 — 從腦波、眼動、肌電等多維度訊號解析睡眠中的複雜生理現象