Source code for nest.lib.hl_api_models

# -*- coding: utf-8 -*-
#
# hl_api_models.py
#
# This file is part of NEST.
#
# Copyright (C) 2004 The NEST Initiative
#
# NEST is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# NEST is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with NEST.  If not, see <http://www.gnu.org/licenses/>.

"""
Functions for model handling
"""

from .hl_api_helper import *


[docs]@check_stack def Models(mtype="all", sel=None): """Return a tuple of all available model (neurons, devices and synapses) names, sorted by name. Parameters ---------- mtype : str, optional Use mtype='nodes' to only see neuron and device models, or mtype='synapses' to only see synapse models. sel : str, optional String used to filter the result list and only return models containing it. Returns ------- tuple: Available model names Notes ----- - Synapse model names ending with '_hpc' provide minimal memory requirements by using thread-local target neuron IDs and fixing the `rport` to 0. - Synapse model names ending with '_lbl' allow to assign an individual integer label (`synapse_label`) to created synapses at the cost of increased memory requirements. Raises ------ ValueError Description """ if mtype not in ("all", "nodes", "synapses"): raise ValueError("type has to be one of 'all', 'nodes' or 'synapses'") models = [] if mtype in ("all", "nodes"): sr("modeldict") models += spp().keys() if mtype in ("all", "synapses"): sr("synapsedict") models += spp().keys() if sel is not None: models = [x for x in models if x.find(sel) >= 0] models.sort() return tuple(models)
[docs]@check_stack def ConnectionRules(): """Return a typle of all available connection rules, sorted by name. Returns ------- tuple: Available connection rules """ sr('connruledict') return tuple(sorted(spp().keys()))
[docs]@check_stack def SetDefaults(model, params, val=None): """Set the default parameters of the given model to the values specified in the params dictionary. New default values are used for all subsequently created instances of the model. Parameters ---------- model : str Name of the model params : str or dict Dictionary of new default values. If val is given, this has to be the name of a model property as a str. val : str, optional If given, params has to be the name of a model property. """ if val is not None: if is_literal(params): params = {params: val} sps(params) sr('/{0} exch SetDefaults'.format(model))
[docs]@check_stack def GetDefaults(model, keys=None): """Return a dictionary with the default parameters of the given model, specified by a string. Parameters ---------- model : str Name of the model keys : str or list, optional String or a list of strings naming model properties. GetDefaults then returns a single value or a list of values belonging to the keys given. Returns ------- dict: All default parameters type: If keys is a string, the corrsponding default parameter is returned list: If keys is a list of strings, a list of corrsponding default parameters is returned Raises ------ TypeError Examples -------- GetDefaults('iaf_psc_alpha','V_m') -> -70.0 GetDefaults('iaf_psc_alpha',['V_m', 'model']) -> [-70.0, 'iaf_psc_alpha'] """ if keys is None: cmd = "/{0} GetDefaults".format(model) elif is_literal(keys): cmd = '/{0} GetDefaults /{1} get'.format(model, keys) elif is_iterable(keys): keys_str = " ".join("/{0}".format(x) for x in keys) cmd = "/{0} GetDefaults [ {1} ] {{ 1 index exch get }}"\ .format(model, keys_str) + " Map exch pop" else: raise TypeError("keys should be either a string or an iterable") sr(cmd) return spp()
[docs]@check_stack def CopyModel(existing, new, params=None): """Create a new model by copying an existing one. Parameters ---------- existing : str Name of existing model new : str Name of the copy of the existing model params : dict, optional Default parameters assigned to the copy. Not provided parameters are taken from the existing model. """ model_deprecation_warning(existing) if params is not None: sps(params) sr("/%s /%s 3 2 roll CopyModel" % (existing, new)) else: sr("/%s /%s CopyModel" % (existing, new))