Home ] Up ] AnimatTools Plug-in ] Fast Neural Plug-in ] Link Properties ] Node Properties ] Realistic Neural Plug-in ] Vortex Animat Tools Plug-in ] |

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..)
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 behavioral 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 behavioral 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. Alphabetical Tools
This lists all the nodes from all discovered modules in an alphabetical list according to their name. This is provided to keep you from having to know which module a particular node is in for you to use it.
2. Animat Tools
This is a default set of nodes that provides some basic functionality like the ability to add text and graphics to your diagrams.
3. Fast 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.
4. Realistic Neural Network
This is a neural network plug-in that provides a very 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 neural models, and allows the user to build a wide variety of spiking and non-spiking chemical synapses and electrical synapses.
4. Vortex Animat Tools
This provides a set of nodes that are used to connect neural network nodes to the physics engine. It allows you to recieve data from items like a joint, and to send information to things like motors and muscles.

AnimatLab.com © 2006 | All Rights Reserved |