# ObjSim This is a c++ based object oriented library for simulating spiking neural networks. It was used for simulations in the following publications: - ["Michler F, Eckhorn R, Wachtler T (2009)"](https://doi.org/10.1152/jn.90651.2008) Using Spatiotemporal Correlations to Learn Topographic Maps for Invariant Object Recognition. J Neurophysiol 102:953-64. - ["Michler F, Wachtler T, Eckhorn R (2006)"](https://doi.org/10.1007/11829898_3) Adaptive Feedback Inhibition Improves Pattern Discrimination Learning. Lecture Notes in Artificial Intelligence 4087:21-32. ## 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 After compiling, simulations can also be started and evaluated from jupyter notebooks. - 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. - `start_jupyter.sh` starts jupyter notebook in subdirectory `python`. - The notebook `python/ipynb/run_objsim_with_gaussian_input.ipynb` can be used to run som02.cpp - `python/ipynb/calc_maps.ipynb` demonstrates how to load simulation data and calculate topographic maps.