{"id":836,"date":"2017-12-30T00:14:03","date_gmt":"2017-12-30T08:14:03","guid":{"rendered":"http:\/\/www.tranzoa.net\/~alex\/blog\/?p=836"},"modified":"2017-12-30T00:14:03","modified_gmt":"2017-12-30T08:14:03","slug":"a-new-heartbeat-picture","status":"publish","type":"post","link":"https:\/\/www.tranzoa.net\/~alex\/blog\/?p=836","title":{"rendered":"A New Heartbeat Picture"},"content":{"rendered":"<p>Over the last few months I&#8217;ve had reason to watch my heartbeat using information from a <a href=\"https:\/\/www.tranzoa.net\/~alex\/blog\/?p=331\">CMS-50D Pulse Oxi<\/a> device. When all is normal, a display from a <a href=\"https:\/\/www.tranzoa.net\/alex_pulse\/\" target=\"_blank\" rel=\"noopener\">web app<\/a> I&#8217;ve written to show the Pulse Oxi&#8217;s output shows something like this:<\/p>\n<p><img decoding=\"async\" src=\"images\/pulse_normal_01.png\" alt=\"Normal heartbeat 12\/29\/2017 13:51:55\" \/><\/p>\n<p>All well and good.<\/p>\n<p>But, currently, if I put my heart under a bit of load, it doesn&#8217;t just speed up as it should. Instead, it does something like this:<\/p>\n<p><img decoding=\"async\" src=\"images\/pulse_bad_01.png\" alt=\"Loaded heartbeat 12\/29\/2017 13:46:18\" \/><\/p>\n<p>OK. What is &#8220;this&#8221;?<\/p>\n<p>&#8220;This&#8221; is the pattern of 1 over-sized beat followed by 3 to 5 fast, weak beats followed by a delay of a beat of so. This is an unpleasant, very breathless pattern.<\/p>\n<p>The thing is, this pattern isn&#8217;t all that&#8217;s going on. And, it raises the question, &#8220;What about a longer view?&#8221; The waveform display shows about 10 seconds of heartbeat. That&#8217;s great for general use, but you need to watch the display carefully to see trends and changes that happen over 10&#8217;s of seconds, let alone minutes.<\/p>\n<p>A normal waveform display is also unsatisfactory in another way: The beats-per-minute number lags. In practice, BPM displays tend to be averages over 15 or more seconds. Fine for when all is well, but easily misleading when not.<\/p>\n<p>So, examine the smaller graph in each of those two screen shots.<\/p>\n<p>It shows a histogram of the last 120 peak-to-peak durations in beats per minute. Both the low and high peaks are counted, so this histogram shows the last 60 heart beats. The first graph above shows each half-beat has been plus or minus 5 or so BPM of the average heart rate. Normal.<\/p>\n<p>Histogram details:<\/p>\n<p style=\"padding-left: 30px;\">Tall lines show where many peak-to-peak durations have been at a single heart rate.<\/p>\n<p style=\"padding-left: 30px;\">Short lines show heart beats of rarely seen durations.<\/p>\n<p style=\"padding-left: 30px;\">Each peak-to-peak half-beat in the histogram is given a short line segment. Fully colored segments are recent beats. Faded segments are older beats. Segments are stacked in each beat-per-minute &#8220;bin&#8221;, oldest first, to make the histogram.<\/p>\n<p style=\"padding-left: 30px;\">Ticks are painted at 10 BPM intervals along the bottom.<\/p>\n<p style=\"padding-left: 30px;\">The yellow line marks the current, average heart rate. It is usually close to the tallest area of the histogram.<\/p>\n<p>The second graph above shows when the heart does not beat consistently &#8211; misses or adds beats.<\/p>\n<p>This histogram says, &#8220;Look carefully at this heart.&#8221;<\/p>\n<p>Over time, you can watch a heart go in and out of sync. And it&#8217;s fun to watch the heart speed up and slow down, what with the columns marching back and forth on the histogram.<\/p>\n<p>Here is a screen shot of when the heart beat was bad, but is now looking good:<\/p>\n<p><img decoding=\"async\" src=\"images\/pulse_bad_to_normal_01.png\" alt=\"Improving heartbeat 12\/29\/2017 13:47:08\" \/><\/p>\n<p>Anyway, it&#8217;s been amusing to play with this stuff. And such a FIFO histogram could certainly be used in other applications.<\/p>\n<p>A real-time display of either my current heart beat or a random, historical recording is at <a href=\"https:\/\/www.tranzoa.net\/alex_pulse\/\" target=\"_blank\" rel=\"noopener\">Alex&#8217;s Pulse<\/a> &#8211; if the special, heartbeat server is running &#8230; which it rarely is, given the bandwidth this server consumes.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Over the last few months I&#8217;ve had reason to watch my heartbeat using information from a CMS-50D Pulse Oxi device. When all is normal, a display from a web app I&#8217;ve written to show the Pulse Oxi&#8217;s output shows something &hellip; <a href=\"https:\/\/www.tranzoa.net\/~alex\/blog\/?p=836\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-836","post","type-post","status-publish","format-standard","hentry","category-bloggy-things"],"_links":{"self":[{"href":"https:\/\/www.tranzoa.net\/~alex\/blog\/index.php?rest_route=\/wp\/v2\/posts\/836","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tranzoa.net\/~alex\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tranzoa.net\/~alex\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tranzoa.net\/~alex\/blog\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tranzoa.net\/~alex\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=836"}],"version-history":[{"count":10,"href":"https:\/\/www.tranzoa.net\/~alex\/blog\/index.php?rest_route=\/wp\/v2\/posts\/836\/revisions"}],"predecessor-version":[{"id":846,"href":"https:\/\/www.tranzoa.net\/~alex\/blog\/index.php?rest_route=\/wp\/v2\/posts\/836\/revisions\/846"}],"wp:attachment":[{"href":"https:\/\/www.tranzoa.net\/~alex\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=836"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tranzoa.net\/~alex\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=836"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tranzoa.net\/~alex\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=836"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}