2.2. NSL Neural Simulation Language

The NSL Neural Simulation Language provides a platform for building neural architectures (modeling) and for executing them (simulation). NSL is based on object-orient ed technology and provides modularity at all model development levels. In this chapter we discuss these basic concepts and how NSL takes advantage of them. NSL, now in its third major release, is a neural network simulator which is both general and powerful, designed for users with diverse interests and programming abilities. For novice users interested only in an introduction to neural networks, we provide user-friendly interfaces and a set of predefined artificial and biological neural models. For more advanced users well acquainted with the area who require more sophistication we provide evolved visualization tools together with extensibility and scalability. We provide support for varying levels in neuron model detail, which is particularly important for biological neural modeling. In artificial neural modeling the neuron model is very simple, with network models varying primarily in their network architectures and learning paradigms. While NSL is not particularly intended to support detailed single neuron modeling, as opposed to systems such as GENESIS and NEURON primarily designed for this task, NSL does provide sufficient expressiveness to support this level of modeling. The Neural Simulation Language (NSL) has evolved for over a decade. The original system was written in C (NSL 1) in 1989, with a second version written in C++ (NSL 2) in 1991 and based on object-oriented technology. Both versions were developed at USC by Alfredo Weitzenfeld, with Michael Arbib involved in the overall design. The present version NSL 3 is a major release completely restructured over former versions both as a system as well as the supported modeling and simulation, including modularity and concurrency. It provides a powerful neural development environment supporting the efficient creation and execution of scalable neural networks, incorporating a compiled language NSLM for model development, and a scripting language NSLS for model interaction and simulation control. It offers rich graphics and a full mouse-driven window interface supporting creation of new models as well as their control and visualization. NSL 3 includes two different environments, one in Java (NSLJ, developed at USC by Amanda Alexander's team) and the other in C++ (NSLC, developed at ITAM in Mexico by Alfredo Weitzenfeld's team), again with Arbib involved in the overall design. Both environments support similar modeling and simulation and are described fully in Weitzenfeld, Alexander and Arbib (2000). In the present chapter, we focus on NSLJ, the version developed by the USC Brain Project team and available from our Website. We offer free download of the complete NSLJ system, including full source code as well as forthcoming new versions. We also provide free and extensive support for downloading new models from our Web sites, where users may contribute with their own models and may criticize existing ones (see Chapter on "Brain Models on the Web"). (http://www-hbp.usc.edu/Thrusts/BMW.htm). The