SynapseLauncher.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. from core.ConfigurationManager.BrainLoader import BrainLoader
  2. from core.NeuroneLauncher import NeuroneLauncher
  3. class SynapseNameNotFound(Exception):
  4. pass
  5. class SynapseLauncher(object):
  6. def __init__(self):
  7. pass
  8. @classmethod
  9. def start_synapse(cls, name, brain_file=None):
  10. """
  11. Start a synapse by it's name
  12. :param name: Name (Unique ID) of the synapse to launch
  13. :param brain_file: Brain file path to load instead of the default one
  14. """
  15. synapse_name_launch = name
  16. # get the brain
  17. if brain_file is None:
  18. brain = BrainLoader.get_brain()
  19. else:
  20. brain = BrainLoader.get_brain(file_path=brain_file)
  21. # check if we have found and launched the synapse
  22. synapse_launched = False
  23. for synapse in brain.synapses:
  24. if synapse.name == synapse_name_launch:
  25. cls._run_synapse(synapse)
  26. synapse_launched = True
  27. # we found the synapse, we don't need to check the rest of the list
  28. break
  29. if not synapse_launched:
  30. raise SynapseNameNotFound("The synapse name \"%s\" does not exist in the brain file" % name)
  31. @classmethod
  32. def _run_synapse(cls, synapse):
  33. """
  34. Start all neurons in the synapse
  35. :param synapse: Synapse for which we run neurons
  36. :return:
  37. """
  38. for neuron in synapse.neurons:
  39. NeuroneLauncher.start_neurone(neuron)
  40. return True