summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lab-windows/dsss_experiments.ipynb750
1 files changed, 693 insertions, 57 deletions
diff --git a/lab-windows/dsss_experiments.ipynb b/lab-windows/dsss_experiments.ipynb
index 9566edf..d11e02e 100644
--- a/lab-windows/dsss_experiments.ipynb
+++ b/lab-windows/dsss_experiments.ipynb
@@ -10,6 +10,9 @@
"import numpy as np\n",
"from scipy import signal as sig\n",
"import struct\n",
+ "import random\n",
+ "import ipywidgets\n",
+ "import itertools\n",
"\n",
"import colorednoise\n",
"\n",
@@ -63,13 +66,13 @@
},
{
"cell_type": "code",
- "execution_count": 16,
+ "execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "2450440508db4069b3df05fa08346b39",
+ "model_id": "a4f8421f05544016854b22a49dbc3698",
"version_major": 2,
"version_minor": 0
},
@@ -90,10 +93,10 @@
{
"data": {
"text/plain": [
- "<matplotlib.image.AxesImage at 0x7fe4abaf7490>"
+ "<matplotlib.image.AxesImage at 0x7f8fd0fdaac0>"
]
},
- "execution_count": 16,
+ "execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
@@ -105,7 +108,7 @@
},
{
"cell_type": "code",
- "execution_count": 17,
+ "execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
@@ -120,7 +123,7 @@
},
{
"cell_type": "code",
- "execution_count": 18,
+ "execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
@@ -134,7 +137,7 @@
},
{
"cell_type": "code",
- "execution_count": 19,
+ "execution_count": 8,
"metadata": {},
"outputs": [
{
@@ -147,7 +150,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "750255b26cc74aa0974d288fda4c7142",
+ "model_id": "c99513c0fb7f4b138367186127e379cf",
"version_major": 2,
"version_minor": 0
},
@@ -168,10 +171,10 @@
{
"data": {
"text/plain": [
- "[<matplotlib.lines.Line2D at 0x7fe4aa733850>]"
+ "[<matplotlib.lines.Line2D at 0x7f8fce86df40>]"
]
},
- "execution_count": 19,
+ "execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
@@ -184,7 +187,7 @@
},
{
"cell_type": "code",
- "execution_count": 20,
+ "execution_count": 9,
"metadata": {},
"outputs": [
{
@@ -197,7 +200,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "996e7034b52d47409ad4548c354b72bd",
+ "model_id": "93658d824ced42e5b1107501398234b4",
"version_major": 2,
"version_minor": 0
},
@@ -219,10 +222,10 @@
{
"data": {
"text/plain": [
- "(2.0, 1.0490216904842018)"
+ "(2.0, 0.944245383185962)"
]
},
- "execution_count": 20,
+ "execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
@@ -266,7 +269,7 @@
},
{
"cell_type": "code",
- "execution_count": 21,
+ "execution_count": 10,
"metadata": {},
"outputs": [
{
@@ -286,23 +289,23 @@
},
{
"cell_type": "code",
- "execution_count": 22,
+ "execution_count": 20,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
- "(63,) (63,)\n",
- "(63,) (63,)\n",
- "(63,) (63,)\n",
- "(63,) (63,)\n"
+ "(31,) (31,)\n",
+ "(31,) (31,)\n",
+ "(31,) (31,)\n",
+ "(31,) (31,)\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "abdce9c2d307402f8578eb83d9ce9b79",
+ "model_id": "97fba8da8bd74c1aa46c4fabb9e68088",
"version_major": 2,
"version_minor": 0
},
@@ -316,20 +319,23 @@
{
"data": {
"text/plain": [
- "(0.002, 0.012591236)"
+ "(0.001, 0.010294564)"
]
},
- "execution_count": 22,
+ "execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"decimation = 10\n",
- "signal_amplitude = 2.0e-3\n",
- "nbits = 6\n",
+ "signal_amplitude = 1.0e-3\n",
+ "nbits = 5\n",
"\n",
- "foo = np.repeat(modulate(np.array([0, 1, 0, 0, 1, 1, 1, 0]), nbits) * 2.0 - 1, decimation) * signal_amplitude\n",
+ "#test_data = np.random.randint(0, 2, 100)\n",
+ "test_data = np.array([0, 1, 0, 0, 1, 1, 1, 0])\n",
+ "\n",
+ "foo = np.repeat(modulate(test_data, nbits) * 2.0 - 1, decimation) * signal_amplitude\n",
"noise = np.resize(mains_noise, len(foo))\n",
"\n",
"sosh = sig.butter(3, 0.01, btype='highpass', output='sos', fs=decimation)\n",
@@ -385,13 +391,13 @@
},
{
"cell_type": "code",
- "execution_count": 23,
+ "execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "8feea8e305004d33a39f2541a59a0ffa",
+ "model_id": "1c8e27744cd0482782fa0d65ed550ba6",
"version_major": 2,
"version_minor": 0
},
@@ -412,10 +418,10 @@
{
"data": {
"text/plain": [
- "[<matplotlib.lines.Line2D at 0x7fe4a9934c40>]"
+ "[<matplotlib.lines.Line2D at 0x7f8fc2cab1f0>]"
]
},
- "execution_count": 23,
+ "execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
@@ -435,13 +441,13 @@
},
{
"cell_type": "code",
- "execution_count": 24,
+ "execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "01df90b27d57470d9216ae9c549413c8",
+ "model_id": "483d7acbb9604c9c93533d342d6068ad",
"version_major": 2,
"version_minor": 0
},
@@ -462,10 +468,10 @@
{
"data": {
"text/plain": [
- "[<matplotlib.lines.Line2D at 0x7fe4a9596070>]"
+ "[<matplotlib.lines.Line2D at 0x7f8fc2679310>]"
]
},
- "execution_count": 24,
+ "execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
@@ -492,21 +498,13 @@
},
{
"cell_type": "code",
- "execution_count": 49,
+ "execution_count": 24,
"metadata": {},
"outputs": [
{
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "<ipython-input-49-9776d553457e>:5: RuntimeWarning: More than 20 figures have been opened. Figures created through the pyplot interface (`matplotlib.pyplot.figure`) are retained until explicitly closed and may consume too much memory. (To control this warning, see the rcParam `figure.max_open_warning`).\n",
- " fig, (ax1, ax2, ax3) = plt.subplots(3, figsize=(12, 12))\n"
- ]
- },
- {
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "183f086844054252bc8ec77f7b99abfc",
+ "model_id": "61142286f07245fea6b3d080bd6d963b",
"version_major": 2,
"version_minor": 0
},
@@ -520,7 +518,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "30db7a9c75834d64a31bf8e0fb5f5911",
+ "model_id": "591cc5914cfd4812bad96502207bc01f",
"version_major": 2,
"version_minor": 0
},
@@ -532,20 +530,604 @@
"output_type": "display_data"
},
{
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ " candidates for 32.5, -0.30796614799228145:\n",
+ " 7.6945 309.50 -0.51\n",
+ " 4.9788 419.50 -0.41\n",
+ " 2.4515 211.00 0.38\n",
+ " 1.8240 158.50 0.35\n",
+ " candidates for 158.5, 0.34903632894813835:\n",
+ " 5.6264 419.50 -0.41\n",
+ " 2.5562 618.50 0.54\n",
+ " 2.1462 309.50 -0.51\n",
+ " 1.3863 211.00 0.38\n",
+ " candidates for 211.0, 0.3800947813243649:\n",
+ " 3.9276 618.50 0.54\n",
+ " 3.0726 419.50 -0.41\n",
+ " 1.6974 309.50 -0.51\n",
+ " candidates for 309.5, -0.5053314278026041:\n",
+ " 29.3614 618.50 0.54\n",
+ " 1.7265 419.50 -0.41\n",
+ " candidates for 419.5, -0.40531218065962255:\n",
+ " 4.0528 823.00 -0.44\n",
+ " 2.9151 618.50 0.54\n",
+ "chain candidates:\n",
+ " [(29.36136019270347, [('309.50', '-0.51'), ('618.50', '0.54')])]\n",
+ " [(7.69452617901758, [('32.50', '-0.31'), ('309.50', '-0.51')])]\n",
+ " [(5.626384903889135, [('158.50', '0.35'), ('419.50', '-0.41')])]\n",
+ " [(4.978775493314884, [('32.50', '-0.31'), ('419.50', '-0.41')])]\n",
+ " [(4.052840585124125, [('419.50', '-0.41'), ('823.00', '-0.44')])]\n",
+ " [(3.92759395893727, [('211.00', '0.38'), ('618.50', '0.54')])]\n",
+ " [(3.0726112472804843, [('211.00', '0.38'), ('419.50', '-0.41')])]\n",
+ " [(2.9150792009679662, [('419.50', '-0.41'), ('618.50', '0.54')])]\n",
+ " [(2.5561653875086985, [('158.50', '0.35'), ('618.50', '0.54')])]\n",
+ " [(2.451531489602112, [('32.50', '-0.31'), ('211.00', '0.38')])]\n",
+ " [(2.1461568381616574, [('158.50', '0.35'), ('309.50', '-0.51')])]\n",
+ " [(1.726465614139335, [('309.50', '-0.51'), ('419.50', '-0.41')])]\n",
+ " [(1.6973609734949815, [('211.00', '0.38'), ('309.50', '-0.51')])]\n",
+ " candidates for 618.5, 0.540902203588826:\n",
+ " 35.8652 929.50 -0.62\n",
+ " 4.0145 1022.50 0.41\n",
+ " 3.0106 1055.00 0.53\n",
+ " 2.9911 823.00 -0.44\n",
+ " candidates for 309.5, -0.5053314278026041:\n",
+ " 29.3614 618.50 0.54\n",
+ " 1.7265 419.50 -0.41\n",
+ " candidates for 419.5, -0.40531218065962255:\n",
+ " 4.0528 823.00 -0.44\n",
+ " 2.9151 618.50 0.54\n",
+ " candidates for 419.5, -0.40531218065962255:\n",
+ " 4.0528 823.00 -0.44\n",
+ " 2.9151 618.50 0.54\n",
+ " candidates for 823.0, -0.4410105115656168:\n",
+ " 30.6933 1153.50 -0.43\n",
+ " 3.9002 1055.00 0.53\n",
+ " 3.5615 1240.50 -0.56\n",
+ " 2.8605 1022.50 0.41\n",
+ " 1.8085 929.50 -0.62\n",
+ " candidates for 618.5, 0.540902203588826:\n",
+ " 35.8652 929.50 -0.62\n",
+ " 4.0145 1022.50 0.41\n",
+ " 3.0106 1055.00 0.53\n",
+ " 2.9911 823.00 -0.44\n",
+ " candidates for 419.5, -0.40531218065962255:\n",
+ " 4.0528 823.00 -0.44\n",
+ " 2.9151 618.50 0.54\n",
+ " candidates for 618.5, 0.540902203588826:\n",
+ " 35.8652 929.50 -0.62\n",
+ " 4.0145 1022.50 0.41\n",
+ " 3.0106 1055.00 0.53\n",
+ " 2.9911 823.00 -0.44\n",
+ " candidates for 618.5, 0.540902203588826:\n",
+ " 35.8652 929.50 -0.62\n",
+ " 4.0145 1022.50 0.41\n",
+ " 3.0106 1055.00 0.53\n",
+ " 2.9911 823.00 -0.44\n",
+ " candidates for 211.0, 0.3800947813243649:\n",
+ " 3.9276 618.50 0.54\n",
+ " 3.0726 419.50 -0.41\n",
+ " 1.6974 309.50 -0.51\n",
+ "chain candidates:\n",
+ " [(35.86521493289496, [('419.50', '-0.41'), ('618.50', '0.54'), ('929.50', '-0.62')])]\n",
+ " [(35.86521493289496, [('309.50', '-0.51'), ('618.50', '0.54'), ('929.50', '-0.62')])]\n",
+ " [(35.86521493289496, [('211.00', '0.38'), ('618.50', '0.54'), ('929.50', '-0.62')])]\n",
+ " [(35.86521493289496, [('158.50', '0.35'), ('618.50', '0.54'), ('929.50', '-0.62')])]\n",
+ " [(30.693332126158438, [('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43')])]\n",
+ " [(29.36136019270347, [('32.50', '-0.31'), ('309.50', '-0.51'), ('618.50', '0.54')])]\n",
+ " [(4.052840585124125, [('211.00', '0.38'), ('419.50', '-0.41'), ('823.00', '-0.44')])]\n",
+ " [(4.052840585124125, [('158.50', '0.35'), ('419.50', '-0.41'), ('823.00', '-0.44')])]\n",
+ " [(4.052840585124125, [('32.50', '-0.31'), ('419.50', '-0.41'), ('823.00', '-0.44')])]\n",
+ " [(4.014470627816998, [('419.50', '-0.41'), ('618.50', '0.54'), ('1022.50', '0.41')])]\n",
+ " [(4.014470627816998, [('309.50', '-0.51'), ('618.50', '0.54'), ('1022.50', '0.41')])]\n",
+ " [(4.014470627816998, [('211.00', '0.38'), ('618.50', '0.54'), ('1022.50', '0.41')])]\n",
+ " [(4.014470627816998, [('158.50', '0.35'), ('618.50', '0.54'), ('1022.50', '0.41')])]\n",
+ " [(3.92759395893727, [('32.50', '-0.31'), ('211.00', '0.38'), ('618.50', '0.54')])]\n",
+ " [(3.900204331202999, [('419.50', '-0.41'), ('823.00', '-0.44'), ('1055.00', '0.53')])]\n",
+ " [(3.5614986168976417, [('419.50', '-0.41'), ('823.00', '-0.44'), ('1240.50', '-0.56')])]\n",
+ " [(3.0726112472804843, [('32.50', '-0.31'), ('211.00', '0.38'), ('419.50', '-0.41')])]\n",
+ " [(3.0106218107191913, [('419.50', '-0.41'), ('618.50', '0.54'), ('1055.00', '0.53')])]\n",
+ " [(3.0106218107191913, [('309.50', '-0.51'), ('618.50', '0.54'), ('1055.00', '0.53')])]\n",
+ " [(3.0106218107191913, [('211.00', '0.38'), ('618.50', '0.54'), ('1055.00', '0.53')])]\n",
+ " [(3.0106218107191913, [('158.50', '0.35'), ('618.50', '0.54'), ('1055.00', '0.53')])]\n",
+ " [(2.9150792009679662, [('211.00', '0.38'), ('419.50', '-0.41'), ('618.50', '0.54')])]\n",
+ " [(2.9150792009679662, [('158.50', '0.35'), ('419.50', '-0.41'), ('618.50', '0.54')])]\n",
+ " [(2.9150792009679662, [('32.50', '-0.31'), ('419.50', '-0.41'), ('618.50', '0.54')])]\n",
+ " [(1.726465614139335, [('32.50', '-0.31'), ('309.50', '-0.51'), ('419.50', '-0.41')])]\n",
+ " [(1.6973609734949815, [('32.50', '-0.31'), ('211.00', '0.38'), ('309.50', '-0.51')])]\n",
+ " candidates for 929.5, -0.6193187546786915:\n",
+ " 35.8350 1240.50 -0.56\n",
+ " 3.5505 1153.50 -0.43\n",
+ " 3.0349 1366.00 0.58\n",
+ " 1.9091 1055.00 0.53\n",
+ " 1.6146 1022.50 0.41\n",
+ " candidates for 929.5, -0.6193187546786915:\n",
+ " 35.8350 1240.50 -0.56\n",
+ " 3.5505 1153.50 -0.43\n",
+ " 3.0349 1366.00 0.58\n",
+ " 1.9091 1055.00 0.53\n",
+ " 1.6146 1022.50 0.41\n",
+ " candidates for 929.5, -0.6193187546786915:\n",
+ " 35.8350 1240.50 -0.56\n",
+ " 3.5505 1153.50 -0.43\n",
+ " 3.0349 1366.00 0.58\n",
+ " 1.9091 1055.00 0.53\n",
+ " 1.6146 1022.50 0.41\n",
+ " candidates for 929.5, -0.6193187546786915:\n",
+ " 35.8350 1240.50 -0.56\n",
+ " 3.5505 1153.50 -0.43\n",
+ " 3.0349 1366.00 0.58\n",
+ " 1.9091 1055.00 0.53\n",
+ " 1.6146 1022.50 0.41\n",
+ " candidates for 1153.5, -0.4342832999357559:\n",
+ " 6.9736 1426.00 -0.47\n",
+ " 4.5113 1549.50 0.60\n",
+ " 3.2649 1366.00 0.58\n",
+ " 1.6528 1240.50 -0.56\n",
+ " candidates for 618.5, 0.540902203588826:\n",
+ " 35.8652 929.50 -0.62\n",
+ " 4.0145 1022.50 0.41\n",
+ " 3.0106 1055.00 0.53\n",
+ " 2.9911 823.00 -0.44\n",
+ " candidates for 823.0, -0.4410105115656168:\n",
+ " 30.6933 1153.50 -0.43\n",
+ " 3.9002 1055.00 0.53\n",
+ " 3.5615 1240.50 -0.56\n",
+ " 2.8605 1022.50 0.41\n",
+ " 1.8085 929.50 -0.62\n",
+ " candidates for 823.0, -0.4410105115656168:\n",
+ " 30.6933 1153.50 -0.43\n",
+ " 3.9002 1055.00 0.53\n",
+ " 3.5615 1240.50 -0.56\n",
+ " 2.8605 1022.50 0.41\n",
+ " 1.8085 929.50 -0.62\n",
+ " candidates for 823.0, -0.4410105115656168:\n",
+ " 30.6933 1153.50 -0.43\n",
+ " 3.9002 1055.00 0.53\n",
+ " 3.5615 1240.50 -0.56\n",
+ " 2.8605 1022.50 0.41\n",
+ " 1.8085 929.50 -0.62\n",
+ " candidates for 1022.5, 0.4098936365863757:\n",
+ " 13.9051 1366.00 0.58\n",
+ " 4.0691 1426.00 -0.47\n",
+ " 3.4167 1240.50 -0.56\n",
+ " 1.9103 1153.50 -0.43\n",
+ " 1.3769 1055.00 0.53\n",
+ "chain candidates:\n",
+ " [(35.86521493289496, [('32.50', '-0.31'), ('309.50', '-0.51'), ('618.50', '0.54'), ('929.50', '-0.62')])]\n",
+ " [(35.835002890401974, [('419.50', '-0.41'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56')])]\n",
+ " [(35.835002890401974, [('309.50', '-0.51'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56')])]\n",
+ " [(35.835002890401974, [('211.00', '0.38'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56')])]\n",
+ " [(35.835002890401974, [('158.50', '0.35'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56')])]\n",
+ " [(30.693332126158438, [('211.00', '0.38'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43')])]\n",
+ " [(30.693332126158438, [('158.50', '0.35'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43')])]\n",
+ " [(30.693332126158438, [('32.50', '-0.31'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43')])]\n",
+ " [(13.905133395544146, [('419.50', '-0.41'), ('618.50', '0.54'), ('1022.50', '0.41'), ('1366.00', '0.58')])]\n",
+ " [(6.9736079278832195, [('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1426.00', '-0.47')])]\n",
+ " [(4.511327725367169, [('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1549.50', '0.60')])]\n",
+ " [(4.069101151961379, [('419.50', '-0.41'), ('618.50', '0.54'), ('1022.50', '0.41'), ('1426.00', '-0.47')])]\n",
+ " [(4.014470627816998, [('32.50', '-0.31'), ('309.50', '-0.51'), ('618.50', '0.54'), ('1022.50', '0.41')])]\n",
+ " [(3.900204331202999, [('211.00', '0.38'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1055.00', '0.53')])]\n",
+ " [(3.900204331202999, [('158.50', '0.35'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1055.00', '0.53')])]\n",
+ " [(3.900204331202999, [('32.50', '-0.31'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1055.00', '0.53')])]\n",
+ " [(3.5614986168976417, [('211.00', '0.38'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1240.50', '-0.56')])]\n",
+ " [(3.5614986168976417, [('158.50', '0.35'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1240.50', '-0.56')])]\n",
+ " [(3.5614986168976417, [('32.50', '-0.31'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1240.50', '-0.56')])]\n",
+ " [(3.550474983301211, [('419.50', '-0.41'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1153.50', '-0.43')])]\n",
+ " [(3.550474983301211, [('309.50', '-0.51'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1153.50', '-0.43')])]\n",
+ " [(3.550474983301211, [('211.00', '0.38'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1153.50', '-0.43')])]\n",
+ " [(3.550474983301211, [('158.50', '0.35'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1153.50', '-0.43')])]\n",
+ " [(3.4167022368071445, [('419.50', '-0.41'), ('618.50', '0.54'), ('1022.50', '0.41'), ('1240.50', '-0.56')])]\n",
+ " [(3.2648563049949213, [('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1366.00', '0.58')])]\n",
+ " [(3.0348932348282385, [('419.50', '-0.41'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1366.00', '0.58')])]\n",
+ " [(3.0348932348282385, [('309.50', '-0.51'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1366.00', '0.58')])]\n",
+ " [(3.0348932348282385, [('211.00', '0.38'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1366.00', '0.58')])]\n",
+ " [(3.0348932348282385, [('158.50', '0.35'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1366.00', '0.58')])]\n",
+ " [(3.0106218107191913, [('32.50', '-0.31'), ('309.50', '-0.51'), ('618.50', '0.54'), ('1055.00', '0.53')])]\n",
+ " candidates for 929.5, -0.6193187546786915:\n",
+ " 35.8350 1240.50 -0.56\n",
+ " 3.5505 1153.50 -0.43\n",
+ " 3.0349 1366.00 0.58\n",
+ " 1.9091 1055.00 0.53\n",
+ " 1.6146 1022.50 0.41\n",
+ " candidates for 1240.5, -0.5588946696927191:\n",
+ " 29.3917 1549.50 0.60\n",
+ " 2.6159 1426.00 -0.47\n",
+ " 2.2893 1716.00 0.46\n",
+ " 1.9334 1366.00 0.58\n",
+ " candidates for 1240.5, -0.5588946696927191:\n",
+ " 29.3917 1549.50 0.60\n",
+ " 2.6159 1426.00 -0.47\n",
+ " 2.2893 1716.00 0.46\n",
+ " 1.9334 1366.00 0.58\n",
+ " candidates for 1240.5, -0.5588946696927191:\n",
+ " 29.3917 1549.50 0.60\n",
+ " 2.6159 1426.00 -0.47\n",
+ " 2.2893 1716.00 0.46\n",
+ " 1.9334 1366.00 0.58\n",
+ " candidates for 1240.5, -0.5588946696927191:\n",
+ " 29.3917 1549.50 0.60\n",
+ " 2.6159 1426.00 -0.47\n",
+ " 2.2893 1716.00 0.46\n",
+ " 1.9334 1366.00 0.58\n",
+ " candidates for 1153.5, -0.4342832999357559:\n",
+ " 6.9736 1426.00 -0.47\n",
+ " 4.5113 1549.50 0.60\n",
+ " 3.2649 1366.00 0.58\n",
+ " 1.6528 1240.50 -0.56\n",
+ " candidates for 1153.5, -0.4342832999357559:\n",
+ " 6.9736 1426.00 -0.47\n",
+ " 4.5113 1549.50 0.60\n",
+ " 3.2649 1366.00 0.58\n",
+ " 1.6528 1240.50 -0.56\n",
+ " candidates for 1153.5, -0.4342832999357559:\n",
+ " 6.9736 1426.00 -0.47\n",
+ " 4.5113 1549.50 0.60\n",
+ " 3.2649 1366.00 0.58\n",
+ " 1.6528 1240.50 -0.56\n",
+ " candidates for 1366.0, 0.5762242378968192:\n",
+ " 10.8981 1716.00 0.46\n",
+ " 2.6451 1549.50 0.60\n",
+ " 1.4675 1426.00 -0.47\n",
+ " candidates for 1426.0, -0.47353164524012403:\n",
+ " 10.8981 1716.00 0.46\n",
+ " 3.0884 1860.50 0.59\n",
+ " 1.9293 1549.50 0.60\n",
+ "chain candidates:\n",
+ " [(35.835002890401974, [('32.50', '-0.31'), ('309.50', '-0.51'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56')])]\n",
+ " [(29.391710500486752, [('419.50', '-0.41'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60')])]\n",
+ " [(29.391710500486752, [('309.50', '-0.51'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60')])]\n",
+ " [(29.391710500486752, [('211.00', '0.38'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60')])]\n",
+ " [(29.391710500486752, [('158.50', '0.35'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60')])]\n",
+ " [(10.8980671118677, [('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1426.00', '-0.47'), ('1716.00', '0.46')])]\n",
+ " [(10.8980671118677, [('419.50', '-0.41'), ('618.50', '0.54'), ('1022.50', '0.41'), ('1366.00', '0.58'), ('1716.00', '0.46')])]\n",
+ " [(6.9736079278832195, [('211.00', '0.38'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1426.00', '-0.47')])]\n",
+ " [(6.9736079278832195, [('158.50', '0.35'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1426.00', '-0.47')])]\n",
+ " [(6.9736079278832195, [('32.50', '-0.31'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1426.00', '-0.47')])]\n",
+ " [(4.511327725367169, [('211.00', '0.38'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1549.50', '0.60')])]\n",
+ " [(4.511327725367169, [('158.50', '0.35'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1549.50', '0.60')])]\n",
+ " [(4.511327725367169, [('32.50', '-0.31'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1549.50', '0.60')])]\n",
+ " [(3.550474983301211, [('32.50', '-0.31'), ('309.50', '-0.51'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1153.50', '-0.43')])]\n",
+ " [(3.2648563049949213, [('211.00', '0.38'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1366.00', '0.58')])]\n",
+ " [(3.2648563049949213, [('158.50', '0.35'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1366.00', '0.58')])]\n",
+ " [(3.2648563049949213, [('32.50', '-0.31'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1366.00', '0.58')])]\n",
+ " [(3.088380538661272, [('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1426.00', '-0.47'), ('1860.50', '0.59')])]\n",
+ " [(3.0348932348282385, [('32.50', '-0.31'), ('309.50', '-0.51'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1366.00', '0.58')])]\n",
+ " [(2.645123753900041, [('419.50', '-0.41'), ('618.50', '0.54'), ('1022.50', '0.41'), ('1366.00', '0.58'), ('1549.50', '0.60')])]\n",
+ " [(2.615947978753891, [('419.50', '-0.41'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1426.00', '-0.47')])]\n",
+ " [(2.615947978753891, [('309.50', '-0.51'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1426.00', '-0.47')])]\n",
+ " [(2.615947978753891, [('211.00', '0.38'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1426.00', '-0.47')])]\n",
+ " [(2.615947978753891, [('158.50', '0.35'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1426.00', '-0.47')])]\n",
+ " [(2.289278258705857, [('419.50', '-0.41'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1716.00', '0.46')])]\n",
+ " [(2.289278258705857, [('309.50', '-0.51'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1716.00', '0.46')])]\n",
+ " [(2.289278258705857, [('211.00', '0.38'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1716.00', '0.46')])]\n",
+ " [(2.289278258705857, [('158.50', '0.35'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1716.00', '0.46')])]\n",
+ " [(1.9293001373130654, [('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1426.00', '-0.47'), ('1549.50', '0.60')])]\n",
+ " [(1.4675350533892928, [('419.50', '-0.41'), ('618.50', '0.54'), ('1022.50', '0.41'), ('1366.00', '0.58'), ('1426.00', '-0.47')])]\n",
+ " candidates for 1240.5, -0.5588946696927191:\n",
+ " 29.3917 1549.50 0.60\n",
+ " 2.6159 1426.00 -0.47\n",
+ " 2.2893 1716.00 0.46\n",
+ " 1.9334 1366.00 0.58\n",
+ " candidates for 1549.5, 0.6016028191553928:\n",
+ " 35.8492 1860.50 0.59\n",
+ " 3.3339 1972.50 0.45\n",
+ " 2.3161 1716.00 0.46\n",
+ " candidates for 1549.5, 0.6016028191553928:\n",
+ " 35.8492 1860.50 0.59\n",
+ " 3.3339 1972.50 0.45\n",
+ " 2.3161 1716.00 0.46\n",
+ " candidates for 1549.5, 0.6016028191553928:\n",
+ " 35.8492 1860.50 0.59\n",
+ " 3.3339 1972.50 0.45\n",
+ " 2.3161 1716.00 0.46\n",
+ " candidates for 1549.5, 0.6016028191553928:\n",
+ " 35.8492 1860.50 0.59\n",
+ " 3.3339 1972.50 0.45\n",
+ " 2.3161 1716.00 0.46\n",
+ " candidates for 1716.0, 0.462800890402067:\n",
+ " 6.1740 2089.50 0.39\n",
+ " 5.2664 1972.50 0.45\n",
+ " 2.8998 2156.50 -0.49\n",
+ " 2.1170 1860.50 0.59\n",
+ " candidates for 1716.0, 0.462800890402067:\n",
+ " 6.1740 2089.50 0.39\n",
+ " 5.2664 1972.50 0.45\n",
+ " 2.8998 2156.50 -0.49\n",
+ " 2.1170 1860.50 0.59\n",
+ " candidates for 1426.0, -0.47353164524012403:\n",
+ " 10.8981 1716.00 0.46\n",
+ " 3.0884 1860.50 0.59\n",
+ " 1.9293 1549.50 0.60\n",
+ " candidates for 1426.0, -0.47353164524012403:\n",
+ " 10.8981 1716.00 0.46\n",
+ " 3.0884 1860.50 0.59\n",
+ " 1.9293 1549.50 0.60\n",
+ " candidates for 1426.0, -0.47353164524012403:\n",
+ " 10.8981 1716.00 0.46\n",
+ " 3.0884 1860.50 0.59\n",
+ " 1.9293 1549.50 0.60\n",
+ "chain candidates:\n",
+ " [(35.84917626888937, [('419.50', '-0.41'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1860.50', '0.59')])]\n",
+ " [(35.84917626888937, [('309.50', '-0.51'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1860.50', '0.59')])]\n",
+ " [(35.84917626888937, [('211.00', '0.38'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1860.50', '0.59')])]\n",
+ " [(35.84917626888937, [('158.50', '0.35'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1860.50', '0.59')])]\n",
+ " [(29.391710500486752, [('32.50', '-0.31'), ('309.50', '-0.51'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60')])]\n",
+ " [(10.8980671118677, [('211.00', '0.38'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1426.00', '-0.47'), ('1716.00', '0.46')])]\n",
+ " [(10.8980671118677, [('158.50', '0.35'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1426.00', '-0.47'), ('1716.00', '0.46')])]\n",
+ " [(10.8980671118677, [('32.50', '-0.31'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1426.00', '-0.47'), ('1716.00', '0.46')])]\n",
+ " [(6.173953539976651, [('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1426.00', '-0.47'), ('1716.00', '0.46'), ('2089.50', '0.39')])]\n",
+ " [(6.173953539976651, [('419.50', '-0.41'), ('618.50', '0.54'), ('1022.50', '0.41'), ('1366.00', '0.58'), ('1716.00', '0.46'), ('2089.50', '0.39')])]\n",
+ " [(5.266444098570901, [('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1426.00', '-0.47'), ('1716.00', '0.46'), ('1972.50', '0.45')])]\n",
+ " [(5.266444098570901, [('419.50', '-0.41'), ('618.50', '0.54'), ('1022.50', '0.41'), ('1366.00', '0.58'), ('1716.00', '0.46'), ('1972.50', '0.45')])]\n",
+ " [(3.333870136335599, [('419.50', '-0.41'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1972.50', '0.45')])]\n",
+ " [(3.333870136335599, [('309.50', '-0.51'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1972.50', '0.45')])]\n",
+ " [(3.333870136335599, [('211.00', '0.38'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1972.50', '0.45')])]\n",
+ " [(3.333870136335599, [('158.50', '0.35'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1972.50', '0.45')])]\n",
+ " [(3.088380538661272, [('211.00', '0.38'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1426.00', '-0.47'), ('1860.50', '0.59')])]\n",
+ " [(3.088380538661272, [('158.50', '0.35'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1426.00', '-0.47'), ('1860.50', '0.59')])]\n",
+ " [(3.088380538661272, [('32.50', '-0.31'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1426.00', '-0.47'), ('1860.50', '0.59')])]\n",
+ " [(2.8998303227280857, [('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1426.00', '-0.47'), ('1716.00', '0.46'), ('2156.50', '-0.49')])]\n",
+ " [(2.8998303227280857, [('419.50', '-0.41'), ('618.50', '0.54'), ('1022.50', '0.41'), ('1366.00', '0.58'), ('1716.00', '0.46'), ('2156.50', '-0.49')])]\n",
+ " [(2.615947978753891, [('32.50', '-0.31'), ('309.50', '-0.51'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1426.00', '-0.47')])]\n",
+ " [(2.3160909989469616, [('419.50', '-0.41'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1716.00', '0.46')])]\n",
+ " [(2.3160909989469616, [('309.50', '-0.51'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1716.00', '0.46')])]\n",
+ " [(2.3160909989469616, [('211.00', '0.38'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1716.00', '0.46')])]\n",
+ " [(2.3160909989469616, [('158.50', '0.35'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1716.00', '0.46')])]\n",
+ " [(2.289278258705857, [('32.50', '-0.31'), ('309.50', '-0.51'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1716.00', '0.46')])]\n",
+ " [(1.9293001373130654, [('211.00', '0.38'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1426.00', '-0.47'), ('1549.50', '0.60')])]\n",
+ " [(1.9293001373130654, [('158.50', '0.35'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1426.00', '-0.47'), ('1549.50', '0.60')])]\n",
+ " [(1.9293001373130654, [('32.50', '-0.31'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1426.00', '-0.47'), ('1549.50', '0.60')])]\n",
+ " candidates for 1860.5, 0.587241426667523:\n",
+ " 13.5776 2156.50 -0.49\n",
+ " 4.6432 2252.00 0.34\n",
+ " 3.7091 2089.50 0.39\n",
+ " 1.7655 1972.50 0.45\n",
+ " candidates for 1860.5, 0.587241426667523:\n",
+ " 13.5776 2156.50 -0.49\n",
+ " 4.6432 2252.00 0.34\n",
+ " 3.7091 2089.50 0.39\n",
+ " 1.7655 1972.50 0.45\n",
+ " candidates for 1860.5, 0.587241426667523:\n",
+ " 13.5776 2156.50 -0.49\n",
+ " 4.6432 2252.00 0.34\n",
+ " 3.7091 2089.50 0.39\n",
+ " 1.7655 1972.50 0.45\n",
+ " candidates for 1860.5, 0.587241426667523:\n",
+ " 13.5776 2156.50 -0.49\n",
+ " 4.6432 2252.00 0.34\n",
+ " 3.7091 2089.50 0.39\n",
+ " 1.7655 1972.50 0.45\n",
+ " candidates for 1549.5, 0.6016028191553928:\n",
+ " 35.8492 1860.50 0.59\n",
+ " 3.3339 1972.50 0.45\n",
+ " 2.3161 1716.00 0.46\n",
+ " candidates for 1716.0, 0.462800890402067:\n",
+ " 6.1740 2089.50 0.39\n",
+ " 5.2664 1972.50 0.45\n",
+ " 2.8998 2156.50 -0.49\n",
+ " 2.1170 1860.50 0.59\n",
+ " candidates for 1716.0, 0.462800890402067:\n",
+ " 6.1740 2089.50 0.39\n",
+ " 5.2664 1972.50 0.45\n",
+ " 2.8998 2156.50 -0.49\n",
+ " 2.1170 1860.50 0.59\n",
+ " candidates for 1716.0, 0.462800890402067:\n",
+ " 6.1740 2089.50 0.39\n",
+ " 5.2664 1972.50 0.45\n",
+ " 2.8998 2156.50 -0.49\n",
+ " 2.1170 1860.50 0.59\n",
+ " candidates for 2089.5, 0.3852902575233996:\n",
+ " 8.3442 2370.50 -0.28\n",
+ " 4.7167 2480.50 -0.42\n",
+ " 2.1995 2252.00 0.34\n",
+ " 1.5091 2156.50 -0.49\n",
+ " candidates for 2089.5, 0.3852902575233996:\n",
+ " 8.3442 2370.50 -0.28\n",
+ " 4.7167 2480.50 -0.42\n",
+ " 2.1995 2252.00 0.34\n",
+ " 1.5091 2156.50 -0.49\n",
+ "chain candidates:\n",
+ " [(35.84917626888937, [('32.50', '-0.31'), ('309.50', '-0.51'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1860.50', '0.59')])]\n",
+ " [(13.577561996310388, [('419.50', '-0.41'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1860.50', '0.59'), ('2156.50', '-0.49')])]\n",
+ " [(13.577561996310388, [('309.50', '-0.51'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1860.50', '0.59'), ('2156.50', '-0.49')])]\n",
+ " [(13.577561996310388, [('211.00', '0.38'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1860.50', '0.59'), ('2156.50', '-0.49')])]\n",
+ " [(13.577561996310388, [('158.50', '0.35'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1860.50', '0.59'), ('2156.50', '-0.49')])]\n",
+ " [(8.34422970205904, [('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1426.00', '-0.47'), ('1716.00', '0.46'), ('2089.50', '0.39'), ('2370.50', '-0.28')])]\n",
+ " [(8.34422970205904, [('419.50', '-0.41'), ('618.50', '0.54'), ('1022.50', '0.41'), ('1366.00', '0.58'), ('1716.00', '0.46'), ('2089.50', '0.39'), ('2370.50', '-0.28')])]\n",
+ " [(6.173953539976651, [('211.00', '0.38'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1426.00', '-0.47'), ('1716.00', '0.46'), ('2089.50', '0.39')])]\n",
+ " [(6.173953539976651, [('158.50', '0.35'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1426.00', '-0.47'), ('1716.00', '0.46'), ('2089.50', '0.39')])]\n",
+ " [(6.173953539976651, [('32.50', '-0.31'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1426.00', '-0.47'), ('1716.00', '0.46'), ('2089.50', '0.39')])]\n",
+ " [(5.266444098570901, [('211.00', '0.38'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1426.00', '-0.47'), ('1716.00', '0.46'), ('1972.50', '0.45')])]\n",
+ " [(5.266444098570901, [('158.50', '0.35'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1426.00', '-0.47'), ('1716.00', '0.46'), ('1972.50', '0.45')])]\n",
+ " [(5.266444098570901, [('32.50', '-0.31'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1426.00', '-0.47'), ('1716.00', '0.46'), ('1972.50', '0.45')])]\n",
+ " [(4.716677612654047, [('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1426.00', '-0.47'), ('1716.00', '0.46'), ('2089.50', '0.39'), ('2480.50', '-0.42')])]\n",
+ " [(4.716677612654047, [('419.50', '-0.41'), ('618.50', '0.54'), ('1022.50', '0.41'), ('1366.00', '0.58'), ('1716.00', '0.46'), ('2089.50', '0.39'), ('2480.50', '-0.42')])]\n",
+ " [(4.643240934821138, [('419.50', '-0.41'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1860.50', '0.59'), ('2252.00', '0.34')])]\n",
+ " [(4.643240934821138, [('309.50', '-0.51'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1860.50', '0.59'), ('2252.00', '0.34')])]\n",
+ " [(4.643240934821138, [('211.00', '0.38'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1860.50', '0.59'), ('2252.00', '0.34')])]\n",
+ " [(4.643240934821138, [('158.50', '0.35'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1860.50', '0.59'), ('2252.00', '0.34')])]\n",
+ " [(3.7091286452452157, [('419.50', '-0.41'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1860.50', '0.59'), ('2089.50', '0.39')])]\n",
+ " [(3.7091286452452157, [('309.50', '-0.51'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1860.50', '0.59'), ('2089.50', '0.39')])]\n",
+ " [(3.7091286452452157, [('211.00', '0.38'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1860.50', '0.59'), ('2089.50', '0.39')])]\n",
+ " [(3.7091286452452157, [('158.50', '0.35'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1860.50', '0.59'), ('2089.50', '0.39')])]\n",
+ " [(3.333870136335599, [('32.50', '-0.31'), ('309.50', '-0.51'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1972.50', '0.45')])]\n",
+ " [(2.8998303227280857, [('211.00', '0.38'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1426.00', '-0.47'), ('1716.00', '0.46'), ('2156.50', '-0.49')])]\n",
+ " [(2.8998303227280857, [('158.50', '0.35'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1426.00', '-0.47'), ('1716.00', '0.46'), ('2156.50', '-0.49')])]\n",
+ " [(2.8998303227280857, [('32.50', '-0.31'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1426.00', '-0.47'), ('1716.00', '0.46'), ('2156.50', '-0.49')])]\n",
+ " [(2.3160909989469616, [('32.50', '-0.31'), ('309.50', '-0.51'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1716.00', '0.46')])]\n",
+ " [(2.1994624910426936, [('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1426.00', '-0.47'), ('1716.00', '0.46'), ('2089.50', '0.39'), ('2252.00', '0.34')])]\n",
+ " [(2.1994624910426936, [('419.50', '-0.41'), ('618.50', '0.54'), ('1022.50', '0.41'), ('1366.00', '0.58'), ('1716.00', '0.46'), ('2089.50', '0.39'), ('2252.00', '0.34')])]\n",
+ " candidates for 1860.5, 0.587241426667523:\n",
+ " 13.5776 2156.50 -0.49\n",
+ " 4.6432 2252.00 0.34\n",
+ " 3.7091 2089.50 0.39\n",
+ " 1.7655 1972.50 0.45\n",
+ " candidates for 2156.5, -0.4884573259540951:\n",
+ " 80.2096 2480.50 -0.42\n",
+ " 3.1580 2370.50 -0.28\n",
+ " 2.6215 2605.50 0.28\n",
+ " 1.5931 2252.00 0.34\n",
+ " candidates for 2156.5, -0.4884573259540951:\n",
+ " 80.2096 2480.50 -0.42\n",
+ " 3.1580 2370.50 -0.28\n",
+ " 2.6215 2605.50 0.28\n",
+ " 1.5931 2252.00 0.34\n",
+ " candidates for 2156.5, -0.4884573259540951:\n",
+ " 80.2096 2480.50 -0.42\n",
+ " 3.1580 2370.50 -0.28\n",
+ " 2.6215 2605.50 0.28\n",
+ " 1.5931 2252.00 0.34\n",
+ " candidates for 2156.5, -0.4884573259540951:\n",
+ " 80.2096 2480.50 -0.42\n",
+ " 3.1580 2370.50 -0.28\n",
+ " 2.6215 2605.50 0.28\n",
+ " 1.5931 2252.00 0.34\n",
+ " candidates for 2370.5, -0.2782029938616636:\n",
+ " 8.4892 2728.50 -0.14\n",
+ " 8.1897 2651.00 -0.18\n",
+ " 4.5779 2761.50 0.14\n",
+ " 3.9056 2605.50 0.28\n",
+ " 1.7334 2480.50 -0.42\n",
+ " candidates for 2370.5, -0.2782029938616636:\n",
+ " 8.4892 2728.50 -0.14\n",
+ " 8.1897 2651.00 -0.18\n",
+ " 4.5779 2761.50 0.14\n",
+ " 3.9056 2605.50 0.28\n",
+ " 1.7334 2480.50 -0.42\n",
+ " candidates for 2089.5, 0.3852902575233996:\n",
+ " 8.3442 2370.50 -0.28\n",
+ " 4.7167 2480.50 -0.42\n",
+ " 2.1995 2252.00 0.34\n",
+ " 1.5091 2156.50 -0.49\n",
+ " candidates for 2089.5, 0.3852902575233996:\n",
+ " 8.3442 2370.50 -0.28\n",
+ " 4.7167 2480.50 -0.42\n",
+ " 2.1995 2252.00 0.34\n",
+ " 1.5091 2156.50 -0.49\n",
+ " candidates for 2089.5, 0.3852902575233996:\n",
+ " 8.3442 2370.50 -0.28\n",
+ " 4.7167 2480.50 -0.42\n",
+ " 2.1995 2252.00 0.34\n",
+ " 1.5091 2156.50 -0.49\n",
+ "chain candidates:\n",
+ " [(80.2096353591332, [('419.50', '-0.41'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1860.50', '0.59'), ('2156.50', '-0.49'), ('2480.50', '-0.42')])]\n",
+ " [(80.2096353591332, [('309.50', '-0.51'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1860.50', '0.59'), ('2156.50', '-0.49'), ('2480.50', '-0.42')])]\n",
+ " [(80.2096353591332, [('211.00', '0.38'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1860.50', '0.59'), ('2156.50', '-0.49'), ('2480.50', '-0.42')])]\n",
+ " [(80.2096353591332, [('158.50', '0.35'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1860.50', '0.59'), ('2156.50', '-0.49'), ('2480.50', '-0.42')])]\n",
+ " [(13.577561996310388, [('32.50', '-0.31'), ('309.50', '-0.51'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1860.50', '0.59'), ('2156.50', '-0.49')])]\n",
+ " [(8.34422970205904, [('211.00', '0.38'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1426.00', '-0.47'), ('1716.00', '0.46'), ('2089.50', '0.39'), ('2370.50', '-0.28')])]\n",
+ " [(8.34422970205904, [('158.50', '0.35'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1426.00', '-0.47'), ('1716.00', '0.46'), ('2089.50', '0.39'), ('2370.50', '-0.28')])]\n",
+ " [(8.34422970205904, [('32.50', '-0.31'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1426.00', '-0.47'), ('1716.00', '0.46'), ('2089.50', '0.39'), ('2370.50', '-0.28')])]\n",
+ " [(4.716677612654047, [('211.00', '0.38'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1426.00', '-0.47'), ('1716.00', '0.46'), ('2089.50', '0.39'), ('2480.50', '-0.42')])]\n",
+ " [(4.716677612654047, [('158.50', '0.35'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1426.00', '-0.47'), ('1716.00', '0.46'), ('2089.50', '0.39'), ('2480.50', '-0.42')])]\n",
+ " [(4.716677612654047, [('32.50', '-0.31'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1426.00', '-0.47'), ('1716.00', '0.46'), ('2089.50', '0.39'), ('2480.50', '-0.42')])]\n",
+ " [(4.643240934821138, [('32.50', '-0.31'), ('309.50', '-0.51'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1860.50', '0.59'), ('2252.00', '0.34')])]\n",
+ " [(3.7091286452452157, [('32.50', '-0.31'), ('309.50', '-0.51'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1860.50', '0.59'), ('2089.50', '0.39')])]\n",
+ " [(3.1579694214591334, [('419.50', '-0.41'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1860.50', '0.59'), ('2156.50', '-0.49'), ('2370.50', '-0.28')])]\n",
+ " [(3.1579694214591334, [('309.50', '-0.51'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1860.50', '0.59'), ('2156.50', '-0.49'), ('2370.50', '-0.28')])]\n",
+ " [(3.1579694214591334, [('211.00', '0.38'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1860.50', '0.59'), ('2156.50', '-0.49'), ('2370.50', '-0.28')])]\n",
+ " [(3.1579694214591334, [('158.50', '0.35'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1860.50', '0.59'), ('2156.50', '-0.49'), ('2370.50', '-0.28')])]\n",
+ " [(2.6214860493499117, [('419.50', '-0.41'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1860.50', '0.59'), ('2156.50', '-0.49'), ('2605.50', '0.28')])]\n",
+ " [(2.6214860493499117, [('309.50', '-0.51'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1860.50', '0.59'), ('2156.50', '-0.49'), ('2605.50', '0.28')])]\n",
+ " [(2.6214860493499117, [('211.00', '0.38'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1860.50', '0.59'), ('2156.50', '-0.49'), ('2605.50', '0.28')])]\n",
+ " [(2.6214860493499117, [('158.50', '0.35'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1860.50', '0.59'), ('2156.50', '-0.49'), ('2605.50', '0.28')])]\n",
+ " [(2.1994624910426936, [('211.00', '0.38'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1426.00', '-0.47'), ('1716.00', '0.46'), ('2089.50', '0.39'), ('2252.00', '0.34')])]\n",
+ " [(2.1994624910426936, [('158.50', '0.35'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1426.00', '-0.47'), ('1716.00', '0.46'), ('2089.50', '0.39'), ('2252.00', '0.34')])]\n",
+ " [(2.1994624910426936, [('32.50', '-0.31'), ('419.50', '-0.41'), ('823.00', '-0.44'), ('1153.50', '-0.43'), ('1426.00', '-0.47'), ('1716.00', '0.46'), ('2089.50', '0.39'), ('2252.00', '0.34')])]\n",
+ " candidates for 2480.5, -0.41927071826584167:\n",
+ " 8.2759 2761.50 0.14\n",
+ " 4.5126 2728.50 -0.14\n",
+ " 2.2289 2651.00 -0.18\n",
+ " 1.7819 2605.50 0.28\n",
+ " candidates for 2480.5, -0.41927071826584167:\n",
+ " 8.2759 2761.50 0.14\n",
+ " 4.5126 2728.50 -0.14\n",
+ " 2.2289 2651.00 -0.18\n",
+ " 1.7819 2605.50 0.28\n",
+ " candidates for 2480.5, -0.41927071826584167:\n",
+ " 8.2759 2761.50 0.14\n",
+ " 4.5126 2728.50 -0.14\n",
+ " 2.2289 2651.00 -0.18\n",
+ " 1.7819 2605.50 0.28\n",
+ " candidates for 2480.5, -0.41927071826584167:\n",
+ " 8.2759 2761.50 0.14\n",
+ " 4.5126 2728.50 -0.14\n",
+ " 2.2289 2651.00 -0.18\n",
+ " 1.7819 2605.50 0.28\n",
+ " candidates for 2156.5, -0.4884573259540951:\n",
+ " 80.2096 2480.50 -0.42\n",
+ " 3.1580 2370.50 -0.28\n",
+ " 2.6215 2605.50 0.28\n",
+ " 1.5931 2252.00 0.34\n",
+ " candidates for 2370.5, -0.2782029938616636:\n",
+ " 8.4892 2728.50 -0.14\n",
+ " 8.1897 2651.00 -0.18\n",
+ " 4.5779 2761.50 0.14\n",
+ " 3.9056 2605.50 0.28\n",
+ " 1.7334 2480.50 -0.42\n",
+ " candidates for 2370.5, -0.2782029938616636:\n",
+ " 8.4892 2728.50 -0.14\n",
+ " 8.1897 2651.00 -0.18\n",
+ " 4.5779 2761.50 0.14\n",
+ " 3.9056 2605.50 0.28\n",
+ " 1.7334 2480.50 -0.42\n",
+ " candidates for 2370.5, -0.2782029938616636:\n",
+ " 8.4892 2728.50 -0.14\n",
+ " 8.1897 2651.00 -0.18\n",
+ " 4.5779 2761.50 0.14\n",
+ " 3.9056 2605.50 0.28\n",
+ " 1.7334 2480.50 -0.42\n",
+ " candidates for 2480.5, -0.41927071826584167:\n",
+ " 8.2759 2761.50 0.14\n",
+ " 4.5126 2728.50 -0.14\n",
+ " 2.2289 2651.00 -0.18\n",
+ " 1.7819 2605.50 0.28\n",
+ " candidates for 2480.5, -0.41927071826584167:\n",
+ " 8.2759 2761.50 0.14\n",
+ " 4.5126 2728.50 -0.14\n",
+ " 2.2289 2651.00 -0.18\n",
+ " 1.7819 2605.50 0.28\n",
+ "chain candidates:\n",
+ " [(80.2096353591332, [('32.50', '-0.31'), ('309.50', '-0.51'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1860.50', '0.59'), ('2156.50', '-0.49'), ('2480.50', '-0.42')])]\n",
+ " [(3.1579694214591334, [('32.50', '-0.31'), ('309.50', '-0.51'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1860.50', '0.59'), ('2156.50', '-0.49'), ('2370.50', '-0.28')])]\n",
+ " [(2.6214860493499117, [('32.50', '-0.31'), ('309.50', '-0.51'), ('618.50', '0.54'), ('929.50', '-0.62'), ('1240.50', '-0.56'), ('1549.50', '0.60'), ('1860.50', '0.59'), ('2156.50', '-0.49'), ('2605.50', '0.28')])]\n",
+ " candidates for 2480.5, -0.41927071826584167:\n",
+ " 8.2759 2761.50 0.14\n",
+ " 4.5126 2728.50 -0.14\n",
+ " 2.2289 2651.00 -0.18\n",
+ " 1.7819 2605.50 0.28\n",
+ " candidates for 2370.5, -0.2782029938616636:\n",
+ " 8.4892 2728.50 -0.14\n",
+ " 8.1897 2651.00 -0.18\n",
+ " 4.5779 2761.50 0.14\n",
+ " 3.9056 2605.50 0.28\n",
+ " 1.7334 2480.50 -0.42\n",
+ " candidates for 2605.5, 0.2817317886223028:\n",
+ " 2.0220 2761.50 0.14\n",
+ " 1.6925 2728.50 -0.14\n",
+ " 1.2542 2651.00 -0.18\n",
+ "chain candidates:\n"
+ ]
+ },
+ {
"data": {
"text/plain": [
- "[<matplotlib.lines.Line2D at 0x7fe482e19190>]"
+ "[<matplotlib.lines.Line2D at 0x7f8fbf715940>]"
]
},
- "execution_count": 49,
+ "execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
- "threshold_factor = 5.0\n",
+ "threshold_factor = 2.0\n",
+ "power_avg_width = 1024\n",
"\n",
- "import ipywidgets\n",
+ "bit_period = (2**nbits) * decimation\n",
+ "peak_group_threshold = 0.1 * bit_period\n",
"\n",
"cor_an = cor1\n",
"\n",
@@ -573,27 +1155,81 @@
" fig.canvas.draw_idle()\n",
"ipywidgets.interact(update)\n",
"\n",
- "import itertools\n",
- "th = np.convolve(np.abs(cwt_res), np.ones((500,))/500, mode='same')\n",
+ "\n",
+ "th = np.convolve(np.abs(cwt_res), np.ones((power_avg_width,))/power_avg_width, mode='same')\n",
"peaks = [ list(group) for val, group in itertools.groupby(enumerate(zip(th, cwt_res)), lambda elem: abs(elem[1][1]) > elem[1][0]*threshold_factor) if val ]\n",
+ "peak_group = []\n",
"for group in peaks:\n",
" pos = np.mean([idx for idx, _val in group])\n",
" pol = np.mean([val for _idx, (_th, val) in group])\n",
- " ax3.axvline(pos, color='red', alpha=0.5)\n",
- " ax3.text(pos-20, 2.0, f'{0 if pol < 0 else 1}', horizontalalignment='right', verticalalignment='center', color='black')\n",
" \n",
+ " if not peak_group or pos - peak_group[-1][1] > peak_group_threshold:\n",
+ " if peak_group:\n",
+ " peak_pos = peak_group[-1][3]\n",
+ " ax3.axvline(peak_pos, color='red', alpha=0.3)\n",
+ " #ax3.text(peak_pos-20, 2.0, f'{0 if pol < 0 else 1}', horizontalalignment='right', verticalalignment='center', color='black')\n",
+ " \n",
+ " peak_group.append((pos, pos, pol, pos))\n",
+ " #ax3.axvline(pos, color='cyan', alpha=0.5)\n",
+ " \n",
+ " else:\n",
+ " group_start, last_pos, last_pol, peak_pos = peak_group[-1]\n",
+ " \n",
+ " if abs(pol) > abs(last_pol):\n",
+ " #ax3.axvline(pos, color='magenta', alpha=0.5)\n",
+ " peak_group[-1] = (group_start, pos, pol, pos)\n",
+ " else:\n",
+ " #ax3.axvline(pos, color='blue', alpha=0.5)\n",
+ " peak_group[-1] = (group_start, pos, last_pol, peak_pos)\n",
+ "\n",
+ "def mle_decode(peak_groups, print=print):\n",
+ " peak_groups = [ (pos, pol) for _1, _2, pol, pos in peak_groups ]\n",
+ " candidates = [ [(pos, pol)] for pos, pol in peak_groups if pos < bit_period*1.5 ]\n",
+ " \n",
+ " while candidates:\n",
+ " chain_candidates = []\n",
+ " for chain in candidates:\n",
+ " pos, ampl = chain[-1]\n",
+ " score_fun = lambda pos, npos, npol: abs(npol)/2 + 1/(abs((npos-pos)/bit_period - 1))\n",
+ " next_candidates = sorted([ (score_fun(pos, npos, npol), npos, npol) for npos, npol in peak_groups if pos < npos < pos + bit_period*1.5 ], reverse=True)\n",
+ " \n",
+ " print(f' candidates for {pos}, {ampl}:')\n",
+ " for score, npos, npol in next_candidates:\n",
+ " print(f' {score:.4f} {npos:.2f} {npol:.2f}')\n",
+ " \n",
+ " if len(cor_an) - pos < 1.5*bit_period or not next_candidates:\n",
+ " score = sum(score_fun(opos, npos, npol) for (opos, _opol), (npos, npol) in zip(chain[:-1], chain[1:])) / (len(chain)-1)\n",
+ " yield score, chain\n",
+ " \n",
+ " else:\n",
+ " for score, npos, npol in next_candidates[:3]:\n",
+ " if score > 0.5:\n",
+ " chain_candidates.append((score, chain + [(npos, npol)]))\n",
+ " print('chain candidates:')\n",
+ " for score, chain in sorted(chain_candidates, reverse=True):\n",
+ " print(' ', [(score, [(f'{pos:.2f}', f'{pol:.2f}') for pos, pol in chain])])\n",
+ " candidates = [ chain for _score, chain in sorted(chain_candidates, reverse=True)[:10] ]\n",
+ "\n",
+ "res = sorted(mle_decode(peak_group), reverse=True)\n",
+ "#for i, (score, chain) in enumerate(res):\n",
+ "# print(f'Chain {i}@{score:.4f}: {chain}')\n",
+ "(_score, chain), *_ = res\n",
+ "for pos, pol in chain:\n",
+ " ax3.axvline(pos, color='blue', alpha=0.5)\n",
+ " ax3.text(pos-20, 0.0, f'{0 if pol < 0 else 1}', horizontalalignment='right', verticalalignment='center', color='black')\n",
+ "\n",
"ax3.plot(th)"
]
},
{
"cell_type": "code",
- "execution_count": 27,
+ "execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "43b48925433b4464928805812cfebc24",
+ "model_id": "987be038c1b34e6e9509f7f224bbb620",
"version_major": 2,
"version_minor": 0
},
@@ -607,10 +1243,10 @@
{
"data": {
"text/plain": [
- "[<matplotlib.lines.Line2D at 0x7fe4a120ba60>]"
+ "[<matplotlib.lines.Line2D at 0x7f8fcb61c850>]"
]
},
- "execution_count": 27,
+ "execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}