可穿戴設(shè)備的生理信號(hào)處理是健康科技與研究領(lǐng)域反復(fù)出現(xiàn)的工程難題。ECG 記錄、心率變異性指標(biāo)、加速度計(jì)數(shù)據(jù),不管處理哪一類信號(hào),從原始傳感器輸出到有意義的生物標(biāo)志物,整條鏈路都是碎片化的:算法散落在論文、代碼倉庫和臨時(shí)腳本里,接口各不相同,數(shù)據(jù)模型也無法共享。
![]()
PhysioDSP 是一個(gè)開源 Python 庫,目標(biāo)是改變這種局面。它給出了一套統(tǒng)一、可擴(kuò)展的框架來處理和分析生理傳感器數(shù)據(jù),核心關(guān)注點(diǎn)放在算法一致性、類型安全與可復(fù)現(xiàn)性上。項(xiàng)目托管在 GitHub,pip 安裝即可使用:
pip install physiodsp
核心架構(gòu)
PhysioDSP 的算法架構(gòu)簡(jiǎn)潔統(tǒng)一,各組件易于集成、擴(kuò)展和測(cè)試。
每個(gè)算法遵循同一套模式:Settings 類(基于 Pydantic)定義可配置參數(shù);Algorithm 類繼承 BaseAlgorithm,對(duì)外暴露 run() 方法;結(jié)果以 Pandas DataFrame 返回,直接接入下游處理。傳感器數(shù)據(jù)封裝在 AccelerometerData、EcgData、HrvData 等類型化數(shù)據(jù)模型中,實(shí)例化時(shí)即執(zhí)行 schema 校驗(yàn)。
切換算法或調(diào)參無需改動(dòng)數(shù)據(jù)處理代碼——把數(shù)組包進(jìn)對(duì)應(yīng)的數(shù)據(jù)類,就能接入 PhysioDSP 的處理流水線。
from physiodsp.ecg.peak_detector import EcgPeakDetector
from physiodsp.sensors.ecg import EcgData
ecg_data = EcgData(timestamps=timestamps, values=ecg_values, fs=250)
detector = EcgPeakDetector()
result = detector.run(ecg_data)
# 包含 RR 間期和心率的 DataFrame
print(result.biomarker)
已實(shí)現(xiàn)的算法
當(dāng)前版本包含四個(gè)功能模塊。
活動(dòng)分析方面,activity/ 模塊實(shí)現(xiàn)了多種體動(dòng)記錄算法,均經(jīng)過單元測(cè)試且可投入生產(chǎn):ENMO(歐幾里得范數(shù)減一)、過零率、高于閾值時(shí)間(用于劇烈活動(dòng)量化)、PIM(比例積分模式,處理多軸數(shù)據(jù)),以及一套個(gè)性化活動(dòng)評(píng)分方案,輸出歸一化的 0–100 每日活動(dòng)與恢復(fù)指數(shù),支持基線個(gè)性化。
ECG 處理集中在 ecg/ 模塊,核心是一個(gè)基于類 Pan-Tompkins 濾波和峰值檢測(cè)流水線的 QRS 波群檢測(cè)器。傳入任意采樣頻率的 EcgData 對(duì)象后,該檢測(cè)器在單個(gè) DataFrame 中返回心跳時(shí)間戳、RR 間期與瞬時(shí)心率。hrv/ 模塊負(fù)責(zé) HRV 評(píng)分,算法將 RMSSD(連續(xù)差值均方根)經(jīng) sigmoid 歸一化映射到 0–100 分,同時(shí)納入趨勢(shì)和穩(wěn)定性分量,計(jì)算基于滑動(dòng)窗口,面向縱向監(jiān)測(cè)場(chǎng)景。
底層的 dsp/ 模塊提供卷積和濾波工具,既是上述各模塊的計(jì)算基礎(chǔ),也可獨(dú)立用于構(gòu)建自定義信號(hào)處理流水線。
傳感器支持與數(shù)據(jù)模型
傳感器層對(duì)三種 IMU 模態(tài)——加速度計(jì)、陀螺儀、磁力計(jì)——以及 ECG 和 HRV 時(shí)間序列做了統(tǒng)一抽象。每個(gè)數(shù)據(jù)類接收原始 NumPy 數(shù)組、時(shí)間戳和采樣頻率,經(jīng) Pydantic 校驗(yàn)輸入后,向下游算法提供一致的接口。傳感器抽象與算法邏輯的分離帶來一個(gè)直接的好處:接入新硬件或新信號(hào)類型時(shí)無需改動(dòng)已有算法實(shí)現(xiàn)。運(yùn)行環(huán)境要求 Python ≥ 3.11,依賴 NumPy、Pandas、SciPy 和 Pydantic。
總結(jié)
PhysioDSP 雖然剛剛看是,但是已經(jīng)是一個(gè)可用的生理信號(hào)處理基礎(chǔ)框架。當(dāng)前版本(0.1.0b0)覆蓋活動(dòng)分析、ECG 峰值檢測(cè)和 HRV 評(píng)分三個(gè)方向,架構(gòu)統(tǒng)一且易于測(cè)試。后續(xù)計(jì)劃中的模塊包括能量消耗估算、睡眠質(zhì)量指標(biāo)和基于機(jī)器學(xué)習(xí)的活動(dòng)識(shí)別。
https://avoid.overfit.cn/post/f014d12b5f154279b969a1d7f5bedc1c
BY Matteo Serafino
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.