{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "source": [ "%pylab inline\n", "from pyannote.core import notebook" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Timeline (`pyannote.core.timeline.Timeline`)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [], "source": [ "from pyannote.core import Timeline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**`Timeline`** instances are used to describe sets of temporal fragments (e.g. of an audio file). \n", "One can optionally store an identifier of the associated multimedia document using **`uri`** keyword argument. " ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [], "source": [ "timeline = Timeline(uri='MyAudioFile')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Temporal fragments can be added to the timeline in any order and may be overlapping." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ ", , , , , ])>" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from pyannote.core import Segment\n", "timeline.add(Segment(6, 8))\n", "timeline.add(Segment(0.5, 3))\n", "timeline.add(Segment(8.5, 10))\n", "timeline.add(Segment(1, 4))\n", "timeline.add(Segment(5, 7))\n", "timeline.add(Segment(7, 8))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "They are automatically sorted internally (by start time first)." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[ 00:00:00.500 --> 00:00:03.000]\n", "[ 00:00:01.000 --> 00:00:04.000]\n", "[ 00:00:05.000 --> 00:00:07.000]\n", "[ 00:00:06.000 --> 00:00:08.000]\n", "[ 00:00:07.000 --> 00:00:08.000]\n", "[ 00:00:08.500 --> 00:00:10.000]\n" ] } ], "source": [ "for segment in timeline:\n", " print(segment)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Timeline contains 6 segments\n", "The second segment of timeline is [ 00:00:01.000 --> 00:00:04.000]\n" ] } ], "source": [ "print(\"Timeline contains %d segments\" % len(timeline))\n", "print(\"The second segment of timeline is %s\" % (str(timeline[1])))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "One can visualize **`Timeline`** instances in IPython Notebook." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ ", , , , , ])>" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "timeline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Coverage, extent and gaps" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The **extent** of a timeline is the segment of minimum duration that contains every segments of the timeline." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABHAAAABjCAYAAADze/f8AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAABw5JREFUeJzt3U+opXUdx/HPV25RNiT9wf5JpkRlgZZIU1o0URAUVIuI\n6H9BtYgcCoJ0UXfpJmMWbUQbLKyFQ5SLSLFhFrWwf6ZTiiBCWtEMkWEmVI7fFvep5t+9x5nG+/zO\n6fWCy5zz3OccvrP4cS/v+3ueU90dAAAAAMZ11twDAAAAALA1AQcAAABgcAIOAAAAwOAEHAAAAIDB\nCTgAAAAAgxNwAAAAAAa3ttU3q8pnjAMAAACcYd1dp3L+lgFnesPTnwZmtL6+nvX19bnHABawVmE5\nWKuwHKxVWA5Vp9RukriECgAAAGB4Ag4AAADA4AQcVtauXbvmHgF4EqxVWA7WKiwHaxVWV211j5uq\navfAAQAAADhzquqUb2JsBw4AAADA4AQcAAAAgMEJOAAAAACDE3AAAAAABifgAAAAAAxOwAEAAAAY\nnIADAAAAMDgBBwAAAGBwAg4AAADA4AQcAAAAgMEJOAAAAACDE3AAAAAABifgAAAAAAxOwAEAAAAY\nnIADAAAAMDgBBwAAAGBwAg4AAADA4AQcAAAAgMEJOAAAAACDE3AAAAAABifgAAAAAAxOwAEAAAAY\n3NqiE6pqO+YAAAAAYBMLA053b8ccAAAAAP8XTmezjEuoAAAAAAYn4AAAAAAMTsABAAAAGJyAAwAA\nADA4AQcAAABgcAIOAAAAwOAEHAAAAIDBCTgAAAAAgxNwAAAAAAYn4AAAAAAMTsABAAAAGJyAAwAA\nADA4AQcAAABgcAIOAAAAwOAEHAAAAIDBCTgAAAAAgxNwAAAAAAYn4AAAAAAMTsABAAAAGJyAAwAA\nADA4AQcAAABgcAIOAAAAwOAEHFbWgQMH5h4BeBKsVVgO1iosB2sVVpeAw8rywwuWg7UKy8FaheVg\nrcLqEnAAAAAABifgAAAAAAyuunvzb1Zt/k0AAAAATkt316mcv2XAAQAAAGB+LqECAAAAGJyAAwAA\nADA4AYeVU1XnVdX+qvpNVR2sqivnngnYXFWdVVW/rKpb5p4FOLmqOqeqbq6qe6efrzvnngk4UVVd\nNa3Ru6vqpqp6+twzAUlV3VBVh6rq7qOOPaeqbquq+6rq1qo6Z9H7CDisoseTfKG7X5PkjUk+W1Wv\nmnkmYHO7k9wz9xDAlvYk+UF3X5TkkiT3zjwPcJyqOj/Jp5K8rrsvTrKW5APzTgVM9iZ5x3HHvpTk\n9u5+ZZL9Sa5a9CYCDiunu//Y3b+aHj+ajV8yXzLvVMDJVNV5Sd6Z5Pq5ZwFOrqqeneTN3b03Sbr7\n8e5+ZOaxgBM9kuQfSZ5VVWtJzk7yh3lHApKku3+c5OHjDr8nyY3T4xuTvHfR+wg4rLSqelmS1ya5\nY95JgE18LckXk/hIRBjXBUn+VFV7p8sdr6uqZ849FHCs7n44yVeTPJjk90n+0t23zzsVsIVzu/tQ\nsrEJIcm5i14g4LCyqmpHkn1Jdk87cYCBVNW7khyadszV9AWMZy3JpUm+3t2XJnksG9u+gYFU1YVJ\nPp/k/CQvTrKjqj4471TAKVj4B00Bh5U0bRvdl+Rb3f39uecBTuqKJO+uqgeSfCfJW6vqmzPPBJzo\nd0ke6u6fT8/3ZSPoAGO5LMlPuvvP3X0kyXeTXD7zTMDmDlXVC5Kkql6Y5PCiFwg4rKpvJLmnu/fM\nPQhwct19dXe/tLsvzMZNFvd390fnngs41rS9+6GqesV06G1x43EY0X1J3lBVz6iqysZadcNxGMfx\nO85vSfLx6fHHkizceLB25meCeVXVFUk+lORgVd2Zja1oV3f3D+edDACW1pVJbqqqpyV5IMknZp4H\nOE533zXtZP1FkiNJ7kxy3bxTAUlSVd9OsivJ86rqwSRfSXJNkpur6pNJfpvk/Qvfp9t9IwEAAABG\n5hIqAAAAgMEJOAAAAACDE3AAAAAABifgAAAAAAxOwAEAAAAYnIADAAAAMLi1uQcAADiZqnpukh8l\n6SQvSnIkyeEkleRv3f2mGccDANhW1d1zzwAAsKWq+nKSR7v72rlnAQCYg0uoAIBlUMc8qfrr9O9b\nqupAVX2vqu6vqmuq6sNV9dOququqLpjOe35V7auqO6avy+f4TwAAnC4BBwBYRkdvIb44yaeTvDrJ\nR5K8vLtfn+SGJJ+bztmT5Nru3pnkfUmu38ZZAQD+Z+6BAwAsu5919+Ekqar7k9w6HT+YZNf0+O1J\nLqqqf+/k2VFVZ3f3Y9s6KQDAaRJwAIBl9/ejHj9x1PMn8t/fdSrJzu7+53YOBgBwpriECgBYRrX4\nlGPclmT3f15cdcmZHQcA4Kkl4AAAy2izj9Hc7PjuJJdNNzb+dZLPPDVjAQA8NXyMOAAAAMDg7MAB\nAAAAGJyAAwAAADA4AQcAAABgcAIOAAAAwOAEHAAAAIDBCTgAAAAAgxNwAAAAAAYn4AAAAAAM7l/m\nxUld8fURQQAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "timeline.extent()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The **coverage** of a timeline is the timeline with the minimum number of segments with exactly the same time span as the original timeline." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ ", , ])>" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "timeline.support()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "One can also retrieve **gaps** in a timeline." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ ", ])>" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "timeline.gaps()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ ", , , ])>" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "timeline.gaps(focus=Segment(0, 10.5))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Cropping" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Using the **crop** method, it is possible to select a subpart of timeline." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\nSUVORK5CYII=\n", "text/plain": [ "" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "selection = Segment(3,7)\n", "selection" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ ", , , , , ])>" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "timeline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In **intersection** mode, segments are cut in half if needed." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABHAAAABjCAYAAADze/f8AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAB5JJREFUeJzt3V+IpWUdB/DvT6YoW5L+YP8kU6KyQEskS4s2CoKC6iIi\n+l9QXUQuBUF60cylNxledCOaWFgXLlFeRIrJXtSF/dF0SxFESCvaJTLMhEr9dTGn2l13Zna22Xmf\n9/T5wDDnvO85h+/w8pw5853nfd7q7gAAAAAwrtOmDgAAAADA5hQ4AAAAAINT4AAAAAAMToEDAAAA\nMDgFDgAAAMDgFDgAAAAAg1vZbGdVucY4AAAAwA7r7trO4zctcBYvePJpYEJra2tZW1ubOgawBWMV\n5sFYhXkwVmEeqrbV3SRxChUAAADA8BQ4AAAAAINT4LC09u7dO3UE4AQYqzAPxirMg7EKy6s2W+Om\nqtoaOAAAAAA7p6q2vYixGTgAAAAAg1PgAAAAAAxOgQMAAAAwOAUOAAAAwOAUOAAAAACDU+AAAAAA\nDE6BAwAAADA4BQ4AAADA4BQ4AAAAAINT4AAAAAAMToEDzMra2trUEdhhjulyclxhHoxVgPmo7t54\nZ1Vvth9gt1VVvC8tF8d0OTmuMA/GKsA0Fu+/tZ3nmIEDAAAAMLiVqQMAbFfVtopqYCLGKgDAzlHg\nALNjqvdy8Uf+8jJWYXzegwHmwylUwKysrq5OHYEd5pguJ8cV5sFYBZgPixgDAAAA7CKLGAMAAAAs\nIQUOAAAAwOAUOAAAAACDU+AAAAAADE6BAwAAADA4BQ4AAADA4BQ4AAAAAINT4AAAAAAMToEDAAAA\nMDgFDgAAAMDgFDgAAAAAg1PgAACwpbW1takjcAo4rgDzUd298c6q3mw/AAD/H6oqPhcuH8cVYBqL\n99/aznPMwAEAAAAY3MrUAQAAmIeqbf2jEADYQQocAABOiFNtlo9SDmA+nEIFAAAAMDgFDgAAW1pd\nXZ06AqeA4wowH65CBQAAALCLXIUKAAAAYAkpcAAAAAAGp8ABAAAAGJwCBwAAAGBwChwAAACAwSlw\nAAAAAAanwAEAAAAYnAIHAAAAYHAKHAAAAIDBKXAAAAAABqfAYWkdOHBg6gjACTBWYR6MVZgHYxWW\nlwKHpeWXF8yDsQrzYKzCPBirsLwUOAAAAACDU+AAAAAADK66e+OdVRvvBAAAAOCkdHdt5/GbFjgA\nAAAATM8pVAAAAACDU+AAAAAADE6Bw9KpqrOq6vaq+k1VHayqy6bOBGysqk6rqjur6uapswDHV1Vn\nVNVNVXXf4vfrxVNnAp6uqi5fjNF7qurGqnrm1JmApKquq6pDVXXPEdueV1W3VtX9VXVLVZ2x1eso\ncFhGTyT5Une/Lsmbk3y+ql4zcSZgY/uS3Dt1CGBTVyf5YXefl+SCJPdNnAc4RlWdneQzSd7Q3ecn\nWUnyoWlTAQvXJ3nXMdu+kuS27n51ktuTXL7ViyhwWDrd/cfu/tXi9mNZ/5D5smlTAcdTVWcleXeS\na6fOAhxfVT03yVu7+/ok6e4nuvvRiWMBT/dokn8keU5VrSQ5Pckfpo0EJEl3/yTJI8dsfl+SGxa3\nb0jy/q1eR4HDUquqVyR5fZI7pk0CbODrSb6cxCURYVznJPlTVV2/ON3xmqp69tShgKN19yNJvpbk\noSS/T/KX7r5t2lTAJs7s7kPJ+iSEJGdu9QQFDkurqvYk2Z9k32ImDjCQqnpPkkOLGXO1+ALGs5Lk\nwiTf6O4Lkzye9WnfwECq6twkX0xydpKXJtlTVR+eNhWwDVv+Q1OBw1JaTBvdn+Tb3f2DqfMAx3Vp\nkvdW1YNJvpvk7VX1rYkzAU/3uyQPd/cvFvf3Z73QAcZyUZKfdvefu/vJJN9LcsnEmYCNHaqqFyVJ\nVb04yeGtnqDAYVl9M8m93X311EGA4+vuK7r75d19btYXWby9uz8+dS7gaIvp3Q9X1asWm94RC4/D\niO5P8qaqelZVVdbHqgXHYRzHzji/OcknF7c/kWTLiQcrO58JplVVlyb5SJKDVXVX1qeiXdHdP5o2\nGQDM1mVJbqyqZyR5MMmnJs4DHKO7717MZP1lkieT3JXkmmlTAUlSVd9JsjfJC6rqoSSrSa5MclNV\nfTrJb5N8cMvX6bZuJAAAAMDInEIFAAAAMDgFDgAAAMDgFDgAAAAAg1PgAAAAAAxOgQMAAAAwOAUO\nAAAAwOBWpg4AAHA8VfX8JD9O0klekuTJJIeTVJK/dfdbJowHALCrqrunzgAAsKmq+mqSx7r7qqmz\nAABMwSlUAMAc1FF3qv66+P62qjpQVd+vqgeq6sqq+mhV/ayq7q6qcxaPe2FV7a+qOxZfl0zxQwAA\nnCwFDgAwR0dOIT4/yWeTvDbJx5K8srvfmOS6JF9YPObqJFd198VJPpDk2l3MCgDwP7MGDgAwdz/v\n7sNJUlUPJLllsf1gkr2L2+9Mcl5V/Xsmz56qOr27H9/VpAAAJ0mBAwDM3d+PuP3UEfefyn8/61SS\ni7v7n7sZDABgpziFCgCYo9r6IUe5Ncm+/zy56oKdjQMAcGopcACAOdroMpobbd+X5KLFwsa/TvK5\nUxMLAODUcBlxAAAAgMGZgQMAAAAwOAUOAAAAwOAUOAAAAACDU+AAAAAADE6BAwAAADA4BQ4AAADA\n4BQ4AAAAAINT4AAAAAAM7l8sx5tFBc2AZwAAAABJRU5ErkJggg==\n", "text/plain": [ ", , ])>" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "timeline.crop(selection, mode='intersection')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In **strict** mode, only segments fully included in selection are kept." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\nRU5ErkJggg==\n", "text/plain": [ "])>" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "timeline.crop(selection, mode='strict')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In **loose** mode, any segment with a non-empty intersection is kept unchanged even though it starts before or end after the selection." ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ ", , ])>" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "timeline.crop(selection, mode='loose')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Union of timeline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The **update** (in place) and **union** (copy) methods can be used to combine two timelines." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABHEAAABjCAYAAAAcuZzCAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAH8klEQVR4nO3dXYildR0H8O9P16h8SWilFlcYiZIiSGWSyhB7xUgq6KYoL7qJoMzoIqqb3e66iF6uglgNI0tCkyKijJJeLsqdMWvzLUwMV41VInKLkvTXxZ7Y7cLdGZ2zz/zP+XxgmPPM/s/wXfjxcPjO8/yf6u4AAAAAsL2dMnUAAAAAAE5MiQMAAAAwACUOAAAAwACUOAAAAAADUOIAAAAADGDHZhbv3LmzV1ZW5hQFAAAAYPmsr68/3t3nnGjdpkqclZWVrK2tPftUAAAAAPyfqvrzRta5nQoAAABgAEocAAAAgAEocQAAAAAGoMQBAAAAGIASBwAAAGAAShwAAACAAShxAAAAAAagxAEAAAAYgBIHAAAAYABKHAAAAIABKHEAAAAABqDEAQAAABiAEgcAAABgAEocAAAAgAEocQAAAAAGoMQBAAAAGIASBwAAAGAAShwAAACAAShxAAAAAAagxAEAAAAYgBIHAAAAYABKHAAAAIABKHEAAAAABrCpEueRRx6ZVw7YNvbu3Tt1BJg7c84yMOcsA3POMjDncFR198YXV/Vm1sOIqirmnEVnzlkG5pxlYM5ZBuacZVBV6929eqJ1bqcCAAAAGMCOzb6hquaRA4CTzPkcYDE4nwMsj02XOC5jY9H5IMSycD5n0Tmfsyycz1l0zudw1KZup9q1a9e8csC2sWfPnqkjwNyZc5aBOWcZmHOWgTmHoza1sfHq6mqvra3NMQ4AAADAcrGxMQAAAMACUeIAAAAADECJAwAAADAAJQ4AAADAAJQ4AAAAAANQ4gAAAAAMQIkDAAAAMAAlDgAAAMAAlDgAAAAAA1DiAAAAAAxAiQMAAAAwACUOAAAAwACUOAAAAAADUOIAAAAADECJAwAAADAAJQ4AAADAAJQ4AAAAAANQ4gAAAAAMQIkDAAAAMAAlDgAAAMAAlDgAAAAAA1DiAAAAAAxAiQMAAAAwgOrujS+ueiLJffOLA9vCziSPTx0C5sycswzMOcvAnLMMzDnL4ILuPvNEi3Zs8pfe192rzzIQDKGq1sw5i86cswzMOcvAnLMMzDnLoKrWNrLO7VQAAAAAA1DiAAAAAAxgsyXO1+aSArYXc84yMOcsA3POMjDnLANzzjLY0JxvamNjAAAAAKbhdioAAACAAShxAAAAAAawoRKnqq6oqvuq6v6q+vS8Q8EUquq6qjpUVX+YOgvMQ1WdV1W3VdXdVXVXVV0zdSbYalX1/Kq6vap+N5vzz02dCealqk6tqt9W1Q+mzgLzUFUPVtWBqrpzo49fhtFU1dlVdVNV3VtV91TV64+7/kR74lTVqUn+mORtSQ4m2Z/k/d1991aFhu2gqi5LcjjJN7r71VPnga1WVbuS7OruO6rqzCTrSd7jfM4iqapKcnp3H66q05L8Ksk13f3riaPBlquqTyZZTXJWd185dR7YalX1YJLV7n586iwwL1V1fZJfdve+qnpekhd299+eaf1GrsS5JMn93f1Adz+Z5MYk796auLB9dPcvkvx16hwwL939aHffMXv9RJJ7kpw7bSrYWn3E4dnhabMvT3Fg4VTV7iTvTLJv6iwAPDtV9aIklyW5Nkm6+8njFTjJxkqcc5M8dMzxwfjQDzC0qlpJclGS30ybBLbe7BaTO5McSvKT7jbnLKIvJ/lUkqenDgJz1Elurar1qvrw1GFgDs5P8liSr89uj91XVacf7w02NgZYMlV1RpKbk3yiu/8+dR7Yat39VHdfmGR3kkuqyi2yLJSqujLJoe5enzoLzNkbu/viJO9I8tHZ9gewSHYkuTjJV7v7oiT/SHLcfYg3UuI8nOS8Y453z34GwGBme4TcnOSG7v7u1HlgnmaXI9+W5Iqps8AWuzTJu2b7hdyY5M1V9c1pI8HW6+6HZ98PJbklR7b6gEVyMMnBY64avilHSp1ntJESZ3+Sl1fV+bNNdt6X5PvPKSYAJ91sw9drk9zT3V+cOg/MQ1WdU1Vnz16/IEcezHDvtKlga3X3Z7p7d3ev5Mhn85919wcnjgVbqqpOnz2IIbPbS96exFNkWSjd/ZckD1XVBbMfvSXJcR86smMDv/Q/VfWxJD9OcmqS67r7rucaFrabqvp2ksuT7Kyqg0n2dPe106aCLXVpkquSHJjtF5Ikn+3uH06YCbbariTXz56ueUqS73S3xy8DjOclSW458jeo7Ejyre7+0bSRYC6uTnLD7KKZB5J86HiLT/iIcQAAAACmZ2NjAAAAgAEocQAAAAAGoMQBAAAAGIASBwAAAGAAShwAAACAAZzwEeMAAFOrqhcn+ens8KVJnkry2Oz4n939hkmCAQCcRB4xDgAMpar2Jjnc3V+YOgsAwMnkdioAYGhVdXj2/fKq+nlVfa+qHqiqz1fVB6rq9qo6UFUvm607p6purqr9s69Lp/0fAABsjBIHAFgkr0nykSSvTHJVkld09yVJ9iW5erbmK0m+1N2vTfLe2b8BAGx79sQBABbJ/u5+NEmq6k9Jbp39/ECSN81evzXJq6rqf+85q6rO6O7DJzUpAMAmKXEAgEXy72NeP33M8dM5+rnnlCSv6+5/ncxgAADPldupAIBlc2uO3lqVqrpwwiwAABumxAEAls3Hk6xW1e+r6u4c2UMHAGDb84hxAAAAgAG4EgcAAABgAEocAAAAgAEocQAAAAAGoMQBAAAAGIASBwAAAGAAShwAAACAAShxAAAAAAbwX9zRvEPjJxnSAAAAAElFTkSuQmCC\n", "text/plain": [ ", , ])>" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "notebook.crop = Segment(0, 6)\n", "first_timeline = Timeline([Segment(0, 1), Segment(2, 3), Segment(4, 5)])\n", "first_timeline" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "])>" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "second_timeline = Timeline([Segment(1.5, 4.5)])\n", "second_timeline" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ ", , , ])>" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "new_timeline = first_timeline.union(second_timeline)\n", "new_timeline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Intersection of timelines" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABHEAAABjCAYAAAAcuZzCAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAHz0lEQVR4nO3dXailVR0G8OevY1R+JDRS4ghHoqQIUjlJZYh9YiQVdFOUF91EUGZ0EdXNTHddRB9XQYyGkSWhSRFRRkkfF6VnzJr8ChPDEWOUiJyiJP13MW84XThzRvc+76yzfz84nP3uWefwzGax2fPMu9aq7g4AAAAAJ7aT5g4AAAAAwLEpcQAAAAAGoMQBAAAAGIASBwAAAGAAShwAAACAAew4nsE7d+7stbW1JUUBAAAAWD379u17rLvPOta44ypx1tbWsrGx8exTAQAAAPB/qurPmxlnORUAAADAAJQ4AAAAAANQ4gAAAAAMQIkDAAAAMAAlDgAAAMAAlDgAAAAAA1DiAAAAAAxAiQMAAAAwACUOAAAAwACUOAAAAAADUOIAAAAADECJAwAAADAAJQ4AAADAAJQ4AAAAAANQ4gAAAAAMQIkDAAAAMAAlDgAAAMAAlDgAAAAAA1DiAAAAAAxAiQMAAAAwACUOAAAAwACUOAAAAAADUOIAAAAADECJA7CC9uzZM3cEWDrznFVgnm89rzkwp+ruTQ9eX1/vjY2NJcYBYCtUVY7n/R9GZJ6zCszzrec1B5ahqvZ19/qxxrkTBwAAAGAAO+YOAMA8qmruCAAsgPdzgNWhxAFYUW4FZ7vzD1tWhffzreW9BZiT5VQAK2j37t1zR4ClM89ZBeb51vOaA3OysTEAAADAjGxsDAAAALCNKHEAAAAABqDEAQAAABiAEgcAAABgAEocAAAAgAEocQAAAAAGoMQBAAAAGIASBwAAAGAAShwAAACAAShxAAAAAAagxAEAAAAYgBIHAAAAYABKHAAAAIABKHEAAAAABqDEAQAAABiAEgcAAABgAEocAAAAgAEocQAAAAAGoMQBAAAAGIASBwAAAGAAShwAAACAAShxAAAAAAagxAEAAAAYQHX35gdXPZ7kvuXFgRPCziSPzR0Clsw8ZxWY56wC85xVYJ6zCs7v7tOPNWjHcf7S+7p7/VkGgiFU1YZ5znZnnrMKzHNWgXnOKjDPWQVVtbGZcZZTAQAAAAxAiQMAAAAwgOMtcb62lBRwYjHPWQXmOavAPGcVmOesAvOcVbCpeX5cGxsDAAAAMA/LqQAAAAAGoMQBAAAAGMCmSpyquryq7quq+6vq08sOBXOoqmur6mBV/WHuLLAMVXVuVd1aVXdX1V1VdfXcmWDRqur5VXVbVf1umuefmzsTLEtVnVxVv62qH8ydBZahqh6sqv1Vdedmj1+G0VTVmVV1Y1XdW1X3VNXrjzr+WHviVNXJSf6Y5G1JDiS5Pcn7u/vuRYWGE0FVXZrkUJJvdPer584Di1ZVZyc5u7vvqKrTk+xL8h7v52wnVVVJTu3uQ1V1SpJfJbm6u389czRYuKr6ZJL1JGd09xVz54FFq6oHk6x392NzZ4Flqarrkvyyu/dW1fOSvLC7//ZM4zdzJ87FSe7v7ge6+4kkNyR592Liwomju3+R5K9z54Bl6e5HuvuO6fHjSe5Jcs68qWCx+rBD0+Up05dTHNh2qmpXkncm2Tt3FgCenap6UZJLk1yTJN39xNEKnGRzJc45SR464vpAfOgHGFpVrSW5MMlv5k0CizctMbkzycEkP+lu85zt6MtJPpXkqbmDwBJ1kluqal9VfXjuMLAE5yV5NMnXp+Wxe6vq1KP9gI2NAVZMVZ2W5KYkn+juv8+dBxatu5/s7guS7EpycVVZIsu2UlVXJDnY3fvmzgJL9sbuvijJO5J8dNr+ALaTHUkuSvLV7r4wyT+SHHUf4s2UOA8nOfeI613TcwAMZtoj5KYk13f3d+fOA8s03Y58a5LL584CC3ZJkndN+4XckOTNVfXNeSPB4nX3w9P3g0luzuGtPmA7OZDkwBF3Dd+Yw6XOM9pMiXN7kpdX1XnTJjvvS/L95xQTgC03bfh6TZJ7uvuLc+eBZaiqs6rqzOnxC3L4YIZ7500Fi9Xdn+nuXd29lsOfzX/W3R+cORYsVFWdOh3EkGl5yduTOEWWbaW7/5Lkoao6f3rqLUmOeujIjk380v9U1ceS/DjJyUmu7e67nmtYONFU1beTXJZkZ1UdSLK7u6+ZNxUs1CVJrkyyf9ovJEk+290/nDETLNrZSa6bTtc8Kcl3utvxywDjeUmSmw//H1R2JPlWd/9o3kiwFFcluX66aeaBJB862uBjHjEOAAAAwPxsbAwAAAAwACUOAAAAwACUOAAAAAADUOIAAAAADECJAwAAADCAYx4xDgAwt6p6cZKfTpcvTfJkkken63929xtmCQYAsIUcMQ4ADKWq9iQ51N1fmDsLAMBWspwKABhaVR2avl9WVT+vqu9V1QNV9fmq+kBV3VZV+6vqZdO4s6rqpqq6ffq6ZN6/AQDA5ihxAIDt5DVJPpLklUmuTPKK7r44yd4kV01jvpLkS9392iTvnf4MAOCEZ08cAGA7ub27H0mSqvpTklum5/cnedP0+K1JXlVV//uZM6rqtO4+tKVJAQCOkxIHANhO/n3E46eOuH4qT3/uOSnJ67r7X1sZDADgubKcCgBYNbfk6aVVqaoLZswCALBpShwAYNV8PMl6Vf2+qu7O4T10AABOeI4YBwAAABiAO3EAAAAABqDEAQAAABiAEgcAAABgAEocAAAAgAEocQAAAAAGoMQBAAAAGIASBwAAAGAA/wW2s7BGzoCsQQAAAABJRU5ErkJggg==\n", "text/plain": [ ", ])>" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "second_timeline.crop(first_timeline)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**co_iter** method allow to iterator over pairs of intersecting segments." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[ 00:00:02.000 --> 00:00:03.000] [ 00:00:01.500 --> 00:00:04.500]\n", "[ 00:00:04.000 --> 00:00:05.000] [ 00:00:01.500 --> 00:00:04.500]\n" ] } ], "source": [ "for s_first, s_second in first_timeline.co_iter(second_timeline):\n", " print(s_first, s_second)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Need help?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can always try the following... \n", "Who knows? It might give you the information you are looking for!" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Help on class Timeline in module pyannote.core.timeline:\n", "\n", "class Timeline(__builtin__.object)\n", " | Ordered set of segments.\n", " | \n", " | A timeline can be seen as an ordered set of non-empty segments (Segment).\n", " | Segments can overlap -- though adding an already exisiting segment to a\n", " | timeline does nothing.\n", " | \n", " | Parameters\n", " | ----------\n", " | segments : Segment iterator, optional\n", " | initial set of segments\n", " | uri : string, optional\n", " | name of segmented resource\n", " | \n", " | Returns\n", " | -------\n", " | timeline : Timeline\n", " | New timeline\n", " | \n", " | Examples\n", " | --------\n", " | Create a new empty timeline\n", " | \n", " | >>> timeline = Timeline()\n", " | >>> if not timeline:\n", " | ... print \"Timeline is empty.\"\n", " | Timeline is empty.\n", " | \n", " | Add one segment (+=)\n", " | \n", " | >>> segment = Segment(0, 1)\n", " | >>> timeline.add(segment)\n", " | >>> if len(timeline) == 1:\n", " | ... print \"Timeline contains only one segment.\"\n", " | Timeline contains only one segment.\n", " | \n", " | Add all segments from another timeline\n", " | \n", " | >>> other_timeline = Timeline([Segment(0.5, 3), Segment(6, 8)])\n", " | >>> timeline.update(other_timeline)\n", " | \n", " | Get timeline extent, coverage & duration\n", " | \n", " | >>> extent = timeline.extent()\n", " | >>> print extent\n", " | [0 --> 8]\n", " | >>> coverage = timeline.support()\n", " | >>> print coverage\n", " | [\n", " | [0 --> 3]\n", " | [6 --> 8]\n", " | ]\n", " | >>> duration = timeline.duration()\n", " | >>> print \"Timeline covers a total of %g seconds.\" % duration\n", " | Timeline covers a total of 5 seconds.\n", " | \n", " | Iterate over (sorted) timeline segments\n", " | \n", " | >>> for segment in timeline:\n", " | ... print segment\n", " | [0 --> 1]\n", " | [0.5 --> 3]\n", " | [6 --> 8]\n", " | \n", " | Segmentation\n", " | \n", " | >>> segmentation = timeline.segmentation()\n", " | >>> print segmentation\n", " | [\n", " | [0 --> 0.5]\n", " | [0.5 --> 1]\n", " | [1 --> 3]\n", " | [6 --> 8]\n", " | ]\n", " | \n", " | Gaps\n", " | \n", " | >>> timeline = timeline.copy()\n", " | >>> print timeline\n", " | [\n", " | [0 --> 1]\n", " | [0.5 --> 3]\n", " | [6 --> 8]\n", " | ]\n", " | >>> print timeline.gaps()\n", " | [\n", " | [3 --> 6]\n", " | ]\n", " | >>> segment = Segment(0, 10)\n", " | >>> print timeline.gaps(segment)\n", " | [\n", " | [3 --> 6]\n", " | [8 --> 10]\n", " | ]\n", " | \n", " | Methods defined here:\n", " | \n", " | __bool__(self)\n", " | \n", " | __contains__(self, included)\n", " | Inclusion\n", " | \n", " | Use expression 'segment in timeline' or 'other_timeline in timeline'\n", " | \n", " | Parameters\n", " | ----------\n", " | included : `Segment` or `Timeline`\n", " | \n", " | Returns\n", " | -------\n", " | contains : bool\n", " | True if every segment in `included` exists in timeline,\n", " | False otherwise\n", " | \n", " | __eq__(self, other)\n", " | \n", " | __getitem__(self, k)\n", " | Returns kth segment\n", " | \n", " | __init__(self, segments=None, uri=None)\n", " | \n", " | __iter__(self)\n", " | \n", " | __len__(self)\n", " | \n", " | __ne__(self, other)\n", " | \n", " | __nonzero__(self)\n", " | \n", " | __repr__(self)\n", " | \n", " | __str__(self)\n", " | Human-friendly representation\n", " | \n", " | add(self, segment)\n", " | Add segment\n", " | \n", " | co_iter(self, other)\n", " | \n", " | copy(self, segment_func=None)\n", " | Duplicate timeline.\n", " | \n", " | If segment_func is provided, apply it to each segment first.\n", " | \n", " | Parameters\n", " | ----------\n", " | segment_func : function\n", " | \n", " | Returns\n", " | -------\n", " | timeline : Timeline\n", " | A (possibly modified) copy of the timeline\n", " | \n", " | Examples\n", " | --------\n", " | \n", " | >>> timeline = Timeline(uri=\"MyVideo.avi\")\n", " | >>> timeline += [Segment(0, 1), Segment(2, 3)]\n", " | >>> cp = timeline.copy()\n", " | >>> print cp.uri\n", " | MyVideo.avi\n", " | >>> print cp\n", " | [\n", " | [0 --> 1]\n", " | [2 --> 3]\n", " | ]\n", " | \n", " | coverage(self)\n", " | Timeline coverage\n", " | \n", " | The coverage of timeline is the timeline with the minimum number of\n", " | segments with exactly the same time span as the original timeline.\n", " | It is (by definition) unique and does not contain any overlapping\n", " | segments.\n", " | \n", " | Returns\n", " | -------\n", " | coverage : Timeline\n", " | Timeline coverage\n", " | \n", " | crop(self, other, mode='intersection', mapping=False)\n", " | \n", " | duration(self)\n", " | Timeline duration\n", " | \n", " | Returns\n", " | -------\n", " | duration : float\n", " | Duration of timeline coverage, in seconds.\n", " | \n", " | empty(self)\n", " | Empty copy of a timeline.\n", " | \n", " | Examples\n", " | --------\n", " | \n", " | >>> timeline = Timeline(uri=\"MyVideo.avi\")\n", " | >>> timeline += [Segment(0, 1), Segment(2, 3)]\n", " | >>> empty = timeline.empty()\n", " | >>> print empty.uri\n", " | MyVideo.avi\n", " | >>> print empty\n", " | [\n", " | ]\n", " | \n", " | extent(self)\n", " | Timeline extent\n", " | \n", " | The extent of a timeline is the segment of minimum duration that\n", " | contains every segments of the timeline. It is unique, by definition.\n", " | The extent of an empty timeline is an empty segment.\n", " | \n", " | Returns\n", " | -------\n", " | extent : Segment\n", " | Timeline extent\n", " | \n", " | Examples\n", " | --------\n", " | \n", " | >>> timeline = Timeline(uri=\"MyVideo.avi\")\n", " | >>> timeline += [Segment(0, 1), Segment(9, 10)]\n", " | >>> print timeline.extent()\n", " | [0 --> 10]\n", " | \n", " | for_json(self)\n", " | \n", " | gaps(self, focus=None)\n", " | Timeline gaps\n", " | \n", " | Parameters\n", " | ----------\n", " | focus : None, Segment or Timeline\n", " | \n", " | Returns\n", " | -------\n", " | gaps : Timeline\n", " | Timeline made of all gaps from original timeline, and delimited\n", " | by provided segment or timeline.\n", " | \n", " | Raises\n", " | ------\n", " | TypeError when `focus` is neither None, Segment nor Timeline\n", " | \n", " | Examples\n", " | --------\n", " | \n", " | index(self, segment)\n", " | Index of segment\n", " | \n", " | Parameter\n", " | ---------\n", " | segment : Segment\n", " | \n", " | Raises\n", " | ------\n", " | ValueError if the segment is not present\n", " | \n", " | overlapping(self, timestamp)\n", " | Get list of segments overlapping `timestamp`\n", " | \n", " | segmentation(self)\n", " | Non-overlapping timeline\n", " | \n", " | Create the unique timeline with same coverage and same set of segment\n", " | boundaries as original timeline, but with no overlapping segments.\n", " | \n", " | A picture is worth a thousand words:\n", " | \n", " | Original timeline:\n", " | |------| |------| |----|\n", " | |--| |-----| |----------|\n", " | \n", " | Non-overlapping timeline\n", " | |-|--|-| |-|---|--| |--|----|--|\n", " | \n", " | Returns\n", " | -------\n", " | timeline : Timeline\n", " | \n", " | Examples\n", " | --------\n", " | \n", " | >>> timeline = Timeline()\n", " | >>> timeline += [Segment(0, 1), Segment(1, 2), Segment(2,3)]\n", " | >>> timeline += [Segment(2, 4), Segment(6, 7)]\n", " | >>> print timeline.segmentation()\n", " | [\n", " | [0 --> 1]\n", " | [1 --> 2]\n", " | [2 --> 3]\n", " | [3 --> 4]\n", " | [6 --> 7]\n", " | ]\n", " | \n", " | union(self, other)\n", " | Create new timeline made of union of segments\n", " | \n", " | update(self, timeline)\n", " | Add `timeline` segments\n", " | \n", " | ----------------------------------------------------------------------\n", " | Class methods defined here:\n", " | \n", " | from_df(cls, df, uri=None) from __builtin__.type\n", " | \n", " | from_json(cls, data) from __builtin__.type\n", " | \n", " | ----------------------------------------------------------------------\n", " | Data descriptors defined here:\n", " | \n", " | __dict__\n", " | dictionary for instance variables (if defined)\n", " | \n", " | __weakref__\n", " | list of weak references to the object (if defined)\n", "\n" ] } ], "source": [ "help(Timeline)" ] } ], "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.7.4" } }, "nbformat": 4, "nbformat_minor": 4 }