A group containing a collection of groups of the same specification,
like households, carehomes, etc.
This class is meant to be used as template to inherit from, and it
integrates basic functionality like iteration, etc.
It also includes a method to delete information about people in the
groups.
Source code in june/groups/group/supergroup.py
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127 | class Supergroup:
"""A group containing a collection of groups of the same specification,
like households, carehomes, etc.
This class is meant to be used as template to inherit from, and it
integrates basic functionality like iteration, etc.
It also includes a method to delete information about people in the
groups.
"""
def __init__(self, members):
self.group_type = self.__class__.__name__
self.spec = self.get_spec()
self.members = members
self.members_by_id = self._make_member_ids_dict(members)
def _make_member_ids_dict(self, members):
"""Makes a dictionary with the ids of the members.
Args:
members:
"""
ret = OrderedDict()
for member in members:
ret[member.id] = member
return ret
def __iter__(self):
return iter(self.members)
def __len__(self):
return len(self.members)
def __getitem__(self, item):
return self.members[item]
def get_from_id(self, id):
"""
Args:
id:
"""
return self.members_by_id[id]
def __add__(self, supergroup: "Supergroup"):
for group in supergroup:
self.add(group)
return self
def clear(self):
""" """
self.members_by_id.clear()
def add(self, group):
"""
Args:
group:
"""
self.members_by_id[group.id] = group
self.members.append(group)
@property
def member_ids(self):
""" """
return list(self.members_by_id.keys())
def get_spec(self) -> str:
"""Returns the speciailization of the super group.
"""
return re.sub(r"(?<!^)(?=[A-Z])", "_", self.__class__.__name__).lower()
@property
def group_spec(self):
""" """
return self.members[0].spec
@property
def group_subgroups_size(self):
""" """
Nsubgroups = len(self.members[0].subgroups)
if self.spec in ["schools"]:
Nsubgroups = 2
subgroup_sizes = np.zeros(Nsubgroups)
for member in self.members:
if self.spec not in ["schools"]:
for sub_i in range(Nsubgroups):
subgroup_sizes[sub_i] += member.subgroups[sub_i].size
elif self.spec in ["schools"]:
subgroup_sizes[0] += member.n_teachers
subgroup_sizes[1] += member.n_pupils
return subgroup_sizes
@classmethod
def for_geography(cls):
""" """
raise NotImplementedError(
"Geography initialization not available for this supergroup."
)
@classmethod
def from_file(cls):
""" """
raise NotImplementedError(
"From file initialization not available for this supergroup."
)
@classmethod
def get_interaction(self, config_filename=None):
"""
Args:
config_filename: (Default value = None)
"""
self.venue_class.subgroup_params = SubgroupParams.from_file(config_filename)
|
group_subgroups_size
property
add(group)
Parameters:
Name |
Type |
Description |
Default |
group
|
|
|
required
|
Source code in june/groups/group/supergroup.py
63
64
65
66
67
68
69
70
71 | def add(self, group):
"""
Args:
group:
"""
self.members_by_id[group.id] = group
self.members.append(group)
|
clear()
Source code in june/groups/group/supergroup.py
| def clear(self):
""" """
self.members_by_id.clear()
|
for_geography()
classmethod
Source code in june/groups/group/supergroup.py
| @classmethod
def for_geography(cls):
""" """
raise NotImplementedError(
"Geography initialization not available for this supergroup."
)
|
from_file()
classmethod
Source code in june/groups/group/supergroup.py
| @classmethod
def from_file(cls):
""" """
raise NotImplementedError(
"From file initialization not available for this supergroup."
)
|
get_from_id(id)
Parameters:
Name |
Type |
Description |
Default |
id
|
|
|
required
|
Source code in june/groups/group/supergroup.py
| def get_from_id(self, id):
"""
Args:
id:
"""
return self.members_by_id[id]
|
get_interaction(config_filename=None)
classmethod
Parameters:
Name |
Type |
Description |
Default |
config_filename
|
|
|
None
|
Source code in june/groups/group/supergroup.py
119
120
121
122
123
124
125
126
127 | @classmethod
def get_interaction(self, config_filename=None):
"""
Args:
config_filename: (Default value = None)
"""
self.venue_class.subgroup_params = SubgroupParams.from_file(config_filename)
|
get_spec()
Returns the speciailization of the super group.
Source code in june/groups/group/supergroup.py
| def get_spec(self) -> str:
"""Returns the speciailization of the super group.
"""
return re.sub(r"(?<!^)(?=[A-Z])", "_", self.__class__.__name__).lower()
|