5
5
from django .shortcuts import render
6
6
from django .db import IntegrityError
7
7
from django .contrib .auth .decorators import login_required
8
-
9
8
from qmratool .helper_functions import plot_comparison
9
+ from django .urls import reverse_lazy
10
+ from django .shortcuts import render , redirect
11
+ from .forms import *
12
+ from formtools .wizard .views import SessionWizardView
10
13
from .forms import RAForm , SourceWaterForm , TreatmentForm , ExposureForm
11
14
from .forms import LogRemovalForm , InflowForm , ComparisonForm
12
-
13
15
from .models import *
14
16
from django .utils .encoding import force_str
15
-
16
17
django .utils .encoding .force_text = force_str
17
-
18
18
from django_pandas .io import read_frame
19
19
from plotly .offline import plot
20
-
21
20
import numpy as np
22
21
import pandas as pd
23
22
import plotly .express as px
24
23
import plotly .graph_objs as go
25
24
import markdown2 as md
25
+ from django .contrib import messages
26
+ from django .contrib .auth import update_session_auth_hash
27
+ from django .contrib .auth .forms import PasswordChangeForm
28
+ from django .shortcuts import render , redirect
29
+
30
+
31
+
26
32
27
33
# Create your views here.
28
34
@@ -167,11 +173,6 @@ def new_assessment(request):
167
173
return render (request , "qmratool/new_ra.html" , {"form" : form , "content" : content })
168
174
169
175
170
- from django .urls import reverse_lazy
171
- from django .shortcuts import render , redirect
172
- from .forms import *
173
-
174
- from formtools .wizard .views import SessionWizardView
175
176
176
177
TEMPLATES = {
177
178
"0" : "qmratool/step1.html" ,
@@ -431,17 +432,40 @@ def calculate_risk(request, ra_id):
431
432
)
432
433
433
434
results_long = simulate_risk (ra )
435
+ #results_long["value"] = round(results_long["value"],1)
434
436
435
437
results_long ["pathogen" ] = results_long ["variable" ].str .split ("_" , expand = True )[0 ]
436
438
results_long ["stat" ] = results_long ["variable" ].str .split ("_" , expand = True )[1 ]
437
439
440
+
441
+
442
+
443
+
438
444
health = read_frame (Health .objects .all ())
439
445
results_long = pd .merge (results_long , health , on = "pathogen" )
440
446
results_long ["DALYs pppy" ] = (
441
447
results_long .value
442
448
* results_long .infection_to_illness .astype (float )
443
449
* results_long .dalys_per_case .astype (float )
444
450
)
451
+ summary = results_long .groupby (["pathogen" , "stat" ]).mean ()
452
+ risk = sum (summary ["value" ]> 10 ** - 4 ) > 0
453
+ dalyrisk = sum (summary ["DALYs pppy" ]> 10 ** - 6 ) > 0
454
+
455
+ if risk :
456
+ bgcolor = "rgba(245, 0, 0, 0.15)"
457
+ lcolor = "firebrick"
458
+ else :
459
+ bgcolor = None
460
+ lcolor = "#0003e2"
461
+
462
+ if dalyrisk :
463
+ dalybgcolor = "rgba(245, 0, 0, 0.15)"
464
+ dlcolor = "firebrick"
465
+ else :
466
+ dalybgcolor = None
467
+ dlcolor = "#0003e2"
468
+
445
469
446
470
risk_colors = ["#78BEF9" , "#8081F1" , "#5F60B3" ]
447
471
risk_colors_extended = [
@@ -463,37 +487,40 @@ def calculate_risk(request, ra_id):
463
487
log_y = True ,
464
488
title = "Risk as probability of infection per year" ,
465
489
color_discrete_sequence = risk_colors ,
490
+ hover_data = {'value' : ':.2e' }
466
491
)
467
492
468
493
fig .update_layout (
469
494
font_family = "Helvetica Neue, Helvetica, Arial, sans-serif" ,
470
495
font_color = "black" ,
496
+ plot_bgcolor = bgcolor ,
471
497
title = {"text" : "Risk assessment as probability of infection per year" },
472
498
xaxis_title = "" ,
473
499
yaxis_title = "Probability of infection per year" ,
474
500
# markersize= 12,
475
501
)
476
- fig .add_hline (y = 0.0001 , line_dash = "dashdot" , line = dict (color = "#0003e2" , width = 3 ))
502
+ fig .add_hline (y = 0.0001 , line_dash = "dashdot" , line = dict (color = lcolor , width = 3 ))
477
503
fig .update_layout (
504
+ # margin=dict(l=50, r=50, t=100, b=100), # Adjust the margins
478
505
legend = dict (
479
506
orientation = "h" ,
480
507
yanchor = "top" ,
481
508
# text= "Reference pathogen",
482
- y = - 0.1 ,
509
+ y = - 0.3 ,
483
510
xanchor = "left" ,
484
511
x = 0 ,
485
512
),
486
- annotations = [
487
- go .Annotation (
488
- y = - 4 ,
489
- x = 1.2 ,
490
- text = "Tolerable risk level of 1/10000 infections pppy" ,
491
- bgcolor = "#0003e2" ,
492
- bordercolor = "white" ,
493
- borderpad = 5 ,
494
- font = dict (color = "white" ),
495
- )
496
- ],
513
+ # annotations=[
514
+ # go.Annotation(
515
+ # y=-4,
516
+ # x=1.2,
517
+ # text="Tolerable risk level of 1/10000 infections pppy",
518
+ # bgcolor="#0003e2",
519
+ # bordercolor="white",
520
+ # borderpad=5,
521
+ # font=dict(color="white"),
522
+ # )
523
+ # ],
497
524
)
498
525
499
526
# fig.update_annotations(y = 0.0001, x = 1, text = "Tolerable risk level")
@@ -522,17 +549,18 @@ def calculate_risk(request, ra_id):
522
549
},
523
550
xaxis_title = "" ,
524
551
yaxis_title = "DALYs pppy" ,
525
- annotations = [
526
- go .Annotation (
527
- y = - 6 ,
528
- x = 1.2 ,
529
- text = "Tolerable risk level of 1µDALY pppy" ,
530
- bgcolor = "#0003e2" ,
531
- bordercolor = "white" ,
532
- borderpad = 5 ,
533
- font = dict (color = "white" ),
534
- )
535
- ]
552
+ plot_bgcolor = dalybgcolor ,
553
+ # annotations=[
554
+ # go.Annotation(
555
+ # y=-6,
556
+ # x=1.2,
557
+ # text="Tolerable risk level of 1µDALY pppy",
558
+ # bgcolor="#0003e2",
559
+ # bordercolor="white",
560
+ # borderpad=5,
561
+ # font=dict(color="white"),
562
+ # )
563
+ # ]
536
564
# markersize= 12,
537
565
)
538
566
@@ -541,12 +569,12 @@ def calculate_risk(request, ra_id):
541
569
orientation = "h" ,
542
570
yanchor = "top" ,
543
571
# text= "Reference pathogen",
544
- y = - 0.1 ,
572
+ y = - 0.3 ,
545
573
xanchor = "left" ,
546
574
x = 0 ,
547
575
)
548
576
)
549
- fig .add_hline (y = 0.000001 , line_dash = "dashdot" , line = dict (color = "#0003e2" , width = 3 ))
577
+ fig .add_hline (y = 0.000001 , line_dash = "dashdot" , line = dict (color = dlcolor , width = 3 ))
550
578
# annotation_text="tolerable risk level")
551
579
# annotation_position = "top left",
552
580
# annotation=dict(font_size=20, font_family="Times New Roman"))
@@ -641,6 +669,8 @@ def calculate_risk(request, ra_id):
641
669
"daly_plot" : daly_plot ,
642
670
"risk_plot" : risk_plot ,
643
671
"ra" : ra ,
672
+ "risk" : risk ,
673
+ "dalyrisk" : risk
644
674
},
645
675
)
646
676
@@ -701,10 +731,6 @@ def register(request):
701
731
return render (request , "qmratool/register.html" )
702
732
703
733
704
- from django .contrib import messages
705
- from django .contrib .auth import update_session_auth_hash
706
- from django .contrib .auth .forms import PasswordChangeForm
707
- from django .shortcuts import render , redirect
708
734
709
735
710
736
@login_required (login_url = "/login" )
0 commit comments