Neuroinformatics Group

Universität BielefeldTechnische FakultätNI

Features

One strength of Neo/NST is its extensibility. Therefore, there exist a mechanism to "load" new modules into the system. You can construct new modules in the form of graphically built NST circuits, or you can make existing or your own algorithms (implemented in C or C++) available as NST-objects by writing a simple wrapper. Collections of such units can be organized into libraries that can be loaded at run-time. For details on how to add new modules, have a look at the documentation or the tutorial. Currently, the modules include:

A condition inside of a for loop

Program flow: These units allow the manipulation of the program flow under Neo. Available units such as the for_op, if_op, switch_op, ctrl_op etc. realize similar concepts as known from other textutal programming languages. So called container units correspond to subroutines and allow a hierachical organization of programs.


Parameter interface of ODBC_2ds unit

Data Input/Output: Contains units which are able to read and write arbitrary data from and to files. The data is usually written as a flat ASCII file and the data format can be specified in a similar way as familiar from the printf-function in C. Additionally, there exist units to read from PGM or PPM image data files and to connect to ODBC capable database servers. Data can then be stored and retrieved using SQL statements.


Output of three wave generators

Data Processing/Generation: Allow a broad range of data transformation, i.e. vector scaling, componentwise access to vector elements, "multiplexing" vector data, generation of random data and other function generators (linear, waves, bilinear, spline, exponential decay), delay units for time series processing etc.


Visualization of 3D data

Visualization: There exist several methods to visualize data. The plot_xy and plot_3d units provide the basis for various 2D and 3D data plots. Furthermore, units like draw_sym, draw_mesh, draw_str, draw_ellipse, write_pix, etc allow to draw arbitrary objects and images on the screen. The mouse_xy unit allows to add interactivity to all visualization methods.


An OpenGL robot hand

3D Rendering: For a more sophisticated visualization there also exist a set of OpenGL routines which can be used to render more complex 3D scenes. You can either use a set of predefined objects (arrows, cones, icosahedrons, pyramids, links) or define arbitrary objects using a texteditor. A set_light, camera and set_material unit easily allow the control of a scene, which makes Neo quite useful for simulation in robotics.


A simple GUI

GUI: So called input and output windows provide a mechanism for the construction of simple graphical user interfaces. Available widgets are buttons, sliders and input fields for numerical and text input. Each of these widgets can trigger callback functions. Complex GUIs can be implemented with the tcl_prog unit that executes an arbitrary Tcl/Tk script.


An excerpt of a prog unit's source text

Simple user interface Programming: Two units which allow almost anything are the prog_unit and the matrix_algebra. Both can be programmed in a C-style manner. The prog_unit allows the dynamic loading of libraries which can contain user defined functions. The matrix_algebra allows simple matrix operations like transposition, extraction of rows and columns etc, but also more sophisticated operations like determinant calculation, inversion, singular value decomposition, eigenvector calculation etc.


Visualization of 2D FFT

Mathematics: There exist algorithms for a variety of statistical operations like computation of mean values, standard deviation and mean square errors, vector functions like scalar products, euclidean length, min. and max. value computation, 1D and 2D fast Fourier transformations, matrix multiplication, inversion, correlation matrix, Gram Schmidt orthogonalization.


Hough transform finds straight lines

Image Processing: A set of standard image processing functions is available for the construction of computer vision applications. Basic filter operations like Gaussian blurring, different edge detection mechanisms and the possibility to define arbitrary convolution kernels, as well as more complex functions like filtering with Gabor jets, the Hough transform or colour space transformations allow in conjuction with neural networks an amazing range of vision applications.


A SOM with 1D ring topology solves
the "Travelling Salesman" problem

Neuronal Networks: One important property of neural networks is their ability to "learn". The adaptive units can be devided in supervised and unsupervised learning methods. Examples for the former are the classical mulitlayer perceptron (network size, activation functions and training algorithm are adjustable), local linear maps (SOMs extended by an output function, often used for classification tasks) or PSOMs (parameterized self organizing maps). Units which perform unsupervised learning are the som_op (choose between different topologies for the SOM algorithm), the hebb_unit or the rbf_layer. Units like the delta_layer, bp_layer and delay_line provide the necessary pieces to build more complex networks including TDNNs or Elman networks for time series prediction.


Correlation matrix of a diabetes dataset

Datamining: A topic gaining more and more momentum is "Datamining". In Neo, many datamining operations have been implemented in the form of loadable units, using existing units as building blocks. This enables the user to analyze a given data set with a large variety of tools including data input/output from flat files and SQL database servers, as well as different statistical utilities like dependency matrix calculation (based on correlation, chi square or entropy), histogramming or hierachical cluster analysis. Algorithms like the principal or independent component analysis, the Sammon map or the application of self organizing maps are already encapsulated in ready to use units. Different transformation utilities allow partitioning, scaling or rotation of datasets. SOMs, MLPs, LLMs and kNNs can be used to generate and evaluate data models.