From 4589d52fd0090754e2caef274375d57662a23cc4 Mon Sep 17 00:00:00 2001 From: Alexander Sikorski Date: Tue, 23 Feb 2021 17:31:16 +0100 Subject: [PATCH] ajc: rename ajcs to ajc --- NEWS.md | 7 +- README.md | 2 +- examples/examples.ipynb | 2 +- examples/papermsnd.ipynb | 78 ++++++++++++++++----- src/cmdtools/__init__.py | 2 +- src/cmdtools/estimation/{ajcs.py => ajc.py} | 2 +- tests/test_ajc.py | 8 +-- 7 files changed, 74 insertions(+), 27 deletions(-) rename src/cmdtools/estimation/{ajcs.py => ajc.py} (99%) diff --git a/NEWS.md b/NEWS.md index f4ab33e..47f8565 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,7 +1,12 @@ current ==== -* New augmented jump chain module +* ajc.py: New augmented jump chain module * Sparse implementation for the computation of the transition kernel, koopman operators and space-time-committors +* schur.py + * allow sensivity and iteration adjustment for the KrylovSchur solver + * change tolerance to absolute value +* pcca.py + * fix memory allocation for sparse systems 0.2.1 ===== diff --git a/README.md b/README.md index 1e99754..63963ea 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ This Python library implements a suite of tools used and/or developed in the [Co ## Contents * `pcca`: An implementation of (generalized) PCCA⁺ using the Schur decomposition -* `ajcs`: A sparse implementation of the augmented jump chain +* `ajc`: A sparse implementation of the augmented jump chain * `diffusionmaps`: Diffusionmaps with sparse support and out of sample extensions * `galerkin`: Trajectory based estimation of the transfer operator using a Galerkin projection onto Gaussian RBFs * `gillespie`: Trajectory simulation from a generator diff --git a/examples/examples.ipynb b/examples/examples.ipynb index fd02df9..8d64506 100644 --- a/examples/examples.ipynb +++ b/examples/examples.ipynb @@ -308,7 +308,7 @@ "metadata": {}, "outputs": [], "source": [ - "ajc = cmdtools.estimation.ajcs.AJCS(qs, dts) # construct the augmented jump chain" + "ajc = cmdtools.estimation.ajc.AJC(qs, dts) # construct the augmented jump chain" ] }, { diff --git a/examples/papermsnd.ipynb b/examples/papermsnd.ipynb index 2d1fd44..c611eea 100644 --- a/examples/papermsnd.ipynb +++ b/examples/papermsnd.ipynb @@ -10,7 +10,7 @@ "%autoreload 2\n", "import sys\n", "sys.path.append('src')\n", - "from cmdtools.estimation import sqra, ajcs\n", + "from cmdtools.estimation import sqra, ajc\n", "import numpy as np\n", "from scipy.linalg import expm\n", "import scipy.sparse.linalg as spl\n", @@ -61,19 +61,19 @@ " self.Qs = model.Qs\n", " self.dt = np.array(model.dts)\n", "\n", - " self.ajcs = ajcs.AJCS(self.Qs, self.dt)\n", + " self.ajc = ajc.AJC(self.Qs, self.dt)\n", " self.nt = np.size(self.Qs, 0)\n", " self.nx = np.size(self.Qs[0], 0)\n", "\n", " def jumpactivity(self, p0):\n", - " return self.ajcs.geiger(p0.T).T\n", + " return self.ajc.geiger(p0.T).T\n", "\n", " def sync(self, p0):\n", " pp = self.jumpactivity(p0)\n", - " return self.ajcs.synchronize(pp)\n", + " return self.ajc.synchronize(pp)\n", "\n", " def kernelmatrix(self):\n", - " return self.ajcs.km.toarray()\n", + " return self.ajc.km.toarray()\n", "\n", " def koopman_q(self):\n", " k = sps.identity(self.nx)\n", @@ -90,7 +90,7 @@ " return k\n", "\n", " def koopman_error(self):\n", - " ks = self.ajcs.koopman()\n", + " ks = self.ajc.koopman()\n", " #ks = self.koopman_sync()\n", " kq = self.koopman_q()\n", " return np.linalg.norm(ks-kq, 2)\n", @@ -450,7 +450,7 @@ } ], "source": [ - "%time x=pb.ajcs.koopman_system_iterated()\n", + "%time x=pb.ajc.koopman_system_iterated()\n", "plt.imshow(x)" ] }, @@ -489,7 +489,7 @@ } ], "source": [ - "%time x = pb.ajcs.koopman_system()\n", + "%time x = pb.ajc.koopman_system()\n", "plt.imshow(x)" ] }, @@ -789,7 +789,7 @@ } ], "source": [ - "jx0 = pqm.ajcs.jump(qm.x0)\n", + "jx0 = pqm.ajc.jump(qm.x0)\n", "p = plt.imshow(jx0.T)\n", "self = pqm\n", "#cb = plt.colorbar()\n", @@ -820,7 +820,7 @@ } ], "source": [ - "jx1 = pqm.ajcs.jump(jx0)\n", + "jx1 = pqm.ajc.jump(jx0)\n", "p = plt.imshow(jx1.T)\n", "self = pqm\n", "#cb = plt.colorbar()\n", @@ -936,14 +936,55 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "2" + ] + }, + "metadata": {}, + "execution_count": 34 + } + ], + "source": [ + "1+1" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "output_type": "error", + "ename": "NameError", + "evalue": "name 'test' is not defined", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mtest\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mNameError\u001b[0m: name 'test' is not defined" + ] + } + ], + "source": [ + "test" + ] + }, + { + "cell_type": "code", + "execution_count": 36, "metadata": {}, "outputs": [ { "output_type": "display_data", "data": { "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-02-23T15:56:44.644554\n image/svg+xml\n \n \n Matplotlib v3.3.4, https://matplotlib.org/\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 \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 \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", + "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-02-23T16:48:38.919977\n image/svg+xml\n \n \n Matplotlib v3.3.4, https://matplotlib.org/\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 \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 \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", "image/png": "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\n" }, "metadata": { @@ -1021,14 +1062,14 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 39, "metadata": {}, "outputs": [ { "output_type": "display_data", "data": { "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-02-23T15:56:45.440351\n image/svg+xml\n \n \n Matplotlib v3.3.4, https://matplotlib.org/\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 \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 \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 \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", + "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-02-23T17:06:04.708579\n image/svg+xml\n \n \n Matplotlib v3.3.4, https://matplotlib.org/\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 \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 \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 \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", "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAACjCAYAAACJ+KWEAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAALtUlEQVR4nO3dS28kZxXG8eeQi8lMLo1nWLBAIj1CbFhNPJvsCDaaLWJmIhS2sWGPYkZihYQGD+zYYLNhhZR4+ACJR+ID+LJAbCI0jiIhVh6rFEiUIKYPi357+uK+VDvd/Zbr/H+SZVdXV9Wpt6qeqnr7YnN3AQDq7yu5CwAALAaBDwBBEPgAEASBDwBBEPgAEASBDwBBPJu7gKWlF/zSpVdylzHRlW8s5y6hlEvPP5+7hFKefeaZ3CVMdPzon7lLKOWzzz7JXUIpT578N3cJpbRardwllHXi7l+fZoLsgX/p0it64423cpcx0U/u/jh3CaWsvPpq7hJKWX7xcu4SJnrrzc3cJZRyePhB7hJKOT39V+4SSvnii89yl1DKkyf/+3jaaejSAYAgCHwACILAB4AgCHwACILAB4AgCHwACILAB4AgCHwACILAB4AgCHwACILAB4AgCHwACILAB4AgCHwACILAB4AgCHwACGIugW9mDTPbnce8AQDnM/PAN7OGpHVJ12c9bwDA+c088N29cPf7kopZzxsAcH5Z/qetma2rfRegF154KUcJABBOlhdt3X3H3VfcfWVp6VKOEgAgHN6lAwBBzOtdOluSmma2lV7EBQBkNpc+fHfflLQ5j3kDAM6HLh0ACILAB4AgCHwACILAB4AgCHwACILAB4AgCHwACILAB4AgCHwACILAB4AgCHwACILAB4AgzhX4ZvatGdcBAJizsYFvZu+b2UsDj/1I0t5cqwIAzNykK/zfSvqrmX1PkszsD5LuuPu3514ZAGCmxga+uz+U9H1Jd83sH5IO3P3NhVQGAJipMv8A5Y6kZUn3Jd0xsz13/3hWBbz4tct6/Yevz2p2c/Prn/4ydwmlfPTR33KXUMqn/ylylzDRb/7059wllPKr3/88dwmlfHN5OXcJpVxeWspdQilLzz039TRjA9/M3pP02N1X0vCupPfM7AN3/925qgQAZDGpD/9dd/9ZZ8DdC3f/gaSr8y0LADBrk/rw/zLi8V/MpxwAwLzwwSsACILAB4AgCHwACILAB4AgCHwACILAB4AgCHwACILAB4AgCHwACILAB4AgCHwACILAB4AgCHwACKLMP0CZWvre/IakY3ffmMcyAADTmfkVvpmtS3rb3dfS8OqslwEAmN7Mr/Ddfadn8JHaV/oAgMzm3Ye/JunhnJcBAChhboFvZtuSNty9GDJu3cwOzOzg008+mVcJAIAecwl8M9uStOXux8PGu/uOu6+4+8rll1+eRwkAgAEz78M3s3ckrUq6bmaStO3uD2a9HADAdObxou19SfdnPV8AwJfDB68AIAgCHwCCIPABIAgCHwCCIPABIAgCHwCCIPABIAgCHwCCIPABIAgCHwCCIPABIAgCHwCCIPABIAgCHwCCIPABIAgCHwCCIPABIAhz97wFmP1b0odZiyjnqqST3EWUQJ2zcxFqlKhz1i5Knd9x95emmWDm/+LwHD5095XcRUxiZgfUOTsXoc6LUKNEnbN2keqcdhq6dAAgCAIfAIKoQuDv5C6gJOqcrYtQ50WoUaLOWattndlftAUALEYVrvABAAuQ9V06ZrYtaVnSsbtv5qxlFDNrSPqju9/OXcs4ZrYrqaF2W25kLmektM0lqajqNu8ws3ck3ajqtjez65J2JR2lh9529yJfRaOZ2S1Ja2lws2p1mtm6pM52Xpb0rrvfz1jSSOlYl6TTaY/1bFf4ZrYq6VE6mB6nnbdSUtivS6pcbb3Szvq2u6+l4dXMJQ2VtvFW2kmbVdzmHWnbX8tdRwkP3P12+ilyFzOMmTUlvenuG+mnyF3TIHffcfe1dAwdVDjs1yXtpdw8TCfS0nJ26aype2VyLKlyIeXuRdrwRe5axkk7a5EGH6l9pV857n7k7scpTJvufjRpmoy20k/VNc1sq8onT0m3JJ2a2baZ7eUuZpwUoIe56xjjQNJr6Rh6Td0MLSVn4Dcknaa/C0lXslVSL2uSHuYuYpSeboiq11i4+3HuWiYo0u97krbSlXQVXVH7bn5D0l5V70CTu+5e2Xfp9Fwk7eoc+2jOwC/U7iuT2uH/OFslNZH6xyt5y9yRrvIr3fWk9pV9M7Xn9XQbXTnuftzTlbOnCt4lJ4/VfzdfybuRdMKs9Ek+7YuH6Rh6fJG6dPbU3fA3NOWtCfqZ2Zba/eOV3WEHuh0eS6rkFWnqy70taVPSUVWv+Aba85qqG1ZH6h7rVQ7V65L2cxcxQWNgeHnYk0bJ9i4dd39oZmvpKqpw90re4qcgbabf96p49ZzeTbKq9tWoJG27+4O8VQ1V9LwzS1V998sFUqR3bJyqwsdQOtZvd2qt6guiap+MitxFjOPu981s18zW0vBUxxAfvAKAIPjgFQAEQeADQBAEPgAEQeADQBAEPgAEQeADI1T4k6vAuRD4wGgX4bt0gNIIfGCIzofZ0hd+NXLXA8wCH7wCRjCzvc73/gB1wBU+AARB4ANAEAQ+MFqRvqiKd+ugFujDB4AguMIHgCAIfAAIgsAHgCAIfAAIItu/OOy4efOmn5ycSJK6Lx9774AGX1YefKHZ+0cOnUZyDb4+XW66CcubwbRDp+uZ7/B5l1uf0Q/5qKf1PXnUuvbXOaIKL9FWZ/8YUdeYfWJkTWcb6MwzR7XhkOlHrmv/r2EPfKm6StU8rN4RbdseN3LDD0w7ooph6zF0vuWmG78/9rTs2P1l9DrNbn36px92TJWbfnxdk+abvO/uN8cs4IzsgX9ycqL9/X213J82jsvV8m5jdcadGVZnuP3cvnkMDg/Mc3B87zxbneM1PdbqmaZveMw8++Y75TzdNby2gXl2dorWiHl6e0bpMfXNw93lrf5heXeenXHDpnka2oPzbPU/X53pW/1tNDiN+pbRs5zB5/ctR2PXpf/5Q5Y7ME1n3UetS297dic5uy59y+3Mc8i6nF3/gXkOW/9OnT3rM2qadph0hltDnt96+rz+5bSGr5u7pNbZZfrZx7rzHLfctC6avNz2uBJ1Pj2Gxi/36b4+pM6RtU5R57jl9m3LoXUOqVVnl5tc1ZTo0gGAIAh8AAiCwAeAIAh8AAiCwAeAIAh8AAiCwAeAIAh8AAiCwAeAIAh8AAiCwAeAIAh8AAiCwAeAIAh8AAiCwAeAIKznu5XzFGD2d0mfZy2iOq5KOsldREXQFl20RRdt0fVVd//uNBNk/wcokj5395XcRVSBmR3QFm20RRdt0UVbdJnZwbTT0KUDAEEQ+AAQRBUCfyd3ARVCW3TRFl20RRdt0TV1W2R/0RYAsBhVuMIHACzAQt+lY2a3JBWSmu5+5nZk0vg6GbeuZtaQ1Ew/N9x9c+EFLlDZ7W5mW9Hbwsyuq71fyN0fLLa6xSIv2tJ6brj72pjxhUq0w8Ku8FNRcveHaXh1mvF1UmJd70ha6RzQZra+2AoXp+x2T483F1jawpVsi7tpv1g2s9q2R4m8WJV0nMYfpxNhLY07sU+bm4vs0rkh6Tj9fSxpcANNGl8nY9fV3Xd6ztTNnufW0cTtnoKtzm3QMbYt0ol/38yaaR+pc5tM2i8OJO127njc/WiRxVXIVLm5yMBvDAxfmXJ8nTQGhoeuawq6087Zu6YaA8PD2qJZ83DraAwMD7bFtfTYqZltp66/umoMDPe1hbsXkrYl7Up6bTElVVJjYHhsbi4y8AtJy19ifJ0UKreut9x9Y8615FZoTFuY2WrNT3i9Ck3eLx6lsDuUVNuuPpXYLyQ9dPdrkopO10ZAhabIzUUG/r66Z6OmpL0px9fJxHU1s1vufj/9XefurUltcWpmq+mAbgZvi/2evxtqH+x1Naktrvd049xTnIvFQVPl5sICP73w0Exn5kbPiwx748bX0aS2SI9vmdmhmR2qxjtzif3iKD22rLO3r7VS8hhpdF6Yq/M7Uya1haQdM1tP4+/UuS3SOq703sWcNzf54BUABMEHrwAgCAIfAIIg8AEgCAIfAIIg8AEgCAIfAIIg8AEgCAIfAIL4P8mWwgzG4CWCAAAAAElFTkSuQmCC\n" }, "metadata": { @@ -1038,6 +1079,7 @@ ], "source": [ "p = pg.plot_sync()\n", + "1\n", "plt.clim(0,1)\n", "plt.colorbar(orientation=\"horizontal\")\n", "savefig(\"ex1s.pdf\")" @@ -1045,22 +1087,22 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 37, "metadata": {}, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ - "array([ 2., 4., 6., 10., 16., 26., 44., 72., 120., 200.])" + "array([ 3., 5., 7., 11., 17., 27., 45., 73., 121., 201.])" ] }, "metadata": {}, - "execution_count": 30 + "execution_count": 37 } ], "source": [ - "ae.nts" + "ae.nts + 1a" ] }, { diff --git a/src/cmdtools/__init__.py b/src/cmdtools/__init__.py index 2de49e8..37e1978 100644 --- a/src/cmdtools/__init__.py +++ b/src/cmdtools/__init__.py @@ -1,3 +1,3 @@ from .analysis import pcca, schur, optimization -from .estimation import diffusionmaps, galerkin, gillespie, newton_generator, picking_algorithm, sqra, voronoi, ajcs +from .estimation import diffusionmaps, galerkin, gillespie, newton_generator, picking_algorithm, sqra, voronoi, ajc from .systems import diffusion diff --git a/src/cmdtools/estimation/ajcs.py b/src/cmdtools/estimation/ajc.py similarity index 99% rename from src/cmdtools/estimation/ajcs.py rename to src/cmdtools/estimation/ajc.py index 4ec6f3d..92a8bc2 100644 --- a/src/cmdtools/estimation/ajcs.py +++ b/src/cmdtools/estimation/ajc.py @@ -12,7 +12,7 @@ from scipy.optimize import minimize -class AJCS(): +class AJC(): """ sparse implementation of the Galerkin discretization to the AJC as in the preprint uses the """ diff --git a/tests/test_ajc.py b/tests/test_ajc.py index fda5fca..aa52cec 100644 --- a/tests/test_ajc.py +++ b/tests/test_ajc.py @@ -1,5 +1,5 @@ from cmdtools.systems import diffusion -from cmdtools.estimation import ajcs +from cmdtools.estimation import ajc import numpy as np from scipy.linalg import expm @@ -7,7 +7,7 @@ def test_ajc(n=20, tol=1e-2): Q = diffusion.DoubleWell().Q ts = np.repeat(1/n, n) - a = ajcs.AJCS(np.repeat(Q, n), ts) + a = ajc.AJC(np.repeat(Q, n), ts) assert np.isclose(expm(Q).todense(), a.koopman(), atol=tol).all() @@ -19,7 +19,7 @@ def test_ajc(n=20, tol=1e-2): def test_limit(tol=1e-5): Q = diffusion.DoubleWell().Q - a0 = ajcs.AJCS([Q, Q, Q], [0,1,0]) - a1 = ajcs.AJCS([Q, Q, Q], [1e-10, 1, 1e-10]) + a0 = ajc.AJC([Q, Q, Q], [0,1,0]) + a1 = ajc.AJC([Q, Q, Q], [1e-10, 1, 1e-10]) assert np.isclose(a1.koopman(), a0.koopman(), atol=tol).all()