Site Makeover

After finishing up phase 1 of SynthNet, I came to the conclusion that I really missed updating the blog.  When I get involved in a project, I tend to get wrapped up in it (more accurately – completely and ridiculously obsessed where it takes over my life) and other things drop off the radar.  However, I’ve decided I want to make a real effort to not get AS wrapped up in projects, and remember to give the blog some love.

New and Improved!

As I went to write my first article after recording the SynthNet video, I also noticed the blog was looking a little tired.  They’d also made a number of improvements in WordPress since when I first installed everything, so I decided to take the leap, get a shiny new template, and put some new life into it.  I think it’s definitely an improvement – hope you enjoy it!


fMRI of Bit “Hearing” My Voice

This is what an fMRI of Bit’s (current) brain looks like while listening to my voice (red is active neural structures – it indicates a higher membrane potential). This will probably be the last picture before the video of the associative learning demonstration – I think I’ll be ready to record by Sunday night (hopefully). Exciting stuff!

Auditory Processing – Virtual Cochlea

Before Bit can hear like humans do, I needed to make a “virtual cochlea” – a piece of software that would take auditory input from a microphone, convert it into frequencies (like the hairs in your cochlea do), and send the data into Bit’s peripheral nervous system. I got most of it done tonight – I made a real-time graphing system as well. On the left, you can see the waveform data coming off the microphone (top is a straight tone coming off my KORG, and bottom is me talking), and to the right is the data run through a Fast Fourier Transform to convert the time-based waveform data into a frequency based distribution. This can then be sent directly into a neural nucleus in Bit’s brain via the TCP nervous system.

Increasing Network Complexity – Oscillating Neurons

As you can see from the membrane potential graph (lower left hand corner), I injected some current into this genetically grown virtual neuron (over a TCP connection), and it started keeping a steady pulse on its own – still going after 15 minutes!

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.