Source code for emodpy_hiv.demographics.library

from typing import List

from emodpy_hiv.demographics.hiv_demographics import HIVDemographics


[docs]def set_concurrency_parameters(demographics: HIVDemographics, relationship_type: str, risk_group: str, max_simul_rels_male: float = None, max_simul_rels_female: float = None, prob_xtra_rel_male: float = None, prob_xtra_rel_female: float = None, node_ids: List[int] = None) -> None: demographics.set_concurrency_params_by_type_and_risk(relationship_type=relationship_type, risk_group=risk_group, max_simul_rels_male=max_simul_rels_male, max_simul_rels_female=max_simul_rels_female, prob_xtra_rel_male=prob_xtra_rel_male, prob_xtra_rel_female=prob_xtra_rel_female, node_ids=node_ids)
[docs]def set_pair_formation_parameters(demographics: HIVDemographics, relationship_type: str, formation_rate: float = None, risk_assortivity: float = None, node_ids: List[int] = None) -> None: def _ra_matrix(v: float): if v is None: matrix = None elif v == -1: matrix = [[1, 1, 1], [1, 1, 1], [1, 1, 1]] else: matrix = [[v, 1 - v, 0], [1 - v, v, v], [0, v, 1 - v]] return matrix assortivity_matrix = _ra_matrix(v=risk_assortivity) demographics.set_pair_formation_parameters(relationship_type=relationship_type, formation_rate=formation_rate, assortivity_matrix=assortivity_matrix, node_ids=node_ids)
[docs]def set_relationship_parameters(demographics: HIVDemographics, relationship_type: str, coital_act_rate: float = None, condom_usage_min: float = None, condom_usage_mid: float = None, condom_usage_max: float = None, condom_usage_rate: float = None, duration_scale: float = None, duration_heterogeneity: float = None, node_ids: List[int] = None) -> None: demographics.set_relationship_parameters(relationship_type=relationship_type, coital_act_rate=coital_act_rate, condom_usage_min=condom_usage_min, condom_usage_mid=condom_usage_mid, condom_usage_max=condom_usage_max, condom_usage_rate=condom_usage_rate, duration_scale=duration_scale, duration_heterogeneity=duration_heterogeneity, node_ids=node_ids)
# # INITIAL IP DISTRIBUTION METHODS #
[docs]def set_initial_risk_distribution(demographics: HIVDemographics, initial_risk_distribution_low: float, node_ids: List[int] = None) -> None: def _risk_distribution(low: float): return None if low is None else [low, 1 - low, 0] distribution = _risk_distribution(low=initial_risk_distribution_low) demographics.add_or_update_initial_risk_distribution(distribution=distribution, node_ids=node_ids)
[docs]def set_initial_cascade_state_distribution(demographics: HIVDemographics, cascade_state_distribution: List[float], node_ids: List[int] = None) -> None: demographics.add_or_update_initial_cascade_state_distribution(distribution=cascade_state_distribution, node_ids=node_ids)
[docs]def set_initial_health_care_accessibility_distribution(demographics: HIVDemographics, initial_accessibility: float, node_ids: List[int] = None) -> None: distribution = [initial_accessibility, 1 - initial_accessibility] demographics.add_or_update_initial_health_care_accessibility_distribution(distribution=distribution, node_ids=node_ids)