Skip to content

Commit d582e9b

Browse files
committed
Dehankel needs debugging
1 parent 5c77091 commit d582e9b

File tree

3 files changed

+154
-36
lines changed

3 files changed

+154
-36
lines changed

pydmd/havok.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,7 @@ def hankel(self, X):
304304
H[i * n : (i + 1) * n] = X[
305305
:, i * self._lag : i * self._lag + num_cols
306306
]
307+
307308
return H
308309

309310
def dehankel(self, H):
@@ -319,9 +320,22 @@ def dehankel(self, H):
319320
if not isinstance(H, np.ndarray) or H.ndim != 2:
320321
raise ValueError("Please ensure that input data is a 2D array.")
321322
n = int(H.shape[0] / self._delays)
322-
X = np.hstack([H[:n], H[n:, -1].reshape(n, -1, order="F")])
323+
# TODO: debug this!
324+
m =
325+
X = np.empty(n, )
326+
for
327+
X = np.hstack([H[:n], H[n:, -self._lag].reshape(n, -1, order="F")])
323328
return X
324329

330+
# dummy_data = np.array([[1, 2, 3, 4, 5, 6]])
331+
# H2 = np.array([
332+
# [1, 2, 3, 4],
333+
# [3, 4, 5, 6]]) # lag=2, delays=2
334+
# H3 = np.array([
335+
# [1, 2],
336+
# [3, 4],
337+
# [5, 6]]) # lag=2, delays=3
338+
325339
def fit(self, X, t):
326340
"""
327341
Perform the HAVOK analysis.

tests/test_havok.py

Lines changed: 54 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ def test_hankel_1():
8484
"""
8585
Test
8686
"""
87-
dummy_data = np.array([1, 2, 3, 4])
87+
dummy_data = np.array([[1, 2, 3, 4]])
8888

8989
havok = HAVOK(delays=1)
9090
assert_equal(havok.hankel(dummy_data), np.array([[1, 2, 3, 4],]))
@@ -103,7 +103,59 @@ def test_hankel_1():
103103
assert_equal(havok.dehankel(havok.hankel(dummy_data)), dummy_data)
104104

105105
with raises(ValueError):
106-
havok = HAVOK(delays=5).fit(dummy_data, dummy_time)
106+
havok = HAVOK(delays=5)
107+
havok.hankel(dummy_data)
108+
109+
110+
def test_hankel_2():
111+
"""
112+
Test
113+
"""
114+
dummy_data = np.array([[1, 2, 3], [4, 5, 6]])
115+
H2 = np.array([[1, 2], [4, 5], [2, 3], [5, 6]])
116+
H3 = np.array([[1, 4, 2, 5, 3, 6]]).T
117+
118+
havok = HAVOK(delays=1)
119+
assert_equal(havok.hankel(dummy_data), dummy_data)
120+
assert_equal(havok.dehankel(havok.hankel(dummy_data)), dummy_data)
121+
122+
havok = HAVOK(delays=2)
123+
assert_equal(havok.hankel(dummy_data), H2)
124+
assert_equal(havok.dehankel(havok.hankel(dummy_data)), dummy_data)
125+
126+
havok = HAVOK(delays=3)
127+
assert_equal(havok.hankel(dummy_data), H3)
128+
assert_equal(havok.dehankel(havok.hankel(dummy_data)), dummy_data)
129+
130+
with raises(ValueError):
131+
havok = HAVOK(delays=4)
132+
havok.hankel(dummy_data)
133+
134+
135+
def test_hankel_3():
136+
"""
137+
Test
138+
"""
139+
dummy_data = np.array([[1, 2, 3, 4, 5, 6]])
140+
H2 = np.array([[1, 2, 3, 4], [3, 4, 5, 6]])
141+
H3 = np.array([[1, 2], [3, 4], [5, 6]])
142+
143+
# If only 1 delay is requested, the lag won't matter.
144+
havok = HAVOK(delays=1, lag=2)
145+
assert_equal(havok.hankel(dummy_data), dummy_data)
146+
assert_equal(havok.dehankel(havok.hankel(dummy_data)), dummy_data)
147+
148+
havok = HAVOK(delays=2, lag=2)
149+
assert_equal(havok.hankel(dummy_data), H2)
150+
assert_equal(havok.dehankel(havok.hankel(dummy_data)), dummy_data)
151+
152+
havok = HAVOK(delays=3, lag=3)
153+
assert_equal(havok.hankel(dummy_data), H3)
154+
assert_equal(havok.dehankel(havok.hankel(dummy_data)), dummy_data)
155+
156+
with raises(ValueError):
157+
havok = HAVOK(delays=2, lag=2)
158+
havok.hankel(dummy_data)
107159

108160

109161
def test_shape_1():

tutorials/tutorial19/tutorial-19-havok.ipynb

Lines changed: 85 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
},
2424
{
2525
"cell_type": "code",
26-
"execution_count": 20,
26+
"execution_count": 1,
2727
"id": "50f420c4",
2828
"metadata": {},
2929
"outputs": [],
@@ -37,7 +37,7 @@
3737
},
3838
{
3939
"cell_type": "code",
40-
"execution_count": 29,
40+
"execution_count": 8,
4141
"id": "1567a968-7a03-4dda-ac6d-2dfbecbde882",
4242
"metadata": {},
4343
"outputs": [],
@@ -81,57 +81,109 @@
8181
" with raises(ValueError):\n",
8282
" _ = havok.r\n",
8383
"\n",
84-
"def test_snapshots_1():\n",
84+
"def test_hankel_1():\n",
8585
" \"\"\"\n",
8686
" Test\n",
8787
" \"\"\"\n",
88-
" dummy_data = np.array([1, 2, 3, 4])\n",
89-
" dummy_time = np.array([1, 2, 3, 4])\n",
90-
"\n",
91-
" # havok = HAVOK(svd_rank=-1, delays=1).fit(dummy_data, dummy_time)\n",
92-
" # assert_equal(\n",
93-
" # havok.ho_snapshots, np.array([[1, 2, 3, 4],])\n",
94-
" # )\n",
95-
" havok = HAVOK(svd_rank=-1, delays=2).fit(dummy_data, dummy_time)\n",
96-
" assert_equal(\n",
97-
" havok.ho_snapshots, np.array([[1, 2, 3], [2, 3, 4]])\n",
98-
" )\n",
99-
" havok = HAVOK(svd_rank=-1, delays=3).fit(dummy_data, dummy_time)\n",
100-
" assert_equal(\n",
101-
" havok.ho_snapshots, np.array([[1, 2], [2, 3], [3, 4]])\n",
102-
" )\n",
103-
" havok = HAVOK(svd_rank=-1, delays=4).fit(dummy_data, dummy_time)\n",
104-
" assert_equal(\n",
105-
" havok.ho_snapshots, np.array([[1,], [2,], [3,], [4,]])\n",
106-
" )\n",
88+
" dummy_data = np.array([[1, 2, 3, 4]])\n",
89+
"\n",
90+
" havok = HAVOK(delays=1)\n",
91+
" assert_equal(havok.hankel(dummy_data), np.array([[1, 2, 3, 4],]))\n",
92+
" assert_equal(havok.dehankel(havok.hankel(dummy_data)), dummy_data)\n",
93+
"\n",
94+
" havok = HAVOK(delays=2)\n",
95+
" assert_equal(havok.hankel(dummy_data), np.array([[1, 2, 3], [2, 3, 4]]))\n",
96+
" assert_equal(havok.dehankel(havok.hankel(dummy_data)), dummy_data)\n",
97+
"\n",
98+
" havok = HAVOK(delays=3)\n",
99+
" assert_equal(havok.hankel(dummy_data), np.array([[1, 2], [2, 3], [3, 4]]))\n",
100+
" assert_equal(havok.dehankel(havok.hankel(dummy_data)), dummy_data)\n",
101+
"\n",
102+
" havok = HAVOK(delays=4)\n",
103+
" assert_equal(havok.hankel(dummy_data), np.array([[1,], [2,], [3,], [4,]]))\n",
104+
" assert_equal(havok.dehankel(havok.hankel(dummy_data)), dummy_data)\n",
105+
"\n",
106+
" with raises(ValueError):\n",
107+
" havok = HAVOK(delays=5)\n",
108+
" havok.hankel(dummy_data)\n",
109+
"\n",
110+
"def test_hankel_2():\n",
111+
" \"\"\"\n",
112+
" Test\n",
113+
" \"\"\"\n",
114+
" dummy_data = np.array([[1, 2, 3], [4, 5, 6]])\n",
115+
" H2 = np.array([[1, 2], [4, 5], [2, 3], [5, 6]])\n",
116+
" H3 = np.array([[1, 4, 2, 5, 3, 6]]).T\n",
117+
"\n",
118+
" havok = HAVOK(delays=1)\n",
119+
" assert_equal(havok.hankel(dummy_data), dummy_data)\n",
120+
" assert_equal(havok.dehankel(havok.hankel(dummy_data)), dummy_data)\n",
121+
"\n",
122+
" havok = HAVOK(delays=2)\n",
123+
" assert_equal(havok.hankel(dummy_data), H2)\n",
124+
" assert_equal(havok.dehankel(havok.hankel(dummy_data)), dummy_data)\n",
125+
"\n",
126+
" havok = HAVOK(delays=3)\n",
127+
" assert_equal(havok.hankel(dummy_data), H3)\n",
128+
" assert_equal(havok.dehankel(havok.hankel(dummy_data)), dummy_data)\n",
129+
"\n",
130+
" with raises(ValueError):\n",
131+
" havok = HAVOK(delays=4)\n",
132+
" havok.hankel(dummy_data)\n",
133+
"\n",
134+
"def test_hankel_3():\n",
135+
" \"\"\"\n",
136+
" Test\n",
137+
" \"\"\"\n",
138+
" dummy_data = np.array([[1, 2, 3, 4, 5, 6]])\n",
139+
" H2 = np.array([[1, 2, 3, 4], [3, 4, 5, 6]])\n",
140+
" H3 = np.array([[1, 2], [3, 4], [5, 6]])\n",
141+
"\n",
142+
" # If only 1 delay is requested, the lag won't matter.\n",
143+
" havok = HAVOK(delays=1, lag=2)\n",
144+
" assert_equal(havok.hankel(dummy_data), dummy_data)\n",
145+
" assert_equal(havok.dehankel(havok.hankel(dummy_data)), dummy_data)\n",
146+
"\n",
147+
" havok = HAVOK(delays=2, lag=2)\n",
148+
" assert_equal(havok.hankel(dummy_data), H2)\n",
149+
" assert_equal(havok.dehankel(havok.hankel(dummy_data)), dummy_data)\n",
150+
"\n",
151+
" havok = HAVOK(delays=3, lag=3)\n",
152+
" assert_equal(havok.hankel(dummy_data), H3)\n",
153+
" assert_equal(havok.dehankel(havok.hankel(dummy_data)), dummy_data)\n",
154+
"\n",
107155
" with raises(ValueError):\n",
108-
" havok = HAVOK(svd_rank=-1, delays=5).fit(dummy_data, dummy_time)"
156+
" havok = HAVOK(delays=2, lag=2)\n",
157+
" havok.hankel(dummy_data)"
109158
]
110159
},
111160
{
112161
"cell_type": "code",
113-
"execution_count": 30,
162+
"execution_count": 9,
114163
"id": "5e5a0b0b-68c0-44b6-982b-83e11400d4f6",
115164
"metadata": {},
116165
"outputs": [
117166
{
118-
"ename": "IndexError",
119-
"evalue": "index 2 is out of bounds for axis 1 with size 2",
167+
"ename": "AssertionError",
168+
"evalue": "\nArrays are not equal\n\n(shapes (1, 5), (1, 6) mismatch)\n x: array([[1., 2., 3., 4., 6.]])\n y: array([[1, 2, 3, 4, 5, 6]])",
120169
"output_type": "error",
121170
"traceback": [
122171
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
123-
"\u001b[0;31mIndexError\u001b[0m Traceback (most recent call last)",
124-
"Cell \u001b[0;32mIn[30], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m test_error_fitted()\n\u001b[0;32m----> 2\u001b[0m \u001b[43mtest_snapshots_1\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n",
125-
"Cell \u001b[0;32mIn[29], line 55\u001b[0m, in \u001b[0;36mtest_snapshots_1\u001b[0;34m()\u001b[0m\n\u001b[1;32m 51\u001b[0m havok \u001b[38;5;241m=\u001b[39m HAVOK(svd_rank\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m, delays\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m2\u001b[39m)\u001b[38;5;241m.\u001b[39mfit(dummy_data, dummy_time)\n\u001b[1;32m 52\u001b[0m assert_equal(\n\u001b[1;32m 53\u001b[0m havok\u001b[38;5;241m.\u001b[39mho_snapshots, np\u001b[38;5;241m.\u001b[39marray([[\u001b[38;5;241m1\u001b[39m, \u001b[38;5;241m2\u001b[39m, \u001b[38;5;241m3\u001b[39m], [\u001b[38;5;241m2\u001b[39m, \u001b[38;5;241m3\u001b[39m, \u001b[38;5;241m4\u001b[39m]])\n\u001b[1;32m 54\u001b[0m )\n\u001b[0;32m---> 55\u001b[0m havok \u001b[38;5;241m=\u001b[39m \u001b[43mHAVOK\u001b[49m\u001b[43m(\u001b[49m\u001b[43msvd_rank\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m-\u001b[39;49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdelays\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m3\u001b[39;49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfit\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdummy_data\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdummy_time\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 56\u001b[0m assert_equal(\n\u001b[1;32m 57\u001b[0m havok\u001b[38;5;241m.\u001b[39mho_snapshots, np\u001b[38;5;241m.\u001b[39marray([[\u001b[38;5;241m1\u001b[39m, \u001b[38;5;241m2\u001b[39m], [\u001b[38;5;241m2\u001b[39m, \u001b[38;5;241m3\u001b[39m], [\u001b[38;5;241m3\u001b[39m, \u001b[38;5;241m4\u001b[39m]])\n\u001b[1;32m 58\u001b[0m )\n\u001b[1;32m 59\u001b[0m havok \u001b[38;5;241m=\u001b[39m HAVOK(svd_rank\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m, delays\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m4\u001b[39m)\u001b[38;5;241m.\u001b[39mfit(dummy_data, dummy_time)\n",
126-
"File \u001b[0;32m~/Desktop/PyDMD/PyDMD/pydmd/havok.py:348\u001b[0m, in \u001b[0;36mHAVOK.fit\u001b[0;34m(self, X, t)\u001b[0m\n\u001b[1;32m 346\u001b[0m U, s, V \u001b[38;5;241m=\u001b[39m compute_svd(hankel_matrix, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_svd_rank)\n\u001b[1;32m 347\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_r \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mlen\u001b[39m(s)\n\u001b[0;32m--> 348\u001b[0m V_dot \u001b[38;5;241m=\u001b[39m \u001b[43mdifferentiate\u001b[49m\u001b[43m(\u001b[49m\u001b[43mV\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mT\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdt\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241m.\u001b[39mT\n\u001b[1;32m 350\u001b[0m \u001b[38;5;66;03m# Generate an error if too few HAVOK embeddings are being used.\u001b[39;00m\n\u001b[1;32m 351\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_r \u001b[38;5;241m<\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_num_chaos \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m1\u001b[39m:\n",
127-
"File \u001b[0;32m~/Desktop/PyDMD/PyDMD/pydmd/utils.py:238\u001b[0m, in \u001b[0;36mdifferentiate\u001b[0;34m(X, dt)\u001b[0m\n\u001b[1;32m 236\u001b[0m X_prime \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39mempty(X\u001b[38;5;241m.\u001b[39mshape)\n\u001b[1;32m 237\u001b[0m X_prime[:, \u001b[38;5;241m1\u001b[39m:\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m] \u001b[38;5;241m=\u001b[39m (X[:, \u001b[38;5;241m2\u001b[39m:] \u001b[38;5;241m-\u001b[39m X[:, :\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m2\u001b[39m]) \u001b[38;5;241m/\u001b[39m (\u001b[38;5;241m2\u001b[39m \u001b[38;5;241m*\u001b[39m dt)\n\u001b[0;32m--> 238\u001b[0m X_prime[:, \u001b[38;5;241m0\u001b[39m] \u001b[38;5;241m=\u001b[39m (\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m3\u001b[39m \u001b[38;5;241m*\u001b[39m X[:, \u001b[38;5;241m0\u001b[39m] \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m4\u001b[39m \u001b[38;5;241m*\u001b[39m X[:, \u001b[38;5;241m1\u001b[39m] \u001b[38;5;241m-\u001b[39m \u001b[43mX\u001b[49m\u001b[43m[\u001b[49m\u001b[43m:\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m2\u001b[39;49m\u001b[43m]\u001b[49m) \u001b[38;5;241m/\u001b[39m (\u001b[38;5;241m2\u001b[39m \u001b[38;5;241m*\u001b[39m dt)\n\u001b[1;32m 239\u001b[0m X_prime[:, \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m] \u001b[38;5;241m=\u001b[39m (\u001b[38;5;241m3\u001b[39m \u001b[38;5;241m*\u001b[39m X[:, \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m] \u001b[38;5;241m-\u001b[39m \u001b[38;5;241m4\u001b[39m \u001b[38;5;241m*\u001b[39m X[:, \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m2\u001b[39m] \u001b[38;5;241m+\u001b[39m X[:, \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m3\u001b[39m]) \u001b[38;5;241m/\u001b[39m (\u001b[38;5;241m2\u001b[39m \u001b[38;5;241m*\u001b[39m dt)\n\u001b[1;32m 240\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m np\u001b[38;5;241m.\u001b[39msqueeze(X_prime)\n",
128-
"\u001b[0;31mIndexError\u001b[0m: index 2 is out of bounds for axis 1 with size 2"
172+
"\u001b[0;31mAssertionError\u001b[0m Traceback (most recent call last)",
173+
"Cell \u001b[0;32mIn[9], line 4\u001b[0m\n\u001b[1;32m 2\u001b[0m test_hankel_1()\n\u001b[1;32m 3\u001b[0m test_hankel_2()\n\u001b[0;32m----> 4\u001b[0m \u001b[43mtest_hankel_3\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n",
174+
"Cell \u001b[0;32mIn[8], line 105\u001b[0m, in \u001b[0;36mtest_hankel_3\u001b[0;34m()\u001b[0m\n\u001b[1;32m 103\u001b[0m havok \u001b[38;5;241m=\u001b[39m HAVOK(delays\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m2\u001b[39m, lag\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m2\u001b[39m)\n\u001b[1;32m 104\u001b[0m assert_equal(havok\u001b[38;5;241m.\u001b[39mhankel(dummy_data), H2)\n\u001b[0;32m--> 105\u001b[0m \u001b[43massert_equal\u001b[49m\u001b[43m(\u001b[49m\u001b[43mhavok\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdehankel\u001b[49m\u001b[43m(\u001b[49m\u001b[43mhavok\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhankel\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdummy_data\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdummy_data\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 107\u001b[0m havok \u001b[38;5;241m=\u001b[39m HAVOK(delays\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m3\u001b[39m, lag\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m3\u001b[39m)\n\u001b[1;32m 108\u001b[0m assert_equal(havok\u001b[38;5;241m.\u001b[39mhankel(dummy_data), H3)\n",
175+
" \u001b[0;31m[... skipping hidden 2 frame]\u001b[0m\n",
176+
"File \u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/contextlib.py:81\u001b[0m, in \u001b[0;36mContextDecorator.__call__.<locals>.inner\u001b[0;34m(*args, **kwds)\u001b[0m\n\u001b[1;32m 78\u001b[0m \u001b[38;5;129m@wraps\u001b[39m(func)\n\u001b[1;32m 79\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21minner\u001b[39m(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwds):\n\u001b[1;32m 80\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_recreate_cm():\n\u001b[0;32m---> 81\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwds\u001b[49m\u001b[43m)\u001b[49m\n",
177+
"File \u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/numpy/testing/_private/utils.py:713\u001b[0m, in \u001b[0;36massert_array_compare\u001b[0;34m(comparison, x, y, err_msg, verbose, header, precision, equal_nan, equal_inf, strict)\u001b[0m\n\u001b[1;32m 707\u001b[0m reason \u001b[38;5;241m=\u001b[39m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m(dtypes \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mx\u001b[38;5;241m.\u001b[39mdtype\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m, \u001b[39m\u001b[38;5;132;01m{\u001b[39;00my\u001b[38;5;241m.\u001b[39mdtype\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m mismatch)\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[1;32m 708\u001b[0m msg \u001b[38;5;241m=\u001b[39m build_err_msg([x, y],\n\u001b[1;32m 709\u001b[0m err_msg\n\u001b[1;32m 710\u001b[0m \u001b[38;5;241m+\u001b[39m reason,\n\u001b[1;32m 711\u001b[0m verbose\u001b[38;5;241m=\u001b[39mverbose, header\u001b[38;5;241m=\u001b[39mheader,\n\u001b[1;32m 712\u001b[0m names\u001b[38;5;241m=\u001b[39m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mx\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124my\u001b[39m\u001b[38;5;124m'\u001b[39m), precision\u001b[38;5;241m=\u001b[39mprecision)\n\u001b[0;32m--> 713\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mAssertionError\u001b[39;00m(msg)\n\u001b[1;32m 715\u001b[0m flagged \u001b[38;5;241m=\u001b[39m bool_(\u001b[38;5;28;01mFalse\u001b[39;00m)\n\u001b[1;32m 716\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m isnumber(x) \u001b[38;5;129;01mand\u001b[39;00m isnumber(y):\n",
178+
"\u001b[0;31mAssertionError\u001b[0m: \nArrays are not equal\n\n(shapes (1, 5), (1, 6) mismatch)\n x: array([[1., 2., 3., 4., 6.]])\n y: array([[1, 2, 3, 4, 5, 6]])"
129179
]
130180
}
131181
],
132182
"source": [
133183
"test_error_fitted()\n",
134-
"test_snapshots_1()"
184+
"test_hankel_1()\n",
185+
"test_hankel_2()\n",
186+
"test_hankel_3()"
135187
]
136188
},
137189
{

0 commit comments

Comments
 (0)