Repository: Hjorthmedh/Snudda (language: python)

Issue:
Updating input tuning to handle all parameter and morphology variations



Discussion / hints:

Fix patch:
diff --git a/examples/notebooks/input_tuning_example_ALL.ipynb b/examples/notebooks/input_tuning_example_ALL.ipynb
new file mode 100644
index 000000000..a8a920bc4
--- /dev/null
+++ b/examples/notebooks/input_tuning_example_ALL.ipynb
@@ -0,0 +1,215 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "id": "heated-thousand",
+   "metadata": {},
+   "source": [
+    "Different morphologies of the same neuron type might require different activation to reach comparable firing frequency. InputScaling simulates a network of a neuron type with different number of inputs, and different frequency to infer what level of input is needed.\n",
+    "\n",
+    "Here we look at the input to ```neuron_types=\"fs\"```.\n",
+    "\n",
+    "During a simulation we can vary the input frequency, but not the number of inputs coupled to a neuron, so we use a set of ```num_replicas``` copies of each morphology, each receiving a different number of inputs from ```num_input_min``` to ```num_input_max``` of a given ```input_type``` (e.g. for striatum \"cortical\" or \"thalamic\"). Note that if 100 inputs are requested, then on average 100 inputs will be placed, but the number can vary as the placement is random.\n",
+    "\n",
+    "A set of input frequencies are tested, specified by ```input_frequency_range```, and each of these frequencies is run for ```input_duration``` seconds. In this example we create a small example, but we recommend that use use a longer input duration (e.g. 10 seconds, or possibly more).\n",
+    "\n",
+    "The user can specify ```parameter_id```, ```morphology_id``` and (neuron) ```modulation_id``` to be used for the neuron model. Each parameter_id can have multiple morphologies associated with it. This means that  ```parameter_id=0, morphology_id=0``` might refer to a different morphology than ```parameter_id=1, morphology_id=0```. Since ```morphology_id=0``` simply means the first morphology in the list of available morphologies for a given ```parameter_id```."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "id": "silent-heading",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Using SNUDDA_DATA=../../../BasalGangliaData/data\n"
+     ]
+    }
+   ],
+   "source": [
+    "import os\n",
+    "BGD_path = os.path.join(\"..\",\"..\",\"..\",\"BasalGangliaData\", \"data\")\n",
+    "if os.path.isdir(BGD_path):\n",
+    "    print(f\"Using SNUDDA_DATA={BGD_path}\")\n",
+    "    os.environ[\"SNUDDA_DATA\"] = BGD_path\n",
+    "\n",
+    "from snudda.input.input_tuning import InputTuning\n",
+    "network_path = os.path.join(\"networks\", \"input_tuning_FS_ALL\")\n",
+    "input_tuning = InputTuning(network_path)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "beginning-preliminary",
+   "metadata": {},
+   "source": [
+    "We create a network without any synapses and connect different number of external inputs to the neurons. Each neuron then receives a range of input frequencies. Here ```neurons_path``` points to the folder that contains all the different neuron types. Note that we use ```$DATA``` to refer to the ```snudda/data``` folder, but you can use an absolute path instead if you have your own neurons folder. If you use your own neurons you probably want to compile the neuron mechanisms from another folder when calling ```nrnivmodl``` below.\n",
+    "\n",
+    "Also note that the folder names for the different neurons must be lowercase."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "id": "alert-response",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Skipping neuron type chin\n",
+      "Skipping neuron type ispn\n",
+      "Skipping neuron type dspn\n",
+      "Found 225 neuron models in /home/hjorth/HBP/BasalGangliaData/data/neurons/striatum/fs\n",
+      "Skipping neuron type lts\n",
+      "Writing network config file to networks/input_tuning_FS_ALL/network-config.json\n",
+      "No d_view specified, running distribute neurons in serial\n",
+      "No connections specified in connectivity_distribution.\n",
+      "Using cortical synapse density for input.\n",
+      "Loading 1125 neurons with 0 synapses and 0 gap junctions\n",
+      "Writing spikes to networks/input_tuning_FS_ALL/input.hdf5\n"
+     ]
+    }
+   ],
+   "source": [
+    "neurons_path = os.path.join(\"$DATA\", \"neurons\", \"striatum\")\n",
+    "input_tuning.setup_network(neurons_path=neurons_path, \n",
+    "                           num_replicas=5,\n",
+    "                           neuron_types=\"fs\")\n",
+    "input_tuning.setup_input(input_type=\"cortical\",  # eg. \"cortical\" or \"thalamic\"\n",
+    "                         num_input_min=10,\n",
+    "                         num_input_max=500,\n",
+    "                         input_duration=2.0,\n",
+    "                         input_frequency_range=[1.0, 2.0, 3.0, 5.0, 10.0])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "id": "defensive-equipment",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "/home/hjorth/HBP/Snudda/examples/notebooks\n",
+      "Mod files: \"../../snudda/data/neurons/mechanisms/bk_ch.mod\" \"../../snudda/data/neurons/mechanisms/bk_fs.mod\" \"../../snudda/data/neurons/mechanisms/bk_ms.mod\" \"../../snudda/data/neurons/mechanisms/ca_ch.mod\" \"../../snudda/data/neurons/mechanisms/cadyn_fs.mod\" \"../../snudda/data/neurons/mechanisms/cadyn_ms.mod\" \"../../snudda/data/neurons/mechanisms/cal12_ms.mod\" \"../../snudda/data/neurons/mechanisms/cal13_ms.mod\" \"../../snudda/data/neurons/mechanisms/cal_ch.mod\" \"../../snudda/data/neurons/mechanisms/caldyn_ms.mod\" \"../../snudda/data/neurons/mechanisms/can_fs.mod\" \"../../snudda/data/neurons/mechanisms/can_ms.mod\" \"../../snudda/data/neurons/mechanisms/cap_ch.mod\" \"../../snudda/data/neurons/mechanisms/caq_fs.mod\" \"../../snudda/data/neurons/mechanisms/caq_ms.mod\" \"../../snudda/data/neurons/mechanisms/car_fs.mod\" \"../../snudda/data/neurons/mechanisms/car_ms.mod\" \"../../snudda/data/neurons/mechanisms/cat32_ms.mod\" \"../../snudda/data/neurons/mechanisms/cat33_ms.mod\" \"../../snudda/data/neurons/mechanisms/concACh.mod\" \"../../snudda/data/neurons/mechanisms/concDAfile.mod\" \"../../snudda/data/neurons/mechanisms/concDA.mod\" \"../../snudda/data/neurons/mechanisms/hcn12_ch.mod\" \"../../snudda/data/neurons/mechanisms/hd_lts.mod\" \"../../snudda/data/neurons/mechanisms/im_lts.mod\" \"../../snudda/data/neurons/mechanisms/it_lts.mod\" \"../../snudda/data/neurons/mechanisms/kaf_fs.mod\" \"../../snudda/data/neurons/mechanisms/kaf_ms.mod\" \"../../snudda/data/neurons/mechanisms/kas_fs.mod\" \"../../snudda/data/neurons/mechanisms/kas_ms.mod\" \"../../snudda/data/neurons/mechanisms/kcnq_ch.mod\" \"../../snudda/data/neurons/mechanisms/kdrbca1_lts.mod\" \"../../snudda/data/neurons/mechanisms/kdr_fs.mod\" \"../../snudda/data/neurons/mechanisms/kdr_lts.mod\" \"../../snudda/data/neurons/mechanisms/kdr_ms.mod\" \"../../snudda/data/neurons/mechanisms/kir23_lts.mod\" \"../../snudda/data/neurons/mechanisms/kir2_ch.mod\" \"../../snudda/data/neurons/mechanisms/kir_fs.mod\" \"../../snudda/data/neurons/mechanisms/kir_ms.mod\" \"../../snudda/data/neurons/mechanisms/kv2_ch.mod\" \"../../snudda/data/neurons/mechanisms/Kv3_ch.mod\" \"../../snudda/data/neurons/mechanisms/kv4_ch.mod\" \"../../snudda/data/neurons/mechanisms/na2_ch.mod\" \"../../snudda/data/neurons/mechanisms/na3n_lts.mod\" \"../../snudda/data/neurons/mechanisms/na_ch.mod\" \"../../snudda/data/neurons/mechanisms/naf_fs.mod\" \"../../snudda/data/neurons/mechanisms/naf_lts.mod\" \"../../snudda/data/neurons/mechanisms/naf_ms.mod\" \"../../snudda/data/neurons/mechanisms/NO.mod\" \"../../snudda/data/neurons/mechanisms/par_ggap.mod\" \"../../snudda/data/neurons/mechanisms/sk_ch.mod\" \"../../snudda/data/neurons/mechanisms/sk_fs.mod\" \"../../snudda/data/neurons/mechanisms/sk_ms.mod\" \"../../snudda/data/neurons/mechanisms/tmampa.mod\" \"../../snudda/data/neurons/mechanisms/tmgabaa.mod\" \"../../snudda/data/neurons/mechanisms/tmglut_double.mod\" \"../../snudda/data/neurons/mechanisms/tmglut_M1RH_D1.mod\" \"../../snudda/data/neurons/mechanisms/tmglut.mod\" \"../../snudda/data/neurons/mechanisms/tmnmda.mod\" \"../../snudda/data/neurons/mechanisms/vecevent.mod\"\n",
+      "\n",
+      "COBJS=''\n",
+      " -> \u001b[32mCompiling\u001b[0m mod_func.c\n",
+      "x86_64-linux-gnu-gcc -O2   -I.   -I/home/hjorth/.local/lib/python3.7/site-packages/neuron/.data/include  -I/nrnwheel/openmpi/include -fPIC -c mod_func.c -o mod_func.o\n",
+      " => \u001b[32mLINKING\u001b[0m shared library ./libnrnmech.so\n",
+      "x86_64-linux-gnu-g++ -O2 -DVERSION_INFO='7.8.2' -std=c++11 -shared -fPIC  -I /home/hjorth/.local/lib/python3.7/site-packages/neuron/.data/include -o ./libnrnmech.so -Wl,-soname,libnrnmech.so \\\n",
+      "  ./mod_func.o ./bk_ch.o ./bk_fs.o ./bk_ms.o ./ca_ch.o ./cadyn_fs.o ./cadyn_ms.o ./cal12_ms.o ./cal13_ms.o ./cal_ch.o ./caldyn_ms.o ./can_fs.o ./can_ms.o ./cap_ch.o ./caq_fs.o ./caq_ms.o ./car_fs.o ./car_ms.o ./cat32_ms.o ./cat33_ms.o ./concACh.o ./concDAfile.o ./concDA.o ./hcn12_ch.o ./hd_lts.o ./im_lts.o ./it_lts.o ./kaf_fs.o ./kaf_ms.o ./kas_fs.o ./kas_ms.o ./kcnq_ch.o ./kdrbca1_lts.o ./kdr_fs.o ./kdr_lts.o ./kdr_ms.o ./kir23_lts.o ./kir2_ch.o ./kir_fs.o ./kir_ms.o ./kv2_ch.o ./Kv3_ch.o ./kv4_ch.o ./na2_ch.o ./na3n_lts.o ./na_ch.o ./naf_fs.o ./naf_lts.o ./naf_ms.o ./NO.o ./par_ggap.o ./sk_ch.o ./sk_fs.o ./sk_ms.o ./tmampa.o ./tmgabaa.o ./tmglut_double.o ./tmglut_M1RH_D1.o ./tmglut.o ./tmnmda.o ./vecevent.o  -L/home/hjorth/.local/lib/python3.7/site-packages/neuron/.data/lib -lnrniv -Wl,-rpath,/home/hjorth/.local/lib/python3.7/site-packages/neuron/.data/lib   \n",
+      "rm -f ./.libs/libnrnmech.so ; mkdir -p ./.libs ; cp ./libnrnmech.so ./.libs/libnrnmech.so\n",
+      "Successfully created x86_64/special\n"
+     ]
+    }
+   ],
+   "source": [
+    "!nrnivmodl ../../snudda/data/neurons/mechanisms"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "dynamic-catalog",
+   "metadata": {},
+   "source": [
+    "## For large runs, to simulate in parallel use:\n",
+    "\n",
+    "```mpiexec -n 4 python3 ../../snudda/input/input_tuning.py simulate networks/input_tuning/```\n",
+    "\n",
+    "If you have more than four cores available on your machine, increase the number of workers accordingly.\n",
+    "\n",
+    "## Below we just run it in serial in the notebook:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "sufficient-progressive",
+   "metadata": {
+    "scrolled": true
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "NEURON mechanisms already compiled, make sure you have the correct version of NEURON modules.\n",
+      "If you delete x86_64 directory (or nrnmech.dll) then you will force a recompilation of the modules.\n",
+      "Loading 1125 neurons with 0 synapses and 0 gap junctions\n"
+     ]
+    }
+   ],
+   "source": [
+    "input_tuning.simulate()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "b3a14429",
+   "metadata": {},
+   "source": [
+    "## Analyse results"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "alternate-worry",
+   "metadata": {
+    "scrolled": false
+   },
+   "outputs": [],
+   "source": [
+    "%matplotlib notebook\n",
+    "\n",
+    "input_tuning.analyse_results(show_plots=True)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "close-operation",
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "9ba3a938",
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3",
+   "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.7.3"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/examples/notebooks/input_tuning_example_single_neuron.ipynb b/examples/notebooks/input_tuning_example_single_neuron.ipynb
new file mode 100644
index 000000000..c8cc235c7
--- /dev/null
+++ b/examples/notebooks/input_tuning_example_single_neuron.ipynb
@@ -0,0 +1,3177 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "id": "heated-thousand",
+   "metadata": {},
+   "source": [
+    "Different morphologies of the same neuron type might require different activation to reach comparable firing frequency. InputScaling simulates a network of a neuron type with different number of inputs, and different frequency to infer what level of input is needed.\n",
+    "\n",
+    "Here we look at the input to ```neuron_types=\"fs\"```.\n",
+    "\n",
+    "During a simulation we can vary the input frequency, but not the number of inputs coupled to a neuron, so we use a set of ```num_replicas``` copies of each morphology, each receiving a different number of inputs from ```num_input_min``` to ```num_input_max``` of a given ```input_type``` (e.g. for striatum \"cortical\" or \"thalamic\"). Note that if 100 inputs are requested, then on average 100 inputs will be placed, but the number can vary as the placement is random.\n",
+    "\n",
+    "A set of input frequencies are tested, specified by ```input_frequency_range```, and each of these frequencies is run for ```input_duration``` seconds. In this example we create a small example, but we recommend that use use a longer input duration (e.g. 10 seconds, or possibly more).\n",
+    "\n",
+    "The user can specify ```parameter_id```, ```morphology_id``` and (neuron) ```modulation_id``` to be used for the neuron model. Each parameter_id can have multiple morphologies associated with it. This means that  ```parameter_id=0, morphology_id=0``` might refer to a different morphology than ```parameter_id=1, morphology_id=0```. Since ```morphology_id=0``` simply means the first morphology in the list of available morphologies for a given ```parameter_id```."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "id": "silent-heading",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import os\n",
+    "from snudda.input.input_tuning import InputTuning\n",
+    "network_path = os.path.join(\"networks\", \"input_tuning\")\n",
+    "input_tuning = InputTuning(network_path)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "beginning-preliminary",
+   "metadata": {},
+   "source": [
+    "We create a network without any synapses and connect different number of external inputs to the neurons. Each neuron then receives a range of input frequencies. Here ```neurons_path``` points to the folder that contains all the different neuron types. Note that we use ```$DATA``` to refer to the ```snudda/data``` folder, but you can use an absolute path instead if you have your own neurons folder. If you want to specify a single specific neuron model, then use ```single_neuron_path``` instead, and set ```neurons_path = None```\n",
+    "\n",
+    "If you use your own neurons you probably want to compile the neuron mechanisms from another folder when calling ```nrnivmodl``` below.\n",
+    "\n",
+    "Also note that the folder names for the different neurons must be lowercase."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "id": "alert-response",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Writing network config file to networks/input_tuning/network-config.json\n",
+      "Setting parameter_id = 0\n",
+      "Setting morphology_id = 0\n",
+      "Setting neuron modulation_id = 0\n",
+      "No d_view specified, running distribute neurons in serial\n",
+      "No connections specified in connectivity_distribution.\n",
+      "Using cortical synapse density for input.\n",
+      "Loading 20 neurons with 0 synapses and 0 gap junctions\n",
+      "Writing spikes to networks/input_tuning/input.hdf5\n"
+     ]
+    }
+   ],
+   "source": [
+    "neurons_path = None # os.path.join(\"$DATA\", \"neurons\", \"striatum\")\n",
+    "single_neuron_path = os.path.join(\"$DATA\", \"neurons\", \"striatum\", \"fs\", \"str-fs-e180418_FS5-mMTC251001A-IDB-v20190301\")\n",
+    "input_tuning.setup_network(neurons_path=neurons_path, \n",
+    "                           num_replicas=20,\n",
+    "                           neuron_types=\"fs\",\n",
+    "                           parameter_id=0,\n",
+    "                           morphology_id=0,\n",
+    "                           modulation_id=0,\n",
+    "                           single_neuron_path=single_neuron_path)\n",
+    "input_tuning.setup_input(input_type=\"cortical\",  # eg. \"cortical\" or \"thalamic\"\n",
+    "                         num_input_min=10,\n",
+    "                         num_input_max=500,\n",
+    "                         input_duration=2.0,\n",
+    "                         input_frequency_range=[1.0, 2.0, 3.0, 5.0, 10.0])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "id": "spread-diamond",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Writing spikes to networks/input_tuning/input.hdf5\n"
+     ]
+    }
+   ],
+   "source": [
+    "from snudda.input import SnuddaInput\n",
+    "\n",
+    "si = SnuddaInput(input_config_file=input_tuning.input_config_file,\n",
+    "                 hdf5_network_file=input_tuning.network_file,\n",
+    "                 spike_data_filename=input_tuning.input_spikes_file,\n",
+    "                 time=input_tuning.max_time)\n",
+    "si.generate()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "id": "defensive-equipment",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "/home/hjorth/HBP/Snudda/examples/notebooks\n",
+      "Mod files: \"../../snudda/data/neurons/mechanisms/bk_ch.mod\" \"../../snudda/data/neurons/mechanisms/bk_fs.mod\" \"../../snudda/data/neurons/mechanisms/bk_ms.mod\" \"../../snudda/data/neurons/mechanisms/ca_ch.mod\" \"../../snudda/data/neurons/mechanisms/cadyn_fs.mod\" \"../../snudda/data/neurons/mechanisms/cadyn_ms.mod\" \"../../snudda/data/neurons/mechanisms/cal12_ms.mod\" \"../../snudda/data/neurons/mechanisms/cal13_ms.mod\" \"../../snudda/data/neurons/mechanisms/cal_ch.mod\" \"../../snudda/data/neurons/mechanisms/caldyn_ms.mod\" \"../../snudda/data/neurons/mechanisms/can_fs.mod\" \"../../snudda/data/neurons/mechanisms/can_ms.mod\" \"../../snudda/data/neurons/mechanisms/cap_ch.mod\" \"../../snudda/data/neurons/mechanisms/caq_fs.mod\" \"../../snudda/data/neurons/mechanisms/caq_ms.mod\" \"../../snudda/data/neurons/mechanisms/car_fs.mod\" \"../../snudda/data/neurons/mechanisms/car_ms.mod\" \"../../snudda/data/neurons/mechanisms/cat32_ms.mod\" \"../../snudda/data/neurons/mechanisms/cat33_ms.mod\" \"../../snudda/data/neurons/mechanisms/concACh.mod\" \"../../snudda/data/neurons/mechanisms/concDAfile.mod\" \"../../snudda/data/neurons/mechanisms/concDA.mod\" \"../../snudda/data/neurons/mechanisms/hcn12_ch.mod\" \"../../snudda/data/neurons/mechanisms/hd_lts.mod\" \"../../snudda/data/neurons/mechanisms/im_lts.mod\" \"../../snudda/data/neurons/mechanisms/it_lts.mod\" \"../../snudda/data/neurons/mechanisms/kaf_fs.mod\" \"../../snudda/data/neurons/mechanisms/kaf_ms.mod\" \"../../snudda/data/neurons/mechanisms/kas_fs.mod\" \"../../snudda/data/neurons/mechanisms/kas_ms.mod\" \"../../snudda/data/neurons/mechanisms/kcnq_ch.mod\" \"../../snudda/data/neurons/mechanisms/kdrbca1_lts.mod\" \"../../snudda/data/neurons/mechanisms/kdr_fs.mod\" \"../../snudda/data/neurons/mechanisms/kdr_lts.mod\" \"../../snudda/data/neurons/mechanisms/kdr_ms.mod\" \"../../snudda/data/neurons/mechanisms/kir23_lts.mod\" \"../../snudda/data/neurons/mechanisms/kir2_ch.mod\" \"../../snudda/data/neurons/mechanisms/kir_fs.mod\" \"../../snudda/data/neurons/mechanisms/kir_ms.mod\" \"../../snudda/data/neurons/mechanisms/kv2_ch.mod\" \"../../snudda/data/neurons/mechanisms/Kv3_ch.mod\" \"../../snudda/data/neurons/mechanisms/kv4_ch.mod\" \"../../snudda/data/neurons/mechanisms/na2_ch.mod\" \"../../snudda/data/neurons/mechanisms/na3n_lts.mod\" \"../../snudda/data/neurons/mechanisms/na_ch.mod\" \"../../snudda/data/neurons/mechanisms/naf_fs.mod\" \"../../snudda/data/neurons/mechanisms/naf_lts.mod\" \"../../snudda/data/neurons/mechanisms/naf_ms.mod\" \"../../snudda/data/neurons/mechanisms/NO.mod\" \"../../snudda/data/neurons/mechanisms/par_ggap.mod\" \"../../snudda/data/neurons/mechanisms/sk_ch.mod\" \"../../snudda/data/neurons/mechanisms/sk_fs.mod\" \"../../snudda/data/neurons/mechanisms/sk_ms.mod\" \"../../snudda/data/neurons/mechanisms/tmampa.mod\" \"../../snudda/data/neurons/mechanisms/tmgabaa.mod\" \"../../snudda/data/neurons/mechanisms/tmglut_double.mod\" \"../../snudda/data/neurons/mechanisms/tmglut_M1RH_D1.mod\" \"../../snudda/data/neurons/mechanisms/tmglut.mod\" \"../../snudda/data/neurons/mechanisms/tmnmda.mod\" \"../../snudda/data/neurons/mechanisms/vecevent.mod\"\n",
+      "\n",
+      "COBJS=''\n",
+      " -> \u001b[32mCompiling\u001b[0m mod_func.c\n",
+      "x86_64-linux-gnu-gcc -O2   -I.   -I/home/hjorth/.local/lib/python3.7/site-packages/neuron/.data/include  -I/nrnwheel/openmpi/include -fPIC -c mod_func.c -o mod_func.o\n",
+      " => \u001b[32mLINKING\u001b[0m shared library ./libnrnmech.so\n",
+      "x86_64-linux-gnu-g++ -O2 -DVERSION_INFO='7.8.2' -std=c++11 -shared -fPIC  -I /home/hjorth/.local/lib/python3.7/site-packages/neuron/.data/include -o ./libnrnmech.so -Wl,-soname,libnrnmech.so \\\n",
+      "  ./mod_func.o ./bk_ch.o ./bk_fs.o ./bk_ms.o ./ca_ch.o ./cadyn_fs.o ./cadyn_ms.o ./cal12_ms.o ./cal13_ms.o ./cal_ch.o ./caldyn_ms.o ./can_fs.o ./can_ms.o ./cap_ch.o ./caq_fs.o ./caq_ms.o ./car_fs.o ./car_ms.o ./cat32_ms.o ./cat33_ms.o ./concACh.o ./concDAfile.o ./concDA.o ./hcn12_ch.o ./hd_lts.o ./im_lts.o ./it_lts.o ./kaf_fs.o ./kaf_ms.o ./kas_fs.o ./kas_ms.o ./kcnq_ch.o ./kdrbca1_lts.o ./kdr_fs.o ./kdr_lts.o ./kdr_ms.o ./kir23_lts.o ./kir2_ch.o ./kir_fs.o ./kir_ms.o ./kv2_ch.o ./Kv3_ch.o ./kv4_ch.o ./na2_ch.o ./na3n_lts.o ./na_ch.o ./naf_fs.o ./naf_lts.o ./naf_ms.o ./NO.o ./par_ggap.o ./sk_ch.o ./sk_fs.o ./sk_ms.o ./tmampa.o ./tmgabaa.o ./tmglut_double.o ./tmglut_M1RH_D1.o ./tmglut.o ./tmnmda.o ./vecevent.o  -L/home/hjorth/.local/lib/python3.7/site-packages/neuron/.data/lib -lnrniv -Wl,-rpath,/home/hjorth/.local/lib/python3.7/site-packages/neuron/.data/lib   \n",
+      "rm -f ./.libs/libnrnmech.so ; mkdir -p ./.libs ; cp ./libnrnmech.so ./.libs/libnrnmech.so\n",
+      "Successfully created x86_64/special\n"
+     ]
+    }
+   ],
+   "source": [
+    "!nrnivmodl ../../snudda/data/neurons/mechanisms"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "dynamic-catalog",
+   "metadata": {},
+   "source": [
+    "## For large runs, to simulate in parallel use:\n",
+    "\n",
+    "```mpiexec -n 4 python3 ../../snudda/input/input_tuning.py simulate networks/input_tuning/```\n",
+    "\n",
+    "If you have more than four cores available on your machine, increase the number of workers accordingly.\n",
+    "\n",
+    "## Below we just run it in serial in the notebook:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "id": "sufficient-progressive",
+   "metadata": {
+    "scrolled": true
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "NEURON mechanisms already compiled, make sure you have the correct version of NEURON modules.\n",
+      "If you delete x86_64 directory (or nrnmech.dll) then you will force a recompilation of the modules.\n",
+      "Loading 20 neurons with 0 synapses and 0 gap junctions\n",
+      "Running simulation for 10000.0 ms.\n",
+      "Running simulation for 10.0 s\n",
+      "1% done. Elapsed: 15.0 s, estimated time left: 1489.0 s\n",
+      "8% done. Elapsed: 125.8 s, estimated time left: 1446.2 s\n",
+      "15% done. Elapsed: 228.4 s, estimated time left: 1294.3 s\n",
+      "22% done. Elapsed: 329.0 s, estimated time left: 1166.4 s\n",
+      "30% done. Elapsed: 436.6 s, estimated time left: 1018.8 s\n",
+      "38% done. Elapsed: 547.4 s, estimated time left: 893.2 s\n",
+      "45% done. Elapsed: 650.4 s, estimated time left: 794.9 s\n",
+      "53% done. Elapsed: 757.2 s, estimated time left: 671.5 s\n",
+      "61% done. Elapsed: 865.7 s, estimated time left: 553.5 s\n",
+      "69% done. Elapsed: 970.8 s, estimated time left: 436.2 s\n",
+      "77% done. Elapsed: 1076.3 s, estimated time left: 321.5 s\n",
+      "85% done. Elapsed: 1181.4 s, estimated time left: 208.5 s\n",
+      "93% done. Elapsed: 1284.6 s, estimated time left: 96.7 s\n",
+      "99% done. Elapsed: 1361.9 s, estimated time left: 13.8 s\n",
+      "Simulation run time: 1374.8 s\n",
+      "Simulation done, saving output\n",
+      "Writing spike times to networks/input_tuning/output_spikes.txt\n",
+      "Program run time: 1395.6s\n"
+     ]
+    }
+   ],
+   "source": [
+    "input_tuning.simulate()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "b3a14429",
+   "metadata": {},
+   "source": [
+    "## Analyse results"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "id": "alternate-worry",
+   "metadata": {
+    "scrolled": false
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Loading 20 neurons with 0 synapses and 0 gap junctions\n"
+     ]
+    },
+    {
+     "data": {
+      "application/javascript": [
+       "/* Put everything inside the global mpl namespace */\n",
+       "/* global mpl */\n",
+       "window.mpl = {};\n",
+       "\n",
+       "mpl.get_websocket_type = function () {\n",
+       "    if (typeof WebSocket !== 'undefined') {\n",
+       "        return WebSocket;\n",
+       "    } else if (typeof MozWebSocket !== 'undefined') {\n",
+       "        return MozWebSocket;\n",
+       "    } else {\n",
+       "        alert(\n",
+       "            'Your browser does not have WebSocket support. ' +\n",
+       "                'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
+       "                'Firefox 4 and 5 are also supported but you ' +\n",
+       "                'have to enable WebSockets in about:config.'\n",
+       "        );\n",
+       "    }\n",
+       "};\n",
+       "\n",
+       "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n",
+       "    this.id = figure_id;\n",
+       "\n",
+       "    this.ws = websocket;\n",
+       "\n",
+       "    this.supports_binary = this.ws.binaryType !== undefined;\n",
+       "\n",
+       "    if (!this.supports_binary) {\n",
+       "        var warnings = document.getElementById('mpl-warnings');\n",
+       "        if (warnings) {\n",
+       "            warnings.style.display = 'block';\n",
+       "            warnings.textContent =\n",
+       "                'This browser does not support binary websocket messages. ' +\n",
+       "                'Performance may be slow.';\n",
+       "        }\n",
+       "    }\n",
+       "\n",
+       "    this.imageObj = new Image();\n",
+       "\n",
+       "    this.context = undefined;\n",
+       "    this.message = undefined;\n",
+       "    this.canvas = undefined;\n",
+       "    this.rubberband_canvas = undefined;\n",
+       "    this.rubberband_context = undefined;\n",
+       "    this.format_dropdown = undefined;\n",
+       "\n",
+       "    this.image_mode = 'full';\n",
+       "\n",
+       "    this.root = document.createElement('div');\n",
+       "    this.root.setAttribute('style', 'display: inline-block');\n",
+       "    this._root_extra_style(this.root);\n",
+       "\n",
+       "    parent_element.appendChild(this.root);\n",
+       "\n",
+       "    this._init_header(this);\n",
+       "    this._init_canvas(this);\n",
+       "    this._init_toolbar(this);\n",
+       "\n",
+       "    var fig = this;\n",
+       "\n",
+       "    this.waiting = false;\n",
+       "\n",
+       "    this.ws.onopen = function () {\n",
+       "        fig.send_message('supports_binary', { value: fig.supports_binary });\n",
+       "        fig.send_message('send_image_mode', {});\n",
+       "        if (fig.ratio !== 1) {\n",
+       "            fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n",
+       "        }\n",
+       "        fig.send_message('refresh', {});\n",
+       "    };\n",
+       "\n",
+       "    this.imageObj.onload = function () {\n",
+       "        if (fig.image_mode === 'full') {\n",
+       "            // Full images could contain transparency (where diff images\n",
+       "            // almost always do), so we need to clear the canvas so that\n",
+       "            // there is no ghosting.\n",
+       "            fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
+       "        }\n",
+       "        fig.context.drawImage(fig.imageObj, 0, 0);\n",
+       "    };\n",
+       "\n",
+       "    this.imageObj.onunload = function () {\n",
+       "        fig.ws.close();\n",
+       "    };\n",
+       "\n",
+       "    this.ws.onmessage = this._make_on_message_function(this);\n",
+       "\n",
+       "    this.ondownload = ondownload;\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype._init_header = function () {\n",
+       "    var titlebar = document.createElement('div');\n",
+       "    titlebar.classList =\n",
+       "        'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n",
+       "    var titletext = document.createElement('div');\n",
+       "    titletext.classList = 'ui-dialog-title';\n",
+       "    titletext.setAttribute(\n",
+       "        'style',\n",
+       "        'width: 100%; text-align: center; padding: 3px;'\n",
+       "    );\n",
+       "    titlebar.appendChild(titletext);\n",
+       "    this.root.appendChild(titlebar);\n",
+       "    this.header = titletext;\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n",
+       "\n",
+       "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n",
+       "\n",
+       "mpl.figure.prototype._init_canvas = function () {\n",
+       "    var fig = this;\n",
+       "\n",
+       "    var canvas_div = (this.canvas_div = document.createElement('div'));\n",
+       "    canvas_div.setAttribute(\n",
+       "        'style',\n",
+       "        'border: 1px solid #ddd;' +\n",
+       "            'box-sizing: content-box;' +\n",
+       "            'clear: both;' +\n",
+       "            'min-height: 1px;' +\n",
+       "            'min-width: 1px;' +\n",
+       "            'outline: 0;' +\n",
+       "            'overflow: hidden;' +\n",
+       "            'position: relative;' +\n",
+       "            'resize: both;'\n",
+       "    );\n",
+       "\n",
+       "    function on_keyboard_event_closure(name) {\n",
+       "        return function (event) {\n",
+       "            return fig.key_event(event, name);\n",
+       "        };\n",
+       "    }\n",
+       "\n",
+       "    canvas_div.addEventListener(\n",
+       "        'keydown',\n",
+       "        on_keyboard_event_closure('key_press')\n",
+       "    );\n",
+       "    canvas_div.addEventListener(\n",
+       "        'keyup',\n",
+       "        on_keyboard_event_closure('key_release')\n",
+       "    );\n",
+       "\n",
+       "    this._canvas_extra_style(canvas_div);\n",
+       "    this.root.appendChild(canvas_div);\n",
+       "\n",
+       "    var canvas = (this.canvas = document.createElement('canvas'));\n",
+       "    canvas.classList.add('mpl-canvas');\n",
+       "    canvas.setAttribute('style', 'box-sizing: content-box;');\n",
+       "\n",
+       "    this.context = canvas.getContext('2d');\n",
+       "\n",
+       "    var backingStore =\n",
+       "        this.context.backingStorePixelRatio ||\n",
+       "        this.context.webkitBackingStorePixelRatio ||\n",
+       "        this.context.mozBackingStorePixelRatio ||\n",
+       "        this.context.msBackingStorePixelRatio ||\n",
+       "        this.context.oBackingStorePixelRatio ||\n",
+       "        this.context.backingStorePixelRatio ||\n",
+       "        1;\n",
+       "\n",
+       "    this.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
+       "\n",
+       "    var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n",
+       "        'canvas'\n",
+       "    ));\n",
+       "    rubberband_canvas.setAttribute(\n",
+       "        'style',\n",
+       "        'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n",
+       "    );\n",
+       "\n",
+       "    // Apply a ponyfill if ResizeObserver is not implemented by browser.\n",
+       "    if (this.ResizeObserver === undefined) {\n",
+       "        if (window.ResizeObserver !== undefined) {\n",
+       "            this.ResizeObserver = window.ResizeObserver;\n",
+       "        } else {\n",
+       "            var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n",
+       "            this.ResizeObserver = obs.ResizeObserver;\n",
+       "        }\n",
+       "    }\n",
+       "\n",
+       "    this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n",
+       "        var nentries = entries.length;\n",
+       "        for (var i = 0; i < nentries; i++) {\n",
+       "            var entry = entries[i];\n",
+       "            var width, height;\n",
+       "            if (entry.contentBoxSize) {\n",
+       "                if (entry.contentBoxSize instanceof Array) {\n",
+       "                    // Chrome 84 implements new version of spec.\n",
+       "                    width = entry.contentBoxSize[0].inlineSize;\n",
+       "                    height = entry.contentBoxSize[0].blockSize;\n",
+       "                } else {\n",
+       "                    // Firefox implements old version of spec.\n",
+       "                    width = entry.contentBoxSize.inlineSize;\n",
+       "                    height = entry.contentBoxSize.blockSize;\n",
+       "                }\n",
+       "            } else {\n",
+       "                // Chrome <84 implements even older version of spec.\n",
+       "                width = entry.contentRect.width;\n",
+       "                height = entry.contentRect.height;\n",
+       "            }\n",
+       "\n",
+       "            // Keep the size of the canvas and rubber band canvas in sync with\n",
+       "            // the canvas container.\n",
+       "            if (entry.devicePixelContentBoxSize) {\n",
+       "                // Chrome 84 implements new version of spec.\n",
+       "                canvas.setAttribute(\n",
+       "                    'width',\n",
+       "                    entry.devicePixelContentBoxSize[0].inlineSize\n",
+       "                );\n",
+       "                canvas.setAttribute(\n",
+       "                    'height',\n",
+       "                    entry.devicePixelContentBoxSize[0].blockSize\n",
+       "                );\n",
+       "            } else {\n",
+       "                canvas.setAttribute('width', width * fig.ratio);\n",
+       "                canvas.setAttribute('height', height * fig.ratio);\n",
+       "            }\n",
+       "            canvas.setAttribute(\n",
+       "                'style',\n",
+       "                'width: ' + width + 'px; height: ' + height + 'px;'\n",
+       "            );\n",
+       "\n",
+       "            rubberband_canvas.setAttribute('width', width);\n",
+       "            rubberband_canvas.setAttribute('height', height);\n",
+       "\n",
+       "            // And update the size in Python. We ignore the initial 0/0 size\n",
+       "            // that occurs as the element is placed into the DOM, which should\n",
+       "            // otherwise not happen due to the minimum size styling.\n",
+       "            if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n",
+       "                fig.request_resize(width, height);\n",
+       "            }\n",
+       "        }\n",
+       "    });\n",
+       "    this.resizeObserverInstance.observe(canvas_div);\n",
+       "\n",
+       "    function on_mouse_event_closure(name) {\n",
+       "        return function (event) {\n",
+       "            return fig.mouse_event(event, name);\n",
+       "        };\n",
+       "    }\n",
+       "\n",
+       "    rubberband_canvas.addEventListener(\n",
+       "        'mousedown',\n",
+       "        on_mouse_event_closure('button_press')\n",
+       "    );\n",
+       "    rubberband_canvas.addEventListener(\n",
+       "        'mouseup',\n",
+       "        on_mouse_event_closure('button_release')\n",
+       "    );\n",
+       "    // Throttle sequential mouse events to 1 every 20ms.\n",
+       "    rubberband_canvas.addEventListener(\n",
+       "        'mousemove',\n",
+       "        on_mouse_event_closure('motion_notify')\n",
+       "    );\n",
+       "\n",
+       "    rubberband_canvas.addEventListener(\n",
+       "        'mouseenter',\n",
+       "        on_mouse_event_closure('figure_enter')\n",
+       "    );\n",
+       "    rubberband_canvas.addEventListener(\n",
+       "        'mouseleave',\n",
+       "        on_mouse_event_closure('figure_leave')\n",
+       "    );\n",
+       "\n",
+       "    canvas_div.addEventListener('wheel', function (event) {\n",
+       "        if (event.deltaY < 0) {\n",
+       "            event.step = 1;\n",
+       "        } else {\n",
+       "            event.step = -1;\n",
+       "        }\n",
+       "        on_mouse_event_closure('scroll')(event);\n",
+       "    });\n",
+       "\n",
+       "    canvas_div.appendChild(canvas);\n",
+       "    canvas_div.appendChild(rubberband_canvas);\n",
+       "\n",
+       "    this.rubberband_context = rubberband_canvas.getContext('2d');\n",
+       "    this.rubberband_context.strokeStyle = '#000000';\n",
+       "\n",
+       "    this._resize_canvas = function (width, height, forward) {\n",
+       "        if (forward) {\n",
+       "            canvas_div.style.width = width + 'px';\n",
+       "            canvas_div.style.height = height + 'px';\n",
+       "        }\n",
+       "    };\n",
+       "\n",
+       "    // Disable right mouse context menu.\n",
+       "    this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n",
+       "        event.preventDefault();\n",
+       "        return false;\n",
+       "    });\n",
+       "\n",
+       "    function set_focus() {\n",
+       "        canvas.focus();\n",
+       "        canvas_div.focus();\n",
+       "    }\n",
+       "\n",
+       "    window.setTimeout(set_focus, 100);\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype._init_toolbar = function () {\n",
+       "    var fig = this;\n",
+       "\n",
+       "    var toolbar = document.createElement('div');\n",
+       "    toolbar.classList = 'mpl-toolbar';\n",
+       "    this.root.appendChild(toolbar);\n",
+       "\n",
+       "    function on_click_closure(name) {\n",
+       "        return function (_event) {\n",
+       "            return fig.toolbar_button_onclick(name);\n",
+       "        };\n",
+       "    }\n",
+       "\n",
+       "    function on_mouseover_closure(tooltip) {\n",
+       "        return function (event) {\n",
+       "            if (!event.currentTarget.disabled) {\n",
+       "                return fig.toolbar_button_onmouseover(tooltip);\n",
+       "            }\n",
+       "        };\n",
+       "    }\n",
+       "\n",
+       "    fig.buttons = {};\n",
+       "    var buttonGroup = document.createElement('div');\n",
+       "    buttonGroup.classList = 'mpl-button-group';\n",
+       "    for (var toolbar_ind in mpl.toolbar_items) {\n",
+       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
+       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
+       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
+       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
+       "\n",
+       "        if (!name) {\n",
+       "            /* Instead of a spacer, we start a new button group. */\n",
+       "            if (buttonGroup.hasChildNodes()) {\n",
+       "                toolbar.appendChild(buttonGroup);\n",
+       "            }\n",
+       "            buttonGroup = document.createElement('div');\n",
+       "            buttonGroup.classList = 'mpl-button-group';\n",
+       "            continue;\n",
+       "        }\n",
+       "\n",
+       "        var button = (fig.buttons[name] = document.createElement('button'));\n",
+       "        button.classList = 'mpl-widget';\n",
+       "        button.setAttribute('role', 'button');\n",
+       "        button.setAttribute('aria-disabled', 'false');\n",
+       "        button.addEventListener('click', on_click_closure(method_name));\n",
+       "        button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
+       "\n",
+       "        var icon_img = document.createElement('img');\n",
+       "        icon_img.src = '_images/' + image + '.png';\n",
+       "        icon_img.srcset = '_images/' + image + '_large.png 2x';\n",
+       "        icon_img.alt = tooltip;\n",
+       "        button.appendChild(icon_img);\n",
+       "\n",
+       "        buttonGroup.appendChild(button);\n",
+       "    }\n",
+       "\n",
+       "    if (buttonGroup.hasChildNodes()) {\n",
+       "        toolbar.appendChild(buttonGroup);\n",
+       "    }\n",
+       "\n",
+       "    var fmt_picker = document.createElement('select');\n",
+       "    fmt_picker.classList = 'mpl-widget';\n",
+       "    toolbar.appendChild(fmt_picker);\n",
+       "    this.format_dropdown = fmt_picker;\n",
+       "\n",
+       "    for (var ind in mpl.extensions) {\n",
+       "        var fmt = mpl.extensions[ind];\n",
+       "        var option = document.createElement('option');\n",
+       "        option.selected = fmt === mpl.default_extension;\n",
+       "        option.innerHTML = fmt;\n",
+       "        fmt_picker.appendChild(option);\n",
+       "    }\n",
+       "\n",
+       "    var status_bar = document.createElement('span');\n",
+       "    status_bar.classList = 'mpl-message';\n",
+       "    toolbar.appendChild(status_bar);\n",
+       "    this.message = status_bar;\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n",
+       "    // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
+       "    // which will in turn request a refresh of the image.\n",
+       "    this.send_message('resize', { width: x_pixels, height: y_pixels });\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.send_message = function (type, properties) {\n",
+       "    properties['type'] = type;\n",
+       "    properties['figure_id'] = this.id;\n",
+       "    this.ws.send(JSON.stringify(properties));\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.send_draw_message = function () {\n",
+       "    if (!this.waiting) {\n",
+       "        this.waiting = true;\n",
+       "        this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n",
+       "    }\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.handle_save = function (fig, _msg) {\n",
+       "    var format_dropdown = fig.format_dropdown;\n",
+       "    var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
+       "    fig.ondownload(fig, format);\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.handle_resize = function (fig, msg) {\n",
+       "    var size = msg['size'];\n",
+       "    if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n",
+       "        fig._resize_canvas(size[0], size[1], msg['forward']);\n",
+       "        fig.send_message('refresh', {});\n",
+       "    }\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n",
+       "    var x0 = msg['x0'] / fig.ratio;\n",
+       "    var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n",
+       "    var x1 = msg['x1'] / fig.ratio;\n",
+       "    var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n",
+       "    x0 = Math.floor(x0) + 0.5;\n",
+       "    y0 = Math.floor(y0) + 0.5;\n",
+       "    x1 = Math.floor(x1) + 0.5;\n",
+       "    y1 = Math.floor(y1) + 0.5;\n",
+       "    var min_x = Math.min(x0, x1);\n",
+       "    var min_y = Math.min(y0, y1);\n",
+       "    var width = Math.abs(x1 - x0);\n",
+       "    var height = Math.abs(y1 - y0);\n",
+       "\n",
+       "    fig.rubberband_context.clearRect(\n",
+       "        0,\n",
+       "        0,\n",
+       "        fig.canvas.width / fig.ratio,\n",
+       "        fig.canvas.height / fig.ratio\n",
+       "    );\n",
+       "\n",
+       "    fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n",
+       "    // Updates the figure title.\n",
+       "    fig.header.textContent = msg['label'];\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n",
+       "    var cursor = msg['cursor'];\n",
+       "    switch (cursor) {\n",
+       "        case 0:\n",
+       "            cursor = 'pointer';\n",
+       "            break;\n",
+       "        case 1:\n",
+       "            cursor = 'default';\n",
+       "            break;\n",
+       "        case 2:\n",
+       "            cursor = 'crosshair';\n",
+       "            break;\n",
+       "        case 3:\n",
+       "            cursor = 'move';\n",
+       "            break;\n",
+       "    }\n",
+       "    fig.rubberband_canvas.style.cursor = cursor;\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.handle_message = function (fig, msg) {\n",
+       "    fig.message.textContent = msg['message'];\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n",
+       "    // Request the server to send over a new figure.\n",
+       "    fig.send_draw_message();\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n",
+       "    fig.image_mode = msg['mode'];\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n",
+       "    for (var key in msg) {\n",
+       "        if (!(key in fig.buttons)) {\n",
+       "            continue;\n",
+       "        }\n",
+       "        fig.buttons[key].disabled = !msg[key];\n",
+       "        fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n",
+       "    }\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n",
+       "    if (msg['mode'] === 'PAN') {\n",
+       "        fig.buttons['Pan'].classList.add('active');\n",
+       "        fig.buttons['Zoom'].classList.remove('active');\n",
+       "    } else if (msg['mode'] === 'ZOOM') {\n",
+       "        fig.buttons['Pan'].classList.remove('active');\n",
+       "        fig.buttons['Zoom'].classList.add('active');\n",
+       "    } else {\n",
+       "        fig.buttons['Pan'].classList.remove('active');\n",
+       "        fig.buttons['Zoom'].classList.remove('active');\n",
+       "    }\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.updated_canvas_event = function () {\n",
+       "    // Called whenever the canvas gets updated.\n",
+       "    this.send_message('ack', {});\n",
+       "};\n",
+       "\n",
+       "// A function to construct a web socket function for onmessage handling.\n",
+       "// Called in the figure constructor.\n",
+       "mpl.figure.prototype._make_on_message_function = function (fig) {\n",
+       "    return function socket_on_message(evt) {\n",
+       "        if (evt.data instanceof Blob) {\n",
+       "            /* FIXME: We get \"Resource interpreted as Image but\n",
+       "             * transferred with MIME type text/plain:\" errors on\n",
+       "             * Chrome.  But how to set the MIME type?  It doesn't seem\n",
+       "             * to be part of the websocket stream */\n",
+       "            evt.data.type = 'image/png';\n",
+       "\n",
+       "            /* Free the memory for the previous frames */\n",
+       "            if (fig.imageObj.src) {\n",
+       "                (window.URL || window.webkitURL).revokeObjectURL(\n",
+       "                    fig.imageObj.src\n",
+       "                );\n",
+       "            }\n",
+       "\n",
+       "            fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
+       "                evt.data\n",
+       "            );\n",
+       "            fig.updated_canvas_event();\n",
+       "            fig.waiting = false;\n",
+       "            return;\n",
+       "        } else if (\n",
+       "            typeof evt.data === 'string' &&\n",
+       "            evt.data.slice(0, 21) === 'data:image/png;base64'\n",
+       "        ) {\n",
+       "            fig.imageObj.src = evt.data;\n",
+       "            fig.updated_canvas_event();\n",
+       "            fig.waiting = false;\n",
+       "            return;\n",
+       "        }\n",
+       "\n",
+       "        var msg = JSON.parse(evt.data);\n",
+       "        var msg_type = msg['type'];\n",
+       "\n",
+       "        // Call the  \"handle_{type}\" callback, which takes\n",
+       "        // the figure and JSON message as its only arguments.\n",
+       "        try {\n",
+       "            var callback = fig['handle_' + msg_type];\n",
+       "        } catch (e) {\n",
+       "            console.log(\n",
+       "                \"No handler for the '\" + msg_type + \"' message type: \",\n",
+       "                msg\n",
+       "            );\n",
+       "            return;\n",
+       "        }\n",
+       "\n",
+       "        if (callback) {\n",
+       "            try {\n",
+       "                // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
+       "                callback(fig, msg);\n",
+       "            } catch (e) {\n",
+       "                console.log(\n",
+       "                    \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n",
+       "                    e,\n",
+       "                    e.stack,\n",
+       "                    msg\n",
+       "                );\n",
+       "            }\n",
+       "        }\n",
+       "    };\n",
+       "};\n",
+       "\n",
+       "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
+       "mpl.findpos = function (e) {\n",
+       "    //this section is from http://www.quirksmode.org/js/events_properties.html\n",
+       "    var targ;\n",
+       "    if (!e) {\n",
+       "        e = window.event;\n",
+       "    }\n",
+       "    if (e.target) {\n",
+       "        targ = e.target;\n",
+       "    } else if (e.srcElement) {\n",
+       "        targ = e.srcElement;\n",
+       "    }\n",
+       "    if (targ.nodeType === 3) {\n",
+       "        // defeat Safari bug\n",
+       "        targ = targ.parentNode;\n",
+       "    }\n",
+       "\n",
+       "    // pageX,Y are the mouse positions relative to the document\n",
+       "    var boundingRect = targ.getBoundingClientRect();\n",
+       "    var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n",
+       "    var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n",
+       "\n",
+       "    return { x: x, y: y };\n",
+       "};\n",
+       "\n",
+       "/*\n",
+       " * return a copy of an object with only non-object keys\n",
+       " * we need this to avoid circular references\n",
+       " * http://stackoverflow.com/a/24161582/3208463\n",
+       " */\n",
+       "function simpleKeys(original) {\n",
+       "    return Object.keys(original).reduce(function (obj, key) {\n",
+       "        if (typeof original[key] !== 'object') {\n",
+       "            obj[key] = original[key];\n",
+       "        }\n",
+       "        return obj;\n",
+       "    }, {});\n",
+       "}\n",
+       "\n",
+       "mpl.figure.prototype.mouse_event = function (event, name) {\n",
+       "    var canvas_pos = mpl.findpos(event);\n",
+       "\n",
+       "    if (name === 'button_press') {\n",
+       "        this.canvas.focus();\n",
+       "        this.canvas_div.focus();\n",
+       "    }\n",
+       "\n",
+       "    var x = canvas_pos.x * this.ratio;\n",
+       "    var y = canvas_pos.y * this.ratio;\n",
+       "\n",
+       "    this.send_message(name, {\n",
+       "        x: x,\n",
+       "        y: y,\n",
+       "        button: event.button,\n",
+       "        step: event.step,\n",
+       "        guiEvent: simpleKeys(event),\n",
+       "    });\n",
+       "\n",
+       "    /* This prevents the web browser from automatically changing to\n",
+       "     * the text insertion cursor when the button is pressed.  We want\n",
+       "     * to control all of the cursor setting manually through the\n",
+       "     * 'cursor' event from matplotlib */\n",
+       "    event.preventDefault();\n",
+       "    return false;\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n",
+       "    // Handle any extra behaviour associated with a key event\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.key_event = function (event, name) {\n",
+       "    // Prevent repeat events\n",
+       "    if (name === 'key_press') {\n",
+       "        if (event.which === this._key) {\n",
+       "            return;\n",
+       "        } else {\n",
+       "            this._key = event.which;\n",
+       "        }\n",
+       "    }\n",
+       "    if (name === 'key_release') {\n",
+       "        this._key = null;\n",
+       "    }\n",
+       "\n",
+       "    var value = '';\n",
+       "    if (event.ctrlKey && event.which !== 17) {\n",
+       "        value += 'ctrl+';\n",
+       "    }\n",
+       "    if (event.altKey && event.which !== 18) {\n",
+       "        value += 'alt+';\n",
+       "    }\n",
+       "    if (event.shiftKey && event.which !== 16) {\n",
+       "        value += 'shift+';\n",
+       "    }\n",
+       "\n",
+       "    value += 'k';\n",
+       "    value += event.which.toString();\n",
+       "\n",
+       "    this._key_event_extra(event, name);\n",
+       "\n",
+       "    this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n",
+       "    return false;\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n",
+       "    if (name === 'download') {\n",
+       "        this.handle_save(this, null);\n",
+       "    } else {\n",
+       "        this.send_message('toolbar_button', { name: name });\n",
+       "    }\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n",
+       "    this.message.textContent = tooltip;\n",
+       "};\n",
+       "\n",
+       "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n",
+       "// prettier-ignore\n",
+       "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\n",
+       "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
+       "\n",
+       "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
+       "\n",
+       "mpl.default_extension = \"png\";/* global mpl */\n",
+       "\n",
+       "var comm_websocket_adapter = function (comm) {\n",
+       "    // Create a \"websocket\"-like object which calls the given IPython comm\n",
+       "    // object with the appropriate methods. Currently this is a non binary\n",
+       "    // socket, so there is still some room for performance tuning.\n",
+       "    var ws = {};\n",
+       "\n",
+       "    ws.close = function () {\n",
+       "        comm.close();\n",
+       "    };\n",
+       "    ws.send = function (m) {\n",
+       "        //console.log('sending', m);\n",
+       "        comm.send(m);\n",
+       "    };\n",
+       "    // Register the callback with on_msg.\n",
+       "    comm.on_msg(function (msg) {\n",
+       "        //console.log('receiving', msg['content']['data'], msg);\n",
+       "        // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
+       "        ws.onmessage(msg['content']['data']);\n",
+       "    });\n",
+       "    return ws;\n",
+       "};\n",
+       "\n",
+       "mpl.mpl_figure_comm = function (comm, msg) {\n",
+       "    // This is the function which gets called when the mpl process\n",
+       "    // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
+       "\n",
+       "    var id = msg.content.data.id;\n",
+       "    // Get hold of the div created by the display call when the Comm\n",
+       "    // socket was opened in Python.\n",
+       "    var element = document.getElementById(id);\n",
+       "    var ws_proxy = comm_websocket_adapter(comm);\n",
+       "\n",
+       "    function ondownload(figure, _format) {\n",
+       "        window.open(figure.canvas.toDataURL());\n",
+       "    }\n",
+       "\n",
+       "    var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n",
+       "\n",
+       "    // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
+       "    // web socket which is closed, not our websocket->open comm proxy.\n",
+       "    ws_proxy.onopen();\n",
+       "\n",
+       "    fig.parent_element = element;\n",
+       "    fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
+       "    if (!fig.cell_info) {\n",
+       "        console.error('Failed to find cell for figure', id, fig);\n",
+       "        return;\n",
+       "    }\n",
+       "    fig.cell_info[0].output_area.element.on(\n",
+       "        'cleared',\n",
+       "        { fig: fig },\n",
+       "        fig._remove_fig_handler\n",
+       "    );\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.handle_close = function (fig, msg) {\n",
+       "    var width = fig.canvas.width / fig.ratio;\n",
+       "    fig.cell_info[0].output_area.element.off(\n",
+       "        'cleared',\n",
+       "        fig._remove_fig_handler\n",
+       "    );\n",
+       "    fig.resizeObserverInstance.unobserve(fig.canvas_div);\n",
+       "\n",
+       "    // Update the output cell to use the data from the current canvas.\n",
+       "    fig.push_to_output();\n",
+       "    var dataURL = fig.canvas.toDataURL();\n",
+       "    // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
+       "    // the notebook keyboard shortcuts fail.\n",
+       "    IPython.keyboard_manager.enable();\n",
+       "    fig.parent_element.innerHTML =\n",
+       "        '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
+       "    fig.close_ws(fig, msg);\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.close_ws = function (fig, msg) {\n",
+       "    fig.send_message('closing', msg);\n",
+       "    // fig.ws.close()\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n",
+       "    // Turn the data on the canvas into data in the output cell.\n",
+       "    var width = this.canvas.width / this.ratio;\n",
+       "    var dataURL = this.canvas.toDataURL();\n",
+       "    this.cell_info[1]['text/html'] =\n",
+       "        '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.updated_canvas_event = function () {\n",
+       "    // Tell IPython that the notebook contents must change.\n",
+       "    IPython.notebook.set_dirty(true);\n",
+       "    this.send_message('ack', {});\n",
+       "    var fig = this;\n",
+       "    // Wait a second, then push the new image to the DOM so\n",
+       "    // that it is saved nicely (might be nice to debounce this).\n",
+       "    setTimeout(function () {\n",
+       "        fig.push_to_output();\n",
+       "    }, 1000);\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype._init_toolbar = function () {\n",
+       "    var fig = this;\n",
+       "\n",
+       "    var toolbar = document.createElement('div');\n",
+       "    toolbar.classList = 'btn-toolbar';\n",
+       "    this.root.appendChild(toolbar);\n",
+       "\n",
+       "    function on_click_closure(name) {\n",
+       "        return function (_event) {\n",
+       "            return fig.toolbar_button_onclick(name);\n",
+       "        };\n",
+       "    }\n",
+       "\n",
+       "    function on_mouseover_closure(tooltip) {\n",
+       "        return function (event) {\n",
+       "            if (!event.currentTarget.disabled) {\n",
+       "                return fig.toolbar_button_onmouseover(tooltip);\n",
+       "            }\n",
+       "        };\n",
+       "    }\n",
+       "\n",
+       "    fig.buttons = {};\n",
+       "    var buttonGroup = document.createElement('div');\n",
+       "    buttonGroup.classList = 'btn-group';\n",
+       "    var button;\n",
+       "    for (var toolbar_ind in mpl.toolbar_items) {\n",
+       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
+       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
+       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
+       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
+       "\n",
+       "        if (!name) {\n",
+       "            /* Instead of a spacer, we start a new button group. */\n",
+       "            if (buttonGroup.hasChildNodes()) {\n",
+       "                toolbar.appendChild(buttonGroup);\n",
+       "            }\n",
+       "            buttonGroup = document.createElement('div');\n",
+       "            buttonGroup.classList = 'btn-group';\n",
+       "            continue;\n",
+       "        }\n",
+       "\n",
+       "        button = fig.buttons[name] = document.createElement('button');\n",
+       "        button.classList = 'btn btn-default';\n",
+       "        button.href = '#';\n",
+       "        button.title = name;\n",
+       "        button.innerHTML = '<i class=\"fa ' + image + ' fa-lg\"></i>';\n",
+       "        button.addEventListener('click', on_click_closure(method_name));\n",
+       "        button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
+       "        buttonGroup.appendChild(button);\n",
+       "    }\n",
+       "\n",
+       "    if (buttonGroup.hasChildNodes()) {\n",
+       "        toolbar.appendChild(buttonGroup);\n",
+       "    }\n",
+       "\n",
+       "    // Add the status bar.\n",
+       "    var status_bar = document.createElement('span');\n",
+       "    status_bar.classList = 'mpl-message pull-right';\n",
+       "    toolbar.appendChild(status_bar);\n",
+       "    this.message = status_bar;\n",
+       "\n",
+       "    // Add the close button to the window.\n",
+       "    var buttongrp = document.createElement('div');\n",
+       "    buttongrp.classList = 'btn-group inline pull-right';\n",
+       "    button = document.createElement('button');\n",
+       "    button.classList = 'btn btn-mini btn-primary';\n",
+       "    button.href = '#';\n",
+       "    button.title = 'Stop Interaction';\n",
+       "    button.innerHTML = '<i class=\"fa fa-power-off icon-remove icon-large\"></i>';\n",
+       "    button.addEventListener('click', function (_evt) {\n",
+       "        fig.handle_close(fig, {});\n",
+       "    });\n",
+       "    button.addEventListener(\n",
+       "        'mouseover',\n",
+       "        on_mouseover_closure('Stop Interaction')\n",
+       "    );\n",
+       "    buttongrp.appendChild(button);\n",
+       "    var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n",
+       "    titlebar.insertBefore(buttongrp, titlebar.firstChild);\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype._remove_fig_handler = function (event) {\n",
+       "    var fig = event.data.fig;\n",
+       "    if (event.target !== this) {\n",
+       "        // Ignore bubbled events from children.\n",
+       "        return;\n",
+       "    }\n",
+       "    fig.close_ws(fig, {});\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype._root_extra_style = function (el) {\n",
+       "    el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype._canvas_extra_style = function (el) {\n",
+       "    // this is important to make the div 'focusable\n",
+       "    el.setAttribute('tabindex', 0);\n",
+       "    // reach out to IPython and tell the keyboard manager to turn it's self\n",
+       "    // off when our div gets focus\n",
+       "\n",
+       "    // location in version 3\n",
+       "    if (IPython.notebook.keyboard_manager) {\n",
+       "        IPython.notebook.keyboard_manager.register_events(el);\n",
+       "    } else {\n",
+       "        // location in version 2\n",
+       "        IPython.keyboard_manager.register_events(el);\n",
+       "    }\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype._key_event_extra = function (event, _name) {\n",
+       "    var manager = IPython.notebook.keyboard_manager;\n",
+       "    if (!manager) {\n",
+       "        manager = IPython.keyboard_manager;\n",
+       "    }\n",
+       "\n",
+       "    // Check for shift+enter\n",
+       "    if (event.shiftKey && event.which === 13) {\n",
+       "        this.canvas_div.blur();\n",
+       "        // select the cell after this one\n",
+       "        var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n",
+       "        IPython.notebook.select(index + 1);\n",
+       "    }\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.handle_save = function (fig, _msg) {\n",
+       "    fig.ondownload(fig, null);\n",
+       "};\n",
+       "\n",
+       "mpl.find_output_cell = function (html_output) {\n",
+       "    // Return the cell and output element which can be found *uniquely* in the notebook.\n",
+       "    // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
+       "    // IPython event is triggered only after the cells have been serialised, which for\n",
+       "    // our purposes (turning an active figure into a static one), is too late.\n",
+       "    var cells = IPython.notebook.get_cells();\n",
+       "    var ncells = cells.length;\n",
+       "    for (var i = 0; i < ncells; i++) {\n",
+       "        var cell = cells[i];\n",
+       "        if (cell.cell_type === 'code') {\n",
+       "            for (var j = 0; j < cell.output_area.outputs.length; j++) {\n",
+       "                var data = cell.output_area.outputs[j];\n",
+       "                if (data.data) {\n",
+       "                    // IPython >= 3 moved mimebundle to data attribute of output\n",
+       "                    data = data.data;\n",
+       "                }\n",
+       "                if (data['text/html'] === html_output) {\n",
+       "                    return [cell, data, j];\n",
+       "                }\n",
+       "            }\n",
+       "        }\n",
+       "    }\n",
+       "};\n",
+       "\n",
+       "// Register the function which deals with the matplotlib target/channel.\n",
+       "// The kernel may be null if the page has been refreshed.\n",
+       "if (IPython.notebook.kernel !== null) {\n",
+       "    IPython.notebook.kernel.comm_manager.register_target(\n",
+       "        'matplotlib',\n",
+       "        mpl.mpl_figure_comm\n",
+       "    );\n",
+       "}\n"
+      ],
+      "text/plain": [
+       "<IPython.core.display.Javascript object>"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/html": [
+       "<img src=\"data:image/png;base64,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\" width=\"640\">"
+      ],
+      "text/plain": [
+       "<IPython.core.display.HTML object>"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "application/javascript": [
+       "/* Put everything inside the global mpl namespace */\n",
+       "/* global mpl */\n",
+       "window.mpl = {};\n",
+       "\n",
+       "mpl.get_websocket_type = function () {\n",
+       "    if (typeof WebSocket !== 'undefined') {\n",
+       "        return WebSocket;\n",
+       "    } else if (typeof MozWebSocket !== 'undefined') {\n",
+       "        return MozWebSocket;\n",
+       "    } else {\n",
+       "        alert(\n",
+       "            'Your browser does not have WebSocket support. ' +\n",
+       "                'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
+       "                'Firefox 4 and 5 are also supported but you ' +\n",
+       "                'have to enable WebSockets in about:config.'\n",
+       "        );\n",
+       "    }\n",
+       "};\n",
+       "\n",
+       "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n",
+       "    this.id = figure_id;\n",
+       "\n",
+       "    this.ws = websocket;\n",
+       "\n",
+       "    this.supports_binary = this.ws.binaryType !== undefined;\n",
+       "\n",
+       "    if (!this.supports_binary) {\n",
+       "        var warnings = document.getElementById('mpl-warnings');\n",
+       "        if (warnings) {\n",
+       "            warnings.style.display = 'block';\n",
+       "            warnings.textContent =\n",
+       "                'This browser does not support binary websocket messages. ' +\n",
+       "                'Performance may be slow.';\n",
+       "        }\n",
+       "    }\n",
+       "\n",
+       "    this.imageObj = new Image();\n",
+       "\n",
+       "    this.context = undefined;\n",
+       "    this.message = undefined;\n",
+       "    this.canvas = undefined;\n",
+       "    this.rubberband_canvas = undefined;\n",
+       "    this.rubberband_context = undefined;\n",
+       "    this.format_dropdown = undefined;\n",
+       "\n",
+       "    this.image_mode = 'full';\n",
+       "\n",
+       "    this.root = document.createElement('div');\n",
+       "    this.root.setAttribute('style', 'display: inline-block');\n",
+       "    this._root_extra_style(this.root);\n",
+       "\n",
+       "    parent_element.appendChild(this.root);\n",
+       "\n",
+       "    this._init_header(this);\n",
+       "    this._init_canvas(this);\n",
+       "    this._init_toolbar(this);\n",
+       "\n",
+       "    var fig = this;\n",
+       "\n",
+       "    this.waiting = false;\n",
+       "\n",
+       "    this.ws.onopen = function () {\n",
+       "        fig.send_message('supports_binary', { value: fig.supports_binary });\n",
+       "        fig.send_message('send_image_mode', {});\n",
+       "        if (fig.ratio !== 1) {\n",
+       "            fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n",
+       "        }\n",
+       "        fig.send_message('refresh', {});\n",
+       "    };\n",
+       "\n",
+       "    this.imageObj.onload = function () {\n",
+       "        if (fig.image_mode === 'full') {\n",
+       "            // Full images could contain transparency (where diff images\n",
+       "            // almost always do), so we need to clear the canvas so that\n",
+       "            // there is no ghosting.\n",
+       "            fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
+       "        }\n",
+       "        fig.context.drawImage(fig.imageObj, 0, 0);\n",
+       "    };\n",
+       "\n",
+       "    this.imageObj.onunload = function () {\n",
+       "        fig.ws.close();\n",
+       "    };\n",
+       "\n",
+       "    this.ws.onmessage = this._make_on_message_function(this);\n",
+       "\n",
+       "    this.ondownload = ondownload;\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype._init_header = function () {\n",
+       "    var titlebar = document.createElement('div');\n",
+       "    titlebar.classList =\n",
+       "        'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n",
+       "    var titletext = document.createElement('div');\n",
+       "    titletext.classList = 'ui-dialog-title';\n",
+       "    titletext.setAttribute(\n",
+       "        'style',\n",
+       "        'width: 100%; text-align: center; padding: 3px;'\n",
+       "    );\n",
+       "    titlebar.appendChild(titletext);\n",
+       "    this.root.appendChild(titlebar);\n",
+       "    this.header = titletext;\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n",
+       "\n",
+       "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n",
+       "\n",
+       "mpl.figure.prototype._init_canvas = function () {\n",
+       "    var fig = this;\n",
+       "\n",
+       "    var canvas_div = (this.canvas_div = document.createElement('div'));\n",
+       "    canvas_div.setAttribute(\n",
+       "        'style',\n",
+       "        'border: 1px solid #ddd;' +\n",
+       "            'box-sizing: content-box;' +\n",
+       "            'clear: both;' +\n",
+       "            'min-height: 1px;' +\n",
+       "            'min-width: 1px;' +\n",
+       "            'outline: 0;' +\n",
+       "            'overflow: hidden;' +\n",
+       "            'position: relative;' +\n",
+       "            'resize: both;'\n",
+       "    );\n",
+       "\n",
+       "    function on_keyboard_event_closure(name) {\n",
+       "        return function (event) {\n",
+       "            return fig.key_event(event, name);\n",
+       "        };\n",
+       "    }\n",
+       "\n",
+       "    canvas_div.addEventListener(\n",
+       "        'keydown',\n",
+       "        on_keyboard_event_closure('key_press')\n",
+       "    );\n",
+       "    canvas_div.addEventListener(\n",
+       "        'keyup',\n",
+       "        on_keyboard_event_closure('key_release')\n",
+       "    );\n",
+       "\n",
+       "    this._canvas_extra_style(canvas_div);\n",
+       "    this.root.appendChild(canvas_div);\n",
+       "\n",
+       "    var canvas = (this.canvas = document.createElement('canvas'));\n",
+       "    canvas.classList.add('mpl-canvas');\n",
+       "    canvas.setAttribute('style', 'box-sizing: content-box;');\n",
+       "\n",
+       "    this.context = canvas.getContext('2d');\n",
+       "\n",
+       "    var backingStore =\n",
+       "        this.context.backingStorePixelRatio ||\n",
+       "        this.context.webkitBackingStorePixelRatio ||\n",
+       "        this.context.mozBackingStorePixelRatio ||\n",
+       "        this.context.msBackingStorePixelRatio ||\n",
+       "        this.context.oBackingStorePixelRatio ||\n",
+       "        this.context.backingStorePixelRatio ||\n",
+       "        1;\n",
+       "\n",
+       "    this.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
+       "\n",
+       "    var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n",
+       "        'canvas'\n",
+       "    ));\n",
+       "    rubberband_canvas.setAttribute(\n",
+       "        'style',\n",
+       "        'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n",
+       "    );\n",
+       "\n",
+       "    // Apply a ponyfill if ResizeObserver is not implemented by browser.\n",
+       "    if (this.ResizeObserver === undefined) {\n",
+       "        if (window.ResizeObserver !== undefined) {\n",
+       "            this.ResizeObserver = window.ResizeObserver;\n",
+       "        } else {\n",
+       "            var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n",
+       "            this.ResizeObserver = obs.ResizeObserver;\n",
+       "        }\n",
+       "    }\n",
+       "\n",
+       "    this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n",
+       "        var nentries = entries.length;\n",
+       "        for (var i = 0; i < nentries; i++) {\n",
+       "            var entry = entries[i];\n",
+       "            var width, height;\n",
+       "            if (entry.contentBoxSize) {\n",
+       "                if (entry.contentBoxSize instanceof Array) {\n",
+       "                    // Chrome 84 implements new version of spec.\n",
+       "                    width = entry.contentBoxSize[0].inlineSize;\n",
+       "                    height = entry.contentBoxSize[0].blockSize;\n",
+       "                } else {\n",
+       "                    // Firefox implements old version of spec.\n",
+       "                    width = entry.contentBoxSize.inlineSize;\n",
+       "                    height = entry.contentBoxSize.blockSize;\n",
+       "                }\n",
+       "            } else {\n",
+       "                // Chrome <84 implements even older version of spec.\n",
+       "                width = entry.contentRect.width;\n",
+       "                height = entry.contentRect.height;\n",
+       "            }\n",
+       "\n",
+       "            // Keep the size of the canvas and rubber band canvas in sync with\n",
+       "            // the canvas container.\n",
+       "            if (entry.devicePixelContentBoxSize) {\n",
+       "                // Chrome 84 implements new version of spec.\n",
+       "                canvas.setAttribute(\n",
+       "                    'width',\n",
+       "                    entry.devicePixelContentBoxSize[0].inlineSize\n",
+       "                );\n",
+       "                canvas.setAttribute(\n",
+       "                    'height',\n",
+       "                    entry.devicePixelContentBoxSize[0].blockSize\n",
+       "                );\n",
+       "            } else {\n",
+       "                canvas.setAttribute('width', width * fig.ratio);\n",
+       "                canvas.setAttribute('height', height * fig.ratio);\n",
+       "            }\n",
+       "            canvas.setAttribute(\n",
+       "                'style',\n",
+       "                'width: ' + width + 'px; height: ' + height + 'px;'\n",
+       "            );\n",
+       "\n",
+       "            rubberband_canvas.setAttribute('width', width);\n",
+       "            rubberband_canvas.setAttribute('height', height);\n",
+       "\n",
+       "            // And update the size in Python. We ignore the initial 0/0 size\n",
+       "            // that occurs as the element is placed into the DOM, which should\n",
+       "            // otherwise not happen due to the minimum size styling.\n",
+       "            if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n",
+       "                fig.request_resize(width, height);\n",
+       "            }\n",
+       "        }\n",
+       "    });\n",
+       "    this.resizeObserverInstance.observe(canvas_div);\n",
+       "\n",
+       "    function on_mouse_event_closure(name) {\n",
+       "        return function (event) {\n",
+       "            return fig.mouse_event(event, name);\n",
+       "        };\n",
+       "    }\n",
+       "\n",
+       "    rubberband_canvas.addEventListener(\n",
+       "        'mousedown',\n",
+       "        on_mouse_event_closure('button_press')\n",
+       "    );\n",
+       "    rubberband_canvas.addEventListener(\n",
+       "        'mouseup',\n",
+       "        on_mouse_event_closure('button_release')\n",
+       "    );\n",
+       "    // Throttle sequential mouse events to 1 every 20ms.\n",
+       "    rubberband_canvas.addEventListener(\n",
+       "        'mousemove',\n",
+       "        on_mouse_event_closure('motion_notify')\n",
+       "    );\n",
+       "\n",
+       "    rubberband_canvas.addEventListener(\n",
+       "        'mouseenter',\n",
+       "        on_mouse_event_closure('figure_enter')\n",
+       "    );\n",
+       "    rubberband_canvas.addEventListener(\n",
+       "        'mouseleave',\n",
+       "        on_mouse_event_closure('figure_leave')\n",
+       "    );\n",
+       "\n",
+       "    canvas_div.addEventListener('wheel', function (event) {\n",
+       "        if (event.deltaY < 0) {\n",
+       "            event.step = 1;\n",
+       "        } else {\n",
+       "            event.step = -1;\n",
+       "        }\n",
+       "        on_mouse_event_closure('scroll')(event);\n",
+       "    });\n",
+       "\n",
+       "    canvas_div.appendChild(canvas);\n",
+       "    canvas_div.appendChild(rubberband_canvas);\n",
+       "\n",
+       "    this.rubberband_context = rubberband_canvas.getContext('2d');\n",
+       "    this.rubberband_context.strokeStyle = '#000000';\n",
+       "\n",
+       "    this._resize_canvas = function (width, height, forward) {\n",
+       "        if (forward) {\n",
+       "            canvas_div.style.width = width + 'px';\n",
+       "            canvas_div.style.height = height + 'px';\n",
+       "        }\n",
+       "    };\n",
+       "\n",
+       "    // Disable right mouse context menu.\n",
+       "    this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n",
+       "        event.preventDefault();\n",
+       "        return false;\n",
+       "    });\n",
+       "\n",
+       "    function set_focus() {\n",
+       "        canvas.focus();\n",
+       "        canvas_div.focus();\n",
+       "    }\n",
+       "\n",
+       "    window.setTimeout(set_focus, 100);\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype._init_toolbar = function () {\n",
+       "    var fig = this;\n",
+       "\n",
+       "    var toolbar = document.createElement('div');\n",
+       "    toolbar.classList = 'mpl-toolbar';\n",
+       "    this.root.appendChild(toolbar);\n",
+       "\n",
+       "    function on_click_closure(name) {\n",
+       "        return function (_event) {\n",
+       "            return fig.toolbar_button_onclick(name);\n",
+       "        };\n",
+       "    }\n",
+       "\n",
+       "    function on_mouseover_closure(tooltip) {\n",
+       "        return function (event) {\n",
+       "            if (!event.currentTarget.disabled) {\n",
+       "                return fig.toolbar_button_onmouseover(tooltip);\n",
+       "            }\n",
+       "        };\n",
+       "    }\n",
+       "\n",
+       "    fig.buttons = {};\n",
+       "    var buttonGroup = document.createElement('div');\n",
+       "    buttonGroup.classList = 'mpl-button-group';\n",
+       "    for (var toolbar_ind in mpl.toolbar_items) {\n",
+       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
+       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
+       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
+       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
+       "\n",
+       "        if (!name) {\n",
+       "            /* Instead of a spacer, we start a new button group. */\n",
+       "            if (buttonGroup.hasChildNodes()) {\n",
+       "                toolbar.appendChild(buttonGroup);\n",
+       "            }\n",
+       "            buttonGroup = document.createElement('div');\n",
+       "            buttonGroup.classList = 'mpl-button-group';\n",
+       "            continue;\n",
+       "        }\n",
+       "\n",
+       "        var button = (fig.buttons[name] = document.createElement('button'));\n",
+       "        button.classList = 'mpl-widget';\n",
+       "        button.setAttribute('role', 'button');\n",
+       "        button.setAttribute('aria-disabled', 'false');\n",
+       "        button.addEventListener('click', on_click_closure(method_name));\n",
+       "        button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
+       "\n",
+       "        var icon_img = document.createElement('img');\n",
+       "        icon_img.src = '_images/' + image + '.png';\n",
+       "        icon_img.srcset = '_images/' + image + '_large.png 2x';\n",
+       "        icon_img.alt = tooltip;\n",
+       "        button.appendChild(icon_img);\n",
+       "\n",
+       "        buttonGroup.appendChild(button);\n",
+       "    }\n",
+       "\n",
+       "    if (buttonGroup.hasChildNodes()) {\n",
+       "        toolbar.appendChild(buttonGroup);\n",
+       "    }\n",
+       "\n",
+       "    var fmt_picker = document.createElement('select');\n",
+       "    fmt_picker.classList = 'mpl-widget';\n",
+       "    toolbar.appendChild(fmt_picker);\n",
+       "    this.format_dropdown = fmt_picker;\n",
+       "\n",
+       "    for (var ind in mpl.extensions) {\n",
+       "        var fmt = mpl.extensions[ind];\n",
+       "        var option = document.createElement('option');\n",
+       "        option.selected = fmt === mpl.default_extension;\n",
+       "        option.innerHTML = fmt;\n",
+       "        fmt_picker.appendChild(option);\n",
+       "    }\n",
+       "\n",
+       "    var status_bar = document.createElement('span');\n",
+       "    status_bar.classList = 'mpl-message';\n",
+       "    toolbar.appendChild(status_bar);\n",
+       "    this.message = status_bar;\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n",
+       "    // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
+       "    // which will in turn request a refresh of the image.\n",
+       "    this.send_message('resize', { width: x_pixels, height: y_pixels });\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.send_message = function (type, properties) {\n",
+       "    properties['type'] = type;\n",
+       "    properties['figure_id'] = this.id;\n",
+       "    this.ws.send(JSON.stringify(properties));\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.send_draw_message = function () {\n",
+       "    if (!this.waiting) {\n",
+       "        this.waiting = true;\n",
+       "        this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n",
+       "    }\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.handle_save = function (fig, _msg) {\n",
+       "    var format_dropdown = fig.format_dropdown;\n",
+       "    var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
+       "    fig.ondownload(fig, format);\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.handle_resize = function (fig, msg) {\n",
+       "    var size = msg['size'];\n",
+       "    if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n",
+       "        fig._resize_canvas(size[0], size[1], msg['forward']);\n",
+       "        fig.send_message('refresh', {});\n",
+       "    }\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n",
+       "    var x0 = msg['x0'] / fig.ratio;\n",
+       "    var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n",
+       "    var x1 = msg['x1'] / fig.ratio;\n",
+       "    var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n",
+       "    x0 = Math.floor(x0) + 0.5;\n",
+       "    y0 = Math.floor(y0) + 0.5;\n",
+       "    x1 = Math.floor(x1) + 0.5;\n",
+       "    y1 = Math.floor(y1) + 0.5;\n",
+       "    var min_x = Math.min(x0, x1);\n",
+       "    var min_y = Math.min(y0, y1);\n",
+       "    var width = Math.abs(x1 - x0);\n",
+       "    var height = Math.abs(y1 - y0);\n",
+       "\n",
+       "    fig.rubberband_context.clearRect(\n",
+       "        0,\n",
+       "        0,\n",
+       "        fig.canvas.width / fig.ratio,\n",
+       "        fig.canvas.height / fig.ratio\n",
+       "    );\n",
+       "\n",
+       "    fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n",
+       "    // Updates the figure title.\n",
+       "    fig.header.textContent = msg['label'];\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n",
+       "    var cursor = msg['cursor'];\n",
+       "    switch (cursor) {\n",
+       "        case 0:\n",
+       "            cursor = 'pointer';\n",
+       "            break;\n",
+       "        case 1:\n",
+       "            cursor = 'default';\n",
+       "            break;\n",
+       "        case 2:\n",
+       "            cursor = 'crosshair';\n",
+       "            break;\n",
+       "        case 3:\n",
+       "            cursor = 'move';\n",
+       "            break;\n",
+       "    }\n",
+       "    fig.rubberband_canvas.style.cursor = cursor;\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.handle_message = function (fig, msg) {\n",
+       "    fig.message.textContent = msg['message'];\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n",
+       "    // Request the server to send over a new figure.\n",
+       "    fig.send_draw_message();\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n",
+       "    fig.image_mode = msg['mode'];\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n",
+       "    for (var key in msg) {\n",
+       "        if (!(key in fig.buttons)) {\n",
+       "            continue;\n",
+       "        }\n",
+       "        fig.buttons[key].disabled = !msg[key];\n",
+       "        fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n",
+       "    }\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n",
+       "    if (msg['mode'] === 'PAN') {\n",
+       "        fig.buttons['Pan'].classList.add('active');\n",
+       "        fig.buttons['Zoom'].classList.remove('active');\n",
+       "    } else if (msg['mode'] === 'ZOOM') {\n",
+       "        fig.buttons['Pan'].classList.remove('active');\n",
+       "        fig.buttons['Zoom'].classList.add('active');\n",
+       "    } else {\n",
+       "        fig.buttons['Pan'].classList.remove('active');\n",
+       "        fig.buttons['Zoom'].classList.remove('active');\n",
+       "    }\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.updated_canvas_event = function () {\n",
+       "    // Called whenever the canvas gets updated.\n",
+       "    this.send_message('ack', {});\n",
+       "};\n",
+       "\n",
+       "// A function to construct a web socket function for onmessage handling.\n",
+       "// Called in the figure constructor.\n",
+       "mpl.figure.prototype._make_on_message_function = function (fig) {\n",
+       "    return function socket_on_message(evt) {\n",
+       "        if (evt.data instanceof Blob) {\n",
+       "            /* FIXME: We get \"Resource interpreted as Image but\n",
+       "             * transferred with MIME type text/plain:\" errors on\n",
+       "             * Chrome.  But how to set the MIME type?  It doesn't seem\n",
+       "             * to be part of the websocket stream */\n",
+       "            evt.data.type = 'image/png';\n",
+       "\n",
+       "            /* Free the memory for the previous frames */\n",
+       "            if (fig.imageObj.src) {\n",
+       "                (window.URL || window.webkitURL).revokeObjectURL(\n",
+       "                    fig.imageObj.src\n",
+       "                );\n",
+       "            }\n",
+       "\n",
+       "            fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
+       "                evt.data\n",
+       "            );\n",
+       "            fig.updated_canvas_event();\n",
+       "            fig.waiting = false;\n",
+       "            return;\n",
+       "        } else if (\n",
+       "            typeof evt.data === 'string' &&\n",
+       "            evt.data.slice(0, 21) === 'data:image/png;base64'\n",
+       "        ) {\n",
+       "            fig.imageObj.src = evt.data;\n",
+       "            fig.updated_canvas_event();\n",
+       "            fig.waiting = false;\n",
+       "            return;\n",
+       "        }\n",
+       "\n",
+       "        var msg = JSON.parse(evt.data);\n",
+       "        var msg_type = msg['type'];\n",
+       "\n",
+       "        // Call the  \"handle_{type}\" callback, which takes\n",
+       "        // the figure and JSON message as its only arguments.\n",
+       "        try {\n",
+       "            var callback = fig['handle_' + msg_type];\n",
+       "        } catch (e) {\n",
+       "            console.log(\n",
+       "                \"No handler for the '\" + msg_type + \"' message type: \",\n",
+       "                msg\n",
+       "            );\n",
+       "            return;\n",
+       "        }\n",
+       "\n",
+       "        if (callback) {\n",
+       "            try {\n",
+       "                // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
+       "                callback(fig, msg);\n",
+       "            } catch (e) {\n",
+       "                console.log(\n",
+       "                    \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n",
+       "                    e,\n",
+       "                    e.stack,\n",
+       "                    msg\n",
+       "                );\n",
+       "            }\n",
+       "        }\n",
+       "    };\n",
+       "};\n",
+       "\n",
+       "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
+       "mpl.findpos = function (e) {\n",
+       "    //this section is from http://www.quirksmode.org/js/events_properties.html\n",
+       "    var targ;\n",
+       "    if (!e) {\n",
+       "        e = window.event;\n",
+       "    }\n",
+       "    if (e.target) {\n",
+       "        targ = e.target;\n",
+       "    } else if (e.srcElement) {\n",
+       "        targ = e.srcElement;\n",
+       "    }\n",
+       "    if (targ.nodeType === 3) {\n",
+       "        // defeat Safari bug\n",
+       "        targ = targ.parentNode;\n",
+       "    }\n",
+       "\n",
+       "    // pageX,Y are the mouse positions relative to the document\n",
+       "    var boundingRect = targ.getBoundingClientRect();\n",
+       "    var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n",
+       "    var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n",
+       "\n",
+       "    return { x: x, y: y };\n",
+       "};\n",
+       "\n",
+       "/*\n",
+       " * return a copy of an object with only non-object keys\n",
+       " * we need this to avoid circular references\n",
+       " * http://stackoverflow.com/a/24161582/3208463\n",
+       " */\n",
+       "function simpleKeys(original) {\n",
+       "    return Object.keys(original).reduce(function (obj, key) {\n",
+       "        if (typeof original[key] !== 'object') {\n",
+       "            obj[key] = original[key];\n",
+       "        }\n",
+       "        return obj;\n",
+       "    }, {});\n",
+       "}\n",
+       "\n",
+       "mpl.figure.prototype.mouse_event = function (event, name) {\n",
+       "    var canvas_pos = mpl.findpos(event);\n",
+       "\n",
+       "    if (name === 'button_press') {\n",
+       "        this.canvas.focus();\n",
+       "        this.canvas_div.focus();\n",
+       "    }\n",
+       "\n",
+       "    var x = canvas_pos.x * this.ratio;\n",
+       "    var y = canvas_pos.y * this.ratio;\n",
+       "\n",
+       "    this.send_message(name, {\n",
+       "        x: x,\n",
+       "        y: y,\n",
+       "        button: event.button,\n",
+       "        step: event.step,\n",
+       "        guiEvent: simpleKeys(event),\n",
+       "    });\n",
+       "\n",
+       "    /* This prevents the web browser from automatically changing to\n",
+       "     * the text insertion cursor when the button is pressed.  We want\n",
+       "     * to control all of the cursor setting manually through the\n",
+       "     * 'cursor' event from matplotlib */\n",
+       "    event.preventDefault();\n",
+       "    return false;\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n",
+       "    // Handle any extra behaviour associated with a key event\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.key_event = function (event, name) {\n",
+       "    // Prevent repeat events\n",
+       "    if (name === 'key_press') {\n",
+       "        if (event.which === this._key) {\n",
+       "            return;\n",
+       "        } else {\n",
+       "            this._key = event.which;\n",
+       "        }\n",
+       "    }\n",
+       "    if (name === 'key_release') {\n",
+       "        this._key = null;\n",
+       "    }\n",
+       "\n",
+       "    var value = '';\n",
+       "    if (event.ctrlKey && event.which !== 17) {\n",
+       "        value += 'ctrl+';\n",
+       "    }\n",
+       "    if (event.altKey && event.which !== 18) {\n",
+       "        value += 'alt+';\n",
+       "    }\n",
+       "    if (event.shiftKey && event.which !== 16) {\n",
+       "        value += 'shift+';\n",
+       "    }\n",
+       "\n",
+       "    value += 'k';\n",
+       "    value += event.which.toString();\n",
+       "\n",
+       "    this._key_event_extra(event, name);\n",
+       "\n",
+       "    this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n",
+       "    return false;\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n",
+       "    if (name === 'download') {\n",
+       "        this.handle_save(this, null);\n",
+       "    } else {\n",
+       "        this.send_message('toolbar_button', { name: name });\n",
+       "    }\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n",
+       "    this.message.textContent = tooltip;\n",
+       "};\n",
+       "\n",
+       "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n",
+       "// prettier-ignore\n",
+       "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\n",
+       "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
+       "\n",
+       "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
+       "\n",
+       "mpl.default_extension = \"png\";/* global mpl */\n",
+       "\n",
+       "var comm_websocket_adapter = function (comm) {\n",
+       "    // Create a \"websocket\"-like object which calls the given IPython comm\n",
+       "    // object with the appropriate methods. Currently this is a non binary\n",
+       "    // socket, so there is still some room for performance tuning.\n",
+       "    var ws = {};\n",
+       "\n",
+       "    ws.close = function () {\n",
+       "        comm.close();\n",
+       "    };\n",
+       "    ws.send = function (m) {\n",
+       "        //console.log('sending', m);\n",
+       "        comm.send(m);\n",
+       "    };\n",
+       "    // Register the callback with on_msg.\n",
+       "    comm.on_msg(function (msg) {\n",
+       "        //console.log('receiving', msg['content']['data'], msg);\n",
+       "        // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
+       "        ws.onmessage(msg['content']['data']);\n",
+       "    });\n",
+       "    return ws;\n",
+       "};\n",
+       "\n",
+       "mpl.mpl_figure_comm = function (comm, msg) {\n",
+       "    // This is the function which gets called when the mpl process\n",
+       "    // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
+       "\n",
+       "    var id = msg.content.data.id;\n",
+       "    // Get hold of the div created by the display call when the Comm\n",
+       "    // socket was opened in Python.\n",
+       "    var element = document.getElementById(id);\n",
+       "    var ws_proxy = comm_websocket_adapter(comm);\n",
+       "\n",
+       "    function ondownload(figure, _format) {\n",
+       "        window.open(figure.canvas.toDataURL());\n",
+       "    }\n",
+       "\n",
+       "    var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n",
+       "\n",
+       "    // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
+       "    // web socket which is closed, not our websocket->open comm proxy.\n",
+       "    ws_proxy.onopen();\n",
+       "\n",
+       "    fig.parent_element = element;\n",
+       "    fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
+       "    if (!fig.cell_info) {\n",
+       "        console.error('Failed to find cell for figure', id, fig);\n",
+       "        return;\n",
+       "    }\n",
+       "    fig.cell_info[0].output_area.element.on(\n",
+       "        'cleared',\n",
+       "        { fig: fig },\n",
+       "        fig._remove_fig_handler\n",
+       "    );\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.handle_close = function (fig, msg) {\n",
+       "    var width = fig.canvas.width / fig.ratio;\n",
+       "    fig.cell_info[0].output_area.element.off(\n",
+       "        'cleared',\n",
+       "        fig._remove_fig_handler\n",
+       "    );\n",
+       "    fig.resizeObserverInstance.unobserve(fig.canvas_div);\n",
+       "\n",
+       "    // Update the output cell to use the data from the current canvas.\n",
+       "    fig.push_to_output();\n",
+       "    var dataURL = fig.canvas.toDataURL();\n",
+       "    // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
+       "    // the notebook keyboard shortcuts fail.\n",
+       "    IPython.keyboard_manager.enable();\n",
+       "    fig.parent_element.innerHTML =\n",
+       "        '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
+       "    fig.close_ws(fig, msg);\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.close_ws = function (fig, msg) {\n",
+       "    fig.send_message('closing', msg);\n",
+       "    // fig.ws.close()\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n",
+       "    // Turn the data on the canvas into data in the output cell.\n",
+       "    var width = this.canvas.width / this.ratio;\n",
+       "    var dataURL = this.canvas.toDataURL();\n",
+       "    this.cell_info[1]['text/html'] =\n",
+       "        '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.updated_canvas_event = function () {\n",
+       "    // Tell IPython that the notebook contents must change.\n",
+       "    IPython.notebook.set_dirty(true);\n",
+       "    this.send_message('ack', {});\n",
+       "    var fig = this;\n",
+       "    // Wait a second, then push the new image to the DOM so\n",
+       "    // that it is saved nicely (might be nice to debounce this).\n",
+       "    setTimeout(function () {\n",
+       "        fig.push_to_output();\n",
+       "    }, 1000);\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype._init_toolbar = function () {\n",
+       "    var fig = this;\n",
+       "\n",
+       "    var toolbar = document.createElement('div');\n",
+       "    toolbar.classList = 'btn-toolbar';\n",
+       "    this.root.appendChild(toolbar);\n",
+       "\n",
+       "    function on_click_closure(name) {\n",
+       "        return function (_event) {\n",
+       "            return fig.toolbar_button_onclick(name);\n",
+       "        };\n",
+       "    }\n",
+       "\n",
+       "    function on_mouseover_closure(tooltip) {\n",
+       "        return function (event) {\n",
+       "            if (!event.currentTarget.disabled) {\n",
+       "                return fig.toolbar_button_onmouseover(tooltip);\n",
+       "            }\n",
+       "        };\n",
+       "    }\n",
+       "\n",
+       "    fig.buttons = {};\n",
+       "    var buttonGroup = document.createElement('div');\n",
+       "    buttonGroup.classList = 'btn-group';\n",
+       "    var button;\n",
+       "    for (var toolbar_ind in mpl.toolbar_items) {\n",
+       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
+       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
+       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
+       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
+       "\n",
+       "        if (!name) {\n",
+       "            /* Instead of a spacer, we start a new button group. */\n",
+       "            if (buttonGroup.hasChildNodes()) {\n",
+       "                toolbar.appendChild(buttonGroup);\n",
+       "            }\n",
+       "            buttonGroup = document.createElement('div');\n",
+       "            buttonGroup.classList = 'btn-group';\n",
+       "            continue;\n",
+       "        }\n",
+       "\n",
+       "        button = fig.buttons[name] = document.createElement('button');\n",
+       "        button.classList = 'btn btn-default';\n",
+       "        button.href = '#';\n",
+       "        button.title = name;\n",
+       "        button.innerHTML = '<i class=\"fa ' + image + ' fa-lg\"></i>';\n",
+       "        button.addEventListener('click', on_click_closure(method_name));\n",
+       "        button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
+       "        buttonGroup.appendChild(button);\n",
+       "    }\n",
+       "\n",
+       "    if (buttonGroup.hasChildNodes()) {\n",
+       "        toolbar.appendChild(buttonGroup);\n",
+       "    }\n",
+       "\n",
+       "    // Add the status bar.\n",
+       "    var status_bar = document.createElement('span');\n",
+       "    status_bar.classList = 'mpl-message pull-right';\n",
+       "    toolbar.appendChild(status_bar);\n",
+       "    this.message = status_bar;\n",
+       "\n",
+       "    // Add the close button to the window.\n",
+       "    var buttongrp = document.createElement('div');\n",
+       "    buttongrp.classList = 'btn-group inline pull-right';\n",
+       "    button = document.createElement('button');\n",
+       "    button.classList = 'btn btn-mini btn-primary';\n",
+       "    button.href = '#';\n",
+       "    button.title = 'Stop Interaction';\n",
+       "    button.innerHTML = '<i class=\"fa fa-power-off icon-remove icon-large\"></i>';\n",
+       "    button.addEventListener('click', function (_evt) {\n",
+       "        fig.handle_close(fig, {});\n",
+       "    });\n",
+       "    button.addEventListener(\n",
+       "        'mouseover',\n",
+       "        on_mouseover_closure('Stop Interaction')\n",
+       "    );\n",
+       "    buttongrp.appendChild(button);\n",
+       "    var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n",
+       "    titlebar.insertBefore(buttongrp, titlebar.firstChild);\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype._remove_fig_handler = function (event) {\n",
+       "    var fig = event.data.fig;\n",
+       "    if (event.target !== this) {\n",
+       "        // Ignore bubbled events from children.\n",
+       "        return;\n",
+       "    }\n",
+       "    fig.close_ws(fig, {});\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype._root_extra_style = function (el) {\n",
+       "    el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype._canvas_extra_style = function (el) {\n",
+       "    // this is important to make the div 'focusable\n",
+       "    el.setAttribute('tabindex', 0);\n",
+       "    // reach out to IPython and tell the keyboard manager to turn it's self\n",
+       "    // off when our div gets focus\n",
+       "\n",
+       "    // location in version 3\n",
+       "    if (IPython.notebook.keyboard_manager) {\n",
+       "        IPython.notebook.keyboard_manager.register_events(el);\n",
+       "    } else {\n",
+       "        // location in version 2\n",
+       "        IPython.keyboard_manager.register_events(el);\n",
+       "    }\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype._key_event_extra = function (event, _name) {\n",
+       "    var manager = IPython.notebook.keyboard_manager;\n",
+       "    if (!manager) {\n",
+       "        manager = IPython.keyboard_manager;\n",
+       "    }\n",
+       "\n",
+       "    // Check for shift+enter\n",
+       "    if (event.shiftKey && event.which === 13) {\n",
+       "        this.canvas_div.blur();\n",
+       "        // select the cell after this one\n",
+       "        var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n",
+       "        IPython.notebook.select(index + 1);\n",
+       "    }\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.handle_save = function (fig, _msg) {\n",
+       "    fig.ondownload(fig, null);\n",
+       "};\n",
+       "\n",
+       "mpl.find_output_cell = function (html_output) {\n",
+       "    // Return the cell and output element which can be found *uniquely* in the notebook.\n",
+       "    // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
+       "    // IPython event is triggered only after the cells have been serialised, which for\n",
+       "    // our purposes (turning an active figure into a static one), is too late.\n",
+       "    var cells = IPython.notebook.get_cells();\n",
+       "    var ncells = cells.length;\n",
+       "    for (var i = 0; i < ncells; i++) {\n",
+       "        var cell = cells[i];\n",
+       "        if (cell.cell_type === 'code') {\n",
+       "            for (var j = 0; j < cell.output_area.outputs.length; j++) {\n",
+       "                var data = cell.output_area.outputs[j];\n",
+       "                if (data.data) {\n",
+       "                    // IPython >= 3 moved mimebundle to data attribute of output\n",
+       "                    data = data.data;\n",
+       "                }\n",
+       "                if (data['text/html'] === html_output) {\n",
+       "                    return [cell, data, j];\n",
+       "                }\n",
+       "            }\n",
+       "        }\n",
+       "    }\n",
+       "};\n",
+       "\n",
+       "// Register the function which deals with the matplotlib target/channel.\n",
+       "// The kernel may be null if the page has been refreshed.\n",
+       "if (IPython.notebook.kernel !== null) {\n",
+       "    IPython.notebook.kernel.comm_manager.register_target(\n",
+       "        'matplotlib',\n",
+       "        mpl.mpl_figure_comm\n",
+       "    );\n",
+       "}\n"
+      ],
+      "text/plain": [
+       "<IPython.core.display.Javascript object>"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/html": [
+       "<img src=\"data:image/png;base64,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8+ejf//+WLNmDbKzs/Hiiy+iZ8+ekCQJAFBeXo7LL78czz33HMrLy9HU1NThM8rKynDWWWdh/vz5KCwsRFpaGj7++GP1tb///e/x/vvvq693OBwYPHiwGnyXLl2Knj174qabbkJ8fDwSExPxhz/8Affff7/6nj179mDlypXIyspCZmYmHnnkEZx//vlobGxUX6PT6XDuuefiiy++QE5ODl599VX06NEDmZmZAIAPPvgAw4cPx88//4yioiIcOHAAX3/9tfr+m266CXfeeSfi4+MhSRKee+45nHvuuaitrQUAXH755Zg0aRKysrIgSRLWrVvXLiASUXBiACQiNQACwOjRo/Hwww8DOPMAOGLECLjdbvWxSy+9FH//+9/Vn10uF/r06YM1a9YA+DUAzp07V32N0+nEhRdeiPfeew8A8Pbbb+OWW25p991msxk6nQ45OTkA2gLg1Vdffcrfd+jQoZgzZ067x6655ho8+eST6s9XXnnlCY/8AUBiYiJ0Oh2Kioo6ff69997DH/7wB/Xnb7/9Fn379kVzczOAtgCo0+mQl5envubjjz/G+eeff8LvdLvd6NevH77//nv1MZ1Oh+nTp7d73V//+lc88cQTAICnn34a//znP6EoSofPO3DgAPr37w+bzdbu8d/+9rf47LPPAAD9+vXDsmXLTlgTEQUnBkAiahcA9+/frx5BOtMAePvtt7d7zfXXX98uXAFAVFQUFi5cCODXALh///52r/nXv/6FqVOnAgDuvvtu9OzZE3369Gm36XQ6bN26FUBbAJw2bdpJf9eGhgbodLoOp5dnzpzZ7mjiqQKgy+XC2LFj0a9fP9x99934/PPP210/WVlZiZ49e0IIAQC488471WANtAXA3r17t/vMjRs3olu3burPFRUVmDZtGn73u9+hf//+6NOnD7p164aPP/5YfY1Op8Py5cs7/C5HT38nJibinHPOwSWXXIKnn34aO3bsUF+3ePFidO/evcM+7d69O1588UUAbX/mZ511FsaOHYt33323XWAlouDFAEhE7QIgANx+++0YN25chwD45ptv4k9/+lO7977//vudXgN4rBtuuAEzZsxo99iIESOwYMECAF0LgLfddhsmTJiA3NzcDtvRo2qdfc/xvBUAAUBRFBw8eBCvv/46/vjHP2LIkCEoKChQn58wYQIee+wxVFRU4KyzzsLBgwfV545eA3is4/f3rbfeipEjR+LHH3/E4cOHkZubi8GDB6v7DTh1ADz6O69duxbTpk3DgAED8O9//xsAMHfuXAwbNqzTfXrstZU5OTmYP38+br75ZkRERGDjxo0n3S9EFPgYAImoQ2hLS0tTjwIdG0iWLFmC8847r93pxPvvv99rAfDo6V6g7RTw8OHD1cdeeeUVXHrppXA6nSf8PboSAIETnwKOjo5Wf+5KADyWy+XCsGHDMG/ePPWxrVu3YsCAAXjrrbdw6aWXtnt9VwJg3759sWLFCvXnkpIS6HS6DgHw6Oneo0aPHt3hsaO2b98OnU6H2tpa7Ny5Ez169EBhYWGXf8/77rsPd955Z5dfT0SBiQGQiDoNbQ8++CB69erVLpBkZmaiW7dumDt3LvLy8rB48WIMGjTIawEwKioKGzduRFZWFh577DH07dtXPRIlyzKGDBmCu+++G3FxccjLy8P27dsxdepUuFyuE35PZxYsWID+/ftj7dq1yM7OxksvvdTuJhDg1AEwJiYGc+bMQXx8PIqLi7Fu3TpERESop6OBtmv2hg8fjoiIiHbXNwJdC4BXX301br75ZmRmZiImJgZ///vfcfbZZ3cIgIMHD8ZXX32FnJwcvP766+jevTsyMjIAAPPmzcPXX3+NrKws5OTk4JFHHsEFF1wAt9sNRVFw3XXX4corr8SOHTtQWFiIQ4cO4ZVXXkF8fDxaW1sRHR2Nn376CUVFRTh48CB++9vfqqeHiSh4MQASUaehrbCwEBERER3mAfzkk08wfPhw9OnTB5MnT8acOXO8FgC//vprjBo1ChEREfh//+//Ye/eve3eI0kSxo8fj4EDB+Lss8/GZZddhpkzZ6pHJLsaAN1uN9544w0MGzYMPXv27DANDHDqAJiZmYlbb70VQ4YMQWRkJH7/+99j0aJFHV732muvoUePHu2mdwG6FgCTkpIwcuRI9OrVC5dccgnWr1/fbr8BbQHw448/xs0334zIyEhcdNFF+Oabb9TnP//8c1x11VXo06cP+vfvj7FjxyIpKUl9vrGxEU8//TSGDh2Knj17Yvjw4XjggQdQUlICu92O++67Tw2xQ4cOxVNPPQWr1XryHUxEAY8BkIjIhx5++GGfnjLV6XTYtGmTzz6fiEITAyARkQ/U19fjwIED6NWrF3bu3Omz72EAJKIzwQBIROQDN9xwA84++2zMnDnTp9/DAEhEZ4IBkIiIiCjMMAASERERhRkGQCIiIqIwwwBIREREFGYYAImIiIjCDAMgERERUZhhACQiIiIKMwyARERERGGGAZCIiIgozDAAEhEREYWZ/w8vKQaNpSAQoQAAAABJRU5ErkJggg==\" width=\"640\">"
+      ],
+      "text/plain": [
+       "<IPython.core.display.HTML object>"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "application/javascript": [
+       "/* Put everything inside the global mpl namespace */\n",
+       "/* global mpl */\n",
+       "window.mpl = {};\n",
+       "\n",
+       "mpl.get_websocket_type = function () {\n",
+       "    if (typeof WebSocket !== 'undefined') {\n",
+       "        return WebSocket;\n",
+       "    } else if (typeof MozWebSocket !== 'undefined') {\n",
+       "        return MozWebSocket;\n",
+       "    } else {\n",
+       "        alert(\n",
+       "            'Your browser does not have WebSocket support. ' +\n",
+       "                'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
+       "                'Firefox 4 and 5 are also supported but you ' +\n",
+       "                'have to enable WebSockets in about:config.'\n",
+       "        );\n",
+       "    }\n",
+       "};\n",
+       "\n",
+       "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n",
+       "    this.id = figure_id;\n",
+       "\n",
+       "    this.ws = websocket;\n",
+       "\n",
+       "    this.supports_binary = this.ws.binaryType !== undefined;\n",
+       "\n",
+       "    if (!this.supports_binary) {\n",
+       "        var warnings = document.getElementById('mpl-warnings');\n",
+       "        if (warnings) {\n",
+       "            warnings.style.display = 'block';\n",
+       "            warnings.textContent =\n",
+       "                'This browser does not support binary websocket messages. ' +\n",
+       "                'Performance may be slow.';\n",
+       "        }\n",
+       "    }\n",
+       "\n",
+       "    this.imageObj = new Image();\n",
+       "\n",
+       "    this.context = undefined;\n",
+       "    this.message = undefined;\n",
+       "    this.canvas = undefined;\n",
+       "    this.rubberband_canvas = undefined;\n",
+       "    this.rubberband_context = undefined;\n",
+       "    this.format_dropdown = undefined;\n",
+       "\n",
+       "    this.image_mode = 'full';\n",
+       "\n",
+       "    this.root = document.createElement('div');\n",
+       "    this.root.setAttribute('style', 'display: inline-block');\n",
+       "    this._root_extra_style(this.root);\n",
+       "\n",
+       "    parent_element.appendChild(this.root);\n",
+       "\n",
+       "    this._init_header(this);\n",
+       "    this._init_canvas(this);\n",
+       "    this._init_toolbar(this);\n",
+       "\n",
+       "    var fig = this;\n",
+       "\n",
+       "    this.waiting = false;\n",
+       "\n",
+       "    this.ws.onopen = function () {\n",
+       "        fig.send_message('supports_binary', { value: fig.supports_binary });\n",
+       "        fig.send_message('send_image_mode', {});\n",
+       "        if (fig.ratio !== 1) {\n",
+       "            fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n",
+       "        }\n",
+       "        fig.send_message('refresh', {});\n",
+       "    };\n",
+       "\n",
+       "    this.imageObj.onload = function () {\n",
+       "        if (fig.image_mode === 'full') {\n",
+       "            // Full images could contain transparency (where diff images\n",
+       "            // almost always do), so we need to clear the canvas so that\n",
+       "            // there is no ghosting.\n",
+       "            fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
+       "        }\n",
+       "        fig.context.drawImage(fig.imageObj, 0, 0);\n",
+       "    };\n",
+       "\n",
+       "    this.imageObj.onunload = function () {\n",
+       "        fig.ws.close();\n",
+       "    };\n",
+       "\n",
+       "    this.ws.onmessage = this._make_on_message_function(this);\n",
+       "\n",
+       "    this.ondownload = ondownload;\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype._init_header = function () {\n",
+       "    var titlebar = document.createElement('div');\n",
+       "    titlebar.classList =\n",
+       "        'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n",
+       "    var titletext = document.createElement('div');\n",
+       "    titletext.classList = 'ui-dialog-title';\n",
+       "    titletext.setAttribute(\n",
+       "        'style',\n",
+       "        'width: 100%; text-align: center; padding: 3px;'\n",
+       "    );\n",
+       "    titlebar.appendChild(titletext);\n",
+       "    this.root.appendChild(titlebar);\n",
+       "    this.header = titletext;\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n",
+       "\n",
+       "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n",
+       "\n",
+       "mpl.figure.prototype._init_canvas = function () {\n",
+       "    var fig = this;\n",
+       "\n",
+       "    var canvas_div = (this.canvas_div = document.createElement('div'));\n",
+       "    canvas_div.setAttribute(\n",
+       "        'style',\n",
+       "        'border: 1px solid #ddd;' +\n",
+       "            'box-sizing: content-box;' +\n",
+       "            'clear: both;' +\n",
+       "            'min-height: 1px;' +\n",
+       "            'min-width: 1px;' +\n",
+       "            'outline: 0;' +\n",
+       "            'overflow: hidden;' +\n",
+       "            'position: relative;' +\n",
+       "            'resize: both;'\n",
+       "    );\n",
+       "\n",
+       "    function on_keyboard_event_closure(name) {\n",
+       "        return function (event) {\n",
+       "            return fig.key_event(event, name);\n",
+       "        };\n",
+       "    }\n",
+       "\n",
+       "    canvas_div.addEventListener(\n",
+       "        'keydown',\n",
+       "        on_keyboard_event_closure('key_press')\n",
+       "    );\n",
+       "    canvas_div.addEventListener(\n",
+       "        'keyup',\n",
+       "        on_keyboard_event_closure('key_release')\n",
+       "    );\n",
+       "\n",
+       "    this._canvas_extra_style(canvas_div);\n",
+       "    this.root.appendChild(canvas_div);\n",
+       "\n",
+       "    var canvas = (this.canvas = document.createElement('canvas'));\n",
+       "    canvas.classList.add('mpl-canvas');\n",
+       "    canvas.setAttribute('style', 'box-sizing: content-box;');\n",
+       "\n",
+       "    this.context = canvas.getContext('2d');\n",
+       "\n",
+       "    var backingStore =\n",
+       "        this.context.backingStorePixelRatio ||\n",
+       "        this.context.webkitBackingStorePixelRatio ||\n",
+       "        this.context.mozBackingStorePixelRatio ||\n",
+       "        this.context.msBackingStorePixelRatio ||\n",
+       "        this.context.oBackingStorePixelRatio ||\n",
+       "        this.context.backingStorePixelRatio ||\n",
+       "        1;\n",
+       "\n",
+       "    this.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
+       "\n",
+       "    var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n",
+       "        'canvas'\n",
+       "    ));\n",
+       "    rubberband_canvas.setAttribute(\n",
+       "        'style',\n",
+       "        'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n",
+       "    );\n",
+       "\n",
+       "    // Apply a ponyfill if ResizeObserver is not implemented by browser.\n",
+       "    if (this.ResizeObserver === undefined) {\n",
+       "        if (window.ResizeObserver !== undefined) {\n",
+       "            this.ResizeObserver = window.ResizeObserver;\n",
+       "        } else {\n",
+       "            var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n",
+       "            this.ResizeObserver = obs.ResizeObserver;\n",
+       "        }\n",
+       "    }\n",
+       "\n",
+       "    this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n",
+       "        var nentries = entries.length;\n",
+       "        for (var i = 0; i < nentries; i++) {\n",
+       "            var entry = entries[i];\n",
+       "            var width, height;\n",
+       "            if (entry.contentBoxSize) {\n",
+       "                if (entry.contentBoxSize instanceof Array) {\n",
+       "                    // Chrome 84 implements new version of spec.\n",
+       "                    width = entry.contentBoxSize[0].inlineSize;\n",
+       "                    height = entry.contentBoxSize[0].blockSize;\n",
+       "                } else {\n",
+       "                    // Firefox implements old version of spec.\n",
+       "                    width = entry.contentBoxSize.inlineSize;\n",
+       "                    height = entry.contentBoxSize.blockSize;\n",
+       "                }\n",
+       "            } else {\n",
+       "                // Chrome <84 implements even older version of spec.\n",
+       "                width = entry.contentRect.width;\n",
+       "                height = entry.contentRect.height;\n",
+       "            }\n",
+       "\n",
+       "            // Keep the size of the canvas and rubber band canvas in sync with\n",
+       "            // the canvas container.\n",
+       "            if (entry.devicePixelContentBoxSize) {\n",
+       "                // Chrome 84 implements new version of spec.\n",
+       "                canvas.setAttribute(\n",
+       "                    'width',\n",
+       "                    entry.devicePixelContentBoxSize[0].inlineSize\n",
+       "                );\n",
+       "                canvas.setAttribute(\n",
+       "                    'height',\n",
+       "                    entry.devicePixelContentBoxSize[0].blockSize\n",
+       "                );\n",
+       "            } else {\n",
+       "                canvas.setAttribute('width', width * fig.ratio);\n",
+       "                canvas.setAttribute('height', height * fig.ratio);\n",
+       "            }\n",
+       "            canvas.setAttribute(\n",
+       "                'style',\n",
+       "                'width: ' + width + 'px; height: ' + height + 'px;'\n",
+       "            );\n",
+       "\n",
+       "            rubberband_canvas.setAttribute('width', width);\n",
+       "            rubberband_canvas.setAttribute('height', height);\n",
+       "\n",
+       "            // And update the size in Python. We ignore the initial 0/0 size\n",
+       "            // that occurs as the element is placed into the DOM, which should\n",
+       "            // otherwise not happen due to the minimum size styling.\n",
+       "            if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n",
+       "                fig.request_resize(width, height);\n",
+       "            }\n",
+       "        }\n",
+       "    });\n",
+       "    this.resizeObserverInstance.observe(canvas_div);\n",
+       "\n",
+       "    function on_mouse_event_closure(name) {\n",
+       "        return function (event) {\n",
+       "            return fig.mouse_event(event, name);\n",
+       "        };\n",
+       "    }\n",
+       "\n",
+       "    rubberband_canvas.addEventListener(\n",
+       "        'mousedown',\n",
+       "        on_mouse_event_closure('button_press')\n",
+       "    );\n",
+       "    rubberband_canvas.addEventListener(\n",
+       "        'mouseup',\n",
+       "        on_mouse_event_closure('button_release')\n",
+       "    );\n",
+       "    // Throttle sequential mouse events to 1 every 20ms.\n",
+       "    rubberband_canvas.addEventListener(\n",
+       "        'mousemove',\n",
+       "        on_mouse_event_closure('motion_notify')\n",
+       "    );\n",
+       "\n",
+       "    rubberband_canvas.addEventListener(\n",
+       "        'mouseenter',\n",
+       "        on_mouse_event_closure('figure_enter')\n",
+       "    );\n",
+       "    rubberband_canvas.addEventListener(\n",
+       "        'mouseleave',\n",
+       "        on_mouse_event_closure('figure_leave')\n",
+       "    );\n",
+       "\n",
+       "    canvas_div.addEventListener('wheel', function (event) {\n",
+       "        if (event.deltaY < 0) {\n",
+       "            event.step = 1;\n",
+       "        } else {\n",
+       "            event.step = -1;\n",
+       "        }\n",
+       "        on_mouse_event_closure('scroll')(event);\n",
+       "    });\n",
+       "\n",
+       "    canvas_div.appendChild(canvas);\n",
+       "    canvas_div.appendChild(rubberband_canvas);\n",
+       "\n",
+       "    this.rubberband_context = rubberband_canvas.getContext('2d');\n",
+       "    this.rubberband_context.strokeStyle = '#000000';\n",
+       "\n",
+       "    this._resize_canvas = function (width, height, forward) {\n",
+       "        if (forward) {\n",
+       "            canvas_div.style.width = width + 'px';\n",
+       "            canvas_div.style.height = height + 'px';\n",
+       "        }\n",
+       "    };\n",
+       "\n",
+       "    // Disable right mouse context menu.\n",
+       "    this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n",
+       "        event.preventDefault();\n",
+       "        return false;\n",
+       "    });\n",
+       "\n",
+       "    function set_focus() {\n",
+       "        canvas.focus();\n",
+       "        canvas_div.focus();\n",
+       "    }\n",
+       "\n",
+       "    window.setTimeout(set_focus, 100);\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype._init_toolbar = function () {\n",
+       "    var fig = this;\n",
+       "\n",
+       "    var toolbar = document.createElement('div');\n",
+       "    toolbar.classList = 'mpl-toolbar';\n",
+       "    this.root.appendChild(toolbar);\n",
+       "\n",
+       "    function on_click_closure(name) {\n",
+       "        return function (_event) {\n",
+       "            return fig.toolbar_button_onclick(name);\n",
+       "        };\n",
+       "    }\n",
+       "\n",
+       "    function on_mouseover_closure(tooltip) {\n",
+       "        return function (event) {\n",
+       "            if (!event.currentTarget.disabled) {\n",
+       "                return fig.toolbar_button_onmouseover(tooltip);\n",
+       "            }\n",
+       "        };\n",
+       "    }\n",
+       "\n",
+       "    fig.buttons = {};\n",
+       "    var buttonGroup = document.createElement('div');\n",
+       "    buttonGroup.classList = 'mpl-button-group';\n",
+       "    for (var toolbar_ind in mpl.toolbar_items) {\n",
+       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
+       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
+       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
+       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
+       "\n",
+       "        if (!name) {\n",
+       "            /* Instead of a spacer, we start a new button group. */\n",
+       "            if (buttonGroup.hasChildNodes()) {\n",
+       "                toolbar.appendChild(buttonGroup);\n",
+       "            }\n",
+       "            buttonGroup = document.createElement('div');\n",
+       "            buttonGroup.classList = 'mpl-button-group';\n",
+       "            continue;\n",
+       "        }\n",
+       "\n",
+       "        var button = (fig.buttons[name] = document.createElement('button'));\n",
+       "        button.classList = 'mpl-widget';\n",
+       "        button.setAttribute('role', 'button');\n",
+       "        button.setAttribute('aria-disabled', 'false');\n",
+       "        button.addEventListener('click', on_click_closure(method_name));\n",
+       "        button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
+       "\n",
+       "        var icon_img = document.createElement('img');\n",
+       "        icon_img.src = '_images/' + image + '.png';\n",
+       "        icon_img.srcset = '_images/' + image + '_large.png 2x';\n",
+       "        icon_img.alt = tooltip;\n",
+       "        button.appendChild(icon_img);\n",
+       "\n",
+       "        buttonGroup.appendChild(button);\n",
+       "    }\n",
+       "\n",
+       "    if (buttonGroup.hasChildNodes()) {\n",
+       "        toolbar.appendChild(buttonGroup);\n",
+       "    }\n",
+       "\n",
+       "    var fmt_picker = document.createElement('select');\n",
+       "    fmt_picker.classList = 'mpl-widget';\n",
+       "    toolbar.appendChild(fmt_picker);\n",
+       "    this.format_dropdown = fmt_picker;\n",
+       "\n",
+       "    for (var ind in mpl.extensions) {\n",
+       "        var fmt = mpl.extensions[ind];\n",
+       "        var option = document.createElement('option');\n",
+       "        option.selected = fmt === mpl.default_extension;\n",
+       "        option.innerHTML = fmt;\n",
+       "        fmt_picker.appendChild(option);\n",
+       "    }\n",
+       "\n",
+       "    var status_bar = document.createElement('span');\n",
+       "    status_bar.classList = 'mpl-message';\n",
+       "    toolbar.appendChild(status_bar);\n",
+       "    this.message = status_bar;\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n",
+       "    // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
+       "    // which will in turn request a refresh of the image.\n",
+       "    this.send_message('resize', { width: x_pixels, height: y_pixels });\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.send_message = function (type, properties) {\n",
+       "    properties['type'] = type;\n",
+       "    properties['figure_id'] = this.id;\n",
+       "    this.ws.send(JSON.stringify(properties));\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.send_draw_message = function () {\n",
+       "    if (!this.waiting) {\n",
+       "        this.waiting = true;\n",
+       "        this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n",
+       "    }\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.handle_save = function (fig, _msg) {\n",
+       "    var format_dropdown = fig.format_dropdown;\n",
+       "    var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
+       "    fig.ondownload(fig, format);\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.handle_resize = function (fig, msg) {\n",
+       "    var size = msg['size'];\n",
+       "    if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n",
+       "        fig._resize_canvas(size[0], size[1], msg['forward']);\n",
+       "        fig.send_message('refresh', {});\n",
+       "    }\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n",
+       "    var x0 = msg['x0'] / fig.ratio;\n",
+       "    var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n",
+       "    var x1 = msg['x1'] / fig.ratio;\n",
+       "    var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n",
+       "    x0 = Math.floor(x0) + 0.5;\n",
+       "    y0 = Math.floor(y0) + 0.5;\n",
+       "    x1 = Math.floor(x1) + 0.5;\n",
+       "    y1 = Math.floor(y1) + 0.5;\n",
+       "    var min_x = Math.min(x0, x1);\n",
+       "    var min_y = Math.min(y0, y1);\n",
+       "    var width = Math.abs(x1 - x0);\n",
+       "    var height = Math.abs(y1 - y0);\n",
+       "\n",
+       "    fig.rubberband_context.clearRect(\n",
+       "        0,\n",
+       "        0,\n",
+       "        fig.canvas.width / fig.ratio,\n",
+       "        fig.canvas.height / fig.ratio\n",
+       "    );\n",
+       "\n",
+       "    fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n",
+       "    // Updates the figure title.\n",
+       "    fig.header.textContent = msg['label'];\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n",
+       "    var cursor = msg['cursor'];\n",
+       "    switch (cursor) {\n",
+       "        case 0:\n",
+       "            cursor = 'pointer';\n",
+       "            break;\n",
+       "        case 1:\n",
+       "            cursor = 'default';\n",
+       "            break;\n",
+       "        case 2:\n",
+       "            cursor = 'crosshair';\n",
+       "            break;\n",
+       "        case 3:\n",
+       "            cursor = 'move';\n",
+       "            break;\n",
+       "    }\n",
+       "    fig.rubberband_canvas.style.cursor = cursor;\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.handle_message = function (fig, msg) {\n",
+       "    fig.message.textContent = msg['message'];\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n",
+       "    // Request the server to send over a new figure.\n",
+       "    fig.send_draw_message();\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n",
+       "    fig.image_mode = msg['mode'];\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n",
+       "    for (var key in msg) {\n",
+       "        if (!(key in fig.buttons)) {\n",
+       "            continue;\n",
+       "        }\n",
+       "        fig.buttons[key].disabled = !msg[key];\n",
+       "        fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n",
+       "    }\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n",
+       "    if (msg['mode'] === 'PAN') {\n",
+       "        fig.buttons['Pan'].classList.add('active');\n",
+       "        fig.buttons['Zoom'].classList.remove('active');\n",
+       "    } else if (msg['mode'] === 'ZOOM') {\n",
+       "        fig.buttons['Pan'].classList.remove('active');\n",
+       "        fig.buttons['Zoom'].classList.add('active');\n",
+       "    } else {\n",
+       "        fig.buttons['Pan'].classList.remove('active');\n",
+       "        fig.buttons['Zoom'].classList.remove('active');\n",
+       "    }\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.updated_canvas_event = function () {\n",
+       "    // Called whenever the canvas gets updated.\n",
+       "    this.send_message('ack', {});\n",
+       "};\n",
+       "\n",
+       "// A function to construct a web socket function for onmessage handling.\n",
+       "// Called in the figure constructor.\n",
+       "mpl.figure.prototype._make_on_message_function = function (fig) {\n",
+       "    return function socket_on_message(evt) {\n",
+       "        if (evt.data instanceof Blob) {\n",
+       "            /* FIXME: We get \"Resource interpreted as Image but\n",
+       "             * transferred with MIME type text/plain:\" errors on\n",
+       "             * Chrome.  But how to set the MIME type?  It doesn't seem\n",
+       "             * to be part of the websocket stream */\n",
+       "            evt.data.type = 'image/png';\n",
+       "\n",
+       "            /* Free the memory for the previous frames */\n",
+       "            if (fig.imageObj.src) {\n",
+       "                (window.URL || window.webkitURL).revokeObjectURL(\n",
+       "                    fig.imageObj.src\n",
+       "                );\n",
+       "            }\n",
+       "\n",
+       "            fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
+       "                evt.data\n",
+       "            );\n",
+       "            fig.updated_canvas_event();\n",
+       "            fig.waiting = false;\n",
+       "            return;\n",
+       "        } else if (\n",
+       "            typeof evt.data === 'string' &&\n",
+       "            evt.data.slice(0, 21) === 'data:image/png;base64'\n",
+       "        ) {\n",
+       "            fig.imageObj.src = evt.data;\n",
+       "            fig.updated_canvas_event();\n",
+       "            fig.waiting = false;\n",
+       "            return;\n",
+       "        }\n",
+       "\n",
+       "        var msg = JSON.parse(evt.data);\n",
+       "        var msg_type = msg['type'];\n",
+       "\n",
+       "        // Call the  \"handle_{type}\" callback, which takes\n",
+       "        // the figure and JSON message as its only arguments.\n",
+       "        try {\n",
+       "            var callback = fig['handle_' + msg_type];\n",
+       "        } catch (e) {\n",
+       "            console.log(\n",
+       "                \"No handler for the '\" + msg_type + \"' message type: \",\n",
+       "                msg\n",
+       "            );\n",
+       "            return;\n",
+       "        }\n",
+       "\n",
+       "        if (callback) {\n",
+       "            try {\n",
+       "                // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
+       "                callback(fig, msg);\n",
+       "            } catch (e) {\n",
+       "                console.log(\n",
+       "                    \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n",
+       "                    e,\n",
+       "                    e.stack,\n",
+       "                    msg\n",
+       "                );\n",
+       "            }\n",
+       "        }\n",
+       "    };\n",
+       "};\n",
+       "\n",
+       "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
+       "mpl.findpos = function (e) {\n",
+       "    //this section is from http://www.quirksmode.org/js/events_properties.html\n",
+       "    var targ;\n",
+       "    if (!e) {\n",
+       "        e = window.event;\n",
+       "    }\n",
+       "    if (e.target) {\n",
+       "        targ = e.target;\n",
+       "    } else if (e.srcElement) {\n",
+       "        targ = e.srcElement;\n",
+       "    }\n",
+       "    if (targ.nodeType === 3) {\n",
+       "        // defeat Safari bug\n",
+       "        targ = targ.parentNode;\n",
+       "    }\n",
+       "\n",
+       "    // pageX,Y are the mouse positions relative to the document\n",
+       "    var boundingRect = targ.getBoundingClientRect();\n",
+       "    var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n",
+       "    var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n",
+       "\n",
+       "    return { x: x, y: y };\n",
+       "};\n",
+       "\n",
+       "/*\n",
+       " * return a copy of an object with only non-object keys\n",
+       " * we need this to avoid circular references\n",
+       " * http://stackoverflow.com/a/24161582/3208463\n",
+       " */\n",
+       "function simpleKeys(original) {\n",
+       "    return Object.keys(original).reduce(function (obj, key) {\n",
+       "        if (typeof original[key] !== 'object') {\n",
+       "            obj[key] = original[key];\n",
+       "        }\n",
+       "        return obj;\n",
+       "    }, {});\n",
+       "}\n",
+       "\n",
+       "mpl.figure.prototype.mouse_event = function (event, name) {\n",
+       "    var canvas_pos = mpl.findpos(event);\n",
+       "\n",
+       "    if (name === 'button_press') {\n",
+       "        this.canvas.focus();\n",
+       "        this.canvas_div.focus();\n",
+       "    }\n",
+       "\n",
+       "    var x = canvas_pos.x * this.ratio;\n",
+       "    var y = canvas_pos.y * this.ratio;\n",
+       "\n",
+       "    this.send_message(name, {\n",
+       "        x: x,\n",
+       "        y: y,\n",
+       "        button: event.button,\n",
+       "        step: event.step,\n",
+       "        guiEvent: simpleKeys(event),\n",
+       "    });\n",
+       "\n",
+       "    /* This prevents the web browser from automatically changing to\n",
+       "     * the text insertion cursor when the button is pressed.  We want\n",
+       "     * to control all of the cursor setting manually through the\n",
+       "     * 'cursor' event from matplotlib */\n",
+       "    event.preventDefault();\n",
+       "    return false;\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n",
+       "    // Handle any extra behaviour associated with a key event\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.key_event = function (event, name) {\n",
+       "    // Prevent repeat events\n",
+       "    if (name === 'key_press') {\n",
+       "        if (event.which === this._key) {\n",
+       "            return;\n",
+       "        } else {\n",
+       "            this._key = event.which;\n",
+       "        }\n",
+       "    }\n",
+       "    if (name === 'key_release') {\n",
+       "        this._key = null;\n",
+       "    }\n",
+       "\n",
+       "    var value = '';\n",
+       "    if (event.ctrlKey && event.which !== 17) {\n",
+       "        value += 'ctrl+';\n",
+       "    }\n",
+       "    if (event.altKey && event.which !== 18) {\n",
+       "        value += 'alt+';\n",
+       "    }\n",
+       "    if (event.shiftKey && event.which !== 16) {\n",
+       "        value += 'shift+';\n",
+       "    }\n",
+       "\n",
+       "    value += 'k';\n",
+       "    value += event.which.toString();\n",
+       "\n",
+       "    this._key_event_extra(event, name);\n",
+       "\n",
+       "    this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n",
+       "    return false;\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n",
+       "    if (name === 'download') {\n",
+       "        this.handle_save(this, null);\n",
+       "    } else {\n",
+       "        this.send_message('toolbar_button', { name: name });\n",
+       "    }\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n",
+       "    this.message.textContent = tooltip;\n",
+       "};\n",
+       "\n",
+       "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n",
+       "// prettier-ignore\n",
+       "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\n",
+       "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
+       "\n",
+       "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
+       "\n",
+       "mpl.default_extension = \"png\";/* global mpl */\n",
+       "\n",
+       "var comm_websocket_adapter = function (comm) {\n",
+       "    // Create a \"websocket\"-like object which calls the given IPython comm\n",
+       "    // object with the appropriate methods. Currently this is a non binary\n",
+       "    // socket, so there is still some room for performance tuning.\n",
+       "    var ws = {};\n",
+       "\n",
+       "    ws.close = function () {\n",
+       "        comm.close();\n",
+       "    };\n",
+       "    ws.send = function (m) {\n",
+       "        //console.log('sending', m);\n",
+       "        comm.send(m);\n",
+       "    };\n",
+       "    // Register the callback with on_msg.\n",
+       "    comm.on_msg(function (msg) {\n",
+       "        //console.log('receiving', msg['content']['data'], msg);\n",
+       "        // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
+       "        ws.onmessage(msg['content']['data']);\n",
+       "    });\n",
+       "    return ws;\n",
+       "};\n",
+       "\n",
+       "mpl.mpl_figure_comm = function (comm, msg) {\n",
+       "    // This is the function which gets called when the mpl process\n",
+       "    // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
+       "\n",
+       "    var id = msg.content.data.id;\n",
+       "    // Get hold of the div created by the display call when the Comm\n",
+       "    // socket was opened in Python.\n",
+       "    var element = document.getElementById(id);\n",
+       "    var ws_proxy = comm_websocket_adapter(comm);\n",
+       "\n",
+       "    function ondownload(figure, _format) {\n",
+       "        window.open(figure.canvas.toDataURL());\n",
+       "    }\n",
+       "\n",
+       "    var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n",
+       "\n",
+       "    // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
+       "    // web socket which is closed, not our websocket->open comm proxy.\n",
+       "    ws_proxy.onopen();\n",
+       "\n",
+       "    fig.parent_element = element;\n",
+       "    fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
+       "    if (!fig.cell_info) {\n",
+       "        console.error('Failed to find cell for figure', id, fig);\n",
+       "        return;\n",
+       "    }\n",
+       "    fig.cell_info[0].output_area.element.on(\n",
+       "        'cleared',\n",
+       "        { fig: fig },\n",
+       "        fig._remove_fig_handler\n",
+       "    );\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.handle_close = function (fig, msg) {\n",
+       "    var width = fig.canvas.width / fig.ratio;\n",
+       "    fig.cell_info[0].output_area.element.off(\n",
+       "        'cleared',\n",
+       "        fig._remove_fig_handler\n",
+       "    );\n",
+       "    fig.resizeObserverInstance.unobserve(fig.canvas_div);\n",
+       "\n",
+       "    // Update the output cell to use the data from the current canvas.\n",
+       "    fig.push_to_output();\n",
+       "    var dataURL = fig.canvas.toDataURL();\n",
+       "    // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
+       "    // the notebook keyboard shortcuts fail.\n",
+       "    IPython.keyboard_manager.enable();\n",
+       "    fig.parent_element.innerHTML =\n",
+       "        '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
+       "    fig.close_ws(fig, msg);\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.close_ws = function (fig, msg) {\n",
+       "    fig.send_message('closing', msg);\n",
+       "    // fig.ws.close()\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n",
+       "    // Turn the data on the canvas into data in the output cell.\n",
+       "    var width = this.canvas.width / this.ratio;\n",
+       "    var dataURL = this.canvas.toDataURL();\n",
+       "    this.cell_info[1]['text/html'] =\n",
+       "        '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.updated_canvas_event = function () {\n",
+       "    // Tell IPython that the notebook contents must change.\n",
+       "    IPython.notebook.set_dirty(true);\n",
+       "    this.send_message('ack', {});\n",
+       "    var fig = this;\n",
+       "    // Wait a second, then push the new image to the DOM so\n",
+       "    // that it is saved nicely (might be nice to debounce this).\n",
+       "    setTimeout(function () {\n",
+       "        fig.push_to_output();\n",
+       "    }, 1000);\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype._init_toolbar = function () {\n",
+       "    var fig = this;\n",
+       "\n",
+       "    var toolbar = document.createElement('div');\n",
+       "    toolbar.classList = 'btn-toolbar';\n",
+       "    this.root.appendChild(toolbar);\n",
+       "\n",
+       "    function on_click_closure(name) {\n",
+       "        return function (_event) {\n",
+       "            return fig.toolbar_button_onclick(name);\n",
+       "        };\n",
+       "    }\n",
+       "\n",
+       "    function on_mouseover_closure(tooltip) {\n",
+       "        return function (event) {\n",
+       "            if (!event.currentTarget.disabled) {\n",
+       "                return fig.toolbar_button_onmouseover(tooltip);\n",
+       "            }\n",
+       "        };\n",
+       "    }\n",
+       "\n",
+       "    fig.buttons = {};\n",
+       "    var buttonGroup = document.createElement('div');\n",
+       "    buttonGroup.classList = 'btn-group';\n",
+       "    var button;\n",
+       "    for (var toolbar_ind in mpl.toolbar_items) {\n",
+       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
+       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
+       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
+       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
+       "\n",
+       "        if (!name) {\n",
+       "            /* Instead of a spacer, we start a new button group. */\n",
+       "            if (buttonGroup.hasChildNodes()) {\n",
+       "                toolbar.appendChild(buttonGroup);\n",
+       "            }\n",
+       "            buttonGroup = document.createElement('div');\n",
+       "            buttonGroup.classList = 'btn-group';\n",
+       "            continue;\n",
+       "        }\n",
+       "\n",
+       "        button = fig.buttons[name] = document.createElement('button');\n",
+       "        button.classList = 'btn btn-default';\n",
+       "        button.href = '#';\n",
+       "        button.title = name;\n",
+       "        button.innerHTML = '<i class=\"fa ' + image + ' fa-lg\"></i>';\n",
+       "        button.addEventListener('click', on_click_closure(method_name));\n",
+       "        button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
+       "        buttonGroup.appendChild(button);\n",
+       "    }\n",
+       "\n",
+       "    if (buttonGroup.hasChildNodes()) {\n",
+       "        toolbar.appendChild(buttonGroup);\n",
+       "    }\n",
+       "\n",
+       "    // Add the status bar.\n",
+       "    var status_bar = document.createElement('span');\n",
+       "    status_bar.classList = 'mpl-message pull-right';\n",
+       "    toolbar.appendChild(status_bar);\n",
+       "    this.message = status_bar;\n",
+       "\n",
+       "    // Add the close button to the window.\n",
+       "    var buttongrp = document.createElement('div');\n",
+       "    buttongrp.classList = 'btn-group inline pull-right';\n",
+       "    button = document.createElement('button');\n",
+       "    button.classList = 'btn btn-mini btn-primary';\n",
+       "    button.href = '#';\n",
+       "    button.title = 'Stop Interaction';\n",
+       "    button.innerHTML = '<i class=\"fa fa-power-off icon-remove icon-large\"></i>';\n",
+       "    button.addEventListener('click', function (_evt) {\n",
+       "        fig.handle_close(fig, {});\n",
+       "    });\n",
+       "    button.addEventListener(\n",
+       "        'mouseover',\n",
+       "        on_mouseover_closure('Stop Interaction')\n",
+       "    );\n",
+       "    buttongrp.appendChild(button);\n",
+       "    var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n",
+       "    titlebar.insertBefore(buttongrp, titlebar.firstChild);\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype._remove_fig_handler = function (event) {\n",
+       "    var fig = event.data.fig;\n",
+       "    if (event.target !== this) {\n",
+       "        // Ignore bubbled events from children.\n",
+       "        return;\n",
+       "    }\n",
+       "    fig.close_ws(fig, {});\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype._root_extra_style = function (el) {\n",
+       "    el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype._canvas_extra_style = function (el) {\n",
+       "    // this is important to make the div 'focusable\n",
+       "    el.setAttribute('tabindex', 0);\n",
+       "    // reach out to IPython and tell the keyboard manager to turn it's self\n",
+       "    // off when our div gets focus\n",
+       "\n",
+       "    // location in version 3\n",
+       "    if (IPython.notebook.keyboard_manager) {\n",
+       "        IPython.notebook.keyboard_manager.register_events(el);\n",
+       "    } else {\n",
+       "        // location in version 2\n",
+       "        IPython.keyboard_manager.register_events(el);\n",
+       "    }\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype._key_event_extra = function (event, _name) {\n",
+       "    var manager = IPython.notebook.keyboard_manager;\n",
+       "    if (!manager) {\n",
+       "        manager = IPython.keyboard_manager;\n",
+       "    }\n",
+       "\n",
+       "    // Check for shift+enter\n",
+       "    if (event.shiftKey && event.which === 13) {\n",
+       "        this.canvas_div.blur();\n",
+       "        // select the cell after this one\n",
+       "        var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n",
+       "        IPython.notebook.select(index + 1);\n",
+       "    }\n",
+       "};\n",
+       "\n",
+       "mpl.figure.prototype.handle_save = function (fig, _msg) {\n",
+       "    fig.ondownload(fig, null);\n",
+       "};\n",
+       "\n",
+       "mpl.find_output_cell = function (html_output) {\n",
+       "    // Return the cell and output element which can be found *uniquely* in the notebook.\n",
+       "    // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
+       "    // IPython event is triggered only after the cells have been serialised, which for\n",
+       "    // our purposes (turning an active figure into a static one), is too late.\n",
+       "    var cells = IPython.notebook.get_cells();\n",
+       "    var ncells = cells.length;\n",
+       "    for (var i = 0; i < ncells; i++) {\n",
+       "        var cell = cells[i];\n",
+       "        if (cell.cell_type === 'code') {\n",
+       "            for (var j = 0; j < cell.output_area.outputs.length; j++) {\n",
+       "                var data = cell.output_area.outputs[j];\n",
+       "                if (data.data) {\n",
+       "                    // IPython >= 3 moved mimebundle to data attribute of output\n",
+       "                    data = data.data;\n",
+       "                }\n",
+       "                if (data['text/html'] === html_output) {\n",
+       "                    return [cell, data, j];\n",
+       "                }\n",
+       "            }\n",
+       "        }\n",
+       "    }\n",
+       "};\n",
+       "\n",
+       "// Register the function which deals with the matplotlib target/channel.\n",
+       "// The kernel may be null if the page has been refreshed.\n",
+       "if (IPython.notebook.kernel !== null) {\n",
+       "    IPython.notebook.kernel.comm_manager.register_target(\n",
+       "        'matplotlib',\n",
+       "        mpl.mpl_figure_comm\n",
+       "    );\n",
+       "}\n"
+      ],
+      "text/plain": [
+       "<IPython.core.display.Javascript object>"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/html": [
+       "<img src=\"data:image/png;base64,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\" width=\"640\">"
+      ],
+      "text/plain": [
+       "<IPython.core.display.HTML object>"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "To plot traces:\n",
+      "python3 plotting/Network_plot_traces.py networks/input_tuningoutput_volt.txt networks/input_tuningnetwork-synapses.hdf5 \n"
+     ]
+    }
+   ],
+   "source": [
+    "%matplotlib notebook\n",
+    "\n",
+    "input_tuning.analyse_results(show_plots=True)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "close-operation",
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "9ba3a938",
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3",
+   "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.7.3"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/snudda/__init__.py b/snudda/__init__.py
index 5b6190b3e..cc32b2033 100644
--- a/snudda/__init__.py
+++ b/snudda/__init__.py
@@ -1,6 +1,6 @@
 from .core import Snudda
 
-__version__ = "1.2.6"
+__version__ = "1.2.7"
 
 from .init import SnuddaInit
 from .place import SnuddaPlace
diff --git a/snudda/detect/detect.py b/snudda/detect/detect.py
index b801bc93c..070c010fb 100644
--- a/snudda/detect/detect.py
+++ b/snudda/detect/detect.py
@@ -654,14 +654,55 @@ def setup_work_history(self, work_history_file=None):
                                                            "int",
                                                            compression=self.h5compression)
 
+        pk_list = [n["parameterKey"].encode("ascii", "ignore")
+                   if "parameterKey" in n and n["parameterKey"] is not None else ""
+                   for n in self.neurons]
+        pk_str_type = 'S' + str(max(1, max([len(x) for x in pk_list])))
+
+        mk_list = [n["morphologyKey"].encode("ascii", "ignore")
+                   if "morphologyKey" in n and n["morphologyKey"] is not None else ""
+                   for n in self.neurons]
+        mk_str_type = 'S' + str(max(1, max([len(x) for x in mk_list])))
+
+        mok_list = [n["modulationKey"].encode("ascii", "ignore")
+                    if "modulationKey" in n and n["modulationKey"] is not None else ""
+                    for n in self.neurons]
+        mok_str_type = 'S' + str(max(1, max([len(x) for x in mok_list])))
+
+        neuron_param_key = neuron_group.create_dataset("parameterKey",
+                                                       (len(self.neurons),),
+                                                       pk_str_type,
+                                                       compression="gzip")
+
+        neuron_morph_key = neuron_group.create_dataset("morphologyKey",
+                                                       (len(self.neurons),),
+                                                       mk_str_type,
+                                                       compression="gzip")
+
+        neuron_modulation_key = neuron_group.create_dataset("modulationKey",
+                                                            (len(self.neurons),),
+                                                            mok_str_type,
+                                                            compression="gzip")
+
         for (i, n) in enumerate(self.neurons):
+
             neuron_position[i] = n["position"]
             neuron_rotation[i] = n["rotation"].reshape(1, 9)
             neuron_dend_radius[i] = n["maxDendRadius"]
             neuron_axon_radius[i] = n["maxAxonRadius"]
-            neuron_param_id[i] = n["parameterID"]
-            neuron_morphology_id[i] = n["morphologyID"]
-            neuron_modulation_id[i] = n["modulationID"]
+
+            neuron_param_id[i] = -1 if n["parameterID"] is None else n["parameterID"]
+            neuron_morphology_id[i] = -1 if n["morphologyID"] is None else n["morphologyID"]
+            neuron_modulation_id[i] = -1 if n["modulationID"] is None else n["modulationID"]
+
+            if "parameterKey" in n:
+                neuron_param_key[i] = n["parameterKey"]
+
+            if "morphologyKey" in n:
+                neuron_morph_key[i] = n["morphologyKey"]
+
+            if "modulationKey" in n:
+                neuron_modulation_key[i] = n["modulationKey"]
 
         # Store input information
         neuron_group.create_dataset("populationUnitID", data=self.population_unit,
@@ -2062,6 +2103,9 @@ def load_neuron(self, neuron_info):
         neuron = self.prototype_neurons[neuron_info["name"]].clone(parameter_id=neuron_info["parameterID"],
                                                                    morphology_id=neuron_info["morphologyID"],
                                                                    modulation_id=neuron_info["modulationID"],
+                                                                   parameter_key=neuron_info["parameterKey"],
+                                                                   morphology_key=neuron_info["morphologyKey"],
+                                                                   modulation_key=neuron_info["modulationKey"],
                                                                    rotation=neuron_info["rotation"],
                                                                    position=neuron_info["position"])
 
diff --git a/snudda/input/input.py b/snudda/input/input.py
index 48b1c05f0..9f475e034 100644
--- a/snudda/input/input.py
+++ b/snudda/input/input.py
@@ -1152,11 +1152,17 @@ def dendrite_input_locations(self,
         morphology_id = self.neuron_info[neuron_id]["morphologyID"]
         modulation_id = self.neuron_info[neuron_id]["modulationID"]
 
+        parameter_key = self.neuron_info[neuron_id]["parameterKey"]
+        morphology_key = self.neuron_info[neuron_id]["morphologyKey"]
+        modulation_key = self.neuron_info[neuron_id]["modulationKey"]
+
         if neuron_name in self.neuron_cache:
             self.write_log(f"About to clone cache of {neuron_name}.")
             # Since we do not care about location of neuron in space, we can use get_cache_original
             morphology = self.neuron_cache[neuron_name].clone(parameter_id=parameter_id,
                                                               morphology_id=morphology_id,
+                                                              parameter_key=parameter_key,
+                                                              morphology_key=morphology_key,
                                                               modulation_id=None, position=None, rotation=None,
                                                               get_cache_original=True)
         else:
@@ -1171,13 +1177,17 @@ def dendrite_input_locations(self,
             self.neuron_cache[neuron_name] = morphology_prototype
             morphology = morphology_prototype.clone(parameter_id=parameter_id,
                                                     morphology_id=morphology_id,
+                                                    parameter_key=parameter_key,
+                                                    morphology_key=morphology_key,
                                                     modulation_id=None, position=None, rotation=None,
                                                     get_cache_original=True)
 
         self.write_log(f"morphology = {morphology}")
 
         input_info = self.neuron_cache[neuron_name].get_input_parameters(parameter_id=parameter_id,
-                                                                         morphology_id=morphology_id)
+                                                                         morphology_id=morphology_id,
+                                                                         parameter_key=parameter_key,
+                                                                         morphology_key=morphology_key)
 
         # If the neuron model has a certain number of input specified, then use that if num_spike_trains is None
         if num_spike_trains is None and input_type in input_info:
diff --git a/snudda/input/input_tuning.py b/snudda/input/input_tuning.py
index b6640b431..edeec00b8 100644
--- a/snudda/input/input_tuning.py
+++ b/snudda/input/input_tuning.py
@@ -68,14 +68,25 @@ def __init__(self, network_path):
 
     # Writes config files
 
-    def setup_network(self, neurons_path, num_replicas=10, neuron_types=None,
-                      parameter_id=None, morphology_id=None, modulation_id=None):
+    def setup_network(self, neurons_path=None, num_replicas=10, neuron_types=None,
+                      parameter_key=None, morphology_key=None, modulation_key=None,
+                      single_neuron_path=None):
+
+        if not morphology_key and not parameter_key and not modulation_key:
+            all_combinations = True
+        else:
+            all_combinations = False
 
         # TODO: num_replicas should be set by a parameter, it affects how many duplicates of each neuron
         # and thus how many steps we have between n_min and n_max number of inputs specified.
         config_def = self.create_network_config(neurons_path=neurons_path,
                                                 num_replicas=num_replicas,
-                                                neuron_types=neuron_types)
+                                                neuron_types=neuron_types,
+                                                single_neuron_path=single_neuron_path,
+                                                parameter_key=parameter_key,
+                                                morphology_key=morphology_key,
+                                                modulation_key=modulation_key,
+                                                all_combinations=all_combinations)
 
         print(f"Writing network config file to {self.network_config_file_name}")
         with open(self.network_config_file_name, "w") as f:
@@ -92,28 +103,9 @@ def setup_network(self, neurons_path, num_replicas=10, neuron_types=None,
         from snudda.detect.prune import SnuddaPrune
 
         sp = SnuddaPlace(network_path=self.network_path)
-        sp.parse_config()
+        sp.parse_config(resort_neurons=False)  # By not resorting neurons, we have original order
         sp.write_data()
 
-        # Set parameter_id, morphology_id or modulation_id if requested
-        if parameter_id is not None or morphology_id is not None or modulation_id is not None:
-            pos_file = os.path.join(self.network_path, "network-neuron-positions.hdf5")
-            s_mod = RepositionNeurons(pos_file)
-
-            if parameter_id is not None:
-                print(f"Setting parameter_id = {parameter_id}")
-                s_mod.set_parameter_id(neuron_id=None, parameter_id=parameter_id)
-
-            if morphology_id is not None:
-                print(f"Setting morphology_id = {morphology_id}")
-                s_mod.set_morphology_id(neuron_id=None, morphology_id=morphology_id)
-
-            if modulation_id is not None:
-                print(f"Setting neuron modulation_id = {modulation_id}")
-                s_mod.set_modulation_id(neuron_id=None, modulation_id=modulation_id)
-
-            s_mod.close()
-
         sd = SnuddaDetect(network_path=self.network_path)
         sd.detect()
 
@@ -302,7 +294,7 @@ def load_input_config(self):
 
         input_config_file = os.path.join(self.network_path, "input_config.json")
         with open(input_config_file) as f:
-            input_config = json.load(f, object_pairs_hook=OrderedDict)
+            input_config = json.load(f, object_pairs_hook=collections.OrderedDict)
 
         return input_config
 
@@ -523,10 +515,39 @@ def plot_frequency_data_alt(self, frequency_data, show_plots=True):
             if not show_plots:
                 plt.close()
 
+    def get_neuron_info(self, neuron_path):
+
+        neuron_path = snudda_parse_path(neuron_path)
+
+        neuron_info = collections.OrderedDict()
+
+        # Find neuron morphology swc file, obs currently assume lowercase(!)
+        neuron_morph = SnuddaInit.get_morphologies(neuron_path)
+
+        parameter_file = os.path.join(neuron_path, "parameters.json")
+        mechanism_file = os.path.join(neuron_path, "mechanisms.json")
+        modulation_file = os.path.join(neuron_path, "modulation.json")  # Optional
+        meta_file = os.path.join(neuron_path, "meta.json")
+
+        # Check if empty neuron_morph_list, or if more than one morphology
+        assert os.path.isfile(parameter_file), f"Missing parameter file {parameter_file}"
+        assert os.path.isfile(mechanism_file), f"Missing mechanism file {mechanism_file}"
+
+        neuron_info["morphology"] = snudda_simplify_path(neuron_morph)
+        neuron_info["parameters"] = snudda_simplify_path(parameter_file)
+        neuron_info["mechanisms"] = snudda_simplify_path(mechanism_file)
+        neuron_info["meta"] = snudda_simplify_path(meta_file)
+
+        # Modulation file is optional
+        if os.path.isfile(modulation_file):
+            neuron_info["modulation"] = snudda_simplify_path(modulation_file)
+
+        return neuron_info
+
     # This loops through all single neuron directories in neurons_path
     # in preparation of writing a network config file
 
-    def gather_all_neurons(self, neuron_types=None):
+    def gather_all_neurons(self, neuron_types=None, all_combinations=True):
         all_neurons = collections.OrderedDict()
 
         assert snudda_isdir(self.neurons_path), f"Neurons directory {self.neurons_path} does not exist."
@@ -556,39 +577,61 @@ def gather_all_neurons(self, neuron_types=None):
             neuron_ctr = 0
 
             for nd in neuron_dir:
-                neuron_info = collections.OrderedDict()
+                neuron_info = self.get_neuron_info(nd)
+
+                if all_combinations:
+                    assert "meta" in neuron_info and neuron_info["meta"], \
+                        f"meta.json required for all_combinations=True. {os.path.dirname(neuron_info['parameters'])}"
+
+                    neuron_info_combination_list = self.get_all_combinations(neuron_info)
+                    for ni in neuron_info_combination_list:
+                        n_name = os.path.basename(os.path.dirname(ni["parameters"]))
+                        param_key = ni["parameterKey"]
+                        morph_key = ni["morphologyKey"]
+                        short_name = n_name[:min(10, len(n_name))]
+                        neuron_name = f"{neuron_type}_{short_name}_{param_key}_{morph_key}".replace("-","_")
+                        all_neurons[neuron_name] = ni
+                        neuron_ctr += 1
+                else:
+                    neuron_name = os.path.basename(os.path.dirname(neuron_info["parameters"]))
+                    neuron_ctr += 1
 
-                # Find neuron morphology swc file, obs currently assume lowercase(!)
-                neuron_morph = SnuddaInit.get_morphologies(nd)
+                    all_neurons[neuron_name] = neuron_info
 
-                parameter_file = os.path.join(nd, "parameters.json")
-                mechanism_file = os.path.join(nd, "mechanisms.json")
-                modulation_file = os.path.join(nd, "modulation.json")  # Optional
+            if neuron_ctr > 0:
+                print(f"Found {neuron_ctr} neuron models in {ntd}")
 
-                # Check if empty neuron_morph_list, or if more than one morphology
-                assert os.path.isfile(parameter_file), f"Missing parameter file {parameter_file}"
-                assert os.path.isfile(mechanism_file), f"Missing mechanism file {mechanism_file}"
+        assert len(all_neurons) > 0, (f"No neurons selected. Did you specify an incorrect neuronType? {neuron_types}"
+                                      f"\nSee skipped neurons above error message for available ones.")
 
-                neuron_info["morphology"] = snudda_simplify_path(neuron_morph)
-                neuron_info["parameters"] = snudda_simplify_path(parameter_file)
-                neuron_info["mechanisms"] = snudda_simplify_path(mechanism_file)
+        return all_neurons
 
-                # Modulation file is optional
-                if os.path.isfile(modulation_file):
-                    neuron_info["modulation"] = snudda_simplify_path(modulation_file)
+    @staticmethod
+    def get_all_combinations(neuron_info):
 
-                neuron_name = f"{neuron_type}_{neuron_ctr}"
-                neuron_ctr += 1
+        assert "meta" in neuron_info and neuron_info["meta"]
 
-                all_neurons[neuron_name] = neuron_info
+        pm_list = []
 
-            if neuron_ctr > 0:
-                print(f"Found {neuron_ctr} neurons in {ntd}")
+        with open(snudda_parse_path(neuron_info["parameters"]), "r") as pf:
+            param_data = json.load(pf)
 
-        assert len(all_neurons) > 0, (f"No neurons selected. Did you specify an incorrect neuronType? {neuron_types}"
-                                      f"\nSee skipped neurons above error message for available ones.")
+        with open(snudda_parse_path(neuron_info["meta"]), "r") as mf:
+            meta_data = json.load(mf)
 
-        return all_neurons
+        for p_idx, p_key in enumerate(param_data):
+            assert p_key in meta_data, f"parameter key {p_key} missing in {neuron_info['meta_file']}"
+            for m_idx, m_key in enumerate(meta_data[p_key]):
+                ni = neuron_info.copy()
+                ni["morphologyKey"] = m_key
+                ni["parameterKey"] = p_key
+                ni["morphology_file"] = os.path.join(ni["morphology"], meta_data[p_key][m_key]["morphology"])
+                ni["parameter_id"] = p_idx
+                ni["morphology_id"] = m_idx
+
+                pm_list.append(ni)
+
+        return pm_list
 
     @staticmethod
     def has_axon(neuron_info):
@@ -603,7 +646,22 @@ def has_axon(neuron_info):
         nm.instantiate()
         return nm.all_have_axon()
 
-    def create_network_config(self, neurons_path, num_replicas=10, random_seed=None, neuron_types=None):
+    def create_network_config(self,
+                              neurons_path=None,
+                              num_replicas=10,
+                              random_seed=None,
+                              neuron_types=None,
+                              single_neuron_path=None,
+                              parameter_key=None,
+                              morphology_key=None,
+                              modulation_key=None,
+                              all_combinations=True):
+
+        """ Create a network with num_replicas number of replicas of each neuron found in
+            neuron_path (e.g. Snudda/data/neurons). Alternatively if only one neuron model
+            is required, use single_neuron_path pointing to neuron
+            (e.g. Snudda/data/neurons/striatum/fs/fs_model_1)
+            """
 
         self.neurons_path = neurons_path
 
@@ -622,7 +680,23 @@ def create_network_config(self, neurons_path, num_replicas=10, random_seed=None,
         config_def["Volume"] = volume_def
         config_def["Connectivity"] = dict()  # Unconnected
 
-        neuron_def = self.gather_all_neurons(neuron_types=neuron_types)
+        if single_neuron_path:
+            # Override and only get one neuron
+            assert type(neuron_types) == str, "neuron_types must be string if single_neuron_path set"
+            neuron_def = collections.OrderedDict()
+            neuron_def[neuron_types] = self.get_neuron_info(single_neuron_path)
+
+            if parameter_key:
+                neuron_def[neuron_types]["parameterKey"] = parameter_key
+
+            if morphology_key:
+                neuron_def[neuron_types]["morphologyKey"] = morphology_key
+
+            if modulation_key:
+                neuron_def[neuron_types]["modulationKey"] = modulation_key
+
+        else:
+            neuron_def = self.gather_all_neurons(neuron_types=neuron_types, all_combinations=all_combinations)
 
         fake_axon_density = ["r", "1", 10e-6]
 
diff --git a/snudda/neurons/neuron_model_extended.py b/snudda/neurons/neuron_model_extended.py
index 8e842a8d6..f364b871d 100644
--- a/snudda/neurons/neuron_model_extended.py
+++ b/snudda/neurons/neuron_model_extended.py
@@ -24,7 +24,10 @@ def __init__(self,
                  modulation_file=None,
                  parameter_id=None,
                  morphology_id=None,
-                 modulation_id=None):
+                 modulation_id=None,
+                 parameter_key=None,
+                 morphology_key=None,
+                 modulation_key=None):
 
         """
         Constructor
@@ -38,6 +41,10 @@ def __init__(self,
             parameter_id: ID of parameter set
             morphology_id: ID of morphology set
             modulation_id: ID of neuromodulation parameter set
+            parameter_key (str): parameter key for lookup in parameter.json
+            morphology_key (str): morphology key, together with parameter_key lookup in meta.json
+            modulation_key (str): modulation key, lookup in modulation.json
+
         """
 
         self.name = cell_name
@@ -47,26 +54,27 @@ def __init__(self,
         self.script_dir = os.path.dirname(__file__)
         self.config_dir = os.path.join(self.script_dir, 'config')
 
-        # We now allow multiple variations of morphologies for a given neuron name, so here NeuronPrototype
-        # is used to acquire the actual morphology file we will use for this particular neuron
-        # based on parameter_id and morphology_id.
-        neuron_prototype = NeuronPrototype(neuron_name=cell_name,
-                                           neuron_path=None,
-                                           morphology_path=morph_path,
-                                           parameter_path=param_file,
-                                           mechanism_path=mech_file,
-                                           modulation_path=modulation_file)
-
-        morph_file = neuron_prototype.get_morphology(parameter_id=parameter_id, morphology_id=morphology_id)
-
-        if morph_file is None:
-            print(f"Neuron {cell_name} with morph_path = {morph_path} ({morphology_id}, "
-                  f"parameter_path = {param_file} ({parameter_id}) "
-                  f"has morph_file = {morph_file} (Should not be None)")
-
-            print("Why is morph file None?")
-            import pdb
-            pdb.set_trace()
+        morph_file = None
+        if parameter_key is not None and morphology_key is not None and param_file is not None:
+            meta_file = os.path.join(os.path.dirname(param_file), "meta.json")
+            if os.path.isfile(meta_file):
+                with open(meta_file, "r") as f:
+                    meta_data = json.load(f, object_pairs_hook=OrderedDict)
+                    morph_file = os.path.join(morph_path, meta_data[parameter_key][morphology_key]["morphology"])
+
+        if not morph_file:
+            # We now allow multiple variations of morphologies for a given neuron name, so here NeuronPrototype
+            # is used to acquire the actual morphology file we will use for this particular neuron
+            # based on parameter_id and morphology_id.
+            neuron_prototype = NeuronPrototype(neuron_name=cell_name,
+                                               neuron_path=None,
+                                               morphology_path=morph_path,
+                                               parameter_path=param_file,
+                                               mechanism_path=mech_file,
+                                               modulation_path=modulation_file)
+
+            morph_file = neuron_prototype.get_morphology(parameter_id=parameter_id, morphology_id=morphology_id,
+                                                         parameter_key=parameter_key, morphology_key=morphology_key)
 
         assert morph_file, (f"Neuron {cell_name} with morph_path = {morph_path} ({morphology_id}, "
                             f"parameter_path = {param_file} ({parameter_id}) "
@@ -74,10 +82,10 @@ def __init__(self,
 
         morph = self.define_morphology(replace_axon=True, morph_file=morph_file)
         mechs = self.define_mechanisms(mechanism_config=mech_file)
-        params = self.define_parameters(param_file, parameter_id)
+        params = self.define_parameters(param_file, parameter_id, parameter_key)
 
         if modulation_file is not None:
-            mod_params = self.define_parameters(modulation_file, modulation_id)
+            mod_params = self.define_parameters(modulation_file, modulation_id, modulation_key)
             params = params + mod_params
 
         super(NeuronModel, self).__init__(name=cell_name, morph=morph,
@@ -85,9 +93,6 @@ def __init__(self,
         self.syn_list = []
         self.section_lookup = None
 
-        # import pdb
-        # pdb.set_trace()
-
     ##############################################################################
 
     # Helper function
@@ -135,7 +140,7 @@ def define_mechanisms(self, mechanism_config=None):
 
     # Helper function
 
-    def define_parameters(self, parameter_config=None, parameter_id=None):
+    def define_parameters(self, parameter_config=None, parameter_id=None, parameter_key=None):
         """
         Define parameters based on parameter_config and parameter_id.
         If there are n parameter sets, and parameter_id is k, then the parameter set is n % k."""
@@ -151,21 +156,36 @@ def define_parameters(self, parameter_config=None, parameter_id=None):
 
         if type(param_configs) == OrderedDict:
             # Multiple parameters, pick one
-            assert parameter_id is not None, "Multiple parameter sets require parameter_id set"
 
-            par_key_list = list(param_configs.keys())
-            par_key = par_key_list[parameter_id % len(par_key_list)]
-            param_configs = param_configs[par_key]
+            if parameter_key is not None:
+                assert parameter_key in param_configs, f"Missing parameter key {parameter_key}"
+                p_config = param_configs[parameter_key]
+
+                if parameter_id is not None:
+                    par_key_list = list(param_configs.keys())
+
+                    par_key = par_key_list[parameter_id % len(par_key_list)]
+                    assert par_key == parameter_key, \
+                        (f"parameter_key mismatch, got {parameter_key}, but parameter_id={parameter_id} "
+                         f"implies param_key={par_key}")
+            else:
+                assert parameter_id is not None, "Multiple parameter sets require parameter_id set"
+
+                par_key_list = list(param_configs.keys())
+                par_key = par_key_list[parameter_id % len(par_key_list)]
+                p_config = param_configs[par_key]
 
         elif type(param_configs) == list and type(param_configs[0]) == list:
             # This is old fallback code, for old version format of parameters.json, remove in the future.
             num_params = len(param_configs)
-            param_configs = param_configs[parameter_id % num_params]
+            p_config = param_configs[parameter_id % num_params]
+        else:
+            p_config = param_configs
 
         # Save this to be accessible in the future
-        self.parameters += param_configs
+        self.parameters += p_config
 
-        for param_config in param_configs:
+        for param_config in p_config:
             if 'value' in param_config:
                 frozen = True
                 value = param_config['value']
diff --git a/snudda/neurons/neuron_morphology.py b/snudda/neurons/neuron_morphology.py
index 3d58d3dec..9c8a59923 100644
--- a/snudda/neurons/neuron_morphology.py
+++ b/snudda/neurons/neuron_morphology.py
@@ -30,6 +30,9 @@ def __init__(self,
                  morphology_id=None,
                  parameter_id=None,
                  modulation_id=None,
+                 parameter_key=None,
+                 morphology_key=None,
+                 modulation_key=None,
                  verbose=False,
                  load_morphology=True,
                  hoc=None,
@@ -74,9 +77,15 @@ def __init__(self,
         self.param_data = param_data
         self.mech_filename = mech_filename
         self.modulation = modulation
+
         self.morphology_id = morphology_id
         self.parameter_id = parameter_id
         self.modulation_id = modulation_id
+
+        self.parameter_key = parameter_key
+        self.morphology_key = morphology_key
+        self.modulation_key = modulation_key
+
         self.verbose = verbose
         self.use_cache = use_cache
         self.pickle_version = pickle_version
@@ -163,7 +172,10 @@ def clone(self,
               rotation=None,
               morphology_id=None,
               parameter_id=None,
-              modulation_id=None):
+              modulation_id=None,
+              parameter_key=None,
+              morphology_key=None,
+              modulation_key=None):
 
         """
         Creates a clone copy of a neuron.
@@ -172,10 +184,15 @@ def clone(self,
             load_morphology (bool) : Load morphology into clone?
             position (float,float,float) : x,y,z coordinate of clone
             rotation (rotation matrix) : Rotation matrix for clone
+
             morphology_id: Morphology ID for the clone
             parameter_id: Parameter ID for the clone
             modulation_id: Neuromodulation parameter ID for the clone
 
+            parameter_key (str): Parameter Key for clone
+            morphology_key (str): Morphology Key for clone
+            modulation_key (str): Modulation Key for clone
+
         """
 
         if load_morphology is None:
@@ -200,6 +217,9 @@ def clone(self,
                                       morphology_id=morphology_id,
                                       parameter_id=parameter_id,
                                       modulation_id=modulation_id,
+                                      parameter_key=parameter_key,
+                                      morphology_key=morphology_key,
+                                      modulation_key=modulation_key,
                                       verbose=self.verbose,
                                       load_morphology=False,
                                       hoc=self.hoc,
diff --git a/snudda/neurons/neuron_prototype.py b/snudda/neurons/neuron_prototype.py
index 9c61fdd40..ca0621892 100644
--- a/snudda/neurons/neuron_prototype.py
+++ b/snudda/neurons/neuron_prototype.py
@@ -133,6 +133,8 @@ def get_num_morphologies(self, parameter_id):
 
     def get_parameter_key(self, parameter_id):
 
+        assert parameter_id is not None
+
         if self.parameter_info:
             par_key_list = list(self.parameter_info.keys())
             par_key = par_key_list[parameter_id % len(par_key_list)]
@@ -141,9 +143,16 @@ def get_parameter_key(self, parameter_id):
 
         return par_key
 
-    def get_morph_key(self, parameter_id, morphology_id):
+    def get_morph_key(self, parameter_id, morphology_id, parameter_key=None):
+
+        if parameter_id is None:
+            par_key = parameter_key
+        else:
+            par_key = self.get_parameter_key(parameter_id=parameter_id)
+            assert parameter_key is None or par_key == parameter_key, \
+                (f"parameter_id = {parameter_id} gives parameter_key {par_key}, " 
+                 f"different from parameter_key {parameter_key} provided")
 
-        par_key = self.get_parameter_key(parameter_id=parameter_id)
         if self.meta_info:
             assert par_key in self.meta_info, f"Parameter key {par_key} missing in {self.meta_path}"
             morph_key_list = list(self.meta_info[par_key].keys())
@@ -154,29 +163,72 @@ def get_morph_key(self, parameter_id, morphology_id):
 
         return morph_key
 
-    def get_input_parameters(self, parameter_id, morphology_id):
+    def get_modulation_key(self, modulation_id):
+
+        if self.modulation_info:
+            if type(self.modulation_info) == list:
+                # Old format without keys
+                return None
+
+            modulation_key_list = list(self.modulation_info.keys())
+            modulation_key = modulation_key_list[modulation_id % len(modulation_key_list)]
+        else:
+            modulation_key = None
+
+        return modulation_key
+
+    def get_input_parameters(self, parameter_id=None, morphology_id=None, parameter_key=None, morphology_key=None):
 
-        par_key = self.get_parameter_key(parameter_id=parameter_id)
-        morph_key = self.get_morph_key(parameter_id=parameter_id, morphology_id=morphology_id)
+        if parameter_key is not None and morphology_key is not None:
+            if self.meta_info and "input" in self.meta_info[parameter_key][morphology_key]:
+                input_info = self.meta_info[parameter_key][morphology_key]["input"]
+            else:
+                input_info = dict()
 
-        if self.meta_info and "input" in self.meta_info[par_key][morph_key]:
-            input_info = self.meta_info[par_key][morph_key]["input"]
         else:
-            input_info = dict()
+            # Fallback if the user gave ID instead of Keys (will remove this at some point)
+            par_key = self.get_parameter_key(parameter_id=parameter_id)
+            morph_key = self.get_morph_key(parameter_id=parameter_id, morphology_id=morphology_id)
+
+            if self.meta_info and "input" in self.meta_info[par_key][morph_key]:
+                input_info = self.meta_info[par_key][morph_key]["input"]
+            else:
+                input_info = dict()
 
         return input_info
 
-    def get_morphology(self, parameter_id, morphology_id):
+    def get_morphology(self, parameter_id=None, morphology_id=None, parameter_key=None, morphology_key=None):
 
         """
         Returns morphology for a given parameter_id, morphology_id combination.
         (Each parameter set has a set of morphologies that it is valid for)
         """
 
-        par_key = self.get_parameter_key(parameter_id=parameter_id)
+        # TODO: In the future remove parameter_id and morphology_id and only use keys
+        if parameter_id is not None:
+            par_key = self.get_parameter_key(parameter_id=parameter_id)
+            if parameter_key:
+                assert par_key == parameter_key, \
+                    f"Mismatch. Parameter ID {parameter_id} has parameter_key {par_key}, not {parameter_key}"
+        elif parameter_key:
+            par_key = parameter_key
+        else:
+            par_key = None
+
+        if self.meta_info and par_key is not None:
+
+            if morphology_id is not None:
+                morph_key = self.get_morph_key(parameter_id=parameter_id, morphology_id=morphology_id,
+                                               parameter_key=par_key)
+                if morphology_key:
+                    assert morph_key == morphology_key, \
+                        f"Mismatch: Expected morphology_key {morph_key}, got {morphology_key}"
+            elif morphology_key is not None:
+                morph_key = morphology_key
+                assert morphology_key in self.meta_info[par_key], f"Missing morphology_key {morphology_key}"
+            else:
+                assert False, f"morphology_id or morphology_key must be specified if meta_info is used"
 
-        if self.meta_info and par_key:
-            morph_key = self.get_morph_key(parameter_id=parameter_id, morphology_id=morphology_id)
             morph_path = os.path.join(self.morphology_path, self.meta_info[par_key][morph_key]["morphology"])
             assert os.path.isfile(morph_path), f"Morphology file {morph_path} is missing (listed in {self.meta_path})"
 
@@ -197,7 +249,14 @@ def get_morphology(self, parameter_id, morphology_id):
                 morph_path = None
 
         if morph_path is None:
-            print("morph_path is None. Is SNUDDA_DATA set correctly?")
+            print(f"morph_path is None for {self.neuron_name} path: {self.neuron_path}. "
+                  f"Is SNUDDA_DATA set correctly? ({os.environ['SNUDDA_DATA']})")
+            import pdb
+            pdb.set_trace()
+
+        assert morph_path is not None, \
+            (f"morph_path is None for {self.neuron_name} path: {self.neuron_path}. "
+             f"Is SNUDDA_DATA set correctly? ({os.environ['SNUDDA_DATA']})")
 
         return morph_path
 
@@ -287,49 +346,66 @@ def all_have_axon(self):
     def all_have_dend(self):
         return all([len(m.dend) > 0 for m in self.morphology_cache.values()])
 
-    def clone(self, parameter_id, morphology_id, modulation_id,
+    def clone(self, parameter_id=None, morphology_id=None, modulation_id=None,
+              parameter_key=None, morphology_key=None, modulation_key=None,
               position=None, rotation=None, get_cache_original=False):
         """
         Creates a clone of the neuron prototype, with given position and rotation.
 
+        Use either keys or id (keys have precedence if both given)
+
         Args:
             parameter_id (int) : parameter set to use
             morphology_id (int) : morphology set to use, a parameter set can have multiple morphology variations
             modulation_id (int) : neuro-modulation parameter set to use
+
+            parameter_key (str) : parameter key for parameter set in parameters.json
+            morphology_key (str) : morphology key for morphology in meta.json
+            modulation_key (str) : modulation key for neuromodulation in modulation.json
+
             position (float,float,float) : position of neuron clone
             rotation : rotation (3x3 numpy matrix)
             get_cache_original (bool) : return the original rather than a clone
 
         """
 
-        if (parameter_id, morphology_id) not in self.morphology_lookup:
-            morph_path = self.get_morphology(parameter_id=parameter_id, morphology_id=morphology_id)
-
-            morph_tag = os.path.basename(morph_path)
-            self.morphology_lookup[parameter_id, morphology_id] = morph_tag
-
-            if morph_tag not in self.morphology_cache:
-                # TODO: hoc file will depend on both morphology_id and parameter_id, we ignore it for now
-                self.morphology_cache[morph_tag] = NeuronMorphology(swc_filename=morph_path,
-                                                                    param_data=self.parameter_path,
-                                                                    mech_filename=self.mechanism_path,
-                                                                    name=self.neuron_name,
-                                                                    hoc=None,
-                                                                    load_morphology=self.load_morphology,
-                                                                    virtual_neuron=self.virtual_neuron,
-                                                                    axon_stump_id_flag=self.axon_stump_id_flag)
-        else:
-            morph_tag = self.morphology_lookup[parameter_id, morphology_id]
+        morph_path = self.get_morphology(parameter_key=parameter_key, morphology_key=morphology_key,
+                                         parameter_id=parameter_id, morphology_id=morphology_id)
+        morph_tag = os.path.basename(morph_path)
+
+        if morph_tag not in self.morphology_cache:
+            # TODO: hoc file will depend on both morphology_id and parameter_id, we ignore it for now
+            self.morphology_cache[morph_tag] = NeuronMorphology(swc_filename=morph_path,
+                                                                param_data=self.parameter_path,
+                                                                mech_filename=self.mechanism_path,
+                                                                name=self.neuron_name,
+                                                                hoc=None,
+                                                                load_morphology=self.load_morphology,
+                                                                virtual_neuron=self.virtual_neuron,
+                                                                axon_stump_id_flag=self.axon_stump_id_flag)
 
         if get_cache_original:
             assert position is None and rotation is None and modulation_id is None, \
                     "If get_cache_original is passed position, rotation and modulation_id must be None"
             morph = self.morphology_cache[morph_tag]
         else:
+            # Add the keys also for parameter, morphology and modulation
+            if parameter_key is None:
+                parameter_key = self.get_parameter_key(parameter_id=parameter_id)
+
+            if morphology_key is None:
+                morphology_key = self.get_morph_key(parameter_id=parameter_id, morphology_id=morphology_id)
+
+            if modulation_key is None:
+                modulation_key = self.get_modulation_key(modulation_id=modulation_id)
+
             morph = self.morphology_cache[morph_tag].clone(position=position,
                                                            rotation=rotation,
                                                            parameter_id=parameter_id,
                                                            morphology_id=morphology_id,
-                                                           modulation_id=modulation_id)
+                                                           modulation_id=modulation_id,
+                                                           parameter_key=parameter_key,
+                                                           morphology_key=morphology_key,
+                                                           modulation_key=modulation_key)
         return morph
 
diff --git a/snudda/place/place.py b/snudda/place/place.py
index 1a6e03236..01b759b55 100644
--- a/snudda/place/place.py
+++ b/snudda/place/place.py
@@ -166,7 +166,10 @@ def add_neurons(self,
                     hoc=None,
                     volume_id=None,
                     virtual_neuron=False,
-                    axon_density=None):
+                    axon_density=None,
+                    parameter_key=None,
+                    morphology_key=None,
+                    modulation_key=None):
 
         """
         Add neurons to volume specified.
@@ -182,6 +185,10 @@ def add_neurons(self,
             volume_id (str): ID of the volume to place neurons in
             virtual_neuron (bool): Real or virtual neuron, the latter can be used to model axons giving input to network
             axon_density (str): Axon density
+
+            parameter_key (str, optional): Parameter Key to use, default=None (Randomise between all available)
+            morphology_key (str, optional): Morphology Key to use, default=None (Randomise between all available)
+            modulation_key (str, optional): Key for neuromodulation, default=None (Randomise between all available)
         """
 
         assert volume_id is not None, f"You must specify a volume for neuron {name}"
@@ -213,15 +220,29 @@ def add_neurons(self,
             # parameter.json can be a list of lists, this allows you to select the
             # parameter set randomly
             # modulation.json is similarly formatted, pick a parameter set here
-            parameter_id = self.random_generator.integers(1000000)
-            modulation_id = self.random_generator.integers(1000000)
-            morphology_id = self.random_generator.integers(1000000)
+            if parameter_key is None:
+                parameter_id = self.random_generator.integers(1000000)
+            else:
+                parameter_id = None
+
+            if modulation_key is None:
+                modulation_id = self.random_generator.integers(1000000)
+            else:
+                modulation_id = None
+
+            if morphology_key is None:
+                morphology_id = self.random_generator.integers(1000000)
+            else:
+                morphology_id = None
 
             n = neuron_prototype.clone(position=coords,
                                        rotation=rotation,
                                        morphology_id=morphology_id,
                                        parameter_id=parameter_id,
-                                       modulation_id=modulation_id)
+                                       modulation_id=modulation_id,
+                                       parameter_key=parameter_key,
+                                       morphology_key=morphology_key,
+                                       modulation_key=modulation_key)
 
             # self.writeLog("Place " + str(self.cellPos[i,:]))
 
@@ -241,7 +262,7 @@ def add_neurons(self,
 
     ############################################################################
 
-    def parse_config(self, config_file=None):
+    def parse_config(self, config_file=None, resort_neurons=True):
 
         """ Parse network config_file """
 
@@ -435,6 +456,21 @@ def parse_config(self, config_file=None):
             else:
                 axon_density = None
 
+            if "parameterKey" in definition:
+                parameter_key = definition["parameterKey"]
+            else:
+                parameter_key = None
+
+            if "morphologyKey" in definition:
+                morphology_key = definition["morphologyKey"]
+            else:
+                morphology_key = None
+
+            if "modulationKey" in definition:
+                modulation_key = definition["modulationKey"]
+            else:
+                modulation_key = None
+
             self.write_log(f"Adding: {num} {neuron_name}")
             self.add_neurons(name=neuron_name,
                              swc_path=morph,
@@ -445,13 +481,17 @@ def parse_config(self, config_file=None):
                              hoc=hoc,
                              volume_id=volume_id,
                              virtual_neuron=virtual_neuron,
-                             axon_density=axon_density)
+                             axon_density=axon_density,
+                             parameter_key=parameter_key,
+                             morphology_key=morphology_key,
+                             modulation_key=modulation_key)
 
         self.config_file = config_file
 
         # We reorder neurons, sorting their IDs after position
         # -- UPDATE: Now we spatial cluster neurons depending on number of workers
-        self.sort_neurons(sort_idx=self.cluster_neurons())
+        if resort_neurons:
+            self.sort_neurons(sort_idx=self.cluster_neurons())
 
         if False:  # Debug purposes, make sure neuron ranges are ok
             self.plot_ranges()
@@ -597,14 +637,53 @@ def write_data(self, file_name=None):
                                                            "int",
                                                            compression="gzip")
 
+        pk_list = [n.parameter_key.encode("ascii", "ignore")
+                   if n.parameter_key is not None else ""
+                   for n in self.neurons]
+        pk_str_type = 'S' + str(max(1, max([len(x) for x in pk_list])))
+
+        mk_list = [n.morphology_key.encode("ascii", "ignore")
+                   if n.morphology_key is not None else ""
+                   for n in self.neurons]
+        mk_str_type = 'S' + str(max(1, max([len(x) for x in mk_list])))
+
+        mok_list = [n.modulation_key.encode("ascii", "ignore")
+                    if n.modulation_key is not None else ""
+                    for n in self.neurons]
+        mok_str_type = 'S' + str(max(1, max([len(x) for x in mok_list])))
+
+        neuron_param_key = neuron_group.create_dataset("parameterKey",
+                                                       (len(self.neurons),),
+                                                       pk_str_type,
+                                                       compression="gzip")
+
+        neuron_morph_key = neuron_group.create_dataset("morphologyKey",
+                                                       (len(self.neurons),),
+                                                       mk_str_type,
+                                                       compression="gzip")
+
+        neuron_modulation_key = neuron_group.create_dataset("modulationKey",
+                                                            (len(self.neurons),),
+                                                            mok_str_type,
+                                                            compression="gzip")
+
         for (i, n) in enumerate(self.neurons):
             neuron_position[i] = n.position
             neuron_rotation[i] = n.rotation.reshape(1, 9)
             neuron_dend_radius[i] = n.max_dend_radius
             neuron_axon_radius[i] = n.max_axon_radius
-            neuron_param_id[i] = n.parameter_id
-            neuron_morph_id[i] = n.morphology_id
-            neuron_modulation_id[i] = n.modulation_id
+            neuron_param_id[i] = -1 if n.parameter_id is None else n.parameter_id
+            neuron_morph_id[i] = -1 if n.morphology_id is None else n.morphology_id
+            neuron_modulation_id[i] = -1 if n.modulation_id is None else n.modulation_id
+
+            if n.parameter_key:
+                neuron_param_key[i] = n.parameter_key
+
+            if n.morphology_key:
+                neuron_morph_key[i] = n.morphology_key
+
+            if n.modulation_key:
+                neuron_modulation_key[i] = n.modulation_key
 
         # Store input information
         if self.population_unit is None:
diff --git a/snudda/plotting/plot_spike_raster.py b/snudda/plotting/plot_spike_raster.py
index 52c553210..291eadc85 100644
--- a/snudda/plotting/plot_spike_raster.py
+++ b/snudda/plotting/plot_spike_raster.py
@@ -147,15 +147,17 @@ def plot_colour_raster(self, skip_time, plot_idx="sort", type_order=None, figsiz
 
         # histogram
         spike_count = []
-        max0 = 0
-        max1 = 0
 
+        max0=0
+        max1=0
+    
         for t in type_order:
-            pruned_spikes = [self.time[int(i)] - skip_time for i in t_idx if i in type_dict[t]]
+            pruned_spikes=self.time[type_dict[t]] - skip_time
+            pruned_spikes=pruned_spikes[pruned_spikes>0]
             num_of_type = len([x["type"] for x in self.network_info.data["neurons"] if x["type"].lower() == t])
+            binwidth =0.01 #10  # ms
+            binRange = np.arange(0, ((self.end_time)+skip_time + binwidth), binwidth)
 
-            bin_width = 0.01  #10  # ms
-            bin_range = np.arange(0, self.end_time + skip_time + bin_width, bin_width)
             if t in type_division[0]:
                 counts0, bins0, bars0 = atop.hist(pruned_spikes,
                                                   bins=bin_range,
diff --git a/snudda/simulate/simulate.py b/snudda/simulate/simulate.py
index 916f1a231..3537441ce 100644
--- a/snudda/simulate/simulate.py
+++ b/snudda/simulate/simulate.py
@@ -460,6 +460,11 @@ def setup_neurons(self):
                 morphology_id = self.network_info["neurons"][ID]["morphologyID"]
                 modulation_id = self.network_info["neurons"][ID]["modulationID"]
 
+                parameter_key = self.network_info["neurons"][ID]["parameterKey"]
+                morphology_key = self.network_info["neurons"][ID]["morphologyKey"]
+                modulation_key = self.network_info["neurons"][ID]["modulationKey"]
+
+
                 self.neurons[ID] = NeuronModel(param_file=param,
                                                morph_path=morph,
                                                mech_file=mech,
@@ -467,7 +472,10 @@ def setup_neurons(self):
                                                modulation_file=modulation,
                                                morphology_id=morphology_id,
                                                parameter_id=parameter_id,
-                                               modulation_id=modulation_id)
+                                               modulation_id=modulation_id,
+                                               parameter_key=parameter_key,
+                                               morphology_key=morphology_key,
+                                               modulation_key=modulation_key)
 
                 # Register ID as belonging to this worker node
                 self.pc.set_gid2node(ID, int(self.pc.id()))
diff --git a/snudda/utils/load.py b/snudda/utils/load.py
index 6e8743f56..6641d2b86 100755
--- a/snudda/utils/load.py
+++ b/snudda/utils/load.py
@@ -335,7 +335,8 @@ def extract_neurons(hdf5_file):
         for name, neuron_id, hoc, pos, rot, dend_radius, axon_radius, virtual, vID, \
             axon_density_type, axon_density, axon_density_radius, \
             axon_density_bounds_xyz, \
-            morph, parameter_id, morphology_id, modulation_id \
+            morph, parameter_id, morphology_id, modulation_id,\
+            parameter_key, morphology_key, modulation_key \
                 in zip(hdf5_file["network/neurons/name"][:],
                        hdf5_file["network/neurons/neuronID"][:],
                        hdf5_file["network/neurons/hoc"][:],
@@ -352,7 +353,11 @@ def extract_neurons(hdf5_file):
                        hdf5_file["network/neurons/morphology"][:],
                        hdf5_file["network/neurons/parameterID"][:],
                        hdf5_file["network/neurons/morphologyID"][:],
-                       hdf5_file["network/neurons/modulationID"][:]):
+                       hdf5_file["network/neurons/modulationID"][:],
+                       hdf5_file["network/neurons/parameterKey"][:],
+                       hdf5_file["network/neurons/morphologyKey"][:],
+                       hdf5_file["network/neurons/modulationKey"][:]
+                       ):
 
             n = dict([])
 
@@ -391,9 +396,14 @@ def extract_neurons(hdf5_file):
 
             n["axonDensityRadius"] = axon_density_radius
 
-            n["parameterID"] = parameter_id
-            n["morphologyID"] = morphology_id
-            n["modulationID"] = modulation_id
+            n["parameterID"] = None if parameter_id < 0 else parameter_id
+            n["morphologyID"] = None if morphology_id < 0 else morphology_id
+            n["modulationID"] = None if modulation_id < 0 else modulation_id
+
+            # If the code fails here, use snudda/utils/upgrade_old_network_file.py to upgrade your old data files
+            n["parameterKey"] = SnuddaLoad.to_str(parameter_key)
+            n["morphologyKey"] = SnuddaLoad.to_str(morphology_key)
+            n["modulationKey"] = SnuddaLoad.to_str(modulation_key)
 
             neurons.append(n)
 
@@ -797,12 +807,12 @@ def snudda_load_cli():
         print("Neurons in network: ")
 
         if args.detailed:
-            for nid, name, pos, par_id, morph_id, mod_id \
+            for nid, name, pos, par_key, morph_key, mod_key \
                     in [(x["neuronID"], x["name"], x["position"],
-                         x["parameterID"], x["morphologyID"], x["modulationID"])
+                         x["parameterKey"], x["morphologyKey"], x["modulationKey"])
                         for x in nl.data["neurons"]]:
-                print("%d : %s  (x: %f, y: %f, z: %f), par_id: %d, morph_id: %d, mod_id: %d"
-                      % (nid, name, pos[0], pos[1], pos[2], par_id, morph_id, mod_id))
+                print("%d : %s  (x: %f, y: %f, z: %f), par_key: %d, morph_key: %d, mod_key: %d"
+                      % (nid, name, pos[0], pos[1], pos[2], par_key, morph_key, mod_key))
         else:
             for nid, name, pos in [(x["neuronID"], x["name"], x["position"]) for x in nl.data["neurons"]]:
                 print("%d : %s  (x: %f, y: %f, z: %f)" % (nid, name, pos[0], pos[1], pos[2]))
diff --git a/snudda/utils/reposition_neurons.py b/snudda/utils/reposition_neurons.py
index 572231b3f..11180cbe0 100644
--- a/snudda/utils/reposition_neurons.py
+++ b/snudda/utils/reposition_neurons.py
@@ -61,6 +61,23 @@ def set_morphology_id(self, neuron_id, morphology_id):
         else:
             self.hdf5_file["network/neurons/morphologyID"][:] = morphology_id
 
+    def set_morphology_key(self, neuron_id, morphology_key):
+
+        """ Set morphologyKey for neuron with neuron_id (neuron_id = None means all neurons) """
+        if neuron_id:
+            self.hdf5_file["network/neurons/morphologyKey"][neuron_id] = morphology_key
+        else:
+            self.hdf5_file["network/neurons/morphologyKey"][:] = morphology_key
+
+    def set_parameter_key(self, neuron_id, parameter_key):
+
+        """ Set parameterKey for neuron with neuron_id (neuron_id = None means all neurons) """
+
+        if neuron_id:
+            self.hdf5_file["network/neurons/parameterKey"][neuron_id] = parameter_key
+        else:
+            self.hdf5_file["network/neurons/parameterKey"][:] = parameter_key
+
     def set_parameter_id(self, neuron_id, parameter_id):
 
         """ Set parameterID for neuron with neuron_id (neuron_id = None means all neurons) """
@@ -78,3 +95,12 @@ def set_modulation_id(self, neuron_id, modulation_id):
             self.hdf5_file["network/neurons/modulationID"][neuron_id] = modulation_id
         else:
             self.hdf5_file["network/neurons/modulationID"][:] = modulation_id
+
+    def set_modulation_key(self, neuron_id, modulation_key):
+
+        """ Set modulationKey for neuron with neuron_id (neuron_id = None means all neurons) """
+
+        if neuron_id:
+            self.hdf5_file["network/neurons/modulationKey"][neuron_id] = modulation_key
+        else:
+            self.hdf5_file["network/neurons/modulationKey"][:] = modulation_key
diff --git a/snudda/utils/upgrade_old_network_file.py b/snudda/utils/upgrade_old_network_file.py
index 6a6d9a29c..0067e2e7e 100755
--- a/snudda/utils/upgrade_old_network_file.py
+++ b/snudda/utils/upgrade_old_network_file.py
@@ -19,7 +19,25 @@ def upgrade_old_network_file(file_name):
             neuron_morph_id_data[:] = 0
 
         else:
-            print("morphologyID already exists, aborting")
+            print("morphologyID already exists, ignoring")
+
+        if "morphologyKey" not in neuron_group:
+            print("Adding morphologyKey to file, default value empty")
+            n_neurons = len(f["network/neurons/morphology"])
+
+            neuron_morph_key_data = neuron_group.create_dataset("morphologyKey", n_neurons, "S5", compression="gzip")
+
+        if "parameterKey" not in neuron_group:
+            print("Adding parameterKey to file, default value empty")
+            n_neurons = len(f["network/neurons/morphology"])
+
+            neuron_morph_key_data = neuron_group.create_dataset("parameterKey", n_neurons, "S5", compression="gzip")
+
+        if "modulationKey" not in neuron_group:
+            print("Adding morphologyKey to file, default value empty")
+            n_neurons = len(f["network/neurons/morphology"])
+
+            neuron_morph_key_data = neuron_group.create_dataset("modulationKey", n_neurons, "S5", compression="gzip")
 
 
 if __name__ == "__main__":


Test patch:
diff --git a/tests/networks/network_testing_init_cube/network-config.json b/tests/networks/network_testing_init_cube/network-config.json
index 546efd70b..3499a31c1 100644
--- a/tests/networks/network_testing_init_cube/network-config.json
+++ b/tests/networks/network_testing_init_cube/network-config.json
@@ -1,12 +1,12 @@
 {
     "RandomSeed": {
-        "init": 2929773272,
-        "place": 1373393432,
-        "detect": 3918139253,
-        "project": 1541461417,
-        "prune": 2253302726,
-        "input": 4158839414,
-        "simulate": 3736834724
+        "init": 247808882,
+        "place": 799680898,
+        "detect": 1560220428,
+        "project": 1228648387,
+        "prune": 299996022,
+        "input": 1052838105,
+        "simulate": 2972898657
     },
     "Volume": {
         "Striatum": {
@@ -17,7 +17,7 @@
         }
     },
     "Connectivity": {
-        "FSN,FSN": {
+        "FS,FS": {
             "GABA": {
                 "conductance": [
                     1.1e-09,
@@ -39,7 +39,8 @@
                     "softMax": 5,
                     "mu2": 2,
                     "a3": 1,
-                    "distPruning": null
+                    "distPruning": null,
+                    "cluster": false
                 }
             },
             "GapJunction": {
@@ -53,11 +54,12 @@
                     "softMax": 8,
                     "mu2": 2,
                     "a3": 1.0,
-                    "distPruning": null
+                    "distPruning": null,
+                    "cluster": false
                 }
             }
         },
-        "FSN,dSPN": {
+        "FS,dSPN": {
             "GABA": {
                 "conductance": [
                     1.1e-09,
@@ -72,7 +74,7 @@
                         0.008,
                         1000.0
                     ],
-                    "parameterFile": "$DATA/synapses/striatum/PlanertFitting-FD-tmgaba-fit.json",
+                    "parameterFile": "$SNUDDA_DATA/synapses/striatum/PlanertFitting-FD-tmgaba-fit.json",
                     "modFile": "tmGabaA"
                 },
                 "pruning": {
@@ -80,11 +82,12 @@
                     "softMax": 5,
                     "mu2": 2,
                     "a3": 1.0,
-                    "distPruning": "exp(-(0.5*d/60e-6)**2)"
+                    "distPruning": "exp(-(0.5*d/60e-6)**2)",
+                    "cluster": false
                 }
             }
         },
-        "FSN,iSPN": {
+        "FS,iSPN": {
             "GABA": {
                 "conductance": [
                     1.1e-09,
@@ -99,7 +102,7 @@
                         0.008,
                         1000.0
                     ],
-                    "parameterFile": "$DATA/synapses/striatum/PlanertFitting-FI-tmgaba-fit.json",
+                    "parameterFile": "$SNUDDA_DATA/synapses/striatum/PlanertFitting-FI-tmgaba-fit.json",
                     "modFile": "tmGabaA"
                 },
                 "pruning": {
@@ -107,11 +110,12 @@
                     "softMax": 5,
                     "mu2": 2,
                     "a3": 0.9,
-                    "distPruning": "exp(-(0.5*d/60e-6)**2)"
+                    "distPruning": "exp(-(0.5*d/60e-6)**2)",
+                    "cluster": false
                 }
             }
         },
-        "FSN,LTS": {
+        "FS,LTS": {
             "GABA": {
                 "conductance": [
                     1.1e-10,
@@ -125,7 +129,8 @@
                     "softMax": 3,
                     "mu2": 2,
                     "a3": 1.0,
-                    "distPruning": null
+                    "distPruning": null,
+                    "cluster": false
                 }
             }
         },
@@ -145,7 +150,7 @@
                         1000.0
                     ],
                     "failRate": 0.7,
-                    "parameterFile": "$DATA/synapses/striatum/PlanertFitting-DD-tmgaba-fit.json",
+                    "parameterFile": "$SNUDDA_DATA/synapses/striatum/PlanertFitting-DD-tmgaba-fit.json",
                     "modFile": "tmGabaA"
                 },
                 "pruning": {
@@ -153,14 +158,16 @@
                     "softMax": 3,
                     "mu2": 2.4,
                     "a3": 1.0,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 },
                 "pruningOther": {
                     "f1": 0.38,
                     "softMax": 3,
                     "mu2": 2.4,
                     "a3": 1.0,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 }
             }
         },
@@ -180,7 +187,7 @@
                         1000.0
                     ],
                     "failRate": 0.7,
-                    "parameterFile": "$DATA/synapses/striatum/PlanertFitting-DI-tmgaba-fit.json",
+                    "parameterFile": "$SNUDDA_DATA/synapses/striatum/PlanertFitting-DI-tmgaba-fit.json",
                     "modFile": "tmGabaA"
                 },
                 "pruning": {
@@ -188,14 +195,16 @@
                     "softMax": 3,
                     "mu2": 2.4,
                     "a3": 1.0,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 },
                 "pruningOther": {
                     "f1": 0.2,
                     "softMax": 3,
                     "mu2": 2.4,
                     "a3": 1.0,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 }
             }
         },
@@ -214,7 +223,8 @@
                     "softMax": 3,
                     "mu2": 2.4,
                     "a3": 0.1,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 }
             }
         },
@@ -234,7 +244,7 @@
                         1000.0
                     ],
                     "failRate": 0.4,
-                    "parameterFile": "$DATA/synapses/striatum/PlanertFitting-ID-tmgaba-fit.json",
+                    "parameterFile": "$SNUDDA_DATA/synapses/striatum/PlanertFitting-ID-tmgaba-fit.json",
                     "modFile": "tmGabaA"
                 },
                 "pruning": {
@@ -242,14 +252,16 @@
                     "softMax": 4,
                     "mu2": 2.4,
                     "a3": 1.0,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 },
                 "pruningOther": {
                     "f1": 0.3,
                     "softMax": 4,
                     "mu2": 2.4,
                     "a3": 1.0,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 }
             }
         },
@@ -269,7 +281,7 @@
                         1000.0
                     ],
                     "failRate": 0.4,
-                    "parameterFile": "$DATA/synapses/striatum/PlanertFitting-II-tmgaba-fit.json",
+                    "parameterFile": "$SNUDDA_DATA/synapses/striatum/PlanertFitting-II-tmgaba-fit.json",
                     "modFile": "tmGabaA"
                 },
                 "pruning": {
@@ -277,14 +289,16 @@
                     "softMax": 4,
                     "mu2": 2.4,
                     "a3": 1.0,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 },
                 "pruningOther": {
                     "f1": 0.55,
                     "softMax": 4,
                     "mu2": 2.4,
                     "a3": 1.0,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 }
             }
         },
@@ -303,7 +317,8 @@
                     "softMax": 3,
                     "mu2": 2.4,
                     "a3": 0.1,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 }
             }
         },
@@ -329,7 +344,8 @@
                     "softMax": 15,
                     "mu2": 3,
                     "a3": 0.3,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 }
             }
         },
@@ -355,7 +371,8 @@
                     "softMax": 15,
                     "mu2": 3,
                     "a3": 0.3,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 }
             }
         },
@@ -373,61 +390,67 @@
                     "softMax": 10,
                     "mu2": 3,
                     "a3": 0.4,
-                    "distPruning": null
+                    "distPruning": null,
+                    "cluster": false
                 }
             }
         }
     },
     "Neurons": {
-        "FSN_0": {
-            "morphology": "$DATA/neurons/striatum/fs/str-fs-e180418_FS5-mMTC251001A-IDB-v20190301/MTC251001A-IDB-cor-rep.swc",
-            "parameters": "$DATA/neurons/striatum/fs/str-fs-e180418_FS5-mMTC251001A-IDB-v20190301/parameters.json",
-            "mechanisms": "$DATA/neurons/striatum/fs/str-fs-e180418_FS5-mMTC251001A-IDB-v20190301/mechanisms.json",
-            "modulation": "$DATA/neurons/striatum/fs/str-fs-e180418_FS5-mMTC251001A-IDB-v20190301/modulation.json",
-            "num": 325,
+        "FS_0": {
+            "morphology": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e161024_FS16-mDR-rat-Mar-13-08-1-536-R-v20210210/morphology",
+            "parameters": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e161024_FS16-mDR-rat-Mar-13-08-1-536-R-v20210210/parameters.json",
+            "mechanisms": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e161024_FS16-mDR-rat-Mar-13-08-1-536-R-v20210210/mechanisms.json",
+            "num": 260,
             "hoc": null,
             "neuronType": "neuron",
             "rotationMode": "random",
             "volumeID": "Striatum"
         },
-        "FSN_1": {
-            "morphology": "$DATA/neurons/striatum/fs/str-fs-e161205_FS1-mMTC180800A-IDB-v20190312/MTC180800A-IDB-cor-rep.swc",
-            "parameters": "$DATA/neurons/striatum/fs/str-fs-e161205_FS1-mMTC180800A-IDB-v20190312/parameters.json",
-            "mechanisms": "$DATA/neurons/striatum/fs/str-fs-e161205_FS1-mMTC180800A-IDB-v20190312/mechanisms.json",
-            "modulation": "$DATA/neurons/striatum/fs/str-fs-e161205_FS1-mMTC180800A-IDB-v20190312/modulation.json",
-            "num": 325,
+        "FS_1": {
+            "morphology": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e160628_FS2-mMTC180800A-IDB-v20210210/morphology",
+            "parameters": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e160628_FS2-mMTC180800A-IDB-v20210210/parameters.json",
+            "mechanisms": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e160628_FS2-mMTC180800A-IDB-v20210210/mechanisms.json",
+            "num": 260,
             "hoc": null,
             "neuronType": "neuron",
             "rotationMode": "random",
             "volumeID": "Striatum"
         },
-        "FSN_2": {
-            "morphology": "$DATA/neurons/striatum/fs/str-fs-e161024_FS16-mDR-rat-Mar-13-08-1-536-R-v20190225/DR-rat-Mar-13-08-1-536-R-cor-rep.swc",
-            "parameters": "$DATA/neurons/striatum/fs/str-fs-e161024_FS16-mDR-rat-Mar-13-08-1-536-R-v20190225/parameters.json",
-            "mechanisms": "$DATA/neurons/striatum/fs/str-fs-e161024_FS16-mDR-rat-Mar-13-08-1-536-R-v20190225/mechanisms.json",
-            "modulation": "$DATA/neurons/striatum/fs/str-fs-e161024_FS16-mDR-rat-Mar-13-08-1-536-R-v20190225/modulation.json",
-            "num": 325,
+        "FS_2": {
+            "morphology": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e180418_FS5-mMTC251001A-IDB-v20210211/morphology",
+            "parameters": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e180418_FS5-mMTC251001A-IDB-v20210211/parameters.json",
+            "mechanisms": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e180418_FS5-mMTC251001A-IDB-v20210211/mechanisms.json",
+            "num": 260,
             "hoc": null,
             "neuronType": "neuron",
             "rotationMode": "random",
             "volumeID": "Striatum"
         },
-        "FSN_3": {
-            "morphology": "$DATA/neurons/striatum/fs/str-fs-e160628_FS2-mMTC180800A-IDB-v20190226/MTC180800A-IDB-cor-rep.swc",
-            "parameters": "$DATA/neurons/striatum/fs/str-fs-e160628_FS2-mMTC180800A-IDB-v20190226/parameters.json",
-            "mechanisms": "$DATA/neurons/striatum/fs/str-fs-e160628_FS2-mMTC180800A-IDB-v20190226/mechanisms.json",
-            "modulation": "$DATA/neurons/striatum/fs/str-fs-e160628_FS2-mMTC180800A-IDB-v20190226/modulation.json",
-            "num": 325,
+        "FS_3": {
+            "morphology": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e161205_FS1-mMTC180800A-IDB-v20210210/morphology",
+            "parameters": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e161205_FS1-mMTC180800A-IDB-v20210210/parameters.json",
+            "mechanisms": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e161205_FS1-mMTC180800A-IDB-v20210210/mechanisms.json",
+            "num": 260,
+            "hoc": null,
+            "neuronType": "neuron",
+            "rotationMode": "random",
+            "volumeID": "Striatum"
+        },
+        "FS_4": {
+            "morphology": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e161205_FS1-mBE104E-v20210209/morphology",
+            "parameters": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e161205_FS1-mBE104E-v20210209/parameters.json",
+            "mechanisms": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e161205_FS1-mBE104E-v20210209/mechanisms.json",
+            "num": 260,
             "hoc": null,
             "neuronType": "neuron",
             "rotationMode": "random",
             "volumeID": "Striatum"
         },
         "dSPN_0": {
-            "morphology": "$DATA/neurons/striatum/dspn/str-dspn-e150602_c1_D1-mWT-0728MSN01-v20190508/WT-0728MSN01-cor-rep-ax.swc",
-            "parameters": "$DATA/neurons/striatum/dspn/str-dspn-e150602_c1_D1-mWT-0728MSN01-v20190508/parameters.json",
-            "mechanisms": "$DATA/neurons/striatum/dspn/str-dspn-e150602_c1_D1-mWT-0728MSN01-v20190508/mechanisms.json",
-            "modulation": "$DATA/neurons/striatum/dspn/str-dspn-e150602_c1_D1-mWT-0728MSN01-v20190508/modulation.json",
+            "morphology": "$SNUDDA_DATA/neurons/striatum/dspn/str-dspn-e150917_c9_D1-mWT-1215MSN03-v20211026/morphology",
+            "parameters": "$SNUDDA_DATA/neurons/striatum/dspn/str-dspn-e150917_c9_D1-mWT-1215MSN03-v20211026/parameters.json",
+            "mechanisms": "$SNUDDA_DATA/neurons/striatum/dspn/str-dspn-e150917_c9_D1-mWT-1215MSN03-v20211026/mechanisms.json",
             "num": 11875,
             "hoc": null,
             "neuronType": "neuron",
@@ -435,10 +458,9 @@
             "volumeID": "Striatum"
         },
         "dSPN_1": {
-            "morphology": "$DATA/neurons/striatum/dspn/str-dspn-e150917_c10_D1-mWT-P270-20-v20190521/WT-P270-20-15ak-cor.swc",
-            "parameters": "$DATA/neurons/striatum/dspn/str-dspn-e150917_c10_D1-mWT-P270-20-v20190521/parameters.json",
-            "mechanisms": "$DATA/neurons/striatum/dspn/str-dspn-e150917_c10_D1-mWT-P270-20-v20190521/mechanisms.json",
-            "modulation": "$DATA/neurons/striatum/dspn/str-dspn-e150917_c10_D1-mWT-P270-20-v20190521/modulation.json",
+            "morphology": "$SNUDDA_DATA/neurons/striatum/dspn/str-dspn-e150917_c6_D1-m21-6-DE-v20211028/morphology",
+            "parameters": "$SNUDDA_DATA/neurons/striatum/dspn/str-dspn-e150917_c6_D1-m21-6-DE-v20211028/parameters.json",
+            "mechanisms": "$SNUDDA_DATA/neurons/striatum/dspn/str-dspn-e150917_c6_D1-m21-6-DE-v20211028/mechanisms.json",
             "num": 11875,
             "hoc": null,
             "neuronType": "neuron",
@@ -446,10 +468,9 @@
             "volumeID": "Striatum"
         },
         "dSPN_2": {
-            "morphology": "$DATA/neurons/striatum/dspn/str-dspn-e150917_c9_d1-mWT-1215MSN03-v20190521/WT-1215MSN03-cor-rep-ax2.swc",
-            "parameters": "$DATA/neurons/striatum/dspn/str-dspn-e150917_c9_d1-mWT-1215MSN03-v20190521/parameters.json",
-            "mechanisms": "$DATA/neurons/striatum/dspn/str-dspn-e150917_c9_d1-mWT-1215MSN03-v20190521/mechanisms.json",
-            "modulation": "$DATA/neurons/striatum/dspn/str-dspn-e150917_c9_d1-mWT-1215MSN03-v20190521/modulation.json",
+            "morphology": "$SNUDDA_DATA/neurons/striatum/dspn/str-dspn-e150602_c1_D1-mWT-0728MSN01-v20211026/morphology",
+            "parameters": "$SNUDDA_DATA/neurons/striatum/dspn/str-dspn-e150602_c1_D1-mWT-0728MSN01-v20211026/parameters.json",
+            "mechanisms": "$SNUDDA_DATA/neurons/striatum/dspn/str-dspn-e150602_c1_D1-mWT-0728MSN01-v20211026/mechanisms.json",
             "num": 11875,
             "hoc": null,
             "neuronType": "neuron",
@@ -457,10 +478,9 @@
             "volumeID": "Striatum"
         },
         "dSPN_3": {
-            "morphology": "$DATA/neurons/striatum/dspn/str-dspn-e150917_c6_D1-m21-6-DE-v20190503/21-6-DE-cor-rep-ax.swc",
-            "parameters": "$DATA/neurons/striatum/dspn/str-dspn-e150917_c6_D1-m21-6-DE-v20190503/parameters.json",
-            "mechanisms": "$DATA/neurons/striatum/dspn/str-dspn-e150917_c6_D1-m21-6-DE-v20190503/mechanisms.json",
-            "modulation": "$DATA/neurons/striatum/dspn/str-dspn-e150917_c6_D1-m21-6-DE-v20190503/modulation.json",
+            "morphology": "$SNUDDA_DATA/neurons/striatum/dspn/str-dspn-e150917_c10_D1-mWT-P270-20-v20211026/morphology",
+            "parameters": "$SNUDDA_DATA/neurons/striatum/dspn/str-dspn-e150917_c10_D1-mWT-P270-20-v20211026/parameters.json",
+            "mechanisms": "$SNUDDA_DATA/neurons/striatum/dspn/str-dspn-e150917_c10_D1-mWT-P270-20-v20211026/mechanisms.json",
             "num": 11875,
             "hoc": null,
             "neuronType": "neuron",
@@ -468,10 +488,9 @@
             "volumeID": "Striatum"
         },
         "iSPN_0": {
-            "morphology": "$DATA/neurons/striatum/ispn/str-ispn-e150917_c11_D2-mWT-MSN1-v20190603/WT-MSN1-cor-rep-ax.swc",
-            "parameters": "$DATA/neurons/striatum/ispn/str-ispn-e150917_c11_D2-mWT-MSN1-v20190603/parameters.json",
-            "mechanisms": "$DATA/neurons/striatum/ispn/str-ispn-e150917_c11_D2-mWT-MSN1-v20190603/mechanisms.json",
-            "modulation": "$DATA/neurons/striatum/ispn/str-ispn-e150917_c11_D2-mWT-MSN1-v20190603/modulation.json",
+            "morphology": "$SNUDDA_DATA/neurons/striatum/ispn/str-ispn-e160118_c10_D2-m46-3-DE-v20211026/morphology",
+            "parameters": "$SNUDDA_DATA/neurons/striatum/ispn/str-ispn-e160118_c10_D2-m46-3-DE-v20211026/parameters.json",
+            "mechanisms": "$SNUDDA_DATA/neurons/striatum/ispn/str-ispn-e160118_c10_D2-m46-3-DE-v20211026/mechanisms.json",
             "num": 11875,
             "hoc": null,
             "neuronType": "neuron",
@@ -479,10 +498,9 @@
             "volumeID": "Striatum"
         },
         "iSPN_1": {
-            "morphology": "$DATA/neurons/striatum/ispn/str-ispn-e160118_c10_D2-m46-3-DE-v20190529/46-3-DE-cor-rep-ax.swc",
-            "parameters": "$DATA/neurons/striatum/ispn/str-ispn-e160118_c10_D2-m46-3-DE-v20190529/parameters.json",
-            "mechanisms": "$DATA/neurons/striatum/ispn/str-ispn-e160118_c10_D2-m46-3-DE-v20190529/mechanisms.json",
-            "modulation": "$DATA/neurons/striatum/ispn/str-ispn-e160118_c10_D2-m46-3-DE-v20190529/modulation.json",
+            "morphology": "$SNUDDA_DATA/neurons/striatum/ispn/str-ispn-e151123_c1_D2-mWT-P270-09-v20211026/morphology",
+            "parameters": "$SNUDDA_DATA/neurons/striatum/ispn/str-ispn-e151123_c1_D2-mWT-P270-09-v20211026/parameters.json",
+            "mechanisms": "$SNUDDA_DATA/neurons/striatum/ispn/str-ispn-e151123_c1_D2-mWT-P270-09-v20211026/mechanisms.json",
             "num": 11875,
             "hoc": null,
             "neuronType": "neuron",
@@ -490,10 +508,9 @@
             "volumeID": "Striatum"
         },
         "iSPN_2": {
-            "morphology": "$DATA/neurons/striatum/ispn/str-ispn-e151123_c1_D2-mWT-P270-09-v20190527/WT-P270-09-15ak-cor.swc",
-            "parameters": "$DATA/neurons/striatum/ispn/str-ispn-e151123_c1_D2-mWT-P270-09-v20190527/parameters.json",
-            "mechanisms": "$DATA/neurons/striatum/ispn/str-ispn-e151123_c1_D2-mWT-P270-09-v20190527/mechanisms.json",
-            "modulation": "$DATA/neurons/striatum/ispn/str-ispn-e151123_c1_D2-mWT-P270-09-v20190527/modulation.json",
+            "morphology": "$SNUDDA_DATA/neurons/striatum/ispn/str-ispn-e150917_c11_D2-mWT-MSN1-v20211026/morphology",
+            "parameters": "$SNUDDA_DATA/neurons/striatum/ispn/str-ispn-e150917_c11_D2-mWT-MSN1-v20211026/parameters.json",
+            "mechanisms": "$SNUDDA_DATA/neurons/striatum/ispn/str-ispn-e150917_c11_D2-mWT-MSN1-v20211026/mechanisms.json",
             "num": 11875,
             "hoc": null,
             "neuronType": "neuron",
@@ -501,10 +518,9 @@
             "volumeID": "Striatum"
         },
         "iSPN_3": {
-            "morphology": "$DATA/neurons/striatum/ispn/str-ispn-e150908_c4_D2-m51-5-DE-v20190611/51-5-DE-cor-rep-ax.swc",
-            "parameters": "$DATA/neurons/striatum/ispn/str-ispn-e150908_c4_D2-m51-5-DE-v20190611/parameters.json",
-            "mechanisms": "$DATA/neurons/striatum/ispn/str-ispn-e150908_c4_D2-m51-5-DE-v20190611/mechanisms.json",
-            "modulation": "$DATA/neurons/striatum/ispn/str-ispn-e150908_c4_D2-m51-5-DE-v20190611/modulation.json",
+            "morphology": "$SNUDDA_DATA/neurons/striatum/ispn/str-ispn-e150908_c4_D2-m51-5-DE-v20211026/morphology",
+            "parameters": "$SNUDDA_DATA/neurons/striatum/ispn/str-ispn-e150908_c4_D2-m51-5-DE-v20211026/parameters.json",
+            "mechanisms": "$SNUDDA_DATA/neurons/striatum/ispn/str-ispn-e150908_c4_D2-m51-5-DE-v20211026/mechanisms.json",
             "num": 11875,
             "hoc": null,
             "neuronType": "neuron",
diff --git a/tests/networks/network_testing_init_full/network-config.json b/tests/networks/network_testing_init_full/network-config.json
index 06dd560b8..16a2f2c5a 100644
--- a/tests/networks/network_testing_init_full/network-config.json
+++ b/tests/networks/network_testing_init_full/network-config.json
@@ -13,29 +13,29 @@
         "Striatum": {
             "type": "mesh",
             "dMin": 1.5e-05,
-            "meshFile": "$DATA/mesh/Striatum-d.obj",
+            "meshFile": "$SNUDDA_DATA/mesh/Striatum-d.obj",
             "meshBinWidth": 0.0001,
             "density": {
                 "dSPN": {
-                    "densityFile": "$DATA/density/dorsal_striatum_density.json"
+                    "densityFile": "$SNUDDA_DATA/density/dorsal_striatum_density.json"
                 },
                 "iSPN": {
-                    "densityFile": "$DATA/density/dorsal_striatum_density.json"
+                    "densityFile": "$SNUDDA_DATA/density/dorsal_striatum_density.json"
                 },
-                "FSN": {
-                    "densityFile": "$DATA/density/dorsal_striatum_density.json"
+                "FS": {
+                    "densityFile": "$SNUDDA_DATA/density/dorsal_striatum_density.json"
                 },
                 "LTS": {
-                    "densityFile": "$DATA/density/dorsal_striatum_density.json"
+                    "densityFile": "$SNUDDA_DATA/density/dorsal_striatum_density.json"
                 },
                 "ChIN": {
-                    "densityFile": "$DATA/density/dorsal_striatum_density.json"
+                    "densityFile": "$SNUDDA_DATA/density/dorsal_striatum_density.json"
                 }
             }
         }
     },
     "Connectivity": {
-        "FSN,FSN": {
+        "FS,FS": {
             "GABA": {
                 "conductance": [
                     1.1e-09,
@@ -57,7 +57,8 @@
                     "softMax": 5,
                     "mu2": 2,
                     "a3": 1,
-                    "distPruning": null
+                    "distPruning": null,
+                    "cluster": false
                 }
             },
             "GapJunction": {
@@ -71,11 +72,12 @@
                     "softMax": 8,
                     "mu2": 2,
                     "a3": 1.0,
-                    "distPruning": null
+                    "distPruning": null,
+                    "cluster": false
                 }
             }
         },
-        "FSN,dSPN": {
+        "FS,dSPN": {
             "GABA": {
                 "conductance": [
                     1.1e-09,
@@ -90,7 +92,7 @@
                         0.008,
                         1000.0
                     ],
-                    "parameterFile": "$DATA/synapses/striatum/PlanertFitting-FD-tmgaba-fit.json",
+                    "parameterFile": "$SNUDDA_DATA/synapses/striatum/PlanertFitting-FD-tmgaba-fit.json",
                     "modFile": "tmGabaA"
                 },
                 "pruning": {
@@ -98,11 +100,12 @@
                     "softMax": 5,
                     "mu2": 2,
                     "a3": 1.0,
-                    "distPruning": "exp(-(0.5*d/60e-6)**2)"
+                    "distPruning": "exp(-(0.5*d/60e-6)**2)",
+                    "cluster": false
                 }
             }
         },
-        "FSN,iSPN": {
+        "FS,iSPN": {
             "GABA": {
                 "conductance": [
                     1.1e-09,
@@ -117,7 +120,7 @@
                         0.008,
                         1000.0
                     ],
-                    "parameterFile": "$DATA/synapses/striatum/PlanertFitting-FI-tmgaba-fit.json",
+                    "parameterFile": "$SNUDDA_DATA/synapses/striatum/PlanertFitting-FI-tmgaba-fit.json",
                     "modFile": "tmGabaA"
                 },
                 "pruning": {
@@ -125,11 +128,12 @@
                     "softMax": 5,
                     "mu2": 2,
                     "a3": 0.9,
-                    "distPruning": "exp(-(0.5*d/60e-6)**2)"
+                    "distPruning": "exp(-(0.5*d/60e-6)**2)",
+                    "cluster": false
                 }
             }
         },
-        "FSN,LTS": {
+        "FS,LTS": {
             "GABA": {
                 "conductance": [
                     1.1e-10,
@@ -143,7 +147,8 @@
                     "softMax": 3,
                     "mu2": 2,
                     "a3": 1.0,
-                    "distPruning": null
+                    "distPruning": null,
+                    "cluster": false
                 }
             }
         },
@@ -163,7 +168,7 @@
                         1000.0
                     ],
                     "failRate": 0.7,
-                    "parameterFile": "$DATA/synapses/striatum/PlanertFitting-DD-tmgaba-fit.json",
+                    "parameterFile": "$SNUDDA_DATA/synapses/striatum/PlanertFitting-DD-tmgaba-fit.json",
                     "modFile": "tmGabaA"
                 },
                 "pruning": {
@@ -171,14 +176,16 @@
                     "softMax": 3,
                     "mu2": 2.4,
                     "a3": 1.0,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 },
                 "pruningOther": {
                     "f1": 0.38,
                     "softMax": 3,
                     "mu2": 2.4,
                     "a3": 1.0,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 }
             }
         },
@@ -198,7 +205,7 @@
                         1000.0
                     ],
                     "failRate": 0.7,
-                    "parameterFile": "$DATA/synapses/striatum/PlanertFitting-DI-tmgaba-fit.json",
+                    "parameterFile": "$SNUDDA_DATA/synapses/striatum/PlanertFitting-DI-tmgaba-fit.json",
                     "modFile": "tmGabaA"
                 },
                 "pruning": {
@@ -206,14 +213,16 @@
                     "softMax": 3,
                     "mu2": 2.4,
                     "a3": 1.0,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 },
                 "pruningOther": {
                     "f1": 0.2,
                     "softMax": 3,
                     "mu2": 2.4,
                     "a3": 1.0,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 }
             }
         },
@@ -232,7 +241,8 @@
                     "softMax": 3,
                     "mu2": 2.4,
                     "a3": 0.1,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 }
             }
         },
@@ -252,7 +262,7 @@
                         1000.0
                     ],
                     "failRate": 0.4,
-                    "parameterFile": "$DATA/synapses/striatum/PlanertFitting-ID-tmgaba-fit.json",
+                    "parameterFile": "$SNUDDA_DATA/synapses/striatum/PlanertFitting-ID-tmgaba-fit.json",
                     "modFile": "tmGabaA"
                 },
                 "pruning": {
@@ -260,14 +270,16 @@
                     "softMax": 4,
                     "mu2": 2.4,
                     "a3": 1.0,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 },
                 "pruningOther": {
                     "f1": 0.3,
                     "softMax": 4,
                     "mu2": 2.4,
                     "a3": 1.0,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 }
             }
         },
@@ -287,7 +299,7 @@
                         1000.0
                     ],
                     "failRate": 0.4,
-                    "parameterFile": "$DATA/synapses/striatum/PlanertFitting-II-tmgaba-fit.json",
+                    "parameterFile": "$SNUDDA_DATA/synapses/striatum/PlanertFitting-II-tmgaba-fit.json",
                     "modFile": "tmGabaA"
                 },
                 "pruning": {
@@ -295,14 +307,16 @@
                     "softMax": 4,
                     "mu2": 2.4,
                     "a3": 1.0,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 },
                 "pruningOther": {
                     "f1": 0.55,
                     "softMax": 4,
                     "mu2": 2.4,
                     "a3": 1.0,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 }
             }
         },
@@ -321,7 +335,8 @@
                     "softMax": 3,
                     "mu2": 2.4,
                     "a3": 0.1,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 }
             }
         },
@@ -347,7 +362,8 @@
                     "softMax": 15,
                     "mu2": 3,
                     "a3": 0.3,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 }
             }
         },
@@ -373,7 +389,8 @@
                     "softMax": 15,
                     "mu2": 3,
                     "a3": 0.3,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 }
             }
         },
@@ -391,72 +408,77 @@
                     "softMax": 10,
                     "mu2": 3,
                     "a3": 0.4,
-                    "distPruning": null
+                    "distPruning": null,
+                    "cluster": false
                 }
             }
         }
     },
     "Neurons": {
-        "FSN_0": {
-            "morphology": "$DATA/neurons/striatum/fs/str-fs-e180418_FS5-mMTC251001A-IDB-v20190301/MTC251001A-IDB-cor-rep.swc",
-            "parameters": "$DATA/neurons/striatum/fs/str-fs-e180418_FS5-mMTC251001A-IDB-v20190301/parameters.json",
-            "mechanisms": "$DATA/neurons/striatum/fs/str-fs-e180418_FS5-mMTC251001A-IDB-v20190301/mechanisms.json",
-            "modulation": "$DATA/neurons/striatum/fs/str-fs-e180418_FS5-mMTC251001A-IDB-v20190301/modulation.json",
-            "num": 5532,
+        "FS_0": {
+            "morphology": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e161024_FS16-mDR-rat-Mar-13-08-1-536-R-v20210210/morphology",
+            "parameters": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e161024_FS16-mDR-rat-Mar-13-08-1-536-R-v20210210/parameters.json",
+            "mechanisms": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e161024_FS16-mDR-rat-Mar-13-08-1-536-R-v20210210/mechanisms.json",
+            "num": 4426,
             "hoc": null,
             "neuronType": "neuron",
             "rotationMode": "random",
             "volumeID": "Striatum"
         },
-        "FSN_1": {
-            "morphology": "$DATA/neurons/striatum/fs/str-fs-e161205_FS1-mMTC180800A-IDB-v20190312/MTC180800A-IDB-cor-rep.swc",
-            "parameters": "$DATA/neurons/striatum/fs/str-fs-e161205_FS1-mMTC180800A-IDB-v20190312/parameters.json",
-            "mechanisms": "$DATA/neurons/striatum/fs/str-fs-e161205_FS1-mMTC180800A-IDB-v20190312/mechanisms.json",
-            "modulation": "$DATA/neurons/striatum/fs/str-fs-e161205_FS1-mMTC180800A-IDB-v20190312/modulation.json",
-            "num": 5533,
+        "FS_1": {
+            "morphology": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e160628_FS2-mMTC180800A-IDB-v20210210/morphology",
+            "parameters": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e160628_FS2-mMTC180800A-IDB-v20210210/parameters.json",
+            "mechanisms": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e160628_FS2-mMTC180800A-IDB-v20210210/mechanisms.json",
+            "num": 4426,
             "hoc": null,
             "neuronType": "neuron",
             "rotationMode": "random",
             "volumeID": "Striatum"
         },
-        "FSN_2": {
-            "morphology": "$DATA/neurons/striatum/fs/str-fs-e161024_FS16-mDR-rat-Mar-13-08-1-536-R-v20190225/DR-rat-Mar-13-08-1-536-R-cor-rep.swc",
-            "parameters": "$DATA/neurons/striatum/fs/str-fs-e161024_FS16-mDR-rat-Mar-13-08-1-536-R-v20190225/parameters.json",
-            "mechanisms": "$DATA/neurons/striatum/fs/str-fs-e161024_FS16-mDR-rat-Mar-13-08-1-536-R-v20190225/mechanisms.json",
-            "modulation": "$DATA/neurons/striatum/fs/str-fs-e161024_FS16-mDR-rat-Mar-13-08-1-536-R-v20190225/modulation.json",
-            "num": 5533,
+        "FS_2": {
+            "morphology": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e180418_FS5-mMTC251001A-IDB-v20210211/morphology",
+            "parameters": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e180418_FS5-mMTC251001A-IDB-v20210211/parameters.json",
+            "mechanisms": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e180418_FS5-mMTC251001A-IDB-v20210211/mechanisms.json",
+            "num": 4426,
             "hoc": null,
             "neuronType": "neuron",
             "rotationMode": "random",
             "volumeID": "Striatum"
         },
-        "FSN_3": {
-            "morphology": "$DATA/neurons/striatum/fs/str-fs-e160628_FS2-mMTC180800A-IDB-v20190226/MTC180800A-IDB-cor-rep.swc",
-            "parameters": "$DATA/neurons/striatum/fs/str-fs-e160628_FS2-mMTC180800A-IDB-v20190226/parameters.json",
-            "mechanisms": "$DATA/neurons/striatum/fs/str-fs-e160628_FS2-mMTC180800A-IDB-v20190226/mechanisms.json",
-            "modulation": "$DATA/neurons/striatum/fs/str-fs-e160628_FS2-mMTC180800A-IDB-v20190226/modulation.json",
-            "num": 5532,
+        "FS_3": {
+            "morphology": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e161205_FS1-mMTC180800A-IDB-v20210210/morphology",
+            "parameters": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e161205_FS1-mMTC180800A-IDB-v20210210/parameters.json",
+            "mechanisms": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e161205_FS1-mMTC180800A-IDB-v20210210/mechanisms.json",
+            "num": 4426,
+            "hoc": null,
+            "neuronType": "neuron",
+            "rotationMode": "random",
+            "volumeID": "Striatum"
+        },
+        "FS_4": {
+            "morphology": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e161205_FS1-mBE104E-v20210209/morphology",
+            "parameters": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e161205_FS1-mBE104E-v20210209/parameters.json",
+            "mechanisms": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e161205_FS1-mBE104E-v20210209/mechanisms.json",
+            "num": 4426,
             "hoc": null,
             "neuronType": "neuron",
             "rotationMode": "random",
             "volumeID": "Striatum"
         },
         "dSPN_0": {
-            "morphology": "$DATA/neurons/striatum/dspn/str-dspn-e150602_c1_D1-mWT-0728MSN01-v20190508/WT-0728MSN01-cor-rep-ax.swc",
-            "parameters": "$DATA/neurons/striatum/dspn/str-dspn-e150602_c1_D1-mWT-0728MSN01-v20190508/parameters.json",
-            "mechanisms": "$DATA/neurons/striatum/dspn/str-dspn-e150602_c1_D1-mWT-0728MSN01-v20190508/mechanisms.json",
-            "modulation": "$DATA/neurons/striatum/dspn/str-dspn-e150602_c1_D1-mWT-0728MSN01-v20190508/modulation.json",
-            "num": 202154,
+            "morphology": "$SNUDDA_DATA/neurons/striatum/dspn/str-dspn-e150917_c9_D1-mWT-1215MSN03-v20211026/morphology",
+            "parameters": "$SNUDDA_DATA/neurons/striatum/dspn/str-dspn-e150917_c9_D1-mWT-1215MSN03-v20211026/parameters.json",
+            "mechanisms": "$SNUDDA_DATA/neurons/striatum/dspn/str-dspn-e150917_c9_D1-mWT-1215MSN03-v20211026/mechanisms.json",
+            "num": 202153,
             "hoc": null,
             "neuronType": "neuron",
             "rotationMode": "random",
             "volumeID": "Striatum"
         },
         "dSPN_1": {
-            "morphology": "$DATA/neurons/striatum/dspn/str-dspn-e150917_c10_D1-mWT-P270-20-v20190521/WT-P270-20-15ak-cor.swc",
-            "parameters": "$DATA/neurons/striatum/dspn/str-dspn-e150917_c10_D1-mWT-P270-20-v20190521/parameters.json",
-            "mechanisms": "$DATA/neurons/striatum/dspn/str-dspn-e150917_c10_D1-mWT-P270-20-v20190521/mechanisms.json",
-            "modulation": "$DATA/neurons/striatum/dspn/str-dspn-e150917_c10_D1-mWT-P270-20-v20190521/modulation.json",
+            "morphology": "$SNUDDA_DATA/neurons/striatum/dspn/str-dspn-e150917_c6_D1-m21-6-DE-v20211028/morphology",
+            "parameters": "$SNUDDA_DATA/neurons/striatum/dspn/str-dspn-e150917_c6_D1-m21-6-DE-v20211028/parameters.json",
+            "mechanisms": "$SNUDDA_DATA/neurons/striatum/dspn/str-dspn-e150917_c6_D1-m21-6-DE-v20211028/mechanisms.json",
             "num": 202153,
             "hoc": null,
             "neuronType": "neuron",
@@ -464,21 +486,19 @@
             "volumeID": "Striatum"
         },
         "dSPN_2": {
-            "morphology": "$DATA/neurons/striatum/dspn/str-dspn-e150917_c9_d1-mWT-1215MSN03-v20190521/WT-1215MSN03-cor-rep-ax2.swc",
-            "parameters": "$DATA/neurons/striatum/dspn/str-dspn-e150917_c9_d1-mWT-1215MSN03-v20190521/parameters.json",
-            "mechanisms": "$DATA/neurons/striatum/dspn/str-dspn-e150917_c9_d1-mWT-1215MSN03-v20190521/mechanisms.json",
-            "modulation": "$DATA/neurons/striatum/dspn/str-dspn-e150917_c9_d1-mWT-1215MSN03-v20190521/modulation.json",
-            "num": 202153,
+            "morphology": "$SNUDDA_DATA/neurons/striatum/dspn/str-dspn-e150602_c1_D1-mWT-0728MSN01-v20211026/morphology",
+            "parameters": "$SNUDDA_DATA/neurons/striatum/dspn/str-dspn-e150602_c1_D1-mWT-0728MSN01-v20211026/parameters.json",
+            "mechanisms": "$SNUDDA_DATA/neurons/striatum/dspn/str-dspn-e150602_c1_D1-mWT-0728MSN01-v20211026/mechanisms.json",
+            "num": 202154,
             "hoc": null,
             "neuronType": "neuron",
             "rotationMode": "random",
             "volumeID": "Striatum"
         },
         "dSPN_3": {
-            "morphology": "$DATA/neurons/striatum/dspn/str-dspn-e150917_c6_D1-m21-6-DE-v20190503/21-6-DE-cor-rep-ax.swc",
-            "parameters": "$DATA/neurons/striatum/dspn/str-dspn-e150917_c6_D1-m21-6-DE-v20190503/parameters.json",
-            "mechanisms": "$DATA/neurons/striatum/dspn/str-dspn-e150917_c6_D1-m21-6-DE-v20190503/mechanisms.json",
-            "modulation": "$DATA/neurons/striatum/dspn/str-dspn-e150917_c6_D1-m21-6-DE-v20190503/modulation.json",
+            "morphology": "$SNUDDA_DATA/neurons/striatum/dspn/str-dspn-e150917_c10_D1-mWT-P270-20-v20211026/morphology",
+            "parameters": "$SNUDDA_DATA/neurons/striatum/dspn/str-dspn-e150917_c10_D1-mWT-P270-20-v20211026/parameters.json",
+            "mechanisms": "$SNUDDA_DATA/neurons/striatum/dspn/str-dspn-e150917_c10_D1-mWT-P270-20-v20211026/mechanisms.json",
             "num": 202154,
             "hoc": null,
             "neuronType": "neuron",
@@ -486,21 +506,19 @@
             "volumeID": "Striatum"
         },
         "iSPN_0": {
-            "morphology": "$DATA/neurons/striatum/ispn/str-ispn-e150917_c11_D2-mWT-MSN1-v20190603/WT-MSN1-cor-rep-ax.swc",
-            "parameters": "$DATA/neurons/striatum/ispn/str-ispn-e150917_c11_D2-mWT-MSN1-v20190603/parameters.json",
-            "mechanisms": "$DATA/neurons/striatum/ispn/str-ispn-e150917_c11_D2-mWT-MSN1-v20190603/mechanisms.json",
-            "modulation": "$DATA/neurons/striatum/ispn/str-ispn-e150917_c11_D2-mWT-MSN1-v20190603/modulation.json",
-            "num": 202154,
+            "morphology": "$SNUDDA_DATA/neurons/striatum/ispn/str-ispn-e160118_c10_D2-m46-3-DE-v20211026/morphology",
+            "parameters": "$SNUDDA_DATA/neurons/striatum/ispn/str-ispn-e160118_c10_D2-m46-3-DE-v20211026/parameters.json",
+            "mechanisms": "$SNUDDA_DATA/neurons/striatum/ispn/str-ispn-e160118_c10_D2-m46-3-DE-v20211026/mechanisms.json",
+            "num": 202153,
             "hoc": null,
             "neuronType": "neuron",
             "rotationMode": "random",
             "volumeID": "Striatum"
         },
         "iSPN_1": {
-            "morphology": "$DATA/neurons/striatum/ispn/str-ispn-e160118_c10_D2-m46-3-DE-v20190529/46-3-DE-cor-rep-ax.swc",
-            "parameters": "$DATA/neurons/striatum/ispn/str-ispn-e160118_c10_D2-m46-3-DE-v20190529/parameters.json",
-            "mechanisms": "$DATA/neurons/striatum/ispn/str-ispn-e160118_c10_D2-m46-3-DE-v20190529/mechanisms.json",
-            "modulation": "$DATA/neurons/striatum/ispn/str-ispn-e160118_c10_D2-m46-3-DE-v20190529/modulation.json",
+            "morphology": "$SNUDDA_DATA/neurons/striatum/ispn/str-ispn-e151123_c1_D2-mWT-P270-09-v20211026/morphology",
+            "parameters": "$SNUDDA_DATA/neurons/striatum/ispn/str-ispn-e151123_c1_D2-mWT-P270-09-v20211026/parameters.json",
+            "mechanisms": "$SNUDDA_DATA/neurons/striatum/ispn/str-ispn-e151123_c1_D2-mWT-P270-09-v20211026/mechanisms.json",
             "num": 202153,
             "hoc": null,
             "neuronType": "neuron",
@@ -508,10 +526,9 @@
             "volumeID": "Striatum"
         },
         "iSPN_2": {
-            "morphology": "$DATA/neurons/striatum/ispn/str-ispn-e151123_c1_D2-mWT-P270-09-v20190527/WT-P270-09-15ak-cor.swc",
-            "parameters": "$DATA/neurons/striatum/ispn/str-ispn-e151123_c1_D2-mWT-P270-09-v20190527/parameters.json",
-            "mechanisms": "$DATA/neurons/striatum/ispn/str-ispn-e151123_c1_D2-mWT-P270-09-v20190527/mechanisms.json",
-            "modulation": "$DATA/neurons/striatum/ispn/str-ispn-e151123_c1_D2-mWT-P270-09-v20190527/modulation.json",
+            "morphology": "$SNUDDA_DATA/neurons/striatum/ispn/str-ispn-e150917_c11_D2-mWT-MSN1-v20211026/morphology",
+            "parameters": "$SNUDDA_DATA/neurons/striatum/ispn/str-ispn-e150917_c11_D2-mWT-MSN1-v20211026/parameters.json",
+            "mechanisms": "$SNUDDA_DATA/neurons/striatum/ispn/str-ispn-e150917_c11_D2-mWT-MSN1-v20211026/mechanisms.json",
             "num": 202154,
             "hoc": null,
             "neuronType": "neuron",
@@ -519,21 +536,19 @@
             "volumeID": "Striatum"
         },
         "iSPN_3": {
-            "morphology": "$DATA/neurons/striatum/ispn/str-ispn-e150908_c4_D2-m51-5-DE-v20190611/51-5-DE-cor-rep-ax.swc",
-            "parameters": "$DATA/neurons/striatum/ispn/str-ispn-e150908_c4_D2-m51-5-DE-v20190611/parameters.json",
-            "mechanisms": "$DATA/neurons/striatum/ispn/str-ispn-e150908_c4_D2-m51-5-DE-v20190611/mechanisms.json",
-            "modulation": "$DATA/neurons/striatum/ispn/str-ispn-e150908_c4_D2-m51-5-DE-v20190611/modulation.json",
-            "num": 202153,
+            "morphology": "$SNUDDA_DATA/neurons/striatum/ispn/str-ispn-e150908_c4_D2-m51-5-DE-v20211026/morphology",
+            "parameters": "$SNUDDA_DATA/neurons/striatum/ispn/str-ispn-e150908_c4_D2-m51-5-DE-v20211026/parameters.json",
+            "mechanisms": "$SNUDDA_DATA/neurons/striatum/ispn/str-ispn-e150908_c4_D2-m51-5-DE-v20211026/mechanisms.json",
+            "num": 202154,
             "hoc": null,
             "neuronType": "neuron",
             "rotationMode": "random",
             "volumeID": "Striatum"
         },
         "ChIN_0": {
-            "morphology": "$DATA/neurons/striatum/chin/str-chin-e170614_cell6-m17JUL301751_170614_no6_MD_cell_1_x63-v20190710/optim_chin_morph_renamed2019-11-08.swc",
-            "parameters": "$DATA/neurons/striatum/chin/str-chin-e170614_cell6-m17JUL301751_170614_no6_MD_cell_1_x63-v20190710/parameters.json",
-            "mechanisms": "$DATA/neurons/striatum/chin/str-chin-e170614_cell6-m17JUL301751_170614_no6_MD_cell_1_x63-v20190710/mechanisms.json",
-            "modulation": "$DATA/neurons/striatum/chin/str-chin-e170614_cell6-m17JUL301751_170614_no6_MD_cell_1_x63-v20190710/modulation.json",
+            "morphology": "$SNUDDA_DATA/neurons/striatum/chin/str-chin-e170614_cell6-m17JUL301751_170614_no6_MD_cell_1_x63-v20190710/morphology",
+            "parameters": "$SNUDDA_DATA/neurons/striatum/chin/str-chin-e170614_cell6-m17JUL301751_170614_no6_MD_cell_1_x63-v20190710/parameters.json",
+            "mechanisms": "$SNUDDA_DATA/neurons/striatum/chin/str-chin-e170614_cell6-m17JUL301751_170614_no6_MD_cell_1_x63-v20190710/mechanisms.json",
             "num": 18726,
             "hoc": null,
             "neuronType": "neuron",
@@ -546,10 +561,9 @@
             ]
         },
         "LTS_0": {
-            "morphology": "$DATA/neurons/striatum/lts/LTS_Experiment-9862_20181211/lts_morp_2019-11-07_centered_no_axon.swc",
-            "parameters": "$DATA/neurons/striatum/lts/LTS_Experiment-9862_20181211/parameters.json",
-            "mechanisms": "$DATA/neurons/striatum/lts/LTS_Experiment-9862_20181211/mechanisms.json",
-            "modulation": "$DATA/neurons/striatum/lts/LTS_Experiment-9862_20181211/modulation.json",
+            "morphology": "$SNUDDA_DATA/neurons/striatum/lts/LTS_180118_morp_9862_updated_20210301/morphology",
+            "parameters": "$SNUDDA_DATA/neurons/striatum/lts/LTS_180118_morp_9862_updated_20210301/parameters.json",
+            "mechanisms": "$SNUDDA_DATA/neurons/striatum/lts/LTS_180118_morp_9862_updated_20210301/mechanisms.json",
             "num": 11916,
             "hoc": null,
             "neuronType": "neuron",
diff --git a/tests/networks/network_testing_init_slice/network-config.json b/tests/networks/network_testing_init_slice/network-config.json
index 15d8ded5e..a706adcfb 100644
--- a/tests/networks/network_testing_init_slice/network-config.json
+++ b/tests/networks/network_testing_init_slice/network-config.json
@@ -1,12 +1,12 @@
 {
     "RandomSeed": {
-        "init": 1070027388,
-        "place": 1797886398,
-        "detect": 3652250400,
-        "project": 2062167671,
-        "prune": 3193506594,
-        "input": 2387929379,
-        "simulate": 3019571771
+        "init": 2350074332,
+        "place": 2771748326,
+        "detect": 1845204186,
+        "project": 1679767388,
+        "prune": 3303766660,
+        "input": 4237944138,
+        "simulate": 4081984847
     },
     "Volume": {
         "Striatum": {
@@ -17,7 +17,7 @@
         }
     },
     "Connectivity": {
-        "FSN,FSN": {
+        "FS,FS": {
             "GABA": {
                 "conductance": [
                     1.1e-09,
@@ -39,7 +39,8 @@
                     "softMax": 5,
                     "mu2": 2,
                     "a3": 1,
-                    "distPruning": null
+                    "distPruning": null,
+                    "cluster": false
                 }
             },
             "GapJunction": {
@@ -53,11 +54,12 @@
                     "softMax": 8,
                     "mu2": 2,
                     "a3": 1.0,
-                    "distPruning": null
+                    "distPruning": null,
+                    "cluster": false
                 }
             }
         },
-        "FSN,dSPN": {
+        "FS,dSPN": {
             "GABA": {
                 "conductance": [
                     1.1e-09,
@@ -72,7 +74,7 @@
                         0.008,
                         1000.0
                     ],
-                    "parameterFile": "$DATA/synapses/striatum/PlanertFitting-FD-tmgaba-fit.json",
+                    "parameterFile": "$SNUDDA_DATA/synapses/striatum/PlanertFitting-FD-tmgaba-fit.json",
                     "modFile": "tmGabaA"
                 },
                 "pruning": {
@@ -80,11 +82,12 @@
                     "softMax": 5,
                     "mu2": 2,
                     "a3": 1.0,
-                    "distPruning": "exp(-(0.5*d/60e-6)**2)"
+                    "distPruning": "exp(-(0.5*d/60e-6)**2)",
+                    "cluster": false
                 }
             }
         },
-        "FSN,iSPN": {
+        "FS,iSPN": {
             "GABA": {
                 "conductance": [
                     1.1e-09,
@@ -99,7 +102,7 @@
                         0.008,
                         1000.0
                     ],
-                    "parameterFile": "$DATA/synapses/striatum/PlanertFitting-FI-tmgaba-fit.json",
+                    "parameterFile": "$SNUDDA_DATA/synapses/striatum/PlanertFitting-FI-tmgaba-fit.json",
                     "modFile": "tmGabaA"
                 },
                 "pruning": {
@@ -107,11 +110,12 @@
                     "softMax": 5,
                     "mu2": 2,
                     "a3": 0.9,
-                    "distPruning": "exp(-(0.5*d/60e-6)**2)"
+                    "distPruning": "exp(-(0.5*d/60e-6)**2)",
+                    "cluster": false
                 }
             }
         },
-        "FSN,LTS": {
+        "FS,LTS": {
             "GABA": {
                 "conductance": [
                     1.1e-10,
@@ -125,7 +129,8 @@
                     "softMax": 3,
                     "mu2": 2,
                     "a3": 1.0,
-                    "distPruning": null
+                    "distPruning": null,
+                    "cluster": false
                 }
             }
         },
@@ -145,7 +150,7 @@
                         1000.0
                     ],
                     "failRate": 0.7,
-                    "parameterFile": "$DATA/synapses/striatum/PlanertFitting-DD-tmgaba-fit.json",
+                    "parameterFile": "$SNUDDA_DATA/synapses/striatum/PlanertFitting-DD-tmgaba-fit.json",
                     "modFile": "tmGabaA"
                 },
                 "pruning": {
@@ -153,14 +158,16 @@
                     "softMax": 3,
                     "mu2": 2.4,
                     "a3": 1.0,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 },
                 "pruningOther": {
                     "f1": 0.38,
                     "softMax": 3,
                     "mu2": 2.4,
                     "a3": 1.0,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 }
             }
         },
@@ -180,7 +187,7 @@
                         1000.0
                     ],
                     "failRate": 0.7,
-                    "parameterFile": "$DATA/synapses/striatum/PlanertFitting-DI-tmgaba-fit.json",
+                    "parameterFile": "$SNUDDA_DATA/synapses/striatum/PlanertFitting-DI-tmgaba-fit.json",
                     "modFile": "tmGabaA"
                 },
                 "pruning": {
@@ -188,14 +195,16 @@
                     "softMax": 3,
                     "mu2": 2.4,
                     "a3": 1.0,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 },
                 "pruningOther": {
                     "f1": 0.2,
                     "softMax": 3,
                     "mu2": 2.4,
                     "a3": 1.0,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 }
             }
         },
@@ -214,7 +223,8 @@
                     "softMax": 3,
                     "mu2": 2.4,
                     "a3": 0.1,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 }
             }
         },
@@ -234,7 +244,7 @@
                         1000.0
                     ],
                     "failRate": 0.4,
-                    "parameterFile": "$DATA/synapses/striatum/PlanertFitting-ID-tmgaba-fit.json",
+                    "parameterFile": "$SNUDDA_DATA/synapses/striatum/PlanertFitting-ID-tmgaba-fit.json",
                     "modFile": "tmGabaA"
                 },
                 "pruning": {
@@ -242,14 +252,16 @@
                     "softMax": 4,
                     "mu2": 2.4,
                     "a3": 1.0,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 },
                 "pruningOther": {
                     "f1": 0.3,
                     "softMax": 4,
                     "mu2": 2.4,
                     "a3": 1.0,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 }
             }
         },
@@ -269,7 +281,7 @@
                         1000.0
                     ],
                     "failRate": 0.4,
-                    "parameterFile": "$DATA/synapses/striatum/PlanertFitting-II-tmgaba-fit.json",
+                    "parameterFile": "$SNUDDA_DATA/synapses/striatum/PlanertFitting-II-tmgaba-fit.json",
                     "modFile": "tmGabaA"
                 },
                 "pruning": {
@@ -277,14 +289,16 @@
                     "softMax": 4,
                     "mu2": 2.4,
                     "a3": 1.0,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 },
                 "pruningOther": {
                     "f1": 0.55,
                     "softMax": 4,
                     "mu2": 2.4,
                     "a3": 1.0,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 }
             }
         },
@@ -303,7 +317,8 @@
                     "softMax": 3,
                     "mu2": 2.4,
                     "a3": 0.1,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 }
             }
         },
@@ -329,7 +344,8 @@
                     "softMax": 15,
                     "mu2": 3,
                     "a3": 0.3,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 }
             }
         },
@@ -355,7 +371,8 @@
                     "softMax": 15,
                     "mu2": 3,
                     "a3": 0.3,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 }
             }
         },
@@ -373,61 +390,67 @@
                     "softMax": 10,
                     "mu2": 3,
                     "a3": 0.4,
-                    "distPruning": null
+                    "distPruning": null,
+                    "cluster": false
                 }
             }
         }
     },
     "Neurons": {
-        "FSN_0": {
-            "morphology": "$DATA/neurons/striatum/fs/str-fs-e180418_FS5-mMTC251001A-IDB-v20190301/MTC251001A-IDB-cor-rep.swc",
-            "parameters": "$DATA/neurons/striatum/fs/str-fs-e180418_FS5-mMTC251001A-IDB-v20190301/parameters.json",
-            "mechanisms": "$DATA/neurons/striatum/fs/str-fs-e180418_FS5-mMTC251001A-IDB-v20190301/mechanisms.json",
-            "modulation": "$DATA/neurons/striatum/fs/str-fs-e180418_FS5-mMTC251001A-IDB-v20190301/modulation.json",
-            "num": 325,
+        "FS_0": {
+            "morphology": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e161024_FS16-mDR-rat-Mar-13-08-1-536-R-v20210210/morphology",
+            "parameters": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e161024_FS16-mDR-rat-Mar-13-08-1-536-R-v20210210/parameters.json",
+            "mechanisms": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e161024_FS16-mDR-rat-Mar-13-08-1-536-R-v20210210/mechanisms.json",
+            "num": 260,
             "hoc": null,
             "neuronType": "neuron",
             "rotationMode": "random",
             "volumeID": "Striatum"
         },
-        "FSN_1": {
-            "morphology": "$DATA/neurons/striatum/fs/str-fs-e161205_FS1-mMTC180800A-IDB-v20190312/MTC180800A-IDB-cor-rep.swc",
-            "parameters": "$DATA/neurons/striatum/fs/str-fs-e161205_FS1-mMTC180800A-IDB-v20190312/parameters.json",
-            "mechanisms": "$DATA/neurons/striatum/fs/str-fs-e161205_FS1-mMTC180800A-IDB-v20190312/mechanisms.json",
-            "modulation": "$DATA/neurons/striatum/fs/str-fs-e161205_FS1-mMTC180800A-IDB-v20190312/modulation.json",
-            "num": 325,
+        "FS_1": {
+            "morphology": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e160628_FS2-mMTC180800A-IDB-v20210210/morphology",
+            "parameters": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e160628_FS2-mMTC180800A-IDB-v20210210/parameters.json",
+            "mechanisms": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e160628_FS2-mMTC180800A-IDB-v20210210/mechanisms.json",
+            "num": 260,
             "hoc": null,
             "neuronType": "neuron",
             "rotationMode": "random",
             "volumeID": "Striatum"
         },
-        "FSN_2": {
-            "morphology": "$DATA/neurons/striatum/fs/str-fs-e161024_FS16-mDR-rat-Mar-13-08-1-536-R-v20190225/DR-rat-Mar-13-08-1-536-R-cor-rep.swc",
-            "parameters": "$DATA/neurons/striatum/fs/str-fs-e161024_FS16-mDR-rat-Mar-13-08-1-536-R-v20190225/parameters.json",
-            "mechanisms": "$DATA/neurons/striatum/fs/str-fs-e161024_FS16-mDR-rat-Mar-13-08-1-536-R-v20190225/mechanisms.json",
-            "modulation": "$DATA/neurons/striatum/fs/str-fs-e161024_FS16-mDR-rat-Mar-13-08-1-536-R-v20190225/modulation.json",
-            "num": 325,
+        "FS_2": {
+            "morphology": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e180418_FS5-mMTC251001A-IDB-v20210211/morphology",
+            "parameters": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e180418_FS5-mMTC251001A-IDB-v20210211/parameters.json",
+            "mechanisms": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e180418_FS5-mMTC251001A-IDB-v20210211/mechanisms.json",
+            "num": 260,
             "hoc": null,
             "neuronType": "neuron",
             "rotationMode": "random",
             "volumeID": "Striatum"
         },
-        "FSN_3": {
-            "morphology": "$DATA/neurons/striatum/fs/str-fs-e160628_FS2-mMTC180800A-IDB-v20190226/MTC180800A-IDB-cor-rep.swc",
-            "parameters": "$DATA/neurons/striatum/fs/str-fs-e160628_FS2-mMTC180800A-IDB-v20190226/parameters.json",
-            "mechanisms": "$DATA/neurons/striatum/fs/str-fs-e160628_FS2-mMTC180800A-IDB-v20190226/mechanisms.json",
-            "modulation": "$DATA/neurons/striatum/fs/str-fs-e160628_FS2-mMTC180800A-IDB-v20190226/modulation.json",
-            "num": 325,
+        "FS_3": {
+            "morphology": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e161205_FS1-mMTC180800A-IDB-v20210210/morphology",
+            "parameters": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e161205_FS1-mMTC180800A-IDB-v20210210/parameters.json",
+            "mechanisms": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e161205_FS1-mMTC180800A-IDB-v20210210/mechanisms.json",
+            "num": 260,
+            "hoc": null,
+            "neuronType": "neuron",
+            "rotationMode": "random",
+            "volumeID": "Striatum"
+        },
+        "FS_4": {
+            "morphology": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e161205_FS1-mBE104E-v20210209/morphology",
+            "parameters": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e161205_FS1-mBE104E-v20210209/parameters.json",
+            "mechanisms": "$SNUDDA_DATA/neurons/striatum/fs/str-fs-e161205_FS1-mBE104E-v20210209/mechanisms.json",
+            "num": 260,
             "hoc": null,
             "neuronType": "neuron",
             "rotationMode": "random",
             "volumeID": "Striatum"
         },
         "dSPN_0": {
-            "morphology": "$DATA/neurons/striatum/dspn/str-dspn-e150602_c1_D1-mWT-0728MSN01-v20190508/WT-0728MSN01-cor-rep-ax.swc",
-            "parameters": "$DATA/neurons/striatum/dspn/str-dspn-e150602_c1_D1-mWT-0728MSN01-v20190508/parameters.json",
-            "mechanisms": "$DATA/neurons/striatum/dspn/str-dspn-e150602_c1_D1-mWT-0728MSN01-v20190508/mechanisms.json",
-            "modulation": "$DATA/neurons/striatum/dspn/str-dspn-e150602_c1_D1-mWT-0728MSN01-v20190508/modulation.json",
+            "morphology": "$SNUDDA_DATA/neurons/striatum/dspn/str-dspn-e150917_c9_D1-mWT-1215MSN03-v20211026/morphology",
+            "parameters": "$SNUDDA_DATA/neurons/striatum/dspn/str-dspn-e150917_c9_D1-mWT-1215MSN03-v20211026/parameters.json",
+            "mechanisms": "$SNUDDA_DATA/neurons/striatum/dspn/str-dspn-e150917_c9_D1-mWT-1215MSN03-v20211026/mechanisms.json",
             "num": 11875,
             "hoc": null,
             "neuronType": "neuron",
@@ -435,10 +458,9 @@
             "volumeID": "Striatum"
         },
         "dSPN_1": {
-            "morphology": "$DATA/neurons/striatum/dspn/str-dspn-e150917_c10_D1-mWT-P270-20-v20190521/WT-P270-20-15ak-cor.swc",
-            "parameters": "$DATA/neurons/striatum/dspn/str-dspn-e150917_c10_D1-mWT-P270-20-v20190521/parameters.json",
-            "mechanisms": "$DATA/neurons/striatum/dspn/str-dspn-e150917_c10_D1-mWT-P270-20-v20190521/mechanisms.json",
-            "modulation": "$DATA/neurons/striatum/dspn/str-dspn-e150917_c10_D1-mWT-P270-20-v20190521/modulation.json",
+            "morphology": "$SNUDDA_DATA/neurons/striatum/dspn/str-dspn-e150917_c6_D1-m21-6-DE-v20211028/morphology",
+            "parameters": "$SNUDDA_DATA/neurons/striatum/dspn/str-dspn-e150917_c6_D1-m21-6-DE-v20211028/parameters.json",
+            "mechanisms": "$SNUDDA_DATA/neurons/striatum/dspn/str-dspn-e150917_c6_D1-m21-6-DE-v20211028/mechanisms.json",
             "num": 11875,
             "hoc": null,
             "neuronType": "neuron",
@@ -446,10 +468,9 @@
             "volumeID": "Striatum"
         },
         "dSPN_2": {
-            "morphology": "$DATA/neurons/striatum/dspn/str-dspn-e150917_c9_d1-mWT-1215MSN03-v20190521/WT-1215MSN03-cor-rep-ax2.swc",
-            "parameters": "$DATA/neurons/striatum/dspn/str-dspn-e150917_c9_d1-mWT-1215MSN03-v20190521/parameters.json",
-            "mechanisms": "$DATA/neurons/striatum/dspn/str-dspn-e150917_c9_d1-mWT-1215MSN03-v20190521/mechanisms.json",
-            "modulation": "$DATA/neurons/striatum/dspn/str-dspn-e150917_c9_d1-mWT-1215MSN03-v20190521/modulation.json",
+            "morphology": "$SNUDDA_DATA/neurons/striatum/dspn/str-dspn-e150602_c1_D1-mWT-0728MSN01-v20211026/morphology",
+            "parameters": "$SNUDDA_DATA/neurons/striatum/dspn/str-dspn-e150602_c1_D1-mWT-0728MSN01-v20211026/parameters.json",
+            "mechanisms": "$SNUDDA_DATA/neurons/striatum/dspn/str-dspn-e150602_c1_D1-mWT-0728MSN01-v20211026/mechanisms.json",
             "num": 11875,
             "hoc": null,
             "neuronType": "neuron",
@@ -457,10 +478,9 @@
             "volumeID": "Striatum"
         },
         "dSPN_3": {
-            "morphology": "$DATA/neurons/striatum/dspn/str-dspn-e150917_c6_D1-m21-6-DE-v20190503/21-6-DE-cor-rep-ax.swc",
-            "parameters": "$DATA/neurons/striatum/dspn/str-dspn-e150917_c6_D1-m21-6-DE-v20190503/parameters.json",
-            "mechanisms": "$DATA/neurons/striatum/dspn/str-dspn-e150917_c6_D1-m21-6-DE-v20190503/mechanisms.json",
-            "modulation": "$DATA/neurons/striatum/dspn/str-dspn-e150917_c6_D1-m21-6-DE-v20190503/modulation.json",
+            "morphology": "$SNUDDA_DATA/neurons/striatum/dspn/str-dspn-e150917_c10_D1-mWT-P270-20-v20211026/morphology",
+            "parameters": "$SNUDDA_DATA/neurons/striatum/dspn/str-dspn-e150917_c10_D1-mWT-P270-20-v20211026/parameters.json",
+            "mechanisms": "$SNUDDA_DATA/neurons/striatum/dspn/str-dspn-e150917_c10_D1-mWT-P270-20-v20211026/mechanisms.json",
             "num": 11875,
             "hoc": null,
             "neuronType": "neuron",
@@ -468,10 +488,9 @@
             "volumeID": "Striatum"
         },
         "iSPN_0": {
-            "morphology": "$DATA/neurons/striatum/ispn/str-ispn-e150917_c11_D2-mWT-MSN1-v20190603/WT-MSN1-cor-rep-ax.swc",
-            "parameters": "$DATA/neurons/striatum/ispn/str-ispn-e150917_c11_D2-mWT-MSN1-v20190603/parameters.json",
-            "mechanisms": "$DATA/neurons/striatum/ispn/str-ispn-e150917_c11_D2-mWT-MSN1-v20190603/mechanisms.json",
-            "modulation": "$DATA/neurons/striatum/ispn/str-ispn-e150917_c11_D2-mWT-MSN1-v20190603/modulation.json",
+            "morphology": "$SNUDDA_DATA/neurons/striatum/ispn/str-ispn-e160118_c10_D2-m46-3-DE-v20211026/morphology",
+            "parameters": "$SNUDDA_DATA/neurons/striatum/ispn/str-ispn-e160118_c10_D2-m46-3-DE-v20211026/parameters.json",
+            "mechanisms": "$SNUDDA_DATA/neurons/striatum/ispn/str-ispn-e160118_c10_D2-m46-3-DE-v20211026/mechanisms.json",
             "num": 11875,
             "hoc": null,
             "neuronType": "neuron",
@@ -479,10 +498,9 @@
             "volumeID": "Striatum"
         },
         "iSPN_1": {
-            "morphology": "$DATA/neurons/striatum/ispn/str-ispn-e160118_c10_D2-m46-3-DE-v20190529/46-3-DE-cor-rep-ax.swc",
-            "parameters": "$DATA/neurons/striatum/ispn/str-ispn-e160118_c10_D2-m46-3-DE-v20190529/parameters.json",
-            "mechanisms": "$DATA/neurons/striatum/ispn/str-ispn-e160118_c10_D2-m46-3-DE-v20190529/mechanisms.json",
-            "modulation": "$DATA/neurons/striatum/ispn/str-ispn-e160118_c10_D2-m46-3-DE-v20190529/modulation.json",
+            "morphology": "$SNUDDA_DATA/neurons/striatum/ispn/str-ispn-e151123_c1_D2-mWT-P270-09-v20211026/morphology",
+            "parameters": "$SNUDDA_DATA/neurons/striatum/ispn/str-ispn-e151123_c1_D2-mWT-P270-09-v20211026/parameters.json",
+            "mechanisms": "$SNUDDA_DATA/neurons/striatum/ispn/str-ispn-e151123_c1_D2-mWT-P270-09-v20211026/mechanisms.json",
             "num": 11875,
             "hoc": null,
             "neuronType": "neuron",
@@ -490,10 +508,9 @@
             "volumeID": "Striatum"
         },
         "iSPN_2": {
-            "morphology": "$DATA/neurons/striatum/ispn/str-ispn-e151123_c1_D2-mWT-P270-09-v20190527/WT-P270-09-15ak-cor.swc",
-            "parameters": "$DATA/neurons/striatum/ispn/str-ispn-e151123_c1_D2-mWT-P270-09-v20190527/parameters.json",
-            "mechanisms": "$DATA/neurons/striatum/ispn/str-ispn-e151123_c1_D2-mWT-P270-09-v20190527/mechanisms.json",
-            "modulation": "$DATA/neurons/striatum/ispn/str-ispn-e151123_c1_D2-mWT-P270-09-v20190527/modulation.json",
+            "morphology": "$SNUDDA_DATA/neurons/striatum/ispn/str-ispn-e150917_c11_D2-mWT-MSN1-v20211026/morphology",
+            "parameters": "$SNUDDA_DATA/neurons/striatum/ispn/str-ispn-e150917_c11_D2-mWT-MSN1-v20211026/parameters.json",
+            "mechanisms": "$SNUDDA_DATA/neurons/striatum/ispn/str-ispn-e150917_c11_D2-mWT-MSN1-v20211026/mechanisms.json",
             "num": 11875,
             "hoc": null,
             "neuronType": "neuron",
@@ -501,10 +518,9 @@
             "volumeID": "Striatum"
         },
         "iSPN_3": {
-            "morphology": "$DATA/neurons/striatum/ispn/str-ispn-e150908_c4_D2-m51-5-DE-v20190611/51-5-DE-cor-rep-ax.swc",
-            "parameters": "$DATA/neurons/striatum/ispn/str-ispn-e150908_c4_D2-m51-5-DE-v20190611/parameters.json",
-            "mechanisms": "$DATA/neurons/striatum/ispn/str-ispn-e150908_c4_D2-m51-5-DE-v20190611/mechanisms.json",
-            "modulation": "$DATA/neurons/striatum/ispn/str-ispn-e150908_c4_D2-m51-5-DE-v20190611/modulation.json",
+            "morphology": "$SNUDDA_DATA/neurons/striatum/ispn/str-ispn-e150908_c4_D2-m51-5-DE-v20211026/morphology",
+            "parameters": "$SNUDDA_DATA/neurons/striatum/ispn/str-ispn-e150908_c4_D2-m51-5-DE-v20211026/parameters.json",
+            "mechanisms": "$SNUDDA_DATA/neurons/striatum/ispn/str-ispn-e150908_c4_D2-m51-5-DE-v20211026/mechanisms.json",
             "num": 11875,
             "hoc": null,
             "neuronType": "neuron",
diff --git a/tests/networks/network_testing_place/network-config.json b/tests/networks/network_testing_place/network-config.json
index 6ddbcdb1b..0bf5ff352 100644
--- a/tests/networks/network_testing_place/network-config.json
+++ b/tests/networks/network_testing_place/network-config.json
@@ -18,7 +18,7 @@
         }
     },
     "Connectivity": {
-        "FSN,FSN": {
+        "FS,FS": {
             "GABA": {
                 "conductance": [
                     1.1e-09,
@@ -40,7 +40,8 @@
                     "softMax": 5,
                     "mu2": 2,
                     "a3": 1,
-                    "distPruning": null
+                    "distPruning": null,
+                    "cluster": false
                 }
             },
             "GapJunction": {
@@ -54,11 +55,12 @@
                     "softMax": 8,
                     "mu2": 2,
                     "a3": 1.0,
-                    "distPruning": null
+                    "distPruning": null,
+                    "cluster": false
                 }
             }
         },
-        "FSN,dSPN": {
+        "FS,dSPN": {
             "GABA": {
                 "conductance": [
                     1.1e-09,
@@ -73,7 +75,7 @@
                         0.008,
                         1000.0
                     ],
-                    "parameterFile": "$DATA/synapses/striatum/PlanertFitting-FD-tmgaba-fit.json",
+                    "parameterFile": "$SNUDDA_DATA/synapses/striatum/PlanertFitting-FD-tmgaba-fit.json",
                     "modFile": "tmGabaA"
                 },
                 "pruning": {
@@ -81,11 +83,12 @@
                     "softMax": 5,
                     "mu2": 2,
                     "a3": 1.0,
-                    "distPruning": "exp(-(0.5*d/60e-6)**2)"
+                    "distPruning": "exp(-(0.5*d/60e-6)**2)",
+                    "cluster": false
                 }
             }
         },
-        "FSN,iSPN": {
+        "FS,iSPN": {
             "GABA": {
                 "conductance": [
                     1.1e-09,
@@ -100,7 +103,7 @@
                         0.008,
                         1000.0
                     ],
-                    "parameterFile": "$DATA/synapses/striatum/PlanertFitting-FI-tmgaba-fit.json",
+                    "parameterFile": "$SNUDDA_DATA/synapses/striatum/PlanertFitting-FI-tmgaba-fit.json",
                     "modFile": "tmGabaA"
                 },
                 "pruning": {
@@ -108,11 +111,12 @@
                     "softMax": 5,
                     "mu2": 2,
                     "a3": 0.9,
-                    "distPruning": "exp(-(0.5*d/60e-6)**2)"
+                    "distPruning": "exp(-(0.5*d/60e-6)**2)",
+                    "cluster": false
                 }
             }
         },
-        "FSN,LTS": {
+        "FS,LTS": {
             "GABA": {
                 "conductance": [
                     1.1e-10,
@@ -126,7 +130,8 @@
                     "softMax": 3,
                     "mu2": 2,
                     "a3": 1.0,
-                    "distPruning": null
+                    "distPruning": null,
+                    "cluster": false
                 }
             }
         },
@@ -146,7 +151,7 @@
                         1000.0
                     ],
                     "failRate": 0.7,
-                    "parameterFile": "$DATA/synapses/striatum/PlanertFitting-DD-tmgaba-fit.json",
+                    "parameterFile": "$SNUDDA_DATA/synapses/striatum/PlanertFitting-DD-tmgaba-fit.json",
                     "modFile": "tmGabaA"
                 },
                 "pruning": {
@@ -154,14 +159,16 @@
                     "softMax": 3,
                     "mu2": 2.4,
                     "a3": 1.0,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 },
                 "pruningOther": {
                     "f1": 0.38,
                     "softMax": 3,
                     "mu2": 2.4,
                     "a3": 1.0,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 }
             }
         },
@@ -181,7 +188,7 @@
                         1000.0
                     ],
                     "failRate": 0.7,
-                    "parameterFile": "$DATA/synapses/striatum/PlanertFitting-DI-tmgaba-fit.json",
+                    "parameterFile": "$SNUDDA_DATA/synapses/striatum/PlanertFitting-DI-tmgaba-fit.json",
                     "modFile": "tmGabaA"
                 },
                 "pruning": {
@@ -189,14 +196,16 @@
                     "softMax": 3,
                     "mu2": 2.4,
                     "a3": 1.0,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 },
                 "pruningOther": {
                     "f1": 0.2,
                     "softMax": 3,
                     "mu2": 2.4,
                     "a3": 1.0,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 }
             }
         },
@@ -215,7 +224,8 @@
                     "softMax": 3,
                     "mu2": 2.4,
                     "a3": 0.1,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 }
             }
         },
@@ -235,7 +245,7 @@
                         1000.0
                     ],
                     "failRate": 0.4,
-                    "parameterFile": "$DATA/synapses/striatum/PlanertFitting-ID-tmgaba-fit.json",
+                    "parameterFile": "$SNUDDA_DATA/synapses/striatum/PlanertFitting-ID-tmgaba-fit.json",
                     "modFile": "tmGabaA"
                 },
                 "pruning": {
@@ -243,14 +253,16 @@
                     "softMax": 4,
                     "mu2": 2.4,
                     "a3": 1.0,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 },
                 "pruningOther": {
                     "f1": 0.3,
                     "softMax": 4,
                     "mu2": 2.4,
                     "a3": 1.0,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 }
             }
         },
@@ -270,7 +282,7 @@
                         1000.0
                     ],
                     "failRate": 0.4,
-                    "parameterFile": "$DATA/synapses/striatum/PlanertFitting-II-tmgaba-fit.json",
+                    "parameterFile": "$SNUDDA_DATA/synapses/striatum/PlanertFitting-II-tmgaba-fit.json",
                     "modFile": "tmGabaA"
                 },
                 "pruning": {
@@ -278,14 +290,16 @@
                     "softMax": 4,
                     "mu2": 2.4,
                     "a3": 1.0,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 },
                 "pruningOther": {
                     "f1": 0.55,
                     "softMax": 4,
                     "mu2": 2.4,
                     "a3": 1.0,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 }
             }
         },
@@ -304,7 +318,8 @@
                     "softMax": 3,
                     "mu2": 2.4,
                     "a3": 0.1,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 }
             }
         },
@@ -330,7 +345,8 @@
                     "softMax": 15,
                     "mu2": 3,
                     "a3": 0.3,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 }
             }
         },
@@ -356,7 +372,8 @@
                     "softMax": 15,
                     "mu2": 3,
                     "a3": 0.3,
-                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)"
+                    "distPruning": "1-exp(-(0.4*d/60e-6)**2)",
+                    "cluster": false
                 }
             }
         },
@@ -374,13 +391,14 @@
                     "softMax": 10,
                     "mu2": 3,
                     "a3": 0.4,
-                    "distPruning": null
+                    "distPruning": null,
+                    "cluster": false
                 }
             }
         }
     },
     "Neurons": {
-        "FSN_0": {
+        "FS_0": {
             "morphology": "/home/hjorth/HBP/Snudda/tests/validation/striatum/fs/str-fs-e161205_FS1-mMTC180800A-IDB-v20190312/MTC180800A-IDB-cor-rep.swc",
             "parameters": "/home/hjorth/HBP/Snudda/tests/validation/striatum/fs/str-fs-e161205_FS1-mMTC180800A-IDB-v20190312/parameters.json",
             "mechanisms": "/home/hjorth/HBP/Snudda/tests/validation/striatum/fs/str-fs-e161205_FS1-mMTC180800A-IDB-v20190312/mechanisms.json",