berrycraft-promo

BerryCraft

BerryCraft, the Blackberry Minecraft chat client, allows you to chat in-game with your Minecraft buddies on the go, or administer your Minecraft server using standard commands.  Source also available for developers! More »

synthnetpromo

SynthNet

A (very) ongoing science project – the ultimate goal: a neural and genetic emulator, capable of growing fully functional, and biologically accurate, neural networks from virtual DNA. Phase 1, growing a neural network from virtual DNA, capable of associative learning and long-term potentiation, is now complete! More »

bbgamepromo

Creating a Blackberry Game

Java programmers, get your Blackberry out and start making games! This set of tutorials goes over creating a Blackberry game from start to finish by following the development of the Galactic Blast Demo, available at Synthetic Dreams. More »

shredz64promo

Shredz64

A new game for the Commodore 64 based on Guitar Hero. By making use of the PSX64 interface, players are able to connect a Playstation Guitar controller to their C64 and play a favorite modern genre of game on their beloved classic computer. More »

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.

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.