Skip to content

Supergroup

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.

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_spec property

group_subgroups_size property

member_ids 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
59
60
61
def clear(self):
    """ """
    self.members_by_id.clear()

for_geography() classmethod

Source code in june/groups/group/supergroup.py
105
106
107
108
109
110
@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
112
113
114
115
116
117
@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
45
46
47
48
49
50
51
52
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

(Default value = None)

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
78
79
80
81
82
def get_spec(self) -> str:
    """Returns the speciailization of the super group.

    """
    return re.sub(r"(?<!^)(?=[A-Z])", "_", self.__class__.__name__).lower()