{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Ball and stick 2: Build a ring network of ball-and-stick cells" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This page is the second in a series where we build a multicompartment cell and evolve it into a network of cells running on a parallel machine. In this page, we build a ring network of ball-and-stick cells created in the previous page. In this case, we make N cells where cell n makes an excitatory synapse onto cell n + 1 and the last, Nth cell in the network projects to the first cell. We will drive the first cell and visualize the spikes of the network.\n", "\n", "In practice, you will likely want to separate the specification of the cell type and the use of that cell type into separate files, but we'll ignore that here." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Generic cell class\n", "

We'll begin by splitting the BallAndStick class into two parts: a generic Cell class and that which is specific to the BallAndStick model. This will allow us to focus our attention on the parts that we're working on and to make code that we can reuse later.

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First, we load the NEURON library, of course; we'll load NEURON's built-in graphics library as well to allow visual inspection of the sizes of the diameters." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "execution": { "iopub.execute_input": "2025-05-23T00:18:50.020961Z", "iopub.status.busy": "2025-05-23T00:18:50.020823Z", "iopub.status.idle": "2025-05-23T00:18:50.318298Z", "shell.execute_reply": "2025-05-23T00:18:50.317882Z" } }, "outputs": [], "source": [ "from neuron import h, gui\n", "from neuron.units import ms, mV" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will also want to use NEURON's standard run library, so let's go ahead and load that too:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "execution": { "iopub.execute_input": "2025-05-23T00:18:50.320467Z", "iopub.status.busy": "2025-05-23T00:18:50.320237Z", "iopub.status.idle": "2025-05-23T00:18:50.325518Z", "shell.execute_reply": "2025-05-23T00:18:50.325162Z" } }, "outputs": [ { "data": { "text/plain": [ "1.0" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "h.load_file(\"stdrun.hoc\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The generic Cell class (we'll expand this later):" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "execution": { "iopub.execute_input": "2025-05-23T00:18:50.327852Z", "iopub.status.busy": "2025-05-23T00:18:50.327226Z", "iopub.status.idle": "2025-05-23T00:18:50.330699Z", "shell.execute_reply": "2025-05-23T00:18:50.330351Z" } }, "outputs": [], "source": [ "class Cell:\n", " def __init__(self, gid):\n", " self._gid = gid\n", " self._setup_morphology()\n", " self.all = self.soma.wholetree()\n", " self._setup_biophysics()\n", "\n", " def __repr__(self):\n", " return \"{}[{}]\".format(self.name, self._gid)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And the BallAndStick class:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "execution": { "iopub.execute_input": "2025-05-23T00:18:50.332671Z", "iopub.status.busy": "2025-05-23T00:18:50.332292Z", "iopub.status.idle": "2025-05-23T00:18:50.337050Z", "shell.execute_reply": "2025-05-23T00:18:50.336719Z" } }, "outputs": [], "source": [ "class BallAndStick(Cell):\n", " name = \"BallAndStick\"\n", "\n", " def _setup_morphology(self):\n", " self.soma = h.Section(name=\"soma\", cell=self)\n", " self.dend = h.Section(name=\"dend\", cell=self)\n", " self.dend.connect(self.soma)\n", " self.soma.L = self.soma.diam = 12.6157\n", " self.dend.L = 200\n", " self.dend.diam = 1\n", "\n", " def _setup_biophysics(self):\n", " for sec in self.all:\n", " sec.Ra = 100 # Axial resistance in Ohm * cm\n", " sec.cm = 1 # Membrane capacitance in micro Farads / cm^2\n", " self.soma.insert(\"hh\")\n", " for seg in self.soma:\n", " seg.hh.gnabar = 0.12 # Sodium conductance in S/cm2\n", " seg.hh.gkbar = 0.036 # Potassium conductance in S/cm2\n", " seg.hh.gl = 0.0003 # Leak conductance in S/cm2\n", " seg.hh.el = -54.3 # Reversal potential in mV\n", " # Insert passive current in the dendrite\n", " self.dend.insert(\"pas\")\n", " for seg in self.dend:\n", " seg.pas.g = 0.001 # Passive conductance in S/cm2\n", " seg.pas.e = -65 # Leak reversal potential mV" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The only changes to the BallAndStick definition are the removal of the `__init__` and `__repr__` methods, the specification of the name of the class, the removal of the definition of self.all (now handled by the Cell class), and the change to the class declaration (the very first line) to indicate that BallAndStick is a type of Cell." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Adjusting position and orientation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When we have more than one cell, we'd like to be able to position them so that we can see them clearly. We'll introduce new methods `_set_position` and `_rotate_z` to the Cell class to allow us to do this:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "execution": { "iopub.execute_input": "2025-05-23T00:18:50.338944Z", "iopub.status.busy": "2025-05-23T00:18:50.338791Z", "iopub.status.idle": "2025-05-23T00:18:50.344048Z", "shell.execute_reply": "2025-05-23T00:18:50.343730Z" } }, "outputs": [], "source": [ "class Cell:\n", " def __init__(self, gid, x, y, z, theta):\n", " self._gid = gid\n", " self._setup_morphology()\n", " self.all = self.soma.wholetree()\n", " self._setup_biophysics()\n", " self.x = self.y = self.z = 0 # <-- NEW\n", " h.define_shape()\n", " self._rotate_z(theta) # <-- NEW\n", " self._set_position(x, y, z) # <-- NEW\n", "\n", " def __repr__(self):\n", " return \"{}[{}]\".format(self.name, self._gid)\n", "\n", " # everything below here is NEW\n", "\n", " def _set_position(self, x, y, z):\n", " for sec in self.all:\n", " for i in range(sec.n3d()):\n", " sec.pt3dchange(\n", " i,\n", " x - self.x + sec.x3d(i),\n", " y - self.y + sec.y3d(i),\n", " z - self.z + sec.z3d(i),\n", " sec.diam3d(i),\n", " )\n", " self.x, self.y, self.z = x, y, z\n", "\n", " def _rotate_z(self, theta):\n", " \"\"\"Rotate the cell about the Z axis.\"\"\"\n", " for sec in self.all:\n", " for i in range(sec.n3d()):\n", " x = sec.x3d(i)\n", " y = sec.y3d(i)\n", " c = h.cos(theta)\n", " s = h.sin(theta)\n", " xprime = x * c - y * s\n", " yprime = x * s + y * c\n", " sec.pt3dchange(i, xprime, yprime, sec.z3d(i), sec.diam3d(i))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you are writing a script to do this, and revising the classes as we make changes, everything should be good. If you are following along in a Jupyter notebook, you will need to rerun the definition of BallAndStick above for the changes to take effect:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "execution": { "iopub.execute_input": "2025-05-23T00:18:50.345588Z", "iopub.status.busy": "2025-05-23T00:18:50.345227Z", "iopub.status.idle": "2025-05-23T00:18:50.349064Z", "shell.execute_reply": "2025-05-23T00:18:50.348764Z" } }, "outputs": [], "source": [ "## Run only for jupyter\n", "class BallAndStick(Cell):\n", " name = \"BallAndStick\"\n", "\n", " def _setup_morphology(self):\n", " self.soma = h.Section(name=\"soma\", cell=self)\n", " self.dend = h.Section(name=\"dend\", cell=self)\n", " self.dend.connect(self.soma)\n", " self.soma.L = self.soma.diam = 12.6157\n", " self.dend.L = 200\n", " self.dend.diam = 1\n", "\n", " def _setup_biophysics(self):\n", " for sec in self.all:\n", " sec.Ra = 100 # Axial resistance in Ohm * cm\n", " sec.cm = 1 # Membrane capacitance in micro Farads / cm^2\n", " self.soma.insert(\"hh\")\n", " for seg in self.soma:\n", " seg.hh.gnabar = 0.12 # Sodium conductance in S/cm2\n", " seg.hh.gkbar = 0.036 # Potassium conductance in S/cm2\n", " seg.hh.gl = 0.0003 # Leak conductance in S/cm2\n", " seg.hh.el = -54.3 # Reversal potential in mV\n", " # Insert passive current in the dendrite\n", " self.dend.insert(\"pas\")\n", " for seg in self.dend:\n", " seg.pas.g = 0.001 # Passive conductance in S/cm2\n", " seg.pas.e = -65 # Leak reversal potential mV" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's create a test cell. Note that we now have to specify `x`, `y`, `z`, and `theta` in addition to the `gid`." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "execution": { "iopub.execute_input": "2025-05-23T00:18:50.350322Z", "iopub.status.busy": "2025-05-23T00:18:50.350055Z", "iopub.status.idle": "2025-05-23T00:18:50.352591Z", "shell.execute_reply": "2025-05-23T00:18:50.352265Z" } }, "outputs": [], "source": [ "mycell = BallAndStick(0, 0, 0, 0, 0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you got a `TypeError`, that means you did not rerun the definition of BallAndStick. Go back and do that and then the above should work." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We no longer need the test cell, so let's delete it:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "execution": { "iopub.execute_input": "2025-05-23T00:18:50.353795Z", "iopub.status.busy": "2025-05-23T00:18:50.353595Z", "iopub.status.idle": "2025-05-23T00:18:50.355650Z", "shell.execute_reply": "2025-05-23T00:18:50.355357Z" } }, "outputs": [], "source": [ "del mycell" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Construct and position our cells" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We want to construct an arbitrary number of cells and position them in a circle. For the sake of reusability, we'll make a function that takes two parameters: `N`, the number of cells, and `r` the radius of the circle (in microns). This function will return a list of `N` cells centered around the origin on the XY plane:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "execution": { "iopub.execute_input": "2025-05-23T00:18:50.356937Z", "iopub.status.busy": "2025-05-23T00:18:50.356634Z", "iopub.status.idle": "2025-05-23T00:18:50.359230Z", "shell.execute_reply": "2025-05-23T00:18:50.358945Z" } }, "outputs": [], "source": [ "def create_n_BallAndStick(n, r):\n", " \"\"\"n = number of cells; r = radius of circle\"\"\"\n", " cells = []\n", " for i in range(n):\n", " theta = i * 2 * h.PI / n\n", " cells.append(BallAndStick(i, h.cos(theta) * r, h.sin(theta) * r, 0, theta))\n", " return cells" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's create 7 cells with r = 50 microns:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "execution": { "iopub.execute_input": "2025-05-23T00:18:50.360448Z", "iopub.status.busy": "2025-05-23T00:18:50.360176Z", "iopub.status.idle": "2025-05-23T00:18:50.363293Z", "shell.execute_reply": "2025-05-23T00:18:50.362977Z" } }, "outputs": [], "source": [ "my_cells = create_n_BallAndStick(7, 50)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's plot them using NEURON's built-in graphics:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "execution": { "iopub.execute_input": "2025-05-23T00:18:50.364898Z", "iopub.status.busy": "2025-05-23T00:18:50.364538Z", "iopub.status.idle": "2025-05-23T00:18:50.367356Z", "shell.execute_reply": "2025-05-23T00:18:50.367062Z" } }, "outputs": [ { "data": { "text/plain": [ "1.0" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ps = h.PlotShape(True)\n", "ps.show(0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Using functions like this is extremely flexible. We can switch to 5 cells like this:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "execution": { "iopub.execute_input": "2025-05-23T00:18:50.368637Z", "iopub.status.busy": "2025-05-23T00:18:50.368437Z", "iopub.status.idle": "2025-05-23T00:18:50.371705Z", "shell.execute_reply": "2025-05-23T00:18:50.371400Z" } }, "outputs": [], "source": [ "my_cells = create_n_BallAndStick(5, 50)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The old cells disappear (they get garbage collected, as there are no longer any references to them), and the new cells appear in the existing graph." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## A first synapse, and input via a NetStim" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Okay, we have our ball-and-stick cells arranged in a ring. Let’s now stimulate a cell and see that it responds appropriately. Instead of stimulating with a current electrode as we did before, let’s assign a virtual synapse so that we get acquainted with driving the cells through synaptic events.\n", "\n", "Event-based communication between objects in NEURON takes place via network connection objects called NetCons. Each NetCon has a source and target, where the source is typically a spike threshold detector. When a spike is detected, the NetCon sends a message to a target, usually a synapse on a postsynaptic cell.\n", "\n", "A NetStim is a spike generator that can be used as the source in a NetCon, behaving as external input onto the synapse of a target cell. The following code makes a NetStim object that generates one spike at time t=9. The NetCon then adds another ms delay to deliver a synaptic event at time t=10 onto the first cell.\n", "\n", "The code below makes a stimulator and attaches it to a synapse object (ExpSyn) that behaves much like an AMPA synapse – it conducts current as a decaying exponential function." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "execution": { "iopub.execute_input": "2025-05-23T00:18:50.372946Z", "iopub.status.busy": "2025-05-23T00:18:50.372811Z", "iopub.status.idle": "2025-05-23T00:18:50.376000Z", "shell.execute_reply": "2025-05-23T00:18:50.375675Z" } }, "outputs": [], "source": [ "stim = h.NetStim() # Make a new stimulator\n", "\n", "## Attach it to a synapse in the middle of the dendrite\n", "## of the first cell in the network. (Named 'syn_' to avoid\n", "## being overwritten with the 'syn' var assigned later.)\n", "syn_ = h.ExpSyn(my_cells[0].dend(0.5))\n", "\n", "stim.number = 1\n", "stim.start = 9\n", "ncstim = h.NetCon(stim, syn_)\n", "ncstim.delay = 1 * ms\n", "ncstim.weight[0] = 0.04 # NetCon weight is a vector." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Exponentially decaying currents, such as that generated by the synapse `syn_` have dynamics that depend on `tau`, the time constant. Let's specify a time constant of 2 ms:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "execution": { "iopub.execute_input": "2025-05-23T00:18:50.377581Z", "iopub.status.busy": "2025-05-23T00:18:50.377163Z", "iopub.status.idle": "2025-05-23T00:18:50.379625Z", "shell.execute_reply": "2025-05-23T00:18:50.379295Z" } }, "outputs": [], "source": [ "syn_.tau = 2 * ms" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The parameter `tau` specifies how quickly the currents decay. The exact value of the current depends on the cell's membrane potential, and the synapse's reversal potential, `syn_.e`." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "execution": { "iopub.execute_input": "2025-05-23T00:18:50.380945Z", "iopub.status.busy": "2025-05-23T00:18:50.380817Z", "iopub.status.idle": "2025-05-23T00:18:50.383111Z", "shell.execute_reply": "2025-05-23T00:18:50.382834Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Reversal potential = 0.0 mV\n" ] } ], "source": [ "print(\"Reversal potential = {} mV\".format(syn_.e))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Running and plotting a simulation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Right now, there are no synapses between cells, but let's confirm that the first cell works correctly:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Recording" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "execution": { "iopub.execute_input": "2025-05-23T00:18:50.384521Z", "iopub.status.busy": "2025-05-23T00:18:50.384188Z", "iopub.status.idle": "2025-05-23T00:18:50.387212Z", "shell.execute_reply": "2025-05-23T00:18:50.386882Z" } }, "outputs": [], "source": [ "recording_cell = my_cells[0]\n", "soma_v = h.Vector().record(recording_cell.soma(0.5)._ref_v)\n", "dend_v = h.Vector().record(recording_cell.dend(0.5)._ref_v)\n", "t = h.Vector().record(h._ref_t)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Simulating" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "execution": { "iopub.execute_input": "2025-05-23T00:18:50.388676Z", "iopub.status.busy": "2025-05-23T00:18:50.388293Z", "iopub.status.idle": "2025-05-23T00:18:50.394242Z", "shell.execute_reply": "2025-05-23T00:18:50.393929Z" } }, "outputs": [ { "data": { "text/plain": [ "0.0" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "h.finitialize(-65 * mV)\n", "h.continuerun(25 * ms)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plotting" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As before, if you're running in a Jupyter notebook, you'll need to tell it to display plots inline. Skip this step if you are running from a script:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "execution": { "iopub.execute_input": "2025-05-23T00:18:50.395754Z", "iopub.status.busy": "2025-05-23T00:18:50.395488Z", "iopub.status.idle": "2025-05-23T00:18:50.715637Z", "shell.execute_reply": "2025-05-23T00:18:50.715236Z" } }, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "execution": { "iopub.execute_input": "2025-05-23T00:18:50.717686Z", "iopub.status.busy": "2025-05-23T00:18:50.717407Z", "iopub.status.idle": "2025-05-23T00:18:50.802271Z", "shell.execute_reply": "2025-05-23T00:18:50.801946Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "plt.plot(t, soma_v, label=\"soma(0.5)\")\n", "plt.plot(t, dend_v, label=\"dend(0.5)\")\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Recording synaptic conductance" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To understand the above graph, we may wish to consider the time series of synaptic current. Let's create a new Vector to monitor that:" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "execution": { "iopub.execute_input": "2025-05-23T00:18:50.804174Z", "iopub.status.busy": "2025-05-23T00:18:50.804018Z", "iopub.status.idle": "2025-05-23T00:18:50.807114Z", "shell.execute_reply": "2025-05-23T00:18:50.806788Z" } }, "outputs": [], "source": [ "syn_i = h.Vector().record(syn_._ref_i)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Only data that is explicitly recorded during a simulation is stored, so we will have to rerun the simulation to compute those currents:" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "execution": { "iopub.execute_input": "2025-05-23T00:18:50.809309Z", "iopub.status.busy": "2025-05-23T00:18:50.808528Z", "iopub.status.idle": "2025-05-23T00:18:50.815181Z", "shell.execute_reply": "2025-05-23T00:18:50.814853Z" } }, "outputs": [ { "data": { "text/plain": [ "0.0" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "h.finitialize(-65 * mV)\n", "h.continuerun(25 * ms)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can plot:" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "execution": { "iopub.execute_input": "2025-05-23T00:18:50.816679Z", "iopub.status.busy": "2025-05-23T00:18:50.816535Z", "iopub.status.idle": "2025-05-23T00:18:50.929746Z", "shell.execute_reply": "2025-05-23T00:18:50.929334Z" } }, "outputs": [ { "data": { "image/png": "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sRA9egjx0UdCzJsnxNq1QuzfL0RYmBDR0UKkp+umbSkpQly9KsT27UIsWiTEBx8I0bGjEFWq5N9Gc3MhatcWomdPISZPFmL1aiFOnBAiPl437SKi8iO/vJYde3RLIDlZmqPQEJKSCtcLExMTg7fffhtfffUVevfujefPn+P48eMQQqBdu3aoXr061q1bh8mTJwMAMjIysH79enz11VfqYyQnJ2Px4sVYt24dzMzM8O6772LSpElYv349AOD58+cYMmQIli9fDiEElixZgu7du+Pff/+Fvb29+jiffvopFixYgGXLlmHdunV46623cOXKFfj7++PcuXNo0aIFDh48iHr16uXZOzp9+nSsWrUKS5cuRZs2bRATE5Pr8s7FrZ+b5ORkLFy4EKtXr4azszPcXq4Tu3jxYsyaNQuzZ88GAISHh6Nbt2744osvsGbNGsTHx2P06NEYPXo0goOD1cdbsmQJ5s6di//973/YsmULPvroI7Rv3x61a9cu9PtAuqPPMbpffikte9qhA9Ctm+6PnxdnZ+DNN6UNkHqrIyKkqc1u39benjyRlj+Oj5f256dSpdxnEnB0zFoMQC6XvhtfvJC2uDjporDo6KwpuvJ7r11dc++d9fUtv0MviMiA9B67y5Gi9ugmJeXfA6HPTaOTMF/nz58XAERkZGSu+xcuXCj8/f3Vj//44w9hZ2en7oUMDg4WAMSdO3fUdVasWCEqV66c5zkVCoWwt7cXf/75p7oMgPjwww+16gUGBoqPPvpICCFERESEACAuXryoVUezRzcxMVFYWVmJVatWFfzCC1G/sD26AERYWJjWc318fESvXr20yoYPHy4++OADrbLjx48LMzMz9c+Nj4+PePfdd9X7lUqlcHNzEz/88EO+74Mm9ujqlp2d9Dul8SOuE5GRQlhYSMc+elS3x9alJ0+kXttdu4T48UchZs4UYtgwITp3FqJBAyEqVxbCzEy3318ODkI0bSrEW29J51u7VohTp6S2EBEVhD26pcTWVr9LMxZ07sIICAhAp06d0KBBAwQFBaFr167o168fKr6ceX7o0KGYOXMmzpw5g1deeQUhISF48803UUGju9jW1hY1atRQP/bw8EBcXJz68aNHjzBz5kwcOXIEcXFxUCgUSE5ORlS2q0RatmyZ43FYWFihX/ONGzeQlpaGTp066aV+XiwtLdGwYcMc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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = plt.figure(figsize=(8, 4))\n", "ax1 = fig.add_subplot(2, 1, 1)\n", "soma_plot = ax1.plot(t, soma_v, color=\"black\", label=\"soma(0.5)\")\n", "dend_plot = ax1.plot(t, dend_v, color=\"red\", label=\"dend(0.5)\")\n", "rev_plot = ax1.plot(\n", " [t[0], t[-1]], [syn_.e, syn_.e], label=\"syn reversal\", color=\"blue\", linestyle=\":\"\n", ")\n", "ax1.legend()\n", "ax1.set_ylabel(\"mV\")\n", "ax1.set_xticks([]) # Use ax2's tick labels\n", "\n", "ax2 = fig.add_subplot(2, 1, 2)\n", "syn_plot = ax2.plot(t, syn_i, color=\"blue\", label=\"synaptic current\")\n", "ax2.legend()\n", "ax2.set_ylabel(h.units(\"ExpSyn.i\"))\n", "ax2.set_xlabel(\"time (ms)\")\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Try setting the recording vectors to one of the other cells. They should be unresponsive to the stimulus." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Connecting the cells" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Okay. We have our ball-and-stick cells arranged in a ring, and we have attached a stimulus onto the first cell. Next, we need to connect an axon from cell n to a synapse at the middle of the dendrite on cell n + 1. For this model, the particular dynamics of the axons do not need to be explicitly modeled. When the soma fires an action potential, we assume the spike propagates down the axon and induces a synaptic event onto the dendrite of the target cell with some delay. We can therefore connect a spike detector in the soma of the presynaptic cell that triggers a synaptic event in the target cell via a NetCon.\n", "\n" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "execution": { "iopub.execute_input": "2025-05-23T00:18:50.931840Z", "iopub.status.busy": "2025-05-23T00:18:50.931658Z", "iopub.status.idle": "2025-05-23T00:18:50.935848Z", "shell.execute_reply": "2025-05-23T00:18:50.935498Z" } }, "outputs": [], "source": [ "syns = []\n", "netcons = []\n", "for source, target in zip(my_cells, my_cells[1:] + [my_cells[0]]):\n", " syn = h.ExpSyn(target.dend(0.5))\n", " nc = h.NetCon(source.soma(0.5)._ref_v, syn, sec=source.soma)\n", " nc.weight[0] = 0.05\n", " nc.delay = 5\n", " netcons.append(nc)\n", " syns.append(syn)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The `zip` pairs each cell with the next cell, where the addition places the first cell as the cell after the last cell. The seemingly repetitive specification of the source section in the `NetCon` constructor's `sec=` argument is required for technical reasons." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's see what happens to the first cell:" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "execution": { "iopub.execute_input": "2025-05-23T00:18:50.938257Z", "iopub.status.busy": "2025-05-23T00:18:50.937542Z", "iopub.status.idle": "2025-05-23T00:18:51.022536Z", "shell.execute_reply": "2025-05-23T00:18:51.022202Z" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAioAAAGdCAYAAAA8F1jjAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAcm1JREFUeJzt3Xl4VNX5B/DvvbNmT8jKvq+KsimmLnWhRIvWvS6ooP5sbaFVUaxUq61WsXWp1mrVVtG6FGurtdW6UHDBiqIgKCCgsgokAUL2ZLZ7fn/cZe5MZiYzk5ksd76f58lDcmeSHIbD3Pe85z3nSEIIASIiIqJeSO7pBhARERFFw0CFiIiIei0GKkRERNRrMVAhIiKiXouBChEREfVaDFSIiIio12KgQkRERL0WAxUiIiLqtew93YCuUhQFe/fuRV5eHiRJ6unmEBERURyEEGhqasKAAQMgy9HzJn0+UNm7dy8GDx7c080gIiKiJOzevRuDBg2K+nifD1Ty8vIAqH/R/Pz8Hm4NERERxaOxsRGDBw827uPR9PlARZ/uyc/PZ6BCRETUx3RWtsFiWiIiIuq1GKgQERFRr8VAhYiIiHqtPl+jQkREfV8gEIDP5+vpZlAK2Ww22O32Lm8dwkCFiIh6VHNzM7755hsIIXq6KZRi2dnZ6N+/P5xOZ9I/o9sClbvvvhuLFi3CNddcgwceeAAA0N7ejuuvvx5Lly6Fx+NBVVUVHnnkEZSXl3dXs4iIqAcFAgF88803yM7ORmlpKTfutAghBLxeL/bv34/t27dj9OjRMTd1i6VbApWPP/4Yjz32GI444oiQ69dddx1ee+01vPjiiygoKMD8+fNxzjnn4H//+193NIuIiHqYz+eDEAKlpaXIysrq6eZQCmVlZcHhcGDnzp3wer1wu91J/Zy0F9M2Nzdj9uzZ+NOf/oSioiLjekNDA5544gncf//9OPnkkzF16lQsWbIEH3zwAT788MN0N4uIiHoRZlKsKdksSsjPSEE7Ypo3bx5mzZqFGTNmhFxfs2YNfD5fyPVx48ZhyJAhWLVqVdSf5/F40NjYGPJBRERE1pTWqZ+lS5di7dq1+Pjjjzs8Vl1dDafTicLCwpDr5eXlqK6ujvozFy9ejF/96lepbioRERH1QmnLqOzevRvXXHMNnnvuuaTnpSJZtGgRGhoajI/du3en7GcTERH1dcuXL8f48eMRCATS+ntuuukm/OQnP0nr7wDSGKisWbMGtbW1mDJlCux2O+x2O9599138/ve/h91uR3l5ObxeL+rr60O+r6amBhUVFVF/rsvlMs714fk+REREoW688UbccsstsNlsxrV33nkHU6ZMgcvlwqhRo/DUU0/F/Bk7duyAJEkdPsw1pDfccAOefvppbNu2LV1/FQBpDFROOeUUfP7551i3bp3xMW3aNMyePdv43OFwYPny5cb3bNmyBbt27UJlZWW6mpVxhBB4ZtUOfLrrUE83hYiI0uz999/H119/jXPPPde4tn37dsyaNQsnnXQS1q1bh2uvvRb/93//hzfffLPTn/ff//4X+/btMz6mTp1qPFZSUoKqqir88Y9/TMvfRZe2QCUvLw+HH354yEdOTg6Ki4tx+OGHo6CgAFdeeSUWLFiAt99+G2vWrMHll1+OyspKHHPMMelqVsZZte0gfvHKRpz9yAc93RQiok4JIdDq9ffIR6Ibzv3973/HxIkTkZWVheLiYsyYMQMtLS1QFAW33347Bg0aBJfLhUmTJuGNN94wvk/PVvztb3/D8ccfj6ysLBx11FHYunUrPv74Y0ybNg25ubk47bTTsH//fuP7Pv74Y3znO99BSUkJCgoK8O1vfxtr164NadPSpUvxne98J6Tk4tFHH8Xw4cNx3333Yfz48Zg/fz7OO+88/O53v+v071hcXIyKigrjw+FwhDx+xhlnYOnSpQm9bonq0Z1pf/e730GWZZx77rkhG75R6mze12R83uzxI9fFzYiJqPdq8wUw4dbOR/rpsOn2KmQ743uP3LdvHy666CL89re/xdlnn42mpiasXLkSQgg8+OCDuO+++/DYY49h8uTJePLJJ/G9730PGzduxOjRo42fcdttt+GBBx7AkCFDcMUVV+Diiy9GXl4eHnzwQWRnZ+P73/8+br31ViNj0dTUhDlz5uChhx6CEAL33Xcfvvvd7+LLL79EXl4eAGDlypW4+OKLQ9q6atWqDitvq6qqcO2113b69/ze976H9vZ2jBkzBjfeeCO+973vhTx+9NFH45tvvsGOHTswbNiwuF67RHXrXeudd94J+drtduPhhx/Gww8/3J3NyCiyaWuC6oY2jCrL67nGEBFZxL59++D3+3HOOedg6NChAICJEycCAO6991787Gc/w4UXXggA+M1vfoO3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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "h.finitialize(-65 * mV)\n", "h.continuerun(100 * ms)\n", "plt.plot(t, soma_v, label=\"soma(0.5)\")\n", "plt.plot(t, dend_v, label=\"dend(0.5)\")\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here we of course only plotting `my_cells[0]`, but the fact that it spikes more than just once suggests that spikes are being transmitted throughout the network.\n", "\n", "As an exercise, try rerunning the above plotting `my_cells[1]` alternatively or in-addition to `my_cells[0]`." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can ask each of our existing `NetCon`s to record spike times in NEURON `Vector` objects using NetCon.record:" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "execution": { "iopub.execute_input": "2025-05-23T00:18:51.024918Z", "iopub.status.busy": "2025-05-23T00:18:51.024137Z", "iopub.status.idle": "2025-05-23T00:18:51.027640Z", "shell.execute_reply": "2025-05-23T00:18:51.027304Z" } }, "outputs": [], "source": [ "spike_times = [h.Vector() for nc in netcons]\n", "for nc, spike_times_vec in zip(netcons, spike_times):\n", " nc.record(spike_times_vec)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Once again, we rerun everything to 100 ms:" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "execution": { "iopub.execute_input": "2025-05-23T00:18:51.029173Z", "iopub.status.busy": "2025-05-23T00:18:51.029032Z", "iopub.status.idle": "2025-05-23T00:18:51.042474Z", "shell.execute_reply": "2025-05-23T00:18:51.042136Z" } }, "outputs": [ { "data": { "text/plain": [ "0.0" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "h.finitialize(-65 * mV)\n", "h.continuerun(100 * ms)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Print out the results:" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "execution": { "iopub.execute_input": "2025-05-23T00:18:51.044675Z", "iopub.status.busy": "2025-05-23T00:18:51.044068Z", "iopub.status.idle": "2025-05-23T00:18:51.047727Z", "shell.execute_reply": "2025-05-23T00:18:51.047410Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "cell 0: [10.925000000099914, 43.55000000010134, 76.17500000010875]\n", "cell 1: [17.450000000099543, 50.075000000102825, 82.70000000011024]\n", "cell 2: [23.975000000099172, 56.60000000010431, 89.22500000011172]\n", "cell 3: [30.5000000000988, 63.12500000010579, 95.7500000001132]\n", "cell 4: [37.02500000009986, 69.65000000010727]\n" ] } ], "source": [ "for i, spike_times_vec in enumerate(spike_times):\n", " print(\"cell {}: {}\".format(i, list(spike_times_vec)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Each line represents one cell and lists all the times it fires: cell 0 fires first, then 1, 2, 3, 4, back to 0, etc." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A more intuitive way of seeing this is to use a raster plot. Here's how to do that with matplotlib:" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "execution": { "iopub.execute_input": "2025-05-23T00:18:51.049298Z", "iopub.status.busy": "2025-05-23T00:18:51.049155Z", "iopub.status.idle": "2025-05-23T00:18:51.103443Z", "shell.execute_reply": "2025-05-23T00:18:51.103082Z" } }, "outputs": [ { "data": { "image/png": "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XyxfvjzmzZsXs2fPPuZ+XV1dUS6Xa1tHR8fxHhIAGOKOOyw6Ozvj6aefjrVr177hfitWrIhKpVLburu7j/eQAMAQd1wfhSxdujQ2bNgQjz76aEybNu0N9y2VSlEqlY5rOACgudQVFkVRxOc///lYv359bN68OWbMmDFQcwEATaiusOjs7Ix777037r///mhra4v9+/dHRES5XI4xY8YMyIAAQPOo6xqLVatWRaVSiYsvvjimTJlS2372s58N1HwAQBOp+6MQAIBj8V0hAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApGkpiqJo5AGr1WqUy+WoVCrR3t6e8jMPH3ktZt2yMSIidn1zQYwd1Zryc2Eged3SbLxmT25v9f3bGQsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAIE3dYfHoo4/GZZddFlOnTo2Wlpb4xS9+MQBjAQDNqO6wOHToULz//e+PH/zgBwMxDwDQxFrrfcLChQtj4cKFAzELANDk6g6LevX29kZvb2/tdrVaHehDAgCDZMAv3uzq6opyuVzbOjo6BvqQAMAgGfCwWLFiRVQqldrW3d090IcEAAbJgH8UUiqVolQqDfRhAIAhwN+xAADS1H3G4qWXXornn3++dnvPnj2xc+fOmDBhQkyfPj11OACgudQdFtu3b4+PfOQjtds33HBDREQsWbIkVq9enTYYANB86g6Liy++OIqiGIhZAIAm5xoLACCNsAAA0ggLACCNsAAA0ggLACCNsAAA0ggLACCNsAAA0ggLACCNsAAA0ggLACCNsAAA0ggLACCNsAAA0ggLACCNsAAA0ggLACCNsAAA0ggLACCNsAAA0ggLACCNsAAA0ggLACCNsAAA0ggLACCNsAAA0rQURVE08oDVajXK5XJUKpVob29v5KEBgOP0Vt+/nbEAANIICwAgjbAAANII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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "plt.figure()\n", "\n", "for i, spike_times_vec in enumerate(spike_times):\n", " plt.vlines(list(spike_times_vec), i + 0.5, i + 1.5)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This page has demonstrated various functionality to arrange, connect, and visualize a network and its output. As nice as it may seem, it needs some design work to make it flexible. The next part of the tutorial further organizes the functionality into more classes to make it more easily extended." ] } ], "metadata": { "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.10" } }, "nbformat": 4, "nbformat_minor": 2 }