2025-07-25 00:52:58 -04:00
|
|
|
{
|
|
|
|
"cells": [
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
2025-07-25 21:50:20 -04:00
|
|
|
"execution_count": 1,
|
2025-07-25 00:52:58 -04:00
|
|
|
"id": "c883f5e2",
|
|
|
|
"metadata": {},
|
2025-07-31 01:12:53 -04:00
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"ename": "ModuleNotFoundError",
|
|
|
|
"evalue": "No module named 'consensus'",
|
|
|
|
"output_type": "error",
|
|
|
|
"traceback": [
|
|
|
|
"\u001b[31m---------------------------------------------------------------------------\u001b[39m",
|
|
|
|
"\u001b[31mModuleNotFoundError\u001b[39m Traceback (most recent call last)",
|
|
|
|
"\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[1]\u001b[39m\u001b[32m, line 3\u001b[39m\n\u001b[32m 1\u001b[39m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mjax\u001b[39;00m\n\u001b[32m 2\u001b[39m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mjax\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mnumpy\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mjnp\u001b[39;00m\n\u001b[32m----> \u001b[39m\u001b[32m3\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mconsensus\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m *\n",
|
|
|
|
"\u001b[31mModuleNotFoundError\u001b[39m: No module named 'consensus'"
|
|
|
|
]
|
|
|
|
}
|
|
|
|
],
|
2025-07-25 00:52:58 -04:00
|
|
|
"source": [
|
2025-07-25 21:50:20 -04:00
|
|
|
"import jax\n",
|
|
|
|
"import jax.numpy as jnp\n",
|
|
|
|
"from consensus import *"
|
2025-07-25 00:52:58 -04:00
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
2025-07-31 01:12:53 -04:00
|
|
|
"execution_count": null,
|
2025-07-25 21:50:20 -04:00
|
|
|
"id": "e3c2fa64",
|
2025-07-25 00:52:58 -04:00
|
|
|
"metadata": {},
|
|
|
|
"outputs": [],
|
|
|
|
"source": [
|
2025-07-25 21:50:20 -04:00
|
|
|
"key = jax.random.PRNGKey(0)\n",
|
|
|
|
"config = ConsensusConfig()"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
2025-07-31 01:12:53 -04:00
|
|
|
"execution_count": null,
|
2025-07-25 21:50:20 -04:00
|
|
|
"id": "04880fb1",
|
|
|
|
"metadata": {},
|
|
|
|
"outputs": [],
|
|
|
|
"source": [
|
|
|
|
"key, subkey = jax.random.split(key)\n",
|
|
|
|
"\n",
|
|
|
|
"adj_mat = generate_random_adjacency_matrix(subkey, config)\n",
|
|
|
|
"\n",
|
|
|
|
"key, subkey = jax.random.split(key)\n",
|
|
|
|
"\n",
|
|
|
|
"\n",
|
|
|
|
"initial_state = generate_random_agent_states(subkey, config)"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
2025-07-31 01:12:53 -04:00
|
|
|
"execution_count": null,
|
2025-07-25 21:50:20 -04:00
|
|
|
"id": "acc686b9",
|
|
|
|
"metadata": {},
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"data": {
|
|
|
|
"text/plain": [
|
|
|
|
"Array([[1.4142135],\n",
|
|
|
|
" [1.4142135],\n",
|
|
|
|
" [1.7320508],\n",
|
|
|
|
" [1.7320508],\n",
|
|
|
|
" [1.7320508]], dtype=float32)"
|
|
|
|
]
|
|
|
|
},
|
2025-07-31 01:12:53 -04:00
|
|
|
"execution_count": 20,
|
2025-07-25 21:50:20 -04:00
|
|
|
"metadata": {},
|
|
|
|
"output_type": "execute_result"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"source": [
|
|
|
|
"jnp.linalg.norm(adj_mat, axis=1, keepdims=True, )"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
2025-07-31 01:12:53 -04:00
|
|
|
"execution_count": null,
|
2025-07-25 21:50:20 -04:00
|
|
|
"id": "2685d249",
|
|
|
|
"metadata": {},
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"data": {
|
|
|
|
"text/plain": [
|
|
|
|
"Array([[-0.79141927, -0.31202483, -0.73786545, 0.6202612 , -0.6111777 ],\n",
|
|
|
|
" [ 0.27104306, 0.65300965, -0.09737301, -0.7656326 , 0.05701613],\n",
|
|
|
|
" [-0.9213977 , -0.69550824, 0.69740653, -0.00249243, 0.01338029],\n",
|
|
|
|
" ...,\n",
|
|
|
|
" [ 0.934633 , -0.4459145 , 0.7428684 , -0.5317199 , 0.9887655 ],\n",
|
|
|
|
" [ 0.5390346 , -0.48631144, 0.1265409 , -0.08987975, -0.11147618],\n",
|
|
|
|
" [-0.900332 , -0.08470678, 0.72673416, -0.75884247, 0.8060036 ]], dtype=float32)"
|
|
|
|
]
|
|
|
|
},
|
2025-07-31 01:12:53 -04:00
|
|
|
"execution_count": 21,
|
2025-07-25 21:50:20 -04:00
|
|
|
"metadata": {},
|
|
|
|
"output_type": "execute_result"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"source": [
|
|
|
|
"initial_state"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
2025-07-31 01:12:53 -04:00
|
|
|
"execution_count": null,
|
2025-07-25 21:50:20 -04:00
|
|
|
"id": "01d95cba",
|
|
|
|
"metadata": {},
|
|
|
|
"outputs": [],
|
|
|
|
"source": [
|
|
|
|
"out = run_consensus_sim(adj_mat, initial_state, config)"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
2025-07-31 01:12:53 -04:00
|
|
|
"execution_count": null,
|
2025-07-25 21:50:20 -04:00
|
|
|
"id": "23b2ac73",
|
|
|
|
"metadata": {},
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"name": "stderr",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
2025-07-31 01:12:53 -04:00
|
|
|
"100%|██████████| 500/500 [00:01<00:00, 356.10it/s]\n"
|
2025-07-25 21:50:20 -04:00
|
|
|
]
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"source": [
|
|
|
|
"outputs = []\n",
|
|
|
|
"from tqdm import tqdm\n",
|
|
|
|
"\n",
|
|
|
|
"for i in tqdm(range(config.num_sims)):\n",
|
|
|
|
" key, subkey = jax.random.split(key)\n",
|
|
|
|
"\n",
|
|
|
|
" adj_mat = generate_random_adjacency_matrix(subkey, config)\n",
|
|
|
|
"\n",
|
|
|
|
" key, subkey = jax.random.split(key)\n",
|
|
|
|
"\n",
|
|
|
|
" initial_state = generate_random_agent_states(subkey, config)\n",
|
|
|
|
"\n",
|
|
|
|
" trajectories = run_consensus_sim(adj_mat, initial_state, config)\n",
|
|
|
|
"\n",
|
|
|
|
" outputs.append(trajectories)\n",
|
|
|
|
"\n"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
2025-07-31 01:12:53 -04:00
|
|
|
"execution_count": null,
|
2025-07-25 21:50:20 -04:00
|
|
|
"id": "ff65a64f",
|
|
|
|
"metadata": {},
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"data": {
|
|
|
|
"text/plain": [
|
|
|
|
"500"
|
|
|
|
]
|
|
|
|
},
|
2025-07-31 01:12:53 -04:00
|
|
|
"execution_count": 24,
|
2025-07-25 21:50:20 -04:00
|
|
|
"metadata": {},
|
|
|
|
"output_type": "execute_result"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"source": [
|
|
|
|
"len(outputs)"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
2025-07-31 01:12:53 -04:00
|
|
|
"execution_count": null,
|
2025-07-25 21:50:20 -04:00
|
|
|
"id": "9db9c2b7",
|
|
|
|
"metadata": {},
|
|
|
|
"outputs": [],
|
|
|
|
"source": [
|
|
|
|
"x = outputs[1]"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
2025-07-31 01:12:53 -04:00
|
|
|
"execution_count": null,
|
2025-07-25 21:50:20 -04:00
|
|
|
"id": "6584c0b2",
|
|
|
|
"metadata": {},
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"data": {
|
|
|
|
"text/plain": [
|
|
|
|
"Array([[[-1.66636720e-01, 5.12272954e-01, -7.18595386e-01,\n",
|
|
|
|
" -6.62203312e-01, 5.40143251e-01],\n",
|
|
|
|
" [-1.74384415e-01, 4.56314355e-01, -6.64573908e-01,\n",
|
|
|
|
" -6.39672816e-01, 5.08012652e-01],\n",
|
|
|
|
" [-1.80595487e-01, 4.05365229e-01, -6.15751922e-01,\n",
|
|
|
|
" -6.18524671e-01, 4.76983011e-01],\n",
|
|
|
|
" ...,\n",
|
|
|
|
" [-1.59010112e-01, -1.50679022e-01, -1.53786018e-01,\n",
|
|
|
|
" -1.67208239e-01, -1.54014796e-01],\n",
|
|
|
|
" [-1.58967257e-01, -1.50819257e-01, -1.53847516e-01,\n",
|
|
|
|
" -1.66839033e-01, -1.54245734e-01],\n",
|
|
|
|
" [-1.58922747e-01, -1.50957853e-01, -1.53907120e-01,\n",
|
|
|
|
" -1.66481182e-01, -1.54461235e-01]],\n",
|
|
|
|
"\n",
|
|
|
|
" [[-2.95487672e-01, 2.00281173e-01, 7.41982460e-01,\n",
|
|
|
|
" -6.08857512e-01, -5.24303138e-01],\n",
|
|
|
|
" [-2.84227967e-01, 2.24914923e-01, 6.94133639e-01,\n",
|
|
|
|
" -5.94611228e-01, -5.13903916e-01],\n",
|
|
|
|
" [-2.74258196e-01, 2.46254981e-01, 6.50272310e-01,\n",
|
|
|
|
" -5.80505908e-01, -5.03451347e-01],\n",
|
|
|
|
" ...,\n",
|
|
|
|
" [-9.05691609e-02, 2.46822182e-02, -1.64113492e-02,\n",
|
|
|
|
" -1.15323864e-01, -1.14397414e-01],\n",
|
|
|
|
" [-8.99871886e-02, 2.28142999e-02, -1.74129177e-02,\n",
|
|
|
|
" -1.14197671e-01, -1.13313831e-01],\n",
|
|
|
|
" [-8.94182399e-02, 2.09857989e-02, -1.83918513e-02,\n",
|
|
|
|
" -1.13096178e-01, -1.12253852e-01]],\n",
|
|
|
|
"\n",
|
|
|
|
" [[-1.30383307e-02, 1.71294942e-01, -8.86316597e-01,\n",
|
|
|
|
" 7.38471627e-01, -6.40124202e-01],\n",
|
|
|
|
" [-3.00604030e-02, 1.23224229e-01, -8.27797651e-01,\n",
|
|
|
|
" 7.04303384e-01, -6.11620843e-01],\n",
|
|
|
|
" [-4.47233506e-02, 8.00035298e-02, -7.74794400e-01,\n",
|
|
|
|
" 6.70914054e-01, -5.85195124e-01],\n",
|
|
|
|
" ...,\n",
|
|
|
|
" [-1.57231078e-01, -1.98106706e-01, -1.83590323e-01,\n",
|
|
|
|
" -1.40955046e-01, -1.56092867e-01],\n",
|
|
|
|
" [-1.57435969e-01, -1.97447628e-01, -1.83227822e-01,\n",
|
|
|
|
" -1.41696304e-01, -1.56145990e-01],\n",
|
|
|
|
" [-1.57636106e-01, -1.96798533e-01, -1.82872400e-01,\n",
|
|
|
|
" -1.42414570e-01, -1.56205371e-01]],\n",
|
|
|
|
"\n",
|
|
|
|
" ...,\n",
|
|
|
|
"\n",
|
|
|
|
" [[-1.63649127e-01, -8.41130137e-01, -7.75687933e-01,\n",
|
|
|
|
" -6.17362916e-01, -1.62886351e-01],\n",
|
|
|
|
" [-1.87853858e-01, -8.38172257e-01, -7.59123802e-01,\n",
|
|
|
|
" -5.96733749e-01, -1.62921131e-01],\n",
|
|
|
|
" [-2.09566846e-01, -8.34595501e-01, -7.44206071e-01,\n",
|
|
|
|
" -5.78146398e-01, -1.64056927e-01],\n",
|
|
|
|
" ...,\n",
|
|
|
|
" [-4.63634402e-01, -5.26826859e-01, -5.04092157e-01,\n",
|
|
|
|
" -4.52905446e-01, -4.47922230e-01],\n",
|
|
|
|
" [-4.63949651e-01, -5.25786340e-01, -5.03538966e-01,\n",
|
|
|
|
" -4.53391463e-01, -4.48639333e-01],\n",
|
|
|
|
" [-4.64258403e-01, -5.24773777e-01, -5.02999008e-01,\n",
|
|
|
|
" -4.53866601e-01, -4.49335635e-01]],\n",
|
|
|
|
"\n",
|
|
|
|
" [[ 8.49014282e-01, -4.23134297e-01, -1.02596506e-01,\n",
|
|
|
|
" -7.79161379e-02, -7.49398649e-01],\n",
|
|
|
|
" [ 7.69991755e-01, -4.08562779e-01, -8.34711716e-02,\n",
|
|
|
|
" -3.57792526e-02, -6.76743805e-01],\n",
|
|
|
|
" [ 6.99401498e-01, -3.93781751e-01, -6.74583837e-02,\n",
|
|
|
|
" 8.48539814e-04, -6.10982418e-01],\n",
|
|
|
|
" ...,\n",
|
|
|
|
" [ 5.44091836e-02, 1.56357903e-02, 2.96502374e-02,\n",
|
|
|
|
" 6.60664737e-02, 5.86968251e-02],\n",
|
|
|
|
" [ 5.42080291e-02, 1.62729044e-02, 2.99752634e-02,\n",
|
|
|
|
" 6.55355603e-02, 5.85015714e-02],\n",
|
|
|
|
" [ 5.40123284e-02, 1.68951005e-02, 3.02929282e-02,\n",
|
|
|
|
" 6.50210083e-02, 5.83060347e-02]],\n",
|
|
|
|
"\n",
|
|
|
|
" [[ 3.28030080e-01, 1.59404784e-01, 1.12652399e-01,\n",
|
|
|
|
" 4.21188235e-01, -5.76944411e-01],\n",
|
|
|
|
" [ 3.04681659e-01, 1.57281369e-01, 1.20595314e-01,\n",
|
|
|
|
" 4.16955978e-01, -5.35814166e-01],\n",
|
|
|
|
" [ 2.83952415e-01, 1.55611798e-01, 1.27279893e-01,\n",
|
|
|
|
" 4.11854506e-01, -4.97601837e-01],\n",
|
|
|
|
" ...,\n",
|
|
|
|
" [ 1.25164792e-01, 1.34655759e-01, 1.31267741e-01,\n",
|
|
|
|
" 1.28612176e-01, 1.17667601e-01],\n",
|
|
|
|
" [ 1.25210837e-01, 1.34499282e-01, 1.31179631e-01,\n",
|
|
|
|
" 1.28455788e-01, 1.18006803e-01],\n",
|
|
|
|
" [ 1.25256866e-01, 1.34351477e-01, 1.31099537e-01,\n",
|
|
|
|
" 1.28308088e-01, 1.18334584e-01]]], dtype=float32)"
|
|
|
|
]
|
|
|
|
},
|
2025-07-31 01:12:53 -04:00
|
|
|
"execution_count": 26,
|
2025-07-25 21:50:20 -04:00
|
|
|
"metadata": {},
|
|
|
|
"output_type": "execute_result"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"source": [
|
|
|
|
"x"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
2025-07-31 01:12:53 -04:00
|
|
|
"execution_count": null,
|
2025-07-25 21:50:20 -04:00
|
|
|
"id": "620a7701",
|
|
|
|
"metadata": {},
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"data": {
|
|
|
|
"text/plain": [
|
|
|
|
"(500, 100, 5)"
|
|
|
|
]
|
|
|
|
},
|
2025-07-31 01:12:53 -04:00
|
|
|
"execution_count": 27,
|
2025-07-25 21:50:20 -04:00
|
|
|
"metadata": {},
|
|
|
|
"output_type": "execute_result"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"source": [
|
|
|
|
"x.shape"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
2025-07-31 01:12:53 -04:00
|
|
|
"execution_count": null,
|
2025-07-25 21:50:20 -04:00
|
|
|
"id": "b094224e",
|
|
|
|
"metadata": {},
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"data": {
|
|
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAlcAAAHPCAYAAAB+5v83AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAs9JJREFUeJzs3Xd8FGX+wPHPzJb0TYMUQk0goTcpRhARRUEQLDSxoKAop56CnIodz/4TPQErooIeKqeigggGRbGhKEgREEyoCRDS69aZ3x+bLFlSCGGTEPi+77U3M88888wzTzbmyzPPPKPouq4jhBBCCCF8Qm3sCgghhBBCnEkkuBJCCCGE8CEJroQQQgghfEiCKyGEEEIIH5LgSgghhBDChyS4EkIIIYTwIQmuhBBCCCF8SIIrIYQQQggfkuBKCCGEEMKHJLgSQjR5119/Pddff32jnPuTTz4hKSmJgwcP+qzMgwcPkpSUxCeffOKzMk8HTf267r//foYMGdLY1RBNgLGxKyBEU7J//37efPNNfvzxRzIzMzGZTCQmJjJ8+HDGjx+Pv79/Y1dRNCHLly8nOzubG2+8sbGr4nE61qm2jhw5wtKlS7n44ovp1KlTY1dHnMUkuBKilr799lvuuusuzGYzo0ePJjExEYfDwe+//87//d//8ffff/Pvf/+7sat5Vlq4cGFjV6FOVqxYwe7duysFMnFxcWzZsgWjseH/E11dnXyhvq8rMzOT+fPnExcXVy/B1b///W/kdbyiNiS4EqIWDhw4wPTp02nRogWLFi0iKirKs+/aa69l3759fPvtt41XwbOc2Wxu7Cr4lKIo+Pn5NXY1Tshms2EymVDV2o0waSrXdbySkhICAwMxmUyNXRXRRMiYKyFq4c0336SkpIQnn3zSK7Aq16ZNGyZNmuTZdjqdvPzyy1x88cV07dqVIUOG8MILL2C3272OGzJkCLfeeiu//fYbY8aMoVu3blx00UV8+umnXvkcDgfz58/nkksuoVu3bvTv359rrrmGH3/80Stfamoq//znP+nXrx/dunXjqquu4uuvv/bKUz5G6Pfff+fpp5/m3HPPpWfPntx+++3k5OR45d26dStTpkyhf//+dO/enSFDhjBr1izP/l9++YWkpCR++eUXr+OqGltz9OhRZs2axaBBg+jatSsDBw5k2rRpJxyrVJvjjh9zVV6vlStXMn/+fM4//3x69erFP//5TwoLC7Hb7Tz55JMkJyfTq1cvZs2a5fWzqWlsUFJSEvPmzauxzmvWrGHq1KkMHDiQrl27cvHFF/Pyyy/jcrm86vztt9+Snp5OUlISSUlJnvE81Z3/559/ZuLEifTs2ZM+ffowbdo0UlNTvfLMmzePpKQk9u3bx/3330+fPn0455xzmDVrFqWlpTXWu6Y6lbfpF198wYsvvsj5559Pjx49KCoqIi8vj2effZbLL7+cXr160bt3b26++WZ27tzpVX5111Wb7y1AQUEBTz31FEOGDKFr164MGjSIe++9l5ycHH755RfGjBkDwKxZszz1r3iuL7/8kquuuoru3bvTv39/Zs6cyZEjR7zOcf/999OrVy/279/PLbfcQq9evZg5c6Zn3/FjrjRN45133mHEiBF069aN8847j0ceeYT8/HyvfCf6XRJnFum5EqIW1q5dS6tWrejdu3et8j/00EMsW7aMSy+9lJtuuoktW7bw+uuvk5qayssvv+yVd9++fdx1112MGTOGK6+8ko8//pj777+fLl260KFDBwDmz5/P66+/ztixY+nevTtFRUVs27aNP//8kwEDBgCwe/durrnmGqKjo7nlllsIDAzkyy+/5Pbbb2fevHkMHTrU67xPPPEEFouFO+64g/T0dBYtWsTjjz/Of/7zHwCys7OZMmUK4eHhTJ06FYvFwsGDB0lJSalTG9555538/fffXHfddcTFxZGTk8OPP/7IoUOHaNmypc+PA3jjjTfw9/dn6tSp7Nu3j/feew+j0YiiKBQUFHDHHXewefNmPvnkE+Li4rjjjjvqdG3HW7ZsGYGBgdx0000EBgayfv165s6dS1FREffddx8At912G4WFhRw+fNjzRzYoKKjaMn/66SduueUWWrZsyR133IHVauW9997jmmuu4ZNPPqnUFnfffTctW7ZkxowZbN++nf/9739ERETwr3/9q9pz1KZOr7zyCiaTiSlTpmC32zGZTPz999+sWbOGYcOG0bJlS7Kysvjwww+57rrr+OKLL4iOjq72nLX93hYXF3PttdeSmprK1VdfTefOncnNzeWbb77hyJEjJCQk8M9//pO5c+cyfvx4zjnnHADP7+wnn3zCrFmz6NatGzNmzCA7O5vFixezceNGPv30UywWi6dOTqeTKVOmcM4553DffffVOJbykUceYdmyZVx11VVcf/31HDx4kP/+979s376d999/H5PJ5PPfJdEE6EKIGhUWFuqJiYn6tGnTapV/x44demJiov7ggw96pT/zzDN6YmKi/vPPP3vSLrzwQj0xMVHfsGGDJy07O1vv2rWr/swzz3jSRo0apU+dOrXG806aNEkfOXKkbrPZPGmapunjx4/XL7nkEk/axx9/rCcmJuo33nijrmmaJ/2pp57SO3XqpBcUFOi6ruspKSl6YmKivmXLlmrPuX79ej0xMVFfv369V/qBAwf0xMRE/eOPP9Z1Xdfz8/P1xMRE/c0336zxGo5X2+Ouu+46/brrrqtUr5EjR+p2u92TPmPGDD0pKUm/+eabvY4fP368fuGFF1Zb/4oSExP1uXPnerbL2/PAgQOetNLS0krHPfzww3qPHj28fj5Tp071Om9N5x89erSenJys5+bmetJ27Nihd+zYUb/33ns9aXPnztUTExP1WbNmeZV5++236/369at0ruNVV6fyNr3ooosqXZ/NZtNdLlela+jatas+f/78Gq+rtt/bl156SU9MTNS/+uqrSnUr/x5v2bKlyp+b3W7Xk5OT9ZEjR+pWq9WTvnbtWj0xMVF/6aWXPGn33XefnpiYqD///POVznPfffd5tc2GDRv0xMRE/fPPP/fKt27dOq/02vwuiTOL3BYU4gSKioqAmnsVKvruu+8AuOmmm7zSJ0+e7LW/XPv27enTp49nOyIignbt2nHgwAFPmsViYffu3ezdu7fKc+bl5bF+/XqGDx9OUVEROTk55OTkkJuby8CBA9m7d2+l2x/jxo1DURTPdp8+fXC5XKSnpwMQEhICuAfyOxyOWl17dfz9/TGZTPz666+VbpfUx3HlRo8e7TVOpnv37ui6ztVXX+2Vr3v37hw6dAin03nS56hKxZ6O8p9Hnz59KC0tJS0t7aTLy8zMZMeOHVx55ZWEhYV50jt27Mh5551X6TsFMGHCBK/tPn36kJeX5/k+19UVV1xRqSfHbDZ7xl25XC5yc3MJDAykXbt2bN++vdqyTuZ7+9VXX9GxY8dKPbCA1/e4Ktu2bSM7O5trrrnGa8zX4MGDiY+Pr3K85DXXXFNjmQCrVq0iJCSEAQMGeOqek5NDly5dCAwM9Nwu9+Xvkmga5LagECcQHBwMuG9L1EZ6ejqqqtK6dWuv9ObNm2OxWDzBS7nY2NhKZYSGhnoFE//85z/5xz/+waWXXkpiYiIDBw5k9OjRdOzYEXBPEaHrOi+99BIvvfRSlfXKzs72uj3TokULr/3lt0UKCgoA6NevH5deeinz58/nnXfeoV+/flx88cVcfvnlJz2A3Gw2M3PmTJ599lkGDBhAjx49GDx4MFdccQXNmzf3+XHVXWP5H7nj2zwkJARN0ygsLCQ8PPykrq0qu3fv5j//+Q/r16+vFMwUFhaedHkZGRkAtGvXrtK+hIQEfvjhB8+g63LV/Xzz8/M93+m6qOpWrKZpLF68mCVLlnDw4EGvsWUVg8Hjncz3dv/+/VxyySV1qnNN7RcfH8/vv//ulWY0GomJiTlhufv27aOwsJDk5OQq92dnZwO+/V0STYMEV0KcQHBwMFFRUezevfukjjvRv6bLGQyGE+bp27cvKSkpfP311/z444989NFHLFq0iNmzZzN27Fg0TQPcvWPnn39
|
|
|
|
"text/plain": [
|
|
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"metadata": {},
|
|
|
|
"output_type": "display_data"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"data": {
|
|
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAlcAAAHPCAYAAAB+5v83AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAukpJREFUeJzs3Xd4VFXCx/HvnT6ZyUx6IdQAoUqTYgQRUQQExUITdXFBcVk7VnRVdLGsr2UFLIioqCvKqqgogkGxoSgqK6ggkVATID0zSabf+/5xJ0OGFEJI53yeZ547c9ucOZmQH+ece66kKIqCIAiCIAiC0CA0zV0AQRAEQRCEtkSEK0EQBEEQhAYkwpUgCIIgCEIDEuFKEARBEAShAYlwJQiCIAiC0IBEuBIEQRAEQWhAIlwJgiAIgiA0IBGuBEEQBEEQGpAIV4IgCIIgCA1IhCtBEFq9q666iquuuqpZ3vu9996jR48eHDx4sMHOefDgQXr06MF7773XYOdsCVr757r77rsZPXp0cxdDaAV0zV0AQWhN9u/fz0svvcSmTZvIzc1Fr9eTlpbG+PHjmTZtGiaTqbmLKLQia9asoaCggKuvvrq5ixLSEstUV0eOHGHVqlWcd9559OrVq7mLI5zCRLgShDr64osvuPnmmzEYDEyaNIm0tDR8Ph8//fQT//d//8eff/7JP//5z+Yu5ilp+fLlzV2Eevnoo4/IzMysEmRSUlLYtm0bOl3T/xNdU5kaQmN/rtzcXJYsWUJKSkqjhKt//vOfiNvxCnUhwpUg1MGBAwe49dZbadeuHStWrCAhISG07YorrmDfvn188cUXzVfAU5zBYGjuIjQoSZIwGo3NXYzj8ng86PV6NJq6jTBpLZ/rWOXl5URERKDX65u7KEIrIcZcCUIdvPTSS5SXl/Pwww+HBasKnTp1YubMmaHXfr+fZ599lvPOO4++ffsyevRonnrqKbxeb9hxo0eP5rrrruPHH39k8uTJnHbaaZx77rm8//77Yfv5fD6WLFnC+eefz2mnncawYcO4/PLL2bRpU9h+u3fv5qabbmLo0KGcdtppXHrppXz22Wdh+1SMEfrpp5949NFHOeOMMxgwYADXX389hYWFYftu376d2bNnM2zYMPr168fo0aOZP39+aPv3339Pjx49+P7778OOq25sTV5eHvPnz2fkyJH07duXESNGMHfu3OOOVarLcceOuaoo19q1a1myZAlnnXUWAwcO5KabbsLpdOL1enn44YdJT09n4MCBzJ8/P+xnU9vYoB49erB48eJay7xhwwbmzJnDiBEj6Nu3L+eddx7PPvssgUAgrMxffPEF2dnZ9OjRgx49eoTG89T0/t999x0zZsxgwIABDB48mLlz57J79+6wfRYvXkyPHj3Yt28fd999N4MHD+b0009n/vz5uFyuWstdW5kq6vTjjz/m6aef5qyzzqJ///6UlpZSXFzMv/71Ly688EIGDhzIoEGDuOaaa9i5c2fY+Wv6XHX53gI4HA4eeeQRRo8eTd++fRk5ciR33nknhYWFfP/990yePBmA+fPnh8pf+b0++eQTLr30Uvr168ewYcO4/fbbOXLkSNh73H333QwcOJD9+/dz7bXXMnDgQG6//fbQtmPHXMmyzKuvvsqECRM47bTTOPPMM7n//vspKSkJ2+94v0tC2yJargShDjZu3EiHDh0YNGhQnfb/xz/+werVqxk7dix//etf2bZtG0uXLmX37t08++yzYfvu27ePm2++mcmTJ3PJJZfw7rvvcvfdd9OnTx+6d+8OwJIlS1i6dClTpkyhX79+lJaW8uuvv/Lbb78xfPhwADIzM7n88stJTEzk2muvJSIigk8++YTrr7+exYsXM2bMmLD3XbhwITabjRtuuIHs7GxWrFjBQw89xL///W8ACgoKmD17NtHR0cyZMwebzcbBgwfJyMioVx3eeOON/Pnnn1x55ZWkpKRQWFjIpk2bOHToEO3bt2/w4wBefPFFTCYTc+bMYd++fbzxxhvodDokScLhcHDDDTfwyy+/8N5775GSksINN9xQr892rNWrVxMREcFf//pXIiIi2Lx5M4sWLaK0tJS77roLgL/97W84nU4OHz4c+iNrsVhqPOe3337LtddeS/v27bnhhhtwu9288cYbXH755bz33ntV6uKWW26hffv2zJs3j99//53//ve/xMTEcMcdd9T4HnUp03PPPYder2f27Nl4vV70ej1//vknGzZsYNy4cbRv3578/HzefvttrrzySj7++GMSExNrfM+6fm/Lysq44oor2L17N5dddhm9e/emqKiIzz//nCNHjtC1a1duuukmFi1axLRp0zj99NMBQr+z7733HvPnz+e0005j3rx5FBQU8Nprr/Hzzz/z/vvvY7PZQmXy+/3Mnj2b008/nbvuuqvWsZT3338/q1ev5tJLL+Wqq67i4MGD/Oc//+H3339n5cqV6PX6Bv9dEloBRRCEWjmdTiUtLU2ZO3dunfbfsWOHkpaWptx7771h6x977DElLS1N+e6770LrzjnnHCUtLU3ZsmVLaF1BQYHSt29f5bHHHgutu+iii5Q5c+bU+r4zZ85UJk6cqHg8ntA6WZaVadOmKeeff35o3bvvvqukpaUpV199tSLLcmj9I488ovTq1UtxOByKoihKRkaGkpaWpmzbtq3G99y8ebOSlpambN68OWz9gQMHlLS0NOXdd99VFEVRSkpKlLS0NOWll16q9TMcq67HXXnllcqVV15ZpVwTJ05UvF5vaP28efOUHj16KNdcc03Y8dOmTVPOOeecGstfWVpamrJo0aLQ64r6PHDgQGidy+Wqctx9992n9O/fP+znM2fOnLD3re39J02apKSnpytFRUWhdTt27FB69uyp3HnnnaF1ixYtUtLS0pT58+eHnfP6669Xhg4dWuW9jlVTmSrq9Nxzz63y+TwejxIIBKp8hr59+ypLliyp9XPV9Xv7zDPPKGlpacqnn35apWwV3+Nt27ZV+3Pzer1Kenq6MnHiRMXtdofWb9y4UUlLS1OeeeaZ0Lq77rpLSUtLU5544okq73PXXXeF1c2WLVuUtLQ05cMPPwzb76uvvgpbX5ffJaFtEd2CgnAcpaWlQO2tCpV9+eWXAPz1r38NWz9r1qyw7RW6devG4MGDQ69jYmLo0qULBw4cCK2z2WxkZmayd+/eat+zuLiYzZs3M378eEpLSyksLKSwsJCioiJGjBjB3r17q3R/TJ06FUmSQq8HDx5MIBAgOzsbgMjISEAdyO/z+er02WtiMpnQ6/X88MMPVbpLGuO4CpMmTQobJ9OvXz8UReGyyy4L269fv34cOnQIv99/wu9RncotHRU/j8GDB+NyucjKyjrh8+Xm5rJjxw4uueQSoqKiQut79uzJmWeeWeU7BTB9+vSw14MHD6a4uDj0fa6viy++uEpLjsFgCI27CgQCFBUVERERQZcuXfj9999rPNeJfG8//fRTevbsWaUFFgj7Hlfn119/paCggMsvvzxszNeoUaNITU2tdrzk5ZdfXus5AdatW0dkZCTDhw8Plb2wsJA+ffoQERER6i5vyN8loXUQ3YKCcBxWqxVQuyXqIjs7G41GQ8eOHcPWx8fHY7PZQuGlQnJycpVz2O32sDBx00038fe//52xY8eSlpbGiBEjmDRpEj179gTUKSIUReGZZ57hmWeeqbZcBQUFYd0z7dq1C9te0S3icDgAGDp0KGPHjmXJkiW8+uqrDB06lPPOO48LL7zwhAeQGwwGbr/9dv71r38xfPhw+vfvz6hRo7j44ouJj49v8ONq+owVf+SOrfPIyEhkWcbpdBIdHX1Cn606mZmZ/Pvf/2bz5s1VwozT6Tzh8+Xk5ADQpUuXKtu6du3KN998Exp0XaGmn29JSUnoO10f1XXFyrLMa6+9xptvvsnBgwfDxpZVDoPHOpHv7f79+zn//PPrVeba6i81NZWffvopbJ1OpyMpKem45923bx9Op5P09PRqtxcUFAAN+7sktA4iXAnCcVitVhISEsjMzDyh4473v+kKWq32uPsMGTKEjIwMPvvsMzZt2sQ
|
|
|
|
"text/plain": [
|
|
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"metadata": {},
|
|
|
|
"output_type": "display_data"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"data": {
|
|
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAlcAAAHPCAYAAAB+5v83AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAuwhJREFUeJzs3Xd8FEX/wPHP7tXkkksjCSHUIAm9FwOIiKAgCI8IiFhAUBCxgVgQC/hY0J9YAAsiIKigPCooiGBQFAsgKgoqKBJqgJB6l3Z9f3/c5ciRQgjJXRLm/Xrda29nZ2dnJ5fLN7Ozs5KiKAqCIAiCIAhCtZADXQFBEARBEIT6RARXgiAIgiAI1UgEV4IgCIIgCNVIBFeCIAiCIAjVSARXgiAIgiAI1UgEV4IgCIIgCNVIBFeCIAiCIAjVSARXgiAIgiAI1UgEV4IgCIIgCNVIBFeCINR5t9xyC7fccktAjv3JJ5+QlJTE8ePHq63M48ePk5SUxCeffFJtZdYGdf28HnnkEQYMGBDoagh1gDrQFRCEuuTo0aO8/fbb/PDDD5w+fRqNRkNiYiJDhgzhhhtuQK/XB7qKQh2yfv16srKymDBhQqCr4lUb61RZ6enprFmzhoEDB9KmTZtAV0e4iIngShAq6ZtvvuG+++5Dq9UyYsQIEhMTsdvt/PLLL/zf//0f//77L//9738DXc2L0tKlSwNdhSrZsGEDBw4cKBXIxMfHs2fPHtRq/39Fl1en6lDT53X69GkWLVpEfHx8jQRX//3vfxGP4xUqQwRXglAJx44dY/r06TRq1IgVK1YQExPj3XbTTTdx5MgRvvnmm8BV8CKn1WoDXYVqJUkSOp0u0NU4J6vVikajQZYrN8KkrpzX2QoLCwkODkaj0QS6KkIdIcZcCUIlvP322xQWFvLMM8/4BFbFmjVrxvjx473rDoeD1157jYEDB9K+fXsGDBjASy+9hM1m89lvwIABTJkyhZ9//plRo0bRoUMHrrzyStatW+eTz263s2jRIq666io6dOhAr169uPHGG/nhhx988h08eJB7772Xnj170qFDB0aOHMlXX33lk6d4jNAvv/zCc889x6WXXkrnzp2ZNm0a2dnZPnn37t3LpEmT6NWrFx07dmTAgAHMmjXLu33nzp0kJSWxc+dOn/3KGluTkZHBrFmz6NevH+3bt6dv375MnTr1nGOVKrPf2WOuiuu1ceNGFi1axGWXXUaXLl249957ycvLw2az8cwzz5CcnEyXLl2YNWuWz8+morFBSUlJLFy4sMI6b9myhcmTJ9O3b1/at2/PwIEDee2113A6nT51/uabb0hLSyMpKYmkpCTveJ7yjr99+3bGjRtH586d6d69O1OnTuXgwYM+eRYuXEhSUhJHjhzhkUceoXv37nTr1o1Zs2ZRVFRUYb0rqlNxm37++ee8/PLLXHbZZXTq1In8/Hxyc3N5/vnnufbaa+nSpQtdu3bl9ttvZ//+/T7ll3delfncApjNZp599lkGDBhA+/bt6devHw899BDZ2dns3LmTUaNGATBr1ixv/Use64svvmDkyJF07NiRXr16MXPmTNLT032O8cgjj9ClSxeOHj3KHXfcQZcuXZg5c6Z329ljrlwuF++88w5Dhw6lQ4cO9O7dmyeeeAKTyeST71y/S0L9InquBKEStm7dSpMmTejatWul8j/22GOsXbuWq6++mttuu409e/awePFiDh48yGuvveaT98iRI9x3332MGjWK6667jo8//phHHnmEdu3a0apVKwAWLVrE4sWLGT16NB07diQ/P58//viDP//8kz59+gBw4MABbrzxRmJjY7njjjsIDg7miy++YNq0aSxcuJBBgwb5HPfpp5/GaDRy9913k5aWxooVK3jqqad45ZVXAMjKymLSpElEREQwefJkjEYjx48fJyUlpUpteM899/Dvv/9y8803Ex8fT3Z2Nj/88AMnT56kcePG1b4fwFtvvYVer2fy5MkcOXKE9957D7VajSRJmM1m7r77bn7//Xc++eQT4uPjufvuu6t0bmdbu3YtwcHB3HbbbQQHB7Njxw4WLFhAfn4+Dz/8MAB33nkneXl5nDp1yvtH1mAwlFvmjz/+yB133EHjxo25++67sVgsvPfee9x444188sknpdri/vvvp3HjxsyYMYO//vqL//3vf0RGRvLggw+We4zK1On1119Ho9EwadIkbDYbGo2Gf//9ly1btjB48GAaN25MZmYmH374ITfffDOff/45sbGx5R6zsp/bgoICbrrpJg4ePMj1119P27ZtycnJ4euvvyY9PZ2WLVty7733smDBAm644Qa6desG4P2d/eSTT5g1axYdOnRgxowZZGVlsXLlSn799VfWrVuH0Wj01snhcDBp0iS6devGww8/XOFYyieeeIK1a9cycuRIbrnlFo4fP87777/PX3/9xerVq9FoNNX+uyTUAYogCBXKy8tTEhMTlalTp1Yq/759+5TExERl9uzZPunz5s1TEhMTle3bt3vTrrjiCiUxMVHZtWuXNy0rK0tp3769Mm/ePG/a8OHDlcmTJ1d43PHjxyvDhg1TrFarN83lcik33HCDctVVV3nTPv74YyUxMVGZMGGC4nK5vOnPPvus0qZNG8VsNiuKoigpKSlKYmKismfPnnKPuWPHDiUxMVHZsWOHT/qxY8eUxMRE5eOPP1YURVFMJpOSmJiovP322xWew9kqu9/NN9+s3HzzzaXqNWzYMMVms3nTZ8yYoSQlJSm33367z/433HCDcsUVV5Rb/5ISExOVBQsWeNeL2/PYsWPetKKiolL7Pf7440qnTp18fj6TJ0/2OW5Fxx8xYoSSnJys5OTkeNP27duntG7dWnnooYe8aQsWLFASExOVWbNm+ZQ5bdo0pWfPnqWOdbby6lTcpldeeWWp87NarYrT6Sx1Du3bt1cWLVpU4XlV9nP76quvKomJicqXX35Zqm7Fn+M9e/aU+XOz2WxKcnKyMmzYMMVisXjTt27dqiQmJiqvvvqqN+3hhx9WEhMTlRdffLHUcR5++GGfttm1a5eSmJiofPbZZz75tm3b5pNemd8loX4RlwUF4Rzy8/OBinsVSvr2228BuO2223zSJ06c6LO92CWXXEL37t2965GRkbRo0YJjx45504xGIwcOHODw4cNlHjM3N5cdO3YwZMgQ8vPzyc7OJjs7m5ycHPr27cvhw4dLXf4YM2YMkiR517t3747T6SQtLQ2A0NBQwD2Q3263V+rcy6PX69FoNPz000+lLpfUxH7FRowY4TNOpmPHjiiKwvXXX++Tr2PHjpw8eRKHw3HexyhLyZ6O4p9H9+7dKSoqIjU19bzLO336NPv27eO6664jPDzcm966dWt69+5d6jMFMHbsWJ/17t27k5ub6/08V9V//vOfUj05Wq3WO+7K6XSSk5NDcHAwLVq04K+//iq3rPP53H755Ze0bt26VA8s4PM5Lssff/xBVlYWN954o8+Yr/79+5OQkFDmeMkbb7yxwjIBNm3aRGhoKH369PHWPTs7m3bt2hEcHOy9XF6dv0tC3SAuCwrCOYSEhADuyxKVkZaWhizLNG3a1Cc9Ojoao9HoDV6KxcXFlSojLCzMJ5i49957ueuuu7j66qtJTEykb9++jBgxgtatWwPuKSIUReHVV1/l1VdfLbNeWVlZPpdnGjVq5LO9+LKI2WwGoGfPnlx99dUsWrSId955h549ezJw4ECuvfba8x5ArtVqmTlzJs8//zx9+vShU6dO9O/fn//85z9ER0dX+37lnWPxH7mz2zw0NBSXy0VeXh4RERHndW5lOXDgAK+88go7duwoFczk5eWdd3knTpwAoEWLFqW2tWzZku+//9476LpYeT9fk8nk/UxXRVmXYl0uFytXrmTVqlUcP37cZ2xZyWDwbOfzuT169ChXXXVVlepcUfslJCTwyy+/+KSp1WoaNmx4znKPHDlCXl4eycnJZW7PysoCqvd3SagbRHAlCOcQEhJCTEwMBw4cOK/9zvXfdDGVSnXOPD169CAlJYWvvvqKH374gY8++ogVK1Ywd+5cRo8ejcv
|
|
|
|
"text/plain": [
|
|
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"metadata": {},
|
|
|
|
"output_type": "display_data"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"data": {
|
|
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAlcAAAHPCAYAAAB+5v83AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAq6RJREFUeJzs3Xd8FNXawPHfbEvfVJJAAoQEQq9SjCAiiIIgKE3EgoLi5VpBrw29otf+igVQUQRFvRau2EAEg2JDUVCkKAgmlJBQ0vtmy8z7xyZLlhRCSHaT8Hw/n3V3zpyZeeYkcR/OnDmjaJqmIYQQQgghGoTO2wEIIYQQQrQkklwJIYQQQjQgSa6EEEIIIRqQJFdCCCGEEA1IkishhBBCiAYkyZUQQgghRAOS5EoIIYQQogFJciWEEEII0YAkuRJCCCGEaECSXAkhmr1rr72Wa6+91ivH/uijj+jcuTOHDx9usH0ePnyYzp0789FHHzXYPpuC5n5e9913H8OHD/d2GKIZMHg7ACGak0OHDvH666+zadMmjh8/jtFoJDExkdGjR3PllVfi6+vr7RBFM7J69Wqys7O5/vrrvR2KS1OMqa6OHTvGypUrueiii+jatau3wxFnMUmuhKijb775hjvuuAOTycT48eNJTEzEZrPx66+/8n//93/8/fff/Oc///F2mGelZcuWeTuEelmzZg379u2rksjExMSwY8cODAbP/y+6ppgaQmOf1/Hjx1m8eDExMTGNklz95z//QR7HK+pCkish6iAtLY05c+bQpk0bVqxYQWRkpGvd1VdfzcGDB/nmm2+8F+BZzmQyeTuEBqUoCj4+Pt4O45TKysowGo3odHUbYdJczutkJSUl+Pv7YzQavR2KaCZkzJUQdfD6669TUlLC448/7pZYVWjfvj3Tp093Ldvtdl566SUuuugievTowfDhw3nuueewWq1u2w0fPpybb76ZrVu3MmnSJHr27MmIESP45JNP3OrZbDYWL17MxRdfTM+ePRk0aBBXXXUVmzZtcquXkpLC7bffzsCBA+nZsycTJkzgq6++cqtTMUbo119/5cknn+Tcc8+lT58+3HLLLeTk5LjV3blzJzNnzmTQoEH06tWL4cOHc//997vW//zzz3Tu3Jmff/7ZbbvqxtZkZmZy//33M3ToUHr06MGQIUOYPXv2Kccq1WW7k8dcVcS1du1aFi9ezPnnn0/fvn25/fbbKSwsxGq18vjjj5OUlETfvn25//773X42tY0N6ty5M4sWLao15g0bNjBr1iyGDBlCjx49uOiii3jppZdwOBxuMX/zzTekp6fTuXNnOnfu7BrPU9Pxf/rpJ6ZNm0afPn3o378/s2fPJiUlxa3OokWL6Ny5MwcPHuS+++6jf//+nHPOOdx///2UlpbWGndtMVW06eeff87zzz/P+eefT+/evSkqKiIvL4+nn36ayy67jL59+9KvXz9uvPFG9uzZ47b/ms6rLr+3AAUFBTzxxBMMHz6cHj16MHToUO655x5ycnL4+eefmTRpEgD333+/K/7Kx/riiy+YMGECvXr1YtCgQdx9990cO3bM7Rj33Xcfffv25dChQ9x000307duXu+++27Xu5DFXqqry5ptvMmbMGHr27Ml5553Hv//9b/Lz893qnepvSbQs0nMlRB1s3LiRtm3b0q9fvzrVf/DBB/n444+55JJLuOGGG9ixYwevvvoqKSkpvPTSS251Dx48yB133MGkSZO44oorWLVqFffddx/du3enU6dOACxevJhXX32VyZMn06tXL4qKiti1axd//PEHgwcPBmDfvn1cddVVREVFcdNNN+Hv788XX3zBLbfcwqJFixg5cqTbcR977DHMZjO33nor6enprFixgkcffZQXXngBgOzsbGbOnEloaCizZs3CbDZz+PBhkpOT69WGt912G3///TfXXHMNMTEx5OTksGnTJo4cOUJsbGyDbwfw2muv4evry6xZszh48CDvvPMOBoMBRVEoKCjg1ltvZfv27Xz00UfExMRw66231uvcTvbxxx/j7+/PDTfcgL+/P5s3b2bhwoUUFRVx7733AvCPf/yDwsJCjh496vqSDQgIqHGfP/74IzfddBOxsbHceuutWCwW3nnnHa666io++uijKm1x5513Ehsby9y5c/nzzz/53//+R1hYGP/6179qPEZdYnr55ZcxGo3MnDkTq9WK0Wjk77//ZsOGDYwaNYrY2FiysrL44IMPuOaaa/j888+Jioqq8Zh1/b0tLi7m6quvJiUlhYkTJ9KtWzdyc3P5+uuvOXbsGAkJCdx+++0sXLiQK6+8knPOOQfA9Tf70Ucfcf/999OzZ0/mzp1LdnY2b731Fr/99huffPIJZrPZFZPdbmfmzJmcc8453HvvvbWOpfz3v//Nxx9/zIQJE7j22ms5fPgw//3vf/nzzz957733MBqNDf63JJoBTQhRq8LCQi0xMVGbPXt2nerv3r1bS0xM1ObNm+dW/tRTT2mJiYnaTz/95Cq78MILtcTERG3Lli2usuzsbK1Hjx7aU0895SobN26cNmvWrFqPO336dG3s2LFaWVmZq0xVVe3KK6/ULr74YlfZqlWrtMTERO3666/XVFV1lT/xxBNa165dtYKCAk3TNC05OVlLTEzUduzYUeMxN2/erCUmJmqbN292K09LS9MSExO1VatWaZqmafn5+VpiYqL2+uuv13oOJ6vrdtdcc412zTXXVIlr7NixmtVqdZXPnTtX69y5s3bjjTe6bX/llVdqF154YY3xV5aYmKgtXLjQtVzRnmlpaa6y0tLSKts99NBDWu/evd1+PrNmzXI7bm3HHz9+vJaUlKTl5ua6ynbv3q116dJFu+eee1xlCxcu1BITE7X777/fbZ+33HKLNnDgwCrHOllNMVW06YgRI6qcX1lZmeZwOKqcQ48ePbTFixfXel51/b198cUXtcTERO3LL7+sElvF7/GOHTuq/blZrVYtKSlJGzt2rGaxWFzlGzdu1BITE7UXX3zRVXbvvfdqiYmJ2rPPPlvlOPfee69b22zZskVLTEzUPvvsM7d63333nVt5Xf6WRMsilwWFOIWioiKg9l6Fyr799lsAbrjhBrfyGTNmuK2v0LFjR/r37+9aDgsLo0OHDqSlpbnKzGYz+/bt48CBA9UeMy8vj82bNzN69GiKiorIyckhJyeH3NxchgwZwoEDB6pc/pgyZQqKoriW+/fvj8PhID09HYCgoCDAOZDfZrPV6dxr4uvri9Fo5JdffqlyuaQxtqswfvx4t3EyvXr1QtM0Jk6c6FavV69eHDlyBLvdftrHqE7lno6Kn0f//v0pLS0lNTX1tPd3/Phxdu/ezRVXXEFISIirvEuXLpx33nlVfqcApk6d6rbcv39/8vLyXL/P9XX55ZdX6ckxmUyucVcOh4Pc3Fz8/f3p0KEDf/75Z437Op3f2y+//JIuXbpU6YEF3H6Pq7Nr1y6ys7O56qqr3MZ8DRs2jPj4+GrHS1511VW17hNg3bp1BAUFMXjwYFfsOTk5dO/eHX9/f9fl8ob8WxLNg1wWFOIUAgMDAedlibpIT09Hp9PRrl07t/JWrVphNptdyUuF1q1bV9lHcHCwWzJx++23889//pNLLrmExMREhgwZwvjx4+nSpQvgnCJC0zRefPFFXnzxxWrjys7Odrs806ZNG7f1FZdFCgoKABg4cCCXXHIJixcv5s0332TgwIFcdNFFXHbZZac9gNxkMnH33Xfz9NNPM3jwYHr37s2wYcO4/PLLadWqVYNvV9M5VnzJndzmQUFBqKpKYWEhoaGhp3Vu1dm3bx8vvPACmzdvrpLMFBYWnvb+MjIyAOjQoUOVdQkJCfzwww+uQdcVavr55ufnu36n66O6S7GqqvLWW2/x7rvvcvjwYbexZZWTwZOdzu/toUOHuPjii+sVc23tFx8fz6+//upWZjAYiI6OPuV+Dx48SGFhIUlJSdWuz87OBhr2b0k0D5JcCXEKgYGBREZGsm/fvtPa7lT/mq6g1+tPWWfAgAEkJyfz1VdfsWnTJj788ENWrFjBI488wuTJk1FVFXD
|
|
|
|
"text/plain": [
|
|
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"metadata": {},
|
|
|
|
"output_type": "display_data"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"data": {
|
|
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAlcAAAHPCAYAAAB+5v83AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAArElJREFUeJzs3Xd4FNX6wPHvzNZkk00lCQQQAoQqTYoRRERREAVFQMSCFxTl2tGrotd6sf5Er8C1ISrqBeXaQQSDYkNRVBRUUEzoLT2btnXm98duNlmSQAip8H6eZ5+ZOXPm7JmTTfbNmTNnFF3XdYQQQgghRL1Qm7oCQgghhBDHEwmuhBBCCCHqkQRXQgghhBD1SIIrIYQQQoh6JMGVEEIIIUQ9kuBKCCGEEKIeSXAlhBBCCFGPJLgSQgghhKhHElwJIYQQQtQjCa6EEC3eFVdcwRVXXNEk7/3uu+/StWtX9uzZU29l7tmzh65du/Luu+/WW5nNQUs/r7vuuosRI0Y0dTVEC2Bs6goI0ZLs2rWLl156iXXr1pGVlYXJZCI1NZXRo0dzySWXYLVam7qKogVZvnw5ubm5XHXVVU1dlaDmWKfaOnjwIMuWLePss8+me/fuTV0dcQKT4EqIWvr888+5+eabMZvNjBs3jtTUVDweDz/++CP/93//x19//cW//vWvpq7mCWnRokVNXYU6WbFiBdu2basSyCQnJ7Np0yaMxsb/E11TnepDQ59XVlYWCxYsIDk5uUGCq3/961/I43hFbUhwJUQt7N69m1tvvZU2bdqwePFiEhISgvsuu+wydu7cyeeff950FTzBmc3mpq5CvVIUBYvF0tTVOCKXy4XJZEJVazfCpKWc16FKS0sJDw/HZDI1dVVECyFjroSohZdeeonS0lIefvjhkMCq3EknncTUqVOD216vl//85z+cffbZ9OrVixEjRvDUU0/hdrtDjhsxYgTXXnstP/zwAxMmTODkk0/mrLPO4v333w/J5/F4WLBgAeeccw4nn3wygwcP5tJLL2XdunUh+TIyMrjpppsYNGgQJ598MuPHj+fTTz8NyVM+RujHH3/k0Ucf5dRTT6Vv375cf/315OXlheTdvHkz06dPZ/DgwfTu3ZsRI0Ywe/bs4P7vvvuOrl278t1334UcV93YmuzsbGbPns2wYcPo1asXQ4cOZebMmUccq1Sb4w4dc1Ver5UrV7JgwQJOP/10+vXrx0033URRURFut5uHH36YtLQ0+vXrx+zZs0N+NocbG9S1a1fmz59/2DqvWbOGGTNmMHToUHr16sXZZ5/Nf/7zH3w+X0idP//8c/bu3UvXrl3p2rVrcDxPTe//7bffMmXKFPr27cuAAQOYOXMmGRkZIXnmz59P165d2blzJ3fddRcDBgzglFNOYfbs2ZSVlR223oerU3mbfvTRRzz99NOcfvrp9OnTh+LiYgoKCnj88ce54IIL6NevH/379+fqq69m69atIeXXdF61+dwCOBwOHnnkEUaMGEGvXr0YNmwYd9xxB3l5eXz33XdMmDABgNmzZwfrX/m9Pv74Y8aPH0/v3r0ZPHgwt99+OwcPHgx5j7vuuot+/fqxa9currnmGvr168ftt98e3HfomCtN03j11VcZM2YMJ598Mqeddhr33XcfhYWFIfmO9Lskji/ScyVELaxdu5Z27drRv3//WuX/5z//yXvvvce5557L3/72NzZt2sQLL7xARkYG//nPf0Ly7ty5k5tvvpkJEyZw0UUX8c4773DXXXfRs2dPunTpAsCCBQt44YUXmDhxIr1796a4uJhff/2V3377jSFDhgCwbds2Lr30UhITE7nmmmsIDw/n448/5vrrr2f+/PmMHDky5H3nzJmD3W7nhhtuYO/evSxevJiHHnqIf//73wDk5uYyffp0YmJimDFjBna7nT179pCenl6nNrzxxhv566+/uPzyy0lOTiYvL49169axf/9+2rZtW+/HAbz44otYrVZmzJjBzp07eeONNzAajSiKgsPh4IYbbuCXX37h3XffJTk5mRtuuKFO53ao9957j/DwcP72t78RHh7O+vXrmTdvHsXFxdx5550AXHfddRQVFXHgwIHgl6zNZquxzG+++YZrrrmGtm3bcsMNN+B0OnnjjTe49NJLeffdd6u0xS233ELbtm2ZNWsWv//+O//73/+IjY3lH//4R43vUZs6Pfvss5hMJqZPn47b7cZkMvHXX3+xZs0aRo0aRdu2bcnJyeGtt97i8ssv56OPPiIxMbHG96zt57akpITLLruMjIwMLr74Ynr06EF+fj6fffYZBw8epFOnTtx0003MmzePSy65hFNOOQUg+Dv77rvvMnv2bE4++WRmzZpFbm4ur732Gj/99BPvv/8+drs9WCev18v06dM55ZRTuPPOOw87lvK+++7jvffeY/z48VxxxRXs2bOH//73v/z+++8sXboUk8lU779LogXQhRCHVVRUpKempuozZ86sVf4tW7boqamp+j333BOS/thjj+mpqan6t99+G0w788wz9dTUVH3Dhg3BtNzcXL1Xr176Y489FkwbO3asPmPGjMO+79SpU/Xzzz9fd7lcwTRN0/RLLrlEP+ecc4Jp77zzjp6amqpfddVVuqZpwfRHHnlE7969u+5wOHRd1/X09HQ9NTVV37RpU43vuX79ej01NVVfv359SPru3bv11NRU/Z133tF1XdcLCwv11NRU/aWXXjrsORyqtsddfvnl+uWXX16lXueff77udruD6bNmzdK7du2qX3311SHHX3LJJfqZZ55ZY/0rS01N1efNmxfcLm/P3bt3B9PKysqqHHfvvffqffr0Cfn5zJgxI+R9D/f+48aN09PS0vT8/Pxg2pYtW/Ru3brpd9xxRzBt3rx5empqqj579uyQMq+//np90KBBVd7rUDXVqbxNzzrrrCrn53K5dJ/PV+UcevXqpS9YsOCw51Xbz+0zzzyjp6am6p988kmVupV/jjdt2lTtz83tdutpaWn6+eefrzudzmD62rVr9dTUVP2ZZ54Jpt155516amqq/uSTT1Z5nzvvvDOkbTZs2KCnpqbqH374YUi+L7/8MiS9Nr9L4vgilwWFOILi4mLg8L0KlX3xxRcA/O1vfwtJnzZtWsj+cp07d2bAgAHB7djYWDp27Mju3buDaXa7nW3btrFjx45q37OgoID169czevRoiouLycvLIy8vj/z8fIYOHcqOHTuqXP6YNGkSiqIEtwcMGIDP52Pv3r0AREZGAv6B/B6Pp1bnXhOr1YrJZOL777+vcrmkIY4rN27cuJBxMr1790bXdS6++OKQfL1792b//v14vd6jfo/qVO7pKP95DBgwgLKyMjIzM4+6vKysLLZs2cJFF11EdHR0ML1bt26cdtppVT5TAJMnTw7ZHjBgAAUFBcHPc11deOGFVXpyzGZzcNyVz+cjPz+f8PBwOnbsyO+//15jWUfzuf3kk0/o1q1blR5YIORzXJ1ff/2V3NxcLr300pAxX8OHDyclJaXa8ZKXXnrpYcsEWLVqFZGRkQwZMiRY97y8PHr27El4eHjwcnl9/i6JlkEuCwpxBBEREYD/skRt7N27F1VVad++fUh6q1atsNvtweClXOvWrauUERUVFRJM3HTTTfz973/n3HPPJTU1laFDhzJu3Di6desG+KeI0HWdZ555hmeeeabaeuXm5oZcnmnTpk3I/vLLIg6HA4BBgwZx7rnnsmDBAl599VUGDRrE2WefzQUXXHDUA8jNZjO33347jz/+OEOGDKFPnz4MHz6cCy+8kFatWtX7cTWdY/mX3KFtHhkZiaZpFBUVERMTc1TnVp1t27bx73//m/Xr11cJZoqKio66vH379gHQsWPHKvs6derE119/HRx0Xa6mn29hYWHwM10X1V2K1TSN1157jSVLlrBnz56QsWWVg8FDHc3ndteuXZxzzjl1qvPh2i8lJYUff/wxJM1oNJKUlHTEcnfu3ElRURFpaWnV7s/NzQXq93dJtAwSXAlxBBERESQkJLBt27ajOu5I/02XMxgMR8wzcOBA0tPT+fTTT1m3bh1vv/02ixc
|
|
|
|
"text/plain": [
|
|
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"metadata": {},
|
|
|
|
"output_type": "display_data"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"source": [
|
|
|
|
"for i in range(5):\n",
|
|
|
|
" plot_consensus(x[i], config)"
|
2025-07-25 00:52:58 -04:00
|
|
|
]
|
2025-07-26 20:07:01 -04:00
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
2025-07-31 01:12:53 -04:00
|
|
|
"execution_count": null,
|
2025-07-26 20:07:01 -04:00
|
|
|
"id": "eaf34907",
|
|
|
|
"metadata": {},
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"data": {
|
|
|
|
"text/plain": [
|
|
|
|
"Array([ 0.88282514, 0.4825251 , -0.07153511, 0.03161097, 0.97659564], dtype=float32)"
|
|
|
|
]
|
|
|
|
},
|
2025-07-31 01:12:53 -04:00
|
|
|
"execution_count": 29,
|
2025-07-26 20:07:01 -04:00
|
|
|
"metadata": {},
|
|
|
|
"output_type": "execute_result"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"source": [
|
|
|
|
"s = initial_state[0]\n",
|
|
|
|
"s"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
2025-07-31 01:12:53 -04:00
|
|
|
"execution_count": null,
|
2025-07-26 20:07:01 -04:00
|
|
|
"id": "faa4b66f",
|
|
|
|
"metadata": {},
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"data": {
|
|
|
|
"text/plain": [
|
|
|
|
"Array([[ 0. , -0.40030003, -0.95436025, -0.8512142 , 0.0937705 ],\n",
|
|
|
|
" [ 0.40030003, 0. , -0.5540602 , -0.45091414, 0.49407053],\n",
|
|
|
|
" [ 0.95436025, 0.5540602 , 0. , 0.10314608, 1.0481308 ],\n",
|
|
|
|
" [ 0.8512142 , 0.45091414, -0.10314608, 0. , 0.9449847 ],\n",
|
|
|
|
" [-0.0937705 , -0.49407053, -1.0481308 , -0.9449847 , 0. ]], dtype=float32)"
|
|
|
|
]
|
|
|
|
},
|
2025-07-31 01:12:53 -04:00
|
|
|
"execution_count": 30,
|
2025-07-26 20:07:01 -04:00
|
|
|
"metadata": {},
|
|
|
|
"output_type": "execute_result"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"source": [
|
|
|
|
"s[jnp.newaxis, :] - s[:, jnp.newaxis]"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
2025-07-31 01:12:53 -04:00
|
|
|
"execution_count": null,
|
2025-07-26 20:07:01 -04:00
|
|
|
"id": "4d025175",
|
|
|
|
"metadata": {},
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"data": {
|
|
|
|
"text/plain": [
|
|
|
|
"Array([3, 3, 3, 4, 2], dtype=int32)"
|
|
|
|
]
|
|
|
|
},
|
2025-07-31 01:12:53 -04:00
|
|
|
"execution_count": 31,
|
2025-07-26 20:07:01 -04:00
|
|
|
"metadata": {},
|
|
|
|
"output_type": "execute_result"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"source": [
|
|
|
|
"jnp.sum(adj_mat, axis=1)"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
|
|
|
"execution_count": null,
|
|
|
|
"id": "0be99bad",
|
|
|
|
"metadata": {},
|
|
|
|
"outputs": [],
|
|
|
|
"source": []
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
2025-07-31 01:12:53 -04:00
|
|
|
"execution_count": null,
|
2025-07-26 20:07:01 -04:00
|
|
|
"id": "dcf551fc",
|
|
|
|
"metadata": {},
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"name": "stdout",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
2025-07-31 01:12:53 -04:00
|
|
|
"Running Kuramoto simulation for 10000 steps...\n",
|
2025-07-26 20:07:01 -04:00
|
|
|
"Simulation complete.\n",
|
|
|
|
"\n",
|
|
|
|
"--- Analysis Results ---\n",
|
2025-07-31 01:12:53 -04:00
|
|
|
"Initial Coherence R(0): 0.1514\n",
|
|
|
|
"Final Coherence R(T): 0.8072\n",
|
2025-07-26 20:07:01 -04:00
|
|
|
"\n",
|
|
|
|
"Natural Frequencies (ω):\n",
|
2025-07-31 01:12:53 -04:00
|
|
|
"[-0.7398006 -0.604128 -0.20279019 0.44994825 -0.46915287]\n",
|
2025-07-26 20:07:01 -04:00
|
|
|
"\n",
|
|
|
|
"Mean Frequencies over Simulation:\n",
|
2025-07-31 01:12:53 -04:00
|
|
|
"[-0.73979986 -0.22966443 -0.196503 -0.18220069 -0.21775451]\n"
|
2025-07-26 20:07:01 -04:00
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"data": {
|
2025-07-31 01:12:53 -04:00
|
|
|
"image/png": "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
|
2025-07-26 20:07:01 -04:00
|
|
|
"text/plain": [
|
|
|
|
"<Figure size 1200x800 with 2 Axes>"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"metadata": {},
|
|
|
|
"output_type": "display_data"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"source": [
|
|
|
|
"from kuramoto import *\n",
|
2025-07-31 01:12:53 -04:00
|
|
|
"config = KuramotoConfig(num_agents=5, coupling=2, dt=0.01, T=100)\n",
|
2025-07-26 20:07:01 -04:00
|
|
|
"key = jax.random.PRNGKey(42)\n",
|
|
|
|
"key, adj_key, state_key = jax.random.split(key, 3)\n",
|
|
|
|
"\n",
|
|
|
|
"# 2. Generate system components\n",
|
|
|
|
"adj_matrix = generate_random_adjacency_matrix(adj_key, config)\n",
|
|
|
|
"thetas0, omegas = generate_initial_state(state_key, config)\n",
|
|
|
|
"\n",
|
|
|
|
"# 3. Run the simulation\n",
|
|
|
|
"print(f\"Running Kuramoto simulation for {config.num_time_steps} steps...\")\n",
|
|
|
|
"trajectory = run_kuramoto_simulation(thetas0, omegas, adj_matrix, config)\n",
|
|
|
|
"# Block until the computation is done to measure time accurately if needed\n",
|
|
|
|
"trajectory.block_until_ready()\n",
|
|
|
|
"print(\"Simulation complete.\")\n",
|
|
|
|
"\n",
|
|
|
|
"# 4. Analyze the results\n",
|
|
|
|
"R_over_time = phase_coherence(trajectory)\n",
|
|
|
|
"avg_frequencies = mean_frequency(trajectory, omegas, adj_matrix, config)\n",
|
|
|
|
"\n",
|
|
|
|
"print(\"\\n--- Analysis Results ---\")\n",
|
|
|
|
"print(f\"Initial Coherence R(0): {R_over_time[0]:.4f}\")\n",
|
|
|
|
"print(f\"Final Coherence R(T): {R_over_time[-1]:.4f}\")\n",
|
|
|
|
"print(\"\\nNatural Frequencies (ω):\")\n",
|
|
|
|
"print(np.asarray(omegas))\n",
|
|
|
|
"print(\"\\nMean Frequencies over Simulation:\")\n",
|
|
|
|
"print(np.asarray(avg_frequencies))\n",
|
|
|
|
"\n",
|
|
|
|
"# 5. Plot the results\n",
|
|
|
|
"plot_kuramoto_results(np.asarray(trajectory), np.asarray(R_over_time), config)"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
|
|
|
"execution_count": null,
|
|
|
|
"id": "70037c87",
|
|
|
|
"metadata": {},
|
2025-07-31 01:12:53 -04:00
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"data": {
|
|
|
|
"text/plain": [
|
|
|
|
"Array([[1., 0., 0., 0., 0.],\n",
|
|
|
|
" [0., 1., 0., 0., 1.],\n",
|
|
|
|
" [0., 0., 1., 1., 0.],\n",
|
|
|
|
" [0., 0., 1., 1., 1.],\n",
|
|
|
|
" [0., 1., 0., 1., 1.]], dtype=float32)"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"execution_count": 9,
|
|
|
|
"metadata": {},
|
|
|
|
"output_type": "execute_result"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"source": [
|
|
|
|
"adj_matrix"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
|
|
|
"execution_count": null,
|
|
|
|
"id": "7a0cd55f",
|
|
|
|
"metadata": {},
|
|
|
|
"outputs": [],
|
|
|
|
"source": [
|
|
|
|
"import numpy as np\n",
|
|
|
|
"import matplotlib.pyplot as plt"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
|
|
|
"execution_count": null,
|
|
|
|
"id": "e8791633",
|
|
|
|
"metadata": {},
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"data": {
|
|
|
|
"text/plain": [
|
|
|
|
"[<matplotlib.lines.Line2D at 0x72f9e59c8260>]"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"execution_count": 5,
|
|
|
|
"metadata": {},
|
|
|
|
"output_type": "execute_result"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"data": {
|
|
|
|
"image/png": "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
|
|
|
|
"text/plain": [
|
|
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"metadata": {},
|
|
|
|
"output_type": "display_data"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"source": [
|
|
|
|
"x = [i for i in range(50)]\n",
|
|
|
|
"y = [np.log(i+1)/(i+1) for i in x]\n",
|
|
|
|
"y2 = [2*np.log(i+1)/(i+1) for i in x]\n",
|
|
|
|
"\n",
|
|
|
|
"plt.plot(x, y)\n",
|
|
|
|
"plt.plot(x, y2)\n"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
2025-09-01 14:46:34 -04:00
|
|
|
"execution_count": null,
|
2025-07-31 01:12:53 -04:00
|
|
|
"id": "a9136787",
|
|
|
|
"metadata": {},
|
|
|
|
"outputs": [],
|
|
|
|
"source": [
|
|
|
|
"import sims"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
2025-09-01 14:46:34 -04:00
|
|
|
"execution_count": null,
|
2025-07-31 01:12:53 -04:00
|
|
|
"id": "742861f5",
|
|
|
|
"metadata": {},
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"data": {
|
|
|
|
"text/plain": [
|
|
|
|
"{'num_sims': 500,\n",
|
|
|
|
" 'num_agents': 5,\n",
|
|
|
|
" 'max_range': 1,\n",
|
|
|
|
" 'step_size': 0.1,\n",
|
|
|
|
" 'directed': False,\n",
|
|
|
|
" 'weighted': False,\n",
|
|
|
|
" 'num_time_steps': 100}"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"execution_count": 4,
|
|
|
|
"metadata": {},
|
|
|
|
"output_type": "execute_result"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"source": [
|
|
|
|
"sims.consensus_config\n"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
|
|
|
"execution_count": null,
|
|
|
|
"id": "2c460e07",
|
|
|
|
"metadata": {},
|
2025-08-04 12:44:35 -04:00
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"name": "stderr",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
2025-09-01 14:46:34 -04:00
|
|
|
"100%|██████████| 10/10 [01:51<00:00, 11.18s/it]"
|
2025-08-04 12:44:35 -04:00
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "stdout",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
|
|
|
"-5.0\n"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "stderr",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
|
|
|
"\n"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"data": {
|
2025-09-01 14:46:34 -04:00
|
|
|
"image/png": "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
|
2025-08-04 12:44:35 -04:00
|
|
|
"text/plain": [
|
|
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"metadata": {},
|
|
|
|
"output_type": "display_data"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "stderr",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
2025-09-01 14:46:34 -04:00
|
|
|
"100%|██████████| 10/10 [01:52<00:00, 11.23s/it]"
|
2025-08-04 12:44:35 -04:00
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "stdout",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
|
|
|
"-4.5\n"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "stderr",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
|
|
|
"\n"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"data": {
|
2025-09-01 14:46:34 -04:00
|
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGiCAYAAAA1LsZRAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAIO9JREFUeJzt3X9sVfXh//HXbaH3otALBXvvBYutP1lXKVKg3qlxzmpR0637kTBEIUxdxEqAGzPpJr12bhZlGmZAmKjThDAQM9wQVseqYIzVarsmdvxQtA6ivS18CLe12pb1nu8fhKv32xZ7S9v3vbfPR9LEnvs+ve960vDMPee8j82yLEsAAACGJJmeAAAAGNmIEQAAYBQxAgAAjCJGAACAUcQIAAAwihgBAABGESMAAMAoYgQAABhFjAAAAKOIEQAAYFTUMfLmm2+qqKhIkydPls1m0yuvvPKt++zdu1czZ86U3W7XpZdeqhdeeGEAUwUAAIko6hhpb29Xbm6u1q9f36/xjY2Nuu2223TDDTeovr5ey5cv1913363XXnst6skCAIDEYzuXB+XZbDbt2LFDxcXFfY558MEHtWvXLjU0NIS3/fznP9fJkydVWVk50LcGAAAJYtRQv0F1dbUKCgoithUWFmr58uV97tPZ2anOzs7w96FQSCdOnNDEiRNls9mGaqoAAGAQWZaltrY2TZ48WUlJfZ+MGfIYCQQCcrlcEdtcLpdaW1v11VdfacyYMT32qaioUHl5+VBPDQAADIOjR4/qwgsv7PP1IY+RgSgtLZXP5wt/HwwGNXXqVB09elSpqakGZwYAAPqrtbVVGRkZGjdu3FnHDXmMuN1uNTc3R2xrbm5Wampqr5+KSJLdbpfdbu+xPTU1lRgBACDOfNslFkO+zojX61VVVVXEtj179sjr9Q71WwMAgDgQdYx88cUXqq+vV319vaTTt+7W19fryJEjkk6fYlm4cGF4/L333qtPPvlEv/rVr3Tw4EE9/fTTeumll7RixYrB+Q0AAEBcizpG3n//fV111VW66qqrJEk+n09XXXWVysrKJElNTU3hMJGkrKws7dq1S3v27FFubq6eeOIJPfvssyosLBykXwEAAMSzc1pnZLi0trbK6XQqGAxyzQgAAHGiv/9+82waAABgFDECAACMIkYAAIBRxAgAADCKGAEAAEYRIwAAwChiBAAAGEWMAAAAo4gRAABgFDECAACMIkYAAIBRxAgAADCKGAEAAEYRIwAAwChiBAAAGEWMAAAAo4gRAABgFDECAACMIkYAAIBRxAgAADCKGAEAAEYRIwAAwChiBAAAGEWMAAAAo4gRAABgFDECAACMIkYAAIBRxAgAADCKGAEAAEYRIwAAwChiBAAAGEWMAAAAo4gRAABgFDECAACMIkYAAIBRxAgAADCKGAEAAEYRIwAAwChiBAAAGEWMAAAAo4gRAABgFDECAACMIkYAAIBRxAgAADCKGAEAAEYRIwAAwChiBAAAGEWMAAAAo4gRAABgFDECAACMIkYAAIBRxAgAADCKGAEAAEYRIwAAwChiBAAAGEWMAAAAo4gRAABgFDECAACMIkYAAIBRxAgAADCKGAEAAEYRIwAAwChiBAAAGDWgGFm/fr0yMzPlcDiUn5+vmpqas45fu3atrrjiCo0ZM0YZGRlasWKFOjo6BjRhAACQWKKOkW3btsnn88nv96uurk65ubkqLCxUS0tLr+O3bNmilStXyu/368CBA3ruuee0bds2/frXvz7nyQMAgPgXdYw8+eSTuueee7R48WJlZ2dr48aNOu+88/T888/3Ov7tt9/WNddco9tvv12ZmZm6+eabNX/+/G/9NAUAAIwMUcVIV1eXamtrVVBQ8PUPSEpSQUGBqqure93ne9/7nmpra8Px8cknn2j37t269dZb+3yfzs5Otba2RnwBAIDENCqawcePH1d3d7dcLlfEdpfLpYMHD/a6z+23367jx4/r2muvlWVZ+t///qd77733rKdpKioqVF5eHs3UAABAnBryu2n27t2rRx99VE8//bTq6ur017/+Vbt27dIjjzzS5z6lpaUKBoPhr6NHjw71NAEAgCFRfTIyadIkJScnq7m5OWJ7c3Oz3G53r/usWrVKd955p+6++25J0pVXXqn29nb98pe/1G9+8xslJfXsIbvdLrvdHs3UotYdslTTeEItbR1KH+fQnKw0JSfZhvQ9AQBAT1HFSEpKivLy8lRVVaXi4mJJUigUUlVVle6///5e9/nyyy97BEdycrIkybKsAUz53FU2NKl85341Bb++vdjjdMhflK25OR4jcwIAYKSK+jSNz+fTpk2b9OKLL+rAgQNasmSJ2tvbtXjxYknSwoULVVpaGh5fVFSkDRs2aOvWrWpsbNSePXu0atUqFRUVhaNkOFU2NGnJ5rqIEJGkQLBDSzbXqbKhadjnBADASBbVJyOSNG/ePB07dkxlZWUKBAKaMWOGKisrwxe1HjlyJOKTkIceekg2m00PPfSQPvvsM11wwQUqKirS73//+8H7LfqpO2SpfOd+9fZ5jCXJJql8537dlO3mlA0AAMPEZpk6VxKF1tZWOZ1OBYNBpaamDvjnVH/8f5q/6Z1vHfeXe66W95KJA34fAADQ/3+/R9SzaVra+rcEfX/HAQCAczeiYiR9nGNQxwEAgHM3omJkTlaaPE6H+roaxKbTd9XMyUobzmkBADCijagYSU6yyV+ULUk9guTM9/6ibC5eBQBgGI2oGJGkuTkebbhjptzOyFMxbqdDG+6YyTojAAAMs6hv7U0Ec3M8uinbzQqsAADEgBEZI9LpUzbcvgsAgHkj7jQNAACILcQIAAAwihgBAABGESMAAMAoYgQAABhFjAAAAKOIEQAAYBQxAgAAjCJGAACAUcQIAAAwihgBAABGESMAAMAoYgQAABhFjAAAAKOIEQAAYBQxAgAAjCJGAACAUcQIAAAwihgBAABGESMAAMAoYgQAABhFjAAAAKOIEQAAYBQxAgAAjCJGAACAUcQIAAAwihgBAABGESMAAMAoYgQAABhFjAAAAKOIEQAAYBQxAgAAjCJGAACAUcQIAAAwihgBAABGESMAAMAoYgQAABhFjAAAAKOIEQAAYBQxAgAAjCJGAACAUcQIAAAwihgBAABGESMAAMAoYgQAABhFjAAAAKOIEQAAYBQxAgAAjCJGAACAUcQIAAAwapTpCeDcdIcs1TSeUEtbh9LHOTQnK03JSTbT0wIAoN+IkThW2dCk8p371RTsCG/zOB3yF2Vrbo7H4MwAAOg/TtPEqcqGJi3ZXBcRIpIUCHZoyeY6VTY0GZoZAADRIUbiUHfIUvnO/bJ6ee3MtvKd+9Ud6m0EAACxhRiJQzWNJ3p8IvJNlqSmYIdqGk8M36QAABggYiQOtbT1HSIDGQcAgEkDipH169crMzNTDodD+fn5qqmpOev4kydPqqSkRB6PR3a7XZdffrl27949oAlDSh/nGNRxAACYFPXdNNu2bZPP59PGjRuVn5+vtWvXqrCwUIcOHVJ6enqP8V1dXbrpppuUnp6ul19+WVOmTNF///tfjR8/fjDmPyLNyUqTx+lQINjR63UjNklu5+nbfAEAiHU2y7KiusoxPz9fs2fP1rp16yRJoVBIGRkZWrp0qVauXNlj/MaNG7VmzRodPHhQo0ePHtAkW1tb5XQ6FQwGlZqaOqCfkWjO3E0jKSJIzqwwsuGOmdzeCwAwqr//fkd1mqarq0u1tbUqKCj4+gckJamgoEDV1dW97vP3v/9dXq9XJSUlcrlcysnJ0aOPPqru7u4+36ezs1Otra0RX4g0N8ejDXfMlNsZeSrG7XQQIgCAuBLVaZrjx4+ru7tbLpcrYrvL5dLBgwd73eeTTz7R66+/rgULFmj37t06fPiw7rvvPp06dUp+v7/XfSoqKlReXh7N1EakuTke3ZTtZgVWAEBcG/IVWEOhkNLT0/XMM88oOTlZeXl5+uyzz7RmzZo+Y6S0tFQ+ny/8fWtrqzIyMoZ6qnEpOckm7yUTTU8DAIABiypGJk2apOTkZDU3N0dsb25ultvt7nUfj8e
|
2025-08-04 12:44:35 -04:00
|
|
|
"text/plain": [
|
|
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"metadata": {},
|
|
|
|
"output_type": "display_data"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "stderr",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
2025-09-01 14:46:34 -04:00
|
|
|
"100%|██████████| 10/10 [01:52<00:00, 11.29s/it]"
|
2025-08-04 12:44:35 -04:00
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "stdout",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
|
|
|
"-4.0\n"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "stderr",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
|
|
|
"\n"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"data": {
|
2025-09-01 14:46:34 -04:00
|
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGiCAYAAAA1LsZRAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAIT1JREFUeJzt3X9s1PXhx/HXtdA7FHpQsHcHFlt/sq5SpNh6c8Y5i0VNN/Yj6fAHhKmLrBqgMZNOoXb6tUynYQakE2WaEAZihg5hdawTjLGz2q6JHYiidTTaa2EN11pt6+4+3z8I525ttVfavu/H85FcQj/3/vTe5ZOmz9zn83mfzbIsSwAAAIYkmZ4AAABIbMQIAAAwihgBAABGESMAAMAoYgQAABhFjAAAAKOIEQAAYBQxAgAAjCJGAACAUcQIAAAwKuIYee2111RcXKyZM2fKZrPpxRdf/Np9Dhw4oPnz58tut+vCCy/Us88+O4KpAgCAeBRxjPT09Cg3N1ebNm0a1viWlhbdeOONuuaaa9TU1KRVq1bp9ttv1yuvvBLxZAEAQPyxnckH5dlsNu3evVuLFy8ecsy9996rvXv3qrm5ObTtJz/5iU6ePKmampqRvjQAAIgTE8b6Berq6lRYWBi2raioSKtWrRpyn76+PvX19YW+DgaD6uzs1PTp02Wz2cZqqgAAYBRZlqXu7m7NnDlTSUlDn4wZ8xjx+XxyuVxh21wul7q6uvT5559r0qRJA/apqqpSZWXlWE8NAACMg9bWVp177rlDPj/mMTIS5eXlKisrC33t9/s1e/Zstba2KjU11eDMAADAcHV1dSkjI0NTpkz5ynFjHiNut1vt7e1h29rb25WamjrouyKSZLfbZbfbB2xPTU0lRgAAiDFfd4nFmK8z4vV6VVtbG7Zt//798nq9Y/3SAAAgBkQcI59++qmamprU1NQk6dStu01NTTp27JikU6dYli5dGhp/55136sMPP9QvfvELvfvuu3ryySf1/PPPa/Xq1aPzEwAAgJgWcYy8/fbbuuyyy3TZZZdJksrKynTZZZdp3bp1kqS2trZQmEhSVlaW9u7dq/379ys3N1ePPfaYnn76aRUVFY3SjwAAAGLZGa0zMl66urrkdDrl9/u5ZgQAgBgx3L/ffDYNAAAwihgBAABGESMAAMAoYgQAABhFjAAAAKOIEQAAYBQxAgAAjCJGAACAUcQIAAAwihgBAABGESMAAMAoYgQAABhFjAAAAKOIEQAAYBQxAgAAjCJGAACAUcQIAAAwihgBAABGESMAAMAoYgQAABhFjAAAAKOIEQAAYBQxAgAAjCJGAACAUcQIAAAwihgBAABGESMAAMAoYgQAABhFjAAAAKOIEQAAYBQxAgAAjCJGAACAUcQIAAAwihgBAABGESMAAMAoYgQAABhFjAAAAKOIEQAAYBQxAgAAjCJGAACAUcQIAAAwihgBAABGESMAAMAoYgQAABhFjAAAAKOIEQAAYBQxAgAAjCJGAACAUcQIAAAwihgBAABGESMAAMAoYgQAABhFjAAAAKOIEQAAYBQxAgAAjCJGAACAUcQIAAAwihgBAABGESMAAMAoYgQAABhFjAAAAKOIEQAAYBQxAgAAjBpRjGzatEmZmZlyOBwqKChQfX39V47fsGGDLrnkEk2aNEkZGRlavXq1ent7RzRhAAAQXyKOkZ07d6qsrEwVFRVqbGxUbm6uioqK1NHRMej47du3a82aNaqoqNDhw4f1zDPPaOfOnfrlL395xpMHAACxL+IYefzxx3XHHXdo+fLlys7OVnV1tc466yxt3bp10PFvvPGGrrzySt10003KzMzUddddpyVLlnztuykAACAxRBQj/f39amhoUGFh4ZffIClJhYWFqqurG3Sfb33rW2poaAjFx4cffqh9+/bphhtuGPJ1+vr61NXVFfYAAADxaUIkg0+cOKFAICCXyxW23eVy6d133x10n5tuukknTpzQt7/9bVmWpf/85z+68847v/I0TVVVlSorKyOZGgAAiFFjfjfNgQMH9PDDD+vJJ59UY2Oj/vjHP2rv3r168MEHh9ynvLxcfr8/9GhtbR3raQIAAEMiemdkxowZSk5OVnt7e9j29vZ2ud3uQfdZu3atbr31Vt1+++2SpEsvvVQ9PT362c9+pvvuu09JSQN7yG63y263RzK1iAWClupbOtXR3av0KQ7lZ6UpOck2pq8JAAAGiihGUlJSlJeXp9raWi1evFiSFAwGVVtbq7vuumvQfT777LMBwZGcnCxJsixrBFM+czXNbarcc0ht/i9vL/Y4HaooztaiHI+ROQEAkKgiPk1TVlamLVu26LnnntPhw4e1YsUK9fT0aPny5ZKkpUuXqry8PDS+uLhYmzdv1o4dO9TS0qL9+/dr7dq1Ki4uDkXJeKppbtOKbY1hISJJPn+vVmxrVE1z27jPCQCARBbROyOSVFJSouPHj2vdunXy+XyaN2+eampqQhe1Hjt2LOydkPvvv182m03333+/Pv74Y51zzjkqLi7W//3f/43eTzFMgaClyj2HNNj7MZYkm6TKPYe0MNvNKRsAAMaJzTJ1riQCXV1dcjqd8vv9Sk1NHfH3qfvg31qy5e9fO+4Pd1wh7wXTR/w6AABg+H+/E+qzaTq6h7cE/XDHAQCAM5dQMZI+xTGq4wAAwJlLqBjJz0qTx+nQUFeD2HTqrpr8rLTxnBYAAAktoWIkOcmmiuJsSRoQJKe/rijO5uJVAADGUULFiCQtyvFo8y3z5XaGn4pxOx3afMt81hkBAGCcRXxrbzxYlOPRwmw3K7ACABAFEjJGpFOnbLh9FwAA8xLuNA0AAIguxAgAADCKGAEAAEYRIwAAwChiBAAAGEWMAAAAo4gRAABgFDECAACMIkYAAIBRxAgAADCKGAEAAEYRIwAAwChiBAAAGEWMAAAAo4gRAABgFDECAACMIkYAAIBRxAgAADCKGAEAAEYRIwAAwChiBAAAGEWMAAAAo4gRAABgFDECAACMIkYAAIBRxAgAADCKGAEAAEYRIwAAwChiBAAAGEWMAAAAo4gRAABgFDECAACMIkYAAIBRxAgAADCKGAEAAEYRIwAAwChiBAAAGEWMAAAAo4gRAABgFDECAACMIkYAAIBRxAgAADCKGAEAAEYRIwAAwChiBAAAGEWMAAAAo4gRAABgFDECAACMIkYAAIBRxAgAADCKGAEAAEYRIwAAwKgJpieAMxMIWqpv6VRHd6/SpziUn5Wm5CSb6WkBADBsxEgMq2luU+WeQ2rz94a2eZwOVRRna1GOx+DMAAAYPk7TxKia5jat2NYYFiKS5PP3asW2RtU0txmaGQAAkSFGYlAgaKlyzyFZgzx3elvlnkMKBAcbAQBAdBlRjGzatEmZmZlyOBwqKChQfX39V44/efKkSktL5fF4ZLfbdfHFF2vfvn0jmjCk+pbOAe+I/DdLUpu/V/UtneM3KQAARijia0Z27typsrIyVVdXq6CgQBs2bFBRUZGOHDmi9PT0AeP7+/u1cOFCpaen64UXXtCsWbP0r3/9S1OnTh2N+Sekju6hQ2Qk4wAAMCniGHn88cd1xx13aPny5ZKk6upq7d27V1u3btWaNWsGjN+6das6Ozv1xhtvaOLEiZKkzMzMM5t1gkuf4hjVcQAAmBTRaZr+/n41NDSosLDwy2+QlKTCwkLV1dUNus+f/vQneb1elZaWyuVyKScnRw8//LACgcCQr9PX16eurq6wB76Un5Umj9OhoW7gtenUXTX5WWnjOS0AAEYkohg5ceKEAoGAXC5X2HaXyyWfzzfoPh9++KFeeOEFBQIB7du3T2vXrtVjjz2mhx56aMjXqaqqktPpDD0yMjIimWbcS06yqaI4W5IGBMnpryuKs1lvBAAQE8b8bppgMKj09HQ99dRTysvLU0lJie677z5VV1cPuU95ebn8fn/o0draOtbTjDmLcjzafMt8uZ3hp2LcToc23zKfdUYAADEjomtGZsyYoeTkZLW3t4dtb29vl9vtHnQfj8ejiRMnKjk5ObTtG9/4hnw+n/r7+5WSkjJgH7vdLrvdHsnUEtK
|
2025-08-04 12:44:35 -04:00
|
|
|
"text/plain": [
|
|
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"metadata": {},
|
|
|
|
"output_type": "display_data"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "stderr",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
2025-09-01 14:46:34 -04:00
|
|
|
"100%|██████████| 10/10 [01:51<00:00, 11.18s/it]"
|
2025-08-04 12:44:35 -04:00
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "stdout",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
|
|
|
"-3.5\n"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "stderr",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
|
|
|
"\n"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"data": {
|
2025-09-01 14:46:34 -04:00
|
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGiCAYAAAA1LsZRAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAIRVJREFUeJzt3X9s1PXhx/HXtdg7FHpSkLtSi+38xbpKgULrzTnnrBY13diPpMMfEPyxyCoBGjPpFM5OZ5lOwwwIE3UuIQzEDDeE1bFOcMbOarsmdiiKltBor4U1XGu1rbv7fP9oOL1vW+yVtu/78Xwkl9jPvT+9d/mk9pn7fD7vs1mWZQkAAMCQJNMTAAAAiY0YAQAARhEjAADAKGIEAAAYRYwAAACjiBEAAGAUMQIAAIwiRgAAgFHECAAAMIoYAQAARkUcI6+++qpKSko0Y8YM2Ww2vfjii1+5z4EDBzRv3jzZ7XZddNFFeu6550YwVQAAEI8ijpHu7m7l5eVp06ZNwxrf3NysG2+8UVdffbUaGxu1atUq3XHHHXr55ZcjniwAAIg/tjP5oDybzabdu3dr0aJFQ4659957tXfvXjU1NYW2/eQnP9HJkydVXV090pcGAABxYsJYv0Btba2KiorCthUXF2vVqlVD7tPb26ve3t7Q18FgUB0dHZo6dapsNttYTRUAAIwiy7LU1dWlGTNmKClp6JMxYx4jPp9PLpcrbJvL5VJnZ6c+++wzTZw4ccA+VVVVqqysHOupAQCAcdDS0qLzzz9/yOfHPEZGoqKiQuXl5aGv/X6/Zs6cqZaWFqWmphqcGQAAGK7Ozk5lZmZq8uTJpx035jHidrvV1tYWtq2trU2pqamDvisiSXa7XXa7fcD21NRUYgQAgBjzVZdYjPk6Ix6PRzU1NWHb9u/fL4/HM9YvDQAAYkDEMfLJJ5+osbFRjY2Nkvpv3W1sbNSxY8ck9Z9iWbJkSWj8XXfdpQ8//FA///nP9e677+rJJ5/U888/r9WrV4/OTwAAAGJaxDHy1ltvae7cuZo7d64kqby8XHPnztW6deskSa2traEwkaTs7Gzt3btX+/fvV15enh577DE9/fTTKi4uHqUfAQAAxLIzWmdkvHR2dsrpdMrv93PNCAAAMWK4f7/5bBoAAGAUMQIAAIwiRgAAgFHECAAAMIoYAQAARhEjAADAKGIEAAAYRYwAAACjiBEAAGAUMQIAAIwiRgAAgFHECAAAMIoYAQAARhEjAADAKGIEAAAYRYwAAACjiBEAAGAUMQIAAIwiRgAAgFHECAAAMIoYAQAARhEjAADAKGIEAAAYRYwAAACjiBEAAGAUMQIAAIwiRgAAgFHECAAAMIoYAQAARhEjAADAKGIEAAAYRYwAAACjiBEAAGAUMQIAAIwiRgAAgFHECAAAMIoYAQAARhEjAADAKGIEAAAYRYwAAACjiBEAAGAUMQIAAIwiRgAAgFHECAAAMIoYAQAARhEjAADAKGIEAAAYRYwAAACjiBEAAGAUMQIAAIwiRgAAgFHECAAAMIoYAQAARhEjAADAKGIEAAAYRYwAAACjiBEAAGAUMQIAAIwiRgAAgFHECAAAMIoYAQAARhEjAADAKGIEAAAYNaIY2bRpk7KysuRwOFRYWKi6urrTjt+wYYMuvfRSTZw4UZmZmVq9erV6enpGNGEAABBfIo6RnTt3qry8XF6vVw0NDcrLy1NxcbHa29sHHb99+3atWbNGXq9X77zzjp555hnt3LlTv/jFL8548gAAIPZFHCOPP/647rzzTi1btkw5OTnasmWLzj77bD377LODjn/99dd1xRVX6KabblJWVpauu+46LV68+CvfTQEAAIkhohjp6+tTfX29ioqKvvgGSUkqKipSbW3toPt885vfVH19fSg+PvzwQ+3bt0833HDDkK/T29urzs7OsAcAAIhPEyIZfOLECQUCAblcrrDtLpdL77777qD73HTTTTpx4oS+9a1vybIs/e9//9Ndd9112tM0VVVVqqysjGRqAAAgRo353TQHDhzQww8/rCeffFINDQ3605/+pL179+rBBx8ccp+Kigr5/f7Qo6WlZaynCQAADInonZFp06YpOTlZbW1tYdvb2trkdrsH3Wft2rW69dZbdccdd0iSLrvsMnV3d+unP/2p7rvvPiUlDewhu90uu90eydQAAECMiuidkZSUFOXn56umpia0LRgMqqamRh6PZ9B9Pv300wHBkZycLEmyLCvS+Y6aQNBS7Qf/1Z8bP1LtB/9VIGhuLgAAJLKI3hmRpPLyci1dulTz589XQUGBNmzYoO7ubi1btkyStGTJEmVkZKiqqkqSVFJSoscff1xz585VYWGhjhw5orVr16qkpCQUJeOtuqlVlXsOqdX/xVon6U6HvCU5WpibbmROAAAkqohjpLS0VMePH9e6devk8/k0Z84cVVdXhy5qPXbsWNg7Iffff79sNpvuv/9+ffTRRzrvvPNUUlKiX/3qV6P3U0SguqlVy7c16P+/D+Lz92j5tgZtvmUeQQIAwDiyWSbPlQxTZ2ennE6n/H6/UlNTR/x9AkFL3/r1P8LeEfkymyS306HX7v2ukpNsI34dAAAw/L/fCfXZNHXNHUOGiCRZklr9Papr7hi/SQEAkOASKkbau4b3eTjDHQcAAM5cQsXI9MmOUR0HAADOXELFSEF2mtKdDg11NYhN/XfVFGSnjee0AABIaAkVI8lJNnlLciRpQJCc+tpbksPFqwAAjKOEihFJWpibrs23zJPbGX4qxu10cFsvAAAGRLzOSDxYmJuua3PcqmvuUHtXj6ZP7j81wzsiAACMv4SMEan/lI3nwqmmpwEAQMJLuNM0AAAguhAjAADAKGIEAAAYRYwAAACjiBEAAGAUMQIAAIwiRgAAgFHECAAAMIoYAQAARhEjAADAKGIEAAAYRYwAAACjiBEAAGAUMQIAAIwiRgAAgFHECAAAMIoYAQAARhEjAADAKGIEAAAYRYwAAACjiBEAAGAUMQIAAIwiRgAAgFHECAAAMIoYAQAARhEjAADAKGIEAAAYRYwAAACjiBEAAGAUMQIAAIwiRgAAgFHECAAAMIoYAQAARhEjAADAKGIEAAAYRYwAAACjiBEAAGAUMQIAAIwiRgAAgFHECAAAMIoYAQAARhEjAADAKGIEAAAYRYwAAACjiBEAAGAUMQIAAIwiRgAAgFHECAAAMIoYAQAARhEjAADAKGIEAAAYRYwAAACjJpieAM5MIGiprrlD7V09mj7ZoYLsNCUn2UxPCwCAYSNGYlh1U6sq9xxSq78ntC3d6ZC3JEcLc9MNzgwAgOHjNE2Mqm5q1fJtDWEhIkk+f4+Wb2tQdVOroZkBABCZEcXIpk2blJWVJYfDocLCQtXV1Z12/MmTJ1VWVqb09HTZ7XZdcskl2rdv34gmjP5TM5V7Dska5LlT2yr3HFIgONgIAACiS8QxsnPnTpWXl8vr9aqhoUF5eXkqLi5We3v7oOP7+vp07bXX6ujRo3rhhRd0+PBhbd26VRkZGWc8+URV19wx4B2RL7Mktfp7VNfcMX6TAgBghCK+ZuTxxx/XnXfeqWXLlkmStmzZor179+rZZ5/VmjVrBox/9tln1dHRoddff11nnXWWJCkrK+vMZp3g2ruGDpGRjAMAwKSI3hnp6+tTfX29ioqKvvgGSUkqKipSbW3toPv85S9/kcfjUVlZmVwul3Jzc/Xwww8rEAgM+Tq9vb3q7OwMe+AL0yc7RnUcAAAmRRQjJ06cUCAQkMvlCtvucrnk8/kG3efDDz/UCy+8oEAgoH379mnt2rV67LHH9NBDDw35OlVVVXI6naFHZmZmJNOMewXZaUp3OjTUDbw29d9VU5CdNp7TAgBgRMb8bppgMKjp06frqaeeUn5+vkpLS3Xfffdpy5YtQ+5TUVEhv98ferS0tIz1NGNKcpJN3pIcSRoQJKe+9pbksN4IACAmRBQj06ZNU3Jystra2sK2t7W1ye12D7pPenq6LrnkEiUnJ4e2ff3rX5fP51NfX9+g+9jtdqWmpoY9EG5hbro23zJPbmf4qRi306HNt8xjnRE
|
2025-08-04 12:44:35 -04:00
|
|
|
"text/plain": [
|
|
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"metadata": {},
|
|
|
|
"output_type": "display_data"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "stderr",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
2025-09-01 14:46:34 -04:00
|
|
|
"100%|██████████| 10/10 [01:51<00:00, 11.20s/it]"
|
2025-08-04 12:44:35 -04:00
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "stdout",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
|
|
|
"-3.0\n"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "stderr",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
|
|
|
"\n"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"data": {
|
2025-09-01 14:46:34 -04:00
|
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGiCAYAAAA1LsZRAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAIQNJREFUeJzt3X9s1PXhx/HXtdA7FHpSkLuCxdafrKsUKLTe1Dhntajpxn4kHf6AMHWRVQI0ZtApnJ3Ook7DDAgTdS4hDMQMN4TVsSo4Y2e1XRM7BUVLaLTXwhqutdrW3X2+fxBO79sWeqXt+348H8kl3ufen967ftLwzH0+n/fZLMuyBAAAYEiS6QkAAIDERowAAACjiBEAAGAUMQIAAIwiRgAAgFHECAAAMIoYAQAARhEjAADAKGIEAAAYRYwAAACjIo6RN954Q8XFxZo6dapsNptefvnlM+6zf/9+zZkzR3a7XZdccoleeOGFIUwVAADEo4hjpKurS7m5udq4ceOgxjc1NemWW27Rddddp4aGBq1YsUJ33XWXXn311YgnCwAA4o/tbL4oz2azadeuXVqwYMGAY1atWqU9e/aosbExtO2nP/2pTpw4oaqqqqG+NQAAiBNjRvoNampqVFhYGLatqKhIK1asGHCfnp4e9fT0hJ4Hg0G1t7dr0qRJstlsIzVVAAAwjCzLUmdnp6ZOnaqkpIFPxox4jPh8PrlcrrBtLpdLHR0d+vLLLzVu3Lg++1RWVqqiomKkpwYAAEZBc3OzLrjgggFfH/EYGYry8nKVlZWFnvv9fk2fPl3Nzc1KTU01ODMAADBYHR0dysjI0IQJE047bsRjxO12q7W1NWxba2urUlNT+/1URJLsdrvsdnuf7ampqcQIAAAx5kyXWIz4OiMej0fV1dVh2/bt2yePxzPSbw0AAGJAxDHy+eefq6GhQQ0NDZJO3rrb0NCgo0ePSjp5imXRokWh8ffcc48++eQT/fKXv9TBgwf19NNP68UXX9TKlSuH5zcAAAAxLeIYeffddzV79mzNnj1bklRWVqbZs2dr7dq1kqSWlpZQmEhSVlaW9uzZo3379ik3N1dPPPGEnn32WRUVFQ3TrwAAAGLZWa0zMlo6OjrkdDrl9/u5ZgQAgBgx2H+/+W4aAABgFDECAACMIkYAAIBRxAgAADCKGAEAAEYRIwAAwChiBAAAGEWMAAAAo4gRAABgFDECAACMIkYAAIBRxAgAADCKGAEAAEYRIwAAwChiBAAAGEWMAAAAo4gRAABgFDECAACMIkYAAIBRxAgAADCKGAEAAEYRIwAAwChiBAAAGEWMAAAAo4gRAABgFDECAACMIkYAAIBRxAgAADCKGAEAAEYRIwAAwChiBAAAGEWMAAAAo4gRAABgFDECAACMIkYAAIBRxAgAADCKGAEAAEYRIwAAwChiBAAAGEWMAAAAo4gRAABgFDECAACMIkYAAIBRxAgAADCKGAEAAEYRIwAAwChiBAAAGEWMAAAAo4gRAABgFDECAACMIkYAAIBRxAgAADCKGAEAAEYRIwAAwChiBAAAGEWMAAAAo4gRAABgFDECAACMIkYAAIBRxAgAADCKGAEAAEYRIwAAwChiBAAAGDWkGNm4caMyMzPlcDhUUFCg2tra045fv369Lr/8co0bN04ZGRlauXKluru7hzRhAAAQXyKOkR07dqisrExer1f19fXKzc1VUVGR2tra+h2/bds2rV69Wl6vVx988IGee+457dixQ7/61a/OevIAACD2RRwjTz75pO6++24tWbJE2dnZ2rx5s8455xw9//zz/Y5/6623dNVVV+nWW29VZmambrzxRi1cuPCMn6YAAIDEEFGM9Pb2qq6uToWFhV//gKQkFRYWqqampt99vvOd76iuri4UH5988on27t2rm2++ecD36enpUUdHR9gDAADEpzGRDD5+/LgCgYBcLlfYdpfLpYMHD/a7z6233qrjx4/r6quvlmVZ+t///qd77rnntKdpKisrVVFREcnUAABAjBrxu2n279+vRx55RE8//bTq6+v15z//WXv27NFDDz004D7l5eXy+/2hR3Nz80hPEwAAGBLRJyOTJ09WcnKyWltbw7a3trbK7Xb3u8+aNWt0xx136K677pIkXXHFFerq6tLPf/5z3X///UpK6ttDdrtddrs9kqkBAIAYFdEnIykpKcrLy1N1dXVoWzAYVHV1tTweT7/7fPHFF32CIzk5WZJkWVak8x02gaClmo//q780fKqaj/+rQNDcXAAASGQRfTIiSWVlZVq8eLHmzp2r/Px8rV+/Xl1dXVqyZIkkadGiRZo2bZoqKyslScXFxXryySc1e/ZsFRQU6PDhw1qzZo2Ki4tDUTLaqhpbVLH7fbX4v17rJN3pkLc4W/Nz0o3MCQCARBVxjJSUlOjYsWNau3atfD6fZs2apaqqqtBFrUePHg37JOSBBx6QzWbTAw88oE8//VTnn3++iouL9Zvf/Gb4fosIVDW2aOnWev3/z0F8/m4t3VqvTbfPIUgAABhFNsvkuZJB6ujokNPplN/vV2pq6pB/TiBo6epHXwv7ROSbbJLcTofeXPU9JSfZhvw+AABg8P9+J9R309Q2tQ8YIpJkSWrxd6u2qX30JgUAQIJLqBhp6xzc9+EMdhwAADh7CRUjUyY4hnUcAAA4ewkVI/lZaUp3OjTQ1SA2nbyrJj8rbTSnBQBAQkuoGElOsslbnC1JfYLk1HNvcTYXrwIAMIoSKkYkaX5OujbdPkduZ/ipGLfTwW29AAAYEPE6I/Fgfk66bsh2q7apXW2d3Zoy4eSpGT4RAQBg9CVkjEgnT9l4Lp5kehoAACS8hDtNAwAAogsxAgAAjCJGAACAUcQIAAAwihgBAABGESMAAMAoYgQAABhFjAAAAKOIEQAAYBQxAgAAjCJGAACAUcQIAAAwihgBAABGESMAAMAoYgQAABhFjAAAAKOIEQAAYBQxAgAAjCJGAACAUcQIAAAwihgBAABGESMAAMAoYgQAABhFjAAAAKOIEQAAYBQxAgAAjCJGAACAUcQIAAAwihgBAABGESMAAMAoYgQAABhFjAAAAKOIEQAAYBQxAgAAjCJGAACAUcQIAAAwihgBAABGESMAAMAoYgQAABhFjAAAAKOIEQAAYBQxAgAAjCJGAACAUcQIAAAwihgBAABGESMAAMAoYgQAABhFjAAAAKOIEQAAYBQxAgAAjCJGAACAUcQIAAAwihgBAABGESMAAMCoMaYngLMTCFqqbWpXW2e3pkxwKD8rTclJNtPTAgBg0Ib0ycjGjRuVmZkph8OhgoIC1dbWnnb8iRMnVFpaqvT0dNntdl122WXau3fvkCaMr1U1tujqR1/Twi3/0vLtDVq45V+6+tHXVNXYYnpqAAAMWsQxsmPHDpWVlcnr9aq+vl65ubkqKipSW1tbv+N7e3t1ww036MiRI3rppZd06NAhbdmyRdOmTTvrySeyqsYWLd1arxZ/d9h2n79bS7fWEyQAgJhhsyzLimSHgoICzZs3Txs2bJAkBYNBZWRkaNmyZVq9enWf8Zs3b9bjjz+ugwcPauzYsUOaZEdHh5xOp/x+v1JTU4f0M+JJIGjp6kdf6xMip9gkuZ0Ovbnqe5yyAQAYM9h/vyP6ZKS3t1d1dXUqLCz8+gckJamwsFA1NTX97vPXv/5VHo9HpaWlcrlcysnJ0SOPPKJAIDDg+/T09KijoyPsga/VNrUPGCKSZElq8Xertql99CYFAMAQRRQjx48fVyAQkMvlCtvucrnk8/n63eeTTz7RSy+9pEAgoL1792rNmjV64okn9PDDDw/4PpWVlXI6naFHRkZGJNOMe22dA4fIUMYBAGDSiN/aGwwGNWXKFD3zzDPKy8tTSUmJ7r//fm3evHnAfcrLy+X3+0OP5ubmkZ5mTJkywTGs4wAAMCmiW3snT56s5ORktba2hm1vbW2V2+3ud5/09HSNHTtWycnJoW3f+ta35PP51Nvbq5SUlD772O122e32SKaWUPKz0pTudMjn71Z/F/ycumYkPytttKcGAEDEIvpkJCUlRXl5eaqurg5tCwa
|
2025-08-04 12:44:35 -04:00
|
|
|
"text/plain": [
|
|
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"metadata": {},
|
|
|
|
"output_type": "display_data"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "stderr",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
2025-09-01 14:46:34 -04:00
|
|
|
"100%|██████████| 10/10 [01:52<00:00, 11.20s/it]"
|
2025-08-04 12:44:35 -04:00
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "stdout",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
|
|
|
"-2.5\n"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "stderr",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
|
|
|
"\n"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"data": {
|
2025-09-01 14:46:34 -04:00
|
|
|
"image/png": "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
|
2025-08-04 12:44:35 -04:00
|
|
|
"text/plain": [
|
|
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"metadata": {},
|
|
|
|
"output_type": "display_data"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "stderr",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
2025-09-01 14:46:34 -04:00
|
|
|
"100%|██████████| 10/10 [01:51<00:00, 11.16s/it]"
|
2025-08-04 12:44:35 -04:00
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "stdout",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
|
|
|
"-2.0\n"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "stderr",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
|
|
|
"\n"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"data": {
|
2025-09-01 14:46:34 -04:00
|
|
|
"image/png": "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
|
|
|
|
"text/plain": [
|
|
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"metadata": {},
|
|
|
|
"output_type": "display_data"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "stderr",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
|
|
|
"100%|██████████| 10/10 [01:51<00:00, 11.12s/it]"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "stdout",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
|
|
|
"-1.5\n"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "stderr",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
|
|
|
"\n"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"data": {
|
|
|
|
"image/png": "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
|
|
|
|
"text/plain": [
|
|
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"metadata": {},
|
|
|
|
"output_type": "display_data"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "stderr",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
|
|
|
"100%|██████████| 10/10 [01:51<00:00, 11.14s/it]"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "stdout",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
|
|
|
"-1.0\n"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "stderr",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
|
|
|
"\n"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"data": {
|
|
|
|
"image/png": "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
|
|
|
|
"text/plain": [
|
|
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"metadata": {},
|
|
|
|
"output_type": "display_data"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "stderr",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
|
|
|
"100%|██████████| 10/10 [01:51<00:00, 11.10s/it]"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "stdout",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
|
|
|
"-0.5\n"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "stderr",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
|
|
|
"\n"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"data": {
|
|
|
|
"image/png": "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
|
2025-08-04 12:44:35 -04:00
|
|
|
"text/plain": [
|
|
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"metadata": {},
|
|
|
|
"output_type": "display_data"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "stderr",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
2025-09-01 14:46:34 -04:00
|
|
|
"100%|██████████| 10/10 [01:51<00:00, 11.12s/it]"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "stdout",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
|
|
|
"0.0\n"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "stderr",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
|
|
|
"\n"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"data": {
|
|
|
|
"image/png": "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
|
|
|
|
"text/plain": [
|
|
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"metadata": {},
|
|
|
|
"output_type": "display_data"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "stderr",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
|
|
|
"100%|██████████| 10/10 [01:51<00:00, 11.11s/it]"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "stdout",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
|
|
|
"0.5\n"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "stderr",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
|
|
|
"\n"
|
2025-08-04 12:44:35 -04:00
|
|
|
]
|
2025-09-01 14:46:34 -04:00
|
|
|
},
|
|
|
|
{
|
|
|
|
"data": {
|
|
|
|
"image/png": "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
|
|
|
|
"text/plain": [
|
|
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"metadata": {},
|
|
|
|
"output_type": "display_data"
|
2025-08-04 12:44:35 -04:00
|
|
|
}
|
|
|
|
],
|
|
|
|
"source": [
|
|
|
|
"import os\n",
|
|
|
|
"import sys\n",
|
|
|
|
"import json\n",
|
|
|
|
"import pickle\n",
|
|
|
|
"import matplotlib.pyplot as plt\n",
|
|
|
|
"from tqdm import tqdm\n",
|
|
|
|
"import numpy as np\n",
|
|
|
|
"from config_ import ModelConfig\n",
|
|
|
|
"from train_and_eval import calculate_f1_score\n",
|
|
|
|
"from sklearn.metrics import f1_score\n",
|
|
|
|
"\n",
|
|
|
|
"\n",
|
|
|
|
"data_dir = \"datasets/consensus_dataset\"\n",
|
|
|
|
"\n",
|
|
|
|
"for THRESHOLD in np.arange(-5, 1, 0.5):\n",
|
|
|
|
" datapoints = {}\n",
|
2025-09-01 14:46:34 -04:00
|
|
|
" \n",
|
2025-08-04 12:44:35 -04:00
|
|
|
"\n",
|
|
|
|
" for folder in tqdm(os.listdir(data_dir)):\n",
|
|
|
|
" num_agents = int(folder.split(\"_\")[1]) # Extract num agents\n",
|
|
|
|
" \n",
|
|
|
|
" folder_path = os.path.join(data_dir, folder)\n",
|
|
|
|
"\n",
|
|
|
|
" # Load model config from summary json\n",
|
2025-09-01 14:46:34 -04:00
|
|
|
" with open(os.path.join(folder_path, \"results/NoiseType.NONE\", \"0.01\", \"summary_results.json\"), \"r\") as f:\n",
|
2025-08-04 12:44:35 -04:00
|
|
|
" summary_results = json.load(f)\n",
|
|
|
|
"\n",
|
|
|
|
" \n",
|
|
|
|
" for i, graph in enumerate(os.listdir(folder_path)):\n",
|
|
|
|
"\n",
|
|
|
|
" # train_summary_results\n",
|
|
|
|
" summ_results = summary_results[i-1]\n",
|
|
|
|
"\n",
|
|
|
|
" if graph == \"results\": # ignore the result folder\n",
|
|
|
|
" continue\n",
|
|
|
|
"\n",
|
|
|
|
" graph_path = os.path.join(folder_path, graph)\n",
|
|
|
|
"\n",
|
|
|
|
" # Load run data\n",
|
|
|
|
" with open(os.path.join(folder_path, graph), \"r\") as f:\n",
|
|
|
|
" run_data = json.load(f)\n",
|
|
|
|
"\n",
|
|
|
|
" true_graph = np.array(run_data[\"adjacency_matrix\"])\n",
|
|
|
|
" \n",
|
|
|
|
" learned_graph = np.array(summ_results[\"raw_attention\"])\n",
|
|
|
|
"\n",
|
|
|
|
" predicted_graph = (learned_graph > THRESHOLD).astype(int)\n",
|
|
|
|
"\n",
|
|
|
|
" true_flat = true_graph.flatten()\n",
|
|
|
|
" pred_flat = predicted_graph.flatten()\n",
|
|
|
|
" \n",
|
|
|
|
" calc_f1_score = f1_score(true_flat, pred_flat)\n",
|
|
|
|
"\n",
|
|
|
|
"\n",
|
|
|
|
" datapoints[num_agents] = datapoints.get(num_agents, [])\n",
|
|
|
|
" datapoints[num_agents].append(calc_f1_score)\n",
|
|
|
|
"\n",
|
|
|
|
"\n",
|
|
|
|
" for key in datapoints.keys():\n",
|
|
|
|
" datapoints[key] = sum(datapoints[key])/len(datapoints[key])\n",
|
|
|
|
"\n",
|
|
|
|
"\n",
|
|
|
|
" x = []\n",
|
|
|
|
" y = []\n",
|
|
|
|
"\n",
|
|
|
|
" for item in datapoints.items():\n",
|
|
|
|
" x.append(item[0])\n",
|
|
|
|
" y.append(item[1])\n",
|
|
|
|
"\n",
|
|
|
|
" print(THRESHOLD)\n",
|
|
|
|
" plt.ylim(0, 1)\n",
|
|
|
|
" plt.scatter(x, y)\n",
|
|
|
|
" plt.show() \n",
|
|
|
|
"\n",
|
|
|
|
" "
|
|
|
|
]
|
2025-09-01 14:46:34 -04:00
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
|
|
|
"execution_count": 8,
|
|
|
|
"id": "7a4fe194",
|
|
|
|
"metadata": {},
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"name": "stderr",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
|
|
|
"100%|██████████| 10/10 [00:01<00:00, 6.23it/s]\n"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "stdout",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
|
|
|
"-0.4\n"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"data": {
|
|
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAzYAAAElCAYAAAA2knddAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAcB5JREFUeJzt3XmYFNX1P/7Ty3TP3rMwCwMMDLuyqYMgbiCCCLghifETk+ASVzCiMVH8uiRRgxEXiKLGjwbiRwwRFY1GJYqCGyCrgiiLDDAsswAz3bN193T3/f3BbwZOnRro6aleCt6v5+F5uDW3bt2qrr5d1V3nHotSShEAAAAAAICJWePdAQAAAAAAgI7CjQ0AAAAAAJgebmwAAAAAAMD0cGMDAAAAAACmhxsbAAAAAAAwPdzYAAAAAACA6eHGBgAAAAAATA83NgAAAAAAYHq4sQEAAAAAANPDjQ2cVP7whz+QxWKhAwcOxLsrANAOo0aNolGjRsW7Gx127bXXUnp6ery7ARATPXr0oGuvvba1vGzZMrJYLLRs2bK49UlL20ezGjVqFA0cODDe3Yg73NiYhMViCetfogwW7777Ll166aVUUFBADoeDcnJy6Pzzz6cnn3ySPB5PvLsHYErz588ni8VCa9asiXdXElooFKJXXnmFxo4dS506daKkpCTKz8+niy66iF588UXy+Xzx7iJA1LWMFy3/kpOTqW/fvjRt2jSqrKyMd/fa5f3336c//OEP8e4G+Xw+euaZZ+jcc8+l7OxscjgcVFRURJdddhn985//pGAwGO8unvTs8e4AhOf//u//WPmVV16hjz76SCw/5ZRTYtktIRQK0Q033EDz58+nQYMG0W233UbdunWjuro6WrFiBd1///30/vvv09KlS+PaTwA4MTU1NdGkSZNoyZIldPbZZ9Pdd99NBQUFdOjQIVq+fDnddttttGrVKnr55Zfj3VWAmPjTn/5EJSUl5PV66YsvvqDnn3+e3n//fdq0aROlpqbGtC/nn38+NTU1kcPhaNd677//Ps2dOzeuNzfV1dU0fvx4Wrt2LY0bN47uv/9+ysnJoYqKCvr444/p5z//OW3fvp0eeOCBuPURcGNjGr/4xS9YeeXKlfTRRx+J5VqNjY0xHbgef/xxmj9/Pt1555305JNPksViaf3bHXfcQfv376dXXnnlmG2EQiHy+/2UnJwc7e4CQAQCgQCFQqF2X5zEwp133klLliyh2bNn0x133MH+9tvf/pa2bdtGH3300THbSOT9A2iv8ePH09ChQ4mI6Ne//jXl5ubSU089Re+88w79z//8j+46DQ0NlJaWZnhfrFaraT/bf/nLX9L69evpzTffpCuvvJL9bcaMGbRmzRrasmXLMdvwer3kcDjIasUDU9GCI3sCaXm+cu3atXT++edTamoq3XfffUR0+FE2vW869J4tra2tpenTp1O3bt3I6XRS79696S9/+QuFQqFjbr+xsZH+8pe/0IABA2jWrFnspqZF586d6Z577mHLLBYLTZs2jRYsWEADBgwgp9NJH374IRERPfHEE3T22WdTbm4upaSkUGlpKb3xxhui3aPb6NevHyUnJ1NpaSl99tlnun2tra2la6+9lrKyssjlctF1111HjY2Nx9w/ALPYu3cvXX/99VRQUEBOp5MGDBhAf//731kdv99PDz74IJWWlpLL5aK0tDQ677zz6NNPP2X1du7cSRaLhZ544gmaPXs29erVi5xOJ23evLk1Zm379u1hvZ9effVVKi0tpZSUFMrJyaGrr76aysvLRb0XX3yRevXqRSkpKTRs2DD6/PPPw9rv8vJyeumll+jiiy8WNzUt+vTpQ7fddltY+xfJMXr66aepe/fulJKSQiNHjqRNmzbp9mPv3r10xRVXUHp6OuXl5dHdd9+Nx1ggJkaPHk1ERGVlZUR0JO7rxx9/pAkTJlBGRgZdc801RHT4i8bZs2fTgAEDKDk5mQoKCujmm2+mmpoa1qZSih555BHq2rUrpaam0gUXXEDfffed2HZbMTarVq2iCRMmUHZ2NqWlpdHgwYNpzpw5rf2bO3cuEfHH8lsY3Uc9K1asoCVLltBNN90kbmpaDB06tPW4Hb2vCxcupPvvv5+6dOlCqamp5PF46NChQ3T33XfToEGDKD09nTIzM2n8+PH0zTff6B6vf/3rX3TfffdRYWEhpaWl0WWXXaY7dhIRbd68mS644AJKTU2lLl260OOPPx7WPp4o8IvNCebgwYM0fvx4uvrqq+kXv/gFFRQUtGv9xsZGGjlyJO3du5duvvlmKi4upq+++opmzJhB+/fvp9mzZ7e57hdffEG1tbV09913k81ma9d2P/nkE3r99ddp2rRp1KlTJ+rRowcREc2ZM4cuu+wyuuaaa8jv99PChQvppz/9Kb333ns0ceJE1sby5cvpX//6F/3mN78hp9NJzz33HF188cX09ddfi4C6q666ikpKSmjmzJm0bt06eumllyg/P5/+8pe/tKvfAImmsrKSzjrrrNab/by8PPrggw/ohhtuII/HQ9OnTyciIo/HQy+99BL9z//8D914441UV1dHL7/8Mo0bN46+/vprOu2001i78+bNI6/XSzfddBM5nU7Kyclp/Vs476dHH32UHnjgAbrqqqvo17/+NVVXV9MzzzxD559/Pq1fv56ysrKIiOjll1+mm2++mc4++2yaPn067dixgy677DLKycmhbt26HXPfP/jgAwoGg8f9JVuP3v619xi98sorVFdXR1OnTiWv10tz5syh0aNH08aNG9lYHAwGady4cTR8+HB64okn6OOPP6Ynn3ySevXqRbfeemu7+w7QHj/++CMREeXm5rYuCwQCNG7cODr33HPpiSeeaH3S4+abb6b58+fTddddR7/5zW+orKyMnn32WVq/fj19+eWXlJSUREREDz74ID3yyCM0YcIEmjBhAq1bt44uuugi8vv9x+3PRx99RJdccgl17tyZ7rjjDiosLKTvv/+e3nvvPbrjjjvo5ptvpn379uk+fh+rPr777rtEJJ+eCcfDDz9MDoeD7r77bvL5fORwOGjz5s309ttv009/+lMqKSmhyspK+tvf/kYjR46kzZs3U1FREWvj0UcfJYvFQvfccw9VVVXR7NmzacyYMbRhwwZKSUlprVdTU0MXX3wxXXnllXTVVVfRG2+8Qffccw8NGjSIxo8f3+6+m5ICU5o6darSvnwjR45URKReeOEFUZ+I1EMPPSSWd+/eXU2ZMqW1/PDDD6u0tDS1detWVu/ee+9VNptN7d69u80+zZkzRxGRevvtt9nyQCCgqqur2b9QKMT6ZrVa1XfffSfabGxsZGW/368GDhyoRo8eLfaPiNSaNWtal+3atUslJyerSZMmtS576KGHFBGp66+/nq0/adIklZub2+a+ASSCefPmKSJSq1evbrPODTfcoDp37qwOHDjAll999dXK5XK1vqcCgYDy+XysTk1NjSooKGDvj7KyMkVEKjMzU1VVVbH64b6fdu7cqWw2m3r00UdZvY0bNyq73d663O/3q/z8fHXaaaexvr344ouKiNTIkSPb3G+llLrzzjsVEakNGzaw5T6fj40/Rx+bY+1fe49RSkqK2rNnT+vyVatWKSJSd955Z+uyKVOmKCJSf/rTn1i7p59+uiotLT3m/gG0R8t48fHHH6vq6mpVXl6uFi5cqHJzc9m52nJO3nvvvWz9zz//XBGRWrBgAVv+4YcfsuVVVVXK4XCoiRMnss/2++67TxERu8b49NNPFRGpTz/9VCl1+D1WUlKiunfvrmpqath2jm5L75onWn3UM2nSJEVEqra2li1vampiY8vR+9Cyrz179hTXMl6vVwWDQbasrKxMOZ1ONja0tNGlSxfl8Xhal7/++uuKiNScOXNal7VcA77yyiuty3w+nyosLFSTJ08+5v6dSPAo2gnG6XTSddddF/H6ixYtovPOO4+ys7PpwIEDrf/GjBlDwWCwzUe7iKh1tjPtVKYbN26kvLw89u/gwYOszsiRI+nUU08VbWq/iXC73XTeeefRunXrRN0RI0ZQaWlpa7m4uJg
|
|
|
|
"text/plain": [
|
|
|
|
"<Figure size 1000x800 with 3 Axes>"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"metadata": {},
|
|
|
|
"output_type": "display_data"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"data": {
|
|
|
|
"image/png": "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
|
|
|
|
"text/plain": [
|
|
|
|
"<Figure size 1000x800 with 3 Axes>"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"metadata": {},
|
|
|
|
"output_type": "display_data"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"data": {
|
|
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAy0AAAElCAYAAADp3A1CAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAMchJREFUeJzt3Wl4FHW6/vE7dEhnIcQASSAQILKOgAOTiEdWFzCyiCDKMINnArigBgEVBRzRUcTooJ5wIcLgAnJEUVBc+IMcYETFQZAlDugoMAQnA0JAloBAQtK//wtP+tBkIU1S6ar093Nd/SJF9ZOni9Td9XRXV4cYY4wAAAAAwKbqBLoBAAAAAKgIQwsAAAAAW2NoAQAAAGBrDC0AAAAAbI2hBQAAAICtMbQAAAAAsDWGFgAAAAC2xtACAAAAwNYYWgAAAADYGkMLao0//elPCgkJ0eHDhwPdCgA/XH311br66qsD3UaVjRw5UvXq1Qt0G0CNadmypUaOHOn9ed26dQoJCdG6desC1tP5zu/Rqa6++mp17Ngx0G0EFEOLDYSEhFTqZpcQ+Oijj3TjjTcqISFBYWFhatCggXr16qXnn39e+fn5gW4PcKQFCxYoJCREmzdvDnQrtubxeLRw4UL17dtXjRo1Ut26dRUfH6/rr79e8+bNU0FBQaBbBGpESWaU3MLDw9W2bVuNHTtWBw8eDHR7flmxYoX+9Kc/BboNFRQUaNasWerRo4diY2MVFhamxMREDRo0SG+99ZaKi4sD3WJQCw10A5D++7//2+fnhQsXavXq1aWW/+pXv6rJtkrxeDy6/fbbtWDBAnXq1En33nuvkpKSdOLECW3YsEGPPvqoVqxYobVr1wa0TwC10+nTpzVkyBCtWrVK3bp108SJE5WQkKAjR47o008/1b333quNGzfq1VdfDXSrQI158sknlZycrDNnzmj9+vWaM2eOVqxYoR07digyMrJGe+nVq5dOnz6tsLAwv+63YsUKzZ49O6CDy6FDh9SvXz9t2bJFaWlpevTRR9WgQQMdOHBAa9as0e9//3vt3r1bU6dODViPwY6hxQZuu+02n5+//PJLrV69utTy8506dapGA+nPf/6zFixYoPvvv1/PP/+8QkJCvP82fvx4/fjjj1q4cGGFNTwejwoLCxUeHm51uwAuQlFRkTwej98HHTXh/vvv16pVq5SVlaXx48f7/NuDDz6oXbt2afXq1RXWsPPjAy5Gv379lJqaKkm644471LBhQ73wwgv64IMP9Lvf/a7M+/z888+Kioqq9l7q1Knj2Of3//zP/9S2bdv07rvv6uabb/b5tylTpmjz5s36/vvvK6xx5swZhYWFqU4dTmSyAlvVIUrOZdyyZYt69eqlyMhIPfLII5J+Ob2srFcnyjqP89ixY5owYYKSkpLkdrvVunVrPfvss/J4PBX+/lOnTunZZ59Vhw4dNGPGDJ+BpUSTJk00adIkn2UhISEaO3asFi1apA4dOsjtduvjjz+WJD333HPq1q2bGjZsqIiICKWkpGjp0qWl6p5bo127dgoPD1dKSoo+++yzMns9duyYRo4cqUsuuUQxMTEaNWqUTp06VeHjA5xi3759Gj16tBISEuR2u9WhQwe99tprPusUFhbqscceU0pKimJiYhQVFaWePXvqk08+8Vlv7969CgkJ0XPPPaesrCy1atVKbrdb3377rfczYrt3767U/vTGG28oJSVFERERatCggYYPH67c3NxS682bN0+tWrVSRESEunbtqs8//7xSjzs3N1evvPKKbrjhhlIDS4k2bdro3nvvrdTju5ht9F//9V9q0aKFIiIi1Lt3b+3YsaPMPvbt26fBgwerXr16iouL08SJEzmtBDXm2muvlSTl5ORI+r/PWv3zn/9U//79FR0drREjRkj65YXErKwsdejQQeHh4UpISNCYMWN09OhRn5rGGD311FNq1qyZIiMjdc011+ibb74p9bvL+0zLxo0b1b9/f8XGxioqKkqXX365Zs6c6e1v9uzZknxPly9R3T2WZcOGDVq1apXuuuuuUgNLidTUVO92O/exLl68WI8++qiaNm2qyMhI5efn68iRI5o4caI6deqkevXqqX79+urXr5++/vrrMrfX22+/rUceeUSNGzdWVFSUBg0aVGZ+StK3336ra665RpGRkWratKn+/Oc/V+ox1ga80+IgP/30k/r166fhw4frtttuU0JCgl/3P3XqlHr37q19+/ZpzJgxat68uf72t79pypQp+vHHH5WVlVXufdevX69jx45p4sSJcrlcfv3ev/71r3rnnXc0duxYNWrUSC1btpQkzZw5U4MGDdKIESNUWFioxYsX69Zbb9Xy5cs1YMAAnxqffvqp3n77bY0bN05ut1svvfSSbrjhBm3atKnUB9OGDRum5ORkZWZmauvWrXrllVcUHx+vZ5991q++Abs5ePCg/uM//sM7yMfFxWnlypW6/fbblZ+frwkTJkiS8vPz9corr+h3v/ud7rzzTp04cUKvvvqq0tLStGnTJnXu3Nmn7vz583XmzBndddddcrvdatCggfffKrM/TZ8+XVOnTtWwYcN0xx136NChQ5o1a5Z69eqlbdu26ZJLLpEkvfrqqxozZoy6deumCRMmaM+ePRo0aJAaNGigpKSkCh/7ypUrVVxcfMF3oMtS1uPzdxstXLhQJ06cUEZGhs6cOaOZM2fq2muv1fbt232yuLi4WGlpabryyiv13HPPac2aNXr++efVqlUr3XPPPX73Dvjrn//8pySpYcOG3mVFRUVKS0tTjx499Nxzz3nP0hgzZowWLFigUaNGady4ccrJydGLL76obdu26YsvvlDdunUlSY899pieeuop9e/fX/3799fWrVt1/fXXq7Cw8IL9rF69WgMHDlSTJk00fvx4NW7cWP/4xz+0fPlyjR8/XmPGjNH+/fvLPC2+pnr86KOPJJU+86Uypk2bprCwME2cOFEFBQUKCwvTt99+q/fff1+33nqrkpOTdfDgQf3lL39R79699e233yoxMdGnxvTp0xUSEqJJkyYpLy9PWVlZ6tOnj7KzsxUREeFd7+jRo7rhhht08803a9iwYVq6dKkmTZqkTp06qV+/fn737jgGtpORkWHO/6/p3bu3kWTmzp1ban1J5vHHHy+1vEWLFiY9Pd3787Rp00xUVJTZuXOnz3qTJ082LpfL/Otf/yq3p5kzZxpJ5v333/dZXlRUZA4dOuRz83g8Pr3VqVPHfPPNN6Vqnjp1yufnwsJC07FjR3PttdeWenySzObNm73LfvjhBxMeHm6GDBniXfb4448bSWb06NE+9x8yZIhp2LBhuY8NsIP58+cbSearr74qd53bb7/dNGnSxBw+fNhn+fDhw01MTIx3nyoqKjIFBQU+6xw9etQkJCT47B85OTlGkqlfv77Jy8vzWb+y+9PevXuNy+Uy06dP91lv+/btJjQ01Lu8sLDQxMfHm86dO/v0Nm/ePCPJ9O7du9zHbYwx999/v5FksrOzfZYXFBT45M+526aix+fvNoqIiDD//ve/vcs3btxoJJn777/fuyw9Pd1IMk8++aRP3S5dupiUlJQKHx/gr5LMWLNmjTl06JDJzc01ixcvNg0bNvT5ey35u5w8ebLP/T///HMjySxatMhn+ccff+yzPC8vz4SFhZkBAwb4PL8/8sgjRpLPccYnn3xiJJlPPvnEGPPLfpacnGxatGhhjh496vN7zq1V1nGPVT2WZciQIUaSOXbsmM/y06dP++TLuY+h5LFeeumlpY5nzpw5Y4qLi32W5eTkGLfb7ZMPJTWaNm1q8vPzvcvfeecdI8nMnDnTu6zkOHDhwoXeZQUFBaZx48Zm6NChFT6+2oLTwxzE7XZr1KhRF33/JUuWqGfPnoqNjdXhw4e9tz59+qi4uLjc060kea8Kdv7lPLdv3664uDif208//eSzTu/evXXZZZeVqnn+qwfHjx9Xz549tXXr1lLrXnXVVUpJSfH+3Lx5c910001atWpVqdMu7r77bp+fe/bsqZ9++okrm8HRjDF69913deONN8oY47MPp6Wl6fj
|
|
|
|
"text/plain": [
|
|
|
|
"<Figure size 1000x800 with 3 Axes>"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"metadata": {},
|
|
|
|
"output_type": "display_data"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"data": {
|
|
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAy0AAAElCAYAAADp3A1CAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAALK1JREFUeJzt3X9UVHX+x/HXCDIgIIECaqKRlq2aueHa+tsMJfyVZuu6W99F+mWFpZVb0ancyhZbsy+eMs1vputma2mp3zwaq25q9TXzR7RaW+kutmz+ACtBUSGYz/ePDrOO/JABmXtn5vk4Z/6Y652Z94zcF/c1c+/gMMYYAQAAAIBNtbB6AAAAAACoD6UFAAAAgK1RWgAAAADYGqUFAAAAgK1RWgAAAADYGqUFAAAAgK1RWgAAAADYGqUFAAAAgK1RWgAAAADYGqUFAeN3v/udHA6Hjh07ZvUoALwwdOhQDR061Ooxmmzy5MmKioqyegzAZy655BJNnjzZfX3Lli1yOBzasmWLZTOd69wZ/dXQoUPVs2dPq8ewFKXFBhwOR4MudgmBd955R2PGjFFiYqLCwsIUFxenwYMHa+7cuSotLbV6PMAvLV26VA6HQ7t27bJ6FFtzuVxatmyZhg8frrZt26ply5ZKSEjQiBEjtGjRIpWXl1s9IuAT1ZlRfQkPD9fll1+uqVOn6ujRo1aP55X169frd7/7ndVjqLy8XC+88IIGDhyo2NhYhYWFqUOHDho7dqz+/Oc/q6qqyuoRg1qo1QNA+tOf/uRxfdmyZdq4cWON5T/5yU98OVYNLpdLt912m5YuXaorr7xS99xzj5KSknTixAlt375djz32mNavX6/NmzdbOieAwHT69GmNHz9eeXl56t+/v2bMmKHExER999132rp1q+655x7t2LFDixcvtnpUwGeeeuopJScn68yZM/rggw+0YMECrV+/Xvv27VOrVq18OsvgwYN1+vRphYWFeXW79evXa/78+ZYWl+LiYqWnp2v37t1KS0vTY489pri4OB05ckSbNm3Sr3/9ax04cECPP/64ZTMGO0qLDdxyyy0e1z/66CNt3LixxvJznTp1yqeB9Ic//EFLly7V/fffr7lz58rhcLj/bdq0aTp8+LCWLVtW7324XC5VVFQoPDy8uccF0AiVlZVyuVxe73T4wv3336+8vDzl5uZq2rRpHv/24IMPav/+/dq4cWO992Hn5wc0Rnp6uvr06SNJuv3229WmTRs9//zzWrt2rX71q1/VepuysjJFRkZe8FlatGjht7/f/+u//kuffPKJ3nrrLd14440e/5adna1du3bpyy+/rPc+zpw5o7CwMLVowYFMzYFX1U9UH8u4e/duDR48WK1atdKjjz4q6cfDy2p7d6K24ziPHz+u6dOnKykpSU6nU127dtWzzz4rl8tV7+OfOnVKzz77rHr06KE5c+Z4FJZq7du318MPP+yxzOFwaOrUqVq+fLl69Oghp9Opd999V5L03HPPqX///mrTpo0iIiKUkpKiVatW1bjfs++jW7duCg8PV0pKirZt21brrMePH9fkyZN10UUXKSYmRpmZmTp16lS9zw/wF998841uvfVWJSYmyul0qkePHnr11Vc91qmoqNATTzyhlJQUxcTEKDIyUoMGDdJ7773nsd7BgwflcDj03HPPKTc3V126dJHT6dTnn3/uPkfswIEDDdqeXnvtNaWkpCgiIkJxcXGaNGmSCgsLa6y3aNEidenSRREREerbt6/ef//9Bj3vwsJCvfLKK7r++utrFJZql112me65554GPb/GvEb//d//rc6dOysiIkJDhgzRvn37ap3jm2++0bhx4xQVFaX4+HjNmDGDw0rgM8OGDZMkFRQUSPrPuVb/+Mc/NHLkSEVHR+vmm2+W9OMbibm5uerRo4fCw8OVmJioKVOm6Pvvv/e4T2OMZs2apY4dO6pVq1a69tpr9dlnn9V47LrOadmxY4dGjhyp2NhYRUZGqlevXpo3b557vvnz50vyPFy+2oWesTbbt29XXl6e7rzzzhqFpVqfPn3cr9vZz3XFihV67LHHdPHFF6tVq1YqLS3Vd999pxkzZujKK69UVFSUWrdurfT0dH366ae1vl5vvPGGHn30UbVr106RkZEaO3ZsrfkpSZ9//rmuvfZatWrVShdffLH+8Ic/NOg5BgI+afEj3377rdLT0zVp0iTdcsstSkxM9Or2p06d0pAhQ/TNN99oypQp6tSpk/7v//5P2dnZOnz4sHJzc+u87QcffKDjx49rxowZCgkJ8epx//rXv+rNN9/U1KlT1bZtW11yySWSpHnz5mns2LG6+eabVVFRoRUrVugXv/iF1q1bp1GjRnncx9atW/XGG2/ovvvuk9Pp1EsvvaTrr79eH3/8cY0T0yZOnKjk5GTl5ORoz549euWVV5SQkKBnn33Wq7kBuzl69Kh+/vOfu4t8fHy8NmzYoNtuu02lpaWaPn26JKm0tFSvvPKKfvWrX+mOO+7QiRMntHjxYqWlpenjjz9W7969Pe53yZIlOnPmjO688045nU7FxcW5/60h29Mzzzyjxx9/XBMnTtTtt9+u4uJivfDCCxo8eLA++eQTXXTRRZKkxYsXa8qUKerfv7+mT5+uf/7znxo7dqzi4uKUlJRU73PfsGGDqqqqzvsJdG1qe37evkbLli3TiRMnlJWVpTNnzmjevHkaNmyY9u7d65HFVVVVSktL0zXXXKPnnntOmzZt0ty5c9WlSxfdfffdXs8OeOsf//iHJKlNmzbuZZWVlUpLS9PAgQP13HPPuY/SmDJlipYuXarMzEzdd999Kigo0IsvvqhPPvlEH374oVq2bClJeuKJJzRr1iyNHDlSI0eO1J49ezRixAhVVFScd56NGzdq9OjRat++vaZNm6Z27drp73//u9atW6dp06ZpypQpOnToUK2HxftqxnfeeUdSzSNfGuLpp59WWFiYZsyYofLycoWFhenzzz/XmjVr9Itf/ELJyck6evSoXn75ZQ0ZMkSff/65OnTo4HEfzzzzjBwOhx5++GEVFRUpNzdXqampys/PV0REhHu977//Xtdff71uvPFGTZw4UatWrdLDDz+sK6+8Uunp6V7P7ncMbCcrK8uc+18zZMgQI8ksXLiwxvqSzMyZM2ss79y5s8nIyHBff/rpp01kZKT56quvPNZ75JFHTEhIiPnXv/5V50zz5s0zksyaNWs8lldWVpri4mKPi8vl8pitRYsW5rPPPqtxn6dOnfK4XlFRYXr27GmGDRtW4/lJMrt27XIv+/rrr014eLgZP368e9nMmTONJHPrrbd63H78+PGmTZs2dT43wA6WLFliJJmdO3fWuc5tt91m2rdvb44dO+axfNKkSSYmJsa9TVVWVpry8nKPdb7//nuTmJjosX0UFBQYSaZ169amqKjIY/2Gbk8HDx40ISEh5plnnvFYb+/evSY0NNS9vKKiwiQkJJjevXt7zLZo0SIjyQwZMqTO522MMffff7+RZPLz8z2Wl5eXe+TP2a9Nfc/P29coIiLC/Pvf/3Yv37Fjh5Fk7r//fveyjIwMI8k89dRTHvf705/+1KSkpNT7/ABvVWfGpk2bTHFxsSksLDQrVqwwbdq08fh5rf65fOSRRzxu//777xtJZvny5R7L3333XY/lRUVFJiwszIwaNcrj9/ujjz5qJHnsZ7z33ntGknnvvfeMMT9uZ8nJyaZz587m+++/93ics++rtv2e5pqxNuPHjzeSzPHjxz2Wnz592iNfzn4O1c/10ksvrbE/c+bMGVNVVeWxrKCgwDidTo98qL6Piy++2JSWlrqXv/nmm0aSmTdvnntZ9X7gsmXL3MvKy8tNu3btzIQJE+p9foGCw8P8iNPpVGZmZqNvv3LlSg0aNEixsbE6duyY+5Kamqqqqqo6D7eS5P5WsHO/znPv3r2Kj4/3uHz77bce6wwZMkTdu3evcZ/nvntQUlKiQYMGac+ePTXW7devn1JSUtzXO3XqpBtuuEF5eXk1Dru46667PK4PGjRI3377Ld9sBr9mjNFbb72lMWPGyBjjsQ2npaWppKT
|
|
|
|
"text/plain": [
|
|
|
|
"<Figure size 1000x800 with 3 Axes>"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"metadata": {},
|
|
|
|
"output_type": "display_data"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"data": {
|
|
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAzYAAAElCAYAAAA2knddAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAQ2dJREFUeJzt3Xl8VPW9//H3ZJskZCGBbEjAsIkiqMVCURDUSIiKgrSKtbeAGypYUalKH+7aUkUt1KJcbhXKdUcFq1elgoLVi3hFVHBh0SAgJKwhLNnn+/uDX0bHZPI9McNkTvJ6Ph7zeMDMJ+d8zpmZz5zPLOfjMcYYAQAAAICLRbV0AgAAAADQXDQ2AAAAAFyPxgYAAACA69HYAAAAAHA9GhsAAAAArkdjAwAAAMD1aGwAAAAAuB6NDQAAAADXo7EBAAAA4Ho0NmhT7r77bnk8Hu3evbulUwHQBMOGDdOwYcNaOo1mGz9+vJKSklo6DSAsjj32WI0fP97//+XLl8vj8Wj58uUtltOP/ThHtxo2bJhOPPHElk6jxdHYuITH43F0iZRi8eqrr2rkyJHKyspSXFyc0tPTdcYZZ+jhhx9WWVlZS6cHuNL8+fPl8Xj00UcftXQqEc3n82nBggU655xz1LFjR8XGxiozM1PDhw/X3LlzVVlZ2dIpAkddXb2ou8THx6tXr16aPHmySkpKWjq9Jnn99dd19913t3Qaqqys1KOPPqrBgwcrLS1NcXFx6tSpky644AI9++yzqq2tbekU27yYlk4Azvz3f/93wP8XLFigt956q971xx9/fDjTqsfn8+mKK67Q/Pnz1bdvX1133XXKzc3VgQMHtHLlSt1+++16/fXXtWzZshbNE0DrVF5ertGjR2vJkiU67bTTNHXqVGVlZWnv3r1asWKFrrvuOq1atUpPPPFES6cKhMW9996rvLw8VVRU6L333tPjjz+u119/XevWrVNiYmJYcznjjDNUXl6uuLi4Jv3d66+/rtmzZ7doc7Nr1y4VFhZq9erVKigo0O2336709HQVFxdr6dKl+vWvf61NmzbpjjvuaLEcQWPjGr/5zW8C/v/BBx/orbfeqnf9jx0+fDishevBBx/U/PnzdeONN+rhhx+Wx+Px33bDDTdox44dWrBgQaPL8Pl8qqqqUnx8/NFOF8BPUFNTI5/P1+SDk3C48cYbtWTJEs2cOVM33HBDwG0333yzNm7cqLfeeqvRZUTy9gFNVVhYqFNPPVWSdOWVV6pDhw565JFH9Morr+jSSy9t8G8OHTqkdu3ahTyXqKgo1762/8d//IfWrFmjl156SRdddFHAbdOmTdNHH32k9evXN7qMiooKxcXFKSqKL0wdLezZVqTu+5WrV6/WGWecocTERP3hD3+QdOSrbA2909HQd0tLS0s1ZcoU5ebmyuv1qkePHnrggQfk8/kaXf/hw4f1wAMPqE+fPpoxY0ZAU1MnJydHt956a8B1Ho9HkydP1tNPP60+ffrI6/XqzTfflCQ99NBDOu2009ShQwclJCSof//+evHFF+st94fLOO644xQfH6/+/fvr3XffbTDX0tJSjR8/Xu3bt1dqaqomTJigw4cPN7p9gFt89913uvzyy5WVlSWv16s+ffroySefDIipqqrSnXfeqf79+ys1NVXt2rXTkCFD9M477wTEbd68WR6PRw899JBmzpyp7t27y+v16osvvvD/Zm3Tpk2Onk9PPfWU+vfvr4SEBKWnp2vs2LHaunVrvbi5c+eqe/fuSkhI0IABA/Tvf//b0XZv3bpVf//73zVixIh6TU2dnj176rrrrnO0fT9lH/3lL39R165dlZCQoKFDh2rdunUN5vHdd99p1KhRSkpKUkZGhqZOncrXWBAWZ511liSpqKhI0ve/+/r666917rnnKjk5WZdddpmkI280zpw5U3369FF8fLyysrI0ceJE7du3L2CZxhjdf//96ty5sxITE3XmmWfq888/r7fuYL+xWbVqlc4991ylpaWpXbt26tevn2bNmuXPb/bs2ZICv5ZfJ9Q5NmTlypVasmSJrr766npNTZ1TTz3Vv99+uK3PPfecbr/9dh1zzDFKTExUWVmZ9u7dq6lTp6pv375KSkpSSkqKCgsL9emnnza4v55//nn94Q9/UHZ2ttq1a6cLLrigwdopSV988YXOPPNMJSYm6phjjtGDDz7oaBtbCz6xaWX27NmjwsJCjR07Vr/5zW+UlZXVpL8/fPiwhg4dqu+++04TJ05Uly5d9L//+7+aNm2aduzYoZkzZwb92/fee0+lpaWaOnWqoqOjm7Tet99+Wy+88IImT56sjh076thjj5UkzZo1SxdccIEuu+wyVVVV6bnnntOvfvUrvfbaazrvvPMClrFixQo9//zz+t3vfiev16vHHntMI0aM0IcffljvB3UXX3yx8vLyNH36dH388cf6+9//rszMTD3wwANNyhuINCUlJfrFL37hb/YzMjL0xhtv6IorrlBZWZmmTJkiSSorK9Pf//53XXrppbrqqqt04MABPfHEEyooKNCHH36ok08+OWC58+bNU0VFha6++mp5vV6lp6f7b3PyfPrjH/+oO+64QxdffLGuvPJK7dq1S48++qjOOOMMrVmzRu3bt5ckPfHEE5o4caJOO+00TZkyRd98840uuOACpaenKzc3t9Ftf+ONN1RbW2v9JLshDW1fU/fRggULdODAAU2aNEkVFRWaNWuWzjrrLK1duzagFtfW1qqgoEADBw7UQw89pKVLl+rhhx9W9+7dde211zY5d6Apvv76a0lShw4d/NfV1NSooKBAgwcP1kMPPeT/psfEiRM1f/58TZgwQb/73e9UVFSkv/3tb1qzZo3ef/99xcbGSpLuvPNO3X///Tr33HN17rnn6uOPP9bw4cNVVVVlzeett97S+eefr5ycHN1www3Kzs7Wl19+qddee0033HCDJk6cqO3btzf49ftw5fjqq69Kqv/tGSfuu+8+xcXFaerUqaqsrFRcXJy++OILLV68WL/61a+Ul5enkpIS/ed//qeGDh2qL774Qp06dQpYxh//+Ed5PB7deuut2rlzp2bOnKn8/Hx98sknSkhI8Mft27dPI0aM0EUXXaSLL75YL774om699Vb17dtXhYWFTc7dlQxcadKkSebHd9/QoUONJDNnzpx68ZLMXXfdVe/6rl27mnHjxvn/f99995l27dqZDRs2BMTddtttJjo62mzZsiVoTrNmzTKSzOLFiwOur6mpMbt27Qq4+Hy+gNyioqLM559/Xm+Zhw8fDvh/VVWVOfHEE81ZZ51Vb/skmY8++sh/3bfffmvi4+PN6NGj/dfdddddRpK5/PLLA/5+9OjRpkOHDkG3DYgE8+bNM5LM//3f/wWNueKKK0xOTo7ZvXt3wPVjx441qamp/udUTU2NqaysDIjZt2+fycrKCnh+FBUVGUkmJSXF7Ny5MyDe6fNp8+bNJjo62vzxj38MiFu7dq2JiYnxX19VVWUyMzPNySefHJDb3LlzjSQzdOjQoNttjDE33nijkWQ++eSTgOsrKysD6s8P901j29fUfZSQkGC2bdvmv37VqlVGkrnxxhv9140bN85IMvfee2/Ack855RTTv3//RrcPaIq6erF06VKza9cus3XrVvPcc8+ZDh06BDxW6x6Tt912W8Df//vf/zaSzNNPPx1w/Ztvvhlw/c6dO01cXJw577zzAl7b//CHPxhJAccY77zzjpFk3nnnHWPMkedYXl6e6dq1q9m3b1/Aen64rIaOeY5Wjg0ZPXq0kWRKS0sDri8vLw+oLT/chrpt7datW71jmYqKClNbWxtwXVFRkfF6vQG1oW4ZxxxzjCkrK/Nf/8ILLxhJZtasWf7r6o4BFyxY4L+usrLSZGdnmzFjxjS6fa0JX0VrZbxeryZMmPCT/37hwoUaMmSI0tLStHv3bv8lPz9ftbW1Qb/aJcl/trMfn8p07dq1ysjICLjs2bMnIGbo0KE64YQT6i3zx+9E7N+/X0OGDNHHH39cL3bQoEHq37+///9dunTRhRdeqCVLltT7isc111wT8P8hQ4Zoz54
|
|
|
|
"text/plain": [
|
|
|
|
"<Figure size 1000x800 with 3 Axes>"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"metadata": {},
|
|
|
|
"output_type": "display_data"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"data": {
|
|
|
|
"image/png": "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
|
|
|
|
"text/plain": [
|
|
|
|
"<Figure size 1000x800 with 3 Axes>"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"metadata": {},
|
|
|
|
"output_type": "display_data"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"data": {
|
|
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAzYAAAElCAYAAAA2knddAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAZDdJREFUeJzt3Xl4VOXZP/DvzCQzk3WyJywJhF0UXILQKIgiiogb4Gtt7Vtc6goWUFulr0vrUtyFWtRSLepPLYqKvlqRIgpWBWRVEFmUAFHIAtmX2c/vD94MTO4nOMOZzMwJ38915brIzTnnec5zTp45Z2bu+5g0TdNARERERERkYOZYd4CIiIiIiEgv3tgQEREREZHh8caGiIiIiIgMjzc2RERERERkeLyxISIiIiIiw+ONDRERERERGR5vbIiIiIiIyPB4Y0NERERERIbHGxsiIiIiIjI83tjQceWPf/wjTCYTDhw4EOuuEFEYzj77bJx99tmx7oZuV199NVJTU2PdDaKo6N27N66++urA7ytWrIDJZMKKFSti1qf22vfRqM4++2ycdNJJse5GzPHGxiBMJlNIP/EyWbz33nu4+OKLkZ+fD6vViqysLJx11ll44okn0NDQEOvuERnSiy++CJPJhHXr1sW6K3HN7/fj5ZdfxnnnnYecnBwkJiYiLy8P559/PubPnw+XyxXrLhJ1urb5ou3HbrdjwIABmDZtGiorK2PdvbB88MEH+OMf/xjrbsDlcuHpp5/GyJEjkZmZCavViu7du+OSSy7BP//5T/h8vlh38biXEOsOUGj+3//7f0G/v/zyy1i2bJmIn3DCCdHsluD3+3HdddfhxRdfxJAhQ3DLLbegsLAQjY2NWLVqFe6++2588MEHWL58eUz7SURdU2trKyZOnIilS5fijDPOwB133IH8/HzU1NRg5cqVuOWWW7BmzRq88MILse4qUVTcf//9KC4uhtPpxGeffYZnn30WH3zwAbZs2YLk5OSo9uWss85Ca2srrFZrWOt98MEHmDdvXkxvbqqrqzF+/HisX78e48aNw913342srCxUVFTgo48+wi9/+Ut89913uOeee2LWR+KNjWH86le/Cvp99erVWLZsmYi319LSEtWJ69FHH8WLL76ImTNn4oknnoDJZAr83/Tp07F//368/PLLR92G3++H2+2G3W7v7O4S0THwer3w+/1hX5xEw8yZM7F06VLMmTMH06dPD/q/22+/HTt37sSyZcuOuo143j+icI0fPx7Dhg0DAPzmN79BdnY2nnzySbz77rv4xS9+oVynubkZKSkpEe+L2Ww27Gv7f//3f2Pjxo146623MGnSpKD/mzVrFtatW4ft27cfdRtOpxNWqxVmM78w1Vk4sl1I2/cr169fj7POOgvJycn4wx/+AODQV9lU73SovltaV1eHGTNmoLCwEDabDf369cMjjzwCv99/1PZbWlrwyCOP4MQTT8Rjjz0WdFPTplu3brjzzjuDYiaTCdOmTcOrr76KE088ETabDR9++CEA4PHHH8cZZ5yB7OxsJCUloaSkBG+++abY7pHbGDhwIOx2O0pKSvDpp58q+1pXV4err74aGRkZcDgcuOaaa9DS0nLU/SMyih9//BHXXnst8vPzYbPZcOKJJ+If//hH0DJutxv33nsvSkpK4HA4kJKSglGjRuGTTz4JWm737t0wmUx4/PHHMWfOHPTt2xc2mw1bt24N5Kx99913If09vfLKKygpKUFSUhKysrJw5ZVXory8XCw3f/589O3bF0lJSRg+fDj+85//hLTf5eXleP7553HBBReIm5o2/fv3xy233BLS/h3LGD311FPo1asXkpKSMHr0aGzZskXZjx9//BGXXXYZUlNTkZubizvuuINfY6GoGDNmDACgrKwMwOG8r++//x4XXngh0tLScNVVVwE49EbjnDlzcOKJJ8JutyM/Px833ngjamtrg7apaRoefPBB9OzZE8nJyTjnnHPwzTffiLY7yrFZs2YNLrzwQmRmZiIlJQVDhw7F3LlzA/2bN28egOCv5beJdB9VVq1ahaVLl+KGG24QNzVthg0bFhi3I/d14cKFuPvuu9GjRw8kJyejoaEBNTU1uOOOOzBkyBCkpqYiPT0d48ePx1dffaUcr9dffx1/+MMfUFBQgJSUFFxyySXKuRMAtm7dinPOOQfJycno0aMHHn300ZD2savgJzZdzMGDBzF+/HhceeWV+NWvfoX8/Pyw1m9pacHo0aPx448/4sYbb0RRURG++OILzJo1C/v378ecOXM6XPezzz5DXV0d7rjjDlgslrDa/fjjj/HGG29g2rRpyMnJQe/evQEAc+fOxSWXXIKrrroKbrcbCxcuxH/913/h/fffx4QJE4K2sXLlSrz++uv47W9/C5vNhmeeeQYXXHABvvzyS5FQd8UVV6C4uBizZ8/Ghg0b8PzzzyMvLw+PPPJIWP0mijeVlZX42c9+FrjZz83NxZIlS3DdddehoaEBM2bMAAA0NDTg+eefxy9+8Qtcf/31aGxsxAsvvIBx48bhyy+/xCmnnBK03QULFsDpdOKGG26AzWZDVlZW4P9C+Xt66KGHcM899+CKK67Ab37zG1RXV+Ppp5/GWWedhY0bNyIjIwMA8MILL+DGG2/EGWecgRkzZmDXrl245JJLkJWVhcLCwqPu+5IlS+Dz+X7yk2wV1f6FO0Yvv/wyGhsbMXXqVDidTsydOxdjxozB5s2bg+Zin8+HcePGYcSIEXj88cfx0Ucf4YknnkDfvn1x8803h913onB8//33AIDs7OxAzOv1Yty4cRg5ciQef/zxwDc9brzxRrz44ou45ppr8Nvf/hZlZWX461//io0bN+Lzzz9HYmIiAODee+/Fgw8+iAsvvBAXXnghNmzYgPPPPx9ut/sn+7Ns2TJcdNFF6NatG6ZPn46CggJ8++23eP/99zF9+nTceOON2Ldvn/Lr99Hq43vvvQdAfnsmFA888ACsVivuuOMOuFwuWK1WbN26Fe+88w7+67/+C8XFxaisrMTf/vY3jB49Glu3bkX37t2DtvHQQw/BZDLhzjvvRFVVFebMmYOxY8di06ZNSEpKCixXW1uLCy64AJMmTcIVV1yBN998E3feeSeGDBmC8ePHh913Q9LIkKZOnaq1P3yjR4/WAGjPPfecWB6Adt9994l4r169tClTpgR+f+CBB7SUlBRtx44dQcvdddddmsVi0fbu3dthn+bOnasB0N55552guNfr1aqrq4N+/H5/UN/MZrP2zTffiG22tLQE/e52u7WTTjpJGzNmjNg/ANq6desCsT179mh2u12bOHFiIHbfffdpALRrr702aP2JEydq2dnZHe4bUTxYsGCBBkBbu3Zth8tcd911Wrdu3bQDBw4Exa+88krN4XAE/qa8Xq/mcrmClqmtrdXy8/OD/j7Kyso0AFp6erpWVVUVtHyof0+7d+/WLBaL9tBDDwUtt3nzZi0hISEQd7vdWl5ennbKKacE9W3+/PkaAG306NEd7remadrMmTM1ANqmTZuC4i6XK2j+OXJsjrZ/4Y5RUlKS9sMPPwTia9as0QBoM2fODMSmTJmiAdDuv//+oO2eeuqpWklJyVH3jygcbfPFRx99pFVXV2vl5eXawoULtezs7KBzte2cvOuuu4LW/89//qMB0F599dWg+IcffhgUr6qq0qxWqzZhwoSg1/Y//OEPGoCga4xPPvlEA6B98sknmqYd+hsrLi7WevXqpdXW1ga1c+S2VNc8ndVHlYkTJ2oAtLq6uqB4a2tr0Nxy5D607WufPn3EtYzT6dR8Pl9QrKysTLPZbEFzQ9s2evTooTU0NATib7zxhgZAmzt3biDWdg348ssvB2Iul0srKCjQJk+efNT960r4VbQuxmaz4Zprrjnm9RctWoRRo0YhMzMTBw4cCPyMHTsWPp+vw692AQhUO2tfynTz5s3Izc0N+jl48GDQMqNHj8bgwYPFNtu/E1FfX49Ro0Zhw4YNYtnS0lKUlJQEfi8qKsKll16KpUuXiq943HTTTUG/jxo1CgcPHmTFNjI0TdPw1ltv4eKLL4a
|
|
|
|
"text/plain": [
|
|
|
|
"<Figure size 1000x800 with 3 Axes>"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"metadata": {},
|
|
|
|
"output_type": "display_data"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"data": {
|
|
|
|
"image/png": "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
|
|
|
|
"text/plain": [
|
|
|
|
"<Figure size 1000x800 with 3 Axes>"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"metadata": {},
|
|
|
|
"output_type": "display_data"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"data": {
|
|
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAzYAAAElCAYAAAA2knddAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAOZxJREFUeJzt3Xl4U3X6//9XuqULbWmBblCgssgICA4MfGRHi7UgCuogjjoVN1RQEVHs/ERc0IqonzKIMMwoyEcURQWXn8oIg4M4CALigM6waMHKjkBblra0Od8/vBoJTaE5JyU9zfNxXbmu5uTced/nNLnzvpOTE4dhGIYAAAAAwMZCAp0AAAAAAFhFYwMAAADA9mhsAAAAANgejQ0AAAAA26OxAQAAAGB7NDYAAAAAbI/GBgAAAIDt0dgAAAAAsD0aGwAAAAC2R2ODoPLYY4/J4XDo4MGDgU4FgA8GDBigAQMGBDoNy26++WY1atQo0GkA50Tr1q118803u69/9tlncjgc+uyzzwKW0+lOz9GuBgwYoE6dOgU6jYCjsbEJh8NRq0t9KRYffPCBhg4dquTkZEVERCgxMVH9+vXT888/r+Li4kCnB9jSvHnz5HA4tG7dukCnUq+5XC7Nnz9fgwYNUtOmTRUeHq6kpCRddtllmjNnjsrKygKdIlDnqupF1SUyMlLt27fX2LFjtW/fvkCn55OPPvpIjz32WKDTUFlZmWbMmKE+ffooISFBERERSktL05VXXqk33nhDlZWVgU4x6IUFOgHUzv/93/95XJ8/f74+/fTTast/85vfnMu0qnG5XLr11ls1b948de7cWXfffbfS09NVUlKi1atX65FHHtFHH32k5cuXBzRPAA3TiRMnNHz4cC1dulS9evXShAkTlJycrEOHDumf//yn7r77bq1Zs0Yvv/xyoFMFzoknnnhCGRkZKi0t1apVqzRr1ix99NFH2rx5s6Kjo89pLv369dOJEycUERHhU9xHH32kmTNnBrS5OXDggLKzs7V+/XplZWXpkUceUWJiovbu3atly5bpD3/4g7Zv365JkyYFLEfQ2NjGjTfe6HH9yy+/1Kefflpt+emOHz9+TgvXs88+q3nz5un+++/X888/L4fD4b7tvvvu0549ezR//vwz3ofL5VJ5ebkiIyPrOl0AJlRUVMjlcvk8OTkX7r//fi1dulT5+fm67777PG574IEHtG3bNn366adnvI/6vH2Ar7Kzs9W9e3dJ0m233aYmTZrohRde0Hvvvafrr7/ea8yxY8cUExPj91xCQkJs+9p+00036euvv9Y777yjq6++2uO23NxcrVu3Tlu2bDnjfZSWlioiIkIhIRwwVVfYsw1I1fGV69evV79+/RQdHa0//elPkn45lM3bOx3eji09cuSIxo0bp/T0dDmdTrVt21ZTp06Vy+U64/jHjx/X1KlT1bFjR02bNs2jqamSmpqqiRMneixzOBwaO3asFixYoI4dO8rpdOqTTz6RJD333HPq1auXmjRpoqioKHXr1k1vv/12tfs99T7OP/98RUZGqlu3blq5cqXXXI8cOaKbb75ZjRs3Vnx8vEaNGqXjx4+fcfsAu9i1a5duueUWJScny+l0qmPHjnrllVc81ikvL9ejjz6qbt26KT4+XjExMerbt69WrFjhsd6OHTvkcDj03HPPKT8/X23atJHT6dR3333n/s7a9u3ba/V8eu2119StWzdFRUUpMTFRI0eOVGFhYbX15syZozZt2igqKko9evTQ559/XqvtLiws1N/+9jddfvnl1ZqaKu3atdPdd99dq+0zs4/+93//V61atVJUVJT69++vzZs3e81j165dGjZsmBo1aqRmzZppwoQJHMaCc+KSSy6RJBUUFEj69Xtf33//vQYPHqzY2FjdcMMNkn55ozE/P18dO3ZUZGSkkpOTNXr0aB0+fNjjPg3D0JQpU9SiRQtFR0dr4MCB+vbbb6uNXdN3bNasWaPBgwcrISFBMTExuvDCCzV9+nR3fjNnzpTkeVh+FX/n6M3q1au1dOlS3XHHHdWamirdu3d377dTt3XhwoV65JFH1Lx5c0VHR6u4uFiHDh3ShAkT1LlzZzVq1EhxcXHKzs7WN99843V/vfnmm/rTn/6klJQUxcTE6Morr/RaOyXpu+++08CBAxUdHa3mzZvr2WefrdU2NhR8YtPA/Pzzz8rOztbIkSN14403Kjk52af448ePq3///tq1a5dGjx6tli1b6l//+pdyc3O1Z88e5efn1xi7atUqHTlyRBMmTFBoaKhP4/7jH//QW2+9pbFjx6pp06Zq3bq1JGn69Om68sordcMNN6i8vFwLFy7U73//e3344YcaMmSIx33885//1Jtvvql7771XTqdTL730ki6//HKtXbu22hfqRowYoYyMDOXl5WnDhg3629/+pqSkJE2dOtWnvIH6Zt++ffqf//kfd7PfrFkzffzxx7r11ltVXFyscePGSZKKi4v1t7/9Tddff71uv/12lZSU6OWXX1ZWVpbWrl2rrl27etzv3LlzVVpaqjvuuENOp1OJiYnu22rzfHrqqac0adIkjRgxQrfddpsOHDigGTNmqF+/fvr666/VuHFjSdLLL7+s0aNHq1evXho3bpx++OEHXXnllUpMTFR6evoZt/3jjz9WZWXlWT/J9sbb9vm6j+bPn6+SkhKNGTNGpaWlmj59ui655BJt2rTJoxZXVlYqKytLPXv21HPPPadly5bp+eefV5s2bXTXXXf5nDvgi++//16S1KRJE/eyiooKZWVlqU+fPnruuefcR3qMHj1a8+bN06hRo3TvvfeqoKBAL774or7++mt98cUXCg8PlyQ9+uijmjJligYPHqzBgwdrw4YNuuyyy1ReXn7WfD799FNdccUVSk1N1X333aeUlBT95z//0Ycffqj77rtPo0eP1u7du70efn+ucvzggw8kVT96pjaefPJJRUREaMKECSorK1NERIS+++47LVmyRL///e+VkZGhffv26S9/+Yv69++v7777TmlpaR738dRTT8nhcGjixInav3+/8vPzlZmZqY0bNyoqKsq93uHDh3X55Zfr6quv1ogRI/T2229r4sSJ6ty5s7Kzs33O3ZYM2NKYMWOM0/99/fv3NyQZs2fPrra+JGPy5MnVlrdq1crIyclxX3/yySeNmJgYY+vWrR7rPfzww0ZoaKjx448/1pjT9OnTDUnGkiVLPJZXVFQYBw4c8Li4XC6P3EJCQoxvv/222n0eP37c43p5ebnRqVMn45JLLqm2fZKMdevWuZft3LnTiIyMNIYPH+5eNnnyZEOSccstt3jEDx8+3GjSpEmN2wbUB3PnzjUkGV999VWN69x6661GamqqcfDgQY/lI0eONOLj493PqYqKCqOsrMxjncOHDxvJyckez4+CggJDkhEXF2fs37/fY/3aPp927NhhhIaGGk899ZTHeps2bTLCwsLcy8vLy42kpCSja9euHrnNmTPHkGT079+/xu02DMO4//77DUnGxo0bPZaXlZV51J9T982Zts/XfRQVFWX89NNP7uVr1qwxJBn333+/e1lOTo4hyXjiiSc87veiiy4yunXrdsbtA3xRVS+WLVtmHDhwwCgsLDQWLlxoNGnSxOOxWvWYfPjhhz3iP//8c0OSsWDBAo/ln3zyicfy/fv3GxEREcaQIUM8Xtv/9Kc/GZI85hgrVqwwJBkrVqwwDOOX51hGRobRqlUr4/Dhwx7jnHpf3uY8dZWjN8OHDzckGUeOHPFYfuLECY/acuo2VG3reeedV20uU1paalRWVnosKygoMJxOp0dtqLqP5s2bG8XFxe7lb731liHJmD59untZ1Rxw/vz57mVlZWVGSkqKcc0115xx+xoSDkVrYJxOp0aNGmU6ftGiRerbt68SEhJ08OBB9yUzM1OVlZU1HtolyX22s9NPZbpp0yY1a9bM4/Lzzz97rNO/f39dcMEF1e7z9HciioqK1LdvX23YsKHauhdffLG6devmvt6yZUtdddVVWrp0abVDPO68806P63379tXPP//MGdtga4Zh6J133tHQoUNlGIb
|
|
|
|
"text/plain": [
|
|
|
|
"<Figure size 1000x800 with 3 Axes>"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"metadata": {},
|
|
|
|
"output_type": "display_data"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"data": {
|
|
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA0MAAAElCAYAAAAm8jmBAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAASlNJREFUeJzt3XlcVPX+P/DXMMCACojKNi6IKHrdoPAr4ZKaJFBZmrlVVzCz5WppXCvtl7tFZRqVpFkqmpZLC20GV7mimdt14aZtIoFoCArKamwz5/dH18mJAc5H5zDb6/l4zOPBnHmfz7zPOTNv5j1nGZUkSRKIiIiIiIgcjJOlEyAiIiIiIrIENkNEREREROSQ2AwREREREZFDYjNEREREREQOic0QERERERE5JDZDRERERETkkNgMERERERGRQ2IzREREREREDonNEBEREREROSQ2Q0TNWLRoEVQqFYqLiy2dChEJGD58OIYPH27pNG5afHw82rRpY+k0iIjsEpshO6ZSqWTdMjMzLZ0qAODLL7/E6NGj4efnB1dXV7Rr1w633347VqxYgfLyckunR2STUlJSoFKpcPToUUunYtX0ej02bdqEO++8Ex06dICLiwt8fX0xatQorF27FjU1NZZOkYiIFOBs6QRIOR988IHR/U2bNmHXrl0Npv/tb39rybQa0Ov1mDZtGlJSUtCvXz/84x//QOfOnVFRUYGDBw/ixRdfxM6dO5GRkWHRPInIPv3+++8YO3Ys0tPTMWjQIMyZMwd+fn64fPky9u7di3/84x84fPgw1q1bZ+lUiYjIzNgM2bGHH37Y6P6hQ4ewa9euBtP/6urVq2jVqpWSqRl57bXXkJKSgmeeeQYrVqyASqUyPDZr1ixcuHABmzZtanIMvV6P2tpauLm5KZ0uEd2A+vp66PV6uLq6WjqVBp555hmkp6cjKSkJs2bNMnrsn//8J7Kzs7Fr164mx7Dm5SMiosbxMDkHN3z4cPTt2xfHjh3D7bffjlatWuGFF14A8MdhdosWLWowT9euXREfH280rbS0FLNnz0bnzp2h0WjQvXt3vPrqq9Dr9U0+/9WrV/Hqq6+iT58+WL58uVEjdE1AQACef/55o2kqlQozZ87Eli1b0KdPH2g0GqSlpQEAXn/9dQwaNAjt27eHu7s7wsPD8fHHHzcY9/oxevbsCTc3N4SHh2Pfvn0mcy0tLUV8fDzatm0LLy8vTJ06FVevXm1y+YhsxW+//YZHHnkEfn5+0Gg06NOnD9avX28UU1tbiwULFiA8PBxeXl5o3bo1hg4dij179hjF5eXlQaVS4fXXX0dSUhKCg4Oh0Wjw448/Gs7BO3PmjKz30+bNmxEeHg53d3e0a9cOkyZNwrlz5xrErV27FsHBwXB3d8fAgQPx7bffylruc+fO4f3330dMTEyDRuiaHj164B//+Ies5buRdfTGG28gMDAQ7u7uGDZsGE6dOmUyj99++w1jxoxBmzZt4OPjgzlz5kCn08laTiIiMo17hgglJSWIjY3FpEmT8PDDD8PPz09o/qtXr2LYsGH47bff8Pjjj6NLly44cOAA5s2bhwsXLiApKanReffv34/S0lLMmTMHarVa6Hn//e9/Y/v27Zg5cyY6dOiArl27AgDefPNN3HvvvXjooYdQW1uLrVu3Yvz48fjqq69w9913G42xd+9ebNu2DU8//TQ0Gg3eeecdxMTE4MiRI+jbt69R7IQJExAUFITExEQcP34c77//Pnx9ffHqq68K5U1kbYqKinDbbbcZviDw8fHBN998g2nTpqG8vByzZ88GAJSXl+P999/H5MmTMX36dFRUVGDdunWIjo7GkSNHEBYWZjTuhg0bUF1djcceewwajQbt2rUzPCbn/fTSSy9h/vz5mDBhAh599FFcunQJb7/9Nm6//XacOHECbdu2BQCsW7cOjz/+OAYNGoTZs2fj119/xb333ot27dqhc+fOTS77N998A51O1+wec1NMLZ/oOtq0aRMqKiowY8YMVFdX480338Qdd9yBkydPGtVinU6H6OhoRERE4PXXX8fu3buxYsUKBAcH48knnxTOnYiI/kcihzFjxgzpr5t82LBhEgBpzZo1DeIBSAsXLmwwPTAwUIqLizPcX7p0qdS6dWvp9OnTRnFz586V1Gq1lJ+f32hOb775pgRASk1NNZpeX18vXbp0yeim1+uNcnNycpJ++OGHBmNevXrV6H5tba3Ut29f6Y477miwfACko0ePGqadPXtWcnNzk8aOHWuYtnDhQgmA9MgjjxjNP3bsWKl9+/aNLhuRNdiwYYMEQPrPf/7TaMy0adOkgIAAqbi42Gj6pEmTJC8vL8N7qr6+XqqpqTGKuXLliuTn52f0/sjNzZUASJ6entLFixeN4uW+n/Ly8iS1Wi299NJLRnEnT56UnJ2dDdNra2slX19fKSwszCi3tWvXSgCkYcOGNbrckiRJzzzzjARAysrKMppeU1NjVH+uXzdNLZ/oOnJ3d5fOnz9vmH748GEJgPTMM88YpsXFxUkApCVLlhiNe8stt0jh4eFNLh8RETWNh8kRNBoNpk6desPz79ixA0OHDoW3tzeKi4sNt6ioKOh0ukYPOwNguErcXy8be/LkSfj4+BjdSkpKjGKGDRuG3r17NxjT3d3d8PeVK1dQVlaGoUOH4vjx4w1iIyMjER4ebrjfpUsX3HfffUhPT29w+MkTTzxhdH/o0KEoKSnhle7IpkmShE8++QSjR4+GJElG7+Ho6GiUlZUZ3jtqtdpwToxer8fly5dRX1+PAQMGmHx/jRs3Dj4+Piaft7n306effgq9Xo8JEyYY5eTv748ePXoYDjs7evQoLl68iCeeeMLofJ34+Hh4eXk1u/yN1aCdO3ca1Z/AwEBZyye6jsaMGYOOHTsa7g8cOBARERHYuXNng1hT6+zXX39tdhmJiKhxPEyO0LFjx5s66Tc7Oxvff/99ox96Ll682Oi8Hh4eAIDKykqj6d27dzecsLxp06YGV8ADgKCgIJNjfvXVV1i2bBmysrKMLodr6nykHj16NJgWEhKCq1ev4tKlS/D39zdM79Kli1Gct7c3gD8aLk9PT5O5EFm7S5cuobS0FGvXrsXatWtNxlz/Ht64cSNWrFiBn3/+GXV1dYbppt6Pjb1HgebfT9nZ2ZAkyeR7FABcXFwAAGfPngXQ8L3s4uKCbt26Nfr81zRWgwYPHmyoQcuXL8d3333XYN7Glk9kHTVWg7Zv3240zc3NrUGN9fb2xpUrV0zmQERE8rAZIqM9KXL8dY+JXq/HnXfeieeee85kfEhISKNj9erVCwBw6tQp3HfffYbpbdq0QVRUFIA/ziuSm/e3336Le++9F7fffjveeecdBAQEwMXFBRs2bMCHH37Y9II1o7FzmiRJuqlxiSzp2kVOHn74YcTFxZmM6d+/P4A/LmYQHx+PMWPG4Nlnn4Wvry/UajUSExORk5PTYL6maktz7ye9Xg+VSoVvvvnGZKy5foT0+hoUGhpqmO7j42OoQZs3bzY5r6nlE11HcomeU0lERPKwGaJGeXt7o7S01GhabW0tLly4YDQtODgYlZWVhg8OIoYOHQovLy9s3boV8+bNg5PTzR25+cknn8DNzQ3p6enQaDSG6Rs2bDAZn52d3WDa6dOn0apVq0b3dBHZEx8fH3h4eECn0zX7Hv7444/RrVs3fPrpp0Z7WhcuXGj2vIKDgyFJEoKCgpr8QuXa4WvZ2dm44447DNPr6uqQm5tr1OCYEhsbC7VajS1btuChhx666bxF11FjNejaBWGIiEhZPGeIGhUcHNzgfJ+1a9c22DM0YcIEHDx4EOnp6Q3GKC0tRX19faPP0apVKzz33HM4deoU5s6da3Ivi8ieF7VaDZVKZZRjXl4eUlNTTcYfPHjQ6Dj+c+fO4fPPP8eoUaP4TSw5BLVajXHjxuGTTz4xeUnnS5cuGcUCxu/Jw4cP4+DBg2bP6/7774darcbixYsb1ABJkgznEA4YMAA+Pj5Ys2YNamtrDTEpKSkNvswxpUuXLnjkkUfwzTffYNWqVSZjRGvQX+dpah2lpqb
|
|
|
|
"text/plain": [
|
|
|
|
"<Figure size 1000x800 with 3 Axes>"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"metadata": {},
|
|
|
|
"output_type": "display_data"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"source": [
|
|
|
|
"import os\n",
|
|
|
|
"import sys\n",
|
|
|
|
"import json\n",
|
|
|
|
"import pickle\n",
|
|
|
|
"import matplotlib.pyplot as plt\n",
|
|
|
|
"from tqdm import tqdm\n",
|
|
|
|
"import numpy as np\n",
|
|
|
|
"from config_ import ModelConfig\n",
|
|
|
|
"from train_and_eval import calculate_f1_score\n",
|
|
|
|
"from sklearn.metrics import f1_score\n",
|
|
|
|
"\n",
|
|
|
|
"\n",
|
|
|
|
"data_dir = \"datasets/consensus_dataset\"\n",
|
|
|
|
"\n",
|
|
|
|
"THRESHOLD = -0.4\n",
|
|
|
|
"datapoints = {}\n",
|
|
|
|
"\n",
|
|
|
|
"\n",
|
|
|
|
"for folder in tqdm(os.listdir(data_dir)):\n",
|
|
|
|
" num_agents = int(folder.split(\"_\")[1]) # Extract num agents\n",
|
|
|
|
" \n",
|
|
|
|
" folder_path = os.path.join(data_dir, folder)\n",
|
|
|
|
"\n",
|
|
|
|
" # Load model config from summary json\n",
|
|
|
|
" with open(os.path.join(folder_path, \"results/NoiseType.NONE\", \"0.01\", \"summary_results.json\"), \"r\") as f:\n",
|
|
|
|
" summary_results = json.load(f)\n",
|
|
|
|
"\n",
|
|
|
|
" \n",
|
|
|
|
" for i, graph in enumerate(os.listdir(folder_path)):\n",
|
|
|
|
"\n",
|
|
|
|
" # train_summary_results\n",
|
|
|
|
" summ_results = summary_results[i-1]\n",
|
|
|
|
"\n",
|
|
|
|
" if graph == \"results\": # ignore the result folder\n",
|
|
|
|
" continue\n",
|
|
|
|
"\n",
|
|
|
|
" graph_path = os.path.join(folder_path, graph)\n",
|
|
|
|
"\n",
|
|
|
|
" # Load run data\n",
|
|
|
|
" with open(os.path.join(folder_path, graph), \"r\") as f:\n",
|
|
|
|
" run_data = json.load(f)\n",
|
|
|
|
"\n",
|
|
|
|
" true_graph = np.array(run_data[\"adjacency_matrix\"])\n",
|
|
|
|
" \n",
|
|
|
|
" learned_graph = np.array(summ_results[\"raw_attention\"])\n",
|
|
|
|
"\n",
|
|
|
|
" predicted_graph = (learned_graph > THRESHOLD).astype(int)\n",
|
|
|
|
"\n",
|
|
|
|
" fig, ax = plt.subplots(1,3, figsize=(10, 8))\n",
|
|
|
|
"\n",
|
|
|
|
" ax[0].imshow(true_graph)\n",
|
|
|
|
" ax[0].set_title(\"True Graph\")\n",
|
|
|
|
" ax[1].imshow(learned_graph)\n",
|
|
|
|
" ax[1].set_title(\"Learned Graph\")\n",
|
|
|
|
" ax[2].imshow(predicted_graph)\n",
|
|
|
|
" ax[2].set_title(\"Predicted Graph\")\n",
|
|
|
|
"\n",
|
|
|
|
" break\n",
|
|
|
|
"\n",
|
|
|
|
"\n",
|
|
|
|
"for key in datapoints.keys():\n",
|
|
|
|
" datapoints[key] = sum(datapoints[key])/len(datapoints[key])\n",
|
|
|
|
"\n",
|
|
|
|
"\n",
|
|
|
|
"x = []\n",
|
|
|
|
"y = []\n",
|
|
|
|
"\n",
|
|
|
|
"for item in datapoints.items():\n",
|
|
|
|
" x.append(item[0])\n",
|
|
|
|
" y.append(item[1])\n",
|
|
|
|
"\n",
|
|
|
|
"print(THRESHOLD)\n",
|
|
|
|
"plt.ylim(0, 1)\n",
|
|
|
|
"plt.scatter(x, y)\n",
|
|
|
|
"plt.show() \n",
|
|
|
|
"\n",
|
|
|
|
" "
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
|
|
|
"execution_count": 22,
|
|
|
|
"id": "764558cb",
|
|
|
|
"metadata": {},
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"name": "stdout",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
|
|
|
"Starting training pipeline for 'datasets/consensus_dataset' data.\n",
|
|
|
|
"\n",
|
|
|
|
"Processing 100 graphs for agents_5...\n",
|
|
|
|
"0.8571428571428571\n"
|
|
|
|
]
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"source": [
|
|
|
|
"from train_and_eval import *\n",
|
|
|
|
"\n",
|
|
|
|
"train_config = TrainConfig()\n",
|
|
|
|
"train_config.epochs = 10_000\n",
|
|
|
|
"train_config.f1_threshold = -2\n",
|
|
|
|
"train_config.data_directory = \"datasets/consensus_dataset\"\n",
|
|
|
|
"\n",
|
|
|
|
"print(f\"Starting training pipeline for '{train_config.data_directory}' data.\")\n",
|
|
|
|
"\n",
|
|
|
|
"# Get sorted list of agent directories\n",
|
|
|
|
"agent_dirs = sorted(\n",
|
|
|
|
" [d for d in os.listdir(train_config.data_directory) if d.startswith(\"agents_\")],\n",
|
|
|
|
" key=lambda x: int(x.split('_')[1])\n",
|
|
|
|
")\n",
|
|
|
|
"\n",
|
|
|
|
"starter_key = jax.random.PRNGKey(49)\n",
|
|
|
|
"agent_dir_name = agent_dirs[0]\n",
|
|
|
|
"agent_dir_path = os.path.join(train_config.data_directory, agent_dir_name)\n",
|
|
|
|
"\n",
|
|
|
|
"all_results_for_agent = []\n",
|
|
|
|
"\n",
|
|
|
|
"graph_files = sorted([f for f in os.listdir(agent_dir_path) if f.endswith(\".json\")])\n",
|
|
|
|
"\n",
|
|
|
|
"results_dir = os.path.join(agent_dir_path, \"results\")\n",
|
|
|
|
"os.makedirs(results_dir, exist_ok=True)\n",
|
|
|
|
"\n",
|
|
|
|
"subdir = str(train_config.noise_type)\n",
|
|
|
|
"subsubdir = str(train_config.noise_level)\n",
|
|
|
|
"sub_results_dir = os.path.join(results_dir, subdir, subsubdir)\n",
|
|
|
|
"os.makedirs(sub_results_dir, exist_ok=True)\n",
|
|
|
|
"\n",
|
|
|
|
"print(f\"\\nProcessing {len(graph_files)} graphs for {agent_dir_name}...\")\n",
|
|
|
|
"graph_file_name = graph_files[0]\n",
|
|
|
|
"file_path = os.path.join(agent_dir_path, graph_file_name)\n",
|
|
|
|
"\n",
|
|
|
|
"with open(file_path, 'r') as f:\n",
|
|
|
|
" data = json.load(f)\n",
|
|
|
|
"\n",
|
|
|
|
"# 1. Load and Prepare Data\n",
|
|
|
|
"trajectories = np.array(data['trajectories'])*10\n",
|
|
|
|
"s, l, n = trajectories.shape\n",
|
|
|
|
"# trajectories = trajectories.T\n",
|
|
|
|
"# np.random.shuffle(trajectories)\n",
|
|
|
|
"# trajectories = np.random.shuffle(trajectories)\n",
|
|
|
|
"true_graph = np.array(data['adjacency_matrix'])\n",
|
|
|
|
"starter_key, data_key = jax.random.split(starter_key)\n",
|
|
|
|
"inputs, targets = prepare_data_for_model(data_key, trajectories, train_config, train_config.batch_size)\n",
|
|
|
|
"\n",
|
|
|
|
"# 2. Configure Model\n",
|
|
|
|
"num_agents = trajectories.shape[-1]\n",
|
|
|
|
"model_config = ModelConfig(\n",
|
|
|
|
")\n",
|
|
|
|
"\n",
|
|
|
|
"model_config.num_agents=num_agents\n",
|
|
|
|
"model_config.input_dim=1 # Each agent has a single state value at time t\n",
|
|
|
|
"model_config.output_dim=1\n",
|
|
|
|
"model_config.embedding_dim=32 \n",
|
|
|
|
"\n",
|
|
|
|
"# 3. Train the Model\n",
|
|
|
|
"# This relies on the modified train_model that returns final params\n",
|
|
|
|
"final_params, train_logs = train_model(\n",
|
|
|
|
" config=model_config,\n",
|
|
|
|
" inputs=inputs,\n",
|
|
|
|
" targets=targets,\n",
|
|
|
|
" true_graph=true_graph,\n",
|
|
|
|
" train_config=train_config\n",
|
|
|
|
")\n",
|
|
|
|
"\n",
|
|
|
|
"# 4. Evaluate\n",
|
|
|
|
"f1 = calculate_f1_score(\n",
|
|
|
|
" final_params, \n",
|
|
|
|
" model_config, \n",
|
|
|
|
" true_graph, \n",
|
|
|
|
" train_config.f1_threshold\n",
|
|
|
|
")\n",
|
|
|
|
"\n",
|
|
|
|
"loss_history_serializable = {\n",
|
|
|
|
" epoch: [loss.item() for loss in losses] \n",
|
|
|
|
" for epoch, losses in train_logs['loss_history'].items()\n",
|
|
|
|
"}\n",
|
|
|
|
"\n",
|
|
|
|
"\n",
|
|
|
|
"print(f1)"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
|
|
|
"execution_count": null,
|
|
|
|
"id": "1335db3f",
|
|
|
|
"metadata": {},
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"ename": "KeyError",
|
|
|
|
"evalue": "0",
|
|
|
|
"output_type": "error",
|
|
|
|
"traceback": [
|
|
|
|
"\u001b[31m---------------------------------------------------------------------------\u001b[39m",
|
|
|
|
"\u001b[31mKeyError\u001b[39m Traceback (most recent call last)",
|
|
|
|
"\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[28]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m \u001b[43mdata\u001b[49m\u001b[43m[\u001b[49m\u001b[32;43m0\u001b[39;49m\u001b[43m]\u001b[49m\n",
|
|
|
|
"\u001b[31mKeyError\u001b[39m: 0"
|
|
|
|
]
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"source": [
|
|
|
|
"data"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
|
|
|
"execution_count": null,
|
|
|
|
"id": "c5ca08df",
|
|
|
|
"metadata": {},
|
|
|
|
"outputs": [],
|
|
|
|
"source": []
|
2025-07-25 00:52:58 -04:00
|
|
|
}
|
|
|
|
],
|
|
|
|
"metadata": {
|
|
|
|
"kernelspec": {
|
2025-09-01 14:46:34 -04:00
|
|
|
"display_name": "graph-recognition-w-attn",
|
2025-07-25 00:52:58 -04:00
|
|
|
"language": "python",
|
|
|
|
"name": "python3"
|
|
|
|
},
|
|
|
|
"language_info": {
|
|
|
|
"codemirror_mode": {
|
|
|
|
"name": "ipython",
|
|
|
|
"version": 3
|
|
|
|
},
|
|
|
|
"file_extension": ".py",
|
|
|
|
"mimetype": "text/x-python",
|
|
|
|
"name": "python",
|
|
|
|
"nbconvert_exporter": "python",
|
|
|
|
"pygments_lexer": "ipython3",
|
|
|
|
"version": "3.12.3"
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"nbformat": 4,
|
|
|
|
"nbformat_minor": 5
|
|
|
|
}
|