diff --git a/cara/mc-output.py b/cara/mc-output.py index b6670e21..f7a1f5c5 100644 --- a/cara/mc-output.py +++ b/cara/mc-output.py @@ -11,9 +11,12 @@ from cara.model_scenarios import * -#print(np.mean(exposure_models_2[1].infection_probability())) -composite_plot_pi_vs_viral_load([exposure_models[1], exposure_models_2[1]], labels=['B.1.1.7 - Guideline', 'B.1.1.7 - w/o masks', 'label'], colors=['red', 'green', 'yellow']) -# plot_pi_vs_viral_load([shared_office_model[1]], labels=['Baseline, qID=60', 'HEPA, qID=60', 'No mask + windows closed, qID=60'],title='$P(I|qID)$ - Shared office scenario') +#print(np.mean(classroom_model_with_hepa.infection_probability())) +composite_plot_pi_vs_viral_load([shared_office_worst_model[1], shared_office_model[1],shared_office_better_model[1]], + labels=['No mask &\nwindows closed', 'Baseline', 'Baseline +\nHEPA filter'], + colors=['tomato', '#1f77b4', 'limegreen'], + title='$P(I|qID)$ vs $vl$ - Shared office scenario') +#plot_pi_vs_viral_load([shared_office_model[1]], labels=['Baseline, qID=60', 'HEPA, qID=60', 'No mask + windows closed, qID=60'],title='$P(I|qID)$ - Shared office scenario') #generate_cdf_curves_vs_qr(masked=False,qid=1000) diff --git a/cara/model_scenarios.py b/cara/model_scenarios.py index 9490461b..adce3a78 100644 --- a/cara/model_scenarios.py +++ b/cara/model_scenarios.py @@ -188,7 +188,7 @@ shared_office_model = [MCExposureModel( number=1, presence=models.SpecificInterval(((0, 2), (2.1, 4), (5, 7), (7.1, 9))), masked=True, - virus=MCVirus(halflife=1.35, qID=qid), + virus=MCVirus(halflife=3.8, qID=qid), expiratory_activity=4, samples=200000, breathing_category=1, @@ -214,7 +214,7 @@ shared_office_worst_model = [MCExposureModel( number=1, presence=models.SpecificInterval(((0, 2), (2.1, 4), (5, 7), (7.1, 9))), masked=False, - virus=MCVirus(halflife=1.35, qID=qid), + virus=MCVirus(halflife=3.8, qID=qid), expiratory_activity=4, samples=200000, breathing_category=1, @@ -232,15 +232,23 @@ shared_office_worst_model = [MCExposureModel( shared_office_better_model = [MCExposureModel( concentration_model=MCConcentrationModel( room=models.Room(volume=50), - ventilation=models.AirChange( - active=models.PeriodicInterval(period=120, duration=120), - air_exch=5., + ventilation=models.MultipleVentilation( + ventilations=( + models.SlidingWindow( + active=models.PeriodicInterval(period=120, duration=10), + inside_temp=models.PiecewiseConstant((0, 24), (293,)), + outside_temp=models.PiecewiseConstant((0, 24), (283,)), + window_height=1.6, opening_length=0.6, + ), + models.AirChange(active=models.PeriodicInterval(period=120, duration=120), + air_exch=5.) + ) ), infected=MCInfectedPopulation( number=1, presence=models.SpecificInterval(((0, 2), (2.1, 4), (5, 7), (7.1, 9))), masked=True, - virus=MCVirus(halflife=1.35, qID=qid), + virus=MCVirus(halflife=3.8, qID=qid), expiratory_activity=4, samples=200000, breathing_category=1, @@ -318,7 +326,7 @@ waiting_room_model = MCExposureModel( number=1, presence=models.SpecificInterval(((0, 2),)), masked=False, - virus=MCVirus(halflife=1.35, qID=60), + virus=MCVirus(halflife=3.8, qID=60), expiratory_activity=4, samples=200000, breathing_category=1, diff --git a/cara/montecarlo.py b/cara/montecarlo.py index dcbd40d4..9f1a74da 100644 --- a/cara/montecarlo.py +++ b/cara/montecarlo.py @@ -668,8 +668,11 @@ def composite_plot_pi_vs_viral_load(baselines: typing.List[MCExposureModel], lab axs[0, i + 2].set_xticks([]) axs[0, i + 2].set_xticklabels([]) axs[0, i + 2].set_xlabel(f"{np.round(np.mean(data) * 100, 1)}%") + axs[0, i + 2].set_facecolor("lightgrey") - axs[1, 0].hist(baselines[0].concentration_model.infected._generate_viral_loads(), bins=30, range=(2, 12)) + axs[1, 0].hist(baselines[0].concentration_model.infected._generate_viral_loads(), + bins=150, range=(2, 12), color='grey') + axs[1, 0].set_facecolor("lightgrey") axs[1, 0].set_yticks([]) axs[1, 0].set_yticklabels([]) axs[1, 0].set_xticks([i for i in range(2, 13, 2)]) @@ -679,9 +682,14 @@ def composite_plot_pi_vs_viral_load(baselines: typing.List[MCExposureModel], lab axs[0, 0].set_ylabel('Probability of infection') plt.suptitle(title) - axs[0, 0].text(11, -0.05, '(a)') - axs[1, 0].text(11, axs[1, 0].get_ylim()[1] * 0.8, '(b)') - axs[0, 2].text(axs[0, 2].get_xlim()[1] * 0.1, -0.05, '(c)') + axs[0, 0].text(11, -0.01, '$(i)$') + axs[1, 0].text(11, axs[1, 0].get_ylim()[1] * 0.8, '$(ii)$') + #axs[0, 2].text(axs[0, 2].get_xlim()[1] * 0.1, -0.05, '$(iii)$') + axs[0, 2].set_title('$(iii)$', fontsize=10) + + axs[0, 0].text(2.5, 0.4, '$vl_{crit2}=$', fontsize=10, color='tomato') + axs[0, 0].text(2.5, 0.3, '$vl_{crit2}=$', fontsize=10, color='#1f77b4') + axs[0, 0].text(2.5, 0.2, '$vl_{crit2}=$', fontsize=10, color='limegreen') if show_lines: middle_positions = [] @@ -691,9 +699,9 @@ def composite_plot_pi_vs_viral_load(baselines: typing.List[MCExposureModel], lab middle_positions.append(viral_loads[i]) break - axs[0, 0].vlines(middle_positions, colors=colors, linestyles=['dashed']*2, ymin=axs[0, 0].get_ylim()[0], - ymax=axs[0, 0].get_ylim()[1]) - axs[1, 0].vlines(middle_positions, colors=colors, linestyles=['dashed']*2, ymin=0, ymax=axs[1, 0].get_ylim()[1]) + axs[0, 0].vlines(middle_positions, colors=colors, linestyles=['dotted']*2, ymin=0.5*1.6, + ymax=0.5*0.4) + axs[1, 0].vlines(middle_positions, colors=colors, linestyles=['dotted']*2, ymin=0, ymax=axs[1, 0].get_ylim()[1]) axs[0, 0].legend() plt.show()