Skip to content

Interaction policies

InteractionPolicies

Bases: PolicyCollection

Source code in june/policy/interaction_policies.py
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
class InteractionPolicies(PolicyCollection):
    """ """
    policy_type = "interaction"

    def apply(self, date: datetime, interaction: Interaction):        
        """

        Args:
            date (datetime): 
            interaction (Interaction): 

        """
        # Get active policies
        active_policies = self.get_active(date)

        # Initialise beta reductions
        beta_reductions = defaultdict(lambda: 1.0)

        # Apply active policies and update beta reductions
        for policy in active_policies:
            beta_reductions_dict = policy.apply()

            for group in beta_reductions_dict:
                beta_reductions[group] *= beta_reductions_dict[group]

        # Assign final reductions to the interaction
        interaction.beta_reductions = beta_reductions

apply(date, interaction)

Parameters:

Name Type Description Default
date datetime
required
interaction Interaction
required
Source code in june/policy/interaction_policies.py
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
def apply(self, date: datetime, interaction: Interaction):        
    """

    Args:
        date (datetime): 
        interaction (Interaction): 

    """
    # Get active policies
    active_policies = self.get_active(date)

    # Initialise beta reductions
    beta_reductions = defaultdict(lambda: 1.0)

    # Apply active policies and update beta reductions
    for policy in active_policies:
        beta_reductions_dict = policy.apply()

        for group in beta_reductions_dict:
            beta_reductions[group] *= beta_reductions_dict[group]

    # Assign final reductions to the interaction
    interaction.beta_reductions = beta_reductions

InteractionPolicy

Bases: Policy

Source code in june/policy/interaction_policies.py
 8
 9
10
class InteractionPolicy(Policy):
    """ """
    policy_type = "interaction"

MaskWearing

Bases: InteractionPolicy

Source code in june/policy/interaction_policies.py
 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
class MaskWearing(InteractionPolicy):
    """ """
    policy_subtype = "beta_factor"

    def __init__(
        self,
        start_time: str,
        end_time: str,
        compliance: float,
        beta_factor: float,
        mask_probabilities: dict = None,
    ):
        super().__init__(start_time, end_time)
        self.compliance = compliance
        self.beta_factor = beta_factor
        self.mask_probabilities = mask_probabilities

    def apply(self):
        """Implement mask wearing policy

        -----------
        Parameters:
        betas: e.g. (dict) from DefaultInteraction, e.g. DefaultInteraction.from_file(selector=selector).beta

        Assumptions:
        - Currently we assume that mask wearing is implemented in a similar way to social distanding
          but with a mean field effect in beta reduction
        - Currently we assume that the changes are group dependent


        """
        ret = {}
        for key, value in self.mask_probabilities.items():
            ret[key] = 1 - (value * self.compliance * (1 - self.beta_factor))
        return ret

apply()

Implement mask wearing policy


Parameters: betas: e.g. (dict) from DefaultInteraction, e.g. DefaultInteraction.from_file(selector=selector).beta

Assumptions: - Currently we assume that mask wearing is implemented in a similar way to social distanding but with a mean field effect in beta reduction - Currently we assume that the changes are group dependent

Source code in june/policy/interaction_policies.py
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
def apply(self):
    """Implement mask wearing policy

    -----------
    Parameters:
    betas: e.g. (dict) from DefaultInteraction, e.g. DefaultInteraction.from_file(selector=selector).beta

    Assumptions:
    - Currently we assume that mask wearing is implemented in a similar way to social distanding
      but with a mean field effect in beta reduction
    - Currently we assume that the changes are group dependent


    """
    ret = {}
    for key, value in self.mask_probabilities.items():
        ret[key] = 1 - (value * self.compliance * (1 - self.beta_factor))
    return ret

SocialDistancing

Bases: InteractionPolicy

Source code in june/policy/interaction_policies.py
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
class SocialDistancing(InteractionPolicy):
    """ """
    policy_subtype = "beta_factor"

    def __init__(self, start_time: str, end_time: str, beta_factors: dict = None):
        super().__init__(start_time, end_time)
        self.beta_factors = beta_factors

    def apply(self):        
        """Implement social distancing policy

        -----------
        Parameters:
        betas: e.g. (dict) from DefaultInteraction, e.g. DefaultInteraction.from_file(selector=selector).beta

        Assumptions:
        - Currently we assume that social distancing is implemented first and this affects all
          interactions and intensities globally
        - Currently we assume that the changes are not group dependent
        TODO:
        - Implement structure for people to adhere to social distancing with a certain compliance
        - Check per group in config file


        """
        return self.beta_factors

apply()

Implement social distancing policy


Parameters: betas: e.g. (dict) from DefaultInteraction, e.g. DefaultInteraction.from_file(selector=selector).beta

Assumptions: - Currently we assume that social distancing is implemented first and this affects all interactions and intensities globally - Currently we assume that the changes are not group dependent TODO: - Implement structure for people to adhere to social distancing with a certain compliance - Check per group in config file

Source code in june/policy/interaction_policies.py
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
def apply(self):        
    """Implement social distancing policy

    -----------
    Parameters:
    betas: e.g. (dict) from DefaultInteraction, e.g. DefaultInteraction.from_file(selector=selector).beta

    Assumptions:
    - Currently we assume that social distancing is implemented first and this affects all
      interactions and intensities globally
    - Currently we assume that the changes are not group dependent
    TODO:
    - Implement structure for people to adhere to social distancing with a certain compliance
    - Check per group in config file


    """
    return self.beta_factors