From bec5e204eed1aa5958480771ec2bcb765fba73f7 Mon Sep 17 00:00:00 2001 From: hageldave Date: Fri, 13 Sep 2024 14:18:20 +0200 Subject: [PATCH] refactor dim, dims -> n_dims --- examples/uamds.ipynb | 4 +- examples/uapca.ipynb | 74 ++++++++++++++++++++--------------- tests/api_consistency_test.py | 4 +- uadapy/distribution.py | 8 ++-- uadapy/dr/uamds.py | 6 +-- uadapy/dr/uapca.py | 6 +-- uadapy/plotting/plots1D.py | 2 +- uadapy/plotting/plotsND.py | 24 ++++++------ 8 files changed, 68 insertions(+), 60 deletions(-) diff --git a/examples/uamds.ipynb b/examples/uamds.ipynb index 9d88685..97c9927 100644 --- a/examples/uamds.ipynb +++ b/examples/uamds.ipynb @@ -88,9 +88,7 @@ ] } ], - "source": [ - "distribs_lo = uamds(distribs_hi, dims=2)" - ] + "source": "distribs_lo = uamds(distribs_hi, n_dims=2)" }, { "cell_type": "markdown", diff --git a/examples/uapca.ipynb b/examples/uapca.ipynb index c4bc763..cd17a7a 100644 --- a/examples/uapca.ipynb +++ b/examples/uapca.ipynb @@ -2,20 +2,20 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, "id": "initial_id", "metadata": { "ExecuteTime": { - "end_time": "2024-07-02T15:26:23.973658600Z", - "start_time": "2024-07-02T15:26:23.912080200Z" + "end_time": "2024-09-13T12:16:59.934850Z", + "start_time": "2024-09-13T12:16:55.820074Z" } }, - "outputs": [], "source": [ "import uadapy.data as data\n", "import uadapy.dr.uapca as uapca\n", "import uadapy.plotting.plots1D as plots1D" - ] + ], + "outputs": [], + "execution_count": 1 }, { "cell_type": "markdown", @@ -33,22 +33,22 @@ }, { "cell_type": "code", - "execution_count": 2, "id": "399ccab20e87f833", "metadata": { - "ExecuteTime": { - "end_time": "2024-07-02T15:26:24.481689700Z", - "start_time": "2024-07-02T15:26:24.471064600Z" - }, "collapsed": false, "jupyter": { "outputs_hidden": false + }, + "ExecuteTime": { + "end_time": "2024-09-13T12:17:08.046281Z", + "start_time": "2024-09-13T12:17:08.025902Z" } }, - "outputs": [], "source": [ "distribs_hi = data.load_iris_normal()" - ] + ], + "outputs": [], + "execution_count": 2 }, { "cell_type": "markdown", @@ -66,22 +66,20 @@ }, { "cell_type": "code", - "execution_count": 3, "id": "17d410f46ac143ad", "metadata": { - "ExecuteTime": { - "end_time": "2024-07-02T15:32:32.891453200Z", - "start_time": "2024-07-02T15:32:32.829816800Z" - }, "collapsed": false, "jupyter": { "outputs_hidden": false + }, + "ExecuteTime": { + "end_time": "2024-09-13T12:17:10.885521Z", + "start_time": "2024-09-13T12:17:10.870561Z" } }, + "source": "distribs_lo = uapca(distribs_hi, n_dims=2)", "outputs": [], - "source": [ - "distribs_lo = uapca(distribs_hi, dims=2)" - ] + "execution_count": 3 }, { "cell_type": "markdown", @@ -99,46 +97,58 @@ }, { "cell_type": "code", - "execution_count": 4, "id": "36652dfe9d1204d4", "metadata": { - "ExecuteTime": { - "end_time": "2024-07-02T20:34:50.233141600Z", - "start_time": "2024-07-02T20:34:49.848871400Z" - }, "collapsed": false, "jupyter": { "outputs_hidden": false + }, + "ExecuteTime": { + "end_time": "2024-09-13T12:17:15.337867Z", + "start_time": "2024-09-13T12:17:14.762668Z" } }, + "source": [ + "fig, axs = plots1D.plot_1d_distribution(distribs_lo, 1000, ['boxplot'], titles=[\"Dimension 1\" ,\"Dimension 2\"])" + ], "outputs": [ { "data": { - "image/png": "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iEIC+ySFIvbLyeF2uzEwMICFCxciMtL/rJbz7spLZGQkFi9eLHaM80piYiJPSAop7JMUitgvz92Zrricxgm7RERENKWweCEiIqIphcULjSkmJgZ79+5FTEyM2FGIALBPUmhivwy+827CLhEREZ3feOWFiIiIphQWL0RERDSlsHghIiKiKYXFCxEREU0pLF6IiIhoSmHxQmN66aWXkJGRgdjYWOTl5aG8vFzsSBSmJBIJvve972HhwoWIiIjAe++9J3YkCnNPP/00rrjiCiQkJGDu3Lm49dZboVarxY4VNli8kE9vvfUWdu3ahb1790Iul2PlypXYvHkzenp6xI5GYchms2HlypV46aWXxI5CBAA4efIk7rvvPpSVleH48eNwOBy4/vrrYbPZxI4WFrjOC/mUl5eHK664Ai+++CKArx94mZaWhl/96lfYs2ePyOkonEVERODdd9/FrbfeKnYUIoHRaMTcuXNx8uRJXHPNNWLHOe/xygt5OXXqFGQyGTZt2iRsi4yMxKZNm1BaWipiMiKi0GS1WgEAs2fPFjlJeGDxQl5MJhNGR0cxb948j+3z5s2DXq8XKRURUWhyuVx44IEHcNVVV+Hiiy8WO05YiBI7ABER0VR23333oa6uDkVFRWJHCRssXshLSkoKpk2bBoPB4LHdYDBg/vz5IqUiIgo9999/Pz788ENIJBIsXrxY7Dhhgx8bkZfp06cjNzcXX3zxhbDN5XLhiy++wNq1a0VMRkQUGtxuN+6//368++67OHHiBDIzM8WOFFZ45YV82rVrF+666y5cfvnlWLNmDZ5//nnYbDZs27ZN7GgUhgYHB9Hc3Cz8rNFooFAoMHv2bKSnp4uYjMLVfffdhzfffBP//ve/kZCQIMwHTEpKQlxcnMjpzn+8VZrG9OKLL+LgwYPQ6/VYtWoVXnjhBeTl5Ykdi8LQV199heuuu85r+1133YXDhw8HPxCFvYiICJ/bX331VRQUFAQ3TBhi8UJERERTCue8EBER0ZTC4oWIiIimFBYvRERENKWweCEiIqIphcULERERTSksXoiIiGhKYfFCREREUwqLFyIiIppSWLwQERHRlMLihYiIiKYUFi9EREQ0pfx/e+shbF++HKAAAAAASUVORK5CYII=", "text/plain": [ "
" - ] + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi8AAAGzCAYAAADnmPfhAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAABfFklEQVR4nO3dfXxT9d0//lcLpTfQlkIL5aalBbEtitxUqAxEBCaizrlxTfeYOMuY01266xK45vBmguhUhDm/TnfN725EB/5wc9Pppg4UJL1N26S3NEnvkt4nTdokbZO2JO35/eGP8zNrG1pIc06a1/PxyKM2/ZyTV8vnfPL25HM+J0QQBAFEREREASJU6gBERERE48HihYiIiAIKixciIiIKKCxeiIiIKKCweCEiIqKAwuKFiIiIAgqLFyIiIgooLF6IiIgooLB4ISIiooDC4oWIRnTw4EGEhIRIHeOKGQwGhISE4NixY1JHISIfYfFCFASOHTuGkJAQ8REREYH58+dj27ZtePXVV9HT0yN1xElJp9Nhz549+NrXvoaIiAiEhITAYDBIHYso4IXw3kZEk9+xY8ewa9cuHDp0CKmpqXC5XDAajfjiiy9w+vRpJCcn48MPP8R1110nbuN2u+F2uxERESFh8isnCAIGBgYQFhaGKVOm+PW1jx07ht27d2PZsmWYOnUqysrKoNfrkZKS4tccRJPNVKkDEJH/bN++Hddff734/eOPP44zZ87gjjvuwJ133gmNRoPIyEgAwNSpUzF1auAPERfPNEnhzjvvhM1mQ3R0NI4ePYqysjJJchBNNvzYiCjIbd68GT//+c/R2NiI48ePi8+PNOclJCQEjzzyCP7yl79g2bJliIyMxLp161BZWQkAeOONN3DVVVchIiICmzZtGvEjEqVSiVtvvRWxsbGIiorCTTfdhLy8PI82F1+7rq4O2dnZmDlzJmJjY7Fr1y44nU6PtqdPn8aGDRswc+ZMzJgxA2lpaXjiiSfEn4825+XMmTO48cYbMX36dMycORPf/OY3odFoLjvHSGbNmoXo6OhLtiOi8WHxQkS47777AACnTp26ZNucnBzs27cP999/Pw4ePAiNRoM77rgDr7/+Ol599VX853/+J37605+ioKAAP/jBDzy2PXPmDDZu3Iju7m4cOHAAzz//PGw2GzZv3oyioqJhr3X33Xejp6cHL7zwAu6++24cO3YMzzzzjPjz8+fP44477sDAwAAOHTqEX/7yl7jzzjuHFUP/7rPPPsO2bdvQ0dGBgwcPYu/evcjPz8f69etHLLgulYOI/CvwzwkT0RVbuHAhYmNjUV9ff8m2Op0OWq1WnLcRFxeHBx98EM899xxqamrEMw2Dg4N44YUXYDAYkJKSAkEQ8NBDD+Hmm2/GJ598Ip7VefDBB3HNNdfgqaeeGlY8rVq1Cn/4wx/E7zs7O/GHP/wBhw8fBvDlWZcLFy7gk08+QXx8/Jh/35/+9KeYNWsWCgoKMGvWLADAXXfdhVWrVuHAgQN46623xpWDiPyLZ16ICAAwY8aMMV11tGXLFo8Jp1lZWQCAHTt2eHxEcvH5hoYGAEBZWRlqa2vxve99D52dnbBYLLBYLHA4HNiyZQsUCgWGhoY8Xuuhhx7y+P7GG29EZ2cnuru7AQAzZ84EAPz9738ftu1o2tvbUVZWhuzsbLFwAYDrrrsOX//61/Hxxx8P2+ZSOYjIv1i8EBEAoLe3d0zzM5KTkz2+j42NBQAkJSWN+LzVagUA1NbWAgDuv/9+JCQkeDx+//vfY2BgAHa73etrxcXFeezznnvuwfr16/HDH/4Qc+fOxXe/+138+c9/9lrINDY2AgDS0tKG/SwjI0MsqMaTg4j8ix8bERFaWlpgt9tx1VVXXbLtaJcbj/b8xdUYLhYUR44cwcqVK0dsO2PGjHHtMzIyEgqFAmfPnsU///lPfPrpp3j33XexefNmnDp1ymeXRl8qBxH5F4sXIsKf/vQnAMC2bdsm7DWWLFkCAIiJicHWrVt9tt/Q0FBs2bIFW7Zswcsvv4znn38eTz75JM6ePTvi6yxatAjAl3N3/p1Wq0V8fDymT5/us3xE5Hv82IgoyJ05cwbPPvssUlNTce+9907Y62RmZmLJkiU4evQoent7h/3cbDaPe59dXV3Dnrt4VmdgYGDEbebNm4eVK1firbfegs1mE5+vqqrCqVOncNttt407BxH5F8+8EAWRTz75BFqtFm63GyaTCWfOnMHp06exaNEifPjhhxO6mFtoaCh+//vfY/v27bjmmmuwa9cuLFiwAK2trTh79ixiYmLw0UcfjWufhw4dgkKhwO23345Fixaho6MDv/nNb7Bw4UJs2LBh1O2OHDmC7du3Y926ddi9ezf6+vrw61//GrGxsTh48OAV/qb/P7vdjl//+tcAIF6+/dprr2HmzJmYOXMmHnnkEZ+9FlEwYfFCFESefvppAMC0adMwa9YsLF++HK+88gp27drll8XUNm3ahIKCAjz77LN47bXX0Nvbi8TERGRlZeHBBx8c9/7uvPNOGAwG/PGPf4TFYkF8fDxuuukmPPPMM+KE4ZFs3boVn376KQ4cOICnn34aYWFhuOmmm3D48GGkpqZeya/owWq14uc//7nHc7/85S8BfPnxFYsXosvDexsRERFRQOGcFyIiIgooLF6IiIgooLB4ISIiooDC4oWIiIgCCosXIiIiCiiyKl4MBgN2796N1NRUREZGYsmSJThw4AAuXLggdTQiIiKSCVmt86LVajE0NIQ33ngDV111FaqqqvDAAw/A4XDg6NGjY9rH0NAQ2traEB0djZCQkAlOTERERL4gCAJ6enowf/58hIZ6P7ci+3Vejhw5gv/93/9FQ0PDmNq3tLQMu7stERERBYbm5mYsXLjQaxtZnXkZid1ux6xZs8bc/uIqoc3NzYiJiZmoWEHD7XZj6lTZdxMKIuyTJEfsl1euu7sbSUlJY1rtW1ZzXv5dXV0dfv3rX49r2fCLHxW53W5UVlYiKioKZWVliImJQVlZGUJCQlBXV4eenh50dHSgtbUVAwMD0Gg0CA8P92gbFhYGrVaLvr4+tLe3w2g0wuFwoKamBlOmTPFoGxkZiaqqKly4cAHNzc2wWCyw2+1oaGiAIAgebWfMmIHy8nIMDQ1Br9fDZrOhq6sLTU1NcLlcI+YODQ1FbW2tR+7+/n5oNBpMmzbNo+20adPE3G1tbTCZTOjt7UVtbS1CQ0NHzO1yudDU1ITOzk7YbDbo9XoIgoB//OMfiI6ORllZmfhVEAQxd2dnp5i7qqoKkZGRI+bu7e2FyWRCW1sb+vr6oNVqR8yt0WjQ39+P1tZWdHR0oKenZ8TcUVFRqKysFHN3dXWJuYeGhlBeXo4ZM2Z4bCMIAhoaGmC322GxWNDc3IwLFy6MmHvKlCmoqamBw+GA0WhEe3u7mDssLMyjbXh4ODQaDQYGBjxy19XVISQkZMTcbrcbjY2N6OrqgtVqhcFgwNDQECoqKoblBoD6+np0d3fDbDaLuc+fP4+IiAiPtlOnTkVNTQ2cTqeY2+l0QqfTYerUqcNyV1dXY2BgAC0tLTCbzeju7kZ9ff2w3NOnT0dFRQUGBwdhMBhgtVrF3IODg6ioqMD06dOHHWtfzd3S0oKBgQFUV1cPO9amTp0KnU4Hp9MpHmtOpxM1NTXDcpeVleH8+fPisfbV3ACGHWsVFRUYGhoSc3d1daGxsZFjhI/GiK+ODcE8RnzxxRccI65wjGhra/N4H/f6Xu+Pj43279+Pw4cPe22j0WiQnp4uft/a2oqbbroJmzZtwu9///sxv1Z3dzdiY2Nht9t55oWIiChAjOf92y/Fi9lsRmdnp9c2ixcvxrRp0wAAbW1t2LRpE2644QYcO3bskhN3vorFi28pFAps3LhR6hhEIvZJkiP2yys3nvdvv3xAl5CQgISEhDG1bW1txc0334zMzEy8+eab4ypcyPdWrVoldQQiD+yTJEfsl/4lq9lFra2t2LRpExYtWoSjR4/CbDaLP0tMTJQwmfw5nU5otVqf71ej0SAjI8Pn+01PT0dUVJTP90uTX21tLVavXi11DCIP7Jf+Javi5fTp06irq0NdXd2wy6RkfkW35LRaLTIzM6WOMWYqlYoHOl2WuXPnSh2BaBj2S/+SVfGSnZ2N7OxsqWMEpPT0dKhUKp/uU6PRYOfOnTh+/LjPz758dXI20Xj09fVJHYFoGPZL/5JV8UKXLyoqasLOZGRkZPAsCcmGy+WSOgLRMOyX/sXZsDSqZcuWobCwEMuWLZM6CpEoPj5e6ghEw7Bf+heLFxpVRESEx1ciORjrrUKI/In90r9YvNCo9Ho9XnnlFej1eqmjEIlWrlwpdQSiYdgv/YvFC43KarXi5MmTsFqtUkchEimVSqkjEA3DfulfLF6IKKBwFVOSI/ZL/2LxQkQBRaFQSB2BaBj2S//ipdISampqgsVikTrGqDQajcdXuYqPj0dycrLUMchP1qxZI3UEomHYL/2LxYtEmpqakJGWBmd/v9RRLmnnzp1SR/AqKiICGp2OBUyQqKysxNq1a6WOQeSB/dK/WLxIxGKxwNnfjxdi45E6NUzqOAFL73bhcbsFFouFxUuQWLRokdQRiIZhv/QvznkhooBis9mkjkA0DPulf/HMi8Qet8t3zguRHIWEhEgdgWgY9kv/YvEiMX5sdGUufmxEwSM6OlrqCETDsF/6Fz82IqKA0traKnUEomHYL/2LZ14kEh8fj6iICJ418IGoiAjeFC2IZGRkSB2BaBj2S/9i8SKR5ORkaHQ62a/zsnPnThw/flzWBybXeQkuKpWKq5mS7LBf+heLFwklJycHxJtuRkYGVq9eLXUMIgBchp3kif3SvzjnhYgCCpdhJzliv/QvFi9EFFDWrVsndQSiYdgv/YvFC40qLi4Ot9xyC+Li4qSOQiQqLi6WOgLRMOyX/sU5LzSq1NRUnDhxglfykKxcffXVUkcgGob90r945oVG1d/fj+LiYvQHwM0jKXiYTCapIxANw37pXyxeaFTV1dW47bbbUF1dLXUUIlFkZKTUEYiGYb/0L35sNEk4nU5otVqf7lOj0Xh89aX09HRERUX5fL80+YWF8XYaJD/sl/7F4mWS0Gq1yMzMnJB979y50+f7VKlUXDuGLktnZyeSkpKkjkHkgf3Sv1i8TBLp6elQqVQ+329PT8+E3HAsPT3d5/uk4JCamip1BKJh2C/9i8XLJBEVFTUhZzIUCgXPkJCslJeXczVTkh32S/8KEQRBkDqEL3V3dyM2NhZ2ux0xMTFSxyEiIqIxGM/7N682Iq+45DXJDfskyRH7pX/xzAt5NTQ0hNBQ1rgkH+yTJEfsl1eOZ17IZ/Ly8qSOQOSBfZLkiP3Sv2RbvAwMDGDlypUICQlBWVmZ1HGC1vLly6WOQOSBfZLkiP3Sv2RbvDz22GOYP3++1DGCXmNjo9QRiDywT5IcsV/6lyyLl08++QSnTp3C0aNHpY4S9HhHaZIb9kmSI/ZL/5LdOi8mkwkPPPAAPvjgAy4fLwNDQ0NSRyDywD5JcsR+6V+yOvMiCAKys7Px0EMP4frrr7+ifXV1dSEvLw9ut1u8hE2hUKCnpwdqtRqtra2oq6uDRqOB2WyGUqnEwMCAR9u+vj4UFRXBZDJBp9OhpqYG7e3tKCkpgcPh8GjrcrmQn58Pi8WC8+fPo6GhAc3NzSgrK4PdbvdoOzQ0hJycHNhsNpSXl6OpqQkGgwFVVVXo7OwcMXdvby9UKpVH7o6ODiiVSvT393u07e/vF3NrtVrU1taira0NKpUKvb29I+bu7OxEVVUV9Ho9mpqaUF5eDrvdjpKSEgiCAIVCIX612+1ibr1eL+bOz8+Hy+UaMXdbWxtqa2uh1WphMplQVFQ0Ym6lUomOjg5oNBrU1dWhtbV1xNxutxt5eXliboPBIOa22WzIycnB0NCQxzZ2ux1lZWVobm5GQ0MDzp8/D4vFMmJuh8OBkpIStLe3o6amBjqdTszd19fn0XZgYABKpRJms9kjt1qtRk9Pz4i5u7q6UFlZCYPBgMbGRlRUVMBmsyE3N3dY7u7ubpSWlqKlpQX19fVi7oKCAly4cMGjrdPpRElJCYxGo5jbaDSiuLgYTqdzWO7CwkKYzWZUV1ejvr4eLS0tKC0tHZZ7cHAQubm5sFqtqKioQGNjo5jbarUiNzcXg4ODw461r+aurq6G2WxGYWHhsGPN6XSiuLgYRqNRPNaMRiNKSkqG5bbZbCgoKBCPta/m7u7uHnas5ebmwmazibkNBgMqKys5RvhojPjq2BDMY0RNTQ3HiCscI8Zzfz6/XCq9f/9+HD582GsbjUaDU6dO4c9//jPOnTuHKVOmwGAwIDU1FaWlpVi5cuWYXouXSvtWZ2cnZs+eLXUMIhH7JMkR++WVG8/7t1+KF7PZjM7OTq9tFi9ejLvvvhsfffQRQkJCxOcHBwcxZcoU3HvvvXjrrbcu+VosXnwrLy8P69evlzoGkYh9kuSI/fLKya54GaumpiZ0d3eL37e1tWHbtm147733kJWVhYULF15yHyxefMvtdmPqVNlNjaIgxj5JcsR+eeUCdpG65ORkXHvtteLj6quvBgAsWbJkTIUL+V5+fr7UEYg8sE+SHLFf+pesiheSH94lleSGfZLkiP3Sv2RdvKSkpEAQhDFP1iXf483GSG7YJ0mO2C/9S9bFC0lv9erVUkcg8sA+SXLEfulfLF7IK51OJ3UEIg/skyRH7Jf+xanR5FViYqLUESiAOZ3OcS08NRZmsxlqtdqn+wSA9PR0rupNl41jpX+xeCGv+vr6pI5AAUyr1SIzM1PqGGOiUql46p8uG8dK/2LxQl65XC6pI1AAS09Ph0ql8tn+NBoNdu7ciePHjyMjI8Nn+wW+zEp0uThW+heLF/KKy13TlYiKipqQsxkZGRk8S0KywrHSvzhhl7zS6/VSRyASJSUl4X/+53+QlJQkdRQiDxwr/UtWtwfwBd4ewLf6+/sREREhdQwiEfskyRH75ZUL2NsDkPwUFRVJHYFI1NXVheeeew5dXV1SRyHywLHSv1i8kFdc8prkxGAw4Be/+AUMBoPUUYg8cKz0LxYv5BWXvCYiujSOlf7F4oW8Wrt2rdQRiIhkj2Olf7F4Ia8qKiqkjkBEJHscK/2LxQt5tWjRIqkjEImmT5+OzMxMTJ8+XeooRB44VvoXixfyymq1Sh2BSJSWlobjx48jLS1N6ihEHjhW+heLF/JqypQpUkcg8sA+SXLEfulfLF7IK56eJzlRq9W4+uqrJ+Su0kRXgmOlf7F4Ia/a29uljkBEJHscK/2LxQt5xbkFRESXxrHSv1i8kFc8PU9EdGkcK/2LxQt5xSWviYgujWOlf7F4Ia+45DXJybJly3DixAksW7ZM6ihEHjhW+leIIAiC1CF8aTy31KZLc7lcCAsLkzoGkYh9kuSI/fLKjef9m2deyKvi4mKpIxCJ9Ho97rjjDuj1eqmjEHngWOlfLF7IK86gJzmxWq04deoUVzMl2eFY6V8sXsgrrl1ARHRpHCv9i8ULecVVI4mILo1jpX9NlToAyRvv1xFcmpqaYLFYpI4xKo1G4/FVzuLj45GcnCx1DPITjpX+xeKFvLJarRyAg0RTUxPS0jPQ3+eUOsol7dy5U+oIlxQRGQWdVsPjJ0hwrPQvFi/kVUpKitQRyE8sFgv6+5yI3XIcU+MypI4T0NxWDeyf74TFYuEbWpDgWOlfLF7Iq/Lycq4cGWSmxmUgLGG11DGIJoTT6YRWq/X5ftVqNVav9u1xk56ejqioKJ/uc7Jg8UJe3XjjjVJHICLyGa1Wi8zMTKljjIlKpfJ5QTRZyLJ4+ec//4lDhw6hoqICERERuOmmm/DBBx9IHSso5eTk8MwLEU0a6enpUKlUPt1nU1MTnnzySfziF7/w6ceE6enpPtvXZCO74uWvf/0rHnjgATz//PPYvHkz3G43qqqqpI4VtHjmhYgmk6ioqAk5m1FdXY3k5GSeKfETWRUvbrcb//3f/40jR45g9+7d4vO8CZt0eOaFiIjkRlaL1KnVarS2tiI0NBSrVq3CvHnzsH37dp55kdCKFSukjkBERORBVmdeGhoaAAAHDx7Eyy+/jJSUFPzyl7/Epk2bUFNTg1mzZo15X11dXaisrERWVhby8/OxceNGKBQKrFq1CrW1tZg7dy76+vrgcrkQHx+PhoYGrFy5EkqlUmy7Zs0aVFZWYtGiRbDZbAgJCUF0dDRaW1uRkZEBlUoltl23bh2Ki4tx9dVXw2QyITIyEmFhYejs7ERqaqp41Y5CocCGDRuQl5eH5cuXo7GxEXFxcRgaGkJvby/mzZsHrVY7LPfq1auh0+mQmJgo5p49ezb0ej1WrFiBoqIise3atWtRUVGBRYsWwWq1YsqUKZg+fTra29uRlpYGtVo9LHdaWhra29sxffp0TJkyBVarFSkpKfjXv/6F73znO8jJycGNN96InJwcrFixAgaDAXFxcRgcHITD4cC8efOg0+mwZs0aFBQUDMs9b948OBwODA4OIi4uDo2NjbjuuuuG5S4vL0dqaio6OzsRFhaGyMhIGI3GYbm/9rWvQalUIj09He3t7ZgxYwZCQ0NhtVqxaNEiVFZWYv369cjNzRW3WbFiBfR6PWbPng2Xy4W+vj7MnTsXNTU1w3JnZmZCo9FgwYIF6OnpgSAImDlzJhobG7F8+XIUFxeLbbOyslBWVobFixfDYrGIuU0mE5YuXYrS0tJhuTMyMtDa2oro6GiEhITAbrcjOTkZVVVV+NrXvuaRe+XKlaivr0dCQgIGBgbQ39+PuXPnora2FpmZmSgsLBTbXn/99aiursbChQvR3d0NQRAQGxuL5uZmXHPNNSgpKfHIXVpaiiVLlsBsNqO5uRnAl5f50pW5+De8eAXKZB4jysvLxbEhWMeIxsZGAEBnZyeKioom7RgRHh6O8PBwmM1mXHXVVR65169fj4KCAlxzzTVobm5GbGwsAMButyMpKQnnz5/HunXrkJeX5/F+XFdXJ+bu7Owc+0Em+MHPfvYzAYDXh0ajEU6cOCEAEN544w1x2/7+fiE+Pl747W9/O6bXstvtAgDBbrdP1K8TVBobG6WOQH6iUqkueZzyMb6HSqWS+p+V/KCjo0M4dOiQ0NHRIXWUgDae92+/nHnZt28fsrOzvbZZvHixeGOrr85xCQ8Px+LFi9HU1DSREWkUg4ODUkcgP+MidVfu4iJ1FBwSEhKwc+dOJCQkSB0laPileElISBjTP2pmZibCw8Oh0+mwYcMGAIDL5YLBYMCiRYsmOiaNwOFwSB2B/IyL1BGNT1dXF06ePIkHH3xwXNMb6PLJasJuTEwMHnroIRw4cACnTp2CTqfDj3/8YwDAd77zHYnTBad58+ZJHYGISNYMBgOeeOIJGAwGqaMEDVlN2AWAI0eOYOrUqbjvvvvQ19eHrKwsnDlzBnFxcVJHC0o6nQ5f+9rXpI5BREQkkl3xEhYWhqNHj+Lo0aNSRyEAa9askToCERGRB1l9bETyU1BQIHUEIiIiD7I780LywtV1gw/Xebly/BsGl+nTp+OGG27A9OnTpY4SNFi8kFcKhYIFTJCIj49HRGQUL/H1kYjIKMTHx0sdg/wgLS0Nhw8fRlpamtRRggaLF/KKNxkLHsnJydBpNbBYLFJHGZVGo8HOnTtx/PhxZGTIey2a+Ph4n95hmOSNY6V/sXghr3Q6HTIzM6WOQX6SnJwcEG+4GRkZfLMg2VCr1cjMzIRKpWK/9BNO2CWvuM4LERHJDYsX8oor7BIRkdyweCGveG8jkpO4uDh84xvf4KKVREGOc17IK75JkJykpqbid7/7HebOnSt1FCKSEM+8kFeNjY1SRyAS9ff3Izc3F/39/VJHIRItW7YM7733HpYtWyZ1lKDB4oW8uu6666SOQCSqrq7Gf/zHf6C6ulrqKESiiIgI3H777YiIiJA6StBg8UJeFRUVSR2BiEjW9Ho97rzzTuj1eqmjBA0WL+QVV9clIvLOarXi9OnTsFqtUkcJGixeyCuFQiF1BCIiIg8sXsirtWvXSh2BiIjIAy+VJq/Ky8uRlZUldQwiAF/eP6awsJBLsAeRpqYmWd9vC/jynltf/SpXk+l+WyxeyKvU1FSpIxB5YJ8MHk1NTUhLT0N/X2BcGr9zp7zvyB4RGQGdVjcpChgWL+RVZ2cn5syZI3UMIgBf3ij0nnvuwbvvvou0tDSp49AEs1gsXxYu3wXAYejKdAD9J/thsVhYvNDkFxYWJnUEIpHD4UB5eTnvuRVs5gBYKHUIkhNO2CWvIiMjpY5ARETkgcULeWU0GqWOQERE5IHFC3nFeQVERCQ3LF7IK7VaLXUEIlFKSgqefPJJpKSkSB2FiCTECbvkFW8PQHIya9YsPPfcc1LHICKJ8cwLecXbA5CcmM1m7NmzB2azWeooRCQhFi/k1de+9jWpIxCJmpub8corr6C5uVnqKEQkIX5sRF4plUqsX79e6hgUoJxOJ7Rarc/2N5HLsKenpyMqKsrn+yUf6JA6wCQwyf6GLF7Iq/T0dKkjUADTarXIzMz0+X4nYhl2lUrFeybJ1UmpA5DcsHghr9rb2zF79mypY1CASk9Ph0ql8uk+6+rqcNVVV/l0nwALdVnj7QGuXAcmVRHI4oW8mjFjhtQRKIBFRUX5/GzGrFmzeKl0sOHtAejfcMIueRUayi5C8sI+SUSyGwVqamrwzW9+E/Hx8YiJicGGDRtw9uxZqWMFLavVKnUEIg/sk0Qku+LljjvugNvtxpkzZ6BSqbBixQrccccdvMeORBYtWiR1BCIP7JNEJKvixWKxoLa2Fvv378d1112HpUuX4sUXX4TT6URVVZXU8YJSZWWl1BGIPLBPEpGsipfZs2cjLS0Nb7/9NhwOB9xuN9544w3MmTNnQi63pEvjGi8kN+yTRCSr4iUkJASfffYZSktLER0djYiICLz88sv49NNPERcXN659dXV1IS8vD263W1ziXqFQoKenB2q1Gq2trairq4NGo4HZbIZSqcTAwIBH276+PhQVFcFkMkGn06Gmpgbt7e0oKSmBw+HwaOtyuZCfnw+LxYLz58+joaEBzc3NKCsrg91u92g7NDSEnJwc2Gw2lJeXo6mpCQaDAVVVVejs7Bwxd29vL1QqlUfujo4OKJVK9Pf3e7Tt7+8Xc2u1WtTW1qKtrQ0qlQq9vb0j5u7s7ERVVRX0ej2amppQXl4Ou92O48ePQxAEKBQK8avdbhdz6/V6MXd+fj5cLteIudva2lBbWwutVguTyYSioqIRcyuVSnR0dECj0aCurg6tra0j5na73cjLyxNzGwwGMbfNZkNOTg6GhoY8trHb7SgrK0NzczMaGhpw/vx5WCyWEXM7HA6UlJSgvb0dNTU10Ol0Yu6+vj6PtgMDA1AqlTCbzR651Wo1enp6Rszd1dWFyspKGAwGNDY2oqKiAjabDbm5ucNyd3d3o7S0FC0tLaivrxdzFxQU4MKFCx5tnU4nSkpKYDQaxdxGoxHFxcVwOp3DchcWFsJsNqO6uhr19fVoaWlBaWnpsNyDg4PIzc2F1WpFRUUFGhsbxdxWqxW5ubkYHBwcdqx9NXd1dTXMZjMKCwuHHWtOpxPFxcUwGo3isWY0GlFSUjIs9xdffIGCggLxWPtq7u7u7mHHWm5uLmw2m5jbYDCgsrKSY4SPxoivjg2+HiMGBgbGOuTTGPX19cl2jBjPgpYhgiAIvv/zeNq/fz8OHz7stY1Go0FaWhruuusuuFwuPPnkk4iMjMTvf/97fPjhhyguLsa8efMu+Vrd3d2IjY2F3W5HTEyMr34FIiLyM7Va/eVZd67zcuX+v3Ve5LwY43jev/1SvJjNZnR2dnpts3jxYuTk5OCWW26B1Wr1CL506VLs3r0b+/fvv+RrsXjxLYVCwTtLk6ywTwaPpqYmpKWnob+vX+ook0JEZAR0Wh2Sk5OljjKi8bx/+2WRuoSEBCQkJFyyndPpBDB8HYfQ0FAMDQ1NSDbybsWKFVJHIPLAPhk8kpOTodPqYLFYpI7ilUajwc6dO3H8+HFkZGRIHWdU8fHxsi1cxktWK+yuW7cOcXFxuP/++/H0008jMjISv/vd76DX63H77bdLHS8o6fV6rFy5UuoYRCL2yeCSnJwcMG+4GRkZsv1IZrKR1YTd+Ph4fPrpp+jt7cXmzZtx/fXXIzc3F3//+9/5f1sS4X2NSG7YJ4lIVmdeAOD666/Hv/71L6lj0P/H5XJJHYHIA/skEcnqzAvJT19fn9QRiDywT5LcxMXF4fbbbx/3kh50+WR35oXkZe7cuVJHIPLAPklyk5qaimPHjiE+Pl7qKEGDZ17Iq5qaGqkjEHlgnyS56e/vx5kzZ9Dfz0u6/YXFC3m1Zs0aqSMQeWCfJLmprq7GPffcg+rqaqmjBA0WL+RVQUGB1BGIPLBPEhGLF/KKK5mS3LBPEhGLF/Lq4k20iOSCfZKIWLyQV5mZmVJHIPLAPklELF7IK41GI3UEIg/skyQ3q1evRnFxMW8N4EcsXsirBQsWSB2ByAP7JMkR+6V/sXghr3p6eqSOQOSBfZLkRqfT4bbbboNOp5M6StBg8UJeCYIgdQQiD+yTJDcOhwNlZWVwOBxSRwkaLF7Iq5kzZ0odgcgD+yQRsXghrxobG6WOQOSBfZKIWLyQV8uXL5c6ApEH9kkiYvFCXhUXF0sdgcgD+yTJTUpKCp588kmkpKRIHSVohAiTbPZbd3c3YmNjYbfbERMTI3UcIiIiGoPxvH/zzAt5xaXYSW7YJ0luzGYz9uzZA7PZLHWUoMHihbzKysqSOgKRB/ZJkpvm5ma88soraG5uljpK0GDxQl6VlZVJHYHIA/skEbF4Ia8WL14sdQQiD+yTRMTihbyyWCxSRyDywD5JRCxeyKuwsDCpIxB5YJ8kuYmOjsaGDRsQHR0tdZSgMVXqACRvkZGRUkcg8sA+SVfC6XRCq9X6fL9PPvkkenp6oFarfbbP9PR0REVF+Wx/kwmLF/LKZDLxVu8kK+yTdCW0Wi0yMzOljjEmKpUKq1evljqGLLF4Ia+WLl0qdQQiD+yTdCXS09OhUql8vl+Hw4Hp06f7dJ/p6ek+3d9kwuKFvCotLcXGjRuljkEkYp+kKxEVFTUhZzMUCgXPkvgRbw9AREREkuPtAchnuBQ7yQ37JMkR+6V/8cwLeeV2uzF1Kj9dJPlgnyQ5Yr+8cjzzQj6jVCqljkDkgX2S5Ij90r8mXZl48URSd3e3xEkmhwULFvBvSbLCPklyxH555S7+/cbygdCkK156enoAAElJSRInISIiovHq6elBbGys1zaTbs7L0NAQ2traEB0djZCQEKnjBLTu7m4kJSWhubmZ84dIFtgnSY7YL31DEAT09PRg/vz5CA31Pqtl0p15CQ0NxcKFC6WOManExMTwgCRZYZ8kOWK/vHKXOuNyESfsEhERUUBh8UJEREQBhcULjSo8PBwHDhxAeHi41FGIALBPkjyxX/rfpJuwS0RERJMbz7wQERFRQGHxQkRERAGFxQsREREFFBYvREREFFBYvNCoXn/9daSkpCAiIgJZWVkoKiqSOhIFKYVCgW984xuYP38+QkJC8MEHH0gdiYLcCy+8gDVr1iA6Ohpz5szBXXfdBZ1OJ3WsoMHihUb07rvvYu/evThw4ADUajVWrFiBbdu2oaOjQ+po5CcHDx6UzS02HA4HVqxYgddff33c2xoMBoSEhODYsWO+D0ZB69y5c3j44YdRWFiI06dPw+Vy4ZZbboHD4ZA6WlBg8UIjevnll/HAAw9g165dWLZsGX77298iKioKf/zjH6WORpfh2LFjCAkJER8RERGYP38+tm3bhldffVW8oalcbd++Hc899xy+9a1vSR1lXP72t7/hnnvuweLFixEVFYW0tDTs27cPNptN6mh0hT799FNkZ2fjmmuuwYoVK3Ds2DE0NTVBpVJJHS0oTLp7G9GVu3DhAlQqFR5//HHxudDQUGzduhUFBQUSJqMrdejQIaSmpsLlcsFoNOKLL77Ao48+ipdffhkffvghrrvuOrHtU089hf3790uY1jcWLVqEvr4+hIWF+f21f/SjH2H+/PnYuXMnkpOTUVlZiddeew0ff/wx1Go1IiMj/Z6JJobdbgcAzJo1S+IkwYHFCw1jsVgwODiIuXPnejw/d+5caLVaiVKRL2zfvh3XX3+9+P3jjz+OM2fO4I477sCdd94JjUYjvqFOnToVU6cG/hBx8UyTFN577z1s2rTJ47nMzEzcf//9OHHiBH74wx9Kkot8a2hoCI8++ijWr1+Pa6+9Vuo4QYEfGxEFuc2bN+PnP/85Ghsbcfz4cfH5kea8hISE4JFHHsFf/vIXLFu2DJGRkVi3bh0qKysBAG+88QauuuoqREREYNOmTTAYDMNeT6lU4tZbb0VsbCyioqJw0003IS8vz6PNxdeuq6tDdnY2Zs6cidjYWOzatWvY/k6fPo0NGzZg5syZmDFjBtLS0vDEE0+IPx9tzsuZM2dw4403Yvr06Zg5cya++c1vQqPRjDmH0+m85N/23wsXAOJHX//+WhS4Hn74YVRVVeHkyZNSRwkaLF5omPj4eEyZMgUmk8njeZPJhMTERIlS0US67777AACnTp26ZNucnBzs27cP999/Pw4ePAiNRoM77rgDr7/+Ol599VX853/+J37605+ioKAAP/jBDzy2PXPmDDZu3Iju7m4cOHAAzz//PGw2GzZv3jzi1Wx33303enp68MILL+Duu+8eVoCcP38ed9xxBwYGBnDo0CH88pe/xJ133jmsGPp3n332mTgB/eDBg9i7dy/y8/Oxfv36EQuukXI888wzl/xbjcRoNAL48jijwPfII4/gH//4B86ePYuFCxdKHSd4CEQjWLt2rfDII4+I3w8ODgoLFiwQXnjhBQlT0eV68803BQBCcXHxqG1iY2OFVatWid8fOHBA+PchAoAQHh4u6PV68bk33nhDACAkJiYK3d3d4vOPP/64AEBsOzQ0JCxdulTYtm2bMDQ0JLZzOp1Camqq8PWvf33Ya//gBz/weP1vfetbAgDh/fffFwRBEH71q18JAASz2Tzq76XX6wUAwptvvik+t3LlSmHOnDlCZ2en+Fx5ebkQGhoqfP/73x9TjtmzZ4/6mt7s3r1bmDJlilBTU3NZ25M8DA0NCQ8//LAwf/58/ltKgGdeaER79+7F7373O7z11lvQaDT48Y9/DIfDMeJpe5ocZsyYMaarjrZs2YKUlBTx+6ysLADAjh07EB0dPez5hoYGAEBZWRlqa2vxve99D52dnbBYLLBYLHA4HNiyZQsUCgWGhoY8Xuuhhx4CAPT29qKsrAyLFy8G8OVHLmVlZRgcHAQA/P3vfx+27Wja29tRVlaG7Oxsj8mV1113Hb7+9a/j448/HrbNxRwX3Xjjjejs7ER3d/eYXvOid955B3/4wx+wb98+LF26dFzbkrw8/PDDOH78ON555x1ER0fDaDTCaDSir69P6mhBIfBn49GEuOeee2A2m/H000/DaDRi5cqV+PTTT4dN4qXJo7e3F3PmzLlku+TkZI/vY2NjAQBJSUkjPm+1WgEAtbW1AID7779/1H3b7XbExcUNe62SkhLcfPPN4vNPPPEEnnjiCdx7771Yv349fvjDH2L//v3YsmULvv3tb+M//uM/EBo68v+bNTY2AgDS0tKG/SwjIwP/+te/4HA4MH369FF/54sZrVYrYmJiRv19vionJwe7d+/Gtm3b8Itf/GJM25B8/e///i+A4fOa3nzzTWRnZ/s/UJBh8UKjeuSRR/DII49IHYP8oKWlBXa7HVddddUl206ZMmVczwuCAADimZEjR45g5cqVI7adMWPGiPvctGkTBEHAsWPHsGvXLuj1evHsz9DQEM6ePYt//vOf+PTTT/Huu+9i8+bNOHXq1KiZxutSv9ullJeX484778S1116L9957b1JcxRXsxvpvTxODRxAR4U9/+hMAYNu2bRP2GkuWLAEAxMTEYOvWrT7bb2hoKLZs2YItW7bg5ZdfxvPPP48nn3wSZ8+eHfF1Fi1aBAAjLuWu1WoRHx/vcdblStXX1+PWW2/FnDlz8PHHHw8r0Iho/DjnhSjInTlzBs8++yxSU1Nx7733TtjrZGZmYsmSJTh69Ch6e3uH/dxsNo97n11dXcOeu3hWZ2BgYMRt5s2bh5UrV+Ktt97yWOm2qqoKp06dwm233TbuHKMxGo245ZZbEBoain/9619ISEjw2b6JghnPvBAFkU8++QRarRZutxsmkwlnzpzB6dOnsWjRInz44YcTuphbaGgofv/732P79u245pprsGvXLixYsACtra04e/YsYmJi8NFHH41rn4cOHYJCocDtt9+ORYsWoaOjA7/5zW+wcOFCbNiwYdTtjhw5gu3bt2PdunXYvXs3+vr68Otf/xqxsbE4ePDgFf6m/79bb70VDQ0NeOyxx5Cbm4vc3FzxZ3PnzsXXv/51n70WUTBh8UIURJ5++mkAwLRp0zBr1iwsX74cr7zyCnbt2uVxpdBE2bRpEwoKCvDss8/itddeQ29vLxITE5GVlYUHH3xw3Pu78847YTAY8Mc//hEWiwXx8fG46aab8Mwzz4gThkeydetWfPrppzhw4ACefvpphIWF4aabbsLhw4eRmpp6Jb+ih/LycgDASy+9NOxnN910E4sXossUInDWEREREQUQznkhIiKigMLihYiIiAIKixciIiIKKCxeiIiIKKCweCEiIqKAMukulR4aGkJbWxuio6MREhIi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OImcZIf90r9YvEwSWq12wiah7dy50+f7DLaJaOQ7S5culToC0TDsl/7F4mWSmKhJaGq1ekKKDE5Eo8tVWlrKRepIdtgv/YuXShMREZHkxvP+zQm75NXFO4ASyQX7JMkR+6V/8cwLeeV2uzF1Kj9dJPlgnyQ5Yr+8cjzzQj6jVCqljkDkgX2S5Ij90r8mXZl48URSd3e3xEkmhwULFvBvSbLCPklyxH555S7+/cbygdCkK156enoAAElJSRInISIiovHq6elBbGys1zaTbs7L0NAQ2traEB0djZCQEKnjBLTu7m4kJSWhubmZ84dIFtgnSY7YL31DEAT09PRg/vz5CA31Pqtl0p15CQ0NxcKFC6WOManExMTwgCRZYZ8kOWK/vHKXOuNyESfsEhERUUBh8UJEREQBhcULjSo8PBwHDhxAeHi41FGIALBPkjyxX/rfpJuwS0RERJMbz7wQERFRQGHxQkRERAGFxQsREREFFBYvREREFFBYvBAREVFAYfFCo3r99deRkpKCiIgIZGVloaioSOpIFKQUCgW+8Y1vYP78+QgJCcEHH3wgdSQKci+88ALWrFmD6OhozJkzB3fddRd0Op3UsYIGixca0bvvvou9e/fiwIEDUKvVWLFiBbZt24aOjg6po1EQcjgcWLFiBV5//XWpoxABAM6dO4eHH34YhYWFOH36NFwuF2655RY4HA6powUFrvNCI8rKysKaNWvw2muvAfjyhpdJSUn4yU9+gv3790ucjoJZSEgI3n//fdx1111SRyESmc1mzJkzB+fOncPGjRuljjPp8cwLDXPhwgWoVCps3bpVfC40NBRbt25FQUGBhMmIiOTJbrcDAGbNmiVxkuDA4oWGsVgsGBwcxNy5cz2enzt3LoxGo0SpiIjkaWhoCI8++ijWr1+Pa6+9Vuo4QWGq1AGIiIgC2cMPP4yqqirk5uZKHSVosHihYeLj4zFlyhSYTCaP500mExITEyVKRUQkP4888gj+8Y9/QKFQYOHChVLHCRr82IiGmTZtGjIzM/H555+Lzw0NDeHzzz/HunXrJExGRCQPgiDgkUcewfvvv48zZ84gNTVV6khBhWdeaER79+7F/fffj+uvvx5r167FK6+8AofDgV27dkkdjYJQb28v6urqxO/1ej3Kysowa9YsJCcnS5iMgtXDDz+Md955B3//+98RHR0tzgeMjY1FZGSkxOkmP14qTaN67bXXcOTIERiNRqxcuRKvvvoqsrKypI5FQeiLL77AzTffPOz5+++/H8eOHfN/IAp6ISEhIz7/5ptvIjs7279hghCLFyIiIgoonPNCREREAYXFCxEREQUUFi9EREQUUFi8EBERUUBh8UJEREQBhcULERERBRQWL0RERBRQWLwQERFRQGHxQkRERAGFxQsREREFFBYvREREFFD+XzTR09eFKFYAAAAAAElFTkSuQmCC" }, "metadata": {}, "output_type": "display_data" } ], - "source": [ - "fig, axs = plots1D.plot_1d_distribution(distribs_lo, 1000, ['boxplot'], titles=[\"Dimension 1\" ,\"Dimension 2\"])" - ] + "execution_count": 4 }, { "cell_type": "code", - "execution_count": null, "id": "6ab6c5bb39bfd94c", "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false + }, + "ExecuteTime": { + "end_time": "2024-09-13T12:17:21.158855Z", + "start_time": "2024-09-13T12:17:21.155717Z" } }, + "source": [], "outputs": [], - "source": [] + "execution_count": null + }, + { + "metadata": {}, + "cell_type": "code", + "outputs": [], + "execution_count": null, + "source": "", + "id": "7ebac2b11cf3778d" } ], "metadata": { diff --git a/tests/api_consistency_test.py b/tests/api_consistency_test.py index cfeaf28..b897a57 100644 --- a/tests/api_consistency_test.py +++ b/tests/api_consistency_test.py @@ -21,8 +21,8 @@ def test_dr_module(): import numpy as np # list of distributions (normal distributions estimated from random data distribs = [uadapy.distribution(np.random.rand(10, 3), name='Normal') for _ in range(4)] - uadapy.dr.uapca(distributions=distribs, dims=2) - uadapy.dr.uamds(distributions=distribs, dims=2) + uadapy.dr.uapca(distributions=distribs, n_dims=2) + uadapy.dr.uamds(distributions=distribs, n_dims=2) def test_plotting_module(): diff --git a/uadapy/distribution.py b/uadapy/distribution.py index 858c9a4..46dd174 100644 --- a/uadapy/distribution.py +++ b/uadapy/distribution.py @@ -6,7 +6,7 @@ class distribution: - def __init__(self, model, name="", dim = 1): + def __init__(self, model, name="", n_dims=1): """ Creates a distribution, if samples are passed as the first parameter, no assumptions about the distribution are made. For the pdf and the sampling, @@ -14,7 +14,7 @@ def __init__(self, model, name="", dim = 1): are treated as samples of a normal distribution. :param model: A scipy.stats distribution or samples :param name: The name of the distribution - :param dim: The dimensionality of the distribution + :param n_dims: The dimensionality of the distribution """ if name: self.name = name @@ -28,9 +28,9 @@ def __init__(self, model, name="", dim = 1): self.model = model mean = self.mean() if isinstance(mean, np.ndarray): - self.dim = len(self.mean()) + self.n_dims = len(self.mean()) else: - self.dim = 1 + self.n_dims = 1 self.kde = None if isinstance(self.model, np.ndarray): self.kde = stats.gaussian_kde(self.model.T) diff --git a/uadapy/dr/uamds.py b/uadapy/dr/uamds.py index 045d739..dc9cc98 100644 --- a/uadapy/dr/uamds.py +++ b/uadapy/dr/uamds.py @@ -521,7 +521,7 @@ def apply_uamds(means: list[np.ndarray], covs: list[np.ndarray], target_dim=2) - } -def uamds(distributions: list, dims: int=2, seed: int=0): +def uamds(distributions: list, n_dims: int = 2, seed: int = 0): """ Applies the UAMDS algorithm to the provided distributions and returns the projected distributions in lower-dimensional space. It assumes multivariate normal distributions. @@ -532,7 +532,7 @@ def uamds(distributions: list, dims: int=2, seed: int=0): ---------- distributions : list list of input distributions (distribution objects offering mean() and cov() methods) - dims : int + n_dims : int target dimensionality, 2 by default. seed : int Set the random seed for the initialization, 0 by default @@ -546,7 +546,7 @@ def uamds(distributions: list, dims: int=2, seed: int=0): np.random.seed(seed) means = [d.mean() for d in distributions] covs = [d.cov() for d in distributions] - result = apply_uamds(means, covs, dims) + result = apply_uamds(means, covs, n_dims) distribs_lo = [] for (m, c) in zip(result['means'], result['covs']): distribs_lo.append(distribution(multivariate_normal(m, c))) diff --git a/uadapy/dr/uapca.py b/uadapy/dr/uapca.py index 896d725..423bd2c 100644 --- a/uadapy/dr/uapca.py +++ b/uadapy/dr/uapca.py @@ -2,20 +2,20 @@ from uadapy import distribution from scipy.stats import multivariate_normal -def uapca(distributions, dims: int): +def uapca(distributions, n_dims: int = 2): """ Applies UAPCA algorithm to the distribution and returns the distribution in lower-dimensional space. It assumes a normal distributions. If you apply other distributions that provide mean and covariance, these values would be used to approximate a normal distribution :param distributions: List of input distributions - :param dims: Target dimension + :param n_dims: Target dimension :return: List of distributions in low-dimensional space """ try: means = np.array([d.mean() for d in distributions]) covs = np.array([d.cov() for d in distributions]) - means_pca, covs_pca = transform_uapca(means, covs, dims) + means_pca, covs_pca = transform_uapca(means, covs, n_dims) dist_pca = [] for (m, c) in zip(means_pca, covs_pca): dist_pca.append(distribution(multivariate_normal(m, c))) diff --git a/uadapy/plotting/plots1D.py b/uadapy/plotting/plots1D.py index be9615f..333ad0b 100644 --- a/uadapy/plotting/plots1D.py +++ b/uadapy/plotting/plots1D.py @@ -72,7 +72,7 @@ def setup_plot(distributions, num_samples, seed, fig=None, axs=None, colors=None # Calculate the layout of subplots if axs is None: - num_plots = distributions[0].dim + num_plots = distributions[0].n_dims num_rows = ceil(sqrt(num_plots)) num_cols = ceil(num_plots / num_rows) fig, axs = plt.subplots(num_rows, num_cols) diff --git a/uadapy/plotting/plotsND.py b/uadapy/plotting/plotsND.py index d52a224..acc5a1f 100644 --- a/uadapy/plotting/plotsND.py +++ b/uadapy/plotting/plotsND.py @@ -32,7 +32,7 @@ def plot_samples(distributions, num_samples, seed=55, **kwargs): if isinstance(distributions, distribution): distributions = [distributions] # Create matrix - numvars = distributions[0].dim + numvars = distributions[0].n_dims fig, axes = plt.subplots(nrows=numvars, ncols=numvars) contour_colors = utils.generate_spectrum_colors(len(distributions)) for ax in axes.flat: @@ -42,7 +42,7 @@ def plot_samples(distributions, num_samples, seed=55, **kwargs): # Fill matrix with data for k, d in enumerate(distributions): - if d.dim < 2: + if d.n_dims < 2: raise Exception('Wrong dimension of distribution') samples = d.sample(num_samples, seed) for i, j in zip(*np.triu_indices_from(axes, k=1)): @@ -114,7 +114,7 @@ def plot_contour(distributions, num_samples, resolution=128, ranges=None, quanti distributions = [distributions] contour_colors = utils.generate_spectrum_colors(len(distributions)) # Create matrix - numvars = distributions[0].dim + numvars = distributions[0].n_dims if ranges is None: min_val = np.zeros(distributions[0].mean().shape)+1000 max_val = np.zeros(distributions[0].mean().shape)-1000 @@ -133,11 +133,11 @@ def plot_contour(distributions, num_samples, resolution=128, ranges=None, quanti # Fill matrix with data for k, d in enumerate(distributions): - if d.dim < 2: + if d.n_dims < 2: raise Exception('Wrong dimension of distribution') dims = () test = () - for i in range(d.dim): + for i in range(d.n_dims): test = (*test, i) x = np.linspace(ranges[i][0], ranges[i][1], resolution) dims = (*dims, x) @@ -167,7 +167,7 @@ def plot_contour(distributions, num_samples, resolution=128, ranges=None, quanti for i, j in zip(*np.triu_indices_from(axes, k=1)): for x, y in [(i, j), (j, i)]: color = contour_colors[k] - indices = list(np.arange(d.dim)) + indices = list(np.arange(d.n_dims)) indices.remove(x) indices.remove(y) pdf_agg = np.sum(pdf, axis=tuple(indices)) @@ -177,7 +177,7 @@ def plot_contour(distributions, num_samples, resolution=128, ranges=None, quanti # Fill diagonal for i in range(numvars): - indices = list(np.arange(d.dim)) + indices = list(np.arange(d.n_dims)) indices.remove(i) axes[i,i].plot(dims[i], np.sum(pdf, axis=tuple(indices)), color=color) axes[i,i].xaxis.set_visible(True) @@ -243,7 +243,7 @@ def plot_contour_samples(distributions, num_samples, resolution=128, ranges=None distributions = [distributions] contour_colors = utils.generate_spectrum_colors(len(distributions)) # Create matrix - numvars = distributions[0].dim + numvars = distributions[0].n_dims if ranges is None: min_val = np.zeros(distributions[0].mean().shape)+1000 max_val = np.zeros(distributions[0].mean().shape)-1000 @@ -263,10 +263,10 @@ def plot_contour_samples(distributions, num_samples, resolution=128, ranges=None # Fill matrix with data for k, d in enumerate(distributions): samples = d.sample(num_samples, seed) - if d.dim < 2: + if d.n_dims < 2: raise Exception('Wrong dimension of distribution') dims = () - for i in range(d.dim): + for i in range(d.n_dims): x = np.linspace(ranges[i][0], ranges[i][1], resolution) dims = (*dims, x) coordinates = np.array(np.meshgrid(*dims)).transpose(tuple(range(1, numvars+1)) + (0,)) @@ -295,7 +295,7 @@ def plot_contour_samples(distributions, num_samples, resolution=128, ranges=None for i, j in zip(*np.triu_indices_from(axes, k=1)): for x, y in [(i, j), (j, i)]: color = contour_colors[k] - indices = list(np.arange(d.dim)) + indices = list(np.arange(d.n_dims)) indices.remove(x) indices.remove(y) pdf_agg = np.sum(pdf, axis=tuple(indices)) @@ -308,7 +308,7 @@ def plot_contour_samples(distributions, num_samples, resolution=128, ranges=None # Fill diagonal for i in range(numvars): - indices = list(np.arange(d.dim)) + indices = list(np.arange(d.n_dims)) indices.remove(i) axes[i,i].plot(dims[i], np.sum(pdf, axis=tuple(indices)), color=color) axes[i,i].xaxis.set_visible(True)