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. |
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 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.
|
| 4. |
Vortex Animat 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.
|
|