def test_minimal_example(): """Tests that the minimal example is functional (ARC is not being called)""" delete_minimal_example_dirs() functional_minimal_directory = os.path.join(DATA_BASE_PATH, 'functional_minimal_example') input_file = os.path.join(functional_minimal_directory, 'input.yml') input_dict = read_yaml_file(path=input_file) verbose = 20 input_dict['verbose'] = verbose input_dict['project_directory'] = functional_minimal_directory # check that RMG and ARC are available check_dependencies() # run the minimal example t3_object = T3(**input_dict) t3_object.execute() # check that the minimal example ran to completion by checking for existence of some files and directories assert os.path.isfile(os.path.join(functional_minimal_directory, 't3.log')) assert os.path.isdir(os.path.join(functional_minimal_directory, 'iteration_1')) assert os.path.isfile(os.path.join(functional_minimal_directory, 'iteration_1', 'RMG', 'chemkin', 'species_dictionary.txt')) assert os.path.isdir(os.path.join(functional_minimal_directory, 'iteration_2')) assert os.path.isfile(os.path.join(functional_minimal_directory, 'iteration_2', 'RMG', 'chemkin', 'species_dictionary.txt')) delete_minimal_example_dirs()
def test_no_t3_no_qm(): """Test proper execution of T3 without specifying neither of the t3 nor qm args""" rmg_args = {'database': {'thermo_libraries': ['primaryThermoLibrary', 'BurkeH2O2'], 'kinetics_libraries': ['BurkeH2O2inN2']}, 'species': [{'label': 'H2', 'smiles': '[H][H]', 'concentration': 0.67}, {'label': 'O2', 'smiles': '[O][O]', 'concentration': 0.33}], 'reactors': [{'type': 'gas batch constant T P', 'T': 1000, 'P': 1, 'termination_conversion': {'H2': 0.1}, 'termination_time': [1, 'ms']}], 'model': {'core_tolerance': 0.01}} t3_object = T3(project='T3_functional_test_1', rmg=rmg_args, clean_dir=True, ) t3_object.execute() with open(os.path.join(t3_object.project_directory, 't3.log'), 'r') as f: lines = f.readlines() for line in ['# The Tandem Tool (T3) #\n', 'Starting project T3_functional_test_1\n', 'T3 iteration 1:\n', ]: assert line in lines assert not any('T3 iteration 0:\n' in line for line in lines) assert any('T3 execution terminated' in line for line in lines) shutil.rmtree(t3_object.project_directory, ignore_errors=True)
def main() -> None: """ The main T3 executable function. """ args = parse_command_line_arguments() input_file = args.file project_directory = os.path.abspath(os.path.dirname(args.file)) input_dict = read_yaml_file(path=input_file) if 'project' not in list(input_dict.keys()): raise ValueError('A project name must be provided.') verbose = 20 if args.debug: verbose = 10 elif args.quiet: verbose = 30 input_dict['verbose'] = input_dict['verbose'] if 'verbose' in input_dict else verbose if 'project_directory' not in input_dict or not input_dict['project_directory']: input_dict['project_directory'] = project_directory # check that RMG and ARC are available check_dependencies() t3_object = T3(**input_dict) t3_object.execute()
def test_minimal_example(): """Tests that the minimal example is functional (ARC is not being called)""" input_file = os.path.join(functional_minimal_directory, 'input.yml') input_dict = read_yaml_file(path=input_file) verbose = 20 input_dict['verbose'] = verbose input_dict['project_directory'] = functional_minimal_directory # check that RMG and ARC are available check_dependencies() # run the minimal example t3_object = T3(**input_dict) t3_object.execute() # check that the minimal example ran to completion by checking for existence of some files and directories assert os.path.isfile(os.path.join(functional_minimal_directory, 't3.log')) assert os.path.isdir( os.path.join(functional_minimal_directory, 'iteration_0')) assert os.path.isfile( os.path.join(functional_minimal_directory, 'iteration_0', 'RMG', 'chemkin', 'species_dictionary.txt')) assert os.path.isdir( os.path.join(functional_minimal_directory, 'iteration_1')) assert os.path.isfile( os.path.join(functional_minimal_directory, 'iteration_1', 'RMG', 'chemkin', 'species_dictionary.txt')) # remove directories created by this functional test log_file = os.path.join(functional_minimal_directory, 't3.log') if os.path.isfile(log_file): os.remove(log_file) iteration_directories = [ os.path.join(functional_minimal_directory, f'iteration_{i}') for i in range(2) ] for iteration_dir in iteration_directories: if os.path.isdir(iteration_dir): shutil.rmtree(iteration_dir)
def execute(self): """ Execute APIOxy by calling T3 with the respective arguments. Todo: Make self.apioxy['run_in_parallel'] functional """ self.write_apioxy_input_file() for i, api_dict in enumerate(self.apioxy['api_structures']): rmg = self.rmg.copy() api_dict_copy = api_dict.copy() if self.apioxy['model_level'] != 0: # Rename the API so RMG won't H_abstract from the API (but only if level != 0) api_dict_copy['label'] = 'API' if 'seed_all_rads' not in api_dict_copy: api_dict_copy['seed_all_rads'] = ['radical', 'peroxyl'] self.set_species_constraints(api_dict_copy) rmg['species'].append(api_dict_copy) if len(self.apioxy['api_structures']) > 1: project = f"{i + 1}_{api_dict['label']}" project_directory = os.path.join( self.project_directory, f"{i + 1}_{api_dict['label']}") else: project = self.project project_directory = self.project_directory t3_object = T3( project=project, rmg=self.rmg, t3=self.t3, qm=self.qm, project_directory=project_directory, verbose=self.verbose, clean_dir=False, ) t3_object.execute() self.logger.log_footer()
#!/usr/bin/env python # -*- coding: utf-8 -*- """ カオス的な振る舞いのビークル実験用コード """ import sys, os sys.path.append(os.pardir) # 親ディレクトリのファイルをインポートするための設定 import numpy as np from t3 import T3 from alifebook_lib.simulators import VehicleSimulator simulator = VehicleSimulator(obstacle_num=0) t3 = T3(omega0=0.9, omega1=0.3, epsilon=0.1) t3.set_parameters(omega0=np.random.rand()) t3.set_parameters(omega1=np.random.rand()) while simulator: sensor_data = simulator.get_sensor_data() x, y = t3.next() left_wheel_speed = 50 * x right_wheel_speed = 50 * y action = [left_wheel_speed, right_wheel_speed] simulator.update(action)
import numpy as np from matplotlib import pyplot as plt from matplotlib import animation from t3 import T3 """ t3.pyの出力をプロットします. 実行するにはmatplotlibが必要です. インストール方法 $ pip install matplotlib """ fig = plt.figure() ax = plt.axes(xlim=(0, 1), ylim=(0, 1)) ax.set_xlim(0, 1) ax.set_ylim(0, 1) t3 = T3() def update(frame): ax.clear() d = np.array([t3.next() for i in range(1000)]) ax.scatter(d[:, 0], d[:, 1], s=1) ax.set_xlim(0, 1) ax.set_ylim(0, 1) return anim = animation.FuncAnimation(fig, update, interval=20, blit=False) plt.show(anim)
piece = t3.board[pos] if piece == ' ': w.setPropertyValue("text", str(pos)) else: w.setPropertyValue("text", str(piece).upper()) def showInfo(text): w = display.runtimeChildren().getChildByName("info") w.setPropertyValue("text", str(text)) t3 = display.getUserData("T3") if t3 is None: # Initialize new board t3 = T3() display.setUserData("T3", t3) showBoard(t3) else: # User entered a move pos = int(PVUtil.getString(pvs[0])) if not (0 <= pos < 9): showInfo("Field must be 0 .. 8") elif t3.board[pos] != ' ': showInfo("Field %d already occupied!" % pos) else: # Perform user's move t3.board[pos] = 'x' showBoard(t3) # Compute computer's move
def on_init(self): self.add_child_module('avoid', AvoidModule()) self.t3 = T3(omega0=0.9, omega1=0.3, epsilon=0.1) self.t3.set_parameters(omega0=np.random.rand()) self.t3.set_parameters(omega1=np.random.rand())