4
4
from pathlib import Path
5
5
6
6
import pandas as pd
7
- import pytest
8
7
9
8
from tlo import Date , Simulation
10
9
from tlo .methods import (
@@ -67,6 +66,27 @@ def get_sim(seed, scaleup_hiv=False, scaleup_tb=False, scaleup_malaria=False, sc
67
66
return sim
68
67
69
68
69
+ def check_initial_params (sim ):
70
+
71
+ original_params = pd .read_excel (
72
+ os .path .join (resourcefilepath , "ResourceFile_HIV.xlsx" ),
73
+ sheet_name = "parameters" ,
74
+ )
75
+
76
+ # todo do we need to be exhaustive and check every parameter here?
77
+ # check initial parameters
78
+ assert sim .modules ["Hiv" ].parameters ["beta" ] == \
79
+ original_params .loc [original_params .parameter_name == "beta" , "value" ].values [0 ]
80
+ assert sim .modules ["Hiv" ].parameters ["prob_prep_for_fsw_after_hiv_test" ] == original_params .loc [
81
+ original_params .parameter_name == "prob_prep_for_fsw_after_hiv_test" , "value" ].values [0 ]
82
+ assert sim .modules ["Hiv" ].parameters ["prob_prep_for_agyw" ] == original_params .loc [
83
+ original_params .parameter_name == "prob_prep_for_agyw" , "value" ].values [0 ]
84
+ assert sim .modules ["Hiv" ].parameters ["probability_of_being_retained_on_prep_every_3_months" ] == original_params .loc [
85
+ original_params .parameter_name == "probability_of_being_retained_on_prep_every_3_months" , "value" ].values [0 ]
86
+ assert sim .modules ["Hiv" ].parameters ["prob_circ_after_hiv_test" ] == original_params .loc [
87
+ original_params .parameter_name == "prob_circ_after_hiv_test" , "value" ].values [0 ]
88
+
89
+
70
90
def test_hiv_scale_up (seed ):
71
91
""" test hiv program scale-up changes parameters correctly
72
92
and on correct date """
@@ -86,17 +106,7 @@ def test_hiv_scale_up(seed):
86
106
sim = get_sim (seed = seed , scaleup_hiv = True , scaleup_start_date = scaleup_start_date )
87
107
88
108
# check initial parameters
89
- # todo do we need to be exhaustive and check every parameter here?
90
- assert sim .modules ["Hiv" ].parameters ["beta" ] == \
91
- original_params .loc [original_params .parameter_name == "beta" , "value" ].values [0 ]
92
- assert sim .modules ["Hiv" ].parameters ["prob_prep_for_fsw_after_hiv_test" ] == original_params .loc [
93
- original_params .parameter_name == "prob_prep_for_fsw_after_hiv_test" , "value" ].values [0 ]
94
- assert sim .modules ["Hiv" ].parameters ["prob_prep_for_agyw" ] == original_params .loc [
95
- original_params .parameter_name == "prob_prep_for_agyw" , "value" ].values [0 ]
96
- assert sim .modules ["Hiv" ].parameters ["probability_of_being_retained_on_prep_every_3_months" ] == original_params .loc [
97
- original_params .parameter_name == "probability_of_being_retained_on_prep_every_3_months" , "value" ].values [0 ]
98
- assert sim .modules ["Hiv" ].parameters ["prob_circ_after_hiv_test" ] == original_params .loc [
99
- original_params .parameter_name == "prob_circ_after_hiv_test" , "value" ].values [0 ]
109
+ check_initial_params (sim )
100
110
101
111
# Make the population
102
112
sim .make_initial_population (n = popsize )
@@ -113,7 +123,7 @@ def test_hiv_scale_up(seed):
113
123
assert sim .modules ["Hiv" ].parameters ["prob_circ_after_hiv_test" ] == new_params .loc [
114
124
new_params .parameter == "prob_circ_after_hiv_test" , "scaleup_value" ].values [0 ]
115
125
116
- # check TB and malaria parameters unchanged
126
+ # check malaria parameters unchanged
117
127
mal_workbook = pd .read_excel (
118
128
os .path .join (resourcefilepath , "malaria/ResourceFile_Malaria.xlsx" ),
119
129
sheet_name = None ,
@@ -126,5 +136,94 @@ def test_hiv_scale_up(seed):
126
136
pd .testing .assert_series_equal (sim .modules ["Malaria" ].parameters ["rdt_testing_rates" ]["Rate_rdt_testing" ],
127
137
mal_rdt_testing ["Rate_rdt_testing" ])
128
138
139
+ # all irs coverage levels should be < 1.0
140
+ assert sim .modules ["Malaria" ].itn_irs ['irs_rate' ].all () < 1.0
141
+ # itn rates for 2019 onwards
142
+ assert sim .modules ["Malaria" ].parameters ["itn" ] == mal_original_params .loc [
143
+ mal_original_params .parameter_name == "itn" , "value" ].values [0 ]
144
+
145
+ # check tb parameters unchanged
146
+ tb_workbook = pd .read_excel (
147
+ os .path .join (resourcefilepath , "ResourceFile_TB.xlsx" ),
148
+ sheet_name = None ,
149
+ )
150
+ tb_original_params = tb_workbook ["parameters" ]
151
+ tb_testing = tb_workbook ["NTP2019" ]
152
+
153
+ pd .testing .assert_series_equal (sim .modules ["Tb" ].parameters ["rate_testing_active_tb" ]["treatment_coverage" ],
154
+ tb_testing ["treatment_coverage" ])
155
+ assert sim .modules ["Tb" ].parameters ["prob_tx_success_ds" ] == tb_original_params .loc [
156
+ tb_original_params .parameter_name == "prob_tx_success_ds" , "value" ].values [0 ]
157
+ assert sim .modules ["Tb" ].parameters ["prob_tx_success_mdr" ] == tb_original_params .loc [
158
+ tb_original_params .parameter_name == "prob_tx_success_mdr" , "value" ].values [0 ]
159
+ assert sim .modules ["Tb" ].parameters ["prob_tx_success_0_4" ] == tb_original_params .loc [
160
+ tb_original_params .parameter_name == "prob_tx_success_0_4" , "value" ].values [0 ]
161
+ assert sim .modules ["Tb" ].parameters ["prob_tx_success_5_14" ] == tb_original_params .loc [
162
+ tb_original_params .parameter_name == "prob_tx_success_5_14" , "value" ].values [0 ]
163
+ assert sim .modules ["Tb" ].parameters ["first_line_test" ] == tb_original_params .loc [
164
+ tb_original_params .parameter_name == "first_line_test" , "value" ].values [0 ]
165
+
166
+
167
+ def test_htm_scale_up (seed ):
168
+ """ test hiv/tb/malaria program scale-up changes parameters correctly
169
+ and on correct date """
170
+
171
+ workbook = pd .read_excel (
172
+ os .path .join (resourcefilepath , "ResourceFile_HIV.xlsx" ),
173
+ sheet_name = None ,
174
+ )
175
+
176
+ # Load data on HIV prevalence
177
+ original_params = workbook ["parameters" ]
178
+ new_params = workbook ["scaleup_parameters" ]
179
+ scaleup_start_date = Date (2011 , 1 , 1 )
180
+
181
+ popsize = 100
182
+
183
+ sim = get_sim (seed = seed , scaleup_hiv = True , scaleup_tb = True , scaleup_malaria = True ,
184
+ scaleup_start_date = scaleup_start_date )
185
+
186
+ # check initial parameters
187
+ check_initial_params (sim )
188
+
189
+ # Make the population
190
+ sim .make_initial_population (n = popsize )
191
+ sim .simulate (end_date = scaleup_start_date + pd .DateOffset (days = 1 ))
192
+
193
+ # check HIV parameters changed
194
+ assert sim .modules ["Hiv" ].parameters ["beta" ] < original_params .loc [original_params .parameter_name == "beta" , "value" ].values [0 ]
195
+ assert sim .modules ["Hiv" ].parameters ["prob_prep_for_fsw_after_hiv_test" ] == new_params .loc [
196
+ new_params .parameter == "prob_prep_for_fsw_after_hiv_test" , "scaleup_value" ].values [0 ]
197
+ assert sim .modules ["Hiv" ].parameters ["prob_prep_for_agyw" ] == new_params .loc [
198
+ new_params .parameter == "prob_prep_for_agyw" , "scaleup_value" ].values [0 ]
199
+ assert sim .modules ["Hiv" ].parameters ["probability_of_being_retained_on_prep_every_3_months" ] == new_params .loc [
200
+ new_params .parameter == "probability_of_being_retained_on_prep_every_3_months" , "scaleup_value" ].values [0 ]
201
+ assert sim .modules ["Hiv" ].parameters ["prob_circ_after_hiv_test" ] == new_params .loc [
202
+ new_params .parameter == "prob_circ_after_hiv_test" , "scaleup_value" ].values [0 ]
129
203
204
+ # check malaria parameters changed
205
+ assert sim .modules ["Malaria" ].parameters ["prob_malaria_case_tests" ] == new_params .loc [
206
+ new_params .parameter == "prob_malaria_case_tests" , "scaleup_value" ].values [0 ]
207
+ assert sim .modules ["Malaria" ].parameters ["rdt_testing_rates" ]["Rate_rdt_testing" ].eq (new_params .loc [
208
+ new_params .parameter == "rdt_testing_rates" , "scaleup_value" ].values [0 ]).all ()
209
+
210
+ # some irs coverage levels should now = 1.0
211
+ assert sim .modules ["Malaria" ].itn_irs ['irs_rate' ].any () == 1.0
212
+ # itn rates for 2019 onwards
213
+ assert sim .modules ["Malaria" ].parameters ["itn" ] == new_params .loc [
214
+ new_params .parameter == "itn" , "scaleup_value" ].values [0 ]
215
+
216
+ # check tb parameters changed
217
+ assert sim .modules ["Tb" ].parameters ["rate_testing_active_tb" ]["treatment_coverage" ].eq (new_params .loc [
218
+ new_params .parameter == "tb_treatment_coverage" , "scaleup_value" ].values [0 ]).all ()
219
+ assert sim .modules ["Tb" ].parameters ["prob_tx_success_ds" ] == new_params .loc [
220
+ new_params .parameter == "tb_prob_tx_success_ds" , "scaleup_value" ].values [0 ]
221
+ assert sim .modules ["Tb" ].parameters ["prob_tx_success_mdr" ] == new_params .loc [
222
+ new_params .parameter == "tb_prob_tx_success_mdr" , "scaleup_value" ].values [0 ]
223
+ assert sim .modules ["Tb" ].parameters ["prob_tx_success_0_4" ] == new_params .loc [
224
+ new_params .parameter == "tb_prob_tx_success_0_4" , "scaleup_value" ].values [0 ]
225
+ assert sim .modules ["Tb" ].parameters ["prob_tx_success_5_14" ] == new_params .loc [
226
+ new_params .parameter == "tb_prob_tx_success_5_14" , "scaleup_value" ].values [0 ]
227
+ assert sim .modules ["Tb" ].parameters ["first_line_test" ] == new_params .loc [
228
+ new_params .parameter == "first_line_test" , "scaleup_value" ].values [0 ]
130
229
0 commit comments