Skip to content

Immunity

Immunity

This class stores the "medical record" of the person, indicating which infections the person has recovered from.

Source code in june/epidemiology/infection/immunity.py
 1
 2
 3
 4
 5
 6
 7
 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
class Immunity:
    """This class stores the "medical record" of the person,
    indicating which infections the person has recovered from.

    """

    __slots__ = "susceptibility_dict", "effective_multiplier_dict"

    def __init__(
        self, susceptibility_dict: dict = None, effective_multiplier_dict: dict = None
    ):
        if susceptibility_dict:
            self.susceptibility_dict = susceptibility_dict
        else:
            self.susceptibility_dict = {}
        if effective_multiplier_dict:
            self.effective_multiplier_dict = effective_multiplier_dict
        else:
            self.effective_multiplier_dict = {}

    def add_immunity(self, infection_ids):
        """

        Args:
            infection_ids: 

        """
        for infection_id in infection_ids:
            self.susceptibility_dict[infection_id] = 0.0

    def add_multiplier(self, infection_id, multiplier):
        """

        Args:
            infection_id: 
            multiplier: 

        """
        self.effective_multiplier_dict[infection_id] = multiplier

    def get_susceptibility(self, infection_id):
        """

        Args:
            infection_id: 

        """
        return self.susceptibility_dict.get(infection_id, 1.0)

    def get_effective_multiplier(self, infection_id):
        """

        Args:
            infection_id: 

        """
        multiplier = self.effective_multiplier_dict.get(infection_id, 1.0)
        # Print statement for visualization
        '''print(
            f"Input: infection_id={infection_id} | "
            f"Multiplier Found: {'Yes' if infection_id in self.effective_multiplier_dict else 'No'} | "
            f"Effective Multiplier: {multiplier}"
        )'''
        return multiplier


    def serialise(self):
        """ """
        return (
            list(self.susceptibility_dict.keys()),
            list(self.susceptibility_dict.values()),
        )

    def is_immune(self, infection_id):
        """

        Args:
            infection_id: 

        """
        return self.susceptibility_dict.get(infection_id, 1.0) == 0.0

add_immunity(infection_ids)

Parameters:

Name Type Description Default
infection_ids
required
Source code in june/epidemiology/infection/immunity.py
21
22
23
24
25
26
27
28
29
def add_immunity(self, infection_ids):
    """

    Args:
        infection_ids: 

    """
    for infection_id in infection_ids:
        self.susceptibility_dict[infection_id] = 0.0

add_multiplier(infection_id, multiplier)

Parameters:

Name Type Description Default
infection_id
required
multiplier
required
Source code in june/epidemiology/infection/immunity.py
31
32
33
34
35
36
37
38
39
def add_multiplier(self, infection_id, multiplier):
    """

    Args:
        infection_id: 
        multiplier: 

    """
    self.effective_multiplier_dict[infection_id] = multiplier

get_effective_multiplier(infection_id)

Parameters:

Name Type Description Default
infection_id
required
Source code in june/epidemiology/infection/immunity.py
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
def get_effective_multiplier(self, infection_id):
    """

    Args:
        infection_id: 

    """
    multiplier = self.effective_multiplier_dict.get(infection_id, 1.0)
    # Print statement for visualization
    '''print(
        f"Input: infection_id={infection_id} | "
        f"Multiplier Found: {'Yes' if infection_id in self.effective_multiplier_dict else 'No'} | "
        f"Effective Multiplier: {multiplier}"
    )'''
    return multiplier

get_susceptibility(infection_id)

Parameters:

Name Type Description Default
infection_id
required
Source code in june/epidemiology/infection/immunity.py
41
42
43
44
45
46
47
48
def get_susceptibility(self, infection_id):
    """

    Args:
        infection_id: 

    """
    return self.susceptibility_dict.get(infection_id, 1.0)

is_immune(infection_id)

Parameters:

Name Type Description Default
infection_id
required
Source code in june/epidemiology/infection/immunity.py
74
75
76
77
78
79
80
81
def is_immune(self, infection_id):
    """

    Args:
        infection_id: 

    """
    return self.susceptibility_dict.get(infection_id, 1.0) == 0.0

serialise()

Source code in june/epidemiology/infection/immunity.py
67
68
69
70
71
72
def serialise(self):
    """ """
    return (
        list(self.susceptibility_dict.keys()),
        list(self.susceptibility_dict.values()),
    )