The Neurocognitive Linguistics Laboratory program consists of the following modules:
- Automata - A library for handling asynchronous automata over directed graphs. The algorithm is from Chrystopher L. Nehaniv, Asynchronous automata networks can emulate any synchronous automata network.
- NeuroLib - Uses the Automata module to implement Sydney Lamb's narrow network notation, from which higher-level relational network structures (the "Compact" or "Abstract" notation) can be built. It is implemented as a separate library so that simulations do not need the full gui; simulations can run in non-interactive batch-type programs, or in a server, or otherwise. The data from the raw neural network is stored in a separate file from that of the GUI display.
- NeuroGui - The main Gui. This is implemented as a separate library so that plugins can link to it.
- NeuroLab - A small wrapper for the program.
The NeuroLab Program
NeuroLab is implemented in a library (this allows plugins to be linked against the GUI code), with a tiny wrapper program.
The main parts of the library are:
- NeuroGui::LabNetwork - this stores a user's network simulation; it is the primary "file" that a user works with. It has several aspects:
- NeuroGui::LabTree - this is a tree of lab scenes. The idea is that you wouldn't want your entire network in one view at one time. You can create items (NeuroGui::SubNetworkItem) that when double-clicked on drill down into a new scene.
- NeuroGui::LabDataFile - data can also be collected for a network simulation; a data file is separate from but dependent on the current network.
- NeuroGui::PropertyObject - subclasses of NeuroGui::PropertyObject can define editable properties simply and easily by defining members using the NeuroGui::PropertyObject::Property template. These then can be edited in the property editing control in the sidebar.
- Plugins: A plugin is just a DLL or shared library that contains subclasses of NeuroGui::NeuroItem that use the NEUROITEM_DECLARE_CREATOR and NEUROITEM_DEFINE_CREATOR macros to hook into the item creation system. Currently the program will look in a "plugins" directory under where the executable is located.
The project is developed in the Qt Creator IDE.
Due to limitations in the Qt Creator build system, you will need to clone your copy of the NeuroLab repository to a directory that does not have spaces in its path.
NOTE: If you want to use the automated build tools, set your shadow directories to be "build-debug" and "build-release" instead of the defaults provided by Qt Creator. You might want to do this anyway on Windows, because the default paths are likely to lead to path names that are too long for windows to handle during the build, and you will get strange errors.
Once you have installed the Qt SDK, open the file
src/neurolab_all.pro in Qt Creator.
Building on Linux
On Linux you might need to add or modify the build variable LD_LIBRARY_PATH to include "." before you will be able to run NeuroLab from the debugger.
Building on Mac OS X
On the Mac, you will need to add an extra build step to the neurolab project that calls
utils/macdeploy before you can debug or run the program. This will correctly rename the shared library references in the app bundle.