معرفی پایگاه داده MIT-BIH Arrhythmia فیزیونت و نحوه خواندن آن در پایتون
سایت فیزیونت یک منبع پایگاه داده رایگان برای تحقیقات پزشکی هست که توسط آزمایشگاه فیزولوژی محاسباتی MIT مدیریت میشود. پایگاه داده MIT BIH Arrhythmia برای تحقیقات روی بیماریهای آریتمی قلبی ثبت شده است. این پایگاه داده شامل 48 ثبت نیم ساعته از سیگنال ECG است که به فرمت .dat قابل دانلود هست. در این پست میخواهیم با این پایگاه داده و چارچوب تحقیقات روی آن آشنا شویم، در انتها هم توضیح می دهیم که چطور می توان این داده را در پایتون خواند.
پایگاه داده MIT BIH Arrhythmia
این داده شامل 48 ثبت نیم ساعته سیگنال قلبی (ECG) هست که از47 نفر ثبت شده است. فایلها به صورت .dat در سایت قرار گرفته اند که همراه هر فایل یک فایل .atr و یک فایل hea قرار دارد. در اینجا محتوای هر فایل رو توضیح خواهیم داد.
ویدیوی در یوتیوب قرار داده شده است.
فایل .dat در پایگاه داده MIT BIH Arrhythmia
فایل اصلی ما برای تحقیقات است و داخل آن سیگنال ECG دو کاناله برای نیم ساعت قرار گرفته است. فرکانس نمونهبرداری این سیگنال 360 هست. با در نظر گرفتن این مشخصات (30*60*360) میتوان گفت که داخل هر فایل .dat یک آرایه به اندازه حدودی 648000 *2 وجود دارد.
با داشتن فقط فایل .dat کاری رو نمیتونیم پیش ببریم، باید برچسب فایلها را هم داشته باشیم.
فایل .atr در پایگاه داده MIT BIH Arrhythmia
در داخال این فایل، برچسب تک تک QRS قرار گرفته است. این برچسبها توسط دو پزشک متخصص مشخص شده است. هر علامت معنی خاصی دارد و در واقع مشخص میکند که الگوی QRS چه نوع آریتمی را مشخص میکند که در ادامه با این علامت گذاری ها آشنا خواهیم شد.
فایل .hea در پایگاه داده MIT BIH Arrhythmia
در این فایلها اطلاعات اضافی مرتبط با هر ثبت از قبلی اسم ثبت، تعداد سمپلها و اینجور موارد هست. که ما به این اطلاعات خیلی نیازی نداریم. و در تحقیقات محتوای فایل .dat و .atr برای ما اهمیت دارند.
هدف از ثبت پایگاه داده MIT BIH Arrhythmia
پایگاه داده MIT BIH Arrhythmia با هدف تحقیقات روی تشخیص آریتمی قلبی ثبت شده است. در آریتمی های قلبی، QRS میتواند الگوی زمانی متفاوتی همانند شکل زیر داشته باشد.
نحوه علامت گذاری QRS در پایگاه داده MIT BIH Arrhythmia
تمام QRSهای هر فایل توسط دو پزشک متخصص لیبل گذاری شده اند و میتوان به طور کلی این ها در 5 دسته طبقه بندی کرد. مقالات برای ارزیابی رویکردهای خود، مسئله را 5 کلاسه در نظر میگیرند:
- (N): ضربان آریتمی یعنی ضربان های غیر نابجا (non-ectopic beats)
- (S): ضربانات نابجای فوق بطنی (supraventricular ectopic beats)
- (V): ضربانات نابجای بطنی ( ventricular ectopic beats)
- (F): ضربانات تلفیقی (fusion beats)
- (U): ضربانات طبقه بندی نشده (unclassifiable and paced beats)
هدف در این تحقیقات این است که یک سیستمی طراحی بکنیم با پردازش سیگنال قلبی (ECG) نوع آریتمی قلبی فرد را تشیخص دهد. یعنی بتواند تمام QRS های سیگنال ECG را برچسب گذاری کند. یعنی مشخص کند که در یک داده مثلا یک ساعته، چه تعداد از QRS ها الگوی نوع N، چه تعداد S, V, F یا U را دارد.
خوبی این نوع سیستم اینه که در سریعترین زمان ممکن این اطلاعات را در اختیار پزشک قرار میدهید و فرایند تشخیص نوع بیماری قلبی فرد تسریع و البته دقیقتر میکند.
حالا برای طراحی چنین سیستمی باید چیکار کنیم؟ اول باید از هر گروه تعدادی QRS جدا کنیم و با کمکشون مدل را آموزش دهیم تا بتواند هر QRS را به درستی در یکی از 5 گروه قرار دهد.
البته قبل از آن یک مرحله اولیه برای تشخیص موقعیت QRS طراحی کنیم که از سیگنال ECG فرد موقعیت QRS را تشخیص داده و آنها را جدا کند. حال بعد از اینکه QRS هارا جدا کرد و نوع هر کدام را نیز تشخیص دهد.
خب برای شروع ما لازم داریم براساس برچسبهای مشخص شده توسط پزشکان داده آموزش را آماده کنیم. اگر پایگاه داده را بررسی کنید متوجه میشوید که علامتها لزوما N-U نیست و کلی علامت وجود دارد! تکلیف چیه!؟ در زیر توضیح میدهیم که هر علامت در چه دسته ای قرار میگیرد و موقع جدا کردن QRS آنها را باید در چه دسته ای قرار دهیم.
علامت مخصوص برای ضربان های نرمال
علامت مخصوص برای ضربان های فوق بطنی
علامت مخصوص برای ضربان های بطنی
علامت مخصوص برای ضربان های فیوژن
علامت مخصوص برای ضربان های ناشناخته
مطالعه علامتها در فیزیونت
- https://archive.physionet.org/physiobank/database/html/mitdbdir/intro.htm#annotations
- https://archive.physionet.org/physiobank/database/html/mitdbdir/tables.htm#allbeats
نحوه خواندن فایل .dat فیزیونت در پایتون
ما قبلا در یک پستی نحوه خواندن فایل .dat در متلب را توضیح داده ایم، در این بخش نحوه خواندن این نوع داده ها در پایتون رو توضیح میدهیم.
ویدیو در یوتیوب قرار داده شده است.
مرحله اول: نصب کتابخانه wfdb
برای خواندن پایگاه داده MIT BIH Arrhythmia در پایتون لازم است که در ابتدا کتابخانه wfdb را نصب کنیم. برای اینکار کد زیر را در بخش command prompt اجرا میکنیم.
Python
pip install wfdb or conda install -c conda-forge wfdb
مرحله دوم: خواندن فایل .dat در پایتون
حال بعد از نصب کتابخانه wfdb میتونیم با دستور زیر فایل .dat را در پایتون بخوانیم.
Python
Filename= 'MIT-BIH-Arrhythmia/100' signals, fields = wfdb.rdsamp(Filename)
مسیر و اسم فایل .dat را مشخص میکنیم و سیگنال را load میکنیم. داخل متغیر signals سیگنال ECG قرار میگیرد و در داخل متغیر fields هم اطلاعاتی از قبلی فرکانس نمونه برداری، طول سیگنال، تعداد کانالها، واحد ثبت شده سیگنال ECG و غیره قرار میگیرد.
حال به سیگنال ECG در محیط پایتون دسترسی داریم و میتوانیم عملیات لازم رو روی آن انجام دهیم. در زیر ما سیگنال ECG کانال اول برای 5 ثانیه را نشان داده ایم.
Python
t= np.linspace(0,10,360*5) plt.plot(t,signals[:360*5,0],linewidth=1) plt.axis([0,10,-0.7,1]) plt.show()
مرحله سوم: خواندن فایل .atr در پایتون
بعد از خواندن فایل، برای ساخت داده آموزشی، لازم است که در ابتدا لیبل هر کدام از QRS را داشته باشیم. برای اینکار لازم است که فایل atr را همانند زیر بخوانیم.
Python
annotation = wfdb.rdann('MIT-BIH-Arrhythmia/100', 'atr') fs=annotation.fs
داخل فایل annotation خونده شده، موقعیت و لیبل هر کدام از QRS ها قرار دارد. طبق کد زیر میتوانیم به این لیبلها و موقعیتها دسترسی داشته باشیم.
Python
peaks_position = annotation.sample peaks_type = annotation.symbol
خب دیگه تمومه! بستر برای تحقیقات آماده شده و از اینجا به بعد متونید تحقیقاتتون رو پیش ببرید.
موفق باشید…
در دوره تخصصی پردازش سیگنال قلبی، یکی از پایگاه داده هایی که برای پروژه ها استفاده میکنیم، پایگاه داده MIT BIH Arrhythmia Database است.
دیدگاه ها