{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\n# Functional depth \n\nSample usage of Depth for functional data.\nIt will plot samples and dataset based on depth notions.\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from depth.model.DepthFunc import DepthFunc \nimport numpy as np\nimport pandas as pd\nfrom matplotlib import pyplot as plt" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "## Creating dataset and samples\nnp.random.seed(2801)\nn_cases = 100\nrows = []\n# fig,(ax1,ax2,ax3)=plt.subplots(1,3,figsize=(15,5))\nfor case in range(1, n_cases + 1):\n n_points = 100#np.random.randint(3, 16)\n timestamps = pd.to_datetime(\"2024-01-01\") + pd.to_timedelta(\n np.sort(np.random.randint(0, 1000, n_points)), unit='s'\n )\n baseVal = np.linspace(0,7,n_points)+np.random.normal(0,.2,n_points)\n bruit = np.random.normal(0,1,1)\n value_1 = np.cos(baseVal)+bruit\n value_2 = np.sin(baseVal)+bruit*0.5\n value_3 = np.cos(baseVal)*np.sin(baseVal**1.2)+bruit*0.5#+np.sin(baseVal)#+decVal\n \n # value_2 = np.random.rand(n_points)\n # value_3 = np.random.rand(n_points)\n value_3[-1] = None\n for t, v1, v2, v3 in zip(timestamps, value_1, value_2, value_3):\n rows.append([case, t, v1, v2, v3])\n # ax1.plot(timestamps,value_1)\n # ax2.plot(timestamps,value_2)\n # ax3.plot(timestamps,value_3)\ndf = pd.DataFrame(rows, columns=[\"case_id\", \"timestamp\", \"value_1\", \"value_2\", \"value_3\"])\n\ndf.head(10)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "fig,(ax1,ax2,ax3)=plt.subplots(1,3,figsize=(15,5))\nfor case in range(1, n_cases + 1):\n ax1.plot(df[df.case_id==case].value_1.values)\n ax2.plot(df[df.case_id==case].value_2.values)\n ax3.plot(df[df.case_id==case].value_3.values)\nplt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Create model and load dataset for depth computation \n\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "model=DepthFunc().load_dataset(df,interpolate_grid=False)\nDpth=model.projection_based_func_depth(df,notion=\"projection\",output_option=\"lowest_depth\",NRandom=1000)\nprint(\"depth of first 10 functions:\" , Dpth)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from matplotlib import cm\nfig,(ax1,ax2,ax3)=plt.subplots(1,3,figsize=(15,5))\nfor case in range(1, n_cases + 1):\n ax1.plot(df[df.case_id==case].value_1.values,c=cm.plasma((Dpth[case-1]-Dpth.min())/(Dpth.max()-Dpth.min())))\n ax2.plot(df[df.case_id==case].value_2.values,c=cm.plasma((Dpth[case-1]-Dpth.min())/(Dpth.max()-Dpth.min())))\n ax3.plot(df[df.case_id==case].value_3.values,c=cm.plasma((Dpth[case-1]-Dpth.min())/(Dpth.max()-Dpth.min())))\n\nplt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.0" } }, "nbformat": 4, "nbformat_minor": 0 }