def BuildSynapseAliases_(self): self.synapse_aliases = {} for name, spec in self.synapse_alias_definitions.items(): visited_aliases = set() synapse_subgroups = set() to_visit = list() to_visit.append(name) while to_visit: subgroup_name = to_visit.pop() if subgroup_name in visited_aliases: print "In synapse_alias %s:" % name print " Loop detected with subgroup %s" % subgroup_name return False if subgroup_name in self.synapse_groups: synapse_subgroups.add(self.synapse_groups[subgroup_name]) elif subgroup_name in self.synapse_alias_definitions: visited_aliases.add(subgroup_name) subgroups = self.synapse_alias_definitions[subgroup_name][ "subgroups"] to_visit = to_visit + subgroups else: print "In synapse_alias %s:" % name print " subgroup %s is neither an alias or group" % subgroup_name return False synapse_alias = (pyncs.SynapseAlias( pyncs.synapse_group_list(list(synapse_subgroups)))) self.synapse_aliases[str(name)] = synapse_alias return True
def BuildSynapseAliases_(self): self.synapse_aliases = {} for name, spec in self.synapse_alias_definitions.items(): visited_aliases = set() synapse_subgroups = set() to_visit = list() to_visit.append(name) while to_visit: subgroup_name = to_visit.pop() if subgroup_name in visited_aliases: print "In synapse_alias %s:" % name print " Loop detected with subgroup %s" % subgroup_name return False if subgroup_name in self.synapse_groups: synapse_subgroups.add(self.synapse_groups[subgroup_name]) elif subgroup_name in self.synapse_alias_definitions: visited_aliases.add(subgroup_name) subgroups = self.synapse_alias_definitions[subgroup_name]["subgroups"] to_visit = to_visit + subgroups else: print "In synapse_alias %s:" % name print " subgroup %s is neither an alias or group" % subgroup_name return False synapse_alias = ( pyncs.SynapseAlias(pyncs.synapse_group_list(list(synapse_subgroups))) ) self.synapse_aliases[str(name)] = synapse_alias return True
def init(self, argv): self.model_specification = pyncs.ModelSpecification() self.model_specification.thisown = False #self.model_specification.model_parameters = ( # pyncs.string_to_model_parameters_map(self.model_parameters) # ) neuron_group_map = {} for name, cell_group in self.cell_groups.items(): model_parameters = self.getNeuronParameters(cell_group.parameters) if not model_parameters: print "ModelParameters %s not found" % cell_group.parameters return False neuron_group = pyncs.NeuronGroup(cell_group.count, model_parameters, cell_group.geometry) cell_group.neuron_group = neuron_group neuron_group.thisown = False neuron_group_map[name] = neuron_group self.model_specification.neuron_groups = ( pyncs.string_to_neuron_group_map(neuron_group_map)) for name, alias in self.cell_aliases.items(): if not alias.resolved: if not self.resolveCellAlias_(alias): print "Failed to resolve CellAlias %s" % name return False neuron_groups = [x.neuron_group for x in alias.subgroups] neuron_group_list = pyncs.neuron_group_list(neuron_groups) alias.neuron_alias = pyncs.NeuronAlias(neuron_group_list) neuron_alias_map = { n: a.neuron_alias for n, a in self.cell_aliases.items() } self.model_specification.neuron_aliases = ( pyncs.string_to_neuron_alias_map(neuron_alias_map)) connection_map = {} for name, connection in self.connections.items(): if not connection.presynaptic.resolved: if not self.resolveCellAlias_(connection.presynaptic): print "Invalid presynaptic group in connection %s" % name return False if not connection.postsynaptic.resolved: if not self.resolveCellAlias_(connection.postsynaptic): print "Invalid postsynaptic group in connection %s" % name return False model_parameters = self.getSynapseParameters(connection.parameters) if not model_parameters: print "ModelParameters %s not found" % connection.parameters return False group = pyncs.neuron_group_list presynaptic_neuron_groups = [ x.neuron_group for x in connection.presynaptic.subgroups ] presynaptic = group( [x.neuron_group for x in connection.presynaptic.subgroups]) postsynaptic = group( [x.neuron_group for x in connection.postsynaptic.subgroups]) synapse_group = pyncs.SynapseGroup(presynaptic, postsynaptic, model_parameters, connection.probability) connection.synapse_group = synapse_group synapse_group.thisown = False connection_map[name] = synapse_group self.model_specification.synapse_groups = ( pyncs.string_to_synapse_group_map(connection_map)) for name, alias in self.connection_aliases.items(): if not alias.resolved: if not self.resolveConnectionAlias_(alias): print "Failed to resolve ConnectionAlias %s" % name return False synapse_groups = [x.synapse_group for x in alias.subgroups] synapse_group_list = pyncs.synapse_group_list(synapse_groups) alias.synapse_alias = pyncs.SynapseAlias(synapse_group_list) synapse_alias_map = { n: a.synapse_alias for n, a in self.connection_aliases.items() } self.model_specification.synapse_aliases = ( pyncs.string_to_synapse_alias_map(synapse_alias_map)) self.simulation = pyncs.Simulation(self.model_specification, self.simulaton_parameters) return self.simulation.init(pyncs.string_list(argv))
def init(self, argv): self.model_specification = pyncs.ModelSpecification() self.model_specification.thisown = False #self.model_specification.model_parameters = ( # pyncs.string_to_model_parameters_map(self.model_parameters) # ) neuron_group_map = {} for name, cell_group in self.cell_groups.items(): model_parameters = self.getNeuronParameters(cell_group.parameters) if not model_parameters: print "ModelParameters %s not found" % cell_group.parameters return False neuron_group = pyncs.NeuronGroup(cell_group.count, model_parameters, cell_group.geometry) cell_group.neuron_group = neuron_group neuron_group.thisown = False neuron_group_map[name] = neuron_group self.model_specification.neuron_groups = ( pyncs.string_to_neuron_group_map(neuron_group_map) ) for name, alias in self.cell_aliases.items(): if not alias.resolved: if not self.resolveCellAlias_(alias): print "Failed to resolve CellAlias %s" % name return False neuron_groups = [x.neuron_group for x in alias.subgroups] neuron_group_list = pyncs.neuron_group_list(neuron_groups) alias.neuron_alias = pyncs.NeuronAlias(neuron_group_list) neuron_alias_map = { n : a.neuron_alias for n, a in self.cell_aliases.items() } self.model_specification.neuron_aliases = ( pyncs.string_to_neuron_alias_map(neuron_alias_map) ) connection_map = {} for name, connection in self.connections.items(): if not connection.presynaptic.resolved: if not self.resolveCellAlias_(connection.presynaptic): print "Invalid presynaptic group in connection %s" % name return False if not connection.postsynaptic.resolved: if not self.resolveCellAlias_(connection.postsynaptic): print "Invalid postsynaptic group in connection %s" % name return False model_parameters = self.getSynapseParameters(connection.parameters) if not model_parameters: print "ModelParameters %s not found" % connection.parameters return False group = pyncs.neuron_group_list presynaptic_neuron_groups = [x.neuron_group for x in connection.presynaptic.subgroups] presynaptic = group([x.neuron_group for x in connection.presynaptic.subgroups]) postsynaptic = group([x.neuron_group for x in connection.postsynaptic.subgroups]) synapse_group = pyncs.SynapseGroup(presynaptic, postsynaptic, model_parameters, connection.probability) connection.synapse_group = synapse_group synapse_group.thisown = False connection_map[name] = synapse_group self.model_specification.synapse_groups = ( pyncs.string_to_synapse_group_map(connection_map) ) for name, alias in self.connection_aliases.items(): if not alias.resolved: if not self.resolveConnectionAlias_(alias): print "Failed to resolve ConnectionAlias %s" % name return False synapse_groups = [x.synapse_group for x in alias.subgroups] synapse_group_list = pyncs.synapse_group_list(synapse_groups) alias.synapse_alias = pyncs.SynapseAlias(synapse_group_list) synapse_alias_map = { n : a.synapse_alias for n, a in self.connection_aliases.items() } self.model_specification.synapse_aliases = ( pyncs.string_to_synapse_alias_map(synapse_alias_map) ) self.simulation = pyncs.Simulation(self.model_specification, self.simulaton_parameters) return self.simulation.init(pyncs.string_list(argv))