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'