diff --git a/examples/Convergence Testing.ipynb b/examples/Convergence Testing.ipynb new file mode 100644 index 0000000..15abdf9 --- /dev/null +++ b/examples/Convergence Testing.ipynb @@ -0,0 +1,109 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + " \"Open\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This notebook demonstrates convergence of fastKDE using convergences tests in `fastkde.test_definitions`.\n", + "\n", + "The available tests are:\n", + "\n", + "* `testNormal1D`\n", + "* `testNormal2D`\n", + "* `testNormalND`\n", + "* `testMixtureModel`\n", + "* `testTransitionPDF`\n", + "* `testConditional`\n", + "\n", + "Additional tests can be created by creating a subclass of `fastkde.test_definitions.testDistribution` and overriding the `sampleDistributions()` and `pdfStandard()` methods." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\"\"\" Install libraries if needed. \"\"\"\n", + "try:\n", + " import fastkde\n", + "except:\n", + " # install fastkde\n", + " !pip install --upgrade fastkde\n", + " import fastkde" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import fastkde.test_definitions" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "\"\"\" Run the 1D normal test. \"\"\"\n", + "test1d = fastkde.test_definitions.testNormal1D()\n", + "test1d.doTesting()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAr4AAAKrCAYAAAAXnI5dAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/SrBM8AAAACXBIWXMAAA9hAAAPYQGoP6dpAACAqUlEQVR4nOzdeXhcZcH+8fvMTCaTPU2XpGnTpmu2SRto01KQpVitZRMQRUEooKgY9NWCvuWnwgv4QlFEBIMIKuD2WlBBpYhiRctS6Zo2W9OmTdu02drsmSSznt8fwUAsoVuSM5N8P9eV62KeOZm5c0jTuyfPeR7DNE1TAAAAwChnszoAAAAAMBIovgAAABgTKL4AAAAYEyi+AAAAGBMovgAAABgTKL4AAAAYEyi+AAAAGBMcVgcId6FQSHV1dUpISJBhGFbHAQAAwH8wTVOdnZ1KT0+XzTb4dV2K73HU1dUpIyPD6hgAAAA4jtraWk2dOnXQ5ym+x5GQkCCp70QmJiZanAYAAAD/qaOjQxkZGf29bTAU3+P49/SGxMREii8AAEAYO960VG5uAwAAwJhA8QUAAMCYQPEFAADAmMAcXwAAEJFCoZB8Pp/VMTACoqKiZLfbT/t1KL4AACDi+Hw+1dTUKBQKWR0FIyQ5OVlpaWmnta8CxRc4Ad2+gHLv/IskqeKe5Yp18kcHAKximqbq6+tlt9uVkZHxvhsWIPKZpqnu7m41NTVJkiZPnnzKr8Xf3oMoLi5WcXGxgsGg1VEAAMC7BAIBdXd3Kz09XbGxsVbHwQiIiYmRJDU1NWnSpEmnPO2BfyINoqioSBUVFdq8ebPVUQAAwLv8+6KU0+m0OAlG0r//keP3+0/5NSi+AAAgIp3OXE9EnqH4/03xBQAAwJhA8QUAAMCg/vGPf8gwDLW1tVkd5bRRfAEAAEbADTfcIMMwtGbNmgHjL7zwQsRP28jMzNTDDz/c/3jHjh267LLLNGnSJLlcLmVmZurqq6/uX5lh//79MgzjPT/+9a9/DVtOii8AAMAIcblceuCBB9Ta2jqkrxtOG3kcOXJEH/zgB5WSkqK//OUvqqys1FNPPaX09HR5PJ4Bx/7tb39TfX39gI8FCxYMWzaKLwAAiFimacrn81n6YZrmCeddtmyZ0tLSdP/997/vcb/73e+Ul5en6OhoZWZm6nvf+96A5zMzM3Xvvffq+uuvV2Jioj73uc/p6aefVnJysl588UVlZWUpNjZWV111lbq7u/XMM88oMzNT48aN05e//OUBy7X+4he/0MKFC5WQkKC0tDRdc801/VdmT8Ubb7yh9vZ2/eQnP9EZZ5yhGTNmaOnSpfr+97+vGTNmDDh2/PjxSktLG/ARFRV1yu99PKzjCwAAIpbf79ebb75paYazzz77hJdWs9vtuu+++3TNNdfoy1/+sqZOnXrMMVu3btUnPvEJ/c///I+uvvpqvfnmm/riF7+o8ePH64Ybbug/7sEHH9Sdd96pu+66S5L02muvqbu7W4888oh+85vfqLOzU1deeaWuuOIKJScn66WXXtK+ffv0sY99TOecc46uvvpqSX3n8N5771VWVpaampq0atUq3XDDDXrppZdO6XykpaUpEAjo+eef11VXXRVW0zgovgAAACPoiiuuUEFBge666y799Kc/Peb5hx56SB/84Af1rW99S5I0d+5cVVRU6Lvf/e6A4nvhhRfqtttu63/82muvye/360c/+pFmzZolSbrqqqv0i1/8Qo2NjYqPj1dubq6WLl2qV199tb/43nTTTf2vMXPmTD3yyCMqLCxUV1eX4uPjT/rrO+uss/T//t//0zXXXKMvfOELWrRokS688EJdf/31Sk1NHXDs2WeffczOe11dXSf9nieKqQ4AAAAj7IEHHtAzzzyjysrKY56rrKzUOeecM2DsnHPO0Z49ewZMUVi4cOExnxsbG9tfeiUpNTVVmZmZAwpsamrqgKkMW7du1aWXXqpp06YpISFB559/viTp4MGDp/z1/e///q8aGhr0+OOPKy8vT48//riys7NVWlo64Li1a9eqpKRkwMdwovgCAACMsPPOO0/Lly/XHXfcccqvERcXd8zYf86PNQzjPcdCoZAkyePxaPny5UpMTNSvfvUrbd68Wc8//7yk079hbvz48fr4xz+uBx98UJWVlUpPT9eDDz444JiMjAzNnj17wMdwYqoDAACIWFFRUTr77LMtz3Aq1qxZo4KCAmVlZQ0Yz8nJ0RtvvDFg7I033tDcuXNlt9tPOed72bVrl5qbm7VmzRplZGRIkrZs2TKk7yH1bS89a9asY1Z1GGkUXyCMdPsCyr3zL5KkinuWK9bJH1EAeD+GYZzwjWXhJj8/X9dee60eeeSRAeO33XabCgsLde+99+rqq6/Wxo0b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zJnP51NZWZmCwaCV8SISxRcAACBMXbt4uj779jJnPy31avfby5x1dXVp165drPRwkii+AAAAYez/rcjRh3ImKWBKj7xrmbMjR47o4MGDx/38bl9AmavXKXP1OnX7xvZ6wBRfAACAMGazGXrkU2cqPz3hmGXOampqdOTIEYsTRg6KLwAAQJiLcdr10xsXKS3R2b/Mmf/tZc527dqlrq4uixNGBoovAABABJiU4NIzN52lOKdtwDJnwWBQZWVl8vl8VkcMexRfAACACJGVlqDHrl0gmyG9+a5lznp7e1VeXq5QKGRxwvBG8QUAAIgg52dN0r0fzZPUt8zZm28vc9be3q49e/aw0sP7oPgCAABEmGvPytRnzpkuSfpZqVdVLX3LnNXX16uurs7KaGGN4gsAABCBvnFxnpZlTVDAlB7d3quGt5c5q66uVmtrq8XpwhPFFwAAIALZbIYevXahclPjBixz9u9tjXt6eqyOGHYovgAAABEqxmnX0589S6nxUWp81zJngUBApaWlCgTG9oYV/4niCwAAEMEmJbj0zGfOUmyUoarWkH5W5pVpmuru7lZlZSU3u70LxRcAACDCZU9O1I8+3bfM2ca6YP8yZ83NzTqwf7+14cIIxRcAAGAUOD8rVf9zSbakgcucHT5Uq3FGt5XRwgbFFwAAYJS4/pxZWrl4iqSBy5xNs7cpVuzsRvEFAAAYRe766HxdMCtZAVN6ZHuvGj0hGTI1w9Ein9drdTxLUXwBAABGEZvN0I9WnqXsiS55/NIj230KmDZFKajKygoFg0GrI1pmTBTfmpoaLV26VLm5ucrPz5fH47E6EgAAwLCJcdr1zGfP1sRYu5p6TNUEUxQypa7OTu3evXvMrvQwJorvDTfcoHvuuUcVFRX65z//qejoaKsjAQAADKvUpBg9c9NixTgMeRSt2tA4maapxsZG1dbWWh3PEqO++JaXlysqKkrnnnuuJCklJUUOh8PiVAAAAMMvd+o4ffdjuZJMtZqxem53QKZpat++fWpubrY63oizvPhu2LBBl156qdLT02UYhl544YVjjikuLlZmZqZcLpcWL16sTZs2nfDr79mzR/Hx8br00kt15pln6r777hvC9AAAAOHtwrypcqlvabNXDgb0+z19a/xWVFSMuemflhdfj8ej+fPnq7i4+D2fX7t2rVatWqW77rpL27Zt0/z5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zMxMlZWVKT4+3uooo97555+vb3/72zr33HPV0tKixMREORwOq2MNG674holNmzYpLy9PU6ZMUXx8vFasWKG//vWvVscatS644AIlJCRYHWNUmzx5sgoKCiRJaWlpmjBhglpaWqwNNUrZ7XbFxsZKkrxer0zTFNc0hseePXu0a9curVixwuoowGkrLy9XVFSUzj33XElSSkrKqC69EsV3yGzYsEGXXnqp0tPTZRiGXnjhhWOOKS4uVmZmplwulxYvXqxNmzb1P1dXV6cpU6b0P54yZYoOHz48EtEjzumea5yYoTzPW7duVTAYVEZGxjCnjkxDca7b2to0f/58TZ06VV/72tc0YcKEEUofOYbiPN9+++26//77RyhxZBqK82wYhs4//3wVFhbqV7/61Qgljzyne6737Nmj+Ph4XXrppTrzzDN13333jWB6a1B8h4jH49H8+fNVXFz8ns+vXbtWq1at0l133aVt27Zp/vz5Wr58uZqamkY4aeTjXI+MoTrPLS0tuv766/XEE0+MROyINBTnOjk5WTt27FBNTY1+/etfq7GxcaTiR4zTPc9/+MMfNHfuXM2dO3ckY0ecofh+fv3117V161b98Y9/1H333aedO3eOVPyIcrrnOhAI6LXXXtNjjz2mjRs36pVXXtErr7wykl/CyDMx5CSZzz///ICxRYsWmUVFRf2Pg8GgmZ6ebt5///2maZrmG2+8YV5++eX9z//Xf/2X+atf/WpE8kayUznX//bqq6+aH/vYx0YiZsQ71fPc29trnnvuuebPf/7zkYoa8U7ne/rfbrnlFvO5554bzpgR71TO8+rVq82pU6ea06dPN8ePH28mJiaad99990jGjjhD8f18++23m0899dQwphwdTuVcv/nmm+aHP/zh/ue/853vmN/5zndGJK9VuOI7Anw+n7Zu3aply5b1j9lsNi1btkwbN26UJC1atEhlZWU6fPiwurq69Oc//1nLly+3KnLEOpFzjdN3IufZNE3dcMMNuvDCC3XddddZFTXinci5bmxsVGdnpySpvb1dGzZsUFZWliV5I9WJnOf7779ftbW12r9/vx588EHdfPPNuvPOO62KHJFO5Dx7PJ7+7+euri79/e9/V15eniV5I9mJnOvCwkI1NTWptbVVoVBIGzZsUE5OjlWRR8TonsEcJo4ePapgMKjU1NQB46mpqdq1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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\"\"\" Plot the 1D test results. \"\"\"\n", + "\n", + "test1d.generatePlots()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "fastkde_testing", + "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": 2 +} diff --git a/src/fastkde/test_definitions.py b/src/fastkde/test_definitions.py index 956754f..dd4955f 100644 --- a/src/fastkde/test_definitions.py +++ b/src/fastkde/test_definitions.py @@ -286,9 +286,9 @@ def doTesting( numSamplesMax=2097152, numRepetitions=30, scKWArgs={ - "fracContiguousHyperVolumes": 1, - "numPoints": 257, - "positiveShift": False, + "frac_contiguous_hyper_volumes": 1, + "num_points": 257, + "positive_shift": False, }, numProcs=1, ): @@ -594,16 +594,6 @@ def pdfStandard(self, axes): return pdfStandard.T -# def doTesting(self, \ -# scKWArgs = {'fracContiguousHyperVolumes' : 1, \ -# 'numPoints' : 513}, \ -# **kwargs): -# """Default to 513 points for the mixture model""" -# if 'scKWArgs' in kwargs: -# del(kwargs['scKWArgs']) -# super(testMixtureModel,self).doTesting(scKWArgs=scKWArgs,**kwargs) - - class transitionPDF(testDistribution): """A test for transition PDF convergence"""