generated from UnBParadigmas2023-2/RepositorioTemplate
-
Notifications
You must be signed in to change notification settings - Fork 0
/
interface.py
70 lines (55 loc) · 2.31 KB
/
interface.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
import tkinter as tk
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from cell_model import ModeloSistemaImunologico
def executar_simulacao(escolha_virus):
num_celulas_imunes = 110
num_virus = 100
largura = 10
altura = 10
num_passos = 10
num_vacinas = 5
modelo = ModeloSistemaImunologico(num_celulas_imunes, num_virus, largura, altura,num_vacinas, escolha_virus)
for _ in range(num_passos):
modelo.step()
dados = modelo.datacollector.get_agent_vars_dataframe()
atualizar_grafico(dados)
determinar_vencedor(dados)
def atualizar_grafico(dados):
contagens = dados.groupby('Step').agg({'virus': 'sum', 'CelulasImunes': 'sum'})
ax.clear()
ax.plot(contagens.index, contagens['virus'], label='Vírus')
ax.plot(contagens.index, contagens['CelulasImunes'], label='Células Imunes')
ax.legend()
ax.grid(True, linestyle='--')
canvas.draw()
def determinar_vencedor(dados):
contagens_finais = dados.groupby('Step').agg({'virus': 'sum', 'CelulasImunes': 'sum'}).iloc[-1]
if contagens_finais['virus'] > contagens_finais['CelulasImunes']:
resultado_var.set("Resultado: O vírus venceu!")
elif contagens_finais['virus'] < contagens_finais['CelulasImunes']:
resultado_var.set("Resultado: As células imunes venceram!")
else:
resultado_var.set("Resultado: Empate!")
root = tk.Tk()
root.title("Simulação do Sistema Imunológico")
escolha_virus = tk.IntVar()
radio_virus_normal = tk.Radiobutton(root, text="Vírus Normal", variable=escolha_virus, value=0)
radio_virus_normal.pack()
radio_corote_23 = tk.Radiobutton(root, text="Corote-23 (potente)", variable=escolha_virus, value=1)
radio_corote_23.pack()
fig = Figure(figsize=(6, 4))
ax = fig.add_subplot(111)
canvas = FigureCanvasTkAgg(fig, master=root)
canvas_widget = canvas.get_tk_widget()
canvas_widget.pack(side=tk.TOP, fill=tk.BOTH, expand=True)
resultado_var = tk.StringVar()
resultado_label = tk.Label(root, textvariable=resultado_var)
resultado_label.pack()
btn_iniciar = tk.Button(root, text="Iniciar Simulação", command=lambda: executar_simulacao(escolha_virus.get()))
btn_iniciar.pack(side=tk.BOTTOM)
def sair():
root.destroy()
btn_sair = tk.Button(root, text="Sair", command=sair)
btn_sair.pack(side=tk.BOTTOM)
root.mainloop()