摘? 要:醫(yī)學(xué)臨床工作中,人體生理參數(shù)是重要基礎(chǔ),目前常用ECG和PPG兩種生理信息測量方法,PPG以非入侵式、無創(chuàng)、測量方便的特點(diǎn),方便日常生活使用。文章先介紹PPG和PPG的工作原理及ECG和PPG的圖像區(qū)別,再到程序設(shè)計(jì)中,通過導(dǎo)入數(shù)據(jù)和計(jì)算采樣率、處理截取的片段、填空NAN、PPG信號濾波、重采樣、分析信號、輸出度量值、數(shù)據(jù)可視化等操作后,可以從蘊(yùn)含多種人體生理信息的復(fù)雜PPG信號中,獲取人體相關(guān)參數(shù),用以判斷人體的健康狀態(tài)。
關(guān)鍵詞:PPG;Python;Heartpy;數(shù)據(jù)分析
中圖分類號:TP391 文獻(xiàn)標(biāo)識碼:A? 文章編號:2096-4706(2023)01-0096-04
PPG Signal Data Analysis Based on Python
ZHOU Jing
(Nanjing Sport Institute, Nanjing? 210046, China)
Abstract: In the clinical work of medicine, the physiological parameters of the human body are important foundation. At present, ECG and PPG are two commonly used methods for measuring physiological information. PPG is non-invasive and convenient to measure, which is convenient to use in daily life. This paper firstly introduces the PPG and working principle of PPG and the image difference between ECG and PPG. And in the program design, through operation of importing data and calculating the sampling rate, processing the intercepted fragments, filling in the blank NAN, PPG signal filtering, resampling, analyzing signals, outputting metric values and data visualization, the relevant parameters of human body can be obtained from complex PPG signals that contain a variety of human physiological information to judge the health status of the human body.
Keywords: PPG; Python; Heartpy; data analysis
0? 引? 言
隨著社會的發(fā)展和人民生活水平的不斷提高,人們對健康日益關(guān)注,越來越多的人希望能夠?qū)崟r了解自己的身體狀況。因此,很多可穿戴的生理參數(shù)檢測設(shè)備應(yīng)運(yùn)而生。
近年來,使用可穿戴式設(shè)備監(jiān)測人體生理參數(shù)的方式已得到了普及,由于成本較低,在這種設(shè)備中監(jiān)測人體信息最常用的方法是使用光電容積脈搏波(Photo Plethysmo Graphy, PPG)信號。PPG利用低強(qiáng)度紅外光照射皮膚,測量光透射或反射到光敏傳感器,檢測經(jīng)過人體血液和組織吸收后的反射光強(qiáng)度的不同,實(shí)時描記被測部位(指端、耳垂、鼻翼等)血液中物質(zhì)變化的光吸收量,來獲取外周為血管的血液容積隨心臟搏動而產(chǎn)生的脈動性變化,根據(jù)光吸收基本定理朗伯-比爾定律,提取出包含心率等多種人體生理信息的PPG信號。
光電容積脈搏波描記法是一種電光技術(shù),將傳感器置于皮膚上方,通過發(fā)射綠光照亮皮膚表層,由傳感器接收反射光強(qiáng)度變化,并通過對PPG信號的周期性檢測與分析得到人體狀態(tài),這種無創(chuàng)方法實(shí)時檢測人體參數(shù)的方式具有非常重要的實(shí)際意義。眾多對光電容積脈搏波的臨床應(yīng)用研究表明了PPG信號中包含了許多人體生理參數(shù),是實(shí)現(xiàn)心率、血氧飽和度、血壓、血管彈性等實(shí)時監(jiān)測的重要手段。
當(dāng)前,全球新一輪科技革命和產(chǎn)業(yè)變革日新月異,移動互聯(lián)網(wǎng)、云計(jì)算、物聯(lián)網(wǎng)、大數(shù)據(jù)、人工智能等新技術(shù)在制造業(yè)和服務(wù)業(yè)的應(yīng)用日益增多。Python作為科研技術(shù)人員常用語言,也順勢成為目前最紅火的高級編程語言之一,Python常應(yīng)用在科學(xué)計(jì)算、網(wǎng)絡(luò)爬蟲、數(shù)據(jù)分析、人工智能、自動化運(yùn)維等眾多領(lǐng)域,它在醫(yī)學(xué)方面也有較好的表現(xiàn)。Python有很多開源包,如Heartpy是一款Python心率分析的工具包。本研究將用Python程序設(shè)計(jì)方法對采集到的PPG信號進(jìn)行數(shù)據(jù)分析。通過對PPG信號數(shù)據(jù)分析獲取相關(guān)生理信息,從而可以合理科學(xué)的地評估人體健康水平。
1? 數(shù)據(jù)處理與數(shù)據(jù)分析
在程序設(shè)計(jì)方案中,整體思路是先將保存到文檔里的PPG信號數(shù)據(jù)和時間數(shù)據(jù)導(dǎo)入,分別獲取到PPG數(shù)據(jù)和計(jì)算得到采樣率,然后通過numpy數(shù)組的填充NAN、信號濾波、重采樣操作對數(shù)據(jù)進(jìn)行基本的預(yù)處理,經(jīng)過預(yù)處理后用Heartpy的process函數(shù)對數(shù)據(jù)進(jìn)行信號數(shù)據(jù)分析,最后用plot相關(guān)函數(shù)將整理、分析好的PPG信號數(shù)據(jù)可視化。數(shù)據(jù)處理和數(shù)據(jù)分析共有八個步驟,分別是:導(dǎo)入數(shù)據(jù)和獲取采樣率、處理截取片段、填充NAN、PPG信號濾波、重采樣、分析信號、輸出度量值、數(shù)據(jù)可視化。
1.1? 導(dǎo)入數(shù)據(jù)和獲取采樣率
在對PPG信號進(jìn)行分析中,最重要的是要導(dǎo)入PPG數(shù)據(jù)和獲取數(shù)據(jù)的采樣率。在實(shí)驗(yàn)階段,收集PPG數(shù)據(jù),發(fā)現(xiàn)通常PPG原始數(shù)據(jù)會保存在“.csv”“.mat”“.txt”后綴文件中,而“.csv”最常用,故使用csv文件獲取PPG數(shù)據(jù)。采樣率,也稱采樣頻率,定義了每秒從連續(xù)信號中提取并組成離散信號的采樣個數(shù),單位為Hz,例如100 Hz,就是每秒鐘采集100個信號樣本,采樣率對PPG信號燈數(shù)據(jù)分析十分重要,直接決定了后面計(jì)算相關(guān)人體信息的準(zhǔn)確程度。
在導(dǎo)入數(shù)據(jù)和采樣率這部分的設(shè)計(jì)中,編寫了init_input函數(shù),專門用于獲取PPG信號數(shù)據(jù)和采樣率。函數(shù)中首先關(guān)注導(dǎo)入文件的有效性,利用os.path.split函數(shù)按照路徑將文件名和路徑分割,截取文件名,再用str.index(“.”),把文件后綴截取出來,用以確定輸入文件的格式,判斷文件后綴是否可用,目前只在有效后綴列表中,加入“.csv”字段,如果導(dǎo)入其他類型文件,會報(bào)錯,并回到起始點(diǎn),重新輸入。確定絕對路徑復(fù)合規(guī)則后,就可以用heartpy.get函數(shù)導(dǎo)入原始數(shù)據(jù)。如圖1所示,反映了文件后綴的兩種狀況。
其次在是否有列名、輸入列名、是否有采樣率、輸入采樣率、計(jì)算采樣率等邏輯設(shè)計(jì)中,采用input函數(shù)獲取信息,if語句判斷交互內(nèi)容。其中在采樣率的獲取中,可以根據(jù)用戶的時間數(shù)據(jù)列,用isinstance判斷相應(yīng)時間類型,判斷是ms-based time(時間戳)還是datetime-based time(日期),正則表達(dá)式選擇datetime-based time格式,使用適用的函數(shù),自動計(jì)算出樣本的采樣率。計(jì)算出采樣率后,函數(shù)返回可用的PPG信號原始數(shù)據(jù)和采樣率。如圖2和圖3所示,是兩種時間數(shù)據(jù)格式。
設(shè)計(jì)有容錯措施,整個函數(shù)的執(zhí)行外,有while True循環(huán)執(zhí)行,除非是正確執(zhí)行,return返回?cái)?shù)據(jù)并退出函數(shù),不然會一直在本函數(shù)執(zhí)行重新輸入。
1.2? 處理截取片段
由于有時獲取的樣本采樣率高、采樣時間長,導(dǎo)致采樣數(shù)據(jù)量較大,將大量的數(shù)據(jù)處理完,再可視化,屏幕幾乎是密密麻麻的小點(diǎn),無法直接觀察PPG的信號規(guī)律,所以只選取某段感興趣的數(shù)據(jù)進(jìn)行分析,之后程序會提示選擇的是哪個時間段數(shù)據(jù)。如圖4所示,是截取后的片段圖像。
1.3? 信號數(shù)據(jù)預(yù)處理
1.3.1? 填充NAN
本研究使用nump.nan_to_num函數(shù),用數(shù)值數(shù)據(jù)(0)替換NaN值的時間段,避免分析的某些數(shù)值部分失敗。填充完后,如圖5所示。
1.3.2? PPG信號濾波(filter)
收集到的原始信號數(shù)據(jù)有好有壞,理想情況下的信號規(guī)律、穩(wěn)定,不理想的數(shù)據(jù)雜亂、不穩(wěn)定,但有某種規(guī)律的趨勢,可以通過濾波器抑制噪聲,將不理想的數(shù)據(jù)變得稍微規(guī)整些。樣本根據(jù)時間進(jìn)行采樣,并進(jìn)行描記信號數(shù)據(jù),形成時域數(shù)據(jù),這是一個以時間為參照的區(qū)域數(shù)據(jù)。根據(jù)傅里葉變換,時域的曲線可以由多個曲線疊加形成,如果把這多個曲線沿z軸展開,可以看到每個曲線的頻率,再從z軸看,形成了這個時域曲線的頻域,一個以頻率參照的區(qū)域數(shù)據(jù),此時把過低的頻率和過高的頻率過濾掉,這時再從時域角度看,就把紛雜的不理想數(shù)據(jù)給消除掉,形成較為規(guī)律穩(wěn)定的信號數(shù)據(jù),可以從信號中提取有用信息。也即通過傅里葉變換先把時域變換成頻域,對頻域范圍進(jìn)行過濾,再從頻域變換成時域。
本設(shè)計(jì)中,使用heartpy.filter_signal函數(shù),filtertype選擇“bandpass”(巴特沃斯)帶通濾波器,過濾掉頻率小于0.8 Hz(≤48 bpm)和大于3.5 Hz(≥210 bpm)的雜亂信號數(shù)據(jù)。
1.3.3? 重采樣(resample)
采樣率對PPG信號數(shù)據(jù)的分析至關(guān)重要,但采樣率過低,計(jì)算BPM沒問題,但要計(jì)算HRV(心率變異性)、SDNN、SDSD時會不太準(zhǔn)確,所以如果要做適應(yīng)性閾值分析時,會重采樣到100 Hz以上。
設(shè)計(jì)中先用if語句進(jìn)行判斷,如果采樣率過低,小于101 Hz,會計(jì)算適當(dāng)倍數(shù)到105 Hz,再使用scipy.signal的resample函數(shù)進(jìn)行重采樣。如果采樣率超過101,則完成了設(shè)計(jì)的“預(yù)處理”環(huán)節(jié),然后進(jìn)行信號分析。如圖6和圖7所示,分別是重采樣前后對橫坐標(biāo)進(jìn)行對比。
1.4? 分析信號(process)
PPG信號是包含多種對心血管系統(tǒng)有關(guān)的有價(jià)值的復(fù)雜信息,通過數(shù)據(jù)分析,可以了解人體健康信息,比如每分鐘心跳數(shù)(BPM),俗稱心率,在ECG中能分析出來,在PPG中也同樣能分析出來。
分析數(shù)據(jù)環(huán)節(jié),使用Heartpy包的process函數(shù),只要確定較好的PPG信號數(shù)據(jù)和較為準(zhǔn)確以及合適的采樣率,process函數(shù)就可以根據(jù)檢測到的峰值自動化計(jì)算時間序列測量值,輸出度量包含每分鐘心跳數(shù)(BPM)、節(jié)拍間隔(IBI)、RR間隔的標(biāo)準(zhǔn)差(SDNN)、連續(xù)差異的標(biāo)準(zhǔn)偏差(SDSD)、連續(xù)差均方根(RMSSD)、20 ms以上的連續(xù)差異的比例(pNN20)、50 ms以上的連續(xù)差異的比例(pNN50)、RR間隔的中值絕對偏差(MAD)等。
其中process也還可以加入其他的選項(xiàng),例如本程序中加入的report_time和clean_rr選項(xiàng),分別是否報(bào)告process執(zhí)行的總處理時間和清洗峰-峰間隔,它將嘗試識別并拒絕異常值,拒絕大多數(shù)的峰值噪聲區(qū)(低置信度變紅)。
1.5? 輸出度量值
在process分析操作之后,會返回兩個字典,一個是wording_data工作數(shù)據(jù)字典,還有一個是measures度量值字典,measures的每個數(shù)據(jù)都是經(jīng)過process計(jì)算分析后的度量值,總共有13個,這里使用for遍歷數(shù)組的方法,把字典的keys作為變量帶入,提取并展示每個度量值。如圖8所示,表現(xiàn)了程序最后的輸出。
其中,BPM(beat per minute)是每分鐘心跳數(shù),IBI(inter beat interval)是節(jié)拍間隔,SDNN(standard deviation of RR intervals)是RR間隔的標(biāo)準(zhǔn)差,SDSD(standard deviation of successive differences)是連續(xù)差異的標(biāo)準(zhǔn)偏差,RMSSD(root mean square of successive differences)是連續(xù)差均方根,pNN20(proportion of successive differences above 20 ms)是20 ms以上的連續(xù)差異的比例,pNN50(proportion of successive differences above 50 ms)是50 ms以上的連續(xù)差異的比例,MAD(median absolute deviation of RR intervals)是RR間隔的中值絕對偏差,sd1(the standard deviation of instantaneous beat-to-beat interval variability)是瞬時心跳到心跳間隔變異性,sd2(the continuous long-term R/R interval variability)是連續(xù)的長期R/R間隔變異性,sd1/sd2是SD1/SD2比值,breathing rate是呼吸率。
另外可以根據(jù)計(jì)算出來的SD1、SD2、S、SD1/SD2,使用心率變異性的非線性幾何分析的方法,畫出龐加萊散點(diǎn)圖,如圖9所示,是彭加萊散點(diǎn)圖的樣圖。
1.6? 數(shù)據(jù)可視化(plot)
Heartpy中有plotter函數(shù),專門對處理完的信號數(shù)據(jù)進(jìn)行二維繪圖-曲線圖,它的內(nèi)部構(gòu)造,也是使用的matplotlib包,帶入process返回的wording_data工作數(shù)據(jù)字典和measures度量值字典,即可進(jìn)行繪圖。在原圖基礎(chǔ)上進(jìn)行繪畫,加入綠點(diǎn)后如圖10所示。
2? 結(jié)? 論
本研究利用Python高級語言設(shè)計(jì)程序?qū)PG信號進(jìn)行數(shù)據(jù)分析,通過導(dǎo)入數(shù)據(jù)和采樣率、是否選取片段、填空NAN、PPG信號濾波、重采樣、分析信號、輸出度量值、數(shù)據(jù)可視化等功能設(shè)計(jì)后,完成了基于Python的PPG信號數(shù)據(jù)分析,不僅獲得了有關(guān)人體健康的基本信息如心率、呼吸率等,而且能根據(jù)節(jié)拍間隔、SDNN、SDSD、RMSSD等數(shù)據(jù)來分析心率變異性,還可以根據(jù)分析出來的SD1、SD2、S、SD1/SD2,畫出龐加萊散點(diǎn)圖,可以從蘊(yùn)含多種人體生理信息的復(fù)雜PPG信號中,獲取人體相關(guān)參數(shù),用以判斷人體的健康狀態(tài)。給醫(yī)務(wù)人員最直觀的數(shù)據(jù)呈現(xiàn),讓程序作為工具,輔助醫(yī)學(xué)發(fā)展。
參考文獻(xiàn):
[1] Richard_LiuJH. 光學(xué)心率測量原理 [EB/OL].(2015-11-04)[2022-05-16].https://blog.csdn.net/richard_liujh/article/details/49615395
[2] CVETKOVIC D,?BEYLI E D,COSIC I.Wavelet Transform Feature Extraction from Human PPG,ECG,and EEG Signal Responses to Elf Pemf Exposures:A Pilot Study [J].Digit Signal Process,2007,18(5):861-874.
[3] 梁康,孫迎.基于智能手機(jī)提取PPG測心率方法準(zhǔn)確性研究 [J].生物醫(yī)學(xué)工程學(xué)進(jìn)展,2014,35(4):191-195.
[4] 許彥坤,石萍,喻洪流.基于成像式光電容積描記技術(shù)的人體生理參數(shù)檢測研究進(jìn)展 [J].北京生物醫(yī)學(xué)工程,2017,36(6):648-654.
[5] 鐘敏,陳丹妮,陳思思.光電容積描記技術(shù)測量心率的應(yīng)用研究 [J].黑龍江科技信息,2015(18):60-61.
作者簡介:周晶(1983.03—),女,漢族,江蘇南京人,副教授,博士,研究方向:數(shù)據(jù)挖掘。
收稿日期:2022-06-24
基金項(xiàng)目:江蘇省高校哲學(xué)社會科學(xué)研究課題“基于大數(shù)據(jù)分析的體育院校學(xué)生用戶行為模式研究”(2021SJA0392);教育部產(chǎn)學(xué)合作協(xié)同育人項(xiàng)目(202101224027);江蘇高?!扒嗨{(lán)工程”項(xiàng)目(蘇教師函〔2022〕2號)