{ "cells": [ { "cell_type": "code", "execution_count": 3, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import scipy\n", "from glob import glob\n" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def read_xy(path: str):\n", " df = pd.read_csv(path)\n", " df['N'] = df.index + 1\n", " df['r'] = (df.x ** 2 + df.y ** 2) ** 0.5\n", " df['cr'] = df.r.cummax()\n", " df['fd'] = np.log(df.N) / np.log(df.cr)\n", "\n", " return df\n", "\n", "\n", "def convergent_tail_index(series, tol):\n", " diffs = np.abs(np.ediff1d(series))\n", " for i in range(0, len(diffs)):\n", " if np.max(diffs[i:]) <= tol:\n", " return i\n", "\n", " # No convergence found\n", " return None\n", "\n", "\n", "def mean_of_tail(series, tol=0.05):\n", " tail_index = convergent_tail_index(series, tol)\n", " return np.mean(series[tail_index:])" ] }, { "cell_type": "code", "execution_count": 19, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/joshuacoles/Library/Caches/pypoetry/virtualenvs/data-analysis-B4Au_hWl-py3.10/lib/python3.10/site-packages/pandas/core/arraylike.py:402: RuntimeWarning: divide by zero encountered in log\n", " result = getattr(ufunc, method)(*inputs, **kwargs)\n", "/Users/joshuacoles/Library/Caches/pypoetry/virtualenvs/data-analysis-B4Au_hWl-py3.10/lib/python3.10/site-packages/pandas/core/arraylike.py:402: RuntimeWarning: divide by zero encountered in log\n", " result = getattr(ufunc, method)(*inputs, **kwargs)\n", "/Users/joshuacoles/Library/Caches/pypoetry/virtualenvs/data-analysis-B4Au_hWl-py3.10/lib/python3.10/site-packages/pandas/core/arraylike.py:402: RuntimeWarning: divide by zero encountered in log\n", " result = getattr(ufunc, method)(*inputs, **kwargs)\n", "/Users/joshuacoles/Library/Caches/pypoetry/virtualenvs/data-analysis-B4Au_hWl-py3.10/lib/python3.10/site-packages/pandas/core/arraylike.py:402: RuntimeWarning: divide by zero encountered in log\n", " result = getattr(ufunc, method)(*inputs, **kwargs)\n" ] } ], "source": [ "a = read_xy(\"/Users/joshuacoles/Developer/checkouts/jc3091/CompB DLA/c-codebase/a.csv\")\n", "b = read_xy(\"/Users/joshuacoles/Developer/checkouts/jc3091/CompB DLA/c-codebase/b.csv\")\n", "c = read_xy(\"/Users/joshuacoles/Developer/checkouts/jc3091/CompB DLA/c-codebase/c.csv\")\n", "d = read_xy(\"/Users/joshuacoles/Developer/checkouts/jc3091/CompB DLA/c-codebase/d.csv\")" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 16, "outputs": [ { "data": { "text/plain": "1.7271570214996996" }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mean_of_tail(a.fd)" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 17, "outputs": [ { "data": { "text/plain": "1.7271570214996996" }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mean_of_tail(b.fd)" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 18, "outputs": [ { "data": { "text/plain": "1.7634427392486482" }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mean_of_tail(c.fd)" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 20, "outputs": [ { "data": { "text/plain": "1.7634427392486482" }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mean_of_tail(d.fd)" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 31, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/joshuacoles/Library/Caches/pypoetry/virtualenvs/data-analysis-B4Au_hWl-py3.10/lib/python3.10/site-packages/pandas/core/arraylike.py:402: RuntimeWarning: divide by zero encountered in log\n", " result = getattr(ufunc, method)(*inputs, **kwargs)\n" ] }, { "data": { "text/plain": "20769" }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "convergent_tail_index(read_xy(\"../fucking_massive.csv\").fd, 0.001)" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [], "metadata": { "collapsed": false } } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.6" } }, "nbformat": 4, "nbformat_minor": 0 }