utils.py 1.1KB

12345678910111213141516171819202122232425262728293031323334353637
  1. class ChunkManager(object):
  2. def __init__(self, chunks_numbers: int):
  3. self._chunks_numbers = chunks_numbers
  4. def make_chunks(self, data: list) -> list:
  5. i, j, x = len(data), 0, []
  6. for k in range(self._chunks_numbers):
  7. a, j = j, j + (i + k) // self._chunks_numbers
  8. x.append(data[a:j])
  9. return x
  10. def get_mechanisms_classes(subject: 'Subject') -> ['Mechanisms']:
  11. mechanisms_classes = []
  12. for behaviour_class in subject.behaviours_classes:
  13. mechanisms_classes.extend(behaviour_class.use)
  14. return list(set(mechanisms_classes)) # Remove duplicates
  15. def initialize_subject(
  16. simulation: 'Simulation',
  17. subject: 'Subject',
  18. ) -> None:
  19. for mechanism_class in get_mechanisms_classes(subject):
  20. subject.mechanisms[mechanism_class] = mechanism_class(
  21. simulation=simulation,
  22. subject=subject,
  23. )
  24. for behaviour_class in subject.behaviours_classes:
  25. subject.behaviours[behaviour_class] = behaviour_class(
  26. simulation=simulation,
  27. subject=subject,
  28. )