hedtorresca commited on
Commit
85ec3d1
·
verified ·
1 Parent(s): 76ecd57

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +45 -0
app.py CHANGED
@@ -83,3 +83,48 @@ def calculate_probabilities(A, B, C, AB, AC, BC, ABC, U):
83
  # Convert to DataFrame for better visualization
84
  df = pd.DataFrame(list(formatted_probs.items()), columns=["Descripción", "Valor"])
85
  return df
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
83
  # Convert to DataFrame for better visualization
84
  df = pd.DataFrame(list(formatted_probs.items()), columns=["Descripción", "Valor"])
85
  return df
86
+
87
+ def draw_venn(A, B, C, AB, AC, BC, ABC):
88
+ plt.figure(figsize=(10,10))
89
+ venn = venn3(subsets=(A, B, AB, C, AC, BC, ABC), set_labels=('A', 'B', 'C'))
90
+ img = BytesIO()
91
+ plt.savefig(img, format='png')
92
+ img.seek(0)
93
+ image = Image.open(img)
94
+ return image
95
+
96
+ def main(A, B, C, AB, AC, BC, ABC, U):
97
+ errors = validate_inputs(A, B, C, AB, AC, BC, ABC, U)
98
+ if errors:
99
+ return f"Errores de validación: {', '.join(errors)}", None, None
100
+
101
+ suggestions = suggest_intersections(A, B, C, U)
102
+ probabilities_df = calculate_probabilities(A, B, C, AB, AC, BC, ABC, U)
103
+ venn_image = draw_venn(A, B, C, AB, AC, BC, ABC)
104
+
105
+ return suggestions, probabilities_df, venn_image
106
+
107
+ # Gradio Interface
108
+ interface = gr.Interface(
109
+ fn=main,
110
+ inputs=[
111
+ gr.inputs.Number(label="A"),
112
+ gr.inputs.Number(label="B"),
113
+ gr.inputs.Number(label="C"),
114
+ gr.inputs.Number(label="A ∩ B"),
115
+ gr.inputs.Number(label="A ∩ C"),
116
+ gr.inputs.Number(label="B ∩ C"),
117
+ gr.inputs.Number(label="A ∩ B ∩ C"),
118
+ gr.inputs.Number(label="U (Universal Set)")
119
+ ],
120
+ outputs=[
121
+ gr.outputs.JSON(label="Sugerencias de Intersección"),
122
+ gr.outputs.Dataframe(label="Tabla de Probabilidades"),
123
+ gr.outputs.Image(type="pil", label="Diagrama de Venn")
124
+ ],
125
+ title="Calculadora de Probabilidades y Diagrama de Venn",
126
+ description="Calcula las probabilidades, intersecciones sugeridas y genera un diagrama de Venn."
127
+ )
128
+
129
+ if __name__ == "__main__":
130
+ interface.launch()