[docs]classRelationshipParameters(Updateable):def__init__(self,condom_usage:CondomUsageParameters=None,coital_act_rate:float=0,duration:Dict=None):""" A RelationshipParameters object defines basic attributes such as relationship duration, what happens if one member of a relationship migrates, and condom usage. https://docs.idmod.org/projects/emod-hiv/en/latest/parameter-demographics.html#relationship-parameters Args: condom_usage: a CondomUsageParameters object defining condom usage over time coital_act_rate: the probability of a coital act occurring at each time step duration: a (weibull) duration dict used for determining relationship duration """super().__init__()self.condom_usage=condom_usageifcondom_usageisnotNoneelseCondomUsageParameters()self.coital_act_rate=coital_act_rate# TODO: do we need to allow alteration of migration actions??self.migration_actions=["TERMINATE"]self.migration_actions_distribution=[1.0]# TODO: consider, is it ok for this to NOT be an Updateable? Or should the two contained params just be part of RelationshipParameters?default_duration=Distributions.weibull(weibull_lambda=0,weibull_kappa=0)self.duration=durationifdurationisnotNoneelsedefault_durationifself.duration['Distribution']!='WEIBULL_DISTRIBUTION':raiseValueError(f"Only weibull distributed relationship durations accepted. "f"Received: {self.duration['Distribution']}")