{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Examples for pytimber" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Accessing the CERN logging database and extracting machine parameters." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Using matplotlib backend: agg\n", "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "source": [ "%pylab\n", "import pytimber\n", "import datetime\n", "log = pytimber.LoggingDB()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Search for parameters\n", "Use the wildcard `%`" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "['LHC.BCTDC.A6R4.B1:BEAM_INTENSITY',\n", " 'LHC.BCTDC.A6R4.B1:BEAM_INTENSITY_ADC24BIT',\n", " 'LHC.BCTDC.A6R4.B2:BEAM_INTENSITY',\n", " 'LHC.BCTDC.A6R4.B2:BEAM_INTENSITY_ADC24BIT',\n", " 'LHC.BCTDC.B6R4.B1:BEAM_INTENSITY',\n", " 'LHC.BCTDC.B6R4.B1:BEAM_INTENSITY_ADC24BIT',\n", " 'LHC.BCTDC.B6R4.B2:BEAM_INTENSITY',\n", " 'LHC.BCTDC.B6R4.B2:BEAM_INTENSITY_ADC24BIT']" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "log.search(\"LHC.BCTDC.%:BEAM_INTENSITY%\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Explore the parameter tree" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Use the ipython autocomplete (`TAB`) to explorer the parameter tree interactively." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "['LHC.BQM.B1:ADC_AQUISITION_MAX',\n", " 'LHC.BQM.B1:ADC_AQUISITION_MIN',\n", " 'LHC.BQM.B1:ADC_WAVEFORM',\n", " 'LHC.BQM.B1:ATTENUATION',\n", " 'LHC.BQM.B1:BUNCH_INTENSITIES',\n", " 'LHC.BQM.B1:BUNCH_INTENSITY_MAX',\n", " 'LHC.BQM.B1:BUNCH_INTENSITY_MEAN',\n", " 'LHC.BQM.B1:BUNCH_INTENSITY_MIN',\n", " 'LHC.BQM.B1:BUNCH_INTENSITY_STDDEV',\n", " 'LHC.BQM.B1:BUNCH_LENGTHS',\n", " 'LHC.BQM.B1:BUNCH_LENGTH_MAX',\n", " 'LHC.BQM.B1:BUNCH_LENGTH_MEAN',\n", " 'LHC.BQM.B1:BUNCH_LENGTH_MIN',\n", " 'LHC.BQM.B1:BUNCH_LENGTH_STDDEV',\n", " 'LHC.BQM.B1:BUNCH_MEANS',\n", " 'LHC.BQM.B1:BUNCH_PEAKS',\n", " 'LHC.BQM.B1:BUNCH_PEAK_MAX',\n", " 'LHC.BQM.B1:BUNCH_PEAK_MEAN',\n", " 'LHC.BQM.B1:BUNCH_PEAK_MIN',\n", " 'LHC.BQM.B1:BUNCH_PEAK_STDDEV',\n", " 'LHC.BQM.B1:FILLED_BUCKETS',\n", " 'LHC.BQM.B1:NO_BUNCHES']" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "log.tree.LHC.Beam_Quality.Beam_1.get_vars()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Get\n", "get() is the main function to query data from the database. The options are:\n", "\n", " + a list of variables names or a pattern for variable name matching;\n", " + the start of the time window;\n", " + the end of the time window (optional). If t2 is `None`, the last available data point before t1 is returned\n", " (search-range is one year);\n", " + a pattern for fundamental data matching (optional)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Get the latest datapoint\n", "If only one timestamp is given as a parameter, the closest datapoint to it is returned" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "List of variables to be queried:\n", "LHC.BCTDC.A6R4.B1:BEAM_INTENSITY\n", "Retrieved 1 values for LHC.BCTDC.A6R4.B1:BEAM_INTENSITY\n" ] }, { "data": { "text/plain": [ "(datetime.datetime(2015, 12, 3, 15, 50, 39), 3212811170000.0)" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ts = datetime.datetime.now()\n", "log.get(\"LHC.BCTDC.A6R4.B1:BEAM_INTENSITY\", ts)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Timestamps can be specified as python `datetime` object or as string:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "List of variables to be queried:\n", "LHC.BCTDC.A6R4.B1:BEAM_INTENSITY\n", "Retrieved 1 values for LHC.BCTDC.A6R4.B1:BEAM_INTENSITY\n" ] }, { "data": { "text/plain": [ "(datetime.datetime(2015, 10, 12, 18, 12, 32), 8196013600.0)" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tsStr = \"2015-10-12 18:12:32.453255123\"\n", "log.get(\"LHC.BCTDC.A6R4.B1:BEAM_INTENSITY\", tsStr)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Get datapoints in a time range\n", "\n", "Use datetime.timedelta to define time-offsets.\n", "\n", "Here we get data from ten minutes in the past over a window of 10 seconds" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "List of variables to be queried:\n", "F16.BCT.203:TOTAL_INTENSITY\n", "Retrieved 8 values for F16.BCT.203:TOTAL_INTENSITY\n" ] }, { "data": { "text/plain": [ "([datetime.datetime(2015, 12, 3, 15, 39, 58, 299999),\n", " datetime.datetime(2015, 12, 3, 15, 39, 59, 500000),\n", " datetime.datetime(2015, 12, 3, 15, 40, 0, 700000),\n", " datetime.datetime(2015, 12, 3, 15, 40, 1, 900000),\n", " datetime.datetime(2015, 12, 3, 15, 40, 4, 299999),\n", " datetime.datetime(2015, 12, 3, 15, 40, 5, 500000),\n", " datetime.datetime(2015, 12, 3, 15, 40, 6, 700000),\n", " datetime.datetime(2015, 12, 3, 15, 40, 7, 900000)],\n", " [0.8495, 0.9815, 1.2483, 5.1966, 0.1751, 2.3153, 0.2713, 1.6268])" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ts1 = datetime.datetime.now() + datetime.timedelta(minutes=-10, seconds=-60)\n", "ts2 = datetime.datetime.now() + datetime.timedelta(minutes=-10, seconds=-50)\n", "log.get(\"F16.BCT.203:TOTAL_INTENSITY\", ts1, ts2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Filter by fundamental data\n", "\n", "A pattern can be provided as last argument of get. It is used to find fundamental data (cycle names in most cases) in the given time window. Only data point having a timestamp where one of the fundamentals is present are returned." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "List of variables to be queried:\n", "F16.BCT.203:TOTAL_INTENSITY\n", "F16.BCT.212:TOTAL_INTENSITY\n", "Querying fundamentals (pattern: CPS:LHC%):\n", "CPS:LHC_ION_NOMINAL_PB54:ION3\n", "Retrieved 6 values for F16.BCT.203:TOTAL_INTENSITY\n", "Retrieved 6 values for F16.BCT.212:TOTAL_INTENSITY\n" ] }, { "data": { "text/plain": [ "{'F16.BCT.203:TOTAL_INTENSITY': ([datetime.datetime(2015, 12, 3, 10, 30, 4, 299999),\n", " datetime.datetime(2015, 12, 3, 10, 30, 25, 900000),\n", " datetime.datetime(2015, 12, 3, 10, 30, 47, 500000),\n", " datetime.datetime(2015, 12, 3, 10, 31, 9, 99999),\n", " datetime.datetime(2015, 12, 3, 10, 31, 30, 700000),\n", " datetime.datetime(2015, 12, 3, 10, 31, 52, 299999)],\n", " [4.5622, 4.2348, 4.4315, 3.7718, 4.7268, 4.4153]),\n", " 'F16.BCT.212:TOTAL_INTENSITY': ([datetime.datetime(2015, 12, 3, 10, 30, 4, 299999),\n", " datetime.datetime(2015, 12, 3, 10, 30, 25, 900000),\n", " datetime.datetime(2015, 12, 3, 10, 30, 47, 500000),\n", " datetime.datetime(2015, 12, 3, 10, 31, 9, 99999),\n", " datetime.datetime(2015, 12, 3, 10, 31, 30, 700000),\n", " datetime.datetime(2015, 12, 3, 10, 31, 52, 299999)],\n", " [6.0375, 5.9465, 5.8345, 5.201, 6.7865, 5.7365])}" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ts1 = datetime.datetime(2015, 12, 3, 10, 30, 0)\n", "ts2 = '2015-12-03 10:32:00'\n", "log.get('F16.BCT.2%:TOTAL_INTENSITY', ts1 ,ts2, 'CPS:LHC%')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "An explicit list of variables can also be provided:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "{'F16.BCT.126:TOTAL_INTENSITY': ([datetime.datetime(2015, 12, 3, 10, 30, 4, 299999),\n", " datetime.datetime(2015, 12, 3, 10, 30, 25, 900000),\n", " datetime.datetime(2015, 12, 3, 10, 30, 47, 500000),\n", " datetime.datetime(2015, 12, 3, 10, 31, 9, 99999),\n", " datetime.datetime(2015, 12, 3, 10, 31, 30, 700000),\n", " datetime.datetime(2015, 12, 3, 10, 31, 52, 299999)],\n", " [4.676271, 3.9286778, 4.2757745, 3.169642, 4.4016447, 4.5504003]),\n", " 'F16.BCT.203:TOTAL_INTENSITY': ([datetime.datetime(2015, 12, 3, 10, 30, 4, 299999),\n", " datetime.datetime(2015, 12, 3, 10, 30, 25, 900000),\n", " datetime.datetime(2015, 12, 3, 10, 30, 47, 500000),\n", " datetime.datetime(2015, 12, 3, 10, 31, 9, 99999),\n", " datetime.datetime(2015, 12, 3, 10, 31, 30, 700000),\n", " datetime.datetime(2015, 12, 3, 10, 31, 52, 299999)],\n", " [4.5622, 4.2348, 4.4315, 3.7718, 4.7268, 4.4153])}" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "log.get(['F16.BCT.126:TOTAL_INTENSITY', 'F16.BCT.203:TOTAL_INTENSITY'], ts1, ts2, 'CPS:LHC%')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It is also possible to query the fundamentals directly:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "['CPS:MTE_0:SFTPRO1',\n", " 'CPS:MTE_1600:SFTPRO2',\n", " 'CPS:MTE_2000:MD1',\n", " 'CPS:MTE_2000:SFTPRO2',\n", " 'CPS:MTE_2500:MD1',\n", " 'CPS:MTE_2500:MD4',\n", " 'CPS:MTE_2500:SFTPRO2',\n", " 'CPS:MTE_OP:MD1']" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ts1 = datetime.datetime(2015, 10, 1, 0, 0, 0)\n", "ts2 = '2015-11-01 00:00:00'\n", "# Uses list comprehension to return a Python list\n", "[f for f in log.getFundamentals(log.toTimestamp(ts1), log.toTimestamp(ts2), 'CPS:MTE%')]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Get 'aligned' datasets\n", "\n", "When working with more than one variable it is possible to set one variable as the *master* variable and acquire the other variables only for timestamps that are present for the 'master'.\n", "\n", "This works with and without filtering by fundamentals.\n", "\n", "By default the first variable (from an explicit list or from pattern matching) is used as the *master*.\n", "\n", "**Note:** The output is different from the one obtained with a simple get(). The dictionnary that is returned contains only one list of timestamps ('timestamps' entry). The dictionnary contains one entry per variable with a list of values." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "List of variables to be queried:\n", "F16.BCT.126:TOTAL_INTENSITY (using as master).\n", "F16.BCT.203:TOTAL_INTENSITY\n", "F16.BCT.212:TOTAL_INTENSITY\n", "F16.BCT.372:TOTAL_INTENSITY\n", "Querying fundamentals (pattern: CPS:LHC%):\n", "CPS:LHC_ION_NOMINAL_PB54:ION3\n", "Retrieved 8 values for F16.BCT.126:TOTAL_INTENSITY (master)\n", "Retrieved 8 values for F16.BCT.203:TOTAL_INTENSITY\n", "Retrieved 8 values for F16.BCT.212:TOTAL_INTENSITY\n", "Retrieved 8 values for F16.BCT.372:TOTAL_INTENSITY\n" ] }, { "data": { "text/plain": [ "{'F16.BCT.126:TOTAL_INTENSITY': [4.5237007,\n", " 4.5999856,\n", " 4.188047,\n", " 4.268146,\n", " 4.5046296,\n", " 4.2147465,\n", " 4.4550443,\n", " 4.5046296],\n", " 'F16.BCT.203:TOTAL_INTENSITY': [4.8991,\n", " 4.8552,\n", " 4.8256,\n", " 4.8235,\n", " 4.7284,\n", " 4.8768,\n", " 4.7939,\n", " 4.8701],\n", " 'F16.BCT.212:TOTAL_INTENSITY': [6.86,\n", " 6.517,\n", " 6.3805,\n", " 6.9755,\n", " 6.594,\n", " 6.7445,\n", " 6.272,\n", " 6.272],\n", " 'F16.BCT.372:TOTAL_INTENSITY': [7.2526,\n", " 7.225,\n", " 6.9502,\n", " 7.0758,\n", " 6.8919,\n", " 7.1064,\n", " 7.2472,\n", " 7.3118],\n", " 'timestamps': [datetime.datetime(2015, 12, 3, 14, 0, 18, 700000),\n", " datetime.datetime(2015, 12, 3, 14, 0, 40, 299999),\n", " datetime.datetime(2015, 12, 3, 14, 1, 1, 900000),\n", " datetime.datetime(2015, 12, 3, 14, 1, 23, 500000),\n", " datetime.datetime(2015, 12, 3, 14, 1, 45, 99999),\n", " datetime.datetime(2015, 12, 3, 14, 2, 6, 700000),\n", " datetime.datetime(2015, 12, 3, 14, 2, 28, 299999),\n", " datetime.datetime(2015, 12, 3, 14, 2, 49, 900000)]}" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "log.getAligned('F16.BCT.%:TOTAL_INTENSITY', '2015-12-03 14:00:00', '2015-12-03 14:03:00', 'CPS:LHC%')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Use cases\n", "\n", "### Plot timestamped data" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false, "scrolled": false }, "outputs": [ { "data": { "image/png": "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\ntEjbt29Xv379FBkZqZSUFOXk5MjhcKhnz54KDw+Xy+WS3W5X8+bNtXXrVu3atUv9+vVTXFyc1U+r\nUaA3ZqM/5qI3ZqM/ZmsI/SGcNnJ79uzRSy+9pOHDh2vMmDFKTk7WBRdcoOTkZM2bN0+VlZXq0qWL\nkpOTdeTIES1atEhdu3ZV69atZbfbVVFRoSZNmqiwsFCrV6/WqFGjeJEIEHpjNvpjLnpjNvpjtobQ\nH445beQKCgpUVlamjIwMSVJVVZXCw8OVmZmpMWPGKCcnRxs2bJAkXXfddUpMTNTrr7+uHTt2SJLC\nw8MlSXa7XWVlZaqsrLTmiTRC9MZs9Mdc9MZs9MdsDaE/hNNGLikpSWFhYb6dyntcSHh4uG644QY1\nb95c8+fPV15enpKTk3X33Xdr27Zteumll5Sbm6uqqirt3btXH3/8sXr37q327dtb+GwaF3pjNvpj\nLnpjNvpjtobQH6b1G7mysjJt2bJFu3bt0tChQ33HjNhsNkVERCgyMlLvvfeeevXqpTZt2qh169aK\njo7W2rVrlZ2drXXr1mnp0qXau3evbr75Zl4kAojemI3+mIvemI3+mK0h9Idw2sjFxsZq37592rRp\nk5o1a6bOnTtX+zzcxMRErV69WiUlJRo0aJAkqWvXrho8eLBsNpuaNGmili1b6o9//KO6d+9u5VNp\ndOiN2eiPueiN2eiP2RpCf/j40gbop59+Unl5uaKiopSSklLttsrKSn3yySeKiorSwIEDJUlXXXWV\nPv74Yy1evFj9+vVTixYtfB85Fh0dra5du+qLL75QSUmJoqOjZbPZlJKSottvv52PjjtD9MZs9Mdc\n9MZs9Mdsja0/hNMG5MiRI/rrX/+qL7/8UiUlJSotLdWECRN0xRVX+M6Uy8vL01/+8hdVVVVp8eLF\nCgsLU2pqqkaNGqU33nhDb775pu68807fNmNiYhQZGamIiAjfhXTt9p8PReYFom7ojdnoj7nojdno\nj9kaa38Ipw3EwoUL9fLLLysuLk4jR45URESENm3apFmzZqlVq1a+d0OtW7fWmDFj5HK55HA4VFVV\npbCwMF1//fXauXOncnJy1KlTJw0fPlySlJubqx07dqht27YKDw/nQsd+oDdmoz/mojdmoz9ma8z9\nIZw2AJs2bVJOTo769OmjMWPGqEOHDgoLC9OIESM0YsQIlZaWSpJvqH3ChAm+dzZhYWFyOp0KDw/X\njTfeKLfbrSeeeEJr165Vx44d9e2332r//v0aN24c71b9QG/MRn/MRW/MRn/M1tj7wwlRBvMeoFxa\nWqpjx47p+uuvV1pamm94/auvvtLWrVt1/fXXKz4+3rfc+y7H+0kO3uVJSUnq37+/Kisr9dVXX2nH\njh0qKSnRfffdp4svvtiaJ9nA0Rsz8btjLu9ZwfTGTE6nU3a7nf4YrrH3x7Z8+XK3ZY+OGpxOp2w2\nm+x2e7Wz5070448/avr06fr+++/Vt29fdevWTRdffLGSk5N9O9+JvEP53sfZv3+/WrduHdTn0xid\nqi8SvbHK8X3hd8csTqdTlZWVioyMPOV69MYapaWl2rJliy666KKT/pwl+mOVY8eO6f3339fw4cOV\nlJR00vUaU38YOTXIW2+9pVdeeUWffvqpioqK1KxZM8XExPjeyXpHHObOnasHH3xQ0dHR6ty5sw4e\nPKgPPvhA3333nS666CJFRUX57pOfn69Fixape/fuvm14jzvh4+Dqbv78+dqzZ4/atm0rh8NRI/zQ\nG2stWLBA7733njZu3KjS0lI1a9ZMkZGR/O4YYN68efrHP/6h5cuXa9OmTUpISNA555yjqqoqemOA\nnTt3avz48Vq8eLEGDhyopKQk389Z4rXNanPmzNHvf/977dq1S4MGDVJiYmK12xtrfwinBjh8+LAe\nfvhhffzxx2rVqpXy8vK0cOFCbdiwQQMGDFBMTIykn4fjnU6n2rZtqwkTJmjYsGG68sor5XK5tHLl\nSjmdTmVkZPheWLKzszVr1izZ7Xb16tXLNyqLutm9e7f+/Oc/a968eTpy5Ih69uyphISEWkflbDYb\nvalnW7du1f33369169b5Liy9ZMkS5efn65JLLqn2RoL+1K/NmzfrgQce0GeffaZzzjlH5eXlWrdu\nnTZt2qSrr75aYWFh9MYAn376qVatWqXmzZsrPz9fgwcPrvGzpD/1b+3atZo6dao2bNig0aNHa8KE\nCWrXrl2tP8fG2B/CqQE2btyod999V5MnT1ZWVpbGjBmj5s2ba+3atdq6dat69uyppk2b+nae5ORk\nde/eXbGxsb6DlTt16qQVK1bo8OHDGjhwoG/6LCIiQvv27VNmZqZatWpl2XNsiPbu3VttimTTpk1K\nSkpS586dq/1hlX4+nofe1J+vv/5aM2fOVFJSkm6//XaNHj1at9xyi3766Sf9+9//VmJiojp37iyJ\n/tS3zz77TM8884zatWunW2+9VaNGjdI111yjyMhIrV+/Xt26dVNqaqovmEr0pr55R9wKCgq0ZcsW\ndezYUV9++aXatGmjtm3b+kbZ6E/9cjqdys7O1lNPPaUePXronnvu0SWXXKLU1NSTBlOp8fXHrKgc\notauXaumTZuqX79+io2NlSQNGzZMkyZN0qZNmzR//nwVFxdL8hxLJ6nalIvL5VJsbKzat2+vY8eO\nKT4+3rdejx499Oyzz6pv374WPLOGLSwsTLt27VJWVpYeeughDRo0SDk5Ofr+++8l6aTHNNKb4HM6\nnVq5cqUOHTqk66+/XhkZGWrevLkk6aabbpLdbtc333yjqqqqGn2iP8HldrtVVVWl9u3bKysrS336\n9FFCQoIkKSEhQVVVVWrZsmW19b3oTf3x/qx3796ttLQ0/epXv1JYWJjeeust3xneLper1vvQn+Cx\n2+1q3769wsPD1aZNG3Xp0kVNmzZVRUWF1q1bp++//96XByRV61Fj6g+XkrKQd5o+NjZW5eXlio+P\n972bDQ8P15AhQ7Rx40bl5OQoPT1d/fv3P+kZd9u3b9eWLVt0wQUX+LaBs5OamqpZs2b5Qs+1116r\ntWvX6qOPPlKrVq18v+wn/qzpTXC53W45HA716tVLAwYMUHp6um+5y+VSq1atlJqaqqNHjyosLKzG\niQD0J7hsNpt69uypjIwMRURE+JYXFxdr3bp16tevn77//ntVVVWpdevWNY7dpjf1w/uzTk1N1Xff\nfaf09HQNHTpUOTk5eu+99zRmzJhqbxyOvw/9CR6bzabevXsrMzNTy5cv17Bhw/TZZ58pOztbZWVl\ncrvdSktL06hRo3TVVVc12t8fwqmFvDtQy5YtVVBQoHXr1unCCy/0vWu12Wy66aabtGrVKq1YsULp\n6em+kVXvfYuLi/Xtt9/q3XffVXR0tEaPHm3csSMNWfPmzX0BtGvXrrrqqqv0/vvv68ILL9TFF19c\n6y87vakf/fv3l9Pp9P0BtdlscjgcOnr0qAoKCtSpUyff8uPRn+DznlThfS379NNP9dRTT+no0aNK\nTEzUypUr1bRpU919993KzMyUpGqfQkNvgs/788zLy1NCQoLsdruuuOIKrV+/Xjk5ORo8eLCaN29e\nbRSV/tSPqKgojR49WmvXrtWdd96p+Ph4XXXVVWrbtq3cbrdee+01PfvsszrnnHN8r4MOh6NR9Ydw\naiFv6ElLS1OLFi20cOFCXXjhhdVeCM455xyNGjVK8+bN00033aTY2Fg5nU7l5eXp7bfflsvl0urV\nq2Wz2XTPPfeoZ8+eVj+tRscbbux2u66++mp98sknysnJ0bnnnqvk5OQalzDav38/vQmi48PmiReI\ndrlcqqqqOmk4pT/1y+FwqLy8XGvXrtXFF1+sYcOGqXXr1tq7d69efvllPf/880pLS1NaWhq9qWfe\nQJOUlKSCggIVFxerbdu2uuyyyzR79my9/fbbuvzyy7V161b98pe/lMPh0I8//qi5c+fSn3rQrl07\n/epXv1JOTo7uuusuZWRkKDw8XJLnE59mzpyp559/Xv3795fD4Wh0uaBhRelG5MCBA74/munp6erW\nrZu2bt2q1atXS6p+HFbfvn1VUVGhTz/9VJLnBf/YsWNasWKFtm/frlGjRmnu3Lm+jyrD2Tlw4MBJ\nb0tJSVFWVpY+++wzrV+/XhUVFdXCj81mU3FxMb0JolP1x263a8+ePXI6nerVq1eN2202G787QXRi\nb1wulyIiIjRhwgTdeeed6tmzpxITE3XeeefpN7/5jcrKyrR8+XJJnt7Rm+A6vj/eN3YHDhxQYmKi\nmjRpIkkaPXq0OnTooJycHN1yyy3auXOnCgsLJUklJSX0J4iO70+TJk10ySWX6L777lP//v0VHh7u\nywXeQzD279+vZcuWSWp8uYCz9YNg3bp1WrNmjfbs2SOXy+U7ZtE7wrZ69Wrdc889atmypTp06CDJ\nc3zjkiVLdODAAfXv31+RkZGqrKz0DdUvXrxYqamp6tOnj2+bAwYM0FVXXaV+/fpZ+XQblDPtTW3H\n6bRu3VpbtmzRl19+qb59+yo+Pl4HDhyQ2+1WeHi4kpKSdPHFF9MbPwSiPwsWLNDu3buVlZWlqKgo\nSZ4/qt5DZZKSkvjd8YM/vfFOJUZERPh+/t6zwKOjo7V48WK53W7f1D698d+Z9sf79yUvL08rVqzQ\nDTfcoLKyMr333ntaunSpnE6n2rdvrwceeECJiYlyOp383TkL/uSCuLg438mD3vWOv4rChx9+qPT0\ndHXv3r3R5QKm9QPo+++/1/Tp0/XDDz8oNjZWeXl5atq0qaZMmaIBAwb43pm63W5VVlZq5cqVuvTS\nS+VyudSlSxf98pe/VE5Ojl599VVNmjTJt77D4VBBQYHv4rveP8YmfIpDQ+Fvb2o7Tic2NlY333yz\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ts1 = datetime.datetime.now() + datetime.timedelta(hours=-1)\n", "ts2 = datetime.datetime.now()\n", "tss, dat = log.get(\"LHC.BCTDC.A6R4.B1:BEAM_INTENSITY\", ts1, ts2)\n", "plot( tss, dat, \"-\" )\n", "xlabel(\"Time\")\n", "ylabel(\"Beam intensity\")\n", "xfmt = DateFormatter('%H:%M:%S')\n", "gca().xaxis.set_major_formatter(xfmt)\n", "gcf().autofmt_xdate()\n", "display(gcf())\n", "close()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Dealing with arrays\n", "get individual bunch intensities" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2015-10-21 21:53:46.628999\n", "[ 0. 0. 0. ..., 0. 0. 0.]\n" ] }, { "data": { "image/png": "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\n1LJlS0d7ZmamY7vJ1VdfrePHjysvL09XXHGFo706fLdr167Wa8+bN09RUVENKR8AAAANVNPDyr17\n99Z5gbrGVqewXD1Xefz48fL393eau1yb+++/v17FxMbGatWqVUpJSXG8Z9lms2njxo3q06eP400Y\nBQUFKi4uVpcuXeTv7y/p3HSLtLQ0ffjhh5o4caIkqaqqShs3blTbtm119dVX16sWAAAAoF5hedy4\ncU0aliMjIxUbG6ulS5fq9OnT6ty5szZt2qTc3FwlJCQ49luyZIk2b96s5ORkx8InN998s6KiorRy\n5UoVFhaqR48e+uc//6kvvvhCv/3tbxUQ0CRvyQMAAMAlrE4Jctu2bbV+35imT5+upKQkpaamqqio\nSD179tSsWbOcPpxnsVhqfG/ys88+q6SkJKWlpWnjxo3q2rWrZs6c6fKhPwAAAKAuvO5xq9VqVXx8\nvOLj4437JCQkOD1prtaiRQtNmTKF5a5xyWAtHQAAPKvRwnJpaam2bdumiooK3XjjjerUqVNjnRoA\nAADwCLfC8pw5c5SZmally5ZJksrLyzVlyhQdPXpUktSqVSvNnTvX5T3MAAAAwMXEz52D9u3bp1tu\nucXx/datW3X06FHNnDlTSUlJat++vf72t781Vo0AAACAR7gVlgsKCpymWezYsUNXX321brvtNl11\n1VUaMWKE493IAAAAwMXKrbAcHBys4uJiSVJlZaX27dunG264wbG9RYsWOnPmTONUCAAAAHiIW3OW\ne/XqpfXr16tfv37auXOnSkpKNHDgQMf2EydOuCw7DaD+7HZPVwAAgG9z68nyQw89pNOnTys+Pl7L\nly9XTEyM+vTpI0my2+3avn27rrvuukYtFAAAAGhubj1Z7t27t5YvX67/+7//U+vWrdWvXz/HtjNn\nzujOO+90agMAAAAuRm6/Z7l9+/a6+eabXdpbt26tMWPGNKgoAAAAwBs0aFGSkpISnTx5UkVFRbLX\nMLnypz/9aUNODwAAAHiUW2G5sLBQ8+fPV0ZGhqqqqmrcx2KxaOvWrQ0qDgAAAPAkt8LySy+9pI8/\n/lijR49W37591aZNm8auC4Aki8XTFQAA4NvcCsuffvqpxowZo/j4+MauBwAAAPAabr06LigoyGkF\nPwAAAOBS5FZYjouL044dOxq7FgAAAMCruDUNIzY2Vvv379dTTz2lESNGKCwsTH5+rrn76quvbnCB\n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\np6m+4L333tOWLVt0/PhxlZSUqF27doqKitL9/7+9ew+p+v7jOP76esu8sLRI3Vq1FV1gkd3stmGc\nNWUuK40uRhDazY7VOhA1qCGxxU4JjblwZldh648IoxrOOFlQFtkKNQmJoDbL0rJspzMakZ7fH+L5\n/U7nHDyZ/qz2fPzl9+vn+znvz5cDvvycz/dzli51+7prSfrjjz9UUFCg2tpahYSEaPLkyTKbzW4f\nLXXo+M72e/fuKSYmRnPnztW8efP+X8PqVhkZGWpqapL034/aOjZUP3TokOufq564P96+0z47O1sj\nRozowRF3j87uW3h4uPLz81VXV6fm5ma1tbVp0KBBmjlzphYsWOCx0b/0dt83i8Wiq1evenxcKLXf\nv/Lyctcx77V2/twzh8PB++wFp0+f1m+//aabN2/KbrcrLCxMo0eP1vz58z0mNHivtfPnnvFe85/F\nYpHdbte+ffvczr+u77d/bVgGAAAAOvOvXLMMAAAA+IOwDAAAAPhAWAYAAAB8ICwDAAAAPhCWAQAA\nAB8IywAAAIAPhGUAAADAB8IyAAAA4ANhGQAAAPCBsAwAAAD4QFgGgDeQyWRSfn5+l65tbGyUyWRS\nWVlZt9XTE30CwOsgqLcLAIDXSVlZmXbs2OF2rl+/fho6dKgWLVqkhISEXqqsexmGIcMweqRfAHib\nEJYBwIusrCzFxsbK6XSqpaVFZWVl+uqrr7Rt2zZNnTq1t8t7JbGxsSorK1NgYGBvlwIArz3CMgB4\nkZCQoBEjRriOU1JSlJ6erjNnzrzxYVmSgoODe7sEAHgjsGYZAPwQHh6ukJAQt9nY6upqmUwm1dTU\nuLX1tn7XarUqJSVFzc3N2rJli1JSUpSWlqbCwkK1tbW5Xd/W1qYjR44oKytLycnJSktL06ZNm3T9\n+nWPuioqKpSZmamkpCRlZmbq0qVLnY7lVetzOByyWq2aNWuWUlNTZbVa5XA4vL5WfX29cnNzNWfO\nHCUnJys7O1sXLlxw/b6lpUVz586VxWJxu66hoUGff/65vvnmm07HAwA9ibAMAF44HA799ddfevz4\nsW7duqXvv/9e//zzj2bOnOl3Hy+u321ra9PGjRvVr18/rV69WmPHjtXhw4f166+/urXLy8tTQUGB\nYmJitGrVKmVkZKhPnz6qq6tza1dbW6sffvhBn376qVatWqVnz54pNzdXdru9x+pzOp3avHmzbDab\nkpKStGzZMj148EDfffedR/+3bt2S2WzW7du3tXjxYpnNZoWGhurrr79WRUWFJCkqKkoWi0U1NTUq\nKaAQbaoAAAUGSURBVClx1WG1WhUeHq7169f7NRYA6CkswwAALzZs2OB2HBwcrI0bN2rChAld7vPZ\ns2cymUxasmSJJCk1NVUrV65UaWmpZs+eLUmqqqrSyZMnNW/ePOXk5LiuXbBggUd/9fX1OnjwoOLi\n4iRJ48aN0/Lly1VeXq60tLQeqe/8+fOqra1Vdna2q6bZs2d7zAxL0q5duxQbG6vCwkIFBbX/uZkz\nZ47Wrl2roqIiffzxx5KkxMREmUwm7dmzR5MnT1ZFRYWuXbumb7/9VpGRkS89DgDoToRlAPBi/fr1\nGjRokKT2pQI2m015eXnq27evPvnkky73m5qa6nY8ZswYnTp1ynV89uxZGYahpUuXdtrXhAkTXEFZ\nkj788EOFhYWpsbGxx+qrrKxUUFCQKzxLUkBAgNLT01VbW+s6Z7fbVV1drczMTP39999ufU6cOFHF\nxcV6+PCh+vfvL0n68ssvVVNTo9zcXN25c0dJSUmaNm1al8cBAN2FsAwAXowaNcrtAT+TyaQVK1Yo\nPz9fU6dOdc2Uvow+ffronXfecTsXGRmpJ0+euI7v3r2rAQMGKCIiotP+Bg4c6HHuxf66u76mpiZF\nR0crNDTUrV3HPxYdGhoa5HQ6tX//fu3fv9/jtQzDUEtLiyssR0ZGas2aNdq6dauio6O1du3aLo0B\nALobYRkA/GAYhuLj41VSUqKGhgYNGTLEZ9vW1lafffjD6XT61S4gwPtjJ/5e/6Lu3CO5o4aFCxdq\n0qRJXtu89957bse///67pPZZ6fv37+uDDz7otnoAoKsIywDgp44Q/PTpU0lyrad9cSeIpqamLr/G\nu+++q8uXL+vJkyev5XrdmJgYVVVV6enTp+rbt6/r/O3bt93adSwPCQwM1Pjx4zvt99KlSyotLVVG\nRoZsNpusVqsKCgrYCxpAr2M3DADww/Pnz3X58mUFBwe7ZpVjYmIUEBDgsXXcsWPHvPbhz8xtYmKi\nnE6niouLX73ol+RPfVOmTFFra6uOHz/uOtfa2qqjR4+6tYuKilJ8fLxOnDihR48eefTz+PFj188O\nh0N5eXkaPXq0li9frg0bNujGjRv65ZdfXmE0ANA9mFkGAC8qKyv1559/Smp/wK+8vFwNDQ1avHix\na0Y1IiJCiYmJOnr0qAzDUFxcnC5evOgWBP+XP8sj4uPj9dlnn6mkpER37tzRpEmT5HQ6dfXqVY0b\nN67TXS66ugTD32unTZumjz76SEVFRWpsbNTgwYN17tw5j4f4pPaH9tatW6esrCx98cUXiouLU0tL\ni65du6bm5mbt3btXkvTjjz/K4XBo586dMgxDCQkJSklJ0c8//6zp06dr2LBhXR4TALwqwjIAeHHg\nwAHXzyEhIRo8eLAsFovHbhHr1q1zzbSGhIRoxowZys7OVlZWlls7wzC8ztx6O79p0yYNGzZMpaWl\n2r17tyIiIjRy5EiNGTOm07q7uu7Y3/oMw9C2bdu0a9cu2Ww2GYah6dOny2w2a+XKlW7XDhkyRIWF\nhSouLtbJkydlt9sVFRWl4cOHu3b7OH/+vGw2m8xms95//33XtTk5Obpy5Yq2b9+un376ieUYAHqN\ncebMma5PQwAAAABvMdYsAwAAAD4QlgEAAAAfCMsAAACAD4RlAAAAwAfCMgAAAOADYRkAAADwgbAM\nAAAA+EBYBgAAAHwgLAMAAAA+EJYBAAAAHwjLAAAAgA+EZQAAAMCH/wAObhWWcl82QAAAAABJRU5E\nrkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "tss, dat = log.get(\"LHC.BCTFR.A6R4.B1:BUNCH_INTENSITY\", ts1)\n", "print( tss )\n", "print( dat )\n", "plot( dat, \"o-\" )\n", "xlabel(\"Bunch index\")\n", "ylabel(\"Bunch intensity\")\n", "display(gcf())\n", "close()" ] } ], "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.4.3" } }, "nbformat": 4, "nbformat_minor": 0 }