Skip to content

Instantly share code, notes, and snippets.

@raphaelvallat
Last active December 5, 2023 13:45
Show Gist options
  • Star 12 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save raphaelvallat/55624e2eb93064ae57098dd96f259611 to your computer and use it in GitHub Desktop.
Save raphaelvallat/55624e2eb93064ae57098dd96f259611 to your computer and use it in GitHub Desktop.
Extract respiration signal and respiratory rate from ECG using R-R interval.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Extract respiration signal and respiratory rate from ECG using R-R interval.\n",
"\n",
"Inspired by Sarkar et al. 2015.\n",
"\n",
"**Dependencies**:\n",
"- numpy\n",
"- scipy\n",
"- matplotlib and seaborn (for plotting)\n",
"- mne (for downsampling and filtering)\n",
"\n",
"---\n",
"**Author**: Raphael Vallat <raphaelvallat9@gmail.com>\n",
"\n",
"**Date**: September 2018"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\ncH1NTQ00Gg2Sk5Oh1+uRkpKCX//619BoLGvoKpUK1rzPXFqLvjKkDgXEHaGLs7rPF8ycvJycnDAp\n3B9fX+nNyurq4qSYw9jFpe+6O6I8c/KqEmWvddXIKysvDw3uNveEiProXGUtS7zltIuT+d/GlvdR\nrCScReXpPITmLI2Jdm4JXbzsya4a+dvduNG+OPrpNV6ZPW1Frj5MMSXyj3/8AytXrjQ6PnLkSDg5\nOcHNrTciwt29Z5Ta2tpqdL2vry+mTJmCp556Cnfu3EF2djYKCgqQm5trUT38/T1sWuzj42M+Wd5g\nRTwV9/Jyh5+f6W16TcnLUyvsPB7y94Svl/FGO3LgbUHdbWHUCB3qf+i1Tft6ay0qry95PTNvHP78\nySXDZ28vN1nrP9zfA/U3e9LSjxzhJWtZfqI9NLRaF4vLs+Z99BL5KbTuwvL0emZIeAkAnh6udnt+\nL095fzcAGPmTcNbq6yNse/buwxRTIgkJCfj2228lz6WlpaG9vd3wmVMeHh7GD8t3omu1WmRlZSE/\nP99iJXLnzk9Wz0R8fDxw9+5PFu9dPtj4salN8Lm1pV1y/wvAMnl1dQkbe3NTK5jomL0IGaHDVV6n\n3tXR1Wfd7UGoSIn81NJmsjxz8ooa44s/8z7ru7plrX/wQx44x32QuayOtk7BZ3233mx5Nr2PokgL\nqfLcNc6GaLFuG58/fXoIPjp7tadovflns5XuTqE821o78N//Ntvch/Wl/B6IFethYWGora01fK6r\nq4NOp0NAgHBv8cbGRhQVFeHFF1+Ep2fPA7W3t8PV1fJU54wxSLhaLIa/xepQo0Vkl1dBZVYWpuT1\nRfWtft/PWtYsnIj175w1fHZ1Vsv6O4p9FmoLn60veYnt2q4uTrLWf2KYPz74v5530ttDI2tZYvOK\nk8rydmDN++ghMmep1cblubv2KhEntW1the9zcZIoy964i3yAapE87d2HPRCO9fT0dJSVleHy5cto\nbm5GQUEB0tLSoBaH3ul0OHnyJAoLC9HZ2Ylr166hqKgImZmZDqr50Mbetl0l7e7ubvKOn1w14lQa\nti42FColuR20o4brsDojEmsyJxiFqdobsYKU27Huo5PekZIP329i69oOfgZfLpWMnLiJAgeGRNqT\n5ORkPPfcc8jKysLs2bOh0+mQl5cHALhx4waio6Nx48YNqNVqFBUV4dKlS5g6dSqeeeYZzJ8/HytW\n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\n/h+psmAjsq+SXwAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1a1a879f28>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"\"\"\"\n",
"Extract respiration signal and respiratory rate from ECG using R-R interval.\n",
"\n",
"Inspired by Sarkar et al. 2015.\n",
"\n",
"Dependencies:\n",
"- numpy\n",
"- scipy\n",
"- matplotlib and seaborn (for plotting)\n",
"- mne (for downsampling and filtering)\n",
"\n",
"---\n",
"Author: Raphael Vallat <raphaelvallat9@gmail.com>\n",
"Date: September 2018\n",
"\"\"\"\n",
"import numpy as np\n",
"import seaborn as sns\n",
"import matplotlib.pyplot as plt\n",
"from scipy.misc import electrocardiogram\n",
"from scipy.interpolate import splrep, splev\n",
"from mne.filter import filter_data, resample\n",
"from scipy.signal import detrend, find_peaks\n",
"%matplotlib inline\n",
"sns.set(context='talk')\n",
"\n",
"# Load and preprocess data\n",
"ecg = electrocardiogram()\n",
"sf_ori = 360\n",
"sf = 100\n",
"dsf = sf / sf_ori\n",
"ecg = resample(ecg, dsf)\n",
"ecg = filter_data(ecg, sf, 2, 30, verbose=0)\n",
"\n",
"# Select only a 20 sec window\n",
"window = 20\n",
"start = 155\n",
"ecg = ecg[int(start*sf):int((start+window)*sf)]\n",
"\n",
"# R-R peaks detection\n",
"rr, _ = find_peaks(ecg, distance=40, height=0.5)\n",
"\n",
"plt.plot(ecg)\n",
"plt.plot(rr, ecg[rr], 'o')\n",
"plt.title('ECG signal')\n",
"plt.xlabel('Samples')\n",
"_ =plt.ylabel('Voltage')"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Mean HR: 99.74 bpm\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXUAAAENCAYAAADwjPVkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzsvXmUVOWd//++ta+9700v7CCC7IiA\nIAokmqhRnKgTHDUbxmiiMb+omZx8Y6KJoxgdE3HM0USNoxF1xNEYNQI6KrKIgOyydQO90Ht37dv9\n/XHvc+tWdS13q6qu6ud1jsemu6ruU0/V/dzPfX82hmVZFhQKhUIpCHS5XgCFQqFQtIMadQqFQikg\nqFGnUCiUAoIadQqFQikgqFGnUCiUAoIadQqFQikgqFEvMNasWYPJkycn/W/btm0xj9+1axd+9KMf\nYfHixZgxYwZWrVqFRx55BAMDA8Ne2+Px4L/+679w1VVXYe7cuZgxYwYuvfRSrFu3DoODg4rWescd\ndyh+rwCwbds2TJ48GceOHVP1Oqk4ffo0Jk+ejA8//DBjx1CKFnsIAB988AEOHTok/Hvy5Ml48cUX\nVb8uJfsYcr0AivZcfPHF+NWvfpXwb8XFxcLPL7zwAh544AFcf/31eOKJJ1BaWopDhw7hoYcewpYt\nW/D8888Lj+/u7saaNWsQiURwyy23YObMmdDr9fjiiy/whz/8AZs3b8aGDRtgtVqz8h4Js2bNwkcf\nfYSysrKsHnek8Pjjj0Ov16t6jTNnzuB73/se/vSnP2HKlCkAgI8++ghOp1OLJVKyDDXqBYjZbEZl\nZWXKxxw6dAgPPPAAfvrTn+LGG28Uft/Q0IApU6bgq1/9Kp555hnBC/z3f/93eL1ebNy4MebC0NDQ\ngAULFmDlypX429/+FvNa2cBkMqV9r4VMSUmJ6tdIVH84mvc036Hyyyhlw4YNcDqd+Na3vjXsbw0N\nDXj22WeFv7W2tmLz5s348Y9/HGPQCeXl5Xj99dcTvhbB5XLh5z//ORYsWIB58+bhkUceQSQSiXlM\nZ2cnfvKTn2D+/PmYN28ebrrpJuzfv1/4++OPP45vfvOb+NnPfobZs2fjRz/6UYz88sYbb2DatGno\n6emJed0bb7wRP/rRjwAAgUAA69atw9KlSzFz5kx84xvfwN///veYx+/atQvXXnstzjvvPKxatQrb\nt29PuZdkDc888wzOP/98rFq1Ch6PR9Kx/vKXv2DlypU499xzsXTpUjz44IMIBAIAgNdeew2LFi3C\nxo0bsWzZMsycORM33XQTjh49KjxfLL8kW8exY8dw6623YsGCBZg2bRouvPBC/Md//AfC4TBOnz6N\niy++GADw3e9+F3fffTeA4fLLBx98gGuvvRazZs3C+eefj3vvvRf9/f3C35cvX46nnnoKd9xxB2bP\nno3Fixfj7rvvhsfjSbl3FO2hRn2Usm/fPsyYMQMGQ+KbtTlz5gjeGjFqCxcuTPp6DQ0NSV8LAO64\n4w5s27YNjz76KF544QW0tLRg586dwt89Hg/WrFkDr9eLP//5z3jppZcwefJkXHvttTFa7+7du2Ey\nmbBx40bcfvvtMcdYtWoVbDYb3nrrLeF3nZ2d2LZtG66++moAwD333INNmzbhgQcewBtvvIFvfvOb\nuPfee/HSSy8BAE6dOoWbb74ZjY2NePXVV/Hzn/8c//mf/5n0fYl5++238d///d9Yt24dbDZb2mN9\n8MEHePjhh3HXXXfh3XffxX333YeXX34Zf/7zn4XX7O/vxx//+Ef89re/FZ53ww03JIx5JFqHTqfD\njTfeCL1ej+effx5vv/02br75Zjz99NN45513UFtbiw0bNgAA1q1bh5///OfDXu+9997D97//fSxY\nsACvvvoqfv/732P37t248cYbEQqFhMc9/vjjOPfcc/Haa6/hJz/5Cd58800888wzkvaOoh1UfilA\n3n33XcyaNWvY78ePH49XXnkFAGcsGhoaJL1eb28vAAzTrZcvX46+vj7h39OnT8dzzz037PnHjx/H\nhx9+iCeffFK4MDz44IPYsWOH8Ji33noLXV1dePPNN2EymQAAd999Nz777DM8++yz+O1vfys89sc/\n/jHKy8sBcFo/wWw247LLLsPGjRtxww03AAA2btyIqqoqLF68GC0tLXjzzTfxwgsvYO7cuQCAxsZG\nnDp1Ck899RSuvfZavPzyy3A4HPjNb34Dk8mECRMm4N5778Vtt92Wdp9uuukmjBs3DgAkHevEiRNg\nGAa1tbWoq6tDXV0dnnnmGRQVFQmvGQqF8MADDwivsW7dOlx00UV44403sGbNmrTr6O3txQ033IDV\nq1ejtLQUAHfn8vTTT+Pw4cO49NJLhc+1qKgooY7+1FNPYcmSJcIdwbhx4/DII4/giiuuwObNm7Fi\n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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x117fea4e0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# R-R interval in ms\n",
"rr = (rr / sf) * 1000\n",
"rri = np.diff(rr)\n",
"\n",
"# Interpolate and compute HR\n",
"def interp_cubic_spline(rri, sf_up=4):\n",
" \"\"\"\n",
" Interpolate R-R intervals using cubic spline.\n",
" Taken from the `hrv` python package by Rhenan Bartels.\n",
" \n",
" Parameters\n",
" ----------\n",
" rri : np.array\n",
" R-R peak interval (in ms)\n",
" sf_up : float\n",
" Upsampling frequency.\n",
" \n",
" Returns\n",
" -------\n",
" rri_interp : np.array\n",
" Upsampled/interpolated R-R peak interval array\n",
" \"\"\"\n",
" rri_time = np.cumsum(rri) / 1000.0\n",
" time_rri = rri_time - rri_time[0]\n",
" time_rri_interp = np.arange(0, time_rri[-1], 1 / float(sf_up))\n",
" tck = splrep(time_rri, rri, s=0)\n",
" rri_interp = splev(time_rri_interp, tck, der=0)\n",
" return rri_interp\n",
"\n",
"sf_up = 4\n",
"rri_interp = interp_cubic_spline(rri, sf_up) \n",
"hr = 1000 * (60 / rri_interp)\n",
"print('Mean HR: %.2f bpm' % np.mean(hr))\n",
"\n",
"# Detrend and normalize\n",
"edr = detrend(hr)\n",
"edr = (edr - edr.mean()) / edr.std()\n",
"\n",
"# Find respiratory peaks\n",
"resp_peaks, _ = find_peaks(edr, height=0, distance=sf_up)\n",
"\n",
"# Convert to seconds\n",
"resp_peaks = resp_peaks\n",
"resp_peaks_diff = np.diff(resp_peaks) / sf_up\n",
"\n",
"# Plot the EDR waveform\n",
"plt.plot(edr, '-')\n",
"plt.plot(resp_peaks, edr[resp_peaks], 'o')\n",
"_ = plt.title('ECG derived respiration')"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Mean respiratory rate: 0.50 Hz\n",
"Mean respiratory period: 2.00 seconds\n",
"Respiration RMS: 1.77 seconds\n",
"Respiration STD: 0.24 seconds\n"
]
}
],
"source": [
"# Extract the mean respiratory rate over the selected window\n",
"mresprate = resp_peaks.size / window\n",
"print('Mean respiratory rate: %.2f Hz' % mresprate)\n",
"print('Mean respiratory period: %.2f seconds' % (1 / mresprate))\n",
"print('Respiration RMS: %.2f seconds' % np.sqrt(np.mean(resp_peaks_diff**2)))\n",
"print('Respiration STD: %.2f seconds' % np.std(resp_peaks_diff))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Using FFT"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Maximum frequency: 0.58 Hz\n"
]
},
{
"data": {
"image/png": "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\nO2rzKQkhhJSj3k/vQAghpCwK/oQQYoco+BNCiB2i4E8IIXaIYUtPaEEIIaTeo5E/IYTYIQr+hBBi\nhyj4E0KIHaLgTwghdoiCPyGE2CEK/oQQYoco+BNCiB2i4E8IIXaIgj8hhNihehH8ExISMHz4cISH\nh2Pw4MG4fPlyuft988036NWrFyIjIzF9+nQUFhbWckutg9D++sc//oH27dsjIiICERER+Mc//lHL\nLbUuV69erXTxoV9//RV9+/ZFREQEJk2ahIyMjFpsnXWqqs/eeecdtGvXjn+PRURE1GLrrMeFCxcw\nYsQIdOjQAf369atw6vsafY+xNk6hULC9evVit23bxqpUKnbXrl1sjx49WKVSabTfsWPH2J49e7IP\nHjxg8/Ly2IkTJ7KfffZZHbW67gjtr6KiIjYkJITNzMyso5ZaD51Ox+7atYvt0KED27lz53L3uXnz\nJhsZGclevnyZLSoqYmfPns1OmTKllltqPYT0GcuybM+ePdmrV6/WYsusT05ODtupUyd27969rFar\nZa9fv8526tSJ/eOPP4z2q+n3mM2P/M+ePQuRSITRo0dDKpVi+PDh8PT0xPHjx43227t3L4YPHw5/\nf3+4urri3//+N3bv3g1tdRYGtkFC++vOnTto2LAhvLy86qil1mPjxo3YunUr4uLiKtxn37596Nu3\nL9q3bw8HBwdMnz4dR48eRWZmZi221HoI6bPMzExkZWUhKCioFltmfVJTUxEVFYWYmBiIRCK0bdsW\nXbp0wcWLF432q+n3mM0H/8TERAQEBBht8/f3x927d422PXjwAK1btzba5/nz53j69GmttNNaCO2v\nhIQESCQSjBw5El27dsWbb76J+/fv12ZTrcawYcOwd+9ehIWFVbhP6feXp6cnXF1d8eDBg9pootUR\n0mcJCQlwdnbGpEmT0LVrV7z++uu4dOlSLbbSOoSEhGD58uX87dzcXFy4cAFt2rQx2q+m32M2H/wL\nCwvh6OhotM3BwQEKhcJoW1FRERwcHPjb3GOKioos30grIrS/ACAsLAyff/45Tpw4gdDQULz99tvl\n7lffNWrUCAzDVLpP6fcXoH+P2dv7iyOkz5RKJcLDwzFnzhycOnUKMTExePvtt5Genl5LrbQ+z58/\nR1xcHNq2bYvo6Gij+2r6PWbzwd/R0bFMQFIoFGUWhndwcIBSqeRvcx3m7Oxs+UZaEaH99frrr2P1\n6tVo1qwZHBwcMHXqVOTm5uLmzZu12VybUdGAo3S/kmL9+vXDpk2bEBgYCJlMhtGjR6NJkyY4d+5c\nXTetTiQnJ+P111+Hu7s71q1bB5HIODzX9HvM5oN/q1atkJiYaLQtMTHR6OsRAAQEBBh9PUpMTISr\nqysaNWpUK+20FkL7a+fOnThz5gx/W6vVQqPRQC6X10o7bU1AQIBRv2ZlZSE3N7dMio0UO3ToEA4c\nOGC0TalU2uV77MaNG/jnP/+Jnj17Yv369WVG+EDNv8dsPvh369YNKpUK3333HdRqNXbv3o2MjIwy\n5WUxMTHYuXMn7t69i/z8fKxZswaDBg0q8+la3wntr2fPnmHx4sVIS0uDQqHAkiVL0KpVqzJ5SKI3\ncOBAHD58GBcuXIBSqcTKlSvRu3dveHp61nXTrFZhYSEWL16Me/fuQa1W46uvvoJCoUCPHj3qumm1\nKiMjAxMnTsSECRMwa9asCmNSjb/HqlumZA1u3rzJjhw5kg0PD2cHDx7MXrp0iWVZln3rrbfYDRs2\n8Pt9++23bJ8+fdgOHTqw06ZNYwsLC+uqyXVKSH+pVCr2008/ZXv06MGGh4ezb7/9NpuSklKXza5z\nZ8+eNSpbnDdvHjtv3jz+9v79+9mXX36ZjYiIYN9++202IyOjLpppVarqs40bN7JRUVFs+/bt2VGj\nRrG3bt2qi2bWqQ0bNrBBQUFseHi40b+VK1da9D1GyzgSQogdsq+cByGEEAAU/AkhxC5R8CeEEDtE\nwZ8QQuwQBX9CCLFDFPwJIcQOSeq6AYQIFR0djZSUlDLbZTIZrl27VgctspzY2FiEhobiww8/rOum\nkHqK6vyJzYiOjsbIkSMxdOhQo+0Mw6Bhw4Z11CrLyMnJgUQigYuLS103hdRTNPInNsXZ2Rne3t51\n3QyL8/DwqOsmkHqOcv6kXli7di0mTZqECRMmoGPHjti/fz9YlsWmTZvw4osvIiIiAmPHjsWNGzf4\nxxQUFGDWrFmIjIxEnz59cPjwYQQHB+POnTsA9N80vv/+e37/x48fG92vVquxdOlSdO/eHR07dsSk\nSZOQnJzM7889fuzYsWjfvj1iYmJw8uRJ/v7c3Fx8+OGH6Ny5M7p06YJZs2ahoKAAgD7ts3TpUn7f\nn376CS+//DLat2+PYcOGGU26d+fOHYwdOxbh4eHo3r07Fi1aBJVKVcM9TOobCv6k3jhx4gR69OiB\nHTt2oEePHvjhhx+wY8cOLFy4EHv27EGnTp0wbtw4fr74uXPn4tKlS/j666+xdOlSrFy50qTn++KL\nL/Dnn39izZo12LlzJ7y9vTF+/HijaXdXr16N0aNH46effkKLFi0wa9YsqNVqAMCUKVNw9+5dbN68\nGV9//TWuX7+Ozz77rKERwAYAAARzSURBVMzznDx5EkuXLsW0adPwyy+/YPDgwZg0aRJu374NAJgx\nYwaaNWuGffv2Yc2aNTh48CC2b99ubjcSe1HNOYkIqTV9+vRh27ZtW2YCrCtXrrBr1qxhw8PDWZ1O\nx+8fFRXF7tu3z+gYI0eOZP/73/+yOTk5bEhICHv8+HH+viNHjrBBQUHs7du3+ef77rvv+PuTk5P5\n+4uKitjQ0FD24sWL/P1arZbt1asX+/PPP/OP/+ijj/j7b968yQYFBbGJiYnsnTt32KCgIPbmzZv8\n/RcvXmQ3bdrEsizLjh07ll2yZAnLsiw7evRoduPGjUavY9q0aezs2bNZlmXZyMhIdsmSJaxGo2FZ\nlmWvX7/OJiUlmdi7xN5Qzp/YlEmTJiEmJsZoW5MmTXDy5En4+vryq0cVFBQgLS0Nc+bMwbx58/h9\nVSoVmjdvjkePHkGr1eKFF17g7+vQoYPgdiQlJUGlUmHChAlGK1YpFAqjOddbtmzJ/86dvFWr1bh3\n7x5kMhmCg4P5+yMiIhAREVHmue7du4erV69i48aN/Da1Wo127doBAKZNm4ZFixZhz5496NmzJ159\n9VW0bdtW8Gsh9omCP7Epnp6eaNGiRbn3yWQy/nedTgcAWLJkiVGABwAnJydkZ2cDANgSxW5SqbTS\n59ZqtWV+//rrr9GgQQOj/VxdXSs9Jsuy/PaqljrknuuDDz5Anz59jLZzr3fMmDHo06cPjh49ipMn\nT+K9997D+PHjqUyUVIpy/qRecnV1hbe3N54+fYoWLVrw/zZv3ozz58/Dz88PMpkMV69e5R+TkJBg\ndAypVMqfgAVgdDLXz88PEokEWVlZ/LGbNm2Kzz//nM/FV8bf3x8qlQr37t3jt506dQr9+/fnP7g4\nAQEBSElJMXodP/30E3777TcolUosWrQIOp0OsbGx+Oqrr/D++++XWSGLkNJo5E/qrYkTJ2L9+vVo\n1KgRQkND8eOPP2Lv3r0YO3YsHBwcEBsbiyVLlsDd3R0ODg5YsGCB0ePDwsLw888/IyoqCkqlEqtW\nreJH6s7Ozhg1ahQWL14MmUwGPz8/bNiwAWfPnsXcuXOrbFtAQAB69uyJuXPnYu7cudDpdFi+fDm6\ndetWZiWniRMnYtq0aWjdujW6deuGY8eOYfPmzfjyyy8hl8tx6dIlPHr0CDNnzgTLsjh58iSlfUiV\nKPiTemvcuHEoKirCsmXLkJWVhdatW2PDhg38UpTvv/8+VCoVJk+eDAcHB7z55ptG5ZVTp07FnDlz\nMGLECDRt2hSzZ8/Gu+++y98/c+ZMiEQi/Oc//0FhYSHatm2L+Ph4wetCL1u2DAsXLkRsbCzkcjle\neeWVclM1L730EubOnYv4+HgsXLgQzZs3x7Jly9C7d28AwKpVq7BgwQKMGjUKOp0OUVFRRuc5CCkP\nXeFLiMHjx4/Rt29f7Nu3D0FBQXXdHEIsinL+hBBihyj4E0KIHaK0DyGE2CEa+RNCiB2i4E8IIXaI\ngj8hhNghCv6EEGKHKPgTQogd+v/wP7AxBEevXQAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1a1a86cb38>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from scipy.signal import periodogram\n",
"freqs, psd = periodogram(edr, sf_up)\n",
"plt.plot(freqs, psd)\n",
"plt.ylabel('Power spectral density')\n",
"plt.xlabel('Frequencies')\n",
"plt.title('EDR spectrum')\n",
"print('Maximum frequency: %.2f Hz' % freqs[np.argmax(psd)])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
@RaviDurbha
Copy link

Hi Raphael,

I would like to use this algorithm to compute respiration rate from PPG signal. In this process, I would like to understand how the value of
up sampling frequency sf_up = 4 was chosen. Also is there any relation between the parameters sf, sf_ori and sf_up in the algorithm.

Thanks,
Ravi

@raphaelvallat
Copy link
Author

Hi @RaviDurbha,

A 4 Hz upsampling frequency is very common in HRV analysis, hence my choice. People have also used 2 Hz.

sf_up is not affected by sf or sf_orig. Actually you can discard the downsampling from 360 Hz to 100 Hz:

sf = sf_ori
ecg = filter_data(ecg, sf, 2, 30, verbose=0)

@RaviDurbha
Copy link

Hi @raphaelvallat,

Thanks for the clarification. Instead of RR interval from ECG signal, I can compute Inter-beat-interval from PPG signal and still use your algorithm to compute respiration rate.

Thanks,
Ravi

@raphaelvallat
Copy link
Author

Yes that should work too. Please note that this is a very simple algorithm and I'm sure there are better alternative out there.

@ArthurWangusyd
Copy link

Hi Raphael,
Thank you very much for sharing. I'm a bit confused about some of the parameters in the code, for example is sf short for sampling frequency and does start for 155 means starting at 155 ms?
Thanks
Arthur

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment