Structural plasticity on the SpiNNaker many-core neuromorphic system
Directories: > input_shape_generation: [code] a Jupyter notebook exemplifying the use of functions which generate a few different input shapes (Gaussian, Pointy, Square). The actual functions used when simulating are in the "simulation_run" folder. >results:[data + code] numpy .npz archives with results for various experiments and presented in the eponymous paper. Folder names containing "vs." show results from performing sensitivity analysis. Additionally, each one contains a folder with a long string of alphanumerical characters as a name; within are contained the raw results of the simulations (connectivity, all of the spiking activity, parameters used). Moreover, a processed data set is available. Files with the prefix "batch" contains information about the entire respective batch run, while "batch_analysis" contains all of the results for each respective batch run. Finally, each folder contains a Jupyter notebook revealing the structure of each result archive, how the figures were plotted etc. >simulation_analysis:[code] Python scripts used to analyse raw data, given in individual files or as a batch. For more details type: ``python simulation_statistics.py --help `` >simulation_run:[code] Python scripts used to simulate the network with a variety of parameters. For more details type: ``python topographic_map_formation.py --help ``
Steps to reproduce
NOTE: in order to generate raw results, one requires access to a SpiNNaker board, local or remote. NOTE 2: the code is currently executable if the SpiNNaker tools are installed (python 2.7) in developer mode and the relevant git branches are switched to "structural_plasticity". This might not be the case in the near future - this functionality will be available by default on the "master" version of the tools. example usage: ``python topographic_map_formation.py --case 3 --no_iterations 300000 --t_record 30000 `` This command will run a simulation of 2 layers of neurons on SpiNNaker for 300 seconds (300.000 ms) and will record the state of the connectivity every 30 seconds (30.000 ms). The results will, by default, be saved in a numpy .npz archive named "topographic_map_results_xxxxxxxxx.npz", where the xs will be replaced with the current date and time. The available cases are presented and discussed in full in the journal article, as well as all the other available simulation parameters. ``python topographic_map_formation.py --help`` can also be ran to explore the parameters that can be set from the command line. Running the simulation as presented above, but only changing the case number ( 1, 2, then 3) will use the simulation parameters suggested by Bamford et al. (DOI:10.1016/j.neunet.2010.01.005). example analysis usage: ``python simulation_analysis.py topographic_map_results_xx.npz --plot --snapshots`` This command will analyse the raw results contained "topographic_map_results_xx.npz". A textual representation will appear after around 10 seconds, followed by a set of plots focusing on the final state of the network, as well as at various equidistant snapshots during the simulation. All of this information will also be stored in various npz archives for future use.