Neural Simulation Plug-ins

What are neural plug-ins?

Figure 1. Behavioral editor toolbox. New neural plug-ins show up as distinct bands of available nodes. (Fast Neural Network, Realistic Neural Network, etc..)
Neural Plug-ins are libraries of different neural model types. There are currently neural models for integrate and fire spiking neurons and firing rate neurons. The plug-in design makes it easy for anyone to add new neural models to AnimatLab.

One of the overriding design goals of AnimatLab was to make it very flexible and easy to upgrade by the user. To meet these goals the software uses the concept of a plug-in. The idea behind this is similar to the one used in the electronics industry. Your computer is built up from a number of components like a hard-drive, monitor, keyboard, and a mouse. Lets assume that your current monitor is a bulky 15" CRT. A really state of the art monitor, in 1995! You would like to upgrade your monitor to be better, so you go and get a new 20" LCD monitor and plug it into the jack for your old one,. Viola, you have a huge, new screen for your computer. Compare this to how an old Macintosh SE worked. The monitors were built in directly as a part of the computer. You could not simply buy a new monitor and plug it in. You had to buy a whole new computer. Adding and changing the parts of your computer is possible because they can be treated like they were black boxes. All we have to do is define the interface that will be used to communicate between the computer and the monitor, and after that anyone can build a new type of monitor as long as they abide by that interface.

Traditional, monolithic applications are more like the old Macintosh computers. They are precompiled and shipped out. They work fine, but they are very difficult to improve or change. AnimatLab is more like modern computers. Using plug-ins lets the user add to it easily by using the same concept. Each of the neural simulations systems are treated like they were black boxes. A standard interface has been defined for these modules that allows anyone to build a new one. So a user can create a new module, compile it into a dynamic link library, and then place it in the bin directory of AnimatLab. When the application starts it searches this folder for any new modules that implement the relevant interfaces. If it finds any modules it loads them and makes them available for use in the application. Specifically, for the neural modules a new band will appear in the toolbox of the neural network editor that lists all the nodes that are available for that module, and those nodes will also appear in the alphabetical list. This means that if the behavioral systems provided by AnimatLab do not meet your needs you can simply build a new one and add it to the software. None of the original AnimatLab code needs to be modified or recompiled for this to happen. Also, you can easily share any new plug-ins that you develop with anyone else. 

What parts make up a plug-in module?

There are currently two neural plug-ins available for use in AnimatLab. There is also a standard set of nodes available that are used to connect the neural elements to the physics engine, and another set of very generic nodes that allow you to do things like add graphics and text to your diagram. Each neural plug-in shows up as a band in the neural network editor toolbox. When you click on a band it becomes active and displays the icons of the nodes in that module. A plug-in has two primary components defined in it. This is a node and a link. the module can have multiple node and link types defined in it. For a neural network module you can think of a node as a neuron type, but a node is really for more generic than that. For example, there is also a graphical node defined. Its only purpose is to allow a user to add an image to their diagram. So a node can pretty much be anything the developer wants it to be. Nodes are connected by links. In a neural module this would be equivalent to a synapse that connects two neurons. But again, a link is far more generic that that and you can draw links between any two nodes, even if they are just graphics or text. Only the icons for nodes show up in the toolbox. To add a node you simply need to drag it onto the diagram and drop it where you want it to appear. To add links between nodes you need to click on the origin node and drag a line to the destination node. The application knows what types of nodes you are trying to connect. If the nodes are in the same module then it will ask that module to display a dialog to allow the user to choose the type of link they want to use to connect the two nodes. If the two nodes are from different modules then it will automatically place an adapter between them. Click here for more information on what adapters are and how to use them.

What plug-ins are available?

Below is a list of the modules that are currently available, along with a link to more details for each one.

1. Standard Behavioral Tools
This provides a set of nodes that are used to connect neural network nodes to the biomechanical models of organisms or robots and the rest of the environment. It allows you to receive data from items like a biomechanical joint, and to send information to things like motors and biomechanical muscle models.
2. Firing Rate Neural Network
This is a neural network plug-in that provides a very abstract firing-rate neural model. It is mean to provide a more biologically realistic representation of neural networks than connectionist models, but is still abstract enough to run very quickly.
3. Integrate and Fire Neural Network
This is a neural network plug-in that provides a more realistic neural model than the fast neural network module. It is somewhere in-between that module and a detailed compartmental model like you would find in Neuron or Genesis. It uses conductance-based, integrate-and-fire spiking neural models, and allows the user to build a wide variety of spiking and non-spiking chemical synapses and electrical synapses.