BrainLoader.py 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. from YAMLLoader import YAMLLoader
  2. from core.ConfigurationManager.ConfigurationChecker import ConfigurationChecker
  3. from core.Models.Brain import Brain
  4. from core.Models.Event import Event
  5. from core.Models.Neurone import Neurone
  6. from core.Models.Order import Order
  7. from core.Models.Synapse import Synapse
  8. FILE_NAME = "brain.yml"
  9. class BrainLoader(YAMLLoader):
  10. def __init__(self, filename=None):
  11. self.fileName = filename
  12. if filename is None:
  13. self.fileName = FILE_NAME
  14. self.filePath = "../../" + self.fileName
  15. YAMLLoader.__init__(self, self.filePath)
  16. def get_config(self):
  17. return YAMLLoader.get_config(self)
  18. def get_events(self):
  19. events_in_brain = list()
  20. for el in self.get_config():
  21. whens = el["when"]
  22. for when in whens:
  23. # if key event exist in when of the task
  24. if 'event' in when:
  25. events_in_brain.append(when['event'])
  26. return events_in_brain
  27. def get_brain(self):
  28. # get the brain with dict
  29. dict_brain = self.get_config()
  30. # create a new brain
  31. brain = Brain()
  32. # create list of Synapse
  33. synapses = list()
  34. for synapes_dict in dict_brain:
  35. print synapes_dict
  36. if ConfigurationChecker().check_synape_dict(synapes_dict):
  37. print "synapes_dict ok"
  38. name = synapes_dict["name"]
  39. neurons = self._get_neurons(synapes_dict["neurons"])
  40. signals = self._get_signals(synapes_dict["signals"])
  41. new_synapse = Synapse(name=name, neurons=neurons, signals=signals)
  42. synapses.append(new_synapse)
  43. def _get_neurons(self, neurons_dict):
  44. """
  45. Get a list of Neuron object from a neuron dict
  46. :param neurons_dict:
  47. :return:
  48. """
  49. neurons = list()
  50. for neuron_dict in neurons_dict:
  51. print neuron_dict
  52. if ConfigurationChecker().check_neuron_dict(neuron_dict):
  53. print "Neurons dict ok"
  54. for neuron_name in neuron_dict:
  55. name = neuron_name
  56. parameters = neuron_dict[name]
  57. # print parameters
  58. new_neuron = Neurone(name=name, parameters=parameters)
  59. neurons.append(new_neuron)
  60. return neurons
  61. def _get_signals(self, signals_dict):
  62. print signals_dict
  63. signals = list()
  64. for signal_dict in signals_dict:
  65. if ConfigurationChecker().check_signal_dict(signal_dict):
  66. print "Signals dict ok"
  67. event_or_oder = self._get_event_or_order_from_dict(signal_dict)
  68. return signals
  69. @staticmethod
  70. def _get_event_or_order_from_dict(signal_or_event_dict):
  71. if 'event' in signal_or_event_dict:
  72. print "is event"
  73. event = signal_or_event_dict["event"]
  74. if ConfigurationChecker.check_event_dict(event):
  75. return Event(identifier=event["id"], period=event["period"])
  76. if 'order' in signal_or_event_dict:
  77. print "is order"
  78. if ConfigurationChecker.check_order_dict(signal_or_event_dict["order"]):
  79. return Order(signal_or_event_dict["order"])