I have (finally!) released a first alpha version of Simbrain 3. It is mostly functional, and serves to illustrate the overall design. However, there are still numerous minor bugs and unimplemented features, and two major pieces of work have yet to be completed (though work has begun in each case):
- Supervised learning has to be implemented
- The overarching "coupling" framework needs to be refactored one more time
Also, the documentation has hardly been touched. If you want to know how something works, ask me and I'll answer your question either here or on the wiki, and then fold the answer in to the docs (i.e., your questions will help!)
This release has not been tested on linux.
Please do send me bug reports and feature requests, etc. Or, use the issue tracker (now that I have put up a release I may finally start using that thing).
And please help! Many of the bugs and issues at this point are pretty easy.
No guarantees on how fast things will happen; this is a busy time for me. But I do hope to transition to a beta release and then an actual release within the next year.
I'm glad you asked about this. There are currently two ways this can be done, both of which require you to get the latest source (rather than using the downloadable alpha-1 release).
1. Create a custom update script.
The new version of simbrain allows you to customize the way the workspace is updated. This is done by running a script which installs a custom "updater". I have added an example which shows how this is done in /scripts/scriptmenu/ . You can access it from the script menu in the simbrain desktop; it's called "customUpdateExample.bsh". When you run the script a network is created. If you then press the step button, you will notice that the network's synapses are randomized every time the workspace is updated. I did this by adding a single customization (a call to Network.randomizeSynapses()) to normal updating. If you open the script (in the /scripts/scriptmenu/ directory) the call happens on line 45 (in the current revision, r 2207)
Now, in that script you can add code to read from ports, USB, etc, and use that to activate neurons, or conversely to take the activation of a neuron and use it to write to some external device. In this way you could, for example, use simbrain to control a lego robot.
By the way, the .bsh file is a beanshell script, which is basically a java file, with one big block that gets executed when you call the script. You can add (just about) any java code you like into one of these files.
All of this assumes you know how to (a) make calls to the neural network API (which I have not fully documented) (b) have some way of doing your COM / USB read / writes in java. I've never done this but a quick google of "java usb" and "java comport" suggests it's not too hard.
2. Use Simbrain as a standalone library
You can also just use Simbrain as a library in a separate java program that does your reads and writes. To build the java library you can run
> ant networkjar
> ant networkguijar
from the Simbrain directory obtained via svn.
However, this is yet something else I have not begun to document. To get a feel for how to use the api, though, just try opening up different scripts in the scriptmenu directory.
3. Other / Future
It may eventually be nice to have some GUI way of connecting to ports and stuff in a future release, especially if a lot of people use this.
I'm sure this doesn't answer all questions but hopefully it's a start. Let me know if you'd like me to elaborate on any of this.
I'd really like to use Simbrain for personal educational purposes, as well as bringing interested friends up to speed. However, I'm having a hard time with the documentation. I'd like to help improve the documentation - I'm pretty good at writing clear, comprehensive instructions and can provide drafts for your approval if you like.
Would you please describe the current state of development? It appears there haven't been any posts on this forum for over a year. Is there any ongoing development (as of March 2012)? Is there another forum for Simbrain?
Children's Hospital Boston