-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcosa_cva_comparison.py
86 lines (64 loc) · 3.29 KB
/
cosa_cva_comparison.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
"""This script generates a comparison of Concentration Variability Analysis results with the measured concentrations from Bennett et al., 2009.
The result is stored in a JSON file named cva_comparison.json.
"""
from helper import json_load, json_write
paper_data = json_load("resources/in_vivo_concentration_data/final_concentration_values_paper.json")
paper_data["nad_tcosa_c"] = {
"min": 2.32e-3,
"max": 2.8e-3,
}
paper_data["nadh_tcosa_c"] = {
"min": 5.45e-5,
"max": 1.27e-4,
}
paper_data["nadp_tcosa_c"] = {
"min": 1.4e-7,
"max": 3.11e-5,
}
paper_data["nadph_tcosa_c"] = {
"min": 1.1e-4,
"max": 1.34e-4,
}
comparison = {}
for target in ("OPTMDF", "OPTSUBMDF"):
cva_data = json_load(f"cosa/results_aerobic/cva_{target}_STANDARDCONC.json")
for metabolite_id in paper_data.keys():
if metabolite_id in ["h2o_c", "h2o_p", "h2o_e", "h_c", "h_p", "h_e"]:
continue
if "x_"+metabolite_id not in cva_data.keys():
print(f"INFO: Metabolite {metabolite_id} missing in CVA")
continue
if metabolite_id not in comparison.keys():
comparison[metabolite_id] = {}
if target not in comparison[metabolite_id].keys():
comparison[metabolite_id][target] = {}
is_fully_inside_everywhere = False
is_fully_inside_at_least_once = False
is_partly_inside_everywhere = True
is_partly_inside_at_least_once = False
defective_mus = []
min_differences = []
for growth_rate in cva_data["x_"+metabolite_id].keys():
min_paper = paper_data[metabolite_id]["min"]
min_cva = cva_data["x_"+metabolite_id][growth_rate]["min"]
max_paper = paper_data[metabolite_id]["max"]
max_cva = cva_data["x_"+metabolite_id][growth_rate]["max"]
if (min_cva >= min_paper) and (max_cva <= max_paper):
is_fully_inside_at_least_once = True
else:
is_fully_inside_everywhere = False
if ((min_cva >= min_paper) and (max_cva <= max_paper)) or ((min_cva <= min_paper) and (max_cva >= max_paper)) or ((min_cva <= min_paper) and (max_cva >= min_paper)) or ((min_paper <= max_paper) and (max_cva >= max_paper)):
is_partly_inside_at_least_once = True
else:
is_partly_inside_everywhere = False
defective_mus.append(growth_rate)
min_differences.append(min(abs(min_cva-min_paper), abs(min_cva-max_paper), abs(max_cva-max_paper), abs(max_cva-min_paper)))
# comparison[metabolite_id][target]["is_fully_inside_everywhere"] = is_fully_inside_everywhere
# comparison[metabolite_id][target]["is_fully_inside_at_least_once"] = is_fully_inside_at_least_once
comparison[metabolite_id][target]["is_partly_inside_everywhere"] = is_partly_inside_everywhere
comparison[metabolite_id][target]["is_partly_inside_at_least_once"] = is_partly_inside_at_least_once
comparison[metabolite_id][target]["defective_mus"] = defective_mus
comparison[metabolite_id][target]["min_differences"] = min_differences
if len(defective_mus) > 1:
print(f"INFO: {metabolite_id} has defective µ with max min difference of {max(min_differences)} M!")
json_write("./cosa/cva_comparison.json", comparison)