# ObjSim This is a c++ based object oriented library for simulating spiking neural networks. It was used for simulations in the following publications: - ["Using Spatiotemporal Correlations to Learn Topographic Maps for Invariant Object Recognition"](https://doi.org/10.1152/jn.90651.2008), Frank Michler, Reinhard Eckhorn, and Thomas Wachtler (2009) - ["Adaptive Feedback Inhibition Improves Pattern Discrimination Learning"](https://doi.org/10.1007/11829898_3) Frank Michler, Thomas Wachtler, Reinhard Eckhorn (2006) ## Compiling Running `build_all.sh` will compile: - the simulation library `csim` (source code is in `src`) - simulation main programs: - `simulations/fm/som02/som02.cpp` which was used in [Frank Michler et al. (2009)](https://doi.org/10.1152/jn.90651.2008) - `minimal/minimal.cpp` is a minimal simulation program demonstrating how to use the library. - some unit tests in `mycxxtests` using the cxxtest library Binaries will be installed in `install`. ## Running via command line You can run the simulations via: ``` cd install/bin/som02 ./som02 ``` settings_som02.cfg contains default simulation parameters that can be overwritten via command line arguments. ## Running via Jupyter noteooks `start_jupyter.sh` starts jupyter notebook in subdirectory `python`. The notebook `python/ipynb/run_objsim_with_gaussian_input.ipynb` Before you must provide a shell script in `env/activate_python_env.sh` to setup your python environment. You can use `env/activate_python_env_EXAMPLE.sh` as an example. `python/ipynb/calc_maps.ipynb` demonstrates how to load simulation data and calculate topographic maps.