Category Archives: My Projects

Start of Multithreading Capabilities

Since the genetic engine is pretty much finished up now, I’ve started on some loose ends of things I want to implement in SynthNet. This is a stress test for the (start of the) new multithreading capabilities – using a simple strand of DNA to direct a base stem cell to continually go through mitosis and differentiate. These daughter cells then follow a genetically programmed spiraling migration path. You can see patterns start to emerge amongst the thousands of cells.

Some parts of the processing engine are crashing out right now, so it’s apparent I’m having some kind of issues arising from sharing information between threads – I’m going to shelve the functionality for now and then complete it up after the end of phase 1 – there may be quite a bit involved.

Mitosis and Differentiation Complete

After about 8 hours of programming, I got mitosis and stem cell differentiation working in the genetic engine yesterday. Pictured is a 1840 neuron columnar nucleus, grown in a linear fashion initially, then radiating outward via differentiating mitosis. SynthNet is now able to regulate growth (so it isn’t cancerous), as well as direct growth based on protein signaling markers, allowing it to grow differentiated structures.

Genetic Engine

The last few months I’ve been building out SynthNet’s genetic engine. Each neural structure runs a genetic virtual machine within it that executes genetic instructions obtained from its virtual DNA. Additionally, to make the job of creating this DNA easier, I’ve written a genetic assembly language and a compiler that transforms genetic programs into virtual DNA. The genetic instruction set supports reading and writing any attribute of a structure, including its morphology, ion and protein synthesis, changes in membrane capacitance, growing channels and receptors, changing permeabilities, causing mitosis (soon) or apoptosis, etc. All in all there are around 100 genetic instructions.

The first picture below is a dendritic arbor I grew using a single strand of virtual DNA . I don’t have enough termination functionality to prevent cancerous growth at this point (soon), but I do have enough to control process growth origination and angle. This was grown with 3 codons worth of DNA – almost nothing. Below that was a snowflake formation, also using 3 codons worth of DNA.

Added Potential Graph to fMRI Rendering

Fixed the rendering so it processed diameter properly, then added in a color graph to show corresponding color to potential, and a real time graph to plot the membrane potential of a specified neuronal process. This will definitely make monitoring and debugging a lot easier

Start of “Virtual fMRI” Rendering Engine

I’ve been working on the rendering engine for SynthNet, so both the neuronal morphologies can be seen, and membrane potential and other activity can be visualized through color coding, like in an fMRI.

This is an example of it in action so far. The models look pretty clunky and simple, but that’s by design – I just want a simple, lightweight viewer that doesn’t take up too much CPU time. This example shows two neurons and a synapse – one with 3 dendrites and an axon, with a synaptic gap between the post-synaptic neuron, consisting of only a small neuronal segment (a dendrite). Membrane potential is shaded in red, with white representing -70mV, and bright red representing 30mV.

The top picture shows the two neurons at rest. In the second picture, I inject current into one of the dendrites, and you can see the current flowing up its process into neighboring dendrites and the soma, getting weaker as it goes due to attenuation.

In the final picture, we see a large amount of current injection into all dendrites, causing an action potential and release of neurotransmitters into the synaptic gap, which causes an influx of ions in the post-synaptic neuron, depolarizing the membrane potential, as can be see with the post-synaptic neuron also showing red shading.

When I first got the code working and watched all this happening live, it was definitely one of those wow moments.

Neurotransmitter Vesicle Processing

I finished up the code that handles the number of neurotransmitter vesicles that fuse with the plasma membrane (and release into the synapse) in relation to calcium concentration in terminals. The code will autoselect the appropriate method of computation depending on the probability and total number of vesicles. For a large number of vesicles and low probability, the Poisson model is used. For a large number of vesicles and high probability, the binomial estimation method is used. For a low number of vesicles, the full binomial method is used.

Love the Poisson graph, as it has enough vesicles to get a good curve, but low enough probability to show the stochastic nature of the process.

First Synaptic Transmission

Synthnet’s very first synaptic transmission tonight! Pictured are the membrane potentials of two neurons sharing a synapse.

You can see the action potential travel down the axon of the presynaptic neuron, which causes a calcium influx in the axonal boutons, which then releases glutamate vesicles into the synaptic cleft. Ligand gated glutamate channels in the postsynaptic neuron cause sodium channels to open, which causes an action potential in the post synaptic neuron, and travels down its axon, as shown.

In the next post, I’ll be outlining the methods used to calculate the vesicle release rate.

Membrane Potentials Across Complex Morphologies

Pictured here are the membrane potential graphs from a complete virtual neuron from SynthNet. This neuron was comprised of 3 dendritic structures of smaller diameter, a larger soma, and a hillock and long axon.

On the drawing, I labeled what point on the representation neuron each graph pertains to. You can see me feeding high frequency, medium frequency, and low frequency oscillating voltage into the dendritic arbor at different points, and then you can see them temporally and spatially summating at the axon hillock until they hit -40mV, which then triggers an action potential down the axon, which propagates from segment to segment all the way down (See the three spikes very close to each other – thats the pulse moving down the axon). I keep the oscillation up and trigger 2 more action potentials too after the refractory period is over. You can also see the backpropagation of voltage go back through the soma into the dendrites where retrograde messengers will be released (see the jump back on the dendrites around time 500, in relation to getting electrotonic current from the axons).

This demonstrates the proper interaction between electrotonic potential, membrane potential, and ionic current flow.

Hodgkin-Huxley Model

Continuing on posting some past work to get the blog up to date, here are some graphs showing completion of the Hodgkin Huxley method of processing voltage gated ion channels. At this point, the neural network supports adding ion channels to the plasma membrane with different gating types, including voltage gates as well as voltage gates with inactivation gates (as well as ion pumps, though these are not processed by HH).

Akin to how protein subunit types give rise of the type of channel and gates of a physical ion channel, attributes associated with a SynthNet ion channel control what kind of channel and gates it possesses. Additional properties such as membrane threshold potential, permeability, and refractory period control the behavior of the voltage gated ion channels.

Below are some graphs with a two connected neural processes, the latter containing voltage gated sodium channels (with inactivation gates) and voltage gated potassium channels, constructed to behave as normal neural structures do during the action potential process. The first structure (membrane potential shown in blue) was clamped at -30mV for different periods of time in each graph. Shown is red is the membrane potential of the second structure. The left graphs show regular firing with different refractory periods, while the right graphs show burst and oscillating potentials (caused by the rate and magnitude of repolarization remaining higher than the threshold potential, coupled with a very short refractory period).

In the next post, I’ll be showing the interaction of action potential (via HH) and electrotonic potential (via cable and capacitance calculations) over a more complex morphology.

Electrotonic Potential

Though I haven’t updated the blog in a while, I’ve really been going full-steam on the neural emulator. I’ve been taking screenshots as I go, so over the next day or so I’m going to try to make a few posts with those shots to get everything up to speed on the blog. Also, thanks for all the comments on other posts! I’ll be getting back to them soon (this weekend).

The first big update concerns processing electrotonic potential across the cell and the plasma membrane. In my previous post, I talked a bit about using the cable equation for distribution of current. As of now, I still make use of the cable equation for distributing potential across the cell. This takes into account the length and circumference of the segment in question, in addition to internal resistance, and resistance across the plasma membrane. Also, in order to appropriately address membrane moieties, calculations will also take into account the capacitance of the membrane. This allows not only a more realistic build-up of potential to occur to allow things like temporal summation to work properly, but also allow us to emulate myelination, in which electrotonic potential is subjected to a change in attenuation due to higher resistance and lower capacitance of the plasma membrane.

Below is a membrane potential graph generated from a simple structure consisting of 3 segments. The first segment is clamped with oscillating voltage, with structure 2 connected to 1, and 3 to 2. We can see the subsequent structures increase and decrease according to their distance from structure 1. The curve is controlled by the capacitance and resistance of the plasma membrane:

Note that membrane resistance is calculated via ionic permeability. This is a simple graph and the following posts will show some more interesting graphs with the effects of spatial summation and changes in resistance illustrated, but this one is very clear at showing the expected curve associated with a capacitor.

Next post illustrates the completion of Hodgekin-Huxley calculations for voltage-gated ion channels.