Skip to content
Snippets Groups Projects
Select Git revision
  • 4f7f99166c5ccf230b51c7ba0992f68272e88e96
  • master default protected
  • feature/#45_Re_add_arbor_support
  • feature/#46_Add_data_type_for_NEST_Simulation_info
  • stable
  • release/19.03
  • cannoli
  • madrid
  • feature/#32_Create_install_target
  • feature/#20_Fix_conan_test
  • feature/#18_fix_the_pipeline_for_the_master_branch
  • 13-rename-nesci-libraries-to-nesci_consumer-nesci_producer
  • 13-rename-nesci-libraries-to-nesci_consumer-nesci_producer-2
  • 19.07
  • 18.07
15 results

nesci

nesci -- neuronal simulator conan interface

License

Latest Version

Build Status

Introduction

Nesci is designed as a conan interface for neuronal simulators such as NEST. It is split into a producer and a consumer part .

Nesci has been cross-developed for both Windows and Unix systems.

Supported compilers:

  • msvc (tested with msvc++14.1)
  • gcc (tested with gcc 5.3.1, 6.3.1 and 7.3.1)
  • clang (tested with clang 9.1)

Other compilers versions might work as well.

The different modules it includes:

  • Producer

    • The Producer records data received from different multimeters (NEST or Arbor) as well as spike detectors.
  • Consumer

    • The Consumer receives the data recorded by the Producer, it also functions for the same multimeters and spike detectors.

    • It has functionality to read out the timesteps for datapoints or a whole series of data.

    • The Consumer and Producer can also be used with a Python module by setting: cmake -PYTHON_ENABLE_MODULE__pyconsumer=True cmake -PYTHON_ENABLE_MODULE__pynesci=True

    • or setting those options to true in the CMake GUI

API

Consumer

Every class is inside the namespace nesci::consumer.

SpikeDetectorDataView

class SpikeDetectorDataView {
  conduit::float64_array GetTimesteps() const;
  conduit::uint64_array GetNeuronIds() const;
};

SpikeDetectorDataView gives access to two arrays with the same number of entries. The length of these arrays represent the number of spikes that are described in the dataset. So, GetTimesteps()[i] represents the simulation time and GetNeuronIds()[i] represents the neuron id of the ith spike described in the dataset. The data is not guaranteed to be sorted in any way.

NestMultimeterDataView

class NestMultimeterDataView {
  double GetTimestep() const;
  conduit::uint64_array GetNeuronIds() const;
  std::vector<std::string> GetIntegerAttributeNames() const;
  std::vector<std::string> GetFloatingPointAttributeNames() const;
  conduit::int64_array GetIntegerAttributeValues(
      const std::string& attribute
  ) const;
  conduit::float64_array GetFloatingPointAttributeValues(
      const std::string& attribute
  ) const;
};

NestMultimeterDataView gives access to the data recorded by a nest multimeter. One dataset describes the values of multiple attributes of multiple neurons for a single timestep.

The timestep can be retreived using GetTimestep(). The IDs of the nereurons whose attributes values are contained in this dataset can be retrieved using GetNeuronIds(). The names of the attributes stored in the dataset can be retrieved using GetIntegerAttributeNames() and GetFloatingPointAttributeNames() depending on their type. Finally, the values of each neuron for one attribute can be retrieved using GetIntegerAttributeValues() or GetFloatingPointAttributeValues() again depending on their type. The value with index i again corresponds to the neuron id with index i returned from GetNeuronIds().

Building nesci

Dependencies

The version numbers specify the versions used for testing. Other versions may also work.

Required

Optional

When you want the python bindings (-DWITH_PYTHON_BINDINGS=ON, OFF by default) you will also need the following:

If you want to enable the tests (-DENABLE_TESTS=ON, ON by default) you will also need:

If you want to to contribute to the library you want to have the developer tests enabled (-DENABLE_DEVELOPER_TESTS=ON, OFF by default) and you will also need:

Building nesci

  1. Build all dependencies you need and install them to a directory $DEPENDENCY_DIR.
  2. Create a build directory and run CMake from there cmake [FLAGS] -DCMAKE_INSTALL_PREFIX=[INSTALL_DIRECTORY] [PATH_TO_NESCI_SOURCE]. Where [INSTALL_DIRECTORY] is the directory where the library should be installed and [PATH_TO_NESCI_SOURCE] is the path to the root of this repository. The values for [FLAGS] depends on your configuration (see below).
  3. Run make [-j] to build the library.
  4. Run make test to check if everything went fine (only if ENABLE_TESTS was set to ON default: ON).
  5. Run make install to install the library.

Minimal build

cmake -DCONDUIT_DIR=$DEPENDENCY_DIR -DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=[INSTALL_DIRECTORY] [PATH_TO_NESCI_SOURCE]

Using nesci

find_package(nesci REQUIRED producer consumer)
# ...
target_link_libraries(... nesci_producer nesci_consumer)

See test_package/CMakeLists.txt for an example.