Source code for bmtk.simulator.core.node_sets

from .io_tools import io


[docs]class NodeSet(object): def __init__(self, filter_params, network): self._network = network self._populations = [] self._preselected_gids = None if isinstance(filter_params, list): self._preselected_gids = filter_params elif isinstance(filter_params, dict): self._filter = filter_params.copy() self._populations = self._find_populations() else: io.log_exception('Unknown node set params type {}'.format(type(filter_params))) def _find_populations(self): for k in ['population', 'populations']: if k in self._filter: node_pops = [] for pop_name in to_list(self._filter[k]): node_pops.append(self._network.get_node_population(pop_name)) del self._filter[k] return node_pops return self._network.get_node_populations()
[docs] def populations(self): return self._populations
[docs] def population_names(self): return [p.name for p in self._populations]
[docs] def gids(self): if self._preselected_gids is not None: for gid in self._preselected_gids: yield gid else: for pop in self._populations: for node in pop.filter(self._filter): yield self._network.gid_pool.get_gid(name=pop.name, node_id=node.node_id)
@property def node_ids(self): node_ids = [] for pop in self._populations: for node in pop.filter(self._filter): node_ids.append(node.node_id) return node_ids
[docs] def nodes(self): return None
[docs]class NodeSetAll(NodeSet): def __init__(self, network): super(NodeSetAll, self).__init__({}, network)
[docs]def to_list(val): if isinstance(val, list): return val else: return [val]