ConfigurationChecker.py 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. import re
  2. class NoSynapeName(Exception):
  3. pass
  4. class NoSynapeNeurons(Exception):
  5. pass
  6. class NoSynapeSignals(Exception):
  7. pass
  8. class NoValidSignal(Exception):
  9. pass
  10. class NoEventID(Exception):
  11. pass
  12. class NoEventPeriod(Exception):
  13. pass
  14. class MultipleSameSynapseName(Exception):
  15. pass
  16. class NotValidSynapseName(Exception):
  17. pass
  18. class ConfigurationChecker:
  19. def __init__(self):
  20. pass
  21. @staticmethod
  22. def check_synape_dict(synape_dict):
  23. if 'name' not in synape_dict:
  24. raise NoSynapeName("The Synapse does not have a name: %s" % synape_dict)
  25. if 'neurons' not in synape_dict:
  26. raise NoSynapeNeurons("The Synapse does not have neurons: %s" % synape_dict)
  27. if 'signals' not in synape_dict:
  28. raise NoSynapeSignals("The Synapse does not have signals: %s" % synape_dict)
  29. return True
  30. @staticmethod
  31. def check_neuron_dict(neuron_dict):
  32. # TODO check that the Neuron plugin exist
  33. return True
  34. @staticmethod
  35. def check_signal_dict(signal_dict):
  36. if ('event' not in signal_dict) and ('order' not in signal_dict):
  37. raise NoValidSignal("The signal is not an event or an order %s" % signal_dict)
  38. return True
  39. @staticmethod
  40. def check_event_dict(event_dict):
  41. print event_dict
  42. if event_dict is None:
  43. raise NoEventPeriod("Event must contain a period: %s" % event_dict)
  44. return True
  45. @staticmethod
  46. def check_order_dict(order_dict):
  47. if order_dict is not None:
  48. return True
  49. return False
  50. @staticmethod
  51. def check_synapes(synapses_list):
  52. """
  53. Check the synapse list is ok:
  54. - No double same name
  55. - No accent of special character
  56. :param synapses_list:
  57. :type synapses_list: list of Synapse
  58. :return:
  59. """
  60. seen = set()
  61. for synapse in synapses_list:
  62. # convert ascii to UTF-8
  63. synapse_name = synapse.name.encode('utf-8')
  64. if synapse_name in seen:
  65. raise MultipleSameSynapseName("Multiple synapse found with the same name: %s" % synapse_name)
  66. seen.add(synapse.name)
  67. if not re.match("^[a-zA-Z0-9_\s]*$", synapse.name):
  68. raise NotValidSynapseName("Synapse's name %s not valid." % synapse_name)
  69. return True