def main(weights, height, width, init_type=1, step_size=100): state = init_state(init_type, height, width) visualizer = MatrixVisualizer() for i in range(step_size): print(i) state = update_state(state, weights) visualizer.update(1 - state) input('enter to finish')
#!/usr/bin/env python # -*- coding: utf-8 -*- import sys, os sys.path.append(os.pardir) # 親ディレクトリのファイルをインポートするための設定 import numpy as np from alifebook_lib.visualizers import MatrixVisualizer import game_of_life_patterns # コピーした自分でいじるようのコード # visualizerの初期化 (Appendix参照) visualizer = MatrixVisualizer() WIDTH = 50 HEIGHT = 50 state = np.zeros((HEIGHT, WIDTH), dtype=np.int8) next_state = np.empty((HEIGHT, WIDTH), dtype=np.int8) # 初期化 ### ランダム ### # state = np.random.randint(2, size=(HEIGHT,WIDTH), dtype=np.int8) ### game_of_life_patterns.pyの中の各パターンを利用. 左上(2,2)の位置にセットする. ### # pattern = game_of_life_patterns.OSCILLATOR # pattern = game_of_life_patterns.STATIC # pattern = game_of_life_patterns.GLIDER pattern = game_of_life_patterns.GLIDER_GUN state[2:2 + pattern.shape[0], 2:2 + pattern.shape[1]] = pattern while visualizer: # visualizerはウィンドウが閉じられるとFalseを返す
#!/usr/bin/env python # -*- coding: utf-8 -*- """ Virgo, Nathaniel David. 2011 Thermodynamics and the structure of living systems """ import sys, os sys.path.append(os.pardir) # 親ディレクトリのファイルをインポートするための設定 import numpy as np from alifebook_lib.visualizers import MatrixVisualizer # visualizerの初期化 (Appendix参照) visualizer = MatrixVisualizer() # シミュレーションの各パラメタ X_SIZE = 200 Y_SIZE = 200 dx = 0.01 dt = 1 visualization_step = 16 # モデルの各パラメタ Da = 2e-5 Db = 1e-5 Dc = 1e-6 r = 0.0347 k_1 = 0.1 k_2 = 0.7 k_3 = 0.003 # 上記論文のオリジナルパラメタセット # k_1 = 0.2
#!/usr/bin/env python # -*- coding: utf-8 -*- """ Froese, Tom, Nathaniel Virgo, and Takashi Ikegami. 2014 Motility at the origin of life: Its characterization and a model """ import sys, os sys.path.append(os.pardir) # 親ディレクトリのファイルをインポートするための設定 import numpy as np from alifebook_lib.visualizers import MatrixVisualizer # visualizerの初期化 (Appendix参照) visualizer = MatrixVisualizer() # シミュレーションの各パラメタ X_SIZE = 256 Y_SIZE = 256 dx = 1 dt = 0.5 visualization_step = 32 # モデルの各パラメタ Da = 0.3 Db = 0.15 k = 0.0942 k_p = 0.0002 w = 0.015 r = 0.032 # 初期化 a = np.ones((X_SIZE, Y_SIZE))
#!/usr/bin/env python # -*- coding: utf-8 -*- import sys, os sys.path.append(os.pardir) # 親ディレクトリのファイルをインポートするための設定 import numpy as np from alifebook_lib.visualizers import MatrixVisualizer import game_of_life_patterns WIDTH = 110 HEIGHT = 110 # visualizerの初期化 (Appendix参照) visualizer = MatrixVisualizer(width=WIDTH * 6, height=HEIGHT * 6) state = np.zeros((HEIGHT, WIDTH), dtype=np.int8) next_state = np.empty((HEIGHT, WIDTH), dtype=np.int8) # 初期化 ### ランダム ### # state = np.random.randint(2, size=(HEIGHT,WIDTH), dtype=np.int8) ### game_of_life_patterns.pyの中の各パターンを利用. 左上(2,2)の位置にセットする. ### pattern = game_of_life_patterns.DOT # pattern = game_of_life_patterns.BITMAP state[2:2 + pattern.shape[0], 2:2 + pattern.shape[1]] = pattern visualizer.update(1 - state) # 1を黒, 0を白で表示する import time # time.sleep(10)
l1 = Letter() l2 = Letter() l3 = Letter() l4 = Letter() def gen_rands(): return np.random.randint(-5, 6) letter_height = l1.current_letter.shape[0] letter_width = l1.current_letter.shape[1] # visualizerの初期化 (Appendix参照) visualizer = MatrixVisualizer(width=WIDTH * 5, height=HEIGHT * 5) state = np.zeros((HEIGHT, WIDTH), dtype=np.int8) next_state = np.empty((HEIGHT, WIDTH), dtype=np.int8) # 初期化 bit_map_label_and_img = game_of_life_patterns.bit_map_label_and_img # l1_h_rand = gen_rands() # l1_w_rand = gen_rands() # l2_h_rand = gen_rands() # l2_w_rand = gen_rands() # l3_h_rand = gen_rands() # l3_w_rand = gen_rands() # l4_h_rand = gen_rands() # l4_w_rand = gen_rands()
import sys, os sys.path.append(os.pardir) # 親ディレクトリのファイルをインポートするための設定 import numpy as np from alifebook_lib.visualizers import MatrixVisualizer import game_of_life_patterns import time import cv2 from letter import Letter HEIGHT = 40 WIDTH = 70 # visualizerの初期化 (Appendix参照) visualizer = MatrixVisualizer(width=WIDTH * 10, height=HEIGHT * 10) print('resolution:', visualizer.render().shape) # 録画の設定 file_name = "scene3_variation_grows_1_toKanji" fourcc = cv2.VideoWriter_fourcc( *'mp4v') # SEE: https://gist.github.com/takuma7/44f9ecb028ff00e2132e out = cv2.VideoWriter( 'outputs/2018summer_art_project/{}.mp4'.format(file_name), fourcc, 30, (700, 400)) # 初期化 # bit_map_label_and_img = game_of_life_patterns.NUM_ALPH # bit_map_label_and_img = game_of_life_patterns.NUM_ALPH_KANA bit_map_label_and_img = game_of_life_patterns.NUM_ALPH_KANA_KANJI
for x in range(height): for y in range(width): img_pixels.append(img.getpixel((y, x))) img_pixels_norm = [] for i in range(height * width): p = img_pixels[i][0] if p == 0: img_pixels_norm.append(1.0) else: img_pixels_norm.append(0.) img_pixels_norm = np.array(img_pixels_norm).reshape(height, width) # visualizerの初期化 (Appendix参照) visualizer = MatrixVisualizer() # シミュレーションの各パラメタ SPACE_GRID_SIZE = height dx = 0.01 dt = 1 VISUALIZATION_STEP = 8 # 何ステップごとに画面を更新するか。 # モデルの各パラメタ Du = 2e-5 Dv = 1e-5 f, k = 0.04, 0.06 # amorphous #f, k = 0.035, 0.065 # spots # f, k = 0.012, 0.05 # wandering bubbles #f, k = 0.025, 0.05 # waves #f, k = 0.022, 0.051 # stripe
#!/usr/bin/env python # -*- coding: utf-8 -*- import sys, os sys.path.append(os.pardir) # 親ディレクトリのファイルをインポートするための設定 import numpy as np from alifebook_lib.visualizers import MatrixVisualizer # visualizerの初期化。表示領域のサイズを与える。 visualizer = MatrixVisualizer(600, 600) # シミュレーションの各パラメタ VISUALIZATION_TIME = 256 # size of visualized time duration = visualization height SPACE_SIZE = 256 # size of 1D space = visualization width dx = 0.01 dt = 1 visualization_step = 1 # モデルの各パラメタ Du = 2e-5 Dv = 1e-5 f, k = 0.018, 0.077 # 初期化 u = np.zeros((VISUALIZATION_TIME, SPACE_SIZE)) v = np.zeros((VISUALIZATION_TIME, SPACE_SIZE)) INIT_PATTERN_SIZE = 20 u[0, :] = 1.0 v[0, :] = 0.0 u[0, SPACE_SIZE // 2 - INIT_PATTERN_SIZE // 2:SPACE_SIZE // 2 + INIT_PATTERN_SIZE // 2] = 0.5