Example #1
0
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()
Example #2
0
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)
Example #3
0
File: T3.py Project: pk-organics/T3
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()
Example #4
0
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)
Example #5
0
    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()
Example #6
0
#!/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)
Example #7
0
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)
Example #8
0
        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
Example #9
0
 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())