From 899aa9990b6b0e73a4d0ea4fa56793332d6d50db Mon Sep 17 00:00:00 2001 From: timofej Date: Sat, 19 Aug 2023 22:18:44 +0200 Subject: [PATCH] Fix window closing event --- examples/Simulate1Layer.py | 15 +++++++++------ neuropercolation/display.py | 25 +++++++++++++++++++++---- 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/examples/Simulate1Layer.py b/examples/Simulate1Layer.py index cdbe1f0..67adc50 100644 --- a/examples/Simulate1Layer.py +++ b/examples/Simulate1Layer.py @@ -9,15 +9,18 @@ Created on Fri Aug 18 19:05:04 2023 import numpy as np from neuropercolation import Simulate1Layer -eps_space = np.linspace(0.005,0.5,100) -for dim in range(4,10): +#eps_space = np.linspace(0.005,0.5,100) +eps_space = np.linspace(0.135,0.15,4) + +for dim in [49,100]: for eps in eps_space: eps = round(eps,3) Simulate1Layer(dim, eps, res=2, - path=f'/cloud/Public/_data/neuropercolation/1lay/dim={dim:02}/', - draw=None - ).run(evolutions_per_second=0, - last_evolution_step=100000) + path=f'/cloud/Public/_data/neuropercolation/1lay/steps=100000/dim={dim:02}/', + #draw=None + ).run(evolutions_per_second=30, + last_evolution_step=100000, + save_states=False) print(f'Done eps={eps:.3f} at dim={dim}') \ No newline at end of file diff --git a/neuropercolation/display.py b/neuropercolation/display.py index 9f9417e..6558317 100644 --- a/neuropercolation/display.py +++ b/neuropercolation/display.py @@ -17,6 +17,7 @@ limitations under the License. # pylint: disable=all import os +import sys import json import time import operator @@ -85,6 +86,7 @@ class Simulate1Layer: """ super().__init__(*args, **kwargs) self._cellular_automaton = Neurolattice(dim,eps) + self.__active = True self.__cell_size = [res,res] self.__dimension = dim self.__epsilon = eps @@ -113,7 +115,7 @@ class Simulate1Layer: else: self._append_activation() with contextlib.suppress(KeyboardInterrupt): - while self._not_at_the_end(last_evolution_step): + while self.__active and self._not_at_the_end(last_evolution_step): time_ca_start = time.time() self._cellular_automaton.evolve(evolutions_per_draw) if save_states: @@ -129,6 +131,11 @@ class Simulate1Layer: evolution_step=self._cellular_automaton.evolution_step, runlendig=len(str(last_evolution_step))) self._sleep_to_keep_rate(time.time() - time_ca_start, evolutions_per_second) + + for event in self.__draw_engine._pygame.event.get(): + if event.type == self.__draw_engine._pygame.QUIT: + self.__active = False + if self.__draw_engine is not None: try: self.__draw_engine._pygame.quit() @@ -239,6 +246,7 @@ class Simulate2Layers: """ super().__init__(*args, **kwargs) self._cellular_automaton = Neuropercolation(dim,eps) + self.__active = True self.__cell_size = [res,res] self.__dimension = dim self.__epsilon = eps @@ -269,7 +277,7 @@ class Simulate2Layers: else: self._append_activation() with contextlib.suppress(KeyboardInterrupt): - while self._not_at_the_end(last_evolution_step): + while self.__active and self._not_at_the_end(last_evolution_step): time_ca_start = time.time() self._cellular_automaton.evolve(evolutions_per_draw) if save_states: @@ -285,7 +293,11 @@ class Simulate2Layers: evolution_step=self._cellular_automaton.evolution_step, runlendig=len(str(last_evolution_step))) self._sleep_to_keep_rate(time.time() - time_ca_start, evolutions_per_second) - + + for event in self.__draw_engine._pygame.event.get(): + if event.type == self.__draw_engine._pygame.QUIT: + self.__active = False + if self.__draw_engine is not None: try: self.__draw_engine._pygame.quit() @@ -402,6 +414,7 @@ class Simulate4Layers: """ super().__init__(*args, **kwargs) self._cellular_automaton = NeuropercolationCoupled(dim,eps,coupling) + self.__active = True self.__cell_size = [res,res] self.__dimension = dim self.__epsilon = eps @@ -432,7 +445,7 @@ class Simulate4Layers: self._append_state() else: self._append_activation() - while self._not_at_the_end(last_evolution_step): + while self.__active and self._not_at_the_end(last_evolution_step): time_ca_start = time.time() self._cellular_automaton.evolve(evolutions_per_draw) if save_states: @@ -448,6 +461,10 @@ class Simulate4Layers: evolution_step=self._cellular_automaton.evolution_step, runlendig=len(str(last_evolution_step))) self._sleep_to_keep_rate(time.time() - time_ca_start, evolutions_per_second) + + for event in self.__draw_engine._pygame.event.get(): + if event.type == self.__draw_engine._pygame.QUIT: + self.__active = False if self.__draw_engine is not None: try: self.__draw_engine._pygame.quit()