def main(): """ Main *boilerplate* function to start simulation """ # Now let's make use of logging logger = logging.getLogger() # Create folders for data and plots folder = os.path.join(os.getcwd(), 'experiments', 'ca_patterns_pypet') if not os.path.isdir(folder): os.makedirs(folder) filename = os.path.join(folder, 'all_patterns.hdf5') # Create an environment env = Environment(trajectory='cellular_automata', multiproc=True, ncores=4, wrap_mode='QUEUE', filename=filename, overwrite_file=True) # extract the trajectory traj = env.traj traj.par.ncells = Parameter('ncells', 400, 'Number of cells') traj.par.steps = Parameter('steps', 250, 'Number of timesteps') traj.par.rule_number = Parameter('rule_number', 30, 'The ca rule') traj.par.initial_name = Parameter('initial_name', 'random', 'The type of initial state') traj.par.seed = Parameter('seed', 100042, 'RNG Seed') # Explore exp_dict = { 'rule_number': [10, 30, 90, 110, 184], 'initial_name': ['single', 'random'], } # # You can uncomment the ``exp_dict`` below to see that changing the # # exploration scheme is now really easy: # exp_dict = {'rule_number' : [10, 30, 90, 110, 184], # 'ncells' : [100, 200, 300], # 'seed': [333444555, 123456]} exp_dict = cartesian_product(exp_dict) traj.f_explore(exp_dict) # Run the simulation logger.info('Starting Simulation') env.run(wrap_automaton) # Load all data traj.f_load(load_data=2) logger.info('Printing data') for idx, run_name in enumerate(traj.f_iter_runs()): # Plot all patterns filename = os.path.join(folder, make_filename(traj)) plot_pattern(traj.crun.pattern, traj.rule_number, filename) progressbar(idx, len(traj), logger=logger) # Finally disable logging and close all log-files env.disable_logging()
def main(): """ Main *boilerplate* function to start simulation """ # Now let's make use of logging logger = logging.getLogger() # Create folders for data and plots folder = os.path.join(os.getcwd(), 'experiments', 'ca_patterns_pypet') if not os.path.isdir(folder): os.makedirs(folder) filename = os.path.join(folder, 'all_patterns.hdf5') # Create an environment env = Environment(trajectory='cellular_automata', multiproc=True, ncores=4, wrap_mode='QUEUE', filename=filename, overwrite_file=True) # extract the trajectory traj = env.traj traj.v_lazy_adding = True traj.par.ncells = 400, 'Number of cells' traj.par.steps = 250, 'Number of timesteps' traj.par.rule_number = 30, 'The ca rule' traj.par.initial_name = 'random', 'The type of initial state' traj.par.seed = 100042, 'RNG Seed' # Explore exp_dict = {'rule_number' : [10, 30, 90, 110, 184], 'initial_name' : ['single', 'random'],} # # You can uncomment the ``exp_dict`` below to see that changing the # # exploration scheme is now really easy: # exp_dict = {'rule_number' : [10, 30, 90, 110, 184], # 'ncells' : [100, 200, 300], # 'seed': [333444555, 123456]} exp_dict = cartesian_product(exp_dict) traj.f_explore(exp_dict) # Run the simulation logger.info('Starting Simulation') env.run(wrap_automaton) # Load all data traj.f_load(load_data=2) logger.info('Printing data') for idx, run_name in enumerate(traj.f_iter_runs()): # Plot all patterns filename = os.path.join(folder, make_filename(traj)) plot_pattern(traj.crun.pattern, traj.rule_number, filename) progressbar(idx, len(traj), logger=logger) # Finally disable logging and close all log-files env.disable_logging()
def main(): """ Main simulation function """ rules_to_test = [10, 30, 90, 110, 184] # rules we want to explore: steps = 250 # cell iterations ncells = 400 # number of cells seed = 100042 # RNG seed initial_states = ['single', 'random'] # Initial states we want to explore # create a folder for the plots and the data folder = os.path.join(os.getcwd(), 'experiments', 'ca_patterns_original') if not os.path.isdir(folder): os.makedirs(folder) filename = os.path.join(folder, 'all_patterns.p') print('Computing all patterns') all_patterns = [] # list containing the simulation results for idx, rule_number in enumerate(rules_to_test): # iterate over all rules for initial_name in initial_states: # iterate over the initial states # make the initial state initial_state = make_initial_state(initial_name, ncells, seed=seed) # simulate the automaton pattern = cellular_automaton_1D(initial_state, rule_number, steps) # keep the resulting pattern all_patterns.append((rule_number, initial_name, pattern)) # Print a progressbar, because I am always impatient # (ok that's already from pypet, but it's really handy!) progressbar(idx, len(rules_to_test), reprint=True) # Store all patterns to disk with open(filename, 'wb') as file: pickle.dump(all_patterns, file=file) # Finally print all patterns print('Plotting all patterns') for idx, pattern_tuple in enumerate(all_patterns): rule_number, initial_name, pattern = pattern_tuple # Plot the pattern filename = os.path.join( folder, 'rule_%s_%s.png' % (str(rule_number), initial_name)) plot_pattern(pattern, rule_number, filename) progressbar(idx, len(all_patterns), reprint=True)
def main(): """ Main simulation function """ rules_to_test = [10, 30, 90, 110, 184] # rules we want to explore: steps = 250 # cell iterations ncells = 400 # number of cells seed = 100042 # RNG seed initial_states = ['single', 'random'] # Initial states we want to explore # create a folder for the plots and the data folder = os.path.join(os.getcwd(), 'experiments', 'ca_patterns_original') if not os.path.isdir(folder): os.makedirs(folder) filename = os.path.join(folder, 'all_patterns.p') print('Computing all patterns') all_patterns = [] # list containing the simulation results for idx, rule_number in enumerate(rules_to_test): # iterate over all rules for initial_name in initial_states: # iterate over the initial states # make the initial state initial_state = make_initial_state(initial_name, ncells, seed=seed) # simulate the automaton pattern = cellular_automaton_1D(initial_state, rule_number, steps) # keep the resulting pattern all_patterns.append((rule_number, initial_name, pattern)) # Print a progressbar, because I am always impatient # (ok that's already from pypet, but it's really handy!) progressbar(idx, len(rules_to_test), reprint=True) # Store all patterns to disk with open(filename, 'wb') as file: pickle.dump(all_patterns, file=file) # Finally print all patterns print('Plotting all patterns') for idx, pattern_tuple in enumerate(all_patterns): rule_number, initial_name, pattern = pattern_tuple # Plot the pattern filename = os.path.join(folder, 'rule_%s_%s.png' % (str(rule_number), initial_name)) plot_pattern(pattern, rule_number, filename) progressbar(idx, len(all_patterns), reprint=True)
def test_progress(): print('\n\n') total = 100 for irun in range(total): time.sleep(0.1) progressbar(irun, total)