{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Logfile parsing\n", "(back to overview [offline](../Main.ipynb),[online](https://nbviewer.jupyter.org/github/QCoDeS/Qcodes/tree/master/docs/examples/Main.ipynb))\n", "\n", "[read on nbviewer](https://nbviewer.jupyter.org/github/QCoDeS/Qcodes/tree/master/docs/examples/logging/logfile_parsing.ipynb)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here, we provide an example concerning how to benefit from QCoDeS logs by simple analysis and visualisation." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "import dateutil\n", "import os\n", "\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "\n", "import qcodes as qc\n", "from qcodes.logger.log_analysis import logfile_to_dataframe, time_difference, log_to_dataframe\n", "from zipfile import ZipFile\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# put the 30MB into a zip file\n", "filepath = os.path.join(os.getcwd(), 'static', 'pythonlog.zip')\n", "with ZipFile(filepath) as z:\n", " with z.open('pythonlog.log', 'r') as f:\n", " my_log = [line.decode() for line in f]" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "os.path.exists(filepath)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "logdata = log_to_dataframe(my_log, separator=' - ', columns=['time', 'module', 'function', 'loglevel', 'message'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The `logdata` is, now, a nice and tidy `DataFrame` that one can further manipulate to extract more information, if needed." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "scrolled": true }, "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", "
timemodulefunctionloglevelmessage
02018-05-10 16:01:50,497qcodes.instrument_drivers.QDev.QDac_channelswriteDEBUGWriting to instrument qdac: wav 2 0 0 0;set 2 ...
12018-05-10 16:01:50,546qcodes.instrument.visaask_rawDEBUGQuerying instrument SR860_120: OUTP? 2\\r\\n
22018-05-10 16:01:50,552qcodes.instrument.visaask_rawDEBUGGot response from instrument SR860_120: 8.9832...
32018-05-10 16:01:50,553qcodes.instrument.visaask_rawDEBUGQuerying instrument SR860_120: SLVL?\\r\\n
42018-05-10 16:01:50,561qcodes.instrument.visaask_rawDEBUGGot response from instrument SR860_120: 9.9999...
..................
2551462018-05-10 17:12:03,208qcodes.instrument.visaask_rawDEBUGQuerying instrument SR860_120: OUTP? 2\\r\\n
2551472018-05-10 17:12:14,257qcodes.data.data_setfinalizeDEBUGFinalising the DataSet. Writing.\\r\\n
2551482018-05-10 17:12:14,258qcodes.data.gnuplot_formatwriteDEBUGAttempting to write the following group: qdac_...
2551492018-05-10 17:12:14,259qcodes.data.gnuplot_formatwriteDEBUGWrote to file from 40200 to 40201\\r\\n
2551502018-05-10 17:12:14,378qdev_wrappers.sweep_functions_do_measurementERRORException in doND\\r\\n
\n", "

255151 rows × 5 columns

\n", "
" ], "text/plain": [ " time module \\\n", "0 2018-05-10 16:01:50,497 qcodes.instrument_drivers.QDev.QDac_channels \n", "1 2018-05-10 16:01:50,546 qcodes.instrument.visa \n", "2 2018-05-10 16:01:50,552 qcodes.instrument.visa \n", "3 2018-05-10 16:01:50,553 qcodes.instrument.visa \n", "4 2018-05-10 16:01:50,561 qcodes.instrument.visa \n", "... ... ... \n", "255146 2018-05-10 17:12:03,208 qcodes.instrument.visa \n", "255147 2018-05-10 17:12:14,257 qcodes.data.data_set \n", "255148 2018-05-10 17:12:14,258 qcodes.data.gnuplot_format \n", "255149 2018-05-10 17:12:14,259 qcodes.data.gnuplot_format \n", "255150 2018-05-10 17:12:14,378 qdev_wrappers.sweep_functions \n", "\n", " function loglevel \\\n", "0 write DEBUG \n", "1 ask_raw DEBUG \n", "2 ask_raw DEBUG \n", "3 ask_raw DEBUG \n", "4 ask_raw DEBUG \n", "... ... ... \n", "255146 ask_raw DEBUG \n", "255147 finalize DEBUG \n", "255148 write DEBUG \n", "255149 write DEBUG \n", "255150 _do_measurement ERROR \n", "\n", " message \n", "0 Writing to instrument qdac: wav 2 0 0 0;set 2 ... \n", "1 Querying instrument SR860_120: OUTP? 2\\r\\n \n", "2 Got response from instrument SR860_120: 8.9832... \n", "3 Querying instrument SR860_120: SLVL?\\r\\n \n", "4 Got response from instrument SR860_120: 9.9999... \n", "... ... \n", "255146 Querying instrument SR860_120: OUTP? 2\\r\\n \n", "255147 Finalising the DataSet. Writing.\\r\\n \n", "255148 Attempting to write the following group: qdac_... \n", "255149 Wrote to file from 40200 to 40201\\r\\n \n", "255150 Exception in doND\\r\\n \n", "\n", "[255151 rows x 5 columns]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "logdata" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "scrolled": true }, "outputs": [], "source": [ "data = logdata" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Get the query time for the SR860\n", "\n", "We know that the log file documents an experiment quering an SR860 for R and amplitude over and over. Let us analyse and visualise query response times." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "qstr_R = 'Querying instrument SR860_120: OUTP\\? 2' # remember to escape\n", "queries_R = data[data.message.str.contains(qstr_R)]\n", "responses_R = data.loc[queries_R.index + 1]\n", "\n", "qstr_lvl = 'Querying instrument SR860_120: SLVL\\?' # remember to escape\n", "queries_lvl = data[data.message.str.contains(qstr_lvl)][:-1]\n", "responses_lvl = data.loc[queries_lvl.index + 1]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Find the elapsed times" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "elapsed_times_R = time_difference(queries_R.time, responses_R.time)\n", "elapsed_times_lvl = time_difference(queries_lvl.time, responses_lvl.time)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Visualise!" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from pandas.plotting import register_matplotlib_converters\n", "register_matplotlib_converters()\n", "\n", "fig, ax = plt.subplots(1,1)\n", "ax.plot(queries_R.time.str.replace(',', '.').astype(\"datetime64[ns]\"), elapsed_times_R, '.', label='R')\n", "ax.plot(queries_lvl.time.str.replace(',', '.').astype(\"datetime64[ns]\"), elapsed_times_lvl, '.', label='LVL')\n", "fig.autofmt_xdate()\n", "ax.set_ylabel('Response time (s)')\n", "plt.legend()" ] }, { "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.7.5" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }