Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -39,7 +39,7 @@ def calculate_probabilities(A, B, C, AB, AC, BC, ABC, U):
|
|
39 |
|
40 |
return formatted_probs
|
41 |
|
42 |
-
def plot_venn(A, B, C, AB, AC, BC, ABC
|
43 |
plt.figure(figsize=(8, 8))
|
44 |
subsets = {
|
45 |
'100': A - AB - AC + ABC,
|
@@ -59,29 +59,37 @@ def plot_venn(A, B, C, AB, AC, BC, ABC, U):
|
|
59 |
img = Image.open(buf)
|
60 |
return img
|
61 |
|
62 |
-
def suggest_intersections(A, B, C, AB, AC, BC, ABC
|
63 |
-
# Generar sugerencias válidas y sin valores negativos
|
64 |
max_AB = min(A, B)
|
65 |
max_AC = min(A, C)
|
66 |
max_BC = min(B, C)
|
67 |
max_ABC = min(max_AB, max_AC, max_BC)
|
68 |
|
|
|
|
|
|
|
|
|
|
|
69 |
suggestions = {
|
70 |
"Máximo valor sugerido para A ∩ B": max_AB,
|
|
|
71 |
"Máximo valor sugerido para A ∩ C": max_AC,
|
|
|
72 |
"Máximo valor sugerido para B ∩ C": max_BC,
|
|
|
73 |
"Máximo valor sugerido para A ∩ B ∩ C": max_ABC,
|
|
|
74 |
}
|
75 |
return suggestions
|
76 |
|
77 |
def main(A, B, C, AB, AC, BC, ABC, U):
|
78 |
errors = validate_inputs(A, B, C, AB, AC, BC, ABC, U)
|
79 |
if errors:
|
80 |
-
return None, {"error": "\n".join(errors), "sugerencias": suggest_intersections(A, B, C, AB, AC, BC, ABC
|
81 |
|
82 |
-
venn_diagram = plot_venn(A, B, C, AB, AC, BC, ABC
|
83 |
probabilities = calculate_probabilities(A, B, C, AB, AC, BC, ABC, U)
|
84 |
-
return venn_diagram, {"probabilidades": probabilities, "sugerencias": suggest_intersections(A, B, C, AB, AC, BC, ABC
|
85 |
|
86 |
iface = gr.Interface(
|
87 |
fn=main,
|
|
|
39 |
|
40 |
return formatted_probs
|
41 |
|
42 |
+
def plot_venn(A, B, C, AB, AC, BC, ABC):
|
43 |
plt.figure(figsize=(8, 8))
|
44 |
subsets = {
|
45 |
'100': A - AB - AC + ABC,
|
|
|
59 |
img = Image.open(buf)
|
60 |
return img
|
61 |
|
62 |
+
def suggest_intersections(A, B, C, AB, AC, BC, ABC):
|
|
|
63 |
max_AB = min(A, B)
|
64 |
max_AC = min(A, C)
|
65 |
max_BC = min(B, C)
|
66 |
max_ABC = min(max_AB, max_AC, max_BC)
|
67 |
|
68 |
+
min_AB = max(0, AB - ABC)
|
69 |
+
min_AC = max(0, AC - ABC)
|
70 |
+
min_BC = max(0, BC - ABC)
|
71 |
+
min_ABC = max(0, ABC)
|
72 |
+
|
73 |
suggestions = {
|
74 |
"Máximo valor sugerido para A ∩ B": max_AB,
|
75 |
+
"Mínimo valor sugerido para A ∩ B": min_AB,
|
76 |
"Máximo valor sugerido para A ∩ C": max_AC,
|
77 |
+
"Mínimo valor sugerido para A ∩ C": min_AC,
|
78 |
"Máximo valor sugerido para B ∩ C": max_BC,
|
79 |
+
"Mínimo valor sugerido para B ∩ C": min_BC,
|
80 |
"Máximo valor sugerido para A ∩ B ∩ C": max_ABC,
|
81 |
+
"Mínimo valor sugerido para A ∩ B ∩ C": min_ABC,
|
82 |
}
|
83 |
return suggestions
|
84 |
|
85 |
def main(A, B, C, AB, AC, BC, ABC, U):
|
86 |
errors = validate_inputs(A, B, C, AB, AC, BC, ABC, U)
|
87 |
if errors:
|
88 |
+
return None, {"error": "\n".join(errors), "sugerencias": suggest_intersections(A, B, C, AB, AC, BC, ABC)}
|
89 |
|
90 |
+
venn_diagram = plot_venn(A, B, C, AB, AC, BC, ABC)
|
91 |
probabilities = calculate_probabilities(A, B, C, AB, AC, BC, ABC, U)
|
92 |
+
return venn_diagram, {"probabilidades": probabilities, "sugerencias": suggest_intersections(A, B, C, AB, AC, BC, ABC)}
|
93 |
|
94 |
iface = gr.Interface(
|
95 |
fn=main,
|