Source code for bmtk.simulator.pointnet.nest_utils
import nest
import re
[docs]def get_version():
"""Trys to get NEST version major, minor, and patch (optional) of the current running version of nest. Will return
as a list of ints [major, minor, patch], although patch may be None.
:return: [major, minor, patch] if able to parse version, None if fails. 'patch' may be None value.
"""
# Try to get the version string
version_str = None
try:
# NEST 2.* uses .version() to get version string
version_str = nest.version()
except AttributeError:
pass
if version_str is None:
try:
# For NEST 3.1 it uses __version__ attribute to store string
version_str = nest.__version__
if version_str.upper() == 'UNKNOWN':
return [3, None, None]
except AttributeError:
pass
if version_str is None:
return None
# parse the version string to get major, minor and patch numbers
try:
version_pattern = re.compile(r'.*nest-(\d+)\.(\d+)(?:\.(\d+))?.*')
m = re.match(version_pattern, version_str)
n_groups = len(m.groups())
ver_major = int(m.group(1))
ver_minor = int(m.group(2))
ver_patch = int(m.group(3)) if n_groups >= 3 and m.group(3) is not None else None
return [ver_major, ver_minor, ver_patch]
except (AttributeError, IndexError, ValueError, TypeError) as err:
return None
nest_version = get_version()
if nest_version is None:
# For now default to assume NEST 3.*.* is being used
nest_version = [3, None, None]
NEST_SYNAPSE_MODEL_PROP = 'model' if nest_version[0] == 2 else 'synapse_model'
NEST_SPIKE_DETECTOR = 'spike_detector' if nest_version[0] == 2 else 'spike_recorder'