{ "cells": [ { "cell_type": "markdown", "id": "marine-feelings", "metadata": {}, "source": [ "# Analysis and Results Visualization\n", "\n", "This script describes the procedure to request an analysis to the Viking Analytics' MultiViz Analytics Engine (MVG) service.\n", "It shows how to query for results of single-asset or asset-population analyses.\n", "In addition, it presents some examples of how to visualize the results available for the [\"mode identification\"](../features/ModeId.md) feature.\n", "\n", "In this example, we will describe how to access and manipulate the analysis results directly.\n", "The [\"Analysis Classes\"](5-analysis_classes.ipynb) example provides a simplified and unified interface to access these results as a pandas dataframe, along with some basic visualization of the results.\n", "\n", "### Preliminaries\n", "\n", "This procedure describes all the steps to request an analysis, get analysis results, and plot those results using the functions in `plotting`.\n", "Local visualizations functions to create the figures are imported from `plotting`. " ] }, { "cell_type": "code", "execution_count": 1, "id": "sized-agency", "metadata": { "ExecuteTime": { "end_time": "2021-03-18T10:00:28.735704Z", "start_time": "2021-03-18T10:00:28.513699Z" } }, "outputs": [], "source": [ "import os\n", "import pandas as pd\n", "\n", "# import mvg library with python bindings to mvg-API\n", "from mvg import MVG, plotting, analysis_classes" ] }, { "cell_type": "markdown", "id": "incomplete-radar", "metadata": { "ExecuteTime": { "end_time": "2021-03-04T10:59:02.619313Z", "start_time": "2021-03-04T10:59:02.615934Z" } }, "source": [ ".. 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": "prescription-diesel", "metadata": { "ExecuteTime": { "end_time": "2021-03-18T10:00:29.472021Z", "start_time": "2021-03-18T10:00:29.469799Z" }, "tags": [ "parameters" ] }, "outputs": [], "source": [ "# Replace by your own Token\n", "VALID_TOKEN = os.environ['TEST_TOKEN']\n", "ENDPOINT = \"https://api.beta.multiviz.com\"" ] }, { "cell_type": "markdown", "id": "unable-medicine", "metadata": {}, "source": [ "Instantiate a session object with MVG library.\n", "A session object basically catches the endpoint and the token, which is used to simplify the calls to the MVG library." ] }, { "cell_type": "code", "execution_count": 3, "id": "funded-catalog", "metadata": { "ExecuteTime": { "end_time": "2021-03-18T10:00:30.395676Z", "start_time": "2021-03-18T10:00:30.214070Z" } }, "outputs": [], "source": [ "session = MVG(ENDPOINT, VALID_TOKEN)" ] }, { "cell_type": "markdown", "id": "selective-kitchen", "metadata": { "pycharm": { "name": "#%% md\n" } }, "source": [ "## Asset Analysis\n", "\n", "In this example, we will use the sources uploaded by the [\"Sources and Measurement\"](2-sources_and_measurements.ipynb) example.\n", "We start by looking if the sources are available in the database.\n", "At least, sources, \"u0001\" and \"u0005\", should appear as available." ] }, { "cell_type": "code", "execution_count": 4, "id": "thermal-mentor", "metadata": { "pycharm": { "name": "#%%\n" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Source info retrieved:\n", "{'source_id': 'u0001', 'meta': {'assetId': 'assetA', 'measPoint': 'mloc01', 'location': 'paris', 'updated': 'YES! I have been updated'}, 'properties': {'data_class': 'waveform', 'channels': ['acc']}}\n", "\n", "Source info retrieved:\n", "{'source_id': 'u0002', 'meta': {'assetId': 'assetB', 'measPoint': 'mloc01', 'location': 'paris'}, 'properties': {'data_class': 'waveform', 'channels': ['acc']}}\n", "\n", "Source info retrieved:\n", "{'source_id': 'u0003', 'meta': {'assetId': 'assetC', 'measPoint': 'mloc01', 'location': 'milano'}, 'properties': {'data_class': 'waveform', 'channels': ['acc']}}\n", "\n", "Source info retrieved:\n", "{'source_id': 'u0004', 'meta': {'assetId': 'assetD', 'measPoint': 'mloc01', 'location': 'milano'}, 'properties': {'data_class': 'waveform', 'channels': ['acc']}}\n", "\n", "Source info retrieved:\n", "{'source_id': 'u0005', 'meta': {'assetId': 'assetE', 'measPoint': 'mloc01', 'location': 'london'}, 'properties': {'data_class': 'waveform', 'channels': ['acc']}}\n", "\n", "Source info retrieved:\n", "{'source_id': 'u0006', 'meta': {'assetId': 'assetF', 'measPoint': 'mloc01', 'location': 'london'}, 'properties': {'data_class': 'waveform', 'channels': ['acc']}}\n", "\n" ] } ], "source": [ "sources = session.list_sources()\n", "\n", "for src in sources:\n", " s_info = session.get_source(src['source_id'])\n", " print(f\"Source info retrieved:\\n{s_info}\\n\")" ] }, { "cell_type": "markdown", "id": "vulnerable-loading", "metadata": {}, "source": [ "During our example, we will utilize sources, \"u0001\" and \"u0005\", which were previously uploaded to our database." ] }, { "cell_type": "code", "execution_count": 5, "id": "attractive-annual", "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": [ "['u0001', 'u0005']" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "SOURCE_IDS = [\"u0001\", \"u0005\"]\n", "SOURCE_IDS" ] }, { "cell_type": "markdown", "id": "loose-windows", "metadata": { "pycharm": { "name": "#%% md\n" } }, "source": [ "The Viking Analytics Vibration service has several features available.\n", "We list the available features along with the version of each of them in the following way:" ] }, { "cell_type": "code", "execution_count": 6, "id": "angry-toronto", "metadata": { "ExecuteTime": { "end_time": "2021-03-18T10:00:36.152571Z", "start_time": "2021-03-18T10:00:35.990849Z" }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "data": { "text/plain": [ "{'RMS': '1.0.0',\n", " 'ModeId': '0.1.1',\n", " 'BlackSheep': '1.0.0',\n", " 'KPIDemo': '1.0.0',\n", " 'ApplyModel': '0.1.0',\n", " 'LabelPropagation': '0.1.0'}" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "available_features = session.supported_features()\n", "available_features" ] }, { "cell_type": "markdown", "id": "olympic-information", "metadata": { "pycharm": { "name": "#%% md\n" } }, "source": [ "Once the source and measurements had been uploaded in the database, we can request an analysis to the VA Vibration service.\n", "When we request an analysis, we need to say which source is to be used in the analysis and the feature to be applied.\n", "\n", "The requested analysis will return a dictionary object with two elements.\n", "The first element is a `\"request_id\"` that can be used to retrieve the results after.\n", "The second element is `\"request_status\"` that provides the status right after placing the analysis request. \n", "\n", "Here, we will request the \"KPIDemo\" feature from our source \"u0001\"." ] }, { "cell_type": "code", "execution_count": 7, "id": "supposed-blood", "metadata": { "ExecuteTime": { "end_time": "2021-03-18T10:00:37.584243Z", "start_time": "2021-03-18T10:00:37.457555Z" }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "data": { "text/plain": [ "{'request_id': '5b5b56f88631f4f37df5a6c970fe9662', 'request_status': 'queued'}" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "SOURCE_ID = SOURCE_IDS[0]\n", "KPI_u0001 = session.request_analysis(SOURCE_ID, 'KPIDemo')\n", "KPI_u0001 " ] }, { "cell_type": "markdown", "id": "elder-difficulty", "metadata": { "pycharm": { "name": "#%% md\n" } }, "source": [ "Now, we proceed to request the \"ModeId\" feature for the same source." ] }, { "cell_type": "code", "execution_count": 8, "id": "primary-copying", "metadata": { "ExecuteTime": { "end_time": "2021-03-18T10:00:38.637859Z", "start_time": "2021-03-18T10:00:38.499851Z" }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "data": { "text/plain": [ "{'request_id': 'eada01781126076501677ff842633110', 'request_status': 'queued'}" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ModeId_u0001 = session.request_analysis(SOURCE_ID, 'ModeId')\n", "ModeId_u0001 " ] }, { "cell_type": "markdown", "id": "institutional-exposure", "metadata": { "pycharm": { "name": "#%% md\n" } }, "source": [ "Before we are able to get the analysis results, we need to wait until those analyses are successfully completed.\n", "\n", "We can query for the status of our requested analyses.\n", "The possible status are:\n", "\n", "* Queued: The analysis has not started in the remote server and it is in the queue to begin.\n", "\n", "* Ongoing: The analysis is been processed at this time.\n", "\n", "* Failed: The analysis is complete and failed to produce a result.\n", "\n", "* Successful: The analysis is complete and it produced a successful result." ] }, { "cell_type": "code", "execution_count": 9, "id": "sporting-proposal", "metadata": { "ExecuteTime": { "end_time": "2021-03-18T10:00:43.435603Z", "start_time": "2021-03-18T10:00:43.172181Z" }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "KPI Analysis: successful\n", "ModeId Analysis: successful\n" ] } ], "source": [ "REQUEST_IDS_u0001 = [KPI_u0001['request_id'], ModeId_u0001['request_id']]\n", "status = session.get_analysis_status(REQUEST_IDS_u0001[0])\n", "print(f\"KPI Analysis: {status}\")\n", "status = session.get_analysis_status(REQUEST_IDS_u0001[1])\n", "print(f\"ModeId Analysis: {status}\")" ] }, { "cell_type": "markdown", "id": "prerequisite-integral", "metadata": { "pycharm": { "name": "#%% md\n" } }, "source": [ "The similar procedure is repeated to request the \"KPIDemo\" and \"ModeId\" for our source \"u0005\"." ] }, { "cell_type": "code", "execution_count": 10, "id": "amateur-chuck", "metadata": { "ExecuteTime": { "end_time": "2021-03-18T10:00:44.400481Z", "start_time": "2021-03-18T10:00:44.261231Z" }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "data": { "text/plain": [ "{'request_id': '7a668b2c2a6412711bdc468ef24de17e', 'request_status': 'queued'}" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "SOURCE_ID = SOURCE_IDS[1]\n", "KPI_u0005 = session.request_analysis(SOURCE_ID, 'KPIDemo')\n", "KPI_u0005" ] }, { "cell_type": "code", "execution_count": 11, "id": "coastal-consequence", "metadata": { "ExecuteTime": { "end_time": "2021-03-18T10:00:44.815607Z", "start_time": "2021-03-18T10:00:44.676422Z" }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "data": { "text/plain": [ "{'request_id': '146406538759c7be71259fe57a2ca44b', 'request_status': 'queued'}" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "SOURCE_ID = SOURCE_IDS[1]\n", "ModeId_u0005 = session.request_analysis(SOURCE_ID, 'ModeId')\n", "ModeId_u0005" ] }, { "cell_type": "markdown", "id": "sound-parcel", "metadata": { "pycharm": { "name": "#%% md\n" } }, "source": [ "Also, we check the status of our analysis for source \"u0005\" to confirm they had been completed successfully." ] }, { "cell_type": "code", "execution_count": 12, "id": "otherwise-awareness", "metadata": { "ExecuteTime": { "end_time": "2021-03-18T10:00:48.331542Z", "start_time": "2021-03-18T10:00:47.324848Z" }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "KPI Analysis: successful\n", "ModeId Analysis: successful\n" ] } ], "source": [ "REQUEST_IDS_u0005 = [KPI_u0005['request_id'], ModeId_u0005['request_id']]\n", "status = session.get_analysis_status(REQUEST_IDS_u0005[0])\n", "print(f\"KPI Analysis: {status}\")\n", "status = session.get_analysis_status(REQUEST_IDS_u0005[1])\n", "print(f\"ModeId Analysis: {status}\")" ] }, { "cell_type": "markdown", "id": "synthetic-italic", "metadata": {}, "source": [ "## Visualization\n", "\n", "Once the analysis is complete, one get the results by calling the corresponding \"request_id\" for each analysis.\n", "\n", "First, let's check all existing \"request_id\" in the database for each source and feature." ] }, { "cell_type": "code", "execution_count": 14, "id": "coordinated-invasion", "metadata": { "ExecuteTime": { "end_time": "2021-03-18T10:00:51.412234Z", "start_time": "2021-03-18T10:00:50.909661Z" }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The KPI analysis of u0001 has request_id 5b5b56f88631f4f37df5a6c970fe9662.\n", "The KPI analysis of u0005 has request_id 7a668b2c2a6412711bdc468ef24de17e.\n", "The ModeId analysis of u0001 has request_id eada01781126076501677ff842633110.\n", "The ModeId analysis of u0005 has request_id 146406538759c7be71259fe57a2ca44b.\n" ] } ], "source": [ "REQUEST_IDS_KPI = [session.list_analyses(SOURCE_IDS[0], \"KPIDemo\")[-1], session.list_analyses(SOURCE_IDS[1], \"KPIDemo\")[-1]]\n", "print(f\"The KPI analysis of {SOURCE_IDS[0]} has request_id {REQUEST_IDS_KPI[0]}.\")\n", "print(f\"The KPI analysis of {SOURCE_IDS[1]} has request_id {REQUEST_IDS_KPI[1]}.\")\n", "REQUEST_IDS_MODEID = [session.list_analyses(SOURCE_IDS[0], \"ModeId\")[-1], session.list_analyses(SOURCE_IDS[1], \"ModeId\")[-1]]\n", "print(f\"The ModeId analysis of {SOURCE_IDS[0]} has request_id {REQUEST_IDS_MODEID[0]}.\")\n", "print(f\"The ModeId analysis of {SOURCE_IDS[1]} has request_id {REQUEST_IDS_MODEID[1]}.\")" ] }, { "cell_type": "markdown", "id": "unauthorized-youth", "metadata": { "pycharm": { "name": "#%% md\n" } }, "source": [ "The following step is to retrieve the results by calling each one of the \"request_id\".\n", "\n", "The output of the `\"get_analysis_results\"` function is a dictionary.\n", "We show the keys of one those dictionaries.\n", "The keys are the same for all features." ] }, { "cell_type": "code", "execution_count": 15, "id": "naval-patrol", "metadata": { "ExecuteTime": { "end_time": "2021-03-18T10:00:53.012148Z", "start_time": "2021-03-18T10:00:52.486345Z" } }, "outputs": [ { "data": { "text/plain": [ "dict_keys(['status', 'request_id', 'feature', 'results', 'inputs', 'error_info', 'debug_info'])" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "session.wait_for_analyses(REQUEST_IDS_u0001 + REQUEST_IDS_u0005)\n", "\n", "kpi_output1 = session.get_analysis_results(request_id=REQUEST_IDS_u0001[0])\n", "mode_output1 = session.get_analysis_results(request_id=REQUEST_IDS_u0001[1])\n", "kpi_output5 = session.get_analysis_results(request_id=REQUEST_IDS_u0005[0])\n", "mode_output5 = session.get_analysis_results(request_id=REQUEST_IDS_u0005[1])\n", "\n", "kpi_output1.keys()" ] }, { "cell_type": "markdown", "id": "certified-hybrid", "metadata": {}, "source": [ "Each dictionary contains seven key elements.\n", "These elements are:\n", "\n", "* `\"status\"` indicates if the analysis was successful.\n", "\n", "* `\"request_id\"` is the identifier of the requested analysis.\n", "\n", "* `\"feature\"` is the name of the request feature.\n", "\n", "* `\"results\"` includes the numeric results.\n", "\n", "* `\"inputs\"` includes the input information for the request analysis.\n", "\n", "* `\"error_info\"` includes the error information in case the analysis fails and it is empty if the analysis is successful.\n", "\n", "* `\"debug_info\"` includes debugging (log) information related to the failed analysis.\n" ] }, { "cell_type": "markdown", "id": "private-things", "metadata": { "pycharm": { "name": "#%% md\n" } }, "source": [ "The `\"results\"` of the \"KPIDemo\" feature is a list per channel defined in the source.\n", "Each channel is formed by eight lists.\n", "These lists are:\n", "* rms: rms value for each measurement.\n", "\n", "* peak: peak value for each measurement.\n", "\n", "* peak2peak: peak-to-peak value for each measurement.\n", "\n", "* variance: variance value for each measurement.\n", "\n", "* crest_factor: crest factor value for each measurement.\n", "\n", "* utilization: boolean indicating whether the measurement was used for the rms calculation.\n", "\n", "* dc_component: DC component value for each measurement.\n", "\n", "* timestamps: epoch (in seconds for this example) of the measurements.\n", "\n", "\n", "These lists can be converted into a dataframe for ease of manipulation.\n", "In this example, we will show how to access the dictionary results information and convert it into a Pandas dataframe.\n", "Please check the [\"Analysis Classes\"](5-analysis_classes.ipynb) example for directly getting a results Pandas dataframe.\n", "In addition, the \"timestamp\" column is converted to a timestamp object in a column called \"Date\"." ] }, { "cell_type": "code", "execution_count": 16, "id": "imposed-variety", "metadata": { "ExecuteTime": { "end_time": "2021-03-18T10:00:55.411186Z", "start_time": "2021-03-18T10:00:55.402365Z" }, "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", "
rmspeakpeak2peakvariancecrest_factorutilizationdc_componenttimestampsDate
00.6470862.6865635.3132930.4187204.1517861-0.14023715701868602019-10-04 11:01:00
10.6471232.6917505.3670040.4187694.1595631-0.14042015702732602019-10-05 11:01:00
20.6466192.7152515.4148560.4181164.1991521-0.14023915703596602019-10-06 11:01:00
30.6468732.6851475.3515620.4184454.1509661-0.14034715704460602019-10-07 11:01:00
40.6466432.7266055.3953250.4181474.2165561-0.14042315705324602019-10-08 11:01:00
\n", "
" ], "text/plain": [ " rms peak peak2peak variance crest_factor utilization \\\n", "0 0.647086 2.686563 5.313293 0.418720 4.151786 1 \n", "1 0.647123 2.691750 5.367004 0.418769 4.159563 1 \n", "2 0.646619 2.715251 5.414856 0.418116 4.199152 1 \n", "3 0.646873 2.685147 5.351562 0.418445 4.150966 1 \n", "4 0.646643 2.726605 5.395325 0.418147 4.216556 1 \n", "\n", " dc_component timestamps Date \n", "0 -0.140237 1570186860 2019-10-04 11:01:00 \n", "1 -0.140420 1570273260 2019-10-05 11:01:00 \n", "2 -0.140239 1570359660 2019-10-06 11:01:00 \n", "3 -0.140347 1570446060 2019-10-07 11:01:00 \n", "4 -0.140423 1570532460 2019-10-08 11:01:00 " ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_kpi1 = pd.DataFrame(kpi_output1[\"results\"][\"acc\"])\n", "df_kpi1[\"timestamps\"] = kpi_output1[\"results\"]['timestamps']\n", "df_kpi1['Date'] = pd.to_datetime(df_kpi1['timestamps'], unit=\"s\")\n", "df_kpi1.head()" ] }, { "cell_type": "markdown", "id": "chicken-appliance", "metadata": { "pycharm": { "name": "#%% md\n" } }, "source": [ "The `\"results\"` of the \"ModeId\" feature are four lists and two dictionaries:\n", "\n", "* The first list is the measurement epoch in the same unit as the measurement was uploaded, which is seconds for this example.\n", "\n", "* The second list corresponds to the mode label given to the timestamp.\n", "\n", "* The third list is a boolean to indicate the uncertainty of label.\n", "\n", "* The fourth list corresponds to the mode probability of each mode label.\n", "\n", "The dictionaries are called 'mode_info' and 'mode_probabilities'.\n", "\n", "The dictionary 'mode_info' contains the \"Emerging modes\" results.\n", "\"Emerging modes\" is an additional output of the analysis results that describes the first appearance of each one of the identified modes.\n", "\n", "The dictionary 'mode_probabilities' contains a dictionary per each mode identified.\n", "Each of these dictionaries contains the mode probabilities as it was identified for each mode.\n", "\n", "We pass all the lists to a dataframe for ease of manipulation.\n", "Similarly to the KPIDemo feature, we will show how to access the dictionary results information and convert it into a Pandas dataframe.\n", "Please check the [\"Analysis Classes\"](5-analysis_classes.ipynb) example for directly getting a results Pandas dataframe.\n", "In addition, the \"timestamp\" column is converted to a timestamp object in a column called \"Date\"." ] }, { "cell_type": "code", "execution_count": 17, "id": "talented-characteristic", "metadata": { "ExecuteTime": { "end_time": "2021-03-18T10:00:57.673176Z", "start_time": "2021-03-18T10:00:57.664766Z" }, "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", "
timestampslabelsuncertainmode_probabilityDate
015701868600False0.9127432019-10-04 11:01:00
115702732600False0.9728412019-10-05 11:01:00
215703596600False0.9297412019-10-06 11:01:00
315704460600False0.9996202019-10-07 11:01:00
415705324600False0.9789402019-10-08 11:01:00
\n", "
" ], "text/plain": [ " timestamps labels uncertain mode_probability Date\n", "0 1570186860 0 False 0.912743 2019-10-04 11:01:00\n", "1 1570273260 0 False 0.972841 2019-10-05 11:01:00\n", "2 1570359660 0 False 0.929741 2019-10-06 11:01:00\n", "3 1570446060 0 False 0.999620 2019-10-07 11:01:00\n", "4 1570532460 0 False 0.978940 2019-10-08 11:01:00" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mode_all1 = mode_output1[\"results\"].copy()\n", "mode_probabilities1 = mode_all1.pop(\"mode_probabilities\")\n", "mode_emerging1 = mode_all1.pop(\"mode_info\")\n", "\n", "# Conversion to dataframe of the full mode labels table\n", "df_mode1 = pd.DataFrame(mode_all1)\n", "df_mode1['Date'] = pd.to_datetime(df_mode1['timestamps'], unit=\"s\")\n", "df_mode1.head()" ] }, { "cell_type": "code", "execution_count": 18, "id": "proud-chuck", "metadata": { "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", "
modesemerging_timemax_prob_timemax_probabilityemerging_Date
00157018686015704460600.9996202019-10-04 11:01:00
11157165566015717420600.9971262019-10-21 11:01:00
22157235046015730416600.9999482019-10-29 12:01:00
\n", "
" ], "text/plain": [ " modes emerging_time max_prob_time max_probability emerging_Date\n", "0 0 1570186860 1570446060 0.999620 2019-10-04 11:01:00\n", "1 1 1571655660 1571742060 0.997126 2019-10-21 11:01:00\n", "2 2 1572350460 1573041660 0.999948 2019-10-29 12:01:00" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Conversion to dataframe of the emerging modes table\n", "df_emerging1 = pd.DataFrame(mode_emerging1)\n", "df_emerging1['emerging_Date'] = pd.to_datetime(df_emerging1['emerging_time'], unit=\"s\")\n", "df_emerging1.head()" ] }, { "cell_type": "markdown", "id": "touched-giant", "metadata": { "pycharm": { "name": "#%% md\n" } }, "source": [ "For the purpose of demonstration of our visualization functions, we will merge the dataframes of the \"KPIDemo\" results and the \"ModeId\" results into a single dataframe." ] }, { "cell_type": "code", "execution_count": 19, "id": "defined-utilization", "metadata": { "ExecuteTime": { "end_time": "2021-03-18T10:00:58.990587Z", "start_time": "2021-03-18T10:00:58.980233Z" }, "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", "
rmspeakpeak2peakvariancecrest_factorutilizationdc_componenttimestampsDatelabelsuncertainmode_probability
00.6470862.6865635.3132930.4187204.1517861-0.14023715701868602019-10-04 11:01:000False0.912743
10.6471232.6917505.3670040.4187694.1595631-0.14042015702732602019-10-05 11:01:000False0.972841
20.6466192.7152515.4148560.4181164.1991521-0.14023915703596602019-10-06 11:01:000False0.929741
30.6468732.6851475.3515620.4184454.1509661-0.14034715704460602019-10-07 11:01:000False0.999620
40.6466432.7266055.3953250.4181474.2165561-0.14042315705324602019-10-08 11:01:000False0.978940
\n", "
" ], "text/plain": [ " rms peak peak2peak variance crest_factor utilization \\\n", "0 0.647086 2.686563 5.313293 0.418720 4.151786 1 \n", "1 0.647123 2.691750 5.367004 0.418769 4.159563 1 \n", "2 0.646619 2.715251 5.414856 0.418116 4.199152 1 \n", "3 0.646873 2.685147 5.351562 0.418445 4.150966 1 \n", "4 0.646643 2.726605 5.395325 0.418147 4.216556 1 \n", "\n", " dc_component timestamps Date labels uncertain \\\n", "0 -0.140237 1570186860 2019-10-04 11:01:00 0 False \n", "1 -0.140420 1570273260 2019-10-05 11:01:00 0 False \n", "2 -0.140239 1570359660 2019-10-06 11:01:00 0 False \n", "3 -0.140347 1570446060 2019-10-07 11:01:00 0 False \n", "4 -0.140423 1570532460 2019-10-08 11:01:00 0 False \n", "\n", " mode_probability \n", "0 0.912743 \n", "1 0.972841 \n", "2 0.929741 \n", "3 0.999620 \n", "4 0.978940 " ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_u0001 = pd.merge_asof(df_kpi1, df_mode1, on=\"timestamps\", by=\"Date\")\n", "df_u0001.head()" ] }, { "cell_type": "markdown", "id": "handmade-stretch", "metadata": { "pycharm": { "name": "#%% md\n" } }, "source": [ "We repeat the same procedure of converting the results to a dataframe for source \"u0005\"." ] }, { "cell_type": "code", "execution_count": 20, "id": "grave-accounting", "metadata": { "ExecuteTime": { "end_time": "2021-03-18T10:01:01.536419Z", "start_time": "2021-03-18T10:01:01.523935Z" }, "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", "
rmspeakpeak2peakvariancecrest_factorutilizationdc_componenttimestampsDatelabelsuncertainmode_probability
00.6468872.7534065.3524170.4184624.2563971-0.14049115701868602019-10-04 11:01:000False0.989035
10.6469632.7842825.4462890.4185624.3036151-0.14005615702732602019-10-05 11:01:000False0.973626
20.6469052.7676855.3880000.4184854.2783521-0.14024415703596602019-10-06 11:01:000False0.981236
30.6473952.8388545.4811400.4191204.3850441-0.14012415704460602019-10-07 11:01:000False0.997068
40.6470572.7484425.3715820.4186834.2476031-0.14016515705324602019-10-08 11:01:000False0.990411
\n", "
" ], "text/plain": [ " rms peak peak2peak variance crest_factor utilization \\\n", "0 0.646887 2.753406 5.352417 0.418462 4.256397 1 \n", "1 0.646963 2.784282 5.446289 0.418562 4.303615 1 \n", "2 0.646905 2.767685 5.388000 0.418485 4.278352 1 \n", "3 0.647395 2.838854 5.481140 0.419120 4.385044 1 \n", "4 0.647057 2.748442 5.371582 0.418683 4.247603 1 \n", "\n", " dc_component timestamps Date labels uncertain \\\n", "0 -0.140491 1570186860 2019-10-04 11:01:00 0 False \n", "1 -0.140056 1570273260 2019-10-05 11:01:00 0 False \n", "2 -0.140244 1570359660 2019-10-06 11:01:00 0 False \n", "3 -0.140124 1570446060 2019-10-07 11:01:00 0 False \n", "4 -0.140165 1570532460 2019-10-08 11:01:00 0 False \n", "\n", " mode_probability \n", "0 0.989035 \n", "1 0.973626 \n", "2 0.981236 \n", "3 0.997068 \n", "4 0.990411 " ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#KPI\n", "df_kpi5 = pd.DataFrame(kpi_output5[\"results\"][\"acc\"])\n", "df_kpi5[\"timestamps\"] = kpi_output5[\"results\"]['timestamps']\n", "df_kpi5['Date'] = pd.to_datetime(df_kpi5['timestamps'], unit=\"s\")\n", "#MODE_ID (full)\n", "mode_all5 = mode_output5[\"results\"].copy()\n", "mode_probabilities5 = mode_all5.pop(\"mode_probabilities\")\n", "mode_emerging5 = mode_all5.pop(\"mode_info\")\n", "df_mode5 = pd.DataFrame(mode_all5)\n", "df_mode5['Date'] = pd.to_datetime(df_mode5['timestamps'], unit=\"s\")\n", "#Merging dataframes\n", "df_u0005 = pd.merge_asof(df_kpi5, df_mode5, on=\"timestamps\", by=\"Date\")\n", "df_u0005.head()" ] }, { "cell_type": "markdown", "id": "injured-student", "metadata": {}, "source": [ "We can call the individual boxplot for one source and display the boxplot of the \"RMS\" for each one of the operating modes.\n", "Here, we use results for source \"u0001\"." ] }, { "cell_type": "code", "execution_count": 21, "id": "first-influence", "metadata": { "ExecuteTime": { "end_time": "2021-03-18T10:01:07.727375Z", "start_time": "2021-03-18T10:01:07.628927Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "c:\\users\\sergio\\appdata\\local\\programs\\python\\python38\\lib\\site-packages\\numpy\\core\\_asarray.py:102: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray.\n", " return array(a, dtype, copy=False, order=order)\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "image_boxplot = plotting.modes_boxplot(df_u0001, \"rms\", SOURCE_IDS[0])" ] }, { "cell_type": "markdown", "id": "desperate-consultancy", "metadata": {}, "source": [ "We create a list with all the sources dataframes for the \"ModeId\" feature and display the \"RMS\" boxplot across the different modes." ] }, { "cell_type": "code", "execution_count": 22, "id": "israeli-sympathy", "metadata": { "ExecuteTime": { "end_time": "2021-03-18T10:01:11.059225Z", "start_time": "2021-03-18T10:01:10.915230Z" }, "scrolled": true }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "c:\\users\\sergio\\appdata\\local\\programs\\python\\python38\\lib\\site-packages\\numpy\\core\\_asarray.py:102: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray.\n", " return array(a, dtype, copy=False, order=order)\n", "c:\\users\\sergio\\appdata\\local\\programs\\python\\python38\\lib\\site-packages\\numpy\\core\\_asarray.py:102: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray.\n", " return array(a, dtype, copy=False, order=order)\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAGTCAYAAAB9D4auAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nO3de5RlZX3n//fHbtoLoqBoK9ABVIxy0yQdXI6XFCL54W0wxhVpL0El6UUmYEwyMXhL1MgkLjKOBnE6PdIjRIVxAmqrHZEYCuKKJg2EW4M4nRak0nEQRaFaBuz2+/vj7DLHQyHVXXXO3nXq/VqrFmc/+/atB6hPPc/etXeqCkmSuuYhbRcgSdJsDChJUicZUJKkTjKgJEmdZEBJkjrJgJIkdZIBJS2QJB9N8t4FPN57k9yR5FsLdUxpMTGgNHaS3JLkniTTSe5M8vkkq9quq1+SSvKUn7J+FfD7wOFV9YQR1fTqJLcm2ZHk00ke07fuoUk2JLkrybeS/N7Avs9MclWSHzT/fGbfuiOTXNKErX94qTkzoDSuXlZVjwSeCPxf4OyW69ldBwPfqarbd3fHJMv3YJ8jgL8EXgesBH4AfLhvk3cBhzV1HQu8JckJzb4rgM8AHwP2A84DPtO0A/wQ+CRwyu7WpaXNgNJYq6r/B/w1cPhMW5JHJzk/ybebEcM7kjykWfffk/x137bvS/Kl9EwkmUrytmY0cEuS1zzQuZP8ZpKtSb6bZGOSA5r2K5pNrm1Gea8a2O+FwKXAAc36jzbt/zHJliTfSzKZ5Ol9+9yS5A+TXAfsGAypJIc0o7blfW2TSX6jWXwN8NmquqKqpoF3Aq9Isk+z/teBP6mqO6vqJuB/AK9v1k0Ay4EPVNW9VfUXQIAXNP8Obq6qc4EtD9RX0mwMKI21JI8AXgV8ta/5bODRwJOAX6L3w/cNzbrfB45O8vokz6P3W//J9e/PBHsCsD9wIHAysD7Jz85y3hcAfwr8Gr1R3K3AhQBV9fxms2dU1SOr6n/171tVfwu8CNjerH99kqcCFwBvBh4HbAI+2zdKAVgDvATYt6p27kY3ARwBXNtXw78A9wFPTbIfcED/+ubzEX37Xlc/+dy06/rWS3vEgNK4+nSS7wF3AccDZwEkWUYvsN5aVXdX1S3Af6U3tUVV/QB4LfB+elNWp1fV1MCx39mMFC4HPk8vhAa9BthQVVdX1b3AW4FnJzlkD7+fVwGfr6pLq+qHwJ8DDwf+Q982f1FVt1XVPXtw/EcC3x9o+z6wT7OOgfUz6x5sX2mPGVAaVy+vqn2BhwKnAZcnmRn9rKA3oplxK70REQBV9U/ANnrTVJ8cOO6dVbVjYN8DZjn/Af3naKbNvtN/nt00eLwfAbcNHO+2PTw2wDTwqIG2RwF3N+sYWD+z7sH2lfaYAaWxVlW7qupiYBfwXOAOehftD+7b7GeAf51ZSPLb9IJtO/CWgUPul2TvgX23z3Lq7f3naPZ5bP95dtPg8QKsGjjeT7tDbiZUH9HX1n934BbgGX3HfxK9Pvh6Vd0J/Fv/+ubzlr59j25qmnE0XnPSPBlQGmvNzQ0n0ru77Kaq2kVvVHRmkn2SHAz8Hr3pPJprPe+lN833Onp3qz1z4LDvTrKiuUb1UuB/z3LqTwBvaG6/fijwX4B/bKYUoXdn4ZN241v5JPCSJMcl2YvetbJ7gX+Yy85V9W16YfbaJMuSvBF4ct8mHwdeluR5TZi+B7i4qmZGQecD70iyX5KnAb8JfLRZN0nvF4A3Nbejn9a0/x38+N/Bw+iNXEnysKZPpJ/KgNK4+mySaXrXoM6kd6PDzG/0p9MbUWwDvkwvTDY0d7h9DHhfVV1bVf8HeBvwV30/UL8F3ElvRPNx4NSq+trgyavqS/TuhLuI3ujjycBJfZu8CzivuSNvtmtYg8e7mV5onk1vFPgyerfS3zfH/oBeqPwBvanGI+gLt6ZvTm2+p9vpXT/6T337/jHwL/SmGS8HzqqqLzT73ge8nN7NJt8D3khvinWmtoOBe/j3EdU9wM27UbeWqPjCQmlukkwAH6uqg9quRVoKHEFJkjrJgJIkdZJTfJKkTnIEJUnqJANKktRJu/3U4y7bf//965BDDmm7jN2yY8cO9t577wffUAvC/h4t+3u0Fmt/X3XVVXdU1eMG24caUM3j+D8ILAM+UlV/Nss2E8AHgL2AO6rql5r2W+g9KmUXsLOqVj/Y+Q455BCuvPLKBat/FCYnJ5mYmGi7jCXD/h4t+3u0Fmt/J7l1tvahBVTzUM5z6D2ocwrYnGRjVd3Yt82+9N45c0JVfTPJ4wcOc2xV3TGsGiVJ3TXMa1DHAFuralvzF+UXAicObPNqeo9T+SbAnrycTZI0noYZUAfyk09XnuL+T3J+Kr2Hb042r4n+9b51BXyxaV87xDolSR00zGtQmaVt8I+ulgO/ABxH7902X0ny1ar6OvCcqtreTPtdmuRrVXXFwP404bUWYOXKlUxOTi7k9zB009PTi67mxcz+Hi37e7TGrb+HGVBT9F4HMOMg7v9agil6N0bsoPea6ivoPcb/61W1HXrTfkk+RW/K8H4BVVXrgfUAq1evrsV2gXCxXtRcrOzv0bK/R2vc+nuYAbUZOCzJofQe838SvWtO/T4DfKh5ivQK4FnAf2se9/+Qqrq7+fzL9B7/37qjzjtq4Q963sIf8vqTr1/4g0rSCA0toKpqZ/NemEvo3Wa+oaq2JDm1Wb+uqm5K8gXgOuBH9G5Fv6F5WdqnmvefLQc+MfNo/7bN9Qf/T767beH4aCpJS8VQ/w6qqjYBmwba1g0snwWcNdC2jZ98e+eiM9cgGbchuSQtFB91JEnqJANKktRJBpQkqZMMKElSJxlQkqROMqAkSZ1kQEmSOsmAkiR1kgElSeokA0qS1EkGlCSpkwwoSVInGVCSpE4a6tPMJS0eQ3nXGfi+M+0xA0oSMJwf+r5ORvPhFJ8kqZMMKElSJxlQkqROMqAkSZ1kQEmSOsmAkiR1kgElSeokA0qS1EkGlCSpkwwoSVInGVCSpE4yoCRJnWRASZI6yYCSJHWSASVJ6iQDSpLUSQaUJKmTDChJUicNNaCSnJDk5iRbk5zxANtMJLkmyZYkl+/OvpKk8bV8WAdOsgw4BzgemAI2J9lYVTf2bbMv8GHghKr6ZpLHz3VfSdJ4G+YI6hhga1Vtq6r7gAuBEwe2eTVwcVV9E6Cqbt+NfSVJY2xoIyjgQOC2vuUp4FkD2zwV2CvJJLAP8MGqOn+O+wKQZC2wFmDlypVMTk4uRO0jMz09vehqXszs79Gyv0dr3Pp7mAGVWdpqlvP/AnAc8HDgK0m+Osd9e41V64H1AKtXr66JiYk9rbcVk5OTLLaaFzP7e7Ts79Eat/4eZkBNAav6lg8Cts+yzR1VtQPYkeQK4Blz3FeSNMaGeQ1qM3BYkkOTrABOAjYObPMZ4HlJlid5BL1pvJvmuK8kaYwNbQRVVTuTnAZcAiwDNlTVliSnNuvXVdVNSb4AXAf8CPhIVd0AMNu+w6pVktQ9w5zio6o2AZsG2tYNLJ8FnDWXfSVJS4dPkpAkdZIBJUnqJANKktRJBpQkqZMMKElSJxlQkqROMqAkSZ1kQEmSOsmAkiR1kgElSeokA0qS1EkGlCSpkwwoSVInGVCSpE4yoCRJnTSngEry5CQPbT5PJHlTkn2HW5okaSmb6wjqImBXkqcA5wKHAp8YWlWSpCVvrgH1o6raCfwK8IGq+l3gicMrS5K01M01oH6YZA1wMvC5pm2v4ZQkSdLcA+oNwLOBM6vqG0kOBT42vLIkSUvd8rlsVFU3Am/qW/4G8GfDKkqSpLnexffSJP+c5LtJ7kpyd5K7hl2cJGnpmtMICvgA8Arg+qqqIdYjSRIw92tQtwE3GE6SpFGZ6wjqLcCmJJcD9840VtX7h1KVJGnJm2tAnQlMAw8DVgyvHEmSeuYaUI+pql8eaiWSJPWZ6zWov01iQEmSRuZBAypJ6F2D+kKSe7zNXJI0Cg86xVdVleSaqvr5URQkSRLMfYrvK0l+caiVSJLUZ643SRwLnJrkFmAHEHqDq6OHVZgkaWmba0C9aE8OnuQE4IPAMuAjVfVnA+sngM8A32iaLq6q9zTrbgHuBnYBO6tq9Z7UIElanOb6sNhbd/fASZYB5wDHA1PA5iQbmwfP9vv7qnrpAxzm2Kq6Y3fPLUla/OZ6DWpPHANsraptVXUfcCFw4hDPJ0kaI8MMqAPpPcNvxlTTNujZSa5N8jdJjuhrL+CLSa5KsnaIdUqSOmiu16D2RGZpG3zY7NXAwVU1neTFwKeBw5p1z6mq7UkeD1ya5GtVdcX9TtILr7UAK1euZHJycsG+gVGYnp5edDUvZvb3aNnfozVu/T3MgJoCVvUtHwRs79+gqu7q+7wpyYeT7F9Vd1TV9qb99iSfojdleL+Aqqr1wHqA1atX18TExIJ/I8M0OTnJYqt5MbO/R8v+Hq1x6+9hTvFtBg5LcmiSFcBJwMb+DZI8oXlSBUmOaer5TpK9k+zTtO8N/DJwwxBrlSR1zNBGUFW1M8lpwCX0bjPfUFVbkpzarF8HvBL4rSQ7gXuAk5onV6wEPtVk13LgE1X1hWHVKknqnmFO8VFVm4BNA23r+j5/CPjQLPttA54xzNokSd02zCk+SZL2mAElSeokA0qS1EkGlCSpkwwoSVInGVCSpE4yoCRJnWRASZI6yYCSJHWSASVJ6iQDSpLUSQaUJKmTDChJUicZUJKkTjKgJEmdZEBJkjrJgJIkdZIBJUnqJANKktRJBpQkqZMMKElSJxlQkqROMqAkSZ1kQEmSOsmAkiR1kgElSeokA0qS1EkGlCSpkwwoSVInGVCSpE4yoCRJnWRASZI6yYCSJHXSUAMqyQlJbk6yNckZs6yfSPL9JNc0X380130lSeNt+bAOnGQZcA5wPDAFbE6ysapuHNj076vqpXu4ryRpTA1zBHUMsLWqtlXVfcCFwIkj2FeSNAaGNoICDgRu61ueAp41y3bPTnItsB34z1W1ZTf2JclaYC3AypUrmZycnH/lIzQ9Pb3oal7M7O/Rsr9Ha9z6e5gBlVnaamD5auDgqppO8mLg08Bhc9y311i1HlgPsHr16pqYmNjjgtswOTnJYqt5MbO/R8v+Hq1x6+9hTvFNAav6lg+iN0r6saq6q6qmm8+bgL2S7D+XfSVJ422YAbUZOCzJoUlWACcBG/s3SPKEJGk+H9PU85257CtJGm9Dm+Krqp1JTgMuAZYBG6pqS5JTm/XrgFcCv5VkJ3APcFJVFTDrvsOqVZLUPcO8BjUzbbdpoG1d3+cPAR+a676SpKXDJ0lIkjrJgJIkdZIBJUnqJANKktRJBpQkqZMMKElSJxlQkqROGurfQUnzddR5Ry38Qc9b+ENef/L1C39QaYkzoNRpC/2Df9wepimNM6f4JEmdZEBJkjrJgJIkdZIBJUnqJANKktRJ6b1+aTwk+TZwa9t17Kb9gTvaLmIJsb9Hy/4ercXa3wdX1eMGG8cqoBajJFdW1eq261gq7O/Rsr9Ha9z62yk+SVInGVCSpE4yoNq3vu0Clhj7e7Ts79Eaq/72GpQkqZMcQUmSOsmAalGSE5LcnGRrkjParmecJdmQ5PYkN7Rdy1KQZFWSy5LclGRLkt9pu6ZxleRhSf4pybVNX7+77ZoWilN8LUmyDPg6cDwwBWwG1lTVja0WNqaSPB+YBs6vqiPbrmfcJXki8MSqujrJPsBVwMv973vhJQmwd1VNJ9kL+DLwO1X11ZZLmzdHUO05BthaVduq6j7gQuDElmsaW1V1BfDdtutYKqrq36rq6ubz3cBNwIHtVjWeqme6Wdyr+RqLkYcB1Z4Dgdv6lqfwf2CNoSSHAD8H/GO7lYyvJMuSXAPcDlxaVWPR1wZUezJL21j81iPNSPJI4CLgzVV1V9v1jKuq2lVVzwQOAo5JMhbT2AZUe6aAVX3LBwHbW6pFWnDN9ZCLgI9X1cVt17MUVNX3gEnghJZLWRAGVHs2A4clOTTJCuAkYGPLNUkLorlwfy5wU1W9v+16xlmSxyXZt/n8cOCFwNfarWphGFAtqaqdwGnAJfQuIH+yqra0W9X4SnIB8BXgZ5NMJTml7ZrG3HOA1wEvSHJN8/XitosaU08ELktyHb1ffC+tqs+1XNOC8DZzSVInOYKSJHWSASVJ6iQDSpLUSQaUJKmTDChJUicZUJKkTjKgJEmdZEBJkjrJgJIkdZIBJUnqJANKktRJBpQkqZMMKGmBJPlokvcu4PHem+SOJN9aqGNKi4kBpbGT5JYk9ySZTnJnks8nWfXge45OkkrylJ+yfhXw+8DhVfWEEdX06iS3JtmR5NNJHtO37qFJNiS5K8m3kvzewL7PTHJVkh80/3xm37rXJ9nV/PuY+ZoYxfekxc2A0rh6WVU9kt67cv4vcHbL9eyug4HvVNXtu7tjkuV7sM8RwF/Se4fTSuAHwIf7NnkXcFhT17HAW5Kc0Oy7AvgM8DFgP+A84DNN+4yvVNUj+74md7dGLT0GlMZaVf0/4K+Bw2fakjw6yflJvt2MGN6R5CHNuv+e5K/7tn1fki+lZ6J52eHbmqm3W5K85oHOneQ3k2xN8t0kG5Mc0LRf0WxybTOaeNXAfi8ELgUOaNZ/tGn/j0m2JPlekskkT+/b55Ykf9i8tG7HYEglOaQZtS3va5tM8hvN4muAz1bVFVU1DbwTeEWSfZr1vw78SVXdWVU3Af8DeH2zbgJYDnygqu6tqr8AArzggfpGmgsDSmMtySOAVwFf7Ws+G3g08CTgl+j98H1Ds+73gaObaannAacAJ9e/v9nzCcD+wIHAycD6JD87y3lfAPwp8Gv0RnG3AhcCVNXzm82e0Ywm/lf/vlX1t8CLgO3N+tcneSpwAfBm4HHAJuCzA6OUNcBLgH2bNzbvjiOAa/tq+BfgPuCpSfYDDuhf33w+om/f6+on3356Xd96gJ9rQv3rSd65J6M8LT0GlMbVp5N8D7gLOB44CyDJMnqB9daquruqbgH+K72pLarqB8BrgffTm7I6vaqmBo79zmakcDnweXohNOg1wIaqurqq7gXeCjw7ySF7+P28Cvh8VV1aVT8E/hx4OPAf+rb5i6q6raru2YPjPxL4/kDb94F9mnUMrJ9Z92D7AlwBHAk8HvhVekH6B3tQo5YYA0rj6uVVtS/wUOA04PIkM6OfFfRGNDNupTciAqCq/gnYRm+a6pMDx72zqnYM7HvALOc/oP8czbTZd/rPs5sGj/cj4LaB4922h8cGmAYeNdD2KODuZh0D62fWPdi+VNW2qvpGVf2oqq4H3gO8ch61aokwoDTWqmpXVV0M7AKeC9wB/JDexf4ZPwP868xCkt+mF2zbgbcMHHK/JHsP7Lt9llNv7z9Hs89j+8+zmwaPF2DVwPFqcKc+M6H6iL62/rsDtwDP6Dv+k+j1wder6k7g3/rXN5+39O17dFPTjKP71g8qeuEv/VQGlMZac3PDifTuLrupqnbRGxWdmWSfJAcDv0dvOo/mWs976U3zvY7e3WrPHDjsu5OsaK5RvRT437Oc+hPAG5rbrx8K/BfgH5spRejdWfik3fhWPgm8JMlxSfaid63sXuAf5rJzVX2bXpi9NsmyJG8Enty3yceBlyV5XhOm7wEurqqZUdL5wDuS7JfkacBvAh9t1k3S+wXgTc3t6Kc17X8HkORFSVY2n59G7waMz+zG964lyoDSuPpskml616DOpHejw8xv9KfTG1FsA75ML0w2NBfuPwa8r6qurar/A7wN+KsmZAC+BdxJb0TzceDUqvra4Mmr6kv0fhBfRG/08WTgpL5N3gWc19yRN9s1rMHj3UwvNM+mNwp8Gb1b6e+bY39AL1T+gN5U4xH0hVvTN6c239Pt9K4f/ae+ff8Y+Bd604yXA2dV1Reafe8DXk7vZpPvAW+kN8U6U9txwHVJdtC7ueNieoEt/VT5yRtvJD2Q5o9LP1ZVB7Vdi7QUOIKSJHWSASVJ6iSn+CRJneQISpLUSQaUJKmTxup5WPvvv38dcsghbZexW3bs2MHee+/94BtqQdjfo2V/j9Zi7e+rrrrqjqp63GD7WAXUIYccwpVXXtl2GbtlcnKSiYmJtstYMuzv0bK/R2ux9neSW2drd4pPktRJBpQkqZMMKElSJxlQkqROMqAkSZ00VnfxjcJR5x218Ac9b+EPef3J1y/8QSVphAyo3bTQP/gX622hkjRsTvFJkjrJgJIkdZJTfJLUgqFcz4YFv6bd5vVsA0qSWjCMH/zjdk3bKT5JUie1ElBJTkhyc5KtSc54gG0mklyTZEuSy0ddoySpXSOf4kuyDDgHOB6YAjYn2VhVN/Ztsy/wYeCEqvpmksePuk5JUrvaGEEdA2ytqm1VdR9wIXDiwDavBi6uqm8CVNXtI65RktSyNm6SOBC4rW95CnjWwDZPBfZKMgnsA3ywqs6f7WBJ1gJrAVauXMnk5ORC1ztU09PTi67mxcz+Hi37e7TGrb/bCKjM0lYDy8uBXwCOAx4OfCXJV6vq6/fbsWo9sB5g9erVtdjuYBm3u266zv4eLft7tMatv9sIqClgVd/yQcD2Wba5o6p2ADuSXAE8A7hfQEmSxlMb16A2A4clOTTJCuAkYOPANp8BnpdkeZJH0JsCvGnEdUqSWjTyEVRV7UxyGnAJsAzYUFVbkpzarF9XVTcl+QJwHfAj4CNVdcOoa5UktaeVJ0lU1SZg00DbuoHls4CzRlmXJKk7fJKEJKmTDChJUicZUJKkTjKgJEmdZEBJkjrJgJIkdZIBJUnqJANKktRJBpQkqZMMKElSJxlQkqROMqAkSZ1kQEmSOqmVgEpyQpKbk2xNcsYs6yeSfD/JNc3XH7VRpySpPSN/3UaSZcA5wPH03py7OcnGqrpxYNO/r6qXjro+SVI3tDGCOgbYWlXbquo+4ELgxBbqkCR1WBsBdSBwW9/yVNM26NlJrk3yN0mOGE1pkqSuaOONupmlrQaWrwYOrqrpJC8GPg0cNuvBkrXAWoCVK1cyOTm5gKUO3/T09KKreTGzv0fL/h6tcevvNgJqCljVt3wQsL1/g6q6q+/zpiQfTrJ/Vd0xeLCqWg+sB1i9enVNTEwMpehhmZycZLHVvJjZ36Nlf4/WuPV3G1N8m4HDkhyaZAVwErCxf4MkT0iS5vMx9Or8zsgrlSS1ZuQjqKrameQ04BJgGbChqrYkObVZvw54JfBbSXYC9wAnVdXgNKCWgKPOO2rhD3rewh/y+pOvX/iDSktcG1N8VNUmYNNA27q+zx8CPjTqutQ9C/2Df9ymQKRx5pMkJEmdZEBJkjrJgJIkdZIBJUnqJANKktRJBpQkqZMMKElSJxlQkqROMqAkSZ1kQEmSOsmAkiR1kgElSeokA0qS1EkGlCSpk1oJqCQnJLk5ydYkZ/yU7X4xya4krxxlfZKk9o08oJIsA84BXgQcDqxJcvgDbPc+ei82lCQtMW2MoI4BtlbVtqq6D7gQOHGW7U4HLgJuH2VxkqRuaCOgDgRu61ueatp+LMmBwK8A65AkLUltvPI9s7TVwPIHgD+sql3JbJv3HSxZC6wFWLlyJZOTkwtR48hMT08vupoXM/t7tOzv0Rq3/m4joKaAVX3LBwHbB7ZZDVzYhNP+wIuT7KyqTw8erKrWA+sBVq9eXRMTE8OoeWgmJydZbDUvZvb3aNnfozVu/d1GQG0GDktyKPCvwEnAq/s3qKpDZz4n+SjwudnCSZI0vkYeUFW1M8lp9O7OWwZsqKotSU5t1nvdSZI0v4BK8mRgqqruTTIBHA2cX1Xf+2n7VdUmYNNA26zBVFWvn0+NkqTFab538V0E7EryFOBc4FDgE/OuSpK05M03oH5UVTvp3RL+gar6XeCJ8y9LkrTUzTegfphkDXAy8Lmmba95HlOSpHkH1BuAZwNnVtU3mjvzPjb/siRJS928bpKoqhuBN/UtfwP4s/kWJUnSvEZQSV6a5J+TfDfJXUnuTnLXQhUnSVq65vt3UB8AXgFcX1WDjyuSJGmPzfca1G3ADYaTJGmhzXcE9RZgU5LLgXtnGqvq/fM8riRpiZtvQJ0JTAMPA1bMvxxJknrmG1CPqapfXpBKJEnqM99rUH+bxICSJC24PQ6o9F7W9BbgC0nu8TZzSdJC2uMpvqqqJNdU1c8vZEGSJMH8p/i+kuQXd3enJCckuTnJ1iRnzLL+xCTXJbkmyZVJnjvPOiVJi8x8b5I4Fjg1yS3ADiD0BldHP9AOSZYB5wDH03v9++YkG5vHJs34ErCxGaUdDXwSeNo8a5UkLSLzDagX7cE+xwBbq2obQJILgROBHwdUVU33bb834B8CS9ISM9+Hxd66B7sdSO8JFDOmgGcNbpTkV4A/BR4PvOSBDpZkLbAWYOXKlUxOTu5BSe2Znp5edDUvZvb3aNnfozVu/T3fEdSeyCxt9xshVdWngE8leT7wJ8ALZztYVa0H1gOsXr26JiYmFq7SEZicnGSx1byY2d+jZX+P1rj193xvktgTU8CqvuWDgO0PtHFVXQE8Ocn+wy5MktQdbQTUZuCwJIcmWQGcBGzs3yDJU5q/syLJz9N7jNJ3Rl6pJKk1I5/iq6qdSU4DLgGWARuqakuSU5v164BfBX49yQ+Be4BX+cR0SVpa2rgGRVVtAjYNtK3r+/w+4H2jrkuS1B1tTPFJkvSgDChJUicZUJKkTjKgJEmdZEBJkjrJgJIkdZIBJUnqJANKktRJBpQkqZMMKElSJxlQkqROMqAkSZ1kQEmSOqmVgEpyQpKbk2xNcsYs61+T5Lrm6x+SPKONOiVJ7Rl5QCVZBpwDvAg4HFiT5PCBzb4B/FJVHU3vde/rR1ulJKltbYygjgG2VtW2qroPuBA4sX+DqvqHqrqzWfwqvdfCS5KWkDYC6kDgtr7lqabtgZwC/M1QK5IkdU4bb9TNLG2zvs49ybH0Auq5D3iwZC2wFmDlypVMTk4uQImjMz09vehqXszs79Gyv0dr3Pq7jYCaAlb1LR8EbB/cKMnRwEeAF1XVdx7oYFW1nuYa1erVq2tiYmJBix22yclJFlvNi5n9PVr292iNW3+3McW3GTgsyYEwUE8AAAbuSURBVKFJVgAnARv7N0jyM8DFwOuq6ust1ChJatnIR1BVtTPJacAlwDJgQ1VtSXJqs34d8EfAY4EPJwHYWVWrR12rJKk9bUzxUVWbgE0Dbev6Pv8G8BujrkuS1B0+SUKS1EkGlCSpkwwoSVInGVCSpE4yoCRJnWRASZI6yYCSJHWSASVJ6iQDSpLUSQaUJKmTDChJUicZUJKkTjKgJEmdZEBJkjqplYBKckKSm5NsTXLGLOufluQrSe5N8p/bqFGS1K6Rvw8qyTLgHOB4eq9/35xkY1Xd2LfZd4E3AS8fdX2SpG5oYwR1DLC1qrZV1X3AhcCJ/RtU1e1VtRn4YQv1SZI6oI2AOhC4rW95qmmTJOnH2njle2Zpqz0+WLIWWAuwcuVKJicn9/RQrZienl50NS9m9vdo2d+jNW793UZATQGr+pYPArbv6cGqaj2wHmD16tU1MTExr+JGbXJyksVW82Jmf4+W/T1a49bfbUzxbQYOS3JokhXAScDGFuqQJHXYyEdQVbUzyWnAJcAyYENVbUlyarN+XZInAFcCjwJ+lOTNwOFVddeo65UktaONKT6qahOwaaBtXd/nb9Gb+pMkLVE+SUKS1EkGlCSpkwwoSVInGVCSFtwFF1zAkUceyXHHHceRRx7JBRdc0HZJWoRauUlC0vi64IILePvb3865557Lrl27WLZsGaeccgoAa9asabk6LSaOoCQtqDPPPJNzzz2XY489luXLl3Psscdy7rnncuaZZ7ZdmhYZR1CSADjqvKMW5Dj5g/Cmb74Jzmsazvv39oU6x/UnX78gx1G3GVCSgIX7oX/kkUdy9tlnc+yxx/740TuXXXYZp59+OjfccMOCnENLg1N8khbU29/+dk455RQuu+wydu7cyWWXXcYpp5zC29/+9rZL0yLjCErSgpq5EeL000/npptu4ulPfzpnnnmmN0hotxlQkhbcmjVrWLNmzdg9XVuj5RSfJKmTDChJUielao9fZts5Sb4N3Np2Hbtpf+COtotYQuzv0bK/R2ux9vfBVfW4wcaxCqjFKMmVVbW67TqWCvt7tOzv0Rq3/naKT5LUSQaUJKmTDKj2rW+7gCXG/h4t+3u0xqq/vQYlSeokR1CSpE4yoFqU5IQkNyfZmuSMtusZZ0k2JLk9iU8rHYEkq5JcluSmJFuS/E7bNY2rJA9L8k9Jrm36+t1t17RQnOJrSZJlwNeB44EpYDOwpqpubLWwMZXk+cA0cH5VHdl2PeMuyROBJ1bV1Un2Aa4CXu5/3wsvSYC9q2o6yV7Al4HfqaqvtlzavDmCas8xwNaq2lZV9wEXAie2XNPYqqorgO+2XcdSUVX/VlVXN5/vBm4CDmy3qvFUPdPN4l7N11iMPAyo9hwI3Na3PIX/A2sMJTkE+DngH9utZHwlWZbkGuB24NKqGou+NqDak1naxuK3HmlGkkcCFwFvrqq72q5nXFXVrqp6JnAQcEySsZjGNqDaMwWs6ls+CNjeUi3Sgmuuh1wEfLyqLm67nqWgqr4HTAIntFzKgjCg2rMZOCzJoUlWACcBG1uuSVoQzYX7c4Gbqur9bdczzpI8Lsm+zeeHAy8EvtZuVQvDgGpJVe0ETgMuoXcB+ZNVtaXdqsZXkguArwA/m2QqySlt1zTmngO8DnhBkmuarxe3XdSYeiJwWZLr6P3ie2lVfa7lmhaEt5lLkjrJEZQkqZMMKElSJxlQkqROMqAkSZ1kQEmSOsmAkkYkSSX5q77l5Um+nWS3bglOckuS/Re+QqlbDChpdHYARzZ/TAm9J9n/a4v1SJ1mQEmj9TfAS5rPa4ALZlYkeUySTye5LslXkxzdtD82yReT/HOSv6TvOY5JXtu8C+iaJH/ZPDR0WZKPJrkhyfVJfneU36C0UAwoabQuBE5K8jDgaH7yCd/vBv65qo4G3gac37T/MfDlqvo5eo/D+hmAJE8HXgU8p3lQ6C7gNcAzgQOr6siqOgr4n8P/tqSFt7ztAqSlpKqua14/sQbYNLD6ucCvNtv9XTNyejTwfOAVTfvnk9zZbH8c8AvA5t6j73g4vdctfBZ4UpKzgc8DXxzm9yQNiwEljd5G4M+BCeCxfe0/7RUssz2TLMB5VfXW+61IngH8f8BvA78GvHEe9UqtcIpPGr0NwHuq6vqB9ivoTdGRZAK4o3mHUn/7i4D9mu2/BLwyyeObdY9JcnBzh99Dquoi4J3Azw/5+5GGwhGUNGJVNQV8cJZV7wL+Z/NU6h8AJzft7wYuSHI1cDnwzeY4NyZ5B/DFJA8BfkhvxHRPc5yZX0DvN8KSFgOfZi5J6iSn+CRJnWRASZI6yYCSJHWSASVJ6iQDSpLUSQaUJKmTDChJUicZUJKkTvr/Adt0neii/RirAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plotting.modes_group_boxplot([df_u0001, df_u0005], \"rms\", SOURCE_IDS)" ] }, { "cell_type": "markdown", "id": "paperback-persian", "metadata": {}, "source": [ "We call the display over time of an individual source and identify all its operating modes.\n", "We define the parameter \"timeunit\" given that the default unit in the function is milliseconds and the epochs in our data are seconds." ] }, { "cell_type": "code", "execution_count": 23, "id": "polished-recycling", "metadata": { "ExecuteTime": { "end_time": "2021-03-18T10:01:16.615916Z", "start_time": "2021-03-18T10:01:16.510745Z" } }, "outputs": [ { "data": { "image/png": "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vn1718bGxi5PP/10r5kzZzYCTJs2bUfv3r0PADz88MO9li9ffmKhUBg1cuTIhieeeKL3mjVrepQj7vadpyJJkiTlmDJlyvYbb7zx9EcffXTVpk2b3s5BS6dUtIiIBFBXd+iYbkopLr/88sY777xzXTnjBUeUJUmSVAHXXHPNltmzZ79+wQUXvFF6fPz48bvmzZvXH2DRokW9+vbt29SvX7/m8ePH75o7d25/gAULFvTeuXNnF4ApU6bsXLRoUd9169Z1hWyO8+rVq7uXI2YTZUmSpM6iP4e+9Vah+40YMWL/DTfcsOng47feeuvrS5cuPbG+vr7hS1/60tB77733ZYBbbrnl9SeffPLkhoaGUY888kifwYMH7wMYO3bsm9dff/26SZMm1dfX1zdcdNFF9a+99lq3g+/75S9/eeCgQYPO37hxY/dCodBw5ZVXDmvrjxd5w92tvjjGJVh81NdLnYUbjlSZG45IqrC4iiUppXHVjmPZsmWvFAqFLdWO43i2bNmyAYVCYXhemSPKkiRJUg4TZUmSJCmHibIkSZKUw0RZkiRJymGiLEmSJOUwUZYkSZJyuDOfJElSZ3H/gAL7Gtsv/+vev4k/3LLsvU6JiLEf//jHtz744IMvA+zfv5+BAwcWxowZs+fxxx9/sbWPGjp06OjFixevGDx4cKvWbp46deqZzz333EndunVLY8aM2fPd73731R49erRpxVZHlCVJkjqL9kySW3m/nj17Nq9atarn7t27A+CBBx7oPWjQoP3tGkeOq666auuaNWuWr1q16vk333wzvv71rw9o6z1MlCVJklRWkyZN2rFw4cJTAO67775+l1122daWso0bN3aZPHnyiPr6+oZCoTDymWee6QmwYcOGLhMnTnz/qFGjGqZPnz6sdJO8u+66q9/o0aNHjRw5smH69OnDmpoOHWS+8sord9TV1VFXV8e4ceP2rF27ts3bXJsoS5IkqayuvvrqrfPnz++7d+/eWLFixYkTJkzY01I2Z86cIYVCYe/q1atfuOmmm9bNmDHjTIDrrrtuyIQJE3avWLHihalTp25fv359d4ClS5eecP/99/dbvHjxypUrV75QV1eX7r777v6He/Zbb70V8+fP73/xxRfvaGvcJsqSJEkqqwsvvPCNtWvX9rjnnnv6TZ48+V0J67PPPttr1qxZjQBTp07dtX379q6N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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "image_modes = plotting.modes_over_time(df_u0001, SOURCE_IDS[0], timeunit=\"s\")" ] }, { "cell_type": "markdown", "id": "sustainable-invention", "metadata": {}, "source": [ "Uncertain areas appear as a gray rectangle above the corresponding periods in the modes plot.\n", "If there are not uncertain areas, the space is white.\n", "\n", "We create a list with all the sources dataframes and display the modes over time for all." ] }, { "cell_type": "code", "execution_count": 24, "id": "orange-consciousness", "metadata": { "ExecuteTime": { "end_time": "2021-03-18T10:01:17.917436Z", "start_time": "2021-03-18T10:01:17.618543Z" }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plotting.modes_over_time_group([df_u0001, df_u0005], SOURCE_IDS, timeunit=\"s\")" ] }, { "cell_type": "markdown", "id": "e4ed39d7", "metadata": {}, "source": [ "Apart from visualization of modes over time, we can also visualize the probability of occurrence of every mode over time.\n", "The plot can be generated using the `\"plot_probabilities\"` method of the \"ModeId\" feature class.\n", "As a first step, the raw mode results needs to be parsed into a python object representing the \"ModeId\" feature class.\n", "The method `\"plot_probabilities\"` makes use of the instance variable, `\"probabilities\"`, which is a matrix of probability of occurrence of each mode for over each timestamp.\n", "For a more focused plot, one can use the method's `\"selected_modes\"` parameter to only consider a subset of modes." ] }, { "cell_type": "code", "execution_count": 25, "id": "3bee115a", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "text/plain": [ "''" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mode_results_parsed = analysis_classes.parse_results(mode_output1, t_unit=\"s\")\n", "mode_results_parsed.plot_probabilities()" ] }, { "cell_type": "markdown", "id": "south-acting", "metadata": { "pycharm": { "name": "#%% md\n" } }, "source": [ "## Population Analysis\n", "\n", "Another feature is \"BlackSheep\", which targets a group of assets and aims to identify the atypical assets within a population. \n", "\n", "During our example, we will utilize all sources previously uploaded to our database." ] }, { "cell_type": "code", "execution_count": 26, "id": "compressed-mexico", "metadata": { "pycharm": { "name": "#%%\n" } }, "outputs": [ { "data": { "text/plain": [ "['u0001', 'u0002', 'u0003', 'u0004', 'u0005', 'u0006']" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "SOURCE_ID_ALL = [\"u0001\", \"u0002\", \"u0003\", \"u0004\", \"u0005\", \"u0006\"]\n", "SOURCE_ID_ALL" ] }, { "cell_type": "markdown", "id": "joined-russia", "metadata": {}, "source": [ "Similar to single asset feature, the requested population analysis will return a dictionary object with two elements.\n", "The first element is a `\"request_id\"` that can be used to retrieve the results after.\n", "The second element is `\"request_status\"` that provides the status right after placing the analysis request. \n", "\n", "Here, we will request the \"BlackSheep\" feature for all our sources.\n", "In addition, we show how to pass additional parameters into the analysis request.\n", "When we want to pass an additional parameter request, this needs to be in the form of a dictionary.\n", "In this particular analysis, we had relaxed the `\"atypical_threshold\"` parameter from the default value of 0.05 to 0.10 to discover a larger number of assets as atypical." ] }, { "cell_type": "code", "execution_count": 27, "id": "chemical-helmet", "metadata": { "pycharm": { "name": "#%%\n" } }, "outputs": [ { "data": { "text/plain": [ "{'request_id': 'cdb27ac2ef5d4d635287de9421a2977a', 'request_status': 'queued'}" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "params = {\"atypical_threshold\": 0.1}\n", "BS_ALL = session.request_population_analysis(SOURCE_ID_ALL, 'BlackSheep', parameters = params)\n", "BS_ALL" ] }, { "cell_type": "markdown", "id": "great-gender", "metadata": {}, "source": [ "Similarly, we can query for the status of our requested analysis, where the different status options remain the same." ] }, { "cell_type": "code", "execution_count": 28, "id": "hourly-homework", "metadata": { "pycharm": { "name": "#%%\n" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "BlackSheep Analysis: successful\n" ] } ], "source": [ "REQUEST_ID_ALL = BS_ALL['request_id']\n", "status = session.get_analysis_status(REQUEST_ID_ALL)\n", "print(f\"BlackSheep Analysis: {status}\")" ] }, { "cell_type": "markdown", "id": "voluntary-regression", "metadata": {}, "source": [ "The next step is to retrieve the results by calling the \"request_id\".\n", "\n", "The output of the `\"get_analysis_results\"` function is similar to single asset features.\n", "These seven elements are:\n", "\n", "* `\"status\"` indicates if the analysis was successful.\n", "\n", "* `\"request_id\"` is the identifier of the requested analysis.\n", "\n", "* `\"feature\"` is the name of the request feature.\n", "\n", "* `\"results\"` includes the numeric results.\n", "\n", "* `\"inputs\"` includes the input information for the request analysis.\n", "\n", "* `\"error_info\"` includes the error information in case the analysis fails and it is empty if the analysis is successful.\n", "\n", "* `\"debug_info\"` includes debugging (log) information related to the failed analysis." ] }, { "cell_type": "code", "execution_count": 29, "id": "innocent-dictionary", "metadata": { "pycharm": { "name": "#%%\n" } }, "outputs": [ { "data": { "text/plain": [ "dict_keys(['status', 'request_id', 'feature', 'results', 'inputs', 'error_info', 'debug_info'])" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "session.wait_for_analyses([REQUEST_ID_ALL])\n", "blacksheep_table = session.get_analysis_results(request_id=REQUEST_ID_ALL)\n", "blacksheep_table.keys()" ] }, { "cell_type": "markdown", "id": "related-probe", "metadata": {}, "source": [ "The `\"results\"` of the \"BlackSheep\" indicates the atypical assets.\n", "`\"results\"` is a dictionary with a key element labelled `\"atypical_assets\"`.\n", "`\"atypical_assets\"` is a list and the length of the list indicates the number of atypical assets.\n", "Each element on this list is a dictionary.\n", "The dictionary includes the source_id of the atypical assets, a list with all the measurement timestamps, and the corresponding list with a boolean indicating whether the measurement is atypical.\n", "\n", "Here, we show the number of atypical assets and the atypical order of these assets." ] }, { "cell_type": "code", "execution_count": 30, "id": "clean-agreement", "metadata": { "pycharm": { "name": "#%%\n" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "There is a total of 2 atypical assets in this analysis.\n" ] } ], "source": [ "atypical_output = blacksheep_table[\"results\"]\n", "atypical = atypical_output[\"atypical_assets\"]\n", "\n", "print(f\"There is a total of {len(atypical)} atypical assets in this analysis.\")" ] }, { "cell_type": "code", "execution_count": 31, "id": "eight-cargo", "metadata": { "pycharm": { "name": "#%%\n" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The 1st blacksheep is u0004\n", "The 2nd blacksheep is u0002\n" ] } ], "source": [ "atypical1 = atypical[0]\n", "atypical2 = atypical[1]\n", "print(f\"The 1st blacksheep is {atypical1['source_id']}\")\n", "print(f\"The 2nd blacksheep is {atypical2['source_id']}\")" ] }, { "cell_type": "markdown", "id": "swiss-owner", "metadata": { "pycharm": { "name": "#%% md\n" } }, "source": [ "Please check the [\"Analysis Classes\"](5-analysis_classes.ipynb) example for some of the visualization options of the blacksheep results.\n" ] } ], "metadata": { "celltoolbar": "Tags", "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.8.10" }, "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 }