Browse Source

ObjSim: object oriented simulation library for spiking neural networks

This library was used for simulations in the following publications:

"Using Spatiotemporal Correlations to Learn Topographic Maps for Invariant
Object Recognition"
Frank Michler, Reinhard Eckhorn, and Thomas Wachtler
2009
https://doi.org/10.1152/jn.90651.2008

and

"Adaptive Feedback Inhibition Improves Pattern Discrimination Learning"
Frank Michler, Thomas Wachtler, Reinhard Eckhorn
2006
https://doi.org/10.1007/11829898_3
Frank/Phenom 4 years ago
parent
commit
e8a18157d5
100 changed files with 868 additions and 0 deletions
  1. 67 0
      .cproject
  2. 4 0
      .gitignore
  3. 44 0
      .hgignore
  4. 27 0
      .project
  5. 38 0
      CMakeLists.txt
  6. 6 0
      build_all.sh
  7. 29 0
      cmake/install_sim.cmake
  8. 70 0
      cmake/lcov.cmake
  9. 9 0
      cmake/progversion.cmake
  10. 10 0
      cmake/versionheader.cmake
  11. BIN
      data/movies/16bars.idlmov
  12. BIN
      data/movies/16oris.idlmov
  13. BIN
      data/movies/1ddotsmovie.idlmov
  14. BIN
      data/movies/2x2sglstim.idlmov
  15. 10 0
      data/movies/2x2sglstim.meta.xml
  16. BIN
      data/movies/5x5gklearn0.idlmov
  17. BIN
      data/movies/5x5gklearn1.idlmov
  18. BIN
      data/movies/5x5gklearn2.idlmov
  19. BIN
      data/movies/5x5gklearn3.idlmov
  20. BIN
      data/movies/abcdefgh.sequence
  21. BIN
      data/movies/ascii.idlmov
  22. BIN
      data/movies/bolearn01.idlmov
  23. BIN
      data/movies/bolearn02.idlmov
  24. BIN
      data/movies/bolearn03.idlmov
  25. BIN
      data/movies/coil100first18.idlmov
  26. 10 0
      data/movies/coil100first18.meta.xml
  27. BIN
      data/movies/coil100norm10x36.idlmov
  28. 69 0
      data/movies/coil100norm10x36.meta.xml
  29. BIN
      data/movies/coil100norm20x20.idlmov
  30. 10 0
      data/movies/coil100norm20x20.meta.xml
  31. BIN
      data/movies/corner.idlmov
  32. BIN
      data/movies/corner2.idlmov
  33. BIN
      data/movies/corner20x20.idlmov
  34. 10 0
      data/movies/corner20x20.meta.xml
  35. BIN
      data/movies/corner8x8.idlmov
  36. 10 0
      data/movies/corner8x8.meta.xml
  37. BIN
      data/movies/corner8x8r.idlmov
  38. 10 0
      data/movies/corner8x8r.meta.xml
  39. BIN
      data/movies/cosgrid.idlmov
  40. BIN
      data/movies/cosgrid20x20.idlmov
  41. BIN
      data/movies/donut20x20.idlmov
  42. 10 0
      data/movies/donut20x20.meta.xml
  43. BIN
      data/movies/donut20x20big.idlmov
  44. 10 0
      data/movies/donut20x20big.meta.xml
  45. BIN
      data/movies/ellipse.idlmov
  46. 10 0
      data/movies/ellipse.meta.xml
  47. BIN
      data/movies/f2motion.idlmov
  48. BIN
      data/movies/f2pattern.idlmov
  49. BIN
      data/movies/gauss.idlmov
  50. BIN
      data/movies/gauss20x20.idlmov
  51. 10 0
      data/movies/gauss20x20.meta.xml
  52. BIN
      data/movies/gauss20x20_fhwm0.15_ratio1.7.idlmov
  53. 10 0
      data/movies/gauss20x20_fhwm0.15_ratio1.7.xml
  54. BIN
      data/movies/gauss20x20_fwhm0.2.idlmov
  55. BIN
      data/movies/gauss20x20_fwhm0.25.idlmov
  56. BIN
      data/movies/gauss20x20_fwhm0.3.idlmov
  57. BIN
      data/movies/gauss20x20_fwhm0.35.idlmov
  58. BIN
      data/movies/gauss20x20_fwhm0.4.idlmov
  59. BIN
      data/movies/gauss20x20_neu.idlmov
  60. 10 0
      data/movies/gauss20x20_neu.meta.xml
  61. BIN
      data/movies/gauss20x20_ox40_oy40_fwhm0.2.idlmov
  62. 10 0
      data/movies/gauss20x20_ox40_oy40_fwhm0.2.meta.xml
  63. BIN
      data/movies/gauss8x8.idlmov
  64. 10 0
      data/movies/gauss8x8.meta.xml
  65. BIN
      data/movies/gazemovie.idlmov
  66. BIN
      data/movies/gazemovie_100_100.idlmov
  67. BIN
      data/movies/gazemovie_1_25.idlmov
  68. BIN
      data/movies/gazemovie_1_25.idlmov.info
  69. BIN
      data/movies/gazemovie_1_5.idlmov
  70. BIN
      data/movies/gazemovie_1_5.idlmov.info
  71. BIN
      data/movies/gazemovie_50_50.idlmov
  72. BIN
      data/movies/gradient.idlmov
  73. 10 0
      data/movies/gradient.meta.xml
  74. BIN
      data/movies/horizontalbar.idlmov
  75. 104 0
      data/movies/idlpros/makemovie_gaze.pro
  76. 140 0
      data/movies/idlpros/makemovie_pinedobj.pro
  77. BIN
      data/movies/inp_2x5x5.idlmov
  78. BIN
      data/movies/orientation.idlmov
  79. BIN
      data/movies/oriphibar.idlmov
  80. 10 0
      data/movies/oriphibar.meta.xml
  81. BIN
      data/movies/oriphibar_20x20.idlmov
  82. 10 0
      data/movies/oriphibar_20x20.meta.xml
  83. BIN
      data/movies/oriphiedge.idlmov
  84. 10 0
      data/movies/oriphiedge.meta.xml
  85. BIN
      data/movies/oriposbar.idlmov
  86. BIN
      data/movies/oriposx.sequence
  87. BIN
      data/movies/oriposy.sequence
  88. BIN
      data/movies/oriposz.sequence
  89. BIN
      data/movies/picedge.idlmov
  90. 10 0
      data/movies/picedge.meta.xml
  91. BIN
      data/movies/prismacropnorm.idlmov
  92. 10 0
      data/movies/prismacropnorm.meta.xml
  93. BIN
      data/movies/prismaneucropnorm.idlmov
  94. 10 0
      data/movies/prismaneucropnorm.meta.xml
  95. BIN
      data/movies/raised_cos_oriphi_o20_a20_p20_fwhm2.5.idlmov
  96. 21 0
      data/movies/raised_cos_oriphi_o20_a20_p20_fwhm2.5.meta.json
  97. 20 0
      data/movies/raised_cos_oriphi_o20_a20_p20_fwhm2.5.meta.xml
  98. BIN
      data/movies/simplegeo.idlmov
  99. BIN
      data/movies/tetra360.idlmov
  100. 0 0
      data/movies/tetra360cropnorm.idlmov

+ 67 - 0
.cproject

@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?>
+
+<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+	<storageModule moduleId="org.eclipse.cdt.core.settings">
+		<cconfiguration id="0.1476933184">
+			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="0.1476933184" moduleId="org.eclipse.cdt.core.settings" name="Default">
+				<externalSettings/>
+				<extensions>
+					<extension id="org.eclipse.cdt.core.GNU_ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+					<extension id="org.eclipse.cdt.core.VCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+				</extensions>
+			</storageModule>
+			<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+				<configuration artifactName="${ProjName}" buildProperties="" description="" id="0.1476933184" name="Default" parent="org.eclipse.cdt.build.core.prefbase.cfg">
+					<folderInfo id="0.1476933184." name="/" resourcePath="">
+						<toolChain id="org.eclipse.cdt.build.core.prefbase.toolchain.553244297" name="No ToolChain" resourceTypeBasedDiscovery="false" superClass="org.eclipse.cdt.build.core.prefbase.toolchain">
+							<targetPlatform binaryParser="org.eclipse.cdt.core.GNU_ELF" id="org.eclipse.cdt.build.core.prefbase.toolchain.553244297.1792777375" name=""/>
+							<builder arguments="-C ${ProjDirPath}/build VERBOSE=1" command="make" id="org.eclipse.cdt.build.core.settings.default.builder.1691318856" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" superClass="org.eclipse.cdt.build.core.settings.default.builder"/>
+							<tool id="org.eclipse.cdt.build.core.settings.holder.libs.1100605" name="holder for library settings" superClass="org.eclipse.cdt.build.core.settings.holder.libs"/>
+							<tool id="org.eclipse.cdt.build.core.settings.holder.1524969687" name="Assembly" superClass="org.eclipse.cdt.build.core.settings.holder">
+								<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.1952970991" languageId="org.eclipse.cdt.core.assembly" languageName="Assembly" sourceContentType="org.eclipse.cdt.core.asmSource" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
+							</tool>
+							<tool id="org.eclipse.cdt.build.core.settings.holder.1734882385" name="GNU C++" superClass="org.eclipse.cdt.build.core.settings.holder">
+								<option id="org.eclipse.cdt.build.core.settings.holder.incpaths.445028751" name="Include Paths" superClass="org.eclipse.cdt.build.core.settings.holder.incpaths" valueType="includePath">
+									<listOptionValue builtIn="false" value="/usr/include/c++/4.4.5"/>
+									<listOptionValue builtIn="false" value="/usr/include/c++"/>
+									<listOptionValue builtIn="false" value="/usr/include/c++/4.4.5/x86_64-linux-gnu"/>
+									<listOptionValue builtIn="false" value="/usr/include/x86_64-linux-gnu"/>
+									<listOptionValue builtIn="false" value="/usr/include/asm-generic"/>
+								</option>
+								<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.1219447459" languageId="org.eclipse.cdt.core.g++" languageName="GNU C++" sourceContentType="org.eclipse.cdt.core.cxxSource,org.eclipse.cdt.core.cxxHeader" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
+							</tool>
+							<tool id="org.eclipse.cdt.build.core.settings.holder.1155685952" name="GNU C" superClass="org.eclipse.cdt.build.core.settings.holder">
+								<option id="org.eclipse.cdt.build.core.settings.holder.incpaths.428831095" name="Include Paths" superClass="org.eclipse.cdt.build.core.settings.holder.incpaths" valueType="includePath">
+									<listOptionValue builtIn="false" value="/usr/include/c++/4.4.5"/>
+								</option>
+								<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.1045748224" languageId="org.eclipse.cdt.core.gcc" languageName="GNU C" sourceContentType="org.eclipse.cdt.core.cSource,org.eclipse.cdt.core.cHeader" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
+							</tool>
+						</toolChain>
+					</folderInfo>
+				</configuration>
+			</storageModule>
+			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+		</cconfiguration>
+	</storageModule>
+	<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+		<project id="objsim.null.239782442" name="objsim"/>
+	</storageModule>
+	<storageModule moduleId="scannerConfiguration">
+		<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+		<scannerConfigBuildInfo instanceId="0.1476933184">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+		</scannerConfigBuildInfo>
+	</storageModule>
+	<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
+	<storageModule moduleId="refreshScope" versionNumber="2">
+		<configuration configurationName="Default">
+			<resource resourceType="PROJECT" workspacePath="/objsim"/>
+		</configuration>
+	</storageModule>
+</cproject>

+ 4 - 0
.gitignore

@@ -0,0 +1,4 @@
+build/
+install/
+*~
+*.pyc

+ 44 - 0
.hgignore

@@ -0,0 +1,44 @@
+moc_.*
+qrc_.*
+.*\.a
+.*\.o
+.*~
+^lib/
+progversion\.txt
+doc/doxygen
+glob:mycxxtests/stdio_printer.cpp
+glob:mycxxtests/stdio_printer_unit
+glob:activity.png
+glob:tools/spikeview/Makefile
+glob:tools/spikeview/spikeview
+glob:tools/tomwaits/Makefile
+glob:tools/tomwaits/tomwaits
+glob:minimal/minimal
+glob:simulations/fm/somlocinh/somlocinh
+glob:simulations/fm/som05/som05
+glob:simulations/fm/som04/simsom04
+glob:simulations/fm/som03/simsom03
+glob:simulations/fm/som02/simsom02
+relre:simulations/.*\.pid
+relre:trash/
+relre:data/movies/gauss20x20_nojump20_
+glob:simulations/fm/som03/options_som03.cfg
+glob:data/movies/test_gauss20x20_nojump20_xcont_ygap_high2.sequence
+glob:data/movies/test_gauss20x20_nojump20_xcont_ygap.sequence
+glob:data/movies/rectangle.sequence
+glob:data/movies/gauss20x20_xcont.sequence
+glob:data/movies/gauss20x20_ycont.sequence
+glob:data/movies/gauss20x20_with_gap.sequence
+glob:data/movies/gauss20x20_new.meta.xml
+glob:data/movies/gauss20x20_new.idlmov
+glob:data/movies/gauss20x20_NoJump20_ycont.sequence
+glob:data/movies/gauss20x20.sequence
+glob:data/movies/diagonal.sequence
+glob:mycxxtests/veccontmp/
+glob:mycxxtests/apitest_cxxtest.cpp
+glob:mycxxtests/apitest_unit
+glob:mycxxtests/stdio_printer_int
+glob:mycxxtests/temp_chunkfiletest
+glob:mycxxtests/vectest_stdio.cpp
+relre:build/
+relre:^install/.*

+ 27 - 0
.project

@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>objsim</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+			<triggers>clean,full,incremental,</triggers>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+			<triggers>full,incremental,</triggers>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.cdt.core.cnature</nature>
+		<nature>org.eclipse.cdt.core.ccnature</nature>
+		<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+		<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+	</natures>
+</projectDescription>

+ 38 - 0
CMakeLists.txt

@@ -0,0 +1,38 @@
+cmake_minimum_required (VERSION 2.8)
+project(objsim)
+if(CWDEBUG)
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DCWDEBUG")
+endif(CWDEBUG)
+
+set(CXX_COMPILER "/usr/bin/g++-4.9")
+
+include_directories("${PROJECT_SOURCE_DIR}/src")
+include_directories("${PROJECT_SOURCE_DIR}/src/external/vector")
+include_directories("${PROJECT_SOURCE_DIR}/src/external/anyoption")
+include_directories("${PROJECT_SOURCE_DIR}/src/external/rng_thread")
+include_directories("${PROJECT_SOURCE_DIR}/src/external/tinyxml")
+
+find_package(Qt4 REQUIRED) # find and setup Qt4 for this project
+include(${QT_USE_FILE})
+ADD_DEFINITIONS(${QT_DEFINITIONS})
+
+set (CMAKE_INSTALL_PREFIX "${PROJECT_SOURCE_DIR}/install")
+
+set (CXXTEST_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/src/external/cxxtest/)
+
+set(CUSTOM_CMAKE_DIR "${PROJECT_SOURCE_DIR}/cmake")
+
+set(CUSTOM_SCRIPT_DIR "${PROJECT_SOURCE_DIR}/scripts")
+
+include("${CUSTOM_CMAKE_DIR}/install_sim.cmake")
+include("${CUSTOM_CMAKE_DIR}/progversion.cmake")
+include("${CUSTOM_CMAKE_DIR}/versionheader.cmake")
+
+
+include(CTest)
+
+add_subdirectory(src)
+add_subdirectory(scripts)
+add_subdirectory(minimal)
+add_subdirectory(simulations)
+add_subdirectory(mycxxtests)

+ 6 - 0
build_all.sh

@@ -0,0 +1,6 @@
+#!/bin/bash
+mkdir build
+cd build
+cmake -DCMAKE_INSTALL_PREFIX=../install ..
+make
+make install

+ 29 - 0
cmake/install_sim.cmake

@@ -0,0 +1,29 @@
+
+function(INSTALL_SIM SIM_NAME SIM_INSTALL_DIR)
+
+    install (TARGETS ${SIM_NAME} DESTINATION ${SIM_INSTALL_DIR})
+    install (FILES 
+	      "options_${SIM_NAME}.cfg"
+	      "settings_${SIM_NAME}.cfg"
+	    DESTINATION 
+	      "${SIM_INSTALL_DIR}"
+    )
+
+    install (PROGRAMS
+	      "simcontrol_${SIM_NAME}.tcl"
+	      "simeval_${SIM_NAME}.tcl"
+	      startsim
+	      clstartsim
+	    DESTINATION "${SIM_INSTALL_DIR}")
+
+endfunction(INSTALL_SIM)
+
+
+function(INSTALL_SIM2 SIM_NAME SIM_INSTALL_DIR)
+
+    install (TARGETS ${SIM_NAME} DESTINATION ${SIM_INSTALL_DIR})
+    install (PROGRAMS
+	      startsim
+	    DESTINATION "${SIM_INSTALL_DIR}")
+
+endfunction(INSTALL_SIM2)

+ 70 - 0
cmake/lcov.cmake

@@ -0,0 +1,70 @@
+# - This module creates a new 'lcov' target which generates
+#   a coverage analysis html output.
+# LCOV is a graphical front-end for GCC's coverage testing tool gcov.  Please see
+# http://ltp.sourceforge.net/coverage/lcov.php
+#
+# Usage: you must add an option to your CMakeLists.txt to build your application
+# with coverage support. Then you need to include this file to the lcov target.
+#
+# Example:
+# IF(BUILD_WITH_COVERAGE)
+#   SET(CMAKE_C_FLAGS "-g -O0 -Wall -fprofile-arcs -ftest-coverage")
+#   SET(CMAKE_CXX_FLAGS "-g -O0 -Wall -fprofile-arcs -ftest-coverage")
+#   SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fprofile-arcs -ftest-coverage -lgcov")
+#   include(${CMAKE_SOURCE_DIR}/cmake/lcov.cmake)
+# ENDIF(BUILD_WITH_COVERAGE)
+#=============================================================================
+# Copyright 2010 ascolab GmbH
+#
+# Distributed under the OSI-approved BSD License (the "License");
+# see accompanying file Copyright.txt for details.
+#
+# This software is distributed WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the License for more information.
+#=============================================================================
+# (To distributed this file outside of CMake, substitute the full
+#  License text for the above reference.)
+
+IF(BUILD_WITH_COVERAGE)
+    # enable coverage analysis using GCC and GCOV
+    IF (CMAKE_COMPILER_IS_GNUCC)
+        SET(CMAKE_C_FLAGS "-g -O0 -Wall -fprofile-arcs -ftest-coverage")
+        SET(CMAKE_CXX_FLAGS "-g -O0 -Wall -fprofile-arcs -ftest-coverage")
+        SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fprofile-arcs -ftest-coverage -lgcov")
+    ENDIF()
+ENDIF(BUILD_WITH_COVERAGE)
+
+
+function(DO_COVERAGE)
+
+  ## lcov target
+  ADD_CUSTOM_TARGET(lcov)
+  ADD_CUSTOM_COMMAND(TARGET lcov
+      COMMAND mkdir -p coverage
+      WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+      )
+  ADD_CUSTOM_COMMAND(TARGET lcov
+      COMMAND lcov --directory . --zerocounters
+      WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+      )
+  ADD_CUSTOM_COMMAND(TARGET lcov
+      COMMAND make test
+      WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+      )
+  ADD_CUSTOM_COMMAND(TARGET lcov
+      COMMAND lcov --directory . --capture --output-file ./coverage/stap.info
+      WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+      )
+  ADD_CUSTOM_COMMAND(TARGET lcov
+      COMMAND genhtml -o ./coverage ./coverage/stap.info
+      WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+      )
+  ADD_CUSTOM_COMMAND(TARGET lcov
+      COMMAND echo "Open ${CMAKE_BINARY_DIR}/coverage/index.html to view the coverage analysis results."
+      WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+      )
+  ADD_DEPENDENCIES(lcov ${ARGV})
+endfunction(DO_COVERAGE)
+
+

+ 9 - 0
cmake/progversion.cmake

@@ -0,0 +1,9 @@
+
+function(SAVE_PROGVERSION SIM_NAME)
+    add_custom_target("progversion.txt")
+    add_custom_command(TARGET "progversion.txt"
+        COMMAND hg tip > ${CMAKE_CURRENT_BINARY_DIR}/progversion.txt
+        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+    )
+    add_dependencies("${SIM_NAME}" "progversion.txt")
+endfunction(SAVE_PROGVERSION)

+ 10 - 0
cmake/versionheader.cmake

@@ -0,0 +1,10 @@
+
+function(GENERATE_VERSION_HEADER VERSION_FILE SIM_NAME)
+    add_custom_target("${VERSION_FILE}")
+    add_custom_command(TARGET "${VERSION_FILE}"
+        COMMAND ${CUSTOM_SCRIPT_DIR}/generate_version_header.sh ${VERSION_FILE}
+        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+    )
+    add_dependencies("${SIM_NAME}" "${VERSION_FILE}")
+endfunction(GENERATE_VERSION_HEADER)
+

BIN
data/movies/16bars.idlmov


BIN
data/movies/16oris.idlmov


BIN
data/movies/1ddotsmovie.idlmov


BIN
data/movies/2x2sglstim.idlmov


+ 10 - 0
data/movies/2x2sglstim.meta.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<MovieMetaFile>
+
+  <StimParas>
+    <MovieFileName value="2x2sglstim.idlmov"/>
+    <NXParas value="2"/>
+    <NYParas value="2"/>
+  </StimParas>
+
+</MovieMetaFile>

BIN
data/movies/5x5gklearn0.idlmov


BIN
data/movies/5x5gklearn1.idlmov


BIN
data/movies/5x5gklearn2.idlmov


BIN
data/movies/5x5gklearn3.idlmov


BIN
data/movies/abcdefgh.sequence


BIN
data/movies/ascii.idlmov


BIN
data/movies/bolearn01.idlmov


BIN
data/movies/bolearn02.idlmov


BIN
data/movies/bolearn03.idlmov


BIN
data/movies/coil100first18.idlmov


+ 10 - 0
data/movies/coil100first18.meta.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<MovieMetaFile>
+
+  <StimParas>
+    <MovieFileName value="coil100first18.idlmov"/>
+    <NXParas value="18"/>
+    <NYParas value="18"/>
+  </StimParas>
+
+</MovieMetaFile>

BIN
data/movies/coil100norm10x36.idlmov


+ 69 - 0
data/movies/coil100norm10x36.meta.xml

@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<MovieMetaFile>
+
+  <StimParas>
+    <MovieFileName value="coil100norm10x36.idlmov"/>
+    <NXParas value="36"/>
+    <NYParas value="10"/>
+  </StimParas>
+
+  <IdlStruct>
+    <OBJECT IDLTypeCode="2" Type="Array">
+      <ArrayDimensions NDim="1" dim0="10"/>
+      <ArrayEntries>
+        <x val="1"/>
+        <x val="3"/>
+        <x val="12"/>
+        <x val="14"/>
+        <x val="21"/>
+        <x val="28"/>
+        <x val="36"/>
+        <x val="68"/>
+        <x val="74"/>
+        <x val="97"/>
+      </ArrayEntries>
+    </OBJECT>
+    <VIEWS IDLTypeCode="2" Type="Array">
+      <ArrayDimensions NDim="1" dim0="36"/>
+      <ArrayEntries>
+        <x val="0"/>
+        <x val="10"/>
+        <x val="20"/>
+        <x val="30"/>
+        <x val="40"/>
+        <x val="50"/>
+        <x val="60"/>
+        <x val="70"/>
+        <x val="80"/>
+        <x val="90"/>
+        <x val="100"/>
+        <x val="110"/>
+        <x val="120"/>
+        <x val="130"/>
+        <x val="140"/>
+        <x val="150"/>
+        <x val="160"/>
+        <x val="170"/>
+        <x val="180"/>
+        <x val="190"/>
+        <x val="200"/>
+        <x val="210"/>
+        <x val="220"/>
+        <x val="230"/>
+        <x val="240"/>
+        <x val="250"/>
+        <x val="260"/>
+        <x val="270"/>
+        <x val="280"/>
+        <x val="290"/>
+        <x val="300"/>
+        <x val="310"/>
+        <x val="320"/>
+        <x val="330"/>
+        <x val="340"/>
+        <x val="350"/>
+      </ArrayEntries>
+    </VIEWS>
+  </IdlStruct>
+
+</MovieMetaFile>

BIN
data/movies/coil100norm20x20.idlmov


+ 10 - 0
data/movies/coil100norm20x20.meta.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<MovieMetaFile>
+
+  <StimParas>
+    <MovieFileName value="coil100norm20x20.idlmov"/>
+    <NXParas value="20"/>
+    <NYParas value="20"/>
+  </StimParas>
+
+</MovieMetaFile>

BIN
data/movies/corner.idlmov


BIN
data/movies/corner2.idlmov


BIN
data/movies/corner20x20.idlmov


+ 10 - 0
data/movies/corner20x20.meta.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<MovieMetaFile>
+
+  <StimParas>
+    <MovieFileName value="corner20x20.idlmov"/>
+    <NXParas value="20"/>
+    <NYParas value="20"/>
+  </StimParas>
+
+</MovieMetaFile>

BIN
data/movies/corner8x8.idlmov


+ 10 - 0
data/movies/corner8x8.meta.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<MovieMetaFile>
+
+  <StimParas>
+    <MovieFileName value="corner8x8.idlmov"/>
+    <NXParas value="8"/>
+    <NYParas value="8"/>
+  </StimParas>
+
+</MovieMetaFile>

BIN
data/movies/corner8x8r.idlmov


+ 10 - 0
data/movies/corner8x8r.meta.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<MovieMetaFile>
+
+  <StimParas>
+    <MovieFileName value="corner8x8r.idlmov"/>
+    <NXParas value="8"/>
+    <NYParas value="8"/>
+  </StimParas>
+
+</MovieMetaFile>

BIN
data/movies/cosgrid.idlmov


BIN
data/movies/cosgrid20x20.idlmov


BIN
data/movies/donut20x20.idlmov


+ 10 - 0
data/movies/donut20x20.meta.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<MovieMetaFile>
+
+  <StimParas>
+    <MovieFileName value="donut20x20.idlmov"/>
+    <NXParas value="20"/>
+    <NYParas value="20"/>
+  </StimParas>
+
+</MovieMetaFile>

BIN
data/movies/donut20x20big.idlmov


+ 10 - 0
data/movies/donut20x20big.meta.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<MovieMetaFile>
+
+  <StimParas>
+    <MovieFileName value="donut20x20big.idlmov"/>
+    <NXParas value="20"/>
+    <NYParas value="20"/>
+  </StimParas>
+
+</MovieMetaFile>

BIN
data/movies/ellipse.idlmov


+ 10 - 0
data/movies/ellipse.meta.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<MovieMetaFile>
+
+  <StimParas>
+    <MovieFileName value="ellipse.idlmov"/>
+    <NXParas value="8"/>
+    <NYParas value="8"/>
+  </StimParas>
+
+</MovieMetaFile>

BIN
data/movies/f2motion.idlmov


BIN
data/movies/f2pattern.idlmov


BIN
data/movies/gauss.idlmov


BIN
data/movies/gauss20x20.idlmov


+ 10 - 0
data/movies/gauss20x20.meta.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<MovieMetaFile>
+
+  <StimParas>
+    <MovieFileName value="gauss20x20.idlmov"/>
+    <NXParas value="20"/>
+    <NYParas value="20"/>
+  </StimParas>
+
+</MovieMetaFile>

BIN
data/movies/gauss20x20_fhwm0.15_ratio1.7.idlmov


+ 10 - 0
data/movies/gauss20x20_fhwm0.15_ratio1.7.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<MovieMetaFile>
+
+  <StimParas>
+    <MovieFileName value="gauss20x20_fhwm0.15_ratio1.7.idlmov"/>
+    <NXParas value="20"/>
+    <NYParas value="20"/>
+  </StimParas>
+
+</MovieMetaFile>

BIN
data/movies/gauss20x20_fwhm0.2.idlmov


BIN
data/movies/gauss20x20_fwhm0.25.idlmov


BIN
data/movies/gauss20x20_fwhm0.3.idlmov


BIN
data/movies/gauss20x20_fwhm0.35.idlmov


BIN
data/movies/gauss20x20_fwhm0.4.idlmov


BIN
data/movies/gauss20x20_neu.idlmov


+ 10 - 0
data/movies/gauss20x20_neu.meta.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<MovieMetaFile>
+
+  <StimParas>
+    <MovieFileName value="gauss20x20_neu.idlmov"/>
+    <NXParas value="20"/>
+    <NYParas value="20"/>
+  </StimParas>
+
+</MovieMetaFile>

BIN
data/movies/gauss20x20_ox40_oy40_fwhm0.2.idlmov


+ 10 - 0
data/movies/gauss20x20_ox40_oy40_fwhm0.2.meta.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<MovieMetaFile>
+
+  <StimParas>
+    <MovieFileName value="gauss20x20_ox40_oy40_fwhm0.2.idlmov"/>
+    <NXParas value="20"/>
+    <NYParas value="20"/>
+  </StimParas>
+
+</MovieMetaFile>

BIN
data/movies/gauss8x8.idlmov


+ 10 - 0
data/movies/gauss8x8.meta.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<MovieMetaFile>
+
+  <StimParas>
+    <MovieFileName value="gauss8x8.idlmov"/>
+    <NXParas value="8"/>
+    <NYParas value="8"/>
+  </StimParas>
+
+</MovieMetaFile>

BIN
data/movies/gazemovie.idlmov


BIN
data/movies/gazemovie_100_100.idlmov


BIN
data/movies/gazemovie_1_25.idlmov


BIN
data/movies/gazemovie_1_25.idlmov.info


BIN
data/movies/gazemovie_1_5.idlmov


BIN
data/movies/gazemovie_1_5.idlmov.info


BIN
data/movies/gazemovie_50_50.idlmov


BIN
data/movies/gradient.idlmov


+ 10 - 0
data/movies/gradient.meta.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<MovieMetaFile>
+
+  <StimParas>
+    <MovieFileName value="gradient.idlmov"/>
+    <NXParas value="2"/>
+    <NYParas value="1"/>
+  </StimParas>
+
+</MovieMetaFile>

BIN
data/movies/horizontalbar.idlmov


+ 104 - 0
data/movies/idlpros/makemovie_gaze.pro

@@ -0,0 +1,104 @@
+pro makemovie_gaze
+default, filename, "$HOME/prog/objsim/data/movies/gazemovie.idlmov"
+
+
+
+retw=50
+reth=1
+
+modw=50
+modh=1
+
+
+a = obj_new('movieinput', /create, filename=filename)
+a->generatefile, owarray=[retw,modw], oharray=[reth,modh], nfilters=2
+
+pic = fltarr(retw,reth)
+pic2 = fltarr(modw,modh)
+
+nretneurons=retw*reth
+nmodneurons=modw*modh
+
+nkombi=nretneurons*nmodneurons
+
+g=indgen(7)-3
+b=fltarr(7)
+for i=0,6 do begin
+  b(i)=exp(-g(i)*g(i)/5.)
+endfor
+
+h=indgen(11)-5
+c=fltarr(11)
+for i=0,10 do begin
+  c(i)=exp(-h(i)*h(i)/10.)
+endfor
+			
+
+
+
+objposition=intarr(3)
+objposition(0)=0
+objposition(1)=20
+objposition(2)=40
+
+
+for objpos=0,2 do begin
+	for modpos=0,nmodneurons-9 do begin
+	;	for retpos=0,nretneurons-9 do begin
+		rettemppos=35
+		modtemppos=40
+		pic(*)=0			
+		pic2(*)=0
+		;if (modpos-retpos eq objposition(objpos)) then begin
+			for j=0,6 do begin
+				pic(objposition(objpos)+j)=1*b(j)
+			endfor
+			for j=0,6 do begin
+				pic2(modpos+j)=1*b(j)
+			endfor
+			a->WriteFrame, pic    
+			a->WriteFrame, pic2
+		;endif else begin
+		;	pic(retpos)=0
+		;	pic2(modpos)=0
+		;endelse
+		tvscl, rebin(pic, 10*retw, reth*10, /sample)
+	;	endfor
+	endfor
+	wait, 0.15
+	
+endfor
+	
+
+
+;for u=0,nmodneurons-5 do begin
+;	for i=0, nretneurons-5 do begin
+;		frame = pic
+;		frame2 = pic2
+;		for j=0,4 do begin
+;			frame(i+j)=1*b(j)
+;			frame2(u+j)=1*b(j)
+;			;;frame2(i+j)=1+b(j)
+;		endfor
+;		;frame2(u)=1
+;		;wait, 0.15
+ ;       	tvscl, rebin(frame, 10*retw, reth*10, /sample)
+;		;tvscl, 0, 0.3, /norm, rebin(frame2, 10*modw, modh*10, /sample)
+;		a->WriteFrame, frame    
+;		a->WriteFrame, frame2
+ ;   	endfor 
+;endfor
+
+
+
+
+
+
+
+
+
+
+
+;endfor
+obj_destroy, a
+end

+ 140 - 0
data/movies/idlpros/makemovie_pinedobj.pro

@@ -0,0 +1,140 @@
+pro makemovie_pinedobj
+
+default, filename, "$HOME/prog/objsim/data/movies/pinedobjmovie.idlmov"
+
+
+
+
+retw=50
+reth=1
+
+modw=50
+modh=1
+
+a = obj_new('movieinput', /create, filename=filename)
+a->generatefile, owarray=[retw,modw], oharray=[reth,modh], nfilters=2
+
+pic = fltarr(retw,reth)
+pic2 = fltarr(modw,modh)
+
+nretneurons=retw*reth
+nmodneurons=modw*modh
+
+nkombi=nretneurons*nmodneurons
+
+g=indgen(5)-2
+b=fltarr(5)
+for i=0,4 do begin
+  b(i)=exp(-g(i)*g(i)/5.)
+endfor
+
+h=indgen(5)-2
+c=fltarr(5)
+for i=0,4 do begin
+  c(i)=exp(-h(i)*h(i)/5.)
+endfor
+			
+
+objposition=intarr(3)
+
+objposition(0)=-15
+objposition(1)=0
+objposition(2)=15
+
+modposition=intarr(9)
+retposition=intarr(9)
+
+;for i=0,8 do begin
+; modposition(i)=5*(i+1)-25
+; retposition(i)=5*(i+1)-25
+;endfor
+
+
+counter=0
+
+for objpos=0,2 do begin
+for modpos=0,45 do begin
+	for retpos=0,45 do begin
+		pic(*)=0
+		pic2(*)=0
+		if (modpos-retpos eq objposition(objpos)) then begin
+			for j=0,4 do begin
+				pic(retpos+j)=1*b(j)
+			endfor
+			for j=0,4 do begin
+				pic2(objposition(objpos)+retpos+j)=1*b(j)
+			endfor
+			a->WriteFrame, pic    
+			a->WriteFrame, pic2
+			counter=counter+1		
+		endif else begin
+			pic(retpos)=0
+			pic2(modpos)=0
+		endelse
+		tvscl, rebin(pic, 10*retw, reth*10, /sample)
+	endfor
+	endfor
+endfor
+
+
+infos=intarr(counter,2)
+
+counter=0
+for objpos=0,2 do begin
+for modpos=0,45 do begin
+	for retpos=0,45 do begin
+		pic(*)=0
+		pic2(*)=0
+		if (modpos-retpos eq objposition(objpos)) then begin
+			for j=0,4 do begin
+				pic(retpos+j)=1*b(j)
+			endfor
+			for j=0,4 do begin
+				pic2(objposition(objpos)+retpos+j)=1*b(j)
+			endfor
+			infos(counter,0)=retpos
+			infos(counter,1)=modpos
+			counter=counter+1
+		endif else begin
+			pic(retpos)=0
+			pic2(modpos)=0
+		endelse
+		tvscl, rebin(pic, 10*retw, reth*10, /sample)
+	endfor
+	endfor
+endfor
+
+uwriteu, filename+'.info',infos
+
+print, counter
+;for u=0,nmodneurons-5 do begin
+;	for i=0, nretneurons-5 do begin
+;		frame = pic
+;		frame2 = pic2
+;		for j=0,4 do begin
+;			frame(i+j)=1*b(j)
+;			frame2(u+j)=1*b(j)
+;			;;frame2(i+j)=1+b(j)
+;		endfor
+;		;frame2(u)=1
+;		;wait, 0.15
+ ;       	tvscl, rebin(frame, 10*retw, reth*10, /sample)
+;		;tvscl, 0, 0.3, /norm, rebin(frame2, 10*modw, modh*10, /sample)
+;		a->WriteFrame, frame    
+;		a->WriteFrame, frame2
+ ;   	endfor 
+;endfor
+
+
+
+
+
+
+
+
+
+
+
+;endfor
+obj_destroy, a
+end

BIN
data/movies/inp_2x5x5.idlmov


BIN
data/movies/orientation.idlmov


BIN
data/movies/oriphibar.idlmov


+ 10 - 0
data/movies/oriphibar.meta.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<MovieMetaFile>
+
+  <StimParas>
+    <MovieFileName value="oriphibar.idlmov"/>
+    <NXParas value="10"/>
+    <NYParas value="10"/>
+  </StimParas>
+
+</MovieMetaFile>

BIN
data/movies/oriphibar_20x20.idlmov


+ 10 - 0
data/movies/oriphibar_20x20.meta.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<MovieMetaFile>
+
+  <StimParas>
+    <MovieFileName value="oriphibar_20x20.idlmov"/>
+    <NXParas value="20"/>
+    <NYParas value="20"/>
+  </StimParas>
+
+</MovieMetaFile>

BIN
data/movies/oriphiedge.idlmov


+ 10 - 0
data/movies/oriphiedge.meta.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<MovieMetaFile>
+
+  <StimParas>
+    <MovieFileName value="oriphiedge.idlmov"/>
+    <NXParas value="20"/>
+    <NYParas value="20"/>
+  </StimParas>
+
+</MovieMetaFile>

BIN
data/movies/oriposbar.idlmov


BIN
data/movies/oriposx.sequence


BIN
data/movies/oriposy.sequence


BIN
data/movies/oriposz.sequence


BIN
data/movies/picedge.idlmov


+ 10 - 0
data/movies/picedge.meta.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<MovieMetaFile>
+
+  <StimParas>
+    <MovieFileName value="picedge.idlmov"/>
+    <NXParas value="100"/>
+    <NYParas value="800"/>
+  </StimParas>
+
+</MovieMetaFile>

BIN
data/movies/prismacropnorm.idlmov


+ 10 - 0
data/movies/prismacropnorm.meta.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<MovieMetaFile>
+
+  <StimParas>
+    <MovieFileName value="prismacropnorm.idlmov"/>
+    <NXParas value="20"/>
+    <NYParas value="20"/>
+  </StimParas>
+
+</MovieMetaFile>

BIN
data/movies/prismaneucropnorm.idlmov


+ 10 - 0
data/movies/prismaneucropnorm.meta.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<MovieMetaFile>
+
+  <StimParas>
+    <MovieFileName value="prismaneucropnorm.idlmov"/>
+    <NXParas value="20"/>
+    <NYParas value="20"/>
+  </StimParas>
+
+</MovieMetaFile>

BIN
data/movies/raised_cos_oriphi_o20_a20_p20_fwhm2.5.idlmov


+ 21 - 0
data/movies/raised_cos_oriphi_o20_a20_p20_fwhm2.5.meta.json

@@ -0,0 +1,21 @@
+{
+    "MovieMetaFile": {
+        "StimParas": {
+            "NYParas": 20, 
+            "NXParas": 20, 
+            "MovieFileName": "raised_cos_oriphi_o20_a20_p20_fwhm2.5.idlmov"
+        }, 
+        "Generator": {
+            "Args": {
+                "n_phases": 20, 
+                "fwhm": 2.5, 
+                "n_angles": 20, 
+                "output_size": 20, 
+                "file_path": "/home/frank/tmp/raised_cos_oriphi_o20_a20_p20_fwhm2.5.idlmov"
+            }, 
+            "SourceFile": "objsimpy/generate_ori_stim.py", 
+            "FunctionName": "generate_ori_stim", 
+            "SHA1": "8372e7519493c8b121edef1221f41bb9c5fdbaf4"
+        }
+    }
+}

+ 20 - 0
data/movies/raised_cos_oriphi_o20_a20_p20_fwhm2.5.meta.xml

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<MovieMetaFile>
+	<StimParas>
+		<NYParas value="20"></NYParas>
+		<NXParas value="20"></NXParas>
+		<MovieFileName value="raised_cos_oriphi_o20_a20_p20_fwhm2.5.idlmov"></MovieFileName>
+	</StimParas>
+	<Generator>
+		<Args>
+			<n_phases value="20"></n_phases>
+			<fwhm value="2.5"></fwhm>
+			<n_angles value="20"></n_angles>
+			<output_size value="20"></output_size>
+			<file_path value="/home/frank/tmp/raised_cos_oriphi_o20_a20_p20_fwhm2.5.idlmov"></file_path>
+		</Args>
+		<SourceFile value="objsimpy/generate_ori_stim.py"></SourceFile>
+		<FunctionName value="generate_ori_stim"></FunctionName>
+		<SHA1 value="8372e7519493c8b121edef1221f41bb9c5fdbaf4"></SHA1>
+	</Generator>
+</MovieMetaFile>

BIN
data/movies/simplegeo.idlmov


BIN
data/movies/tetra360.idlmov


+ 0 - 0
data/movies/tetra360cropnorm.idlmov


Some files were not shown because too many files changed in this diff