{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Figures for:\n", "\n", "- Frame-to-frame intervals\n", "- Trigger latency" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "\n", "from pathlib import Path\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import scipy.stats as sstats\n", "import pandas as pd\n", "import h5py" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "figdir = Path(\"figures\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Frame-to-frame intervals" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "intervals = []\n", "with h5py.File(\"latency_data.h5\", \"r\") as src:\n", " for data in src[\"frame_intervals\"].values():\n", " if isinstance(data, h5py.Dataset) and (data.attrs[\"has_trigger\"] == True):\n", " intervals.append(np.array(data))" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "27" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(intervals)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "def to_histograms(latencies, dt=0.1, vrange=(0, 20), nbin=40, min_occurrences=30):\n", " \"\"\"turn a set of latencies into a set of histograms.\n", " \n", " parameters\n", " ----------\n", " latencies -- an iterable of np.ndarray, each of which containing latencies in samples.\n", " dt -- per-sample duration of time.\n", " (vrange, nbin) -- the range and the number of bins for histogram generation.\n", " min_occurrences -- if the size of an array is less than this value, the array is ignored.\n", " \n", " returns\n", " -------\n", " H -- the set of histograms, in the shape (nbin, n_observations).\n", " edges -- the edges of the histograms (having the size of (nbin+1)).\n", " \n", " \"\"\"\n", " H = []\n", " for lat in latencies:\n", " values = lat[lat > 0] * dt\n", " if values.size < min_occurrences:\n", " continue\n", " h, edges = np.histogram(values, range=vrange, bins=nbin)\n", " H.append(h / lat.size)\n", " return np.stack(H, axis=-1), edges" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "H, edges = to_histograms(intervals)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "centers = (edges[1:] + edges[:-1])/2\n", "\n", "fig = plt.figure(figsize=(2.2, 2))\n", "labelsize = 12\n", "plt.plot(centers, np.median(H, -1), \"k-\", lw=2)\n", "plt.fill_between(centers, H.min(-1), H.max(-1), color=\"k\", alpha=.3, lw=0)\n", "plt.xlim(0, 20)\n", "plt.xticks((0, 10, 20))\n", "plt.ylim(0, 0.7)\n", "plt.yticks((0, 0.5), (\"0\", \"0.5\"))\n", "plt.xlabel(\"Frame intervals (ms)\", fontsize=labelsize)\n", "plt.ylabel(\"Fraction\", fontsize=labelsize)\n", "plt.title(f\"N={H.shape[1]} sessions\", fontsize=labelsize)\n", "plt.tick_params(labelsize=labelsize)\n", "plt.gca().spines[\"top\"].set_visible(False)\n", "\n", "plt.subplots_adjust(bottom=.25, left=.3, right=.85)\n", "outpath = figdir / \"frame-intervals.png\"\n", "if not figdir.exists():\n", " figdir.mkdir(parents=True)\n", "fig.savefig(str(outpath), dpi=600)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "on_latency = []\n", "off_latency = []\n", "with h5py.File(\"latency_data.h5\", \"r\") as src:\n", " for data in src[\"on_latency\"].values():\n", " if isinstance(data, h5py.Dataset):\n", " on_latency.append(np.array(data))\n", " for data in src[\"off_latency\"].values():\n", " if isinstance(data, h5py.Dataset):\n", " off_latency.append(np.array(data))" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "H_on, edges = to_histograms(on_latency)\n", "H_off, edges = to_histograms(off_latency)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "centers = (edges[1:] + edges[:-1])/2\n", "\n", "fig = plt.figure(figsize=(2, 2))\n", "labelsize = 12\n", "plt.plot(centers, np.median(H_on, -1), \"k-\", lw=2)\n", "plt.fill_between(centers, H_on.min(-1), H_on.max(-1), color=\"k\", alpha=.3, lw=0)\n", "plt.xlim(0, 20)\n", "plt.xticks((0, 10, 20))\n", "plt.ylim(0, 0.7)\n", "plt.yticks((0, 0.5), (\"0\", \"0.5\"))\n", "plt.xlabel(\"ON latency (ms)\", fontsize=labelsize)\n", "plt.ylabel(\"Fraction\", fontsize=labelsize)\n", "plt.title(f\"N={H_on.shape[1]} sessions\", fontsize=labelsize)\n", "plt.tick_params(labelsize=labelsize)\n", "plt.gca().spines[\"top\"].set_visible(False)\n", "\n", "plt.subplots_adjust(bottom=.25, left=.3, right=.85)\n", "outpath = figdir / \"on-latency.png\"\n", "if not figdir.exists():\n", " figdir.mkdir(parents=True)\n", "fig.savefig(str(outpath), dpi=600)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAJMAAACeCAYAAAA2ezjLAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAAUo0lEQVR4nO2de3RV1Z3HP98EkvCGAII8baURwYIt+KhK0dE6PurQNc4aW6kj7aitXU7tc8Z22o61D7WjfcxMldqitdZ3FacdndYuLba19QFTATWIFQMhFhE0IYGIIfnNH3ufcHK5N9wL5z6zP2udlXP23ufs37353t/eZ5+9f0dmRiCQBFXFNiBQOQQxBRIjiCmQGEFMgcQIYgokRhBTIDGCmMoUSYslPVxsO+KUrZgkNUnaKmlYLO0iSStyvM4hku6U9IqkNkmPSzoupcx4SXf4/Dck3Z7QxzhgzOx2Mzu92HbEKVsxeaqByw/yGsOBp4F5QD1wK/CgpOGxMvcDW4BpwCHAdQdZZ2ViZmW5AU3AFcDrwGifdhGwIoFr7wDm+f3TfV3VWZ77L0AL0A68AJzq06u8vS8B24F7gHqfVwf81Ke34sQ9wectATb4670MLI6l/z5W7wn+vDb/94RY3grga8Dj/joPA+P2V3euW7l7ppW4L+pz6TIlrZHUmmG7IcM5RwM1wJ990vE4UdwqabukpyUtzHDuEcBlwDFmNgL4a5wQAf4J+ACwEJgEvAF83+ddCIwCpgJjgY8Dnb4J/w/gTH+9E4Bn0tRbDzzoy44Fvo3zrmNjxc4HPoLzrDWx7yxt3ek+334ptoc5SM90GnAU7tc4noP0TMBIYC3whVjaTYAB/wgMBj6I+wWPS3P+DGCrt2twSl4j3kv540OBLmAQ8FHgD8CclHOG+brOBYak5C3BeybgAuCplPw/AktinulLsbxPAL/0+2nrHoieCTN7FvgfXBNywEgaAvwCeMLMro5ldQJNZrbMzLrM7C6gGTgxjS1/Bj4FXAlslXSXpEk+ezqwPPKMOHF1AxOA24BfAXf5G4FvSRpsZjuB83De4i+SHpQ0M435k4CNKWkbgcmx4y2x/V24viKZ6s7wNfVL2YvJ82/AxfT98pD0nKSODNvSWLla4AFgM/CxlGuvwXmmOBmnWpjZHWZ2Ek48Blzrs5pxzdXo2FZnZi1epF81s1m4puz9wD/46/3KzN6H82TrgB+mqfYVX1+cabi+W7/0V3euVISYvEe4G/hkSvpsMxueYfs4gP8V/gzngS40s56Uyy8Hxki6UFK1pL8DpuA6s32QdISkv/LifNNfM7reUuAbkqb7suMlLfL7p0h6p6RqXOe/C+iRNEHSIt932g10xK4X5yGgQdL5kgZJOg+YhfPY/ZKp7v2dl5Zi930Oon/TBJwWO56K+wfm1GfCdYgN5/o7YtuCWJkFuL5UB67TvyDDteYAT+HumF73/8xJPq8K+AyuM9+Ou6v7ps/7kE/fCbyK60gPwnmjx3B9wlZc32dWap/JH58ErPJlVwEnxfJWABfFjnvPzVT3gfxP5C8YCBw0FdHMBUqDIKZAYgQxBRIjiCmQGEFMgcSoGDGdccYZhrvFD1uOm6RfHsh3nkrFiGnbtm3FNqGcGZfERSpGTIHiE8QUSIwgpkBiBDEFEiOIKZAYQUyBxAhiKgADZWZGEFMB2LNnT7FNKAhBTAWgq6ur2CYUhCCmPNPT0xM8UyAZuru76e7uLrYZBSGIKc/09PQEMQWSIYgpkBihmQskRvBMgcQIYgokRmjmAokRxpkCiRGauUBiBDHlAUn1kpZL2ilpo6TzM5S7UlJXSvibtxfKzqQZSH2mQQWs6/vAW7jgVkfjwuStNrPn0pS928w+XEDb8kbwTAnj4wudC3zZzDrM7PfAz3Hh8yqaIKY0SHqbj4X9vKRN8S2L0xuAPWa2Ppa2Gpidofw5kl73kd8uzdbGUiQ0c+m5Axeg6rO4wFi5MBwXlSxOGzAiTdl7cEFJXwWOA+6T1Gpmd6YWlHQJcAnAtGnTcjQp/7S3t/OTn/yE+fPnF9uUwpBDhLUdQNUBRnl7F7ArJe2zwC+yOPcK4L79lZs3b56VGkuXLjXAFi9eXGxT+gVYaQlE88ulz/RbL4oDYT0wSNI7YmlzgXSd71QM0AHWW1S2b9/e52+lk0sz1wT8UtJy+oYBxsy+0t+JZrZT0v3AVZIuwt3NLcJFd+2DDxr6W1wMx2NwQU+/mIOdJUNnp4vNvnPnziJbUhhyEdMwXMDPwbhgpBHZLr34BHAzLuj6duBSM3tO0gLgf80sikv9QV+uFhdK+VozuzUHO0uGN998Ewhi2gcz+8jBVGRmr+Ne95Ca/jv2BjjHzD50MPWUEkFM/eD7PB/CBW9vAe40sxfzYVglEDVzu3btoqenh6qqyn56lcs40zm4+NIzcTGujwBWSvqbPNlW9kSeqbOzc0CMNeXimb4JLDKz30QJkk4G/gs3mh1IIVVMgwcf0CtJyoZc/O4U4Hcpab/36YE0xJu5gTCnKRcxPYMbaIzzGdK8/yzgiDyTmbFjR+oDgMojl2buUuAXki7HvaFoKu6xyjn5MKwSiMQE0NrayqRJk/opXf7kMjSwTtKRwHtwL4h5BXjSzAbGQvoDIGrmgOCZUjGzPezbbwpkINUzVTr9iklSo5kd6febyTDabWal98i+BIiLqa2trYiWFIb9eaaLY/sVMfOxkMSbuQEvJnMzIiMOMbN7U8v4N0MG0hD3TAOhz5TL0MCyDOk3JWFIJRIXU3t7exEtKQz77YDHVoZUSXobfecWvR33KtNACmY24DxTNndzf2bvBLWXUvK2AF9N2qhKYPfu3X2Og2cCzKwKQNJjZrYw/yZVBnGvBANDTLn0mRZLGhNPkDRGUmUP6x4g8Ts5gI6OjiJZUjhyEdNy9n2oO8WnB1JI9UxBTH05wszWxhP88cxkTaoMgpj6Z6ukGfEEfzwwll7kSGozNxCm7uYipptxCyLfL2mWn3n5M+BH+TGtvIk804gRbp3pQBBTLg96rwG6gOtw00+acUL6dh7sKnsizzRmzBja29uDmOKYWQ/w734L7IfIM40ZM4ZNmzaxa1euK+rLj1xXp9TgFhKMIzYSbmaPJmxX2ROJaeTIkVRVVbF79266uroqeh541mKSdBJwL25x5Ehc7IERuOaubINx5YuomRsyZAgjRoygra2N9vZ26uvri2xZ/silA/4d4FtmVg+0+79fA27Ii2VlTuSZ6urqGD7crTGt9OdzuYipAfheSto1wKeTM6dyiMQUeSao/DlNuYipDde8AfxF0ixgDLGl3YG9RM1cbW0to0aNAqClpaWYJuWdXMR0P3CW378Z+A1uhe/PkjaqEoh7pkhMmzZlE2SvfMllaOBTsf3rJD2B64D/Kg92lT3pxFTpnikrMUmqxgXsmmVmu2GfKb2BFOJ3cyNHut7BG2+8QUdHR2+HvNLIqpkzs26gG6jLrzmVQ9wzRWLq7Oxky5Yt/Z1W1uTSZ/oucI+khZIOl/T2aMuTbWVNJKahQ4f23s3t2rWrosWUzRzwiWa2BRftBOA0+s4DN6A6D7aVNfFmrq7OOfStW7fS2tpKd3c31dWV95Vl45nWg5u+66fw/jza91vlfSsJEPdMxx57LAAvvPACZlaxz+myEVNqpNswDzwLIjENGzaMuXPnUltbS0tLCzt27NhnrlOlkI2YUpeEl2UY5UITCWbo0KHU1NQwZ84cwHmnSvVM2QwNDJJ0CntFVJ1yHGYNpCHumQDmz5/P008/zbp16yrWM2Ujpq24Ee+I7SnHRpg1sA+pYjr++OO58cYbWbdu3cD1TGZ2WAHsqDgi7xOJ6YQTXPz89evXV+wausqOJVxE4ndzAJMnT2bixIns3r2b559/vpim5Y0gpjwRHwEHqKmpYeZMtypszZo19PT0FM22fBHElCeiZi4asKyuru4V08svv1yRnfAgpjwRn2kZMXu2e1djc3NzRXbCg5jyQHd3N11dXUiipqamN33evHmAE1MlLn0KYsoDkVeqqalB2jvGO3PmTIYNG0ZHRwfNzc3FMi9vBDHlgUhMtbW1fdJHjx7N9OnTAXjuuWze21heBDHlgUxiksSMGS5cw/r16/c5r9wJYsoD8cUEqUSd8BdfrLw3qwUx5YFMngn2dsKbmppYs2YNjY2NFTPmlNPy8EB2pBsWiIheS9/c3MzGjRsBGD9+POPGjSucgXkieKY80F8zN23aNIYOHUpbW1vvCt+tW7cW1L58EcSUB/rzTJI4/PDDAXqHB4KYAhmJQg5Gz+VSmTVrFuD6TeAi8aaGLSxHgpjyQBRTIJ1nAli40M18vv/++3sfq6R6p+gl0dlSCo9ogpjyQNQXyuSZLr74YhoaGnjttde4+WY3z/DVV1/tzW9qamLFihWsXr26z3kdHR20tLRgtu/LtZqamoo+taUk7+Yk1ePe1XI6sA34gpndUVyrsmd/Yho0aBBXX3015513Hg8//DAzZszg7LPPZtWqVWzbto233noLgM2bNzNq1ChGjBhBY2Njr8fr7OzsHfwE10y2trbS2trK9u3bGTt2bJ4/YXpKUkzA94G3gAnA0cCDklabWck/g+jo6OCWW24BYOrUqRnLHXPMMVxwwQXccsst3HDDDfzpT3+irq6Obdu20dDQwPz582loaGDNmjU8+eSTNDY2Mm3aNGbPnk1VVRWHHnpo7yzOeECMtWvXctxxx2UUcj5ROpdZTCQNA94AjjKz9T7tNqDFzK7IdN6sWbPstttuK5CVmbn22mu59957mTp1Kk899RQTJ05MW27nzp08+uijPPLIIyxdunSfd60ADB48uHcYIc7kyZNZsGABp5xyCvX19SxbtowNGzZQVVXFyJEjmTNnDmeddRZTpkyhqqr/nkxPTw/HHnvsKjObf+Cf2lGKYnoX8LiZDY2lfQ5YaGYZXy4tqWQ+yJAhQ7j++utZsmRJvx5iw4YNrF+/npdffpnHHnuMsWPHMnr0aNauXcszzzzTO3QwadIkTjzxRDZv3syzzz6bjznkFSumBcC9ZjYxlnYxsNjMTk4pewlwiT88Cnged1OxpzDWZiTqPsTtGIfr/6UiCrO8vpu9ayDj3RsDZpjZiIOtoBT7TB3sjVAXMRLY5+doZjfhX54oaWUSv658Ucr2SVqZxHVKcWhgPW7h5ztiaXOBku98D3RKTkxmthMX8vAqScMknQgsAorfuw70S8mJyfMJYAhuNfGdwKVZDAuU+ruCS9m+RGwruQ54oHwpVc8UKEOCmAKJUfZiklQvabmknZI2Sjq/iLZcJmmlpN2SfpySd6qkdZJ2SfqNpOkFtq1W0jL/HbVLekbSmUnaV/Ziou9zvMXAjZJmF8mWV4Cv0zfkEJLG4e5QvwzUAyuBuwts2yDcS5MWAqOAL+EC3h6WmH1mVrYbMAwnpIZY2m3ANUW26+vAj2PHlwB/SLG7E5hZZDvXAOcmZV+5e6YGYI/5B8Ke1UCxPFMmZuPsAnrH0l6iiHZKmoD7/p4jIfvKXUzDce+9i9OGew1HKTEcZ1ecotkpaTBwO3Crma0jIfvKXUxZP8crMiVjp6QqXFfgLeAyn5yIfeUupnJ5jvcczi6gd87W4RTYTrkoGstwNyvnmllXkvaVtZisxJ7jSRokqQ43paRaUp2kQcBy4ChJ5/r8rwBrfBNTSG4EjgTOMbN4tLFk7Cv2HVkCdyT1wAPATmATcH4RbbkSNz8ovl3p804D1uHuklYAhxXYtunenjdxzVq0LU7KvvBsLpAYZd3MBUqLIKZAYgQxBRIjiCmQGEFMgcQIYgokRhAT4KdhmB9gLFsk3SnpAwlfc46kP2RTtuTFJGmJpLV+0tYWSTdKGh3Lv1JSl6SO2PbPPm+FpDdT8t5zkPacLGnzQX6sxJE0B/dI5L+TvK6ZrQFaJWVcTR1R0mKS9FngWuDzuAldx+NGcn8tqSZW9G4zGx7bvhXLuywl74+F+wQF5WPA7ZafUejb/fX7p9iPQ/oZ/h+JG+7/+5T04cBrwEdjjzB+muEaK4CLsqjrMNyjhkH++CNAI+6p+QbgYz49mjTWw97HEZNwP8orcHOAtgP3APUp174Q97hnG/CvsbqrgS/6c9uBVcBU3AzS61Ps/Dnw6QyfYQNwUux4CfA48B2g1eef4NObccvILoyVPwu3vL4daAE+F8ub7D93bb/fY7FF088/+AzcWv1BafJuBe7Mo5jOxj01F26a6y7g3T7vZGBzyvmXA08AU4Ba4Acx+6Jr/xC3FnAusBs40ud/HlgLHOHrmwuMBY7FTQOu8uXGeTsmpLF/mK9jfIqY9uB+GNW42Z+bvEhrcbGv2oHhvvxfgAV+f0z0eWPX2wHMKVcxfRjYkiHvGuDXMTG95X990TYpJqZdsfT/y0ZMafIfAC7vR0yNwKmx40OBLty86+jaU2L5TwEf9PsvAIsy1NsIvM/vXwY8lKHcZF9HXYqYXowdv9OXmRBL2w4c7fc34ZqykRnqaAHe29//rJT7TNuAcRnusA6lb0SRe8xsdGx7JZb3yVj6u7OpWNKZkp6Q9LqkVlwT0F+g7unAckmtvnwjLurIhFiZLbH9XbjmGlyT9lKG696K+1Hh/2aaWtPq/6bOjHw1tt8JYGapaZEd5+I+50ZJj6W5URkRqyctpSymP+Kag7+NJ0oaDpwJPJKPSiXVAvcB1+F+xaOBh9j7tvR0Hdxm4MwUQdeZWUsWVTbjmtR0/BRYJGkubh7SA+kK2d452w1Z1JcWM3vazBYBh/h67onyJE0GanBeNCMlKyYzawO+CvynpDMkDZZ0GO5DbiZ/E+BqcH2K14A9fm3Z6bH8V4GxkkbF0pYC34jWmkkaL2lRlvX9CPiapHfIMUfSWAAz2ww8jfus91nfCW2pPITr3+WMpBpJiyWNMjf7cgfuJiNiIfCome0b3i5GyYoJwNwt/hdxXmIH8CTul3zq/j7YQdTZDnwSJ9o3gPNxd1FR/jpcMI0NvlmbBHzPl3lYUjuuM35cllV+29f1MO4zLsN11CNuxfV39vfjuQlY7KfmHggXAE2SdgAfx61BjFiM+8H0S5gcV+JIei+uuZtu+/lnSboD1398IMH65wA/MLP9DvYGMZUwfknSXcBqM7uq2Pbsj5Ju5gYyko7E3T0dCny3qMZkSfBMgcQInimQGEFMgcQIYgokRhBTIDGCmAKJEcQUSIz/B7D2IHXhFR2wAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "centers = (edges[1:] + edges[:-1])/2\n", "\n", "fig = plt.figure(figsize=(2, 2))\n", "labelsize = 12\n", "plt.plot(centers, np.median(H_off, -1), \"k-\", lw=2)\n", "plt.fill_between(centers, H_off.min(-1), H_off.max(-1), color=\"k\", alpha=.3, lw=0)\n", "plt.xlim(0, 20)\n", "plt.xticks((0, 10, 20))\n", "plt.ylim(0, 0.7)\n", "plt.yticks((0, 0.5), (\"0\", \"0.5\"))\n", "plt.xlabel(\"OFF latency (ms)\", fontsize=labelsize)\n", "plt.ylabel(\"Fraction\", fontsize=labelsize)\n", "plt.title(f\"N={H_on.shape[1]} sessions\", fontsize=labelsize)\n", "plt.tick_params(labelsize=labelsize)\n", "plt.gca().spines[\"top\"].set_visible(False)\n", "\n", "plt.subplots_adjust(bottom=.25, left=.3, right=.85)\n", "outpath = figdir / \"off-latency.png\"\n", "if not figdir.exists():\n", " figdir.mkdir(parents=True)\n", "fig.savefig(str(outpath), dpi=600)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "data = dict()\n", "dt = 0.1\n", "for attr in (\"frame_interval\", \"on_latency\", \"off_latency\"):\n", " for typ in (\"count\", \"mean\", \"std\", \"min\", \"2p5\", \"median\", \"97p5\", \"max\"):\n", " data[f\"{attr}_{typ}\"] = []\n", "for _int, _on, _off in zip(intervals, on_latency, off_latency):\n", " if _on[_on>0].size < 20:\n", " continue\n", " for lab, val in ((\"frame_interval\", _int),\n", " (\"on_latency\", _on[_on>0]),\n", " (\"off_latency\", _off[_off>0])):\n", " val = val * dt\n", " data[f\"{lab}_count\"].append(val.size)\n", " data[f\"{lab}_mean\"].append(np.mean(val))\n", " data[f\"{lab}_std\"].append(np.std(val, ddof=1))\n", " data[f\"{lab}_min\"].append(np.min(val))\n", " data[f\"{lab}_2p5\"].append(np.percentile(val, 2.5))\n", " data[f\"{lab}_median\"].append(np.median(val))\n", " data[f\"{lab}_97p5\"].append(np.percentile(val, 97.5))\n", " data[f\"{lab}_max\"].append(np.max(val))\n", "data = pd.DataFrame(data=data)\n", "data.to_csv(\"latency_stats.tsv\", sep=\"\\t\", index=False, header=True)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
frame_interval_countframe_interval_meanframe_interval_stdframe_interval_minframe_interval_2p5frame_interval_medianframe_interval_97p5frame_interval_maxon_latency_counton_latency_mean...on_latency_97p5on_latency_maxoff_latency_countoff_latency_meanoff_latency_stdoff_latency_minoff_latency_2p5off_latency_medianoff_latency_97p5off_latency_max
0605310.6614411.4075799.89.900010.214.800026.740310.274194...14.770024.840410.2383661.4853929.39.40009.8014.762525.0
1603510.7530741.4037999.89.900010.315.200026.3111310.225876...13.900020.4111210.2576441.5970760.39.40009.9014.400025.0
2678210.2547040.5473609.89.900010.110.900021.05209.883846...10.700015.05219.8401150.7244780.39.40009.7010.600019.6
3598711.0391352.1204079.89.900010.417.300027.413610.971324...17.062521.613610.9441182.4814200.39.400010.2017.212520.3
4594810.9676362.0179789.810.000010.416.700028.125710.530739...16.140021.125710.5167321.8291679.59.50009.9014.680025.3
5604211.0981461.9494799.810.000010.616.600028.312010.886667...15.305019.912010.9475001.8890659.49.597510.5014.712524.7
6604210.9546671.7724439.810.000010.416.100027.327910.513262...16.505020.828010.6228571.9716949.59.597510.0017.175021.0
7602910.9704591.7864439.810.000010.516.800026.927110.642066...16.675022.927110.7040592.0467919.49.500010.2017.250024.0
8599911.2744792.7520699.89.900010.521.100028.334410.837500...17.327525.634410.8805232.2735139.49.500010.3017.000025.9
9503110.8745181.7638059.79.900010.315.700028.115310.530065...16.100025.015310.4679741.8356009.49.48009.9015.500021.7
10303710.8617711.7855339.89.900010.315.700027.28310.216867...12.580016.98310.2638551.0988449.59.50009.9013.710016.5
11600210.8703271.7620589.89.900010.316.300027.711310.575221...20.500021.111310.7008852.4096729.49.50009.9020.460021.5
12408110.8947561.6578789.89.900010.416.900026.76410.228125...14.185016.26410.3281251.0946439.49.50009.9512.952516.4
13454611.1952712.2040249.79.900010.517.100027.413710.489051...14.100025.013710.4941611.6300389.49.440010.0014.020024.9
14454010.8813001.8496199.79.900010.317.200027.025110.427490...15.300025.225210.3849211.4852309.49.427510.0015.590020.6
15354310.9256841.7575399.89.900010.317.000027.915910.892453...16.300019.716011.0006252.1454509.39.400010.1016.300020.5
16453910.8506281.5788049.79.900010.315.965028.09910.374747...13.600019.79810.0969390.9637199.39.40009.7011.800017.3
17327810.8611651.8218189.79.900010.317.207526.713610.370588...16.325020.513710.3197081.6672389.49.40009.8015.920020.2
18353410.9629881.8459289.89.900010.317.000022.212810.261719...12.830016.112810.1796880.8565969.49.50009.9011.900016.1
19401310.9564421.7982489.89.900010.415.400026.926910.789963...16.260025.626910.7907062.0753419.39.400010.3016.250024.8
20303410.8474621.7286489.79.900010.315.717527.212010.336667...14.407517.412010.2941671.5503489.39.40009.7014.807520.1
21504110.8822851.7697199.79.900010.316.300027.211410.271053...14.717517.311410.3552631.2718949.59.50009.8014.470016.3
22554910.9683551.9867409.89.900010.317.200027.121310.648826...16.810025.121310.5399062.1888129.49.40009.8016.600025.0
23406010.9907391.9776269.89.947510.417.500027.638110.681890...17.750020.838110.7002622.0395889.49.500010.1017.200022.0
24452410.9120691.8726499.89.900010.417.092527.88210.763415...16.887517.18210.8329272.1486179.59.500010.1516.400020.3
25432410.7563601.4251539.89.900010.315.192527.816210.356173...14.400016.516210.3444441.2402169.49.50009.8014.282516.7
\n", "

26 rows × 24 columns

\n", "
" ], "text/plain": [ " frame_interval_count frame_interval_mean frame_interval_std \\\n", "0 6053 10.661441 1.407579 \n", "1 6035 10.753074 1.403799 \n", "2 6782 10.254704 0.547360 \n", "3 5987 11.039135 2.120407 \n", "4 5948 10.967636 2.017978 \n", "5 6042 11.098146 1.949479 \n", "6 6042 10.954667 1.772443 \n", "7 6029 10.970459 1.786443 \n", "8 5999 11.274479 2.752069 \n", "9 5031 10.874518 1.763805 \n", "10 3037 10.861771 1.785533 \n", "11 6002 10.870327 1.762058 \n", "12 4081 10.894756 1.657878 \n", "13 4546 11.195271 2.204024 \n", "14 4540 10.881300 1.849619 \n", "15 3543 10.925684 1.757539 \n", "16 4539 10.850628 1.578804 \n", "17 3278 10.861165 1.821818 \n", "18 3534 10.962988 1.845928 \n", "19 4013 10.956442 1.798248 \n", "20 3034 10.847462 1.728648 \n", "21 5041 10.882285 1.769719 \n", "22 5549 10.968355 1.986740 \n", "23 4060 10.990739 1.977626 \n", "24 4524 10.912069 1.872649 \n", "25 4324 10.756360 1.425153 \n", "\n", " frame_interval_min frame_interval_2p5 frame_interval_median \\\n", "0 9.8 9.9000 10.2 \n", "1 9.8 9.9000 10.3 \n", "2 9.8 9.9000 10.1 \n", "3 9.8 9.9000 10.4 \n", "4 9.8 10.0000 10.4 \n", "5 9.8 10.0000 10.6 \n", "6 9.8 10.0000 10.4 \n", "7 9.8 10.0000 10.5 \n", "8 9.8 9.9000 10.5 \n", "9 9.7 9.9000 10.3 \n", "10 9.8 9.9000 10.3 \n", "11 9.8 9.9000 10.3 \n", "12 9.8 9.9000 10.4 \n", "13 9.7 9.9000 10.5 \n", "14 9.7 9.9000 10.3 \n", "15 9.8 9.9000 10.3 \n", "16 9.7 9.9000 10.3 \n", "17 9.7 9.9000 10.3 \n", "18 9.8 9.9000 10.3 \n", "19 9.8 9.9000 10.4 \n", "20 9.7 9.9000 10.3 \n", "21 9.7 9.9000 10.3 \n", "22 9.8 9.9000 10.3 \n", "23 9.8 9.9475 10.4 \n", "24 9.8 9.9000 10.4 \n", "25 9.8 9.9000 10.3 \n", "\n", " frame_interval_97p5 frame_interval_max on_latency_count \\\n", "0 14.8000 26.7 403 \n", "1 15.2000 26.3 1113 \n", "2 10.9000 21.0 520 \n", "3 17.3000 27.4 136 \n", "4 16.7000 28.1 257 \n", "5 16.6000 28.3 120 \n", "6 16.1000 27.3 279 \n", "7 16.8000 26.9 271 \n", "8 21.1000 28.3 344 \n", "9 15.7000 28.1 153 \n", "10 15.7000 27.2 83 \n", "11 16.3000 27.7 113 \n", "12 16.9000 26.7 64 \n", "13 17.1000 27.4 137 \n", "14 17.2000 27.0 251 \n", "15 17.0000 27.9 159 \n", "16 15.9650 28.0 99 \n", "17 17.2075 26.7 136 \n", "18 17.0000 22.2 128 \n", "19 15.4000 26.9 269 \n", "20 15.7175 27.2 120 \n", "21 16.3000 27.2 114 \n", "22 17.2000 27.1 213 \n", "23 17.5000 27.6 381 \n", "24 17.0925 27.8 82 \n", "25 15.1925 27.8 162 \n", "\n", " on_latency_mean ... on_latency_97p5 on_latency_max off_latency_count \\\n", "0 10.274194 ... 14.7700 24.8 404 \n", "1 10.225876 ... 13.9000 20.4 1112 \n", "2 9.883846 ... 10.7000 15.0 521 \n", "3 10.971324 ... 17.0625 21.6 136 \n", "4 10.530739 ... 16.1400 21.1 257 \n", "5 10.886667 ... 15.3050 19.9 120 \n", "6 10.513262 ... 16.5050 20.8 280 \n", "7 10.642066 ... 16.6750 22.9 271 \n", "8 10.837500 ... 17.3275 25.6 344 \n", "9 10.530065 ... 16.1000 25.0 153 \n", "10 10.216867 ... 12.5800 16.9 83 \n", "11 10.575221 ... 20.5000 21.1 113 \n", "12 10.228125 ... 14.1850 16.2 64 \n", "13 10.489051 ... 14.1000 25.0 137 \n", "14 10.427490 ... 15.3000 25.2 252 \n", "15 10.892453 ... 16.3000 19.7 160 \n", "16 10.374747 ... 13.6000 19.7 98 \n", "17 10.370588 ... 16.3250 20.5 137 \n", "18 10.261719 ... 12.8300 16.1 128 \n", "19 10.789963 ... 16.2600 25.6 269 \n", "20 10.336667 ... 14.4075 17.4 120 \n", "21 10.271053 ... 14.7175 17.3 114 \n", "22 10.648826 ... 16.8100 25.1 213 \n", "23 10.681890 ... 17.7500 20.8 381 \n", "24 10.763415 ... 16.8875 17.1 82 \n", "25 10.356173 ... 14.4000 16.5 162 \n", "\n", " off_latency_mean off_latency_std off_latency_min off_latency_2p5 \\\n", "0 10.238366 1.485392 9.3 9.4000 \n", "1 10.257644 1.597076 0.3 9.4000 \n", "2 9.840115 0.724478 0.3 9.4000 \n", "3 10.944118 2.481420 0.3 9.4000 \n", "4 10.516732 1.829167 9.5 9.5000 \n", "5 10.947500 1.889065 9.4 9.5975 \n", "6 10.622857 1.971694 9.5 9.5975 \n", "7 10.704059 2.046791 9.4 9.5000 \n", "8 10.880523 2.273513 9.4 9.5000 \n", "9 10.467974 1.835600 9.4 9.4800 \n", "10 10.263855 1.098844 9.5 9.5000 \n", "11 10.700885 2.409672 9.4 9.5000 \n", "12 10.328125 1.094643 9.4 9.5000 \n", "13 10.494161 1.630038 9.4 9.4400 \n", "14 10.384921 1.485230 9.4 9.4275 \n", "15 11.000625 2.145450 9.3 9.4000 \n", "16 10.096939 0.963719 9.3 9.4000 \n", "17 10.319708 1.667238 9.4 9.4000 \n", "18 10.179688 0.856596 9.4 9.5000 \n", "19 10.790706 2.075341 9.3 9.4000 \n", "20 10.294167 1.550348 9.3 9.4000 \n", "21 10.355263 1.271894 9.5 9.5000 \n", "22 10.539906 2.188812 9.4 9.4000 \n", "23 10.700262 2.039588 9.4 9.5000 \n", "24 10.832927 2.148617 9.5 9.5000 \n", "25 10.344444 1.240216 9.4 9.5000 \n", "\n", " off_latency_median off_latency_97p5 off_latency_max \n", "0 9.80 14.7625 25.0 \n", "1 9.90 14.4000 25.0 \n", "2 9.70 10.6000 19.6 \n", "3 10.20 17.2125 20.3 \n", "4 9.90 14.6800 25.3 \n", "5 10.50 14.7125 24.7 \n", "6 10.00 17.1750 21.0 \n", "7 10.20 17.2500 24.0 \n", "8 10.30 17.0000 25.9 \n", "9 9.90 15.5000 21.7 \n", "10 9.90 13.7100 16.5 \n", "11 9.90 20.4600 21.5 \n", "12 9.95 12.9525 16.4 \n", "13 10.00 14.0200 24.9 \n", "14 10.00 15.5900 20.6 \n", "15 10.10 16.3000 20.5 \n", "16 9.70 11.8000 17.3 \n", "17 9.80 15.9200 20.2 \n", "18 9.90 11.9000 16.1 \n", "19 10.30 16.2500 24.8 \n", "20 9.70 14.8075 20.1 \n", "21 9.80 14.4700 16.3 \n", "22 9.80 16.6000 25.0 \n", "23 10.10 17.2000 22.0 \n", "24 10.15 16.4000 20.3 \n", "25 9.80 14.2825 16.7 \n", "\n", "[26 rows x 24 columns]" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{\n", " \"frame_interval_count\":{\n", " \"count\":26.0,\n", " \"mean\":4907.4230769231,\n", " \"std\":1122.7457120141,\n", " \"min\":3034.0,\n", " \"25%\":4065.25,\n", " \"50%\":4788.5,\n", " \"75%\":6001.25,\n", " \"max\":6782.0\n", " },\n", " \"frame_interval_mean\":{\n", " \"count\":26.0,\n", " \"mean\":10.9025330988,\n", " \"std\":0.1838685492,\n", " \"min\":10.2547036272,\n", " \"25%\":10.8613168798,\n", " \"50%\":10.9034125764,\n", " \"75%\":10.9681750389,\n", " \"max\":11.2744790798\n", " },\n", " \"frame_interval_std\":{\n", " \"count\":26.0,\n", " \"mean\":1.7824363561,\n", " \"std\":0.3694507376,\n", " \"min\":0.5473596252,\n", " \"25%\":1.7358710265,\n", " \"50%\":1.7859877283,\n", " \"75%\":1.9302711763,\n", " \"max\":2.7520686314\n", " },\n", " \"frame_interval_min\":{\n", " \"count\":26.0,\n", " \"mean\":9.7730769231,\n", " \"std\":0.0452344321,\n", " \"min\":9.7,\n", " \"25%\":9.725,\n", " \"50%\":9.8,\n", " \"75%\":9.8,\n", " \"max\":9.8\n", " },\n", " \"frame_interval_2p5\":{\n", " \"count\":26.0,\n", " \"mean\":9.9172115385,\n", " \"std\":0.0371774591,\n", " \"min\":9.9,\n", " \"25%\":9.9,\n", " \"50%\":9.9,\n", " \"75%\":9.9,\n", " \"max\":10.0\n", " },\n", " \"frame_interval_median\":{\n", " \"count\":26.0,\n", " \"mean\":10.35,\n", " \"std\":0.1029563014,\n", " \"min\":10.1,\n", " \"25%\":10.3,\n", " \"50%\":10.3,\n", " \"75%\":10.4,\n", " \"max\":10.6\n", " },\n", " \"frame_interval_97p5\":{\n", " \"count\":26.0,\n", " \"mean\":16.3836538462,\n", " \"std\":1.6336187179,\n", " \"min\":10.9,\n", " \"25%\":15.704375,\n", " \"50%\":16.65,\n", " \"75%\":17.098125,\n", " \"max\":21.1\n", " },\n", " \"frame_interval_max\":{\n", " \"count\":26.0,\n", " \"mean\":26.9538461538,\n", " \"std\":1.673853224,\n", " \"min\":21.0,\n", " \"25%\":26.9,\n", " \"50%\":27.25,\n", " \"75%\":27.8,\n", " \"max\":28.3\n", " },\n", " \"on_latency_count\":{\n", " \"count\":26.0,\n", " \"mean\":234.8846153846,\n", " \"std\":212.4006265383,\n", " \"min\":64.0,\n", " \"25%\":120.0,\n", " \"50%\":156.0,\n", " \"75%\":270.5,\n", " \"max\":1113.0\n", " },\n", " \"on_latency_mean\":{\n", " \"count\":26.0,\n", " \"mean\":10.4992225547,\n", " \"std\":0.2630864178,\n", " \"min\":9.8838461538,\n", " \"25%\":10.289811828,\n", " \"50%\":10.5011563718,\n", " \"75%\":10.6736238956,\n", " \"max\":10.9713235294\n", " },\n", " \"on_latency_std\":{\n", " \"count\":26.0,\n", " \"mean\":1.6989523005,\n", " \"std\":0.4665548362,\n", " \"min\":0.6935490082,\n", " \"25%\":1.3641661088,\n", " \"50%\":1.6877457155,\n", " \"75%\":2.0298546853,\n", " \"max\":2.4338936368\n", " },\n", " \"on_latency_min\":{\n", " \"count\":26.0,\n", " \"mean\":8.3769230769,\n", " \"std\":2.9383407144,\n", " \"min\":0.4,\n", " \"25%\":9.4,\n", " \"50%\":9.4,\n", " \"75%\":9.4,\n", " \"max\":9.5\n", " },\n", " \"on_latency_2p5\":{\n", " \"count\":26.0,\n", " \"mean\":9.4775961538,\n", " \"std\":0.0498421547,\n", " \"min\":9.4,\n", " \"25%\":9.4425,\n", " \"50%\":9.5,\n", " \"75%\":9.5,\n", " \"max\":9.5975\n", " },\n", " \"on_latency_median\":{\n", " \"count\":26.0,\n", " \"mean\":9.9711538462,\n", " \"std\":0.1594823357,\n", " \"min\":9.7,\n", " \"25%\":9.9,\n", " \"50%\":9.925,\n", " \"75%\":10.0375,\n", " \"max\":10.4\n", " },\n", " \"on_latency_97p5\":{\n", " \"count\":26.0,\n", " \"mean\":15.4399038462,\n", " \"std\":1.9660193896,\n", " \"min\":10.7,\n", " \"25%\":14.23875,\n", " \"50%\":15.7025,\n", " \"75%\":16.6325,\n", " \"max\":20.5\n", " },\n", " \"on_latency_max\":{\n", " \"count\":26.0,\n", " \"mean\":20.6653846154,\n", " \"std\":3.414901733,\n", " \"min\":15.0,\n", " \"25%\":17.325,\n", " \"50%\":20.65,\n", " \"75%\":24.325,\n", " \"max\":25.6\n", " },\n", " \"off_latency_count\":{\n", " \"count\":26.0,\n", " \"mean\":235.0384615385,\n", " \"std\":212.3253128139,\n", " \"min\":64.0,\n", " \"25%\":120.0,\n", " \"50%\":156.5,\n", " \"75%\":270.5,\n", " \"max\":1112.0\n", " },\n", " \"off_latency_mean\":{\n", " \"count\":26.0,\n", " \"mean\":10.5017872975,\n", " \"std\":0.294928869,\n", " \"min\":9.8401151631,\n", " \"25%\":10.3005520073,\n", " \"50%\":10.4810672201,\n", " \"75%\":10.7032655194,\n", " \"max\":11.000625\n", " },\n", " \"off_latency_std\":{\n", " \"count\":26.0,\n", " \"mean\":1.6923247794,\n", " \"std\":0.4923454454,\n", " \"min\":0.7244780523,\n", " \"25%\":1.3252282322,\n", " \"50%\":1.7482024388,\n", " \"75%\":2.0682035094,\n", " \"max\":2.4814202834\n", " },\n", " \"off_latency_min\":{\n", " \"count\":26.0,\n", " \"mean\":8.35,\n", " \"std\":2.9655690854,\n", " \"min\":0.3,\n", " \"25%\":9.3,\n", " \"50%\":9.4,\n", " \"75%\":9.4,\n", " \"max\":9.5\n", " },\n", " \"off_latency_2p5\":{\n", " \"count\":26.0,\n", " \"mean\":9.4631730769,\n", " \"std\":0.0609940886,\n", " \"min\":9.4,\n", " \"25%\":9.4,\n", " \"50%\":9.49,\n", " \"75%\":9.5,\n", " \"max\":9.5975\n", " },\n", " \"off_latency_median\":{\n", " \"count\":26.0,\n", " \"mean\":9.9730769231,\n", " \"std\":0.2065094522,\n", " \"min\":9.7,\n", " \"25%\":9.8,\n", " \"50%\":9.9,\n", " \"75%\":10.1,\n", " \"max\":10.5\n", " },\n", " \"off_latency_97p5\":{\n", " \"count\":26.0,\n", " \"mean\":15.2290384615,\n", " \"std\":2.0847439983,\n", " \"min\":10.6,\n", " \"25%\":14.311875,\n", " \"50%\":15.15375,\n", " \"75%\":16.55,\n", " \"max\":20.46\n", " },\n", " \"off_latency_max\":{\n", " \"count\":26.0,\n", " \"mean\":21.2192307692,\n", " \"std\":3.2730437493,\n", " \"min\":16.1,\n", " \"25%\":19.725,\n", " \"50%\":20.8,\n", " \"75%\":24.775,\n", " \"max\":25.9\n", " }\n", "}\n" ] } ], "source": [ "with open(f\"latency_summary_{data.shape[0]}sessions.json\", \"w\") as out:\n", " stats = data.describe().to_json(indent=4)\n", " print(stats)\n", " print(stats, file=out)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "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.9.0" } }, "nbformat": 4, "nbformat_minor": 4 }