SimVisSuite Development

Software requirements

SimVisSuite applications are developed in the C++ using the C++11 standard. The basic requirements to compile the applications are:

The C++ standard is set by default by the CMake/Common package included in all applications and some dependencies. If modifications to the source code requires a C++ standard higher than C++11 that can be applied by overriding the CMake variable CMAKE_CPP_FLAGS after the common_find_package_post() command in the CMakeLists.txt build script.

Dependencies

In overview, the SimVisSuite applications depend on the following external libraries to provide some of its functionalities:

  • UI, 3D visualization and general purpose:
    • Qt: Cross-platform graphical library and tools.
    • Boost: general purpose C++ libraries.
    • scoop: library to implement and manage color palettes and value-mappers.
    • AcuteRecorder: library that implements a video/screenshot recorder to capture the contents of a Qt Widget.
    • ReTo: library that implements auxiliary tools for 3D rendering.
    • plab: library that implements a fast particle rendering engine.
    • GLM: OpenGL Mathematics library.
    • GLEW: OpenGL Extension Wrangler Library.
    • GLUT: OpenGL utility toolkit library.
    • ShiFT: library based on FiReS to implement properties and data structures to define relationships between entities.
    • Eigen3: template library for linear algebra operations.
  • NeuroScience related:
    • Brion: library to read and write access to Blue Brain data structures.
    • nsol: library that provides data structures to handle basic neuroscientific data, mainly cortex morphologies and its structures.
    • SimIL: library to read brain simulation datasets in BlueConfig, HDF5 and CSV formats.
    • HDF5: library that implement the HDF5 data model read and write operations.
    • NeuroLOTs: set of libraries and tools for generating neuronal meshes and for visualizing them at different levels of detail using GPU-based tessellation.
  • Connectivity and Network:
    • ZeroEQ: library for modern messaging using ZeroMQ that also integrates REST APIs with JSON payload.
    • Lexis: library to implement a vocabulary used for event-driven communication in and between visualization software.
    • gmrvLex: library that implements the vocabulary for event-driven communication between SimVisSuite applications using Lexis.

Some of those libraries have already other dependencies that must be fulfilled to compile a feature complete SimVisSuite in the selected platform.

Not all libraries are strictly needed, some implement optional funcionalities that can be disabled when compiling a SimVisSuite application depending on the needs. In the following chapters of this documentation the possible compilation options and the libraries required for them are described in detail in the compilation part of each application.

Compilation

The compilation requeriments, procedure and possible CMAKE flags is detailed in the next chapters of this documentation for each of the applications that comprise SimVisSuite.

Compilation problems

While SimVisSuite applications code compile without modifications some of its dependencies can report problems compiling in newer versions of the compilers. The possible solutions are:

  • Override warnings either modifying the compiler flags or adding #pragma preprocessor directives in the offending source code files.
  • Manually fix the problems updating the code to the new standard requirements.

The latter option is recommended as most of the problems (like deprecated methods or CASE without break; warnings) are very easy to fix that way.