{ "cells": [ { "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" } }, "source": [ "# Beat-finding using autocorrelations\n", "In this snippet we learn how to do some beat-finding using autocorrelations.\n", "\n", "First, let's import the necessary functions and classes:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ "from thebeat.core import Sequence\n", "from thebeat.stats import acf_df, acf_plot, acf_values\n", "import numpy as np\n", "import scipy.signal" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "nbsphinx": "hidden", "tags": [] }, "outputs": [], "source": [ "# We suppress warnings, but let's hide that to avoid confusion\n", "import warnings\n", "warnings.filterwarnings('ignore')\n", "%matplotlib inline" ] }, { "cell_type": "raw", "metadata": { "pycharm": { "name": "#%% md\n" }, "raw_mimetype": "text/restructuredtext" }, "source": [ "Plotting ACF\n", "------------\n", "\n", "The autocorrelation function (ACF) is best represented in a plot, where on the `x` axis we have the autocorrelation\n", "lags (which for us correspond to timestamps), and on the y axis we have the correlation coefficient.\n", "\n", "We can use such a function to find an underlying inter-onset interval (IOI) that describes our sequence well.\n", "\n", "First let's create a :py:class:`~thebeat.core.Sequence` object with inter-onset intervals (IOIs) sampled from a normal distribution\n", "(so we have some noise in there), and then plot the sequence using :py:func:`thebeat.stats.acf_plot`. We supply a resolution; for sequences that use milliseconds as the time unit, this will likely be 1. For seconds, it will be 0.01." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "pycharm": { "name": "#%%\n" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxUAAAIcCAYAAACAZYN2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/av/WaAAAACXBIWXMAAA9hAAAPYQGoP6dpAABCzElEQVR4nO3deXhTZd7/8U+SUkCw2AVwAXWQoUAXKKJorYIIygg4CoKyuCCKC8o44qDzPI4OjoqiKKI+DioiAqJeAkoFfBT5gQ4UVB52UISC7NANSkvX5P79wZAhtLRN76YJ9P26Li7g5D4535zzPUk+OeckDmOMEQAAAABUkzPYBQAAAAA4vREqAAAAAFghVAAAAACwQqgAAAAAYIVQAQAAAMAKoQIAAACAFUIFAAAAACuECgAAAABWCBUAAAAArBAqAABBt3LlSsXGxmrlypU1er+xsbF64403avQ+AQBlESoAoIbNnDlTsbGxGjBggNX9LF26lDfEVcB6AoDgI1QAQA1LTU3VBRdcoHXr1um3336r9v0sXbpUb775Zg1WdmaqaD2tW7dODz74YC1XBAB1D6ECAGrQrl27tHr1av31r39VVFSUUlNTg11SQBUUFJQ7vbS0VMXFxbVcTVn169dXWFhYsMsAgDMeoQIAalBqaqqaNGmirl276oYbbigTKk517cDu3bsVGxurOXPmSJKefPJJzZw5U9Kx6wKO/znu6NGjevHFF9W1a1fFx8frhhtu0JQpU2SMKVPTF198oVtvvVUdOnTQZZddpiFDhuhf//qXz5iZM2eqd+/eio+PV0pKisaOHavc3FyfMXfccYf69OmjDRs2aMiQIerQoYNeffVVb+1TpkzRBx98oB49eighIUHbtm2TJG3btk2jRo3S5ZdfroSEBPXr10/ffvttpevyp59+0qhRo9StWzfFx8era9eueuGFF1RYWOgdU9l6Ku+aik2bNunee+9Vp06dlJSUpLvuuktr1qzxGTNnzhzFxsZq1apVGjdunK644gp17NhRI0eOVHZ2dqW1A0Bdw8c3AFCDUlNT1bNnT4WHh6tPnz6aNWuW1q1bp8TERL/u57bbbtPBgwe1bNkyjR8/3uc2Y4wefPBBrVy5UrfeeqvatWun77//XuPHj9eBAwf0X//1X96xb775pt544w0lJSVp1KhRqlevntauXasVK1YoJSVFkvTGG2/ozTffVHJysgYNGqTt27dr1qxZWr9+vWbNmqV69ep57+/QoUO677771Lt3b910002Kjo723jZnzhwVFRVp4MCBCg8PV5MmTfTrr79q0KBBat68ue677z6dddZZWrhwoUaOHKk33nhDPXv2POU6+Oqrr1RYWKhBgwbpnHPO0bp16zRjxgzt379fkyZNqnQ9lefXX3/VkCFD1KhRI917770KCwvTJ598ojvuuEMzZsxQhw4dfMY/99xzioiI0MMPP6w9e/Zo2rRpevbZZzVx4sRKlwUAdQmhAgBqyIYNG5Senq6//e1vkqRLL71U5557rlJTU/0OFUlJSbr44ou1bNky/fGPf/S57dtvv9WKFSv06KOPeq8XGDJkiEaNGqUPP/xQQ4cO1YUXXqjffvtNb731lnr27KlJkybJ6fzPwenjRzSys7M1efJkpaSk6N133/WOadWqlZ599lnNmzdP/fv3986XkZGhsWPH6vbbb/dO2717tyRp//79+uabbxQVFeW97e6779Z5552n2bNnKzw8XJI0ePBgDRo0SK+88kqFoeLxxx9XgwYNvP+/7bbbdNFFF+nVV1/V3r17df7551e4nsozceJElZSUaNasWWrZsqUk6eabb1avXr308ssva8aMGT7jzznnHL3//vtyOBySJI/Ho+nTp+vIkSM6++yzK10eANQVnP4EADUkNTVVMTEx6tKliyTJ4XDoxhtv1IIFC+R2u2tsOd99951cLpfuuOMOn+n33HOPjDH67rvvJEmLFi2Sx+PRyJEjfQLF8dokafny5SopKdGdd97pM2bAgAFq3Lixli5d6jNfeHi4+vXrV25d119/vU+gOHTokFasWKE//OEPysvLU3Z2trKzs5WTk6OUlBTt2LFDBw4cOOXjPDFQHD16VNnZ2UpKSpIxRps2bapoFZXL7XZr2bJl6tGjhzdQSFKzZs3Up08frVq1Snl5eT7zDBw40LuuJKlz585yu93as2eP38sHgDMZRyoAoAa43W7Nnz9fXbp08X5yL0mJiYl6//33lZaW5j3dyNaePXvUrFkzNW7c2Gf6JZdc4r1dknbu3Cmn0+mdXp69e/dKOnZk4kTh4eFq2bJlmTfPzZs39x5xOFmLFi18/r9z504ZY/T666/r9ddfL3eerKwsNW/e/JS1TZo0SYsXL9bhw4d9bjv5zX9VZGdn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JjRs2DB9+umnmjt3rrZt26a///3vKigoUL9+/SRJY8aM0YQJE7zj77zzTn3//fd6//33tW3bNr3xxhvasGGDhg4dWnOPAgAAAEDQ+H1NxY033qjs7GxNmjRJGRkZateund577z3vxdj79u2T0/mfrNKpUye98sormjhxol599VVdfPHFeuutt9SmTZuaexQAAAAAgsavayqCiWsqEMroEVSGHkFF6A9Uhh5BZU6rayoAAAAA4GSECgAAAABWCBUAAAAArBAqAAAAAFghVAAAAACwQqgAAAAAYIVQAQAAAMAKoQIAAACAFUIFAAAAACuECgAAAABWCBUAAAAArBAqAAAAAFghVAAAAACwQqgAAAAAYMVhjDHBLgIAAADA6YsjFQAAAACsECoAAAAAWCFUAAAAALBCqAAAAABghVABAAAAwAqhAgAAAIAVQgUAAAAAK4QKAAAAAFYIFQAAAACsECqqYObMmerevbsSEhI0YMAArVu3LtglIQAmT56s/v37KykpSVdeeaUeeughpaen+4wpKirS2LFj1aVLFyUlJemRRx5RZmamz5i9e/dqxIgR6tChg6688kq99NJLKi0t9RmzcuVK3XLLLYqPj1fPnj01Z86cgD8+1Kx33nlHsbGxev75573T6A8cOHBAjz/+uLp06aLExET17dtX69ev995ujNHrr7+ulJQUJSYm6u6779aOHTt87uPQoUMaPXq0OnXqpM6dO+u//uu/lJ+f7zPm559/1uDBg5WQkKCuXbvq3XffrY2HBwtut1sTJ05U9+7dlZiYqB49euitt96SMcY7hv6oW3788Uc98MADSklJUWxsrBYtWuRze232w8KFC9WrVy8lJCSob9++Wrp0qf8PyKBC8+fPN3Fxceazzz4zv/76q3nqqadM586dTWZmZrBLQw275557zOzZs82WLVvM5s2bzX333We6detm8vPzvWOefvpp07VrV7N8+XKzfv16M3DgQHPbbbd5by8tLTV9+vQxd999t9m0aZNZsmSJ6dKli5kwYYJ3zM6dO02HDh3MuHHjzNatW8306dNNu3btzHfffVerjxfVt3btWnPttdeavn37mueee847nf6o2w4dOmSuvfZa8+STT5q1a9eanTt3mu+//9789ttv3jGTJ082l156qfnmm2/M5s2bzQMPPGC6d+9uCgsLvWOGDx9ubrrpJrNmzRrz448/mp49e5rHHnvMe/uRI0dMcnKyGT16tNmyZYv58ssvTWJiovn4449r9fHCP2+//ba5/PLLzf/7f//P7Nq1yyxcuNB07NjRTJs2zTuG/qhblixZYl599VXz9ddfmzZt2phvvvnG5/ba6odVq1aZdu3amXfffdds3brVvPbaayYuLs788ssvfj0eQkUlbr31VjN27Fjv/91ut0lJSTGTJ08OYlWoDVlZWaZNmzbmhx9+MMYYk5uba+Li4szChQu9Y7Zu3WratGljVq9ebYw59gTRtm1bk5GR4R3z0UcfmU6dOpmioiJjjDHjx483vXv39lnWo48+au65554APyLUhLy8PHP99debZcuWmaFDh3pDBf2Bl19+2QwaNOiUt3s8HnPVVVeZ9957zzstNzfXxMfHmy+//NIY85+eWbdunXfM0qVLTWxsrNm/f78xxpiZM2eayy67zNszx5d9ww031PRDQg0aMWKE+etf/+oz7eGHHzajR482xtAfdd3JoaI2++FPf/qTGTFihE89AwYMMH/729/8egyc/lSB4uJibdy4UcnJyd5pTqdTycnJWr16dRArQ204cuSIJKlJkyaSpA0bNqikpMSnHy655BKdf/75WrNmjSRpzZo1atOmjWJiYrxjUlJSlJeXp61bt3rHXHnllT7LSklJ8d4HQtuzzz6rrl27+vSBRH9AWrx4seLj4zVq1ChdeeWVuvnmm/Xpp596b9+9e7cyMjJ8euTss89Whw4dvK8pq1evVkREhBISErxjkpOT5XQ6vaferlmzRp07d1Z4eLh3TEpKirZv367Dhw8H+mGimpKSkrRixQpt375d0rFTUlatWqVrrrlGEv0BX7XZDzX1uhPm1+g6JicnR263W9HR0T7To6Ojy5xrjzOLx+PRCy+8oE6dOqlNmzaSpMzMTNWrV08RERE+Y6Ojo5WRkeEdc+IbRkne/1c2Ji8vT4WFhWrQoEFAHhPszZ8/X5s2bdJnn31W5jb6A7t27dKsWbM0bNgwPfDAA1q/fr2ee+451atXT7fccot3G5f3mnL82pvMzExFRUX53B4WFqYmTZr49EiLFi18xhzvmczMTO8HIQgtI0aMUF5env7whz/I5XLJ7Xbrz3/+s2666SZJoj/gozb7obzXnROXU1WECqAcY8eO1a+//qqPPvoo2KUgROzbt0/PP/+83n//fdWvXz/Y5SAEGWMUHx+vxx57TJLUvn17/frrr/r44491yy23BLk6BNvChQuVmpqqCRMmqHXr1tq8ebPGjRunZs2a0R84I3D6UwUiIyPlcrmUlZXlMz0rK6tMosOZ49lnn9WSJUs0bdo0nXvuud7pMTExKikpUW5urs/4rKwsNW3a1Dvm5GR//P+VjWncuDGfQoewjRs3KisrS/369VP79u3Vvn17/fDDD5o+fbrat29Pf0BNmzbVJZdc4jOtVatW2rt3r/d2SRW+psTExCg7O9vn9tLSUh0+fLhKfcRrU+gaP368RowYod69eys2NlY333yz7rrrLk2ePFkS/QFftdkP5Y2pzntdQkUFwsPDFRcXp7S0NO80j8ejtLQ0JSUlBbEyBIIxRs8++6y++eYbTZs2TS1btvS5PT4+XvXq1fPph/T0dO3du1cdO3aUJHXs2FFbtmzxeRJYvny5GjdurNatW3vHrFixwue+ly9f7r0PhKYrrrhCqamp+vzzz71/4uPj1bdvX++/6Y+6rVOnTt7z5Y/bsWOHLrjgAklSixYt1LRpU58eycvL09q1a72vKUlJScrNzdWGDRu8Y1asWCGPx6PExERJx3rkp59+UklJiXfM8uXL9bvf/Y5TW0JYYWGhHA6HzzSXy+X9Sln6AyeqzX6osdcdvy7rroPmz59v4uPjzZw5c8zWrVvN3/72N9O5c2efb2/BmeGZZ54xl156qVm5cqU5ePCg909BQYF3zNNPP226detm0tLSzPr1681tt91W7leG3nPPPWbz5s3mu+++M1dccUW5Xxn60ksvma1bt5oZM2bwlaGnqRO//ckY+qOuW7t2rWnfvr15++23zY4dO8y8efNMhw4dzBdffOEdM3nyZNO5c2ezaNEi8/PPP5sHH3yw3K+IvPnmm83atWvNTz/9ZK6//nqfr4jMzc01ycnJ5i9/+YvZsmWLmT9/vunQoQNfGRrinnjiCXP11Vd7v1L266+/Nl26dDHjx4/3jqE/6pa8vDyzadMms2nTJtOmTRszdepUs2nTJrNnzx5jTO31w6pVq0z79u3NlClTzNatW82kSZP4StlAmT59uunWrZuJi4szt956q1mzZk2wS0IAtGnTptw/s2fP9o4pLCw0f//7381ll11mOnToYEaOHGkOHjzocz+7d+829957r0lMTDRdunQxL774oikpKfEZs2LFCvPHP/7RxMXFmeuuu85nGTh9nBwq6A8sXrzY9OnTx8THx5tevXqZTz75xOd2j8djJk6caJKTk018fLy56667THp6us+YnJwc89hjj5mOHTuaTp06mSeffNLk5eX5jNm8ebMZNGiQiY+PN1dffTVfc34aOHLkiHnuuedMt27dTEJCgrnuuuvMq6++6vNVn/RH3bJixYpy33c88cQTxpja7YcFCxaY66+/3sTFxZnevXubJUuW+P14HMac8FOOAAAAAOAnrqkAAAAAYIVQAQAAAMAKoQIAAACAFUIFAAAAACuECgAAAABWCBUAAAAArBAqAAAAAFghVAAAAACwQqgAAHi98cYbSkpKCnYZAIDTDKECAAAAgBVCBQAAAAArhAoAQJW98sor6tu3r5KSknT11Vfrscce08GDB33GGGP05ptv6qqrrlJSUpJGjRql5cuXKzY2VitXrgxS5QCAQAoLdgEAgNNHVlaW7r//fjVr1kzZ2dmaOnWq7rjjDs2fP19hYcdeUqZPn64333xT9957r6644gqtWLFCTz31VJArBwAEEqECAFBl48aN8/7b7XYrKSlJ11xzjVasWKGUlBS53W6988476tevnx5//HFJUkpKinJycvTZZ58Fq2wAQIBx+hMAoMqWLl2q22+/XZdeeqnat2+va665RpK0Y8cOSdL+/fuVkZGh7t27+8x33XXX1XapAIBaxJEKAECVrFu3Tg899JCuu+463XfffYqOjpbD4dDAgQNVVFQkScrIyJAkRUVF+cwbHR1d6/UCAGoPoQIAUCWLFi1S48aNNXHiRDmdxw5079mzx2dM06ZNJUnZ2dk+07OysmqnSABAUHD6EwCgSgoLC1WvXj05HA7vtNTUVJ8x5557rpo2bapvv/3WZ/qiRYtqpUYAQHBwpAIA4MPtduurr74qM719+/aaNm2a/vGPf6hnz55avXq1vvjiC58xLpdLI0aM0AsvvKCYmBh16dJFK1euVFpamiR5j3AAAM4shAoAgI+ioiL96U9/KjN9/PjxevzxxzVjxgzNmTNHnTp10uTJk3XDDTf4jLvjjjuUm5urjz76SNOnT9eVV16pv/zlL/rzn/+ss88+u7YeBgCgFjmMMSbYRQAAzmwTJ07U1KlTtXLlSjVo0CDY5QAAahhHKgAANWrbtm2aN2+ekpKSVK9ePf3www+aMmWKBg0aRKAAgDMUoQIAUKMaNGig1atXa9asWcrPz1fz5s01fPhwPfLII8EuDQAQIJz+BAAAAMAKX8MBAAAAwAqhAgAAAIAVQgUAAAAAK4QKAAAAAFYIFQAAAACsECoAAAAAWCFUAAAAALBCqAAAAABghVABAAAAwMr/B0u7Q8m82JDJAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# We use a Generator object with a seed so you will get the same results as we:\n", "rng = np.random.default_rng(seed=123)\n", "\n", "seq = Sequence.generate_random_normal(n_events=20, mu=500, sigma=40, rng=rng)\n", "acf_plot(seq, resolution=1);" ] }, { "cell_type": "raw", "metadata": { "pycharm": { "name": "#%% md\n" }, "raw_mimetype": "text/restructuredtext" }, "source": [ "Now, that's a bit disappointing. We don't see any clear peaks, even though we might expect one\n", "at the mean of the distribution (500 ms).\n", "\n", "To improve the plot, we use the smoothing parameters, which under the hood convolve tiny normal distributions\n", "with the acf function at each step (where the steps are of size ``resolution``).\n", "\n", "So let's try that:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "pycharm": { "name": "#%%\n" }, "scrolled": true }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxUAAAIcCAYAAACAZYN2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/av/WaAAAACXBIWXMAAA9hAAAPYQGoP6dpAACmI0lEQVR4nO3dd7wcdb0//tfMttOTU9JIQjchlYQqMQIi7VIsIChNaYJelOsVRe/92YIoiqKA8FUQREoEuQJKBFSKoJJCMSE0gSSE9OT0frbO74/dz+xn9szuzuzOfObEvJ6Phw/DySb7yZ45u5/3vMtHMwzDABERERERUYX0oBdARERERES7NwYVRERERERUFQYVRERERERUFQYVRERERERUFQYVRERERERUFQYVRERERERUFQYVRERERERUFQYVRERERERUFQYVRERERERUFQYVREQUuFWrVmHmzJlYtWqVp3/vzJkz8bOf/czTv5OIiEZjUEFE5LGlS5di5syZOOuss6r6e5577jluiB3g60REFDwGFUREHlu2bBmmTp2KtWvX4r333qv473nuuedwyy23eLiyf0+lXqe1a9fi85//vOIVERHteRhUEBF5aPPmzVi9ejX+53/+By0tLVi2bFnQS/LV8PCw7ddTqRQSiYTi1YwWi8UQDoeDXgYR0b89BhVERB5atmwZxo0bh2OOOQYnnXTSqKCiWO/Ali1bMHPmTDz88MMAgK9//etYunQpgGxfgPifMDQ0hB/84Ac45phjMHfuXJx00km48847YRjGqDX94Q9/wCc+8QkcfPDBOPzww3HeeefhH//4h+UxS5cuxamnnoq5c+di8eLFWLJkCfr6+iyPueCCC3Daaafhtddew3nnnYeDDz4YP/nJT8y133nnnfj1r3+N448/HvPmzcP69esBAOvXr8eVV16JI444AvPmzcMZZ5yBp59+uuxr+dJLL+HKK6/Esccei7lz5+KYY47B97//fYyMjJiPKfc62fVUvPHGG7j00ktxyCGHYOHChfjMZz6DNWvWWB7z8MMPY+bMmXj55Zdx3XXX4f3vfz8WLFiAK664Al1dXWXXTkS0p+HtGyIiDy1btgwnnHACotEoTjvtNNx///1Yu3Yt5s+f7+rv+eQnP4ldu3bh+eefx/XXX2/5PcMw8PnPfx6rVq3CJz7xCcyaNQt///vfcf3112Pnzp343//9X/Oxt9xyC372s59h4cKFuPLKKxGJRPDKK69g5cqVWLx4MQDgZz/7GW655RYsWrQI55xzDt59913cf//9ePXVV3H//fcjEomYf19PTw8++9nP4tRTT8VHPvIRtLa2mr/38MMPIx6P4+yzz0Y0GsW4cePwzjvv4JxzzsGkSZPw2c9+FnV1dXjiiSdwxRVX4Gc/+xlOOOGEoq/Bn/70J4yMjOCcc87B+PHjsXbtWtx3333YsWMHbr755rKvk5133nkH5513Hurr63HppZciHA7jt7/9LS644ALcd999OPjggy2Pv/baa9HU1IQvfOEL2Lp1K+6++25cc801uPHGG8s+FxHRnoRBBRGRR1577TVs2LAB3/zmNwEAhx56KCZPnoxly5a5DioWLlyIfffdF88//zw++tGPWn7v6aefxsqVK/GlL33J7Bc477zzcOWVV+Kee+7B+eefj7333hvvvfcebr31Vpxwwgm4+eaboev55LTIaHR1deG2227D4sWL8ctf/tJ8zP77749rrrkGjz76KM4880zzz7W3t2PJkiX41Kc+ZX5ty5YtAIAdO3bgySefREtLi/l7F154IaZMmYKHHnoI0WgUAHDuuefinHPOwY9//OOSQcVXvvIV1NTUmP/9yU9+Evvssw9+8pOfYNu2bdhrr71Kvk52brzxRiSTSdx///2YPn06AOBjH/sYTj75ZPzoRz/CfffdZ3n8+PHj8atf/QqapgEAMpkM7r33XvT396OxsbHs8xER7SlY/kRE5JFly5ahra0NRx55JABA0zSccsopePzxx5FOpz17nr/97W8IhUK44IILLF+/+OKLYRgG/va3vwEAnnrqKWQyGVxxxRWWgEKsDQCWL1+OZDKJT3/605bHnHXWWWhoaMBzzz1n+XPRaBRnnHGG7bpOPPFES0DR09ODlStX4j/+4z8wMDCArq4udHV1obu7G4sXL8bGjRuxc+fOov9OOaAYGhpCV1cXFi5cCMMw8MYbb5R6iWyl02k8//zzOP74482AAgAmTpyI0047DS+//DIGBgYsf+bss882XysAOOyww5BOp7F161bXz09E9O+MmQoiIg+k02k89thjOPLII8079wAwf/58/OpXv8KKFSvMcqNqbd26FRMnTkRDQ4Pl6wcccID5+wCwadMm6Lpuft3Otm3bAGQzE7JoNIrp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Br0EGuN4jVApvD6oHF4jVE5Q14iroKK5uRmhUAidnZ2Wr3d2dqKtrc32z0yYMAHhcBihUMj82v7774/29nYkEglEo1FHz93VNRhopqKpqdZs0B4ZSaK7ezCQtdDYJK6Rvr5hpNOZoJdDYxCvESqF1weVw2uEyim8RlTfAHcVVESjUcyZMwcrVqzA8ccfDwDIZDJYsWIFzj//fNs/c8ghh+CPf/wjMpkMdD17p3/jxo2YMGGC44Ai+zwGMplgexlEo3Y6YyCV4g80jZZOZ3htUEm8RqgUXh9UDq8RKieoa8R10dVFF12EBx98EI888gjWr1+P73znOxgeHsYZZ5wBALj66qtxww03mI8/55xz0NPTg+9973t499138eyzz+K2227Deeed592/QhGOlCUiIiIiGs11T8Upp5yCrq4u3HzzzWhvb8esWbNwxx13mOVP27dvNzMSADBlyhTceeeduO666/CRj3wEkyZNwqc//Wl89rOf9e5foUh++lPACyEiIiIiGkMqatQ+//zzi5Y73XvvvaO+tnDhQjz44IOVPNWYwkwFEREREdFonEvmAg+/IyIiIiIajUGFC5oZVDCqICIiIiISGFS4kC9/Cub539nSg2t+/SL+/MKmYBZARERERGSDQYUL+UbtYKKKB55eh407+vHbZ9YhxRnVRERERDRGMKhwQQ84U/Hu9j7z17u6h4NZBBERERFRAQYVLgTZU1GYmejqH1G+BiIiIiIiOwwqXAiyp6JvMGH57+6+uPpFEBERERHZYFDhgh5gT0XfkDWoGBxJKV8DEREREZEdBhUuBJmpGI6nLf89OJJUvwgiIiIiIhsMKlwIsqcinigMKpipICIiIqKxgUGFC2amIoDnHklYg4ghZiqIiIiIaIxgUOFCkD0VI8xUEBEREdEYxaDChSB7KgqDCmYqiIiIiGisYFDhgnmidiaITEWq4L/TRR5JRERERKQWgwoXRKYiCPGkNYhgUEFEREREYwWDChf0QDMV1iAikWRQQURERERjA4MKF/QAR8oWBhXMVBARERHRWMGgwgVR/pQJ4LkLMxPpjIFUOoiVEBERERFZMahwIcjD75Kp0QEEsxVERERENBYwqHAhyJGydkFF4SnbRERERERBYFDhQpCN2slcqVNDbcT82gibtYmIiIhoDGBQ4UKQmYpULlNRLwUVzFQQERER0VjA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05/G3//+d/zqV7/C+vXr8bOf/QyvvfYazj//fO/+FUREREREFBjXxYKnnHIKurq6cPPNN6O9vR2zZs3CHXfcYZYzbd++Hbp0TPohhxyCH//4x7jxxhvxk5/8BPvuuy9uvfVWzJgxw7t/BRERERERBcZVo3aQ2tu9nRjgRjiso7m5Ht3dg4HUqNHYx2uEyuE1QqXw+qByeI1QOYXXyIQJ3kxGdCqYQbZERERERPRvg0EFERERERFVhUEFERERERFVhUEFERERERFVhUEFERERERFVhUEFERERERFVhUEFERERERFVhUEFERERERFVhUEFERERERFVhUEFERERERFVhUEFERERERFVhUEFERERERFVhUEFERERERFVhUEFERERERFVRTMMwwh6EUREREREtPtipoKIiIiIiKrCoIKIiIiIiKrCoIKIiIiIiKrCoIKIiIiIiKrCoIKIiIiIiKrCoIKIiIiIiKrCoIKIiIiIiKrCoIKIiIiIiKrCoIKIiIiIiKrCoMKBpUuX4rjjjsO8efNw1llnYe3atUEviXxw22234cwzz8TChQtx1FFH4T//8z+xYcMGy2Pi8TiWLFmCI488EgsXLsQXv/hFdHR0WB6zbds2XHbZZTj44INx1FFH4Yc//CFSqZTlMatWrcLHP/5xzJ07FyeccAIefvhh3/995K3bb78dM2fOxPe+9z3za7w+aOfOnfjKV76CI488EvPnz8fpp5+OV1991fx9wzBw0003YfHixZg/fz4uvPBCbNy40fJ39PT04KqrrsIhhxyCww47DP/7v/+LwcFBy2P+9a9/4dxzz8W8efNwzDHH4Je//KWKfx5VIZ1O48Ybb8Rxxx2H+fPn4/jjj8ett94KwzDMx/D62LO8+OKL+NznPofFixdj5syZeOqppyy/r/J6eOKJJ3DyySdj3rx5OP300/Hcc8+5/wcZVNJjjz1mzJkzx/jd735nvPPOO8Y3vvEN47DDDjM6OjqCXhp57OKLLzYeeugh4+233zbefPNN47Of/axx7LHHGoODg+ZjvvWtbxnHHHOMsXz5cuPVV181zj77bOOTn/yk+fupVMo47bTTjAsvvNB44403jGeffdY48sgjjRtuuMF8zKZNm4yDDz7YuO6664x169YZ9957rzFr1izjb3/7m9J/L1XulVdeMT70oQ8Zp59+unHttdeaX+f1sWfr6ekxPvShDxlf//rXjVdeecXYtGmT8fe//9147733zMfcdtttxqGHHmo8+eSTxptvvml87nOfM4477jhjZGTEfMwll1xifOQjHzHWrFljvPjii8YJJ5xgfPnLXzZ/v7+/31i0aJFx1VVXGW+//bbxxz/+0Zg/f77xwAMPKP33kjs///nPjSOOOML461//amzevNl44oknjAULFhh33323+RheH3uWZ5991vjJT35i/OUvfzFmzJhhPPnkk5bfV3U9vPzyy8asWbOMX/7yl8a6deuMn/70p8acOXOMt956y9W/h0FFGZ/4xCeMJUuWmP+dTqeNxYsXG7fddluAqyIVOjs7jRkzZhgvvPCCYRiG0dfXZ8yZM8d44oknzMesW7fOmDFjhrF69WrDMLJvEAcddJDR3t5uPuY3v/mNccghhxjxeNwwDMO4/vrrjVNPPdXyXF/60peMiy++2Od/EXlhYGDAOPHEE43nn3/eOP/8882ggtcH/ehHPzLOOeecor+fyWSMD3zgA8Ydd9xhfq2vr8+YO3eu8cc//tEwjPw1s3btWvMxzz33nDFz5kxjx44dhmEYxtKlS43DDz/cvGbEc5900kle/5PIQ5dddpnxP//zP5avfeELXzCuuuoqwzB4fezpCoMKldfDf/3XfxmXXXaZZT1nnXWW8c1vftPVv4HlTyUkEgm8/vrrWLRokfk1XdexaNEirF69OsCVkQr9/f0AgHHjxgEAXnvtNSSTScv1cMABB2CvvfbCmjVrAABr1qzBjBkz0NbWZj5m8eLFGBgYwLp168zHHHXUUZbnWrx4sfl30Nh2zTXX4JhjjrFcBwCvDwKeeeYZzJ07F1deeSWOOuoofOxjH8ODDz5o/v6WLVvQ3t5uuUYaGxtx8MEHm58pq1evRlNTE+bNm2c+ZtGiRdB13Sy9XbNmDQ477DBEo1HzMYsXL8a7776L3t5ev/+ZVKGFCxdi5cqVePfddwFkS1JefvllHH300QB4fZCVyuvBq8+dsKtH72G6u7uRTqfR2tpq+Xpra+uoWnv695LJZPD9738fhxxyCGbMmAEA6OjoQCQSQVNTk+Wxra2taG9vNx8jbxgBmP9d7jEDAwMYGRlBTU2NL/8mqt5jjz2GN954A7/73e9G/R6vD9q8eTPuv/9+XHTRRfjc5z6HV199Fddeey0ikQg+/vGPm99ju88U0XvT0dGBlpYWy++Hw2GMGzfOco1MmzbN8hhxzXR0dJg3QmhsueyyyzAwMID/+I//QCgUQjqdxn//93/jIx/5CADw+iALldeD3eeO/DxOMaggsrFkyRK88847+M1vfhP0UmiM2L59O773ve/hV7/6FWKxWNDLoTHIMAzMnTsXX/7ylwEAs2fPxjvvvIMHHngAH//4xwNeHQXtiSeewLJly3DDDTfgwAMPxJtvvonrrrsOEydO5PVB/xZY/lRCc3MzQqEQOjs7LV/v7OwcFdHRv49rrrkGzz77LO6++25MnjzZ/HpbWxuSyST6+vosj+/s7MSECRPMxxRG9uK/yz2moaGBd6HHsNdffx2dnZ0444wzMHv2bMyePRsvvPAC7r33XsyePZvXB2HChAk44IADLF/bf//9sW3bNvP3AZT8TGlra0NXV5fl91OpFHp7ex1dR/xsGruuv/56XHbZZTj11FMxc+ZMfOxjH8NnPvMZ3HbbbQB4fZCVyuvB7jGV7HUZVJQQjUYxZ84crFixwvxaJpPBihUrsHDhwgBXRn4wDAPXXHMNnnzySdx9992YPn265ffnzp2LSCRiuR42bNiAbdu2YcGCBQCABQsW4O2337a8CSxfvhwNDQ048MADzcesXLnS8ncvX77c/DtobHr/+9+PZcuW4fe//735v7lz5+L00083f83rY892yCGHmPXywsaNGzF16lQAwLRp0zBhwgTLNTIwMIBXXnnF/ExZuHAh+vr68Nprr5mPWblyJTKZDObPnw8ge4289NJLSCaT5mOWL1+O/fbbj6UtY9jIyAg0TbN8LRQKmSNleX2QTOX14Nnnjqu27j3QY489ZsydO9d4+OGHjXXr1hnf/OY3jcMOO8wyvYX+PXz72982Dj30UGPVqlXGrl27zP8NDw+bj/nWt75lHHvsscaKFSuMV1991fjkJz9pOzL04osvNt58803jb3/7m/H+97/fdmToD3/4Q2PdunXGfffdx5Ghuyl5+pNh8PrY073yyivG7NmzjZ///OfGxo0bjUcffdQ4+OCDjT/84Q/mY2677TbjsMMOM5566injX//6l/H5z3/edkTkxz72MeOVV14xXnrpJePEE0+0jIjs6+szFi1aZHz1q1813n77beOxxx4zDj74YI4MHeO+9rWvGR/84AfNkbJ/+ctfjCOPPNK4/vrrzcfw+tizDAwMGG+88YbxxhtvGDNmzDDuuusu44033jC2bt1qGIa66+Hll182Zs+ebdx5553GunXrjJtvvpkjZf1y7733Gscee6wxZ84c4xOf+ISxZs2aoJdEPpgxY4bt/x566CHzMSMjI8Z3vvMd4/DDDzcOPvhg44orrjB27dpl+Xu2bNliXHrppcb8+fONI4880vjBD35gJJNJy2NWrlxpfPSjHzXmzJljfPjDH7Y8B+0+CoMKXh/0zDPPGKeddpoxd+5c4+STTzZ++9vfWn4/k8kYN954o7Fo0SJj7ty5xmc+8xljw4YNlsd0d3cbX/7yl40FCxYYhxxyiPH1r3/dGBgYsDzmzTffNM455xxj7ty5xgc/+EGOOd8N9Pf3G9dee61x7LHHGvPmzTM+/OEPGz/5yU8soz55fexZVq5cabvv+NrXvmYYhtrr4fHHHzdOPPFEY86cOcapp55qPPvss67/PZphSEc5EhERERERucSeCiIiIiIiqgqDCiIiIiIiqgqDCiIiIiIiqgqDCiIiIiIiqgqDCiIiIiIiqgqDCiIiIiIiqgqDCiIiIiIiqgqDCiIiIiIiqgqDCiIiMv3sZz/DwoULg14GERHtZhhUEBERERFRVRhUEBERERFRVRhUEBGRYz/+8Y9x+umnY+HChfjgBz+IL3/5y9i1a5flMYZh4JZbbsEHPvABLFy4EFdeeSWWL1+OmTNnYtWqVQGtnIiI/BQOegFERLT76OzsxOWXX46JEyeiq6sLd911Fy644AI89thjCIezHyn33nsvbrnlFlx66aV4//vfj5UrV+Ib3/hGwCsnIiI/MaggIiLHrrvuOvPX6XQaCxcuxNFHH42VK1di8eLFSKfTuP3223HGGWfgK1/5CgBg8eLF6O7uxu9+97uglk1ERD5j+RMRETn23HPP4VOf+hQOPfRQzJ49G0cffTQAYOPGjQCAHTt2oL29Hccdd5zlz334wx9WvVQiIlKImQoiInJk7dq1+M///E98+MMfxmc/+1m0trZC0zScffbZiMfjAID29nYAQEtLi+XPtra2Kl8vERGpw6CCiIgceeqpp9DQ0IAbb7wRup5NdG/dutXymAkTJgAAurq6LF/v7OxUs0giIgoEy5+IiMiRkZERRCIRaJpmfm3ZsmWWx0yePBkTJkzA008/bfn6U089pWSNREQUDGYqiIjIIp1O409/+tOor8+ePRt33303vvvd7+KEE07A6tWr8Yc//MHymFAohMsuuwzf//730dbWhiOPPBKrVq3CihUrAMDMcBAR0b8XBhVERGQRj8fxX//1X6O+fv311+MrX/kK7rvvPjz88MM45JBDcNttt+Gkk06yPO6CCy5AX18ffvOb3+Dee+/FUUcdha9+9av47//+bzQ2Nqr6ZxARkUKaYRhG0IsgIqJ/bzfeeCPuuusurFq1CjU1NUEvh4iIPMZMBREReWr9+vV49NFHsXDhQkQiEbzwwgu48847cc455zCgICL6N8WggoiIPFVTU4PVq1fj/vvvx+DgICZNmoRLLrkEX/ziF4NeGhER+YTlT0REREREVBWO4SAiIiIioqowqCAiIiIioqowqCAiIiIioqowqCAiIiIioqowqCAiIiIioqowqCAiIiIioqowqCAiIiIioqowqCAiIiIioqowqCAiIiIioqr8/wx8dUYdRcxVAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "acf_plot(seq, resolution=1, smoothing_window=100, smoothing_sd=20);" ] }, { "cell_type": "raw", "metadata": { "pycharm": { "name": "#%% md\n" }, "raw_mimetype": "text/restructuredtext" }, "source": [ "Now that looks way better, and now we do see clear peaks at 500 ms, 1000 ms, etc.\n", "\n", "Of course, the more we smoothe, the less accurately that IOI represents the sequence. So be careful with that, and\n", "afterwards use e.g. the :py:func:`thebeat.stats.get_ugof_isochronous` function to calculate how well the sequence is described by the found IOI.\n", "\n", "Finding the IOIs\n", "----------------\n", "\n", "From the plot we cannot say exactly where the peaks lie. If we want to find the exact values we can use\n", ":func:`scipy.signal.find_peaks`.\n", "\n", "For this method, we need the actual values from the ACF function, which we can get using :py:func:`thebeat.stats.acf_values`.\n", "Then, we use :func:`scipy.signal.find_peaks` to find the peaks." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "pycharm": { "name": "#%%\n" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(array([ 1, 501, 1021, 1518, 1998, 2062, 2492, 2547, 3040, 3475, 3540,\n", " 4042, 4527, 5018, 5523, 6046, 6535, 7089, 7577, 7656, 8061, 8139,\n", " 8615, 9093, 9553]), {})\n" ] } ], "source": [ "# We use a Generator object with a seed so you will get the same results as we:\n", "correlation_factors = acf_values(seq, resolution=1, smoothing_window=100, smoothing_sd=20)\n", "\n", "peaks = scipy.signal.find_peaks(correlation_factors)\n", "print(peaks)" ] }, { "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" }, "raw_mimetype": "text/restructuredtext" }, "source": [ "As such, we can see where the peaks lie.\n", "\n", "---" ] }, { "cell_type": "raw", "metadata": { "pycharm": { "name": "#%% md\n" }, "raw_mimetype": "text/restructuredtext" }, "source": [ "An important thing to note is that if you use a different ``resolution`` than 1 (which is however the default), the peaks will correspond to the indices of ``acf_values``, where the indices are not timestamps.\n", "Multiply the array that :py:func:`thebeat.stats.acf_values` returns by ``resolution`` to get the original timestamps again.\n", "\n", "Also note that :func:`scipy.signal.find_peaks` returns a tuple\n", "containing an array with the peak values, and a ``properties`` dictionary, which is empty here. To get the array\n", "we must therefore use ``peaks[0]``." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "pycharm": { "name": "#%%\n" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[ 490 1020 1520 2070 2520 3050 3570 4030 4530]\n" ] } ], "source": [ "resolution = 10\n", "\n", "correlation_factors = acf_values(seq,\n", " resolution=resolution,\n", " smoothing_window=100,\n", " smoothing_sd=20)\n", "\n", "peaks = scipy.signal.find_peaks(correlation_factors)\n", "peaks = peaks[0] * resolution\n", "print(peaks)" ] }, { "cell_type": "raw", "metadata": { "raw_mimetype": "text/restructuredtext", "tags": [] }, "source": [ "Plotting\n", "--------\n", "\n", "We can then easily plot a Sequence and its isochronous description using :py:class:`thebeat.visualization.plot_multiple_sequences`:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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U7///rsWLlygypUra/r0GfmeExJy4Yx43g93W7t2jQYPflItW7ZS3bp15evrq4MHD2rZsq+UlpamBx74V4H3+v73v/s7vj927Pd8y0aOfFqBgX//SoHiRukGAAAAcEOYNest+fn5aeHCBZo1600FBATo9dffVLVq1fOVbkl65JF/y9fXV9Omvaj4+HmqWLGiunTpqkmTpiggoL7q1avnNN7f319r1/6gKVMm6csvv9QPP3yvihUr6u67u2n06DGyqti3cOd6dupYNWjYQF/NX6q4uJny9vZWt2736Lnnnlf9+vULtY2wsDD16HGvNm/erE2bNio1NVWVKlVSixaR6tfvYfXs2avA533wQfxll/Xt24/SDQAAAAB2Va5cOb388nS9/PL0fOsudRuuHj3uVY8e9zot27cvSampqQoICMw33s/P75Kv8UvyTqfHbdq0sd3tv9zd3fXAI731wqhJhRpfUP7g4CZ67705RX5tux2La8X+f2oBAAAAABc4ffq0zp0757Ts7NmzGjlyhKQL7/sGroQz3QAAAABQgLVr12jAgBi1a9dBtWvXUnJyslatWqVDhw7qjjv+ecnLpIG8KN0AAAAAUICgoCC1a9de69ev05dfnpAk1a9fX+PHT9DQocNs/aFosA9KNwAAAIDrQk6OdU2316DBLYqP//CabhPXXk5OjiTZ9o8g9kwFAAAAAIXk4eGh0qVLKz01zdVR4AKpqX+pdOnS8vCw5zllSjcAAACAEq9evQbatWOXq2PABbZu3aK6detdeaCLULoBAAAAlHjNmkVo69atOnP6jKujoBidOnVKW7ZsVUREC1dHuSRKNwAAAIASr3nzSKUoTa9Onq4zp067Og6KwcmTJzV+/FiVL19ezZvbt3Tb86J3AAAAACiCChUqKqBXmHYv2KynB49Ux+btFRISKm9vH9t8wNbBlEOO7/+o8LsLk+SXN5tkv3y5cnJylJr6l7Zt26qtW7fJx8dHo0c/p4oVK7k62iVRugEAAABcF8r5lldQn9uVvPuYMjIyNX/+fJ09e9bVsRz2/XnQ8X39inVdlqMgebNJ9suXV9myZVW3bj316dNPzZo1V4UKFV0d6bIo3QAAAACuG6W9yqhaWB0923acJMmyru1txP6Ogd897fj+9bbTXJgkv7zZJPvly8vNzc3VEYqE0g0AAADgumWngpY3i51y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K1euVGBgYL5l3bt3V3BwsNq1a+fYl1yBgYFasGCBBg4cqJCQEHXs2FHffvut0zb27t2rxx57TOHh4QoLC9ODDz6ow4cPF3pfAAAAAACFV+Qz3Xnt2bNHmzdvVvXq1R3Lzp8/r0aNGunRRx+Vt7e3Vq1apaefflq1a9dWkyZNHOMWL16s//mf/9Enn3yiLVu2KDY2VuHh4WrZsqVycnI0aNAg3XTTTVqwYIH++usvTZ482em109PT9cgjjygsLEwLFy7UyZMnNWbMGE2cOFEvvviiY9yGDRtUtWpVffDBB0pISNDo0aO1efNm3X777frkk0/01Vdfafz48WrZsqWqVq2abx+PHz+u4cOHa+TIkWrfvr3S0tK0ceNGWZYlSfriiy/06quvaty4cbr11luVmJiosWPHysvLS927d1daWpoee+wxRUZG6qWXXtKRI0c0adKkIh/rjRs3atSoURozZoyaNm2qw4cPa+zYsZKkJ5980jEuLi5OI0eO1NNPP634+HiNGDFC//3vf1WpUiX98ccf6tOnj5o1a6a5c+fK29tbCQkJjuJ+pX25Gh4e9vvYADtmymXnbJdit8ylSuXPY7eMV1JS8to1px1y5c7DguZjXnbIeil2ziaRr6jsludK7JzXztkuZoesV/p5aIeMV8Ouue2aK5er8hX297IpRS7dq1atUlhYmLKysnT+/Hm5u7s7yp8kValSRY888ojjcd++ffX9999r2bJlTqU7MDDQURbr1q2rDz74QOvXr1fLli21bt067d+/X++8846qVKkiSRo6dKgeffRRx/OXLFmi8+fPa+rUqfLy8pIkjRs3TgMGDNCIESPk5+cnSapUqZLGjBkjd3d31atXT++8844yMjI0YMAASdJjjz2mt99+W5s2bVKXLl3y7e+JEyeUlZWlDh06qEaNGo7suWbOnKnY2Fh17NhRklSrVi0lJSVp/vz56t69u5YsWaKcnBxNnjxZZcqU0S233KJjx47pueeeK9Jxj4uLU0xMjKP81qpVS0OGDNFLL73kVLq7d++url27SpKGDRum+Ph4bdu2Ta1bt9aHH34ob29vvfLKKypdurQk6eabby70vlwNX9/yV/U8k+yYKZeds11KSchcEjLmVVLy2jWnnXJVqFDusuvtlPVids4mka+o7JbnSuyc187ZLmanrJf6eWinjEVh19x2zZXL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AADAEEo3AAAAAACGULoBAAAAADCE0g0AAAAAgCGUbgAAAAAADKF0AwAAAABgCKUbAAAAAABDKN0AAAAAABhC6QYAAAAAwBBKNwAAAAAAhlC6AQAAAAAwhNINAAAAAIAhlG4AAAAAAAyhdAMAAAAAYAilGwAAAAAAQyjdAAAAAAAYQukGAAAAAMAQSjcAAAAAAIa4WZZluToEri+nT6cpKyvH1TFwg/LwcJevb3nmIVyKeQg7YB7CDpiHsIMrzUN/fx+jr8+ZbgAAAAAADKF0AwAAAABgCKUbAAAAAABDKN0AAAAAABhC6QYAAAAAwBBKNwAAAAAAhlC6AQAAAAAwhNINAAAAAIAhlG4AAAAAAAyhdAMAAAAAYAilGwAAAAAAQyjdAAAAAAAYQukGAAAAAMAQSjcAAAAAAIa4WZZluToEAAAAAADXI850AwAAAABgCKUbAAAAAABDKN0AAAAAABhC6QYAAAAAwBBKNwAAAAAAhlC6AQAAAAAwhNINAAAAAIAhlG4AAAAAAAyhdAMAAAAAYAilG9fMhx9+qLZt2yo4OFg9e/bUtm3bXB0JJdTs2bN17733KiwsTC1atNATTzyh/fv3O405d+6cJkyYoIiICIWFhWnQoEFKTk52GnP06FHFxMQoJCRELVq00NSpU5WVleU05scff1T37t3VuHFjdejQQYsWLTK+fyh53nrrLQUGBmrSpEmOZcxBFJc//vhDI0aMUEREhJo0aaLo6Ght377dsd6yLL366qtq1aqVmjRpoocfflgHDx502saZM2c0fPhwhYeHq2nTpnr22WeVlpbmNGbXrl168MEHFRwcrDZt2ujtt98ujt1DCZCdna0ZM2aobdu2atKkidq3b6/XX39dlmU5xjAPca39/PPPGjBggFq1aqXAwECtXLnSaX1xzrlly5apc+fOCg4OVnR0tFavXl20nbGAa2Dp0qVWo0aNrIULF1p79+61xowZYzVt2tRKTk52dTSUQP3797c+/fRTa8+ePVZiYqL16KOPWnfccYeVlpbmGDNu3DirTZs21rp166zt27dbvXr1su6//37H+qysLKtr167Www8/bO3cudNatWqVFRERYb388suOMYcPH7ZCQkKsKVOmWElJSVZ8fLx16623WmvWrCnW/YW9bd261frnP/9pRUdHWy+88IJjOXMQxeHMmTPWP//5Tys2NtbaunWrdfjwYWvt2rXWoUOHHGNmz55t3XbbbdaKFSusxMREa8CAAVbbtm2tjIwMx5hHHnnEuvvuu60tW7ZYP//8s9WhQwdr2LBhjvV//fWXFRkZaQ0fPtzas2ePtWTJEqtJkybWxx9/XKz7C3t68803rWbNmln//e9/rV9//dVatmyZFRoaas2dO9cxhnmIa23VqlXWK6+8Yn3zzTdWQECAtWLFCqf1xTXnNm3aZN16663W22+/bSUlJVnTp0+3GjVqZO3evbvQ+0LpxjVx3333WRMmTHA8zs7Otlq1amXNnj3bhalwvTh58qQVEBBg/fTTT5ZlWVZKSorVqFEja9myZY4xSUlJVkBAgLV582bLsi78oG7YsKF14sQJx5iPPvrICg8Pt86dO2dZlmVNmzbN6tKli9NrPfXUU1b//v0N7xFKitTUVKtjx47WDz/8YPXp08dRupmDKC4vvfSS9a9//euS63NycqyWLVta77zzjmNZSkqK1bhxY2vJkiWWZf3f3Ny2bZtjzOrVq63AwEDr2LFjlmVZ1ocffmjdfvvtjrmZ+9qdOnW61ruEEigmJsZ65plnnJY9+eST1vDhwy3LYh7CvItLd3HOuSFDhlgxMTFOeXr27GmNHTu20Pm5vBx/2/nz57Vjxw5FRkY6lrm7uysyMlKbN292YTJcL/766y9JUsWKFSVJv/zyizIzM53mXP369VW9enVt2bJFkrRlyxYFBATIz8/PMaZVq1ZKTU1VUlKSY0yLFi2cXqtVq1aObQDPP/+82rRp4zTXJOYgis93332nxo0ba/DgwWrRooXuueceffLJJ471R44c0YkTJ5zmoo+Pj0JCQhy/gzdv3qwKFSooODjYMSYyMlLu7u6Ot4Jt2bJFTZs2laenp2NMq1atdODAAf3555+mdxM2FxYWpg0bNujAgQOSLlyOu2nTJrVu3VoS8xDFrzjn3LX4Xe1R5D0ELnL69GllZ2frpptuclp+00035XsfLlBUOTk5mjx5ssLDwxUQECBJSk5OVunSpVWhQgWnsTfddJNOnDjhGJO37EhyPL7SmNTUVGVkZKhs2bJG9gklw9KlS7Vz504tXLgw3zrmIIrLr7/+qv/85z/6n//5Hw0YMEDbt2/XCy+8oNKlS6t79+6OuVTQ7+DczxhITk5W5cqVndZ7eHioYsWKTnOxZs2aTmNy52ZycrLjj564McXExCg1NVV33nmnSpUqpezsbA0dOlR33323JDEPUeyKc84V9Ls67+sUBqUbgK1NmDBBe/fu1UcffeTqKLiB/P7775o0aZLee+89lSlTxtVxcAOzLEuNGzfWsGHDJElBQUHau3evPv74Y3Xv3t3F6XCjWLZsmb788ku9/PLLatCggRITEzVlyhT94x//YB4ChcDl5fjbfH19VapUKZ08edJp+cmTJ/P9VQgoiueff16rVq3S3LlzVbVqVcdyPz8/ZWZmKiUlxWn8yZMn5e/v7xhz8V8gcx9faYy3tzdnGG9wO3bs0MmTJ9WjRw8FBQUpKChIP/30k+Lj4xUUFMQcRLHx9/dX/fr1nZbVq1dPR48edayXdNnfwX5+fjp16pTT+qysLP3555+Fmq/8Lse0adMUExOjLl26KDAwUPfcc4/69eun2bNnS2IeovgV55wraExRew6lG3+bp6enGjVqpPXr1zuW5eTkaP369QoLC3NhMpRUlmXp+eef14oVKzR37lzVqlXLaX3jxo1VunRppzm3f/9+HT16VKGhoZKk0NBQ7dmzx+mH8bp16+Tt7a0GDRo4xmzYsMFp2+vWrXNsAzeu5s2b68svv9Rnn33m+GrcuLGio6Md3zMHURzCw8Md76PNdfDgQdWoUUOSVLNmTfn7+zvNxdTUVG3dutXxOzgsLEwpKSn65ZdfHGM2bNignJwcNWnSRNKFubhx40ZlZmY6xqxbt04333wzl/RCGRkZcnNzc1pWqlQpxy3DmIcobsU5567J7+pCf+QacBlLly61GjdubC1atMhKSkqyxo4dazVt2tTpU3uBwho/frx12223WT/++KN1/Phxx9fZs2cdY8aNG2fdcccd1vr1663t27db999/f4G3a+rfv7+VmJhorVmzxmrevHmBt2uaOnWqlZSUZH3wwQfcrgmXlPfTyy2LOYjisXXrVisoKMh68803rYMHD1pffPGFFRISYn3++eeOMbNnz7aaNm1qrVy50tq1a5f1+OOPF3jbnHvuucfaunWrtXHjRqtjx45Ot81JSUmxIiMjrZEjR1p79uyxli5daoWEhHCrJliWZVmjRo2yoqKiHLcM++abb6yIiAhr2rRpjjHMQ1xrqamp1s6dO62dO3daAQEB1vvvv2/t3LnT+u233yzLKr45t2nTJisoKMh69913raSkJOu1117jlmFwnfj4eOuOO+6wGjVqZN13333Wli1bXB0JJVRAQECBX59++qljTEZGhvXcc89Zt99+uxUSEmINHDjQOn78uNN2jhw5Yv373/+2mjRpYkVERFgvvviilZmZ6TRmw4YNVrdu3axGjRpZ7dq1c3oNIK+LSzdzEMXlu+++s7p27Wo1btzY6ty5szV//nyn9Tk5OdaMGTOsyMhIq3Hjxla/fv2s/fv3O405ffq0NWzYMCs0NNQKDw+3YmNjrdTUVKcxiYmJ1r/+9S+rcePGVlRUFLf9hMNff/1lvfDCC9Ydd9xhBQcHW+3atbNeeeUVp9ssMQ9xrW3YsKHA/x8cNWqUZVnFO+e++uorq2PHjlajRo2sLl26WKtWrSrSvrhZ1v+/LgQAAAAAAFxTvKcbAAAAAABDKN0AAAAAABhC6QYAAAAAwBBKNwAAAAAAhlC6AQAAAAAwhNINAAAAAIAhlG4AAAAAAAyhdAMAAAAAYIiHqwMAAIDrV2Bg4BXHTJkyRYsXL5aXl5dmz55dDKkAACg+bpZlWa4OAQAArk9btmxxenz//ferb9++6tq1q2NZ7dq1derUKbm7u6tevXrFnBAAALM40w0AAIwJDQ3Nt6xatWr5lleuXLl4AgEAUMx4TzcAAHC5vn376rHHHnM8njlzpsLCwrRz507df//9atKkibp3766dO3fq3LlzGj9+vG6//Xa1bt1ac+bMybe9zZs366GHHlJoaKhuu+02DR8+XCdPnizGPQIA4AJKNwAAsKXMzEyNGjVKvXr10syZM5WVlaUnn3xSo0ePVtmyZTVjxgy1b99eU6ZMUUJCguN5mzdvVt++feXj46Pp06dr4sSJ2r59u5544gkX7g0A4EbF5eUAAMCWMjMzNWLECLVp00aSlJOTowEDBigkJETPPPOMJKl58+Zavny5li9frvDwcEnSyy+/rMaNGysuLk5ubm6SpICAAHXt2lWrV692bA8AgOLAmW4AAGBL7u7uatGiheNx3bp1JUmRkZGOZaVKlVLt2rV17NgxSdLZs2eVkJCgzp07Kzs7W1lZWcrKylLdunVVrVo1bd++vVj3AQAAznQDAABbKlu2rDw9PR2PS5cuLUny8fFxGle6dGmdO3dOkpSSkqLs7GxNmTJFU6ZMybfN33//3WBiAADyo3QDAIDrho+Pj9zc3PTYY4+pffv2+db7+vq6IBUA4EZG6QYAANcNLy8vhYaGav/+/QoODnZ1HAAAKN0AAOD68vTTT6tfv3566qmn1KVLF1WoUEHHjh3TunXr1KNHD0VERLg6IgDgBkLpBgAA15Xw8HB99NFHmjlzpp555hllZmaqatWqat68uerUqePqeACAG4ybZVmWq0MAAAAAAHA94pZhAAAAAAAYQukGAAAAAMAQSjcAAAAAAIZQugEAAAAAMITSDQAAAACAIZRuAAAAAAAMoXQDAAAAAGAIpRsAAAAAAEMo3QAAAAAAGELpBgAAAADAEEo3AAAAAACGULoBAAAAADDk/wGlHVQHj5PM0AAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Plot\n", "from thebeat.visualization import plot_multiple_sequences\n", "from thebeat.stats import get_ugof_isochronous\n", "\n", "# Make isochronous sequence\n", "seq_isoc = Sequence.generate_isochronous(n_events=20, ioi=peaks[0])\n", "\n", "fig, ax = plot_multiple_sequences([seq_isoc, seq], \n", " figsize=(10, 4),\n", " y_axis_labels=['Theoretical beat', 'Random sequence'], \n", " suppress_display=True)\n", "\n", "\n", "# Add box with ugof\n", "ugof_round = str(round(get_ugof_isochronous(seq, peaks[1]), 2))\n", "box_properties = dict(boxstyle='round', facecolor='white', alpha=0.7)\n", "ax.text(8400, 1.25, s=f\"ugof = {ugof_round}\", bbox=box_properties, fontsize=14);\n", "fig.show()" ] }, { "cell_type": "raw", "metadata": { "pycharm": { "name": "#%% md\n" }, "raw_mimetype": "text/restructuredtext" }, "source": [ "Getting a Pandas dictionary of correlation factors\n", "--------------------------------------------------\n", "\n", "The :py:mod:`thebeat.stats` module contains an additional function, :py:func:`thebeat.stats.acf_df`, which returns a :class:`pandas.DataFrame` containing the timestamps and the correlation factors." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "pycharm": { "name": "#%%\n" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " timestamps correlation\n", "0 0 1.000000\n", "1 1 0.931255\n", "2 2 0.763098\n", "3 3 0.548497\n", "4 4 0.343360\n", "... ... ...\n", "9621 9621 0.023837\n", "9622 9622 0.014014\n", "9623 9623 0.006382\n", "9624 9624 0.001945\n", "9625 9625 0.000000\n", "\n", "[9626 rows x 2 columns]\n" ] } ], "source": [ "seq = Sequence.generate_random_normal(n_events=20, mu=500, sigma=25, rng=rng)\n", "\n", "df = acf_df(seq, resolution=1, smoothing_window=10, smoothing_sd=2)\n", "print(df)" ] }, { "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" } }, "source": [ "Let's sort this dataframe by the correlation factor:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ "df = df.sort_values(by=\"correlation\", ascending=False)" ] } ], "metadata": { "celltoolbar": "Raw-celnotatie", "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.9.13" } }, "nbformat": 4, "nbformat_minor": 4 }