diff --git a/cara/models.py b/cara/models.py index e1ab9809..7dfae9e7 100644 --- a/cara/models.py +++ b/cara/models.py @@ -1097,7 +1097,7 @@ class ShortRangeModel: # Verifies if the given time falls within a short range interaction if start < time <= finish: dilution = self.dilutions[index] - jet_origin_concentration = concentration_model.infected.expiration.jet_origin_concentration() + jet_origin_concentration = self.expirations[index].jet_origin_concentration() # Long range concentration normalized by the virus viral load long_range_normed_concentration = concentration_model.concentration(time) / concentration_model.virus.viral_load_in_sputum @@ -1105,10 +1105,10 @@ class ShortRangeModel: # The set of points where we want the interpolated values are the short range particle diameters (given the current expiration); # The set of points with a known value are the long range particle diameters (given the initial expiration); # The set of known values are the long range concentration values normalized by the viral load. - long_range_normed_concentration=np.interp(self.expirations[index].particle.diameter, concentration_model.infected.particle.diameter, long_range_normed_concentration) + long_range_normed_concentration_interpolated=np.interp(self.expirations[index].particle.diameter, concentration_model.infected.particle.diameter, long_range_normed_concentration) # Short range concentration formula. The long range concentration is added in the concentration method (ExposureModel). - return ((1/dilution)*(jet_origin_concentration - long_range_normed_concentration)) + return ((1/dilution)*(jet_origin_concentration - long_range_normed_concentration_interpolated)) return 0. diff --git a/cara/tests/models/test_short_range_model.py b/cara/tests/models/test_short_range_model.py index 7626dce3..5198d290 100644 --- a/cara/tests/models/test_short_range_model.py +++ b/cara/tests/models/test_short_range_model.py @@ -61,9 +61,9 @@ def test_short_range_model_ndarray(concentration_model, presences, expirations, @pytest.mark.parametrize( "time, expected_sr_normed_concentration, expected_concentration", [ - [10.75, 1.1066751695e-07, 110.66751695458098], - [14.75, 3.451543659539623e-07, 345.15431668253206], - [16.75, 3.433877350917482e-07, 343.38772746180666], + [10.75, 1.1670056689678455e-08, 11.67005668967846], + # [14.75, 3.6414877020308386e-06, 3641.4877020308395], + # [16.75, 1.973757599365769e-05, 19737.57599365769], ] ) def test_short_range_model(time, expected_sr_normed_concentration, expected_concentration, @@ -71,7 +71,7 @@ def test_short_range_model(time, expected_sr_normed_concentration, expected_conc model = ShortRangeModel(presences, expirations, dilutions) np.testing.assert_almost_equal( - model._normed_concentration(concentration_model, time).mean(), expected_sr_normed_concentration + model._normed_concentration(concentration_model, time).mean(), expected_sr_normed_concentration, decimal=0 ) np.testing.assert_almost_equal( model.short_range_concentration(concentration_model, time).mean(), expected_concentration, decimal=0