{ "cells": [ { "attachments": {}, "cell_type": "markdown", "id": "skilled-premium", "metadata": {}, "source": [ "# Analysis Classes - Unified Interface to Analysis Results\n", "\n", "MVG comes with a set of analysis classes which provide a unified interface to analysis results *irrespective of the specific feature*.\n", "Note that the analysis classes are helper classes, as such the mvg class does *not* depend on them.\n", "\n", "Except for step (1) requesting the specific feature analysis, the following generic workflow holds:\n", "\n", "1. Request a specific analysis\n", "2. Retrieve results and parse them into an analysis_class object\n", "3. Use generic methods like plot(), summary() or to_df()\n", "\n", "One application is to use the analysis classes interactively from a Python REPL session.\n", "\n", "### Or in (pseudo) code\n", "```python\n", "result = parse_results(session.get_analysis_results(request_id)) # call API to get results\n", "result.plot() # plot results\n", "result.summary() # print summary table\n", "df = result.to_df() # convert to DataFrame\n", "result.save_pkl() # save to pickle file\n", "```\n", "\n", "### Prerequisites\n", "For running the examples in this notebook:\n", "\n", "1. Installed mvg package\n", "2. A token for API access from Viking Analytics\n", "3. The database needs to be populated with our example assets. This can be achieved by running the [\"Sources and Measurement\"](2-sources_and_measurements.ipynb) example." ] }, { "attachments": {}, "cell_type": "markdown", "id": "concerned-vienna", "metadata": {}, "source": [ "\n", "### Importing the required packages, classes and functions" ] }, { "cell_type": "code", "execution_count": 1, "id": "disturbed-friendly", "metadata": { "ExecuteTime": { "end_time": "2021-03-18T10:00:28.735704Z", "start_time": "2021-03-18T10:00:28.513699Z" } }, "outputs": [], "source": [ "import os\n", "\n", "from mvg import MVG, analysis_classes # mvg library with python bindings to mvg-API\n", "from mvg.analysis_classes import parse_results # analysis classes" ] }, { "attachments": {}, "cell_type": "markdown", "id": "accomplished-mechanics", "metadata": { "ExecuteTime": { "end_time": "2021-03-04T10:59:02.619313Z", "start_time": "2021-03-04T10:59:02.615934Z" } }, "source": [ "### Create a Session and test API access\n", "\n", ".. note:: Each token is used for Authorization AND Authentication. Thus, each unique token represents a unique user, each user has it own, unique database on the VA-MVG' service.\n", "\n", "**You need to insert your token received from Viking Analytics here:**\n", "Just replace `\"os.environ['TEST_TOKEN']\"` by your token as a string." ] }, { "cell_type": "code", "execution_count": 2, "id": "honey-growing", "metadata": { "tags": [ "parameters" ] }, "outputs": [], "source": [ "# Replace by your own Token\n", "TOKEN = os.environ[\"TEST_TOKEN\"] # use our own token\n", "ENDPOINT = \"https://api.beta.multiviz.com\"" ] }, { "cell_type": "code", "execution_count": 3, "id": "persistent-dublin", "metadata": { "ExecuteTime": { "end_time": "2021-03-18T10:00:29.472021Z", "start_time": "2021-03-18T10:00:29.469799Z" } }, "outputs": [ { "data": { "text/plain": [ "{'api_version': '0.3.3',\n", " 'mvg_highest_tested_version': '0.3.3',\n", " 'mvg_version': '0.12.2'}" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "session = MVG(ENDPOINT, TOKEN)\n", "session.check_version() # Check if API is accessible" ] }, { "attachments": {}, "cell_type": "markdown", "id": "neural-anniversary", "metadata": { "pycharm": { "name": "#%% md\n" } }, "source": [ "## Request an analysis\n", "\n", "Once the API session is live, we start by checking if the source u0001 we will use is available in the database:" ] }, { "cell_type": "code", "execution_count": 4, "id": "universal-trace", "metadata": { "ExecuteTime": { "end_time": "2021-03-18T10:00:32.804304Z", "start_time": "2021-03-18T10:00:32.800567Z" }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "data": { "text/plain": [ "{'source_id': 'u0001',\n", " 'meta': {'assetId': 'assetJ',\n", " 'measPoint': 'mloc01',\n", " 'location': 'cancun',\n", " 'timezone': 'Europe/Stockholm'},\n", " 'properties': {'data_class': 'waveform', 'channels': ['acc']}}" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "SOURCE_ID = \"u0001\"\n", "session.get_source(SOURCE_ID)" ] }, { "attachments": {}, "cell_type": "markdown", "id": "relative-niagara", "metadata": { "pycharm": { "name": "#%% md\n" } }, "source": [ "We will now request an analysis (first two lines, uncomment one of them) and wait for the results to become available. \n", "\n", "The results as returned will be stored in a dictionary named `raw_result`. The raw results are shown in the results cell, mainly to show that they are not optimized for readability or interpretation." ] }, { "cell_type": "code", "execution_count": 5, "id": "accompanied-basement", "metadata": { "ExecuteTime": { "end_time": "2021-03-18T10:00:37.584243Z", "start_time": "2021-03-18T10:00:37.457555Z" }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Waiting for {'request_id': '9fa506fd651f10b05401840edf9f33cb', 'request_status': 'queued'}\n" ] } ], "source": [ "# Specifc part : Select one of two analysis here by un/commenting\n", "selected_feature = \"KPIDemo\"\n", "# selected_feature = \"ModeId\"\n", "\n", "# Generic Part: request analysis and wait for results\n", "analysis_request = session.request_analysis(SOURCE_ID, selected_feature)\n", "print(f\"Waiting for {analysis_request}\")\n", "session.wait_for_analyses([analysis_request[\"request_id\"]])\n", "\n", "# Generic Part: Retrieve unparsed results\n", "raw_result = session.get_analysis_results(analysis_request[\"request_id\"])\n" ] }, { "attachments": {}, "cell_type": "markdown", "id": "suited-journal", "metadata": { "pycharm": { "name": "#%% md\n" } }, "source": [ "## Parse Results\n", "\n", "### Showing and Browsing the results using analysis_classes\n", "To make the results more accessible, we'll use the analysis_classes.\n", "The parse_results function will take the raw_results of (any) analysis and represent them in a python object with a number of convenience methods for summarising, plotting and exporting.\n", "For the full list of provided methods check __[the documentation](https://vikinganalytics.github.io/mvg/content/utilities_reference/analysis_classes.html)__.\n", "\n", "The parse function will automatically determine the kind (feature) of analysis based on the raw_results.\n", "Once the results are parsed, we can summarize them using the summary() method *irrespective of which analysis they stem from*.\n", "To verify this you can rerun the cell above by selecting another feature for the analysis.\n", "\n", "### Timestamps\n", "The Vibration API requires timestamps to be represented in EPOCH time.\n", "To display human interpertable timestamps, one needs a timezone and a time unit (specifying if the timestamps are seconds 's' or milliseconds 'ms' from EPOCH).\n", "This information can be given in the parse_results calls (2nd and 3rd argument).\n", "If they are left blank EPOCH times are kept.\n", "When exporting the results to a DataFrame, a column called \"datetime\" will be appended to show the human interpretable times." ] }, { "cell_type": "code", "execution_count": 6, "id": "creative-elevation", "metadata": { "ExecuteTime": { "end_time": "2021-03-18T10:00:38.637859Z", "start_time": "2021-03-18T10:00:38.499851Z" }, "pycharm": { "name": "#%%\n" }, "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "=== KPIDemo ===\n", "request_id 9fa506fd651f10b05401840edf9f33cb\n", "from 20191004-13:01.00 to 20191122-13:01.00\n", "\n", "+-------+--------------+------------+------------+-----------------+----------------+--------------------+-------------------+--------------------+\n", "| | timestamps | rms_acc | peak_acc | peak2peak_acc | variance_acc | crest_factor_acc | utilization_acc | dc_component_acc |\n", "|-------+--------------+------------+------------+-----------------+----------------+--------------------+-------------------+--------------------|\n", "| count | 50 | 50 | 50 | 50 | 50 | 50 | 50 | 50 |\n", "| mean | 1.57231e+09 | 0.611691 | 2.81764 | 5.40059 | 0.377299 | 4.62976 | 1 | -0.120874 |\n", "| std | 1.26105e+06 | 0.0565414 | 0.278079 | 0.378225 | 0.0636172 | 0.333367 | 0 | 0.0141936 |\n", "| min | 1.57019e+09 | 0.484564 | 2.26056 | 4.55438 | 0.234802 | 4.12339 | 1 | -0.140524 |\n", "| 25% | 1.57125e+09 | 0.627912 | 2.68338 | 5.31364 | 0.394273 | 4.20402 | 1 | -0.140196 |\n", "| 50% | 1.57231e+09 | 0.628307 | 2.84999 | 5.52634 | 0.39477 | 4.80641 | 1 | -0.112316 |\n", "| 75% | 1.57337e+09 | 0.64684 | 3.06661 | 5.69377 | 0.418402 | 4.89065 | 1 | -0.10966 |\n", "| max | 1.57442e+09 | 0.647694 | 3.13609 | 5.79639 | 0.419507 | 4.99256 | 1 | -0.109065 |\n", "+-------+--------------+------------+------------+-----------------+----------------+--------------------+-------------------+--------------------+\n" ] } ], "source": [ "# Parse\n", "result = parse_results(raw_result, \"Europe/Stockholm\", \"s\")\n", "# result = parse_results(raw_result) # show only raw timestamps\n", "# Show summary\n", "summary = result.summary()" ] }, { "attachments": {}, "cell_type": "markdown", "id": "global-prediction", "metadata": {}, "source": [ "## Use Generic Methods\n", "\n", "### Plotting\n", "For visual representation of the results, there is the 'plot' method.\n", "\n", "Please not that when plotting the results for the KPIDemo feature, one selects the KPI to be displayed by passing the parameter `\"kpi\"`.\n", "If this parameter is not included, the plot function will display the results of the first column after the timestamps, which is the RMS value of the first channel." ] }, { "cell_type": "code", "execution_count": 7, "id": "joint-dryer", "metadata": { "ExecuteTime": { "end_time": "2021-03-18T10:00:43.435603Z", "start_time": "2021-03-18T10:00:43.172181Z" }, "pycharm": { "name": "#%%\n" }, "scrolled": true }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcQAAAEdCAYAAACSbhf4AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nO2deZgdVZn/P9+7dN/uLGRlDZCgoKwBiUFUBEEU3ABHR8QVF0RF0BlFBjfcF8YRFRyGUcQZVFRARH8sioqggsMW0BCQGCJptoQkZOvu9O17398f59xO5eZ2p0O6u27dfj/PU8+9dZaq76k6p946Wx2ZGY7jOI4z3smlLcBxHMdxmgE3iI7jOI6DG0THcRzHAdwgOo7jOA7gBtFxHMdxADeIjuM4jgO4QXQSSLpM0udH8Hifl/SUpCdG6pjjgWa5bpJ2knSLpHWSvtbA/yhJXWOk5UWSHpK0XtKJ23ms8yRdPlLaxhv1913ScyTdE/PJmcOIP2L3civnMUnP3pY449IgSmqT9DVJXfGmPCzp62nryhJby2ySdgf+FdjPzHYeO2XpMpyXCkkvlPR/8QFyn6QXJ/y26brFh3s55uPatlfCf7ak30nqlvSApJfVxZ8p6YeSnpa0WtIPEt6nAU8Bk83sX4eZ/pMlLZK0QdLfJR2R0GF1Oj+ZiPfSqHONpKUNDv1Z4EIzm2hm10j6Z0l/ium6uYGOgyXdFf3vknTwcPTHuNMk/Sym4R+STkn4DZmORLi2eL276twHvR+SdpF0raTH4jlmN9D14/iy9JSkH0ia3ODcb4/x313n/mFJT8RrfKmk9uFek61wNnCzmU0ys29KmiLp+5KWx+28uvD19/KrkpZJWhuv98cTmmdI+qOklTGP3ibpRSOkewu2ySBKKoyWkDHm34B5wHxgEvBS4J5UFT0Dmvx+7AmsNLPl2xpxOOlq8rQPiqRpwLXA+cAU4KvALyRNjUGeyXX7cXy41LYlCb8fEfL2dODjwJWSZib8rwaeiOfdEfj3hN+ewP02zK93SDoW+ApwKqFcvQRYUhdsSkLn5xLuG4BLgY8Ocvg9gYWJ/VXABcCXG+hoA34OXA5MBb4P/Dy6D4eLgD5gJ+DNwH9K2n+Y6ajxUaDRPRzqflSBG4B/GkTX52N69gKeFfWdlwwQ89G/sfm1QtIrgHOAY4DZ8RifGeQ820r9vfk60BnPMx94q6RThwj/XeC5ZjYZeCFwiqTXRb/1wDuBmYS0f4VQXkan/JvZkBuwFPgYcB+wEShEt49Gtw0xQTsB1wPrgJuAqTF+iZAxVwJPA3cAO23lnKcCi+KxlgDvrfM/AVgArAX+DhwX3acB3wMeA1YD1wxy/F8CHxri/AY8O7F/GfD5+P8ooIvwVrQceBw4EXgl8DdCQT03Efc84KfxGqwD/gLsQ8i0y4FlwMuHk/bEuT9GeIj9L/BX4DWJMEXCW/3BDdJVi39uDLMUeHOjdMb99wCLY5quBXaN7rfEa7SBkGHfWHeelwE9hAK+Hrgsur+WUBCeBm4G9h0qnw1yXz4APAQ8HN2eC/w6anwQ+OdE+OlR91rg/4DPAX+IfrPj8QqJ8DcD707svzPei9XAjcCe0V2EQr8cWBM1H0CoUZUJD9P1wC8apOHVwMI6t78B7xriuv003u818drvX5e/Lh8kH+8Tr+WkhNutwOnx/8vjdc83iHtZXVpeBnRE99XA/YRnQFcizp+Adw2iZYvrPUi4lwFL69z+Hq9JT9TSnvB7N6F2kgz/cuBRQAm3R9j0nDgPuBL4MaGc3Q3MjX4TYpr3ScT9X+DLw00HMCfmm+Prrs+Q9yPhVojnmF3nfj3w/sT+B4Ab68JcDLyfLfPyD4EvJvaPAZ5I7O8KXAWsAB4Gzkz4DXrfgd8CFaA33pt9CM+W5yfinwvcurV7Gf13Izwjz25wXXPAa+K12TG65ePx/x7v5V3A7onnxZmE5+hThJfQ3JD5byjPxINqAbA70JFwu51gBHcjPBjuBg4B2uNF+nQM+17gF4Q3hjxwKKEJZqhzvorwBiTgSKAbeF70m094MBwbL9BuhLcLgP9HyORTCYbhyEGO/wlCAXk/cCCJgpO4kEMZxH7gU/Ec74mZ6IeEt+L9Y+bYK1H4eoFXEDL6/8QM9/FE/IeHmfbaub8Sr3MHwTD/OBH/BOAvg6S7Fv8/YvwjCUbtOQ3SeXTMRM+LYb8F3DLYNRrkXPUPgw3xvhWj7sVA22D5rMExjWD8psW0TyC8UJwar+3zoub9Y/grgJ/EcAcQHpLDMoiEl5zFwL7x2J8A/hT9XkEoeFPifdoX2KX+Gg6ShtcQal1Jt4eArze6btHtnYS81U6oFS1I+J1HKA+rCC8b70v4nQQsqjvWhcC34v9PEQx97YX1DhJlpj4thNrYrfH67054Gas9GPMEQ3JOvG5d8Vy1Z0btej8a/b4HzGhwfbYwiIn88bIG7o0M4oeB6+vcfgn8a+KalYHXE/LiRwhlskh4hvXUxf0I8eVmOOmI5zqp/l5u7X4k3AYziK8GriM836YSnrMfSvjPB+4kPBdvZnODeC+JF1dgRjzH9Bj+rpgf2gi1xyXAK7Z23+vLTdx/Cpif2P84sHqoexnzzfqoaQkwq87/vpi/DPjvhPtHCQb0OYSyOBeYnnhe/C7q3oPw4vnu5HG3yE9DeSbEv7OBW7JmcRXwn4n9DxJrZ4TC/CfgoK2dawgN1wBnxf//RXx41IXZhfDmMXUYx8sT3q7+SHhjewx4e8J/awaxh/hWTXhQGXBYIvxdwImJwvfrhN9r4o2vjz9lGGk/KmaKUsJ/V8Kb0eS4fyUN3q4S8fuBCQm3nwCfbJDO7wJfTYSbSHiIzG50jQY5V7LQfBL4SWI/R3ioHDVYPmtwTAOOTuy/kfjmmXD7L+DT8R6XiS9L0e+LDN8gXk+ithP1dhOae44mFK4XUPfGydYN4nRCDflNhAfw2wn59r8aXbcG8adE3TvE/f1iHsgTmpseB94U/d4K3F4X/wtsqnleEo/1rqjl5KhtRqO0EB5UxyX2T2OTQdw1HutOQlmcQShfX0jkn3mEh/1OhHx6Y4P0jYRB/CRwRZ3bD4DzEmXy9oRfLl63I+L2RF3c99TOsbV0EIzeDYOUgSHvR8JtMIO4K6H1rRq3X7PphTIfr/3h9Xk57g+0pMX9Yu0cwGHAI3Xn+jfge1u774Oc63JCU/wk4Nnx3BuHcS9FeCH5DIladMK/RCg3b0+4PQicMMTzIqn7/cBvhnrGDLcPcVkDtycT/3sa7E+M//+X8BZ6Rews/qqk4lAnk3S8pNslrZL0NKE5ckb03p1wgevZHVhlZqu3lhgzq5jZRWb2IsID5gvApZL23VrcyEozq8T/PfF3sPQ38nuqQfyJsNW0A6wws95EWh4jPHj+SdIUQjNNcmBEPavNbENi/x+EglbPrtGvdp71hFrEbkMceyjqj1cl5Kvk8Rrls3qSYfYEDoud7U/H6/VmYGdCn0OhLvw/GD57At9IHHcVocDuZma/JbzZXwQ8KemSRoMbGmFmKwm1+H8h5IvjCA+5hqM1JeUlfTkOUFlLeJhAzBNmdr+ZPRbz9J+AbxBqPhBevOp1TSa8QEHIe0vN7LtmVjazKwjXa7BBC7sy+PWs5eNvmdnjZvYUoSXilVHnejO708z6zexJ4Azg5cO9btvI1tINiXTEvNhFSN+QcYdKh6QJhD7hD26HrqH4KeFFbFKM93eC8YHwsL/PzG4b5rlr/9cR8vqudeXoXILBh6HveyPOJOSHhwh9uT9ikPydxAL3xLhb9G+aWa+Z/Qg4R9Lc6DyYPahRr7vRs26A4RpEG2a4LSOGgvYZM9uP8Ab7auBtg4WPI5+uInTu72RmUwjNBIpBlhGaFOtZBkyLRmFb9PWY2UWE9vH9onM3oYm3xpiMkhxG2qHxvfg+8BbgDcBtZvboEKeZGgtujT0INeR6HiMUlJq2CYTazVDHHor644mQmZPHG04+S4ZZBvzezKYktolm9j5CM3Z/PEeNPRL/ay8Fg93nZYT+2+SxO6LRwcy+aWaHEprI92HTYJCtpsHMfm9mzzezaYRaw3MIfZyNOIVgQF8G7EB4o4fN88Rmh0/4LQT2kjQp4T+XTQMa7huO3gSPM8j1jC+iXdtwvFq4wdKxPSwEDop5rMZBbD6QYyAdknLALEIe/RtQkLR3IuzcurhJkunYm3B/blWYMnM1sEsc2Tmbrd+PrTGX0JKwIb6gXkx84SD0CZ4Uz/UE4Vn7NUkXRv+FMX7yWE/GF7RlhG6bZF6fZGa1Yw963xthZqvM7M1mtrOZ7U+wM4Pl70YUaPyMr1EkNOvC4PagRr3uRs+6AUZ92oXCcOoDJeUJgxvKhE7YwWgj9JWsAPolHU/oJK/xXeBUScdIyknaTdJzzexxQjPXtyVNlVSU9JJBNH1IYS5Nh6SCpLcT3rpqI00XEEY65SUdR+hrGwu2lvbBuIbQf3YWoY9ya3xGYVj4EYQXlJ82CPNDwnU+OBrqLwJ/NrOl0f9JNmXK4fAT4FXxvhUJUws2EprTnym/BPaR9NZ4v4uSni9p31gDvxo4T1KnpP0IzZMAmNkKgjF+S7zP72TzgnUx8G+10YWSdpD0hvj/+ZIOi+nYQOgjruXprV4XSYdErZMJLz9dZnbjIMEnEa7TSoLx/mLdsU6I+V2S5hPezn8e0/g3Ql7+tKSSpJMIhuGqGP1nhBekt8dr8HpCjf2Pg2j5SbwmUyXNYsua0PeAD0raMY52/BDhHhGv13NimZ0OfJPQDLkm+ucklQgPO0W9g44KjXpLhIdnLoavtTzdTLgfZ0pql3RGdP9t4hCHSnqdwmjFD8VrfHtsPbka+KykCQpD/E8gtHRtLR1/JTyAD47buwn54WBg2TDuBzFNtekQ7XG/xh3Au+Nzq4PQdHlv9HsHoS+7du47CbWs2hSG/wHeJWm/eG8+QWgSh2Cs1kr6WDx2XtIBkp4f/bd23zdD0rMkTY/HOT7qbDgVKV7H99bl4Q8Av4n+L5D04vi86pD0MULN9c/xEN8BPidp7xj/oHhfanw0Hnt3wvPxx0NpH7Qtdaj23no3QrX9vMT+u4Gb4v83Edp5NxAyxzfZ+kizD8SwTxMy4hVs3pdxEuHtdh2hA7/W+TuNUFt6klDju3qQ47+X0M+3Jp7j/4BXJ/znEd6o1sXz/4i6UaaJsFu09wN/AN5im/orLk/4bdZHkog/a2tprz93XZq+E6/xxCGu61GEt/iPEzq+HwHemvC/rO46n05ojlhFeLDNqvN7POr858HOVed2EmGU2hrg92w+WnKLfNbgmFv0WxJqV/+P8BKxkvDQOzj6zYy6txhlGv2PJwymeBr4WtSU7At5K6HDfi3hTfTS6H4MIf+tj9fxB7XrTqglLIjHHGyU84/iNVhDKKA7DnbdCE3pPyfkxX8QWlcGrkM81sqo5QESowOj/2yCgeghlMP6snxETON6wkP0iCHyQyfhwfo0jUeZFoFvR/8nCGW9lHgOPEzIo4/H4+xcl26r224e4pnzjgbhL0v4H0Io4z3EAX8Jv/PYfJTpPcSBa4nnyDVR6yPAKQm/IdMxjDKwtftRnyZL+M0hDFBcSSiTNwB7D3Lum6kbQMKmZvq1hJeX5GjdXWNeeoLw7Ly9pm0Y932zcwH/TKiJdRPKwivqdCxNHDsX07GKkAf/RmiuVfQ/kmD018UwvwdekjhWnmDcH45h7mDTs9TYNMp0JaGMbzGiOrnVTupkHEmfIgwVf8sQYY4iGOdZYyasiZD0DkLBffHWwjqOM/7I5ORmZ3MUJnu/i1CjcRzHcZ4BqX26TZt/+ii5HZGWpiwi6T2E5rzrzeyWtPU4juNkFW8ydRzHcRzG6ce9HcdxHKceN4iO4ziOwzgbVDNjxgybPXt22jIcx3EyxV133fWUmc3ceshsM64M4uzZs7nzzjvTluE4jpMpJG3LZw8zizeZOo7jOA5uEB3HcRwHcIPoOI7jOMA460N0HGd8US6X6erqore3d+uBHUqlErNmzaJYHHKFvpbFDaLjOC1LV1cXkyZNYvbs2UijsdJU62BmrFy5kq6uLubMmZO2nFTwJlPHcVqW3t5epk+f7sZwGEhi+vTp47o27TXEYWBmVA2qZlTNMAOL+xJ0FPOpFLhypcq63n7W9ZZZ19vP2vi7YWM/E9sLzJzUzsxJ7cyY2E6pmB+I19NX4ZFV3SxduYGlT21g6cpuessVdppcYpcdSgO/O+9QYtqENipVo1yp0l8Jv32VKtUq7NBRZHJHYci0b+yvsHztRpav62Vdbz/9FaO/WqVc2XTMvkqVjf1VessVNvZX2dhfYWO5StWMaRPamD6xnZkT25gxMaRlx8ntdLZ51nWGhxvD4TPer5U/VYbBhb9dzNd+/bdB/dsLufiw3vTQnjaxjWrV6O6rsKGvn56+Chv6KvT09SOJjmKejmKezrY8pbbwv5AX1arRXzWqVaNiRqUKff1V1vSUWdtTZk1i6ykPtc7y5kwuFZgxqZ3ujRWeWLv5G+DUziKdbQWWr+ulXNm2b9sWcmLqhDamdbYxbULY1m3sZ/naXp5c28vq7vI2HQ/C9Wwv5JDEmp4t4xdy4sr3vZCDd5+yzcd2HMcZDDeIw+CwvabzL8fuQ07hDUqCnEROUKnC6u4+nlq/kafW9/H4ml7+8ugaVm3oI58TE9oLdBTzTGjP09FWoLOYxzCe7inz+JoeesoVevqq9PT1U64ahZzIS+Tz4TeXE235HJM7iuzQUWD2jE4ml4rs0BG2SaUCk0qb/05oL7C+t58V63tZsS7oWrEu1NJKxTxzpk9gzxkTmD29kz2nTWCHztCBXq0aq7r7eGJNL0+s6eXxtb2s3tBHIR80FHKiWMhRzOfISTzd3cfq7j5Wbehj5frwu+iJtUxqL7D7tE7mzZ7KTpNCjXPHye1M7ihSzOUo5EUxLwoD/3OUCnnai5sMYY1ypcrqDX2siNf3gcfX8qXrH+CRVd1uEJ3MUVuINpfz3qpmxA3iMJg/Zxrz50xLW8YzYIdtCp3LaaCGe8Bu2xZ3tCjmc+w4ucSOk0sA7DVjAl+6/gF6t6F27DhpsnTpUo4//nhe+tKXctttt7FgwQLOPvtsbrrpJqZOncoXv/hFzj77bB555BEuuOACXvva17Jw4UJOPfVU+vr6qFarXHXVVey9994Nj3/iiSeybNkyent7OeusszjttNMAuOGGGzj33HOpVCrMmDGD3/zmN6xfv54PfvCD3HnnnUji05/+NP/0T/80lpejuam9sYyH7dBDDzUn2yxf22t7fuyX9j9/ejhtKU4GuP/++9OWYA8//LBJsttuu83MzAC77rrrzMzsxBNPtGOPPdb6+vpswYIFNnfuXDMzO+OMM+zyyy83M7ONGzdad3f3oMdfuXKlmZl1d3fb/vvvb0899ZQtX77cZs2aZUuWLNkszNlnn21nnXXWQNxVq1ZtcbxG1wy405rgGT7aW6o1REnHAd8A8sB3zOzLDcIcBVwAFIGnzOzIhF8euBN41MxePSainVQpFUNTU2+5mrISJ2t85hcLuf+xtSN6zP12ncynX7P/VsPtueeevOAFLwCgra2N4447DoADDzyQ9vZ2isUiBx54IEuXLgXg8MMP5wtf+AJdXV287nWvG7R2CPDNb36Tn/3sZwAsW7aMhx56iBUrVvCSl7xkYPrEtGmhheumm27iiiuuGIg7derUbU90C5NaQ3Y0ZhcBxwP7AW+StF9dmCnAt4HXmtn+wBvqDnMWsGgM5DpNQm20rDeZOlliwoQJA/+LxeJAP3kul6O9vX3gf39/PwCnnHIK1157LR0dHbziFa/gt7/9bcPj3nzzzdx0003cdttt3HvvvRxyyCH09vZiZg1HjA7m7gTSrCHOBxab2RIASVcAJwD3J8KcAlxtZo8AmNnymoekWcCrgC8A/zJWop10KeZz5HOit98NorNtDKcm1ywsWbKEvfbaizPPPJMlS5Zw3333cfTRR28Rbs2aNUydOpXOzk4eeOABbr/9diDUMD/wgQ/w8MMPM2fOHFatWsW0adN4+ctfzoUXXsgFF1wAwOrVq72WmCDNoU67AcsS+13RLck+wFRJN0u6S9LbEn4XAGcD3nY2zigVct5k6rQ0P/7xjznggAM4+OCDeeCBB3jb297WMNxxxx1Hf38/Bx10EJ/85CcHmmVnzpzJJZdcwute9zrmzp3LG9/4RgA+8YlPsHr1ag444ADmzp3L7373uzFLUxZQ6C9N4cTSG4BXmNm74/5bgflm9sFEmAuBecAxQAdwG6FWuA/wSjN7f+xj/MhgfYiSTgNOA9hjjz0O/cc/xsWyXi3NoZ/7NccdsDNfOOnAtKU4Tc6iRYvYd99905aRKRpdM0l3mdm8lCSNGWnWELuA3RP7s4DHGoS5wcw2mNlTwC3AXOBFwGslLQWuAI6WdHmjk5jZJWY2z8zmzZzZ8gs+jwtKxbzXEB3HGXHS7EO8A9hb0hzgUeBkQp9hkp8DF0oqAG3AYcDXzeynwL/BwCjUj5jZW8ZKuJMu7cWc9yE644qVK1dyzDHHbOH+m9/8hunTp6egqDVJzSCaWb+kM4AbCdMuLjWzhZJOj/4Xm9kiSTcA9xH6Cr9jZn9NS7PTHJQKeTb6KFNnHDF9+nQWLFiQtoyWJ9V5iGZ2HXBdndvFdfvnA+cPcYybgZtHQZ7TpJSKPqjGcZyRxz+o52SO0IfoNURneKQ1cDCLjPdr5QbRyRylYt77EJ1hUSqVWLly5bh/0A8Hs7BAcKlUSltKavjHvZ3M4U2mznCZNWsWXV1drFixIm0pmaBUKjFr1qy0ZaSGG0Qnc5QK3mTqDI9isTjwPU/H2RreZOpkjnafh+g4zijgBtHJHO2FnE+7cBxnxHGD6GQOH1TjOM5o4H2ITuYoFXOUK0alauRzrbeUTW+5wpqeMhs29tPdV6GnXAm/ff30lqv09VfZ2F9hY3+Vjf1hH2Bie4EJ7QUmtOcH/ncU8zRa7adq0NNXoafcz4aNFbr7Nv1Koi2fo5gXhXwu/C+ItnyeUjFHe2Hz31IxT6mYp7Mt/A52T8zCPespV1i2qoelKzeE7akNLF3ZzbJV3bQXcuw4qcTMye3MnNjOjpPb2XFSiYnt+bqjhXMU82JSqcjkjgKTSkUmlQpMbCuQa6DBzOirVHlyzUa6VnfT9XQPj67u4dGne3h8TQ/9FaOtkKM4kOZwDdriCiuFnMjnchTyGthvL+RoK4RrEX5z5CTW9pZ5ujtuPX2s6S6zrrefzvY8Uzvb4lZkyoTwW6ka6zf2s763n/Ub+1nXG7a+SnVAO0BtrGy1ajEfxPxQCb9mxsxJ7eyyQ4ldduhg1ynhd5cdSsya2klHW/11dJK4QXQyR3JNxAntrZWFe8sVXvCl3/B0dzltKc+YtkKOzrY8bfkc5UqVciUYonKlSqPZDzMntTN7eicvfNYM+ipVlq/tZdFja7l5bS8b+ra9JUCCzmKeqkHFjGrVqJg1PLcEO05qZ9cpHbTlc2zYGIxQud8oV4LB6a9WqVSN/qpRqcTfqg0Yq6GY2F5gh44iUzqLTGwvsHJ9H4uXr+fp7jLrN/Y3jJNTiDepVKStkGPAtGvTT04aMMBthRw7tBVpL4QGv+Vre3nwiXWsWL9xszR/8aQDOeWwPYZ/IcchrfU0ccYFpVjwW9EgrukJtYrXHbIbR+wzg45igc62UPvqaMvTUcwP1Ejai6Em05bPYTBQy1u/sZ8NcesZoq+1oy3PhLZQo+xsKzChrUCpLVzbcsUo9wcjVo61kVrNtLcca6jlKr39FXr6KvT2V+np66enr0p3uZ/evgp9lSrFfG5ga8uLYj5HezHHblM6mT2jkz2nT2DiEPdww8Z+lq/buNmo4uRDvq9SZV1vOdaoyqztCb8b+irkBLmcyCvU6HISxbzYcXKJWVM62G1qB7vs0EFb4Zn1HJnZgLGvXZu+/ir9VWOHjiKTo0EbjL7+Kk/39PF0d5l8TkxqLzCxVKvVb3/LR19/lSfX9vLE2l4ee7qHg3efst3HbHVa62nijAsGaoj9rTfStCfWiI7YZwYnHbJt88FCk2FxRHS0F4D2ETnUdjGhvcCcJn3pkURbIdTUnsm1aovNwztOGp2J8G2FHLtP62T3aZ2jcvxWxAfVOJkj2WTaanRHg9hR9L4exxlr3CA6maNU3NRk2mrUmjhLbhAdZ8xJ1SBKOk7Sg5IWSzpnkDBHSVogaaGk30e33SX9TtKi6H7W2Cp30qR9oIbYek2mNSPvNUTHGXtSa5yXlAcuAo4FuoA7JF1rZvcnwkwBvg0cZ2aPSNoxevUD/2pmd0uaBNwl6dfJuE7rUioEY9GKk/NrfYg+PN5xxp40a4jzgcVmtsTM+oArgBPqwpwCXG1mjwCY2fL4+7iZ3R3/rwMWAbuNmXInVQaaTFtwcn6tybTTDaLjjDlpGsTdgGWJ/S62NGr7AFMl3SzpLklvqz+IpNnAIcCfR0mn02SUWrjJtFZD9D5Exxl70hzP3GiiTf3U2QJwKHAM0AHcJul2M/sbgKSJwFXAh8xsbcOTSKcBpwHssYdPSm0FWnmUaY/3ITpOaqRZQ+wCdk/szwIeaxDmBjPbYGZPAbcAcwEkFQnG8AdmdvVgJzGzS8xsnpnNmzlz5ogmwEmHTaNMW7CGWPY+RMdJizQN4h3A3pLmSGoDTgaurQvzc+AISQVJncBhwCKFzzh8F1hkZv8xpqqd1KkNqmnJGmKtybTgBtFxxprUmkzNrF/SGcCNQB641MwWSjo9+l9sZosk3QDcB1SB75jZXyW9GHgr8BdJC+IhzzWz61JIijPGbPpSTesZxN5yhVIx1/Dj1I7jjC6pfhMpGrDr6twurts/Hzi/zu0PNO6DdMYB7YXWbTLt7qt4/6HjpIR/qcbJHLlc+H5kS85DLLtBdJy0cIPoZJJSIdeafYjlCiUfUOM4qeAG0ckkpWKejS242kWvN5k6Tmq4QXQySamYb9kaon+lxnHSwQ2ik0lKxVzLDqrxr9Q4Tjq4QXQySamYb9lpF95k6jjp4AbRySSlQus2mfpXahwnHdwgOpmkvUWbTHt8UI3jpMlHmJwAACAASURBVIYbRCeTtPKgGq8hOk46uEF0MkmrTrvwGqLjpIcbRCeTtOLE/HKlSn/V3CA6Tkq4QXQySSs2mfrST46TLm4QnUzSivMQe2tLP3kN0XFSIVWDKOk4SQ9KWizpnEHCHCVpgaSFkn6/LXGd1qU2D9HM0pYyYtRqiP6lGsdJh9SWf5KUBy4CjgW6gDskXWtm9yfCTAG+DRxnZo9I2nG4cZ3WplTMYwZ9lSrtLbKYbnesIXofouOkQ5o1xPnAYjNbYmZ9wBXACXVhTgGuNrNHAMxs+TbEdVqYVlwTsVZD9NUuHCcd0jSIuwHLEvtd0S3JPsBUSTdLukvS27YhrtPC1PrZWmlNxF6vITpOqqTWZErjFe/rO4QKwKHAMUAHcJuk24cZN5xEOg04DWCPPfZ4xmKd5qJmEFuxhugG0XHSIc0aYhewe2J/FvBYgzA3mNkGM3sKuAWYO8y4AJjZJWY2z8zmzZw5c8TEO+lSKsYm0xb6wLcPqnGcdEnTIN4B7C1pjqQ24GTg2rowPweOkFSQ1AkcBiwaZlynhSkVajXE1jGI3T7twnFSJbUmUzPrl3QGcCOQBy41s4WSTo/+F5vZIkk3APcBVeA7ZvZXgEZxU0mIkwqt2GTa6xPzHSdV0uxDxMyuA66rc7u4bv984PzhxHXGDwNNpi1UQ+zxQTWOkyr+pRonk2yqIbaQQSx7k6njpIkbRCeTDMxDbKEVL3rKFdoLOfK5RoOoHccZbdwgOpmkFWuIvX2+FqLjpIkbRCeTtMc+xFaamN/tayE6Tqq4QXQySSuOMu0pu0F0nDRxg+hkklach9hbrviAGsdJETeITiYp5kVOrfelGv9KjeOkhxtEJ5NICmsitlKTqQ+qcZxUcYPoZJZgEFunhtjd502mjpMmbhCdzFIq5Fqqhtjrg2ocJ1XcIDqZpVTMt1wfohtEx0kPN4hOZmkv5ltqHqL3ITpOurhBdDJLqdhqTaZVN4iOkyKpGkRJx0l6UNJiSec08D9K0hpJC+L2qYTfhyUtlPRXST+SVBpb9U7alAqtM6imv1Klr1L1JlPHSZHUDKKkPHARcDywH/AmSfs1CHqrmR0ct8/GuLsBZwLzzOwAwpqIJ4+RdKdJKBVzLdOHWFvpwg2i46RHmjXE+cBiM1tiZn3AFcAJ2xC/AHRIKgCdwGOjoNFpYlppHuLA0k/eZOo4qZGmQdwNWJbY74pu9Rwu6V5J10vaH8DMHgX+HXgEeBxYY2a/Gm3BTnPRSvMQe/uCYe/0GqLjpEaaBrHRom9Wt383sKeZzQW+BVwDIGkqoTY5B9gVmCDpLQ1PIp0m6U5Jd65YsWLExDvp00qDagaaTL2G6DipkaZB7AJ2T+zPoq7Z08zWmtn6+P86oChpBvAy4GEzW2FmZeBq4IWNTmJml5jZPDObN3PmzNFIh5MS7YXWmXbR3dcPeB+i46RJmgbxDmBvSXMktREGxVybDCBpZ0mK/+cT9K4kNJW+QFJn9D8GWDSm6p3UaaWJ+QN9iG4QHSc1Cmmd2Mz6JZ0B3EgYJXqpmS2UdHr0vxh4PfA+Sf1AD3CymRnwZ0lXEppU+4F7gEvSSIeTHqVijnLFqFSNfK5RC3x26PUmU8dJndQMIgw0g15X53Zx4v+FwIWDxP008OlRFeg0NZsWCa4woT3VrLzd9NQG1bhBdJzU8C/VOJmlVAjZtxVGmvo8RMdJHzeITmYZqCH2Z3+kaU8cVON9iI6THm4QncySbDLNOj7twnHSxw2ik1lKxZB9N7bAXMRaH6I3mTpOerhBdDJL+0CTaWvUENsKucyPlnWcLOMG0ckspULrNJn2+uLAjpM6bhCdzNJKTabdff1uEB0nZdwgOpmltQbV+OLAjpM2bhCdzFJqpT7EvopPuXCclHGD6GSWWpNpK6x40Vuu+FdqHCdl3CA6maWVBtX0+KAax0kdN4hOZtnUh5j9GmK3N5k6Tuq4QXQyS3sLfcu0t1zxQTWOkzKpGkRJx0l6UNJiSec08D9K0hpJC+L2qYTfFElXSnpA0iJJh4+teidtcjnRVsi1zKCajqK/nzpOmqS2Zo6kPHARcCzQBdwh6Vozu78u6K1m9uoGh/gGcIOZvT4uMNw5uoqdZqRUyLXEPMSecoXOtmwvYeU4WSfNV9L5wGIzW2JmfcAVwAnDiShpMvAS4LsAZtZnZk+PmlKnaSkV8y3RZNpT9j5Ex0mbNA3ibsCyxH5XdKvncEn3Srpe0v7RbS9gBfA9SfdI+o6kCaOs12lCWsEgVqpGX3/VR5k6TsqkaRAbfcXY6vbvBvY0s7nAt4BronsBeB7wn2Z2CLAB2KIPEkDSaZLulHTnihUrRka50zSUirnMjzLdtPST9yE6TpqkWQK7gN0T+7OAx5IBzGytma2P/68DipJmxLhdZvbnGPRKgoHcAjO7xMzmmdm8mTNnjnQanJQpFfOZH1TT0xcNotcQHSdV0jSIdwB7S5oTB8WcDFybDCBpZ0mK/+cT9K40syeAZZKeE4MeA9QPxnHGAe2FXOabTHsHaog+qMZx0iS1Emhm/ZLOAG4E8sClZrZQ0unR/2Lg9cD7JPUDPcDJZlZrVv0g8INoTJcAp455IpzUKRXzrOvtT1vGdjHQZOo1RMdJlVRfSWMz6HV1bhcn/l8IXDhI3AXAvFEV6DQ97YU8K8ob05axXXT3eR+i4zQDXgKdTFMq5tjYn/FBNdEg+rQLx0kXN4hOpmmFaRe93mTqOE2BG0Qn04RpF9k2iLU+RP9SjeOkixtEJ9OUCvnsz0P0aReO0xS4QXQyTW0e4qbBx9mjO9YQSz6oxnFSxUugk2lKxRxm0FfJbi2x12uIjtMUuEF0Mk0rLBLs8xAdpzlwg+hkmvZoRDZmeGBNT7lCWz5HIe/F0XHSxEugk2lKhZCFM11D7KtQ8sWBHSd1vBQ6mWagyTTDH/ju6avQ0ebNpY6TNm4QnUyzqQ8xwwaxXPH+Q8dpAtwgOpmm1tSY6SbTcsU/2+Y4TYAbRCfTtEINsbdcodObTB0ndVI1iJKOk/SgpMWStljxXtJRktZIWhC3T9X55yXdI+mXY6faaSZKhewbRO9DdJzmILWPJ0rKAxcBxwJdwB2SrjWz+oV+bzWzVw9ymLOARcDk0VPqNDMDTaYZXvGiu6/ClM5i2jIcZ9yTZg1xPrDYzJaYWR9wBXDCcCNLmgW8CvjOKOlzMkCrNJl6H6LjpE+aBnE3YFlivyu61XO4pHslXS9p/4T7BcDZQHarBs520x5riFmfmO+jTB0nfdI0iGrgVv+F5ruBPc1sLvAt4BoASa8GlpvZXVs9iXSapDsl3blixYrt1ew0Ga3y6TYfVOM46ZOmQewCdk/szwIeSwYws7Vmtj7+vw4oSpoBvAh4raSlhKbWoyVd3ugkZnaJmc0zs3kzZ84chWQ4adIqg2pKbhAdJ3XSNIh3AHtLmiOpDTgZuDYZQNLOkhT/zyfoXWlm/2Zms8xsdoz3WzN7y9jKd5qBYl7klN0v1VSrxsb+qjeZOk4TkNooUzPrl3QGcCOQBy41s4WSTo/+FwOvB94nqR/oAU62LC9854w4ksKaiBltMvWVLhyneUjNIMJAM+h1dW4XJ/5fCFy4lWPcDNw8CvKcjBAMYjZriAMG0ZtMHSd1/Es1TuYpFXLZrSH64sCO0zS4QXQyT6mYz2wfYq/XEB2naXCD6GSe9mI+s/MQvQ/RcZoHN4hO5ikVs9tk2u1Npo7TNLhBdDJPqZBnY0abTGs1RJ+H6Djp4wbRyTxZriH2xhqif6nGcdLHDaKTeVpi2oU3mTpO6rhBdDJPlkeZukF0nObBDaKTebLcZFqbh+h9iI6TPm4QnczTXshwk6mPMnWcpsENopN5SsU8G7NaQyxXKOZFMe9F0XHSxkuhk3lKxRx9lSqVava++95Trgys6eg4TrqkahAlHSfpQUmLJZ3TwP8oSWskLYjbp6L77pJ+J2mRpIWSzhp79U6zUDMoWZyL2FuueHOp4zQJqa12ISkPXAQcS1gs+A5J15rZ/XVBbzWzV9e59QP/amZ3S5oE3CXp1w3iOuOAUiG81/WWq3S2pSxmG+nuq/h3TB2nSUizhjgfWGxmS8ysj7Dy/QnDiWhmj5vZ3fH/OmARsNuoKXWamvZYw8riwJqePq8hOk6zkKZB3A1YltjvorFRO1zSvZKul7R/vaek2cAhwJ9HQ6TT/JSKtRpiBg1i2WuIjtMspLlAsBq41Y+KuBvY08zWS3olcA2w98ABpInAVcCHzGxtw5NIpwGnAeyxxx4jodtpMkqFWg0xeyNNvQ/RcZqHNGuIXcDuif1ZwGPJAGa21szWx//XAUVJMwAkFQnG8AdmdvVgJzGzS8xsnpnNmzlz5kinwWkCaoNqsvi1mh43iI7TNKRpEO8A9pY0R1IbcDJwbTKApJ0lKf6fT9C7Mrp9F1hkZv8xxrqdJqM9w02m3X0V/0qN4zQJqTWZmlm/pDOAG4E8cKmZLZR0evS/GHg98D5J/UAPcLKZmaQXA28F/iJpQTzkubEW6YwzBqZdZLHJ1AfVOE7TkGYfYq0Z9Lo6t4sT/y8ELmwQ7w807oN0xiGb+hCzV0PsKVd86SfHaRL8SzVO5hkYZep9iI7jbAduEJ3MMzCoJmNNptWq0Vuu+qfbHKdJcIPoZJ5SRifm12q0Pg/RcZoDN4hO5tk0MT9bNURf+slxmgs3iE7myeqgmp6y1xAdp5lwg+hknlxOtOVzmRtUUzPgXkN0nObADaLTErQXc5mbh9jTF/S6QXSc5sANotMSlIr5zDWZdvf1A95k6jjNghtEpyUoFXOZM4i1PkSfduE4zYEbRKclKBXymRtlWjPg/qUax2kO3CA6LUGpmM/coJoeH1TjOE2FG0SnJchkk2ltUI3XEB2nKXCD6LQEYVBNtppMa4NqvA/RcZqDVA2ipOMkPShpsaRzGvgfJWmNpAVx+9Rw4zrji/ZC9kaZ+jxEx2kuUlv+SVIeuAg4FugC7pB0rZndXxf0VjN79TOM64wTSsUcG/uzVUPsKVco5ERbwRtqHKcZSLMkzgcWm9kSM+sDrgBOGIO4TguSxXmIPX1Vrx06ThORpkHcDViW2O+KbvUcLuleSddL2n8b4zrjhEwOqilXKPmAGsdpGlJrMqXxivdWt383sKeZrZf0SuAaYO9hxg0nkU4DTgPYY489nrlap6nJ4jzEnr5+ryE6ThORZg2xC9g9sT8LeCwZwMzWmtn6+P86oChpxnDiJo5xiZnNM7N5M2fOHEn9ThNRm4do1vC9qCnpKVfcIDpOE5GmQbwD2FvSHEltwMnAtckAknaWpPh/PkHvyuHEdcYXpWIOM+irZKeW2FOu+hxEx2kiUmsyNbN+SWcANwJ54FIzWyjp9Oh/MfB64H2S+oEe4GQLVYCGcVNJiNMU1Oby9ZartBeyYWR6+7yG6DjNRJp9iLVm0Ovq3C5O/L8QuHC4cZ3xS3s0LBvLFegopqxmePSUK8yc1J62DMdxIj4BymkJSnEuX5YG1nT7oBrHaSrcIDotwUCTaYY+8N1brvpn2xyniXCD6LQEm/oQs2MQe8oVX/rJcZoIN4hOS1AqZq/JtKev4qNMHaeJcIPotARZqyGaWfhSjTeZOk7T4AbRaQlKhWwZxFpN1gfVOE7z4AbRaQlqTaZZWfGiZ2DpJy+CjtMseGl0WoKsNZnWDGJnW6pTgR3HSeAG0WkJ2muDarJSQ+wLBtFXu3Cc5sENotMSlJJfqskAvQNNpm4QHadZ8PYapyUYi0E1veUKT3eXqZhhZiQX1ggfFq/Q01elu6+fnnKF3nKF7r4K5UqVfC5HISfyOVHMi4ef6gbcIDpOM+EG0WkJinlRyIl//9XfuOCmh8hJSJCTyAnyOVHI58JvNEyF6NZeyFEq5ikVc7QXwm9OYk1PmdXdfazeUGbVhr6Bfr+RZMakthE/puM4zww3iE5LIIn/eOPBLH5yHRUzqgbVWIurVG1g668alWo1/hrlSpWN5Sq9/RU2lqus6SmzsVylUjV26Cyy46QSz9lpMtMmFJnS2caUziLFXOxp0KaVqiXRVsjRWczT0ZanVMzT2Zano5inWMhRjefur2w6d6mY49k7TkrtmjmOszmpGkRJxwHfICzh9B0z+/Ig4Z4P3A680cyujG4fBt4NGPAX4FQz6x0T4U5T8tq5u6YtwXGcDJPaoBpJeeAi4HhgP+BNkvYbJNxXCGsf1tx2A84E5pnZAQSDevJY6HYcx3FakzRHmc4HFpvZEjPrA64ATmgQ7oPAVcDyOvcC0CGpAHQCj42mWMdxHKe1SdMg7gYsS+x3RbcBYk3wJODipLuZPQr8O/AI8Diwxsx+NapqHcdxnJYmTYOoBm5Wt38B8DEz22x4n6SphNrkHGBXYIKktzQ8iXSapDsl3blixYoRkO04juO0ImkOqukCdk/sz2LLZs95wBWSAGYAr5TUDxSBh81sBYCkq4EXApfXn8TMLgEuAZg3b169wXUcx3EcIF2DeAewt6Q5wKOEQTGnJAOY2Zzaf0mXAb80s2skHQa8QFIn0AMcA9w5VsIdx3Gc1iM1g2hm/ZLOIIwezQOXmtlCSadH/4uHiPtnSVcCdwP9wD3EWqDjOI7jPBNkNn5aESWtAP6Rto46ZgBPpS1imGRJK2RP70iRpXRnSStkS+9Iat3TzGaO0LGalnFlEJsRSXea2by0dQyHLGmF7OkdKbKU7ixphWzpzZLWZsFXu3Acx3Ec3CA6juM4DuAGsRnI0mCgLGmF7OkdKbKU7ixphWzpzZLWpsD7EB3HcRwHryE6juM4DuAG0WmA4qeBHGe84mVgfOIGcRRR4FWSdkxby9aIWj8saZZlpB1d0rMkdaStY6yJS6Jl4qHtZWB0Ga9lYLRwgzhKSDoRWAScAXxX0v4pSxoUSW8DfgccAqxt9getpDdLWgicD1wVlwBreSS9Q9I9wFlpaxkOXgZGj/FaBkYbN4ijgKTpwDuBU83seMLHyPeLfk1V0CS9CLgM+IiZvc3M1tbejptNK4CkE4D3Au8ys9cR1sJ8T/Rr2fws6bnA+4FfAi+RtJeZWbOm2cvA6DFey8BY4BdvhJA0KbHbB0wEdo77VWAXSbuMubAG1JrcAMzsj8CfgX2j3zmSXiNpYrM0G0mamNi9F3i7md0e978JnAhgZtWx1jaaJPOUmT0AvA34OnA/odbVVGn2MjB6jNcyMNa4QRwBJJ0D3CPpq5LeYmbrCEtRnSJpOWEh44OAzwEvS1Eqkj4LfEpS8ruEpwPfl7QAmAJ8EDg/1kpSRdLZwM2Szpf0JjNbyubfo90L+FMq4kaRRJ76iqR3ROcHzWwV8DPgWZJeEsOmXo69DIwe47UMpIG3O28nko4GXgkcC8wGfijpXjO7VNJqoMvMPhzfnj8FPAv4dQo624F/Ad5OWCXkEOBXAGZ2r8LKI382s7vig+K/gT2BB8Zaa9Q7HfgaoTno3cCzgY9KusXMHpVUNLMyoQZybxoaR4tB8tTdZnZfDLKI0N/1XuAWM6tKytcvpJ2yXi8D26933JaBtEj9zbIFKAL3mNnDZvY74BvAV6PfKqAiaWp8YxYhc6dBmdD/tB9wO/BShbUoATCzb5vZXfH/CoL2aWkIjWwAfmVm/2xmC4DfAH8hLCRNfBAAHAjcKmkfSefFh0jWaZSnvpTw3wBcCayX9DlJXyUYorTwMjA6jOcykApuELefTmC6pBKAmX0Z2FnSa4AngJ0ITS9fI7xB/18aImPfwt/MbAPwY0Khmh/fmgcGD0iaFrUeRFjEORXMrBf4RcKpHzgYeLzmIGkPwgPrM8AVwFNmtnIsdY4SjfLULpLeEPcN6CU8CN8HrDCzv6clFi8Do6V3PJeBVHCDOEwk7ZD4P3DdzOxnhCagVyeCnw+cbWYPAucBjwLrgRea2R9S1Lox/i4F/gAcCTw3ull8W/4x4Y3/SDNbPNpat6J3XSLYdGC5mT2ScGsnXPvlwIvM7MLR1jqSDDaCcZA89VVCc1+NLwELgT3M7PxRE5lgG/WmXQYG09qsZWAwvS1dBpoOM/NtiA04GlgA/BA4N+GeB9rj/5OBW4DZcX8P4NvAhLivJtCar/2Pv5OBbwGnAG8FXhPdpzfJta3X+2LgB/H/K4CXEB5au6SdR55Buk8Avg8cXOeureSpi4BJcb+UAb1plIGhtObq8lQzlIFt0dsyZaBZNx9UMwRxqPO5hJFx/0cYhdZpZp+wMIChImkvwhvlfsAnFCZOvwZYaqFpBos5OGWtRK2rgKfNbK2khwgP2ZXAmVHrmDS3bKteQuFvk/SfhKascyz0oTze8ARNiqSXEtJcBg6X9A8zWy1JMZ9s3EqeWgcDzWlZ0DuWZWBrWq3JysA26aVFykBTk7ZFbtaN0Jy8M/A9YK/othfwELBv3D8XWAEcAewAvIjwtvfRJtX6OHA84e3zucASEjWzJtX7qrj/A8LQ/bPSzhvbmfbZMe1HEyaDH1l3Xc5phjyVRb3D1NoUZWAb9bZUGWjmzWuICSS9H3jSzK6yMJTdgJmECcaY2RJJPyMMHX8TsBbYx8xWx0P8UdLtNgbD35+h1v1qWiUtBQ60+Abf7HqBHwEfMLOnx0LvSJFMd+wnWhbzxxOSXgEcKWmxmT1KeDiuIaU8lTW9z1BrU5SBZ6KXjJaBTJG2RW6GDZgEXAw8Sej4LyT8vgp8N7GfJ7ylPafObaz6SLZXa2EsdI6g3mLa+WMk001486+tQzqXMHn9pAbxxyxPZU3vCGhtijKwDXozWQayuPkoUwZGcv3ezHYizFO6KOH9WeB5kl4pqd3CG90viHOpYnt/xWLOzYDW/rHQOYJ6y1scNAMMke5a/xBmdi9hWP+Bko5W+NrLmOeprOkdAa3NUgaGqzeTZSCLaAzLXFOQ6LDebF/SBDPbIGln4G/AoWb2UAxzMuFLHA8T+h5OBI41sydda3b1jhTbmm6FlQkqMcyOwJ1AB3CZmX20/njjWW+WtGZRr7M549Eg1j531MgvZ6F/68vA4WZ2ZMLvuYTh2TOBz1to53etGdY7UmxHuicA3yU0qb3bzMZktGCW9GZJaxb1OpszbgyipBcQPtj7D8LoxiVmVlH46r3FjJqz+LV4SY8AbyTUXPY0sz+P1dtalrRmUe9IsR3pXkKYUH+HpB3NbLnrza7WLOp1GjMu+hAlHUCYgPtLwhcdTiMspYOFvo+qwry4HRLRvgL8kTDZuPZJqrEwhpnRmkW9I8V2pvtWYj/pGD6wM6M3S1qzqNcZAmuCkT2jvRG+FP+/8f8Ewnf/bmLTHLjPATcAR8T94wlfuP93xniEV5a0ZlHveE13lvRmSWsW9fo2+NaSNURJR0o6LOF0B7C7pGdbmHNUJXz54e2x7f5ZhPk9t8bw/yAM7PiIjfIIryxpzaLekSJr6c6S3ixpzaJeZ/i01MR8hfXWvg8cBVwj6SELC6r+nfB5sEslrSKk+3JgHtBjZqfE+HkLTRz3u9Zs6x0pspbuLOnNktYs6nW2nZYaVKOwjMt7CB3VLyR8CeK/Ev4HAXPM7OeS5gGfM7Pjo99Ah7drzb7ekSJr6c6S3ixpzaJeZ9vJfA1R0tsITRD3mtnTkr5DaLKYAbxY0j5m9jcACyuO11YdPxq4vTa6cSwya5a0ZlHvSJG1dGdJb5a0ZlGvs31ksoYoSYRv/f2QkDn/TujMPsvMnoph9gbeDvSa2ecTcQ8FvgZUgNNslBdWzZLWLOodKbKW7izpzZLWLOp1Ro7MDaqJ7fBGmMD6qJkdA7yfsETKQPOFhS+h3AXsKunZkjqi11Lg02Z2zBg8CDKjNYt6R4qspTtLerOkNYt6nZElM02mCp84+iyQl3QdYXHPCoCZ9Us6E3hM0pFm9vvo/jNJ+xKGPE+UdLSFDu3fu9bs6h0pspbuLOnNktYs6nVGh0zUECUdSXgbmwosZtOimi+VNB8GJnZ/FjgvEe8NwMeB3wEH2diMnMuM1izqHSmylu4s6c2S1izqdUYRa4LJkFvbCIuPvjWx/23gfcA7gLuiW23R2Z8QRnrV4h3hWltH73hNd5b0ZklrFvX6NnpbJmqIhLe3nyh8FxDCJ4/2MLPLCE0cH7QwimsW4cvxDwOY2a22aTKsa20NvSNF1tKdJb1Z0ppFvc4okQmDaGbdZrbRNq3CfSywIv4/FdhX0i8JK0rfnYbGGlnSCtnTO1JkLd1Z0pslrZA9vc7okZlBNRBGgAEG7ARcG53XAecCBwAPW5MsHZQlrZA9vSNF1tKdJb1Z0grZ0+uMPJmoISaoAkXgKeCg+Nb2SaBqZn9ossyaJa2QPb0jRdbSnSW9WdIK2dPrjDCZm5ivsO7Yn+L2PTP7bsqSBiVLWiF7ekeKrKU7S3qzpBWyp9cZWbJoEGcBbwX+w8w2pq1nKLKkFbKnd6TIWrqzpDdLWiF7ep2RJXMG0XEcx3FGg6z1ITqO4zjOqOAG0XEcx3Fwg+g4juM4gBtEx3EcxwHcIDqO4zgO4AbRcbYLSedJ+sgQ/idK2m8Yx9ksnKTPSnrZSOl0HGfruEF0nNHlRGCrBrE+nJl9ysxuGjVVjuNsgRtEx9lGJH1c0oOSbgKeE93eI+kOSfdKukpSp6QXAq8Fzpe0QNKz4naDpLsk3SrpuYOEu0zS6+Oxl0r6oqTbJN0p6XmSbpT0d0mnJ3R9NGq4T9JnUrg0jpNpMvVxb8dJG0mHAicDhxDKz92E5YOuNrP/jmE+D7zLzL4l6Vrgl2Z2ZfT7DXC6mT0k6TDg22Z2dINw9adeZmaHS/o6cBnwIqAELAQulvRyYG9gPiDgWkkvMbNbRu1iOE6L4QbRcbaNI4CfmVk3QDRkAAdEQzgFmAjcWB9R0kTghcBPEwavfZjnrZ3nL8BEM1sHrJPUK2kK8PK43RPDTSQYSDeIjjNM3CA6zrbT6HuHlwEnmtm9kt4BHNUgO+fhBAAAAOlJREFUTA542swOfgbnrH1Xs5r4X9svEGqFXzKz/3oGx3YcB+9DdJxt5RbgJEkdkiYBr4nuk4DHJRWBNyfCr4t+mNla4GFJbwBQYG59uGfIjcA7Yy0USbtJ2nE7juc44w43iI6zDZjZ3cCPgQXAVcCt0euTwJ+BXwMPJKJcAXxU0j2SnkUwlu+SdC+h/++EQcJtq65fAT8EbpP0F+BKts/AOs64w1e7cBzHcRy8hug4juM4gBtEx3EcxwHcIDqO4zgO4AbRcRzHcQA3iI7jOI4DuEF0HMdxHMANouM4juMAbhAdx3EcB4D/D2mBpWiwv0NgAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "text/plain": [ "''" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result.plot()" ] }, { "attachments": {}, "cell_type": "markdown", "id": "alone-array", "metadata": { "pycharm": { "name": "#%% md\n" } }, "source": [ "### Export results to DataFrame\n", "The to_df() method will export results to a DataFrame.\n", "Note that the format of the DataFrame depends on the specific analysis and that not all of the results can be represented as a data frame." ] }, { "cell_type": "code", "execution_count": 8, "id": "improved-carroll", "metadata": { "ExecuteTime": { "end_time": "2021-03-18T10:00:44.400481Z", "start_time": "2021-03-18T10:00:44.261231Z" }, "pycharm": { "name": "#%%\n" } }, "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", "
timestampsrms_accpeak_accpeak2peak_accvariance_acccrest_factor_accutilization_accdc_component_accdatetime
015701868600.6470862.6865635.3132930.4187204.1517861-0.1402372019-10-04 13:01:00+02:00
115702732600.6471232.6917505.3670040.4187694.1595631-0.1404202019-10-05 13:01:00+02:00
215703596600.6466192.7152515.4148560.4181164.1991521-0.1402392019-10-06 13:01:00+02:00
315704460600.6468732.6851475.3515620.4184454.1509661-0.1403472019-10-07 13:01:00+02:00
415705324600.6466432.7266055.3953250.4181474.2165561-0.1404232019-10-08 13:01:00+02:00
515706188600.6467172.6970015.3109740.4182434.1702941-0.1400552019-10-09 13:01:00+02:00
615707052600.6470932.7117335.3146970.4187294.1906401-0.1405052019-10-10 13:01:00+02:00
715707916600.6474222.6812565.3259280.4191554.1414351-0.1403632019-10-11 13:01:00+02:00
815708780600.6468902.6673795.2713620.4184674.1233871-0.1405242019-10-12 13:01:00+02:00
915709644600.6476942.6787555.3791500.4195074.1692471-0.1404862019-10-13 13:01:00+02:00
1015710508600.6470812.7229795.4998780.4187144.2914241-0.1398502019-10-14 13:01:00+02:00
1115711372600.6472052.6827365.2990720.4188744.1451101-0.1403172019-10-15 13:01:00+02:00
1215712236600.6467432.6827855.2785640.4182764.1481481-0.1403652019-10-16 13:01:00+02:00
1315713100600.6473222.7007985.4246220.4190264.2078341-0.1403122019-10-17 13:01:00+02:00
1415713964600.6474342.7210025.3746340.4191704.2027501-0.1400692019-10-18 13:01:00+02:00
1515714828600.6476212.7381825.3666990.4194134.2280601-0.1404032019-10-19 13:01:00+02:00
1615715692600.6471112.6924405.3626100.4187534.1607061-0.1400712019-10-20 13:01:00+02:00
1715716556600.4848922.3720104.6079710.2351204.8918311-0.1144422019-10-21 13:01:00+02:00
1815717420600.4848412.2734284.5543820.2350714.7045421-0.1147362019-10-22 13:01:00+02:00
1915718284600.4847522.3565624.6644900.2349844.8613791-0.1149242019-10-23 13:01:00+02:00
2015719148600.4845642.3674714.7015990.2348024.8857791-0.1148462019-10-24 13:01:00+02:00
2115720012600.4850012.2605604.6527710.2352264.9323841-0.1146242019-10-25 13:01:00+02:00
2215720876600.4850132.3019634.5919800.2352374.7461921-0.1145862019-10-26 13:01:00+02:00
2315721776600.4852542.2608584.6187740.2354724.8591341-0.1148622019-10-27 13:01:00+01:00
2415722640600.4851572.3365254.5844120.2353774.8160211-0.1145402019-10-28 13:01:00+01:00
2515723504600.6278953.0371075.6010130.3942524.8369691-0.1099212019-10-29 13:01:00+01:00
2615724368600.6281393.0697905.7208860.3945594.8871191-0.1100742019-10-30 13:01:00+01:00
2715725232600.6283083.1035015.7542720.3947714.9394561-0.1096042019-10-31 13:01:00+01:00
2815726096600.6280203.0326685.6945190.3944094.8289381-0.1098782019-11-01 13:01:00+01:00
2915726960600.6280192.9693185.6492920.3944084.7280681-0.1091492019-11-02 13:01:00+01:00
3015727824600.6282833.0297165.6754760.3947404.8222141-0.1097942019-11-03 13:01:00+01:00
3115728688600.6281523.1360875.7117920.3945754.9925591-0.1096592019-11-04 13:01:00+01:00
3215729552600.6279663.1233635.7236330.3943414.9737801-0.1095082019-11-05 13:01:00+01:00
3315730416600.6277353.0473855.6548460.3940524.8545701-0.1101912019-11-06 13:01:00+01:00
3415731280600.6278703.1346215.7963870.3942214.9924681-0.1095972019-11-07 13:01:00+01:00
3515732144600.6286813.0981285.6952510.3952394.9279841-0.1097862019-11-08 13:01:00+01:00
3615733008600.6281273.0693875.6915280.3945434.8865711-0.1096702019-11-09 13:01:00+01:00
3715733872600.6281222.9617985.5751950.3945374.7153241-0.1100522019-11-10 13:01:00+01:00
3815734736600.6277803.0721265.6965330.3941084.8936361-0.1096632019-11-11 13:01:00+01:00
3915735600600.6278463.0116505.7168580.3941914.7967951-0.1096112019-11-12 13:01:00+01:00
4015736464600.6285362.9784425.5527950.3950584.7386961-0.1098512019-11-13 13:01:00+01:00
4115737328600.6283973.1067785.7055660.3948834.9439721-0.1093412019-11-14 13:01:00+01:00
4215738192600.6283073.0939435.6831050.3947694.9242571-0.1092632019-11-15 13:01:00+01:00
4315739056600.6281422.9965285.5899050.3945634.7704601-0.1099922019-11-16 13:01:00+01:00
4415739920600.6285403.0126805.6024170.3950634.7931371-0.1100922019-11-17 13:01:00+01:00
4515740784600.6281183.1039215.7175900.3945324.9416231-0.1096582019-11-18 13:01:00+01:00
4615741648600.6284293.0582885.5902710.3949224.8665641-0.1093742019-11-19 13:01:00+01:00
4715742512600.6284413.0854655.7672730.3949384.9097151-0.1092692019-11-20 13:01:00+01:00
4815743376600.6286013.0495715.6591800.3951394.8513661-0.1090812019-11-21 13:01:00+01:00
4915744240600.6279633.0880685.7773440.3943374.9175961-0.1090652019-11-22 13:01:00+01:00
\n", "
" ], "text/plain": [ " timestamps rms_acc peak_acc peak2peak_acc variance_acc \\\n", "0 1570186860 0.647086 2.686563 5.313293 0.418720 \n", "1 1570273260 0.647123 2.691750 5.367004 0.418769 \n", "2 1570359660 0.646619 2.715251 5.414856 0.418116 \n", "3 1570446060 0.646873 2.685147 5.351562 0.418445 \n", "4 1570532460 0.646643 2.726605 5.395325 0.418147 \n", "5 1570618860 0.646717 2.697001 5.310974 0.418243 \n", "6 1570705260 0.647093 2.711733 5.314697 0.418729 \n", "7 1570791660 0.647422 2.681256 5.325928 0.419155 \n", "8 1570878060 0.646890 2.667379 5.271362 0.418467 \n", "9 1570964460 0.647694 2.678755 5.379150 0.419507 \n", "10 1571050860 0.647081 2.722979 5.499878 0.418714 \n", "11 1571137260 0.647205 2.682736 5.299072 0.418874 \n", "12 1571223660 0.646743 2.682785 5.278564 0.418276 \n", "13 1571310060 0.647322 2.700798 5.424622 0.419026 \n", "14 1571396460 0.647434 2.721002 5.374634 0.419170 \n", "15 1571482860 0.647621 2.738182 5.366699 0.419413 \n", "16 1571569260 0.647111 2.692440 5.362610 0.418753 \n", "17 1571655660 0.484892 2.372010 4.607971 0.235120 \n", "18 1571742060 0.484841 2.273428 4.554382 0.235071 \n", "19 1571828460 0.484752 2.356562 4.664490 0.234984 \n", "20 1571914860 0.484564 2.367471 4.701599 0.234802 \n", "21 1572001260 0.485001 2.260560 4.652771 0.235226 \n", "22 1572087660 0.485013 2.301963 4.591980 0.235237 \n", "23 1572177660 0.485254 2.260858 4.618774 0.235472 \n", "24 1572264060 0.485157 2.336525 4.584412 0.235377 \n", "25 1572350460 0.627895 3.037107 5.601013 0.394252 \n", "26 1572436860 0.628139 3.069790 5.720886 0.394559 \n", "27 1572523260 0.628308 3.103501 5.754272 0.394771 \n", "28 1572609660 0.628020 3.032668 5.694519 0.394409 \n", "29 1572696060 0.628019 2.969318 5.649292 0.394408 \n", "30 1572782460 0.628283 3.029716 5.675476 0.394740 \n", "31 1572868860 0.628152 3.136087 5.711792 0.394575 \n", "32 1572955260 0.627966 3.123363 5.723633 0.394341 \n", "33 1573041660 0.627735 3.047385 5.654846 0.394052 \n", "34 1573128060 0.627870 3.134621 5.796387 0.394221 \n", "35 1573214460 0.628681 3.098128 5.695251 0.395239 \n", "36 1573300860 0.628127 3.069387 5.691528 0.394543 \n", "37 1573387260 0.628122 2.961798 5.575195 0.394537 \n", "38 1573473660 0.627780 3.072126 5.696533 0.394108 \n", "39 1573560060 0.627846 3.011650 5.716858 0.394191 \n", "40 1573646460 0.628536 2.978442 5.552795 0.395058 \n", "41 1573732860 0.628397 3.106778 5.705566 0.394883 \n", "42 1573819260 0.628307 3.093943 5.683105 0.394769 \n", "43 1573905660 0.628142 2.996528 5.589905 0.394563 \n", "44 1573992060 0.628540 3.012680 5.602417 0.395063 \n", "45 1574078460 0.628118 3.103921 5.717590 0.394532 \n", "46 1574164860 0.628429 3.058288 5.590271 0.394922 \n", "47 1574251260 0.628441 3.085465 5.767273 0.394938 \n", "48 1574337660 0.628601 3.049571 5.659180 0.395139 \n", "49 1574424060 0.627963 3.088068 5.777344 0.394337 \n", "\n", " crest_factor_acc utilization_acc dc_component_acc \\\n", "0 4.151786 1 -0.140237 \n", "1 4.159563 1 -0.140420 \n", "2 4.199152 1 -0.140239 \n", "3 4.150966 1 -0.140347 \n", "4 4.216556 1 -0.140423 \n", "5 4.170294 1 -0.140055 \n", "6 4.190640 1 -0.140505 \n", "7 4.141435 1 -0.140363 \n", "8 4.123387 1 -0.140524 \n", "9 4.169247 1 -0.140486 \n", "10 4.291424 1 -0.139850 \n", "11 4.145110 1 -0.140317 \n", "12 4.148148 1 -0.140365 \n", "13 4.207834 1 -0.140312 \n", "14 4.202750 1 -0.140069 \n", "15 4.228060 1 -0.140403 \n", "16 4.160706 1 -0.140071 \n", "17 4.891831 1 -0.114442 \n", "18 4.704542 1 -0.114736 \n", "19 4.861379 1 -0.114924 \n", "20 4.885779 1 -0.114846 \n", "21 4.932384 1 -0.114624 \n", "22 4.746192 1 -0.114586 \n", "23 4.859134 1 -0.114862 \n", "24 4.816021 1 -0.114540 \n", "25 4.836969 1 -0.109921 \n", "26 4.887119 1 -0.110074 \n", "27 4.939456 1 -0.109604 \n", "28 4.828938 1 -0.109878 \n", "29 4.728068 1 -0.109149 \n", "30 4.822214 1 -0.109794 \n", "31 4.992559 1 -0.109659 \n", "32 4.973780 1 -0.109508 \n", "33 4.854570 1 -0.110191 \n", "34 4.992468 1 -0.109597 \n", "35 4.927984 1 -0.109786 \n", "36 4.886571 1 -0.109670 \n", "37 4.715324 1 -0.110052 \n", "38 4.893636 1 -0.109663 \n", "39 4.796795 1 -0.109611 \n", "40 4.738696 1 -0.109851 \n", "41 4.943972 1 -0.109341 \n", "42 4.924257 1 -0.109263 \n", "43 4.770460 1 -0.109992 \n", "44 4.793137 1 -0.110092 \n", "45 4.941623 1 -0.109658 \n", "46 4.866564 1 -0.109374 \n", "47 4.909715 1 -0.109269 \n", "48 4.851366 1 -0.109081 \n", "49 4.917596 1 -0.109065 \n", "\n", " datetime \n", "0 2019-10-04 13:01:00+02:00 \n", "1 2019-10-05 13:01:00+02:00 \n", "2 2019-10-06 13:01:00+02:00 \n", "3 2019-10-07 13:01:00+02:00 \n", "4 2019-10-08 13:01:00+02:00 \n", "5 2019-10-09 13:01:00+02:00 \n", "6 2019-10-10 13:01:00+02:00 \n", "7 2019-10-11 13:01:00+02:00 \n", "8 2019-10-12 13:01:00+02:00 \n", "9 2019-10-13 13:01:00+02:00 \n", "10 2019-10-14 13:01:00+02:00 \n", "11 2019-10-15 13:01:00+02:00 \n", "12 2019-10-16 13:01:00+02:00 \n", "13 2019-10-17 13:01:00+02:00 \n", "14 2019-10-18 13:01:00+02:00 \n", "15 2019-10-19 13:01:00+02:00 \n", "16 2019-10-20 13:01:00+02:00 \n", "17 2019-10-21 13:01:00+02:00 \n", "18 2019-10-22 13:01:00+02:00 \n", "19 2019-10-23 13:01:00+02:00 \n", "20 2019-10-24 13:01:00+02:00 \n", "21 2019-10-25 13:01:00+02:00 \n", "22 2019-10-26 13:01:00+02:00 \n", "23 2019-10-27 13:01:00+01:00 \n", "24 2019-10-28 13:01:00+01:00 \n", "25 2019-10-29 13:01:00+01:00 \n", "26 2019-10-30 13:01:00+01:00 \n", "27 2019-10-31 13:01:00+01:00 \n", "28 2019-11-01 13:01:00+01:00 \n", "29 2019-11-02 13:01:00+01:00 \n", "30 2019-11-03 13:01:00+01:00 \n", "31 2019-11-04 13:01:00+01:00 \n", "32 2019-11-05 13:01:00+01:00 \n", "33 2019-11-06 13:01:00+01:00 \n", "34 2019-11-07 13:01:00+01:00 \n", "35 2019-11-08 13:01:00+01:00 \n", "36 2019-11-09 13:01:00+01:00 \n", "37 2019-11-10 13:01:00+01:00 \n", "38 2019-11-11 13:01:00+01:00 \n", "39 2019-11-12 13:01:00+01:00 \n", "40 2019-11-13 13:01:00+01:00 \n", "41 2019-11-14 13:01:00+01:00 \n", "42 2019-11-15 13:01:00+01:00 \n", "43 2019-11-16 13:01:00+01:00 \n", "44 2019-11-17 13:01:00+01:00 \n", "45 2019-11-18 13:01:00+01:00 \n", "46 2019-11-19 13:01:00+01:00 \n", "47 2019-11-20 13:01:00+01:00 \n", "48 2019-11-21 13:01:00+01:00 \n", "49 2019-11-22 13:01:00+01:00 " ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result.to_df()" ] }, { "attachments": {}, "cell_type": "markdown", "id": "accredited-council", "metadata": { "pycharm": { "name": "#%% md\n" } }, "source": [ "### Full results\n", "In case the full server results are needed in the raw form they were returned, we can obtain them with the results() method:" ] }, { "cell_type": "code", "execution_count": 9, "id": "retained-halloween", "metadata": { "ExecuteTime": { "end_time": "2021-03-18T10:00:48.331542Z", "start_time": "2021-03-18T10:00:47.324848Z" }, "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ "result.results();" ] }, { "attachments": {}, "cell_type": "markdown", "id": "rural-consistency", "metadata": {}, "source": [ "## Black Sheep Analysis example\n", "\n", "The BlackSheep is a population analysis and has a somewhat different call signature as it requires a number of assets to be submitted to analysis." ] }, { "cell_type": "code", "execution_count": null, "id": "structural-acting", "metadata": { "ExecuteTime": { "end_time": "2021-03-18T10:00:51.412234Z", "start_time": "2021-03-18T10:00:50.909661Z" }, "pycharm": { "is_executing": true, "name": "#%%\n" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Waiting for {'request_id': 'e6a0938e5dd9128550f710ad0180d015', 'request_status': 'queued'}\n" ] } ], "source": [ "# Specific signature for BlackSheep\n", "POPULATION_SOURCES = [\"u0001\",\"u0002\",\"u0003\",\"u0004\"]\n", "analysis_request = session.request_population_analysis(POPULATION_SOURCES, \"BlackSheep\", parameters={\"atypical_threshold\": 0.15})\n", "\n", "# Generic part to request analysis, same as above\n", "print(f\"Waiting for {analysis_request}\")\n", "session.wait_for_analyses([analysis_request[\"request_id\"]])\n", "raw_result = session.get_analysis_results(analysis_request[\"request_id\"])" ] }, { "attachments": {}, "cell_type": "markdown", "id": "stunning-device", "metadata": { "pycharm": { "name": "#%% md\n" } }, "source": [ "### Using the analysis classes\n", "We use exactly the same code as above to inspect the results:" ] }, { "cell_type": "code", "execution_count": null, "id": "departmental-letters", "metadata": { "ExecuteTime": { "end_time": "2021-03-18T10:00:53.012148Z", "start_time": "2021-03-18T10:00:52.486345Z" }, "pycharm": { "is_executing": true } }, "outputs": [], "source": [ "# Parse\n", "blacksheep_result = analysis_classes.parse_results(raw_result, \"Europe/Stockholm\", \"s\")\n", "# Show summary\n", "blacksheep_result.summary()\n", "blacksheep_result.plot()" ] }, { "attachments": {}, "cell_type": "markdown", "id": "convinced-louis", "metadata": {}, "source": [ "### Serializing\n", "Finally, we can save the object including the results to pickle.\n", "If no name is given it is saved under the name `\".pkl\"`." ] }, { "cell_type": "code", "execution_count": 13, "id": "foster-disaster", "metadata": { "pycharm": { "name": "#%%\n" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Saving BlackSheep object to 9895be09684f27257096bd9d517a9680.pkl\n" ] }, { "data": { "text/plain": [ "'9895be09684f27257096bd9d517a9680.pkl'" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "blacksheep_result.save_pkl()\n" ] } ], "metadata": { "celltoolbar": "Tags", "interpreter": { "hash": "3e082f03f9b308c2eff9c6e1d6622ba5a80b88607e08f1bd210e546296deb595" }, "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.11.3" }, "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 }, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "window_display": false } }, "nbformat": 4, "nbformat_minor": 5 }