Source code for multipie.core.cmd

"""
Create command for model, matrix, and qtdraw.
"""

import os
import logging
from multipie.util.util import timer, read_dict_file, setup_logging
from multipie.core.material_model import MaterialModel


# ==================================================
[docs] def create_samb(models, topdir=None, verbose=False): """ Create SAMB. Args: models (str or [str] or dict or [dict]): model file name(s) or dict(s). topdir (str, optional): top directory. verbose (bool, optional): verbose ? Returns: - (bool) -- if no error occurs, return False. Note: - model name directory is created to store results in top directory. - if topdir is None, current directory is used. """ setup_logging() def create(mm, model): @timer(f"create model='{model["model"]}'", verbose=verbose) def create0(): mm.analyze(model) mm.save() mm.save_view() mm.save_pdf() create0() if topdir is not None: os.makedirs(topdir, exist_ok=True) models = list(read_dict_file(models, topdir, verbose).values()) mm = MaterialModel(topdir, verbose) for model in models: try: create(mm, model) except Exception: logging.exception("in create_samb") raise return False
# ==================================================
[docs] def create_samb_qtdraw(models, topdir=None, verbose=False): """ Create SAMB QtDraw file. Args: models (str or [str] or dict or [dict]): model name(s) or dict(s). topdir (str, optional): top directory. verbose (bool, optional): verbose ? Returns: - (bool) -- if no error occurs, return False. Note: - samb directory is created to store results in model directory. - if topdir is None, current directory is used, which should contain model directory. """ setup_logging() def create(mm): @timer(f"create SAMB QtDraw file for model='{mm["model"]}'", verbose=verbose) def create0(): mm.save_samb_qtdraw(verbose=verbose) create0() if topdir is None: topdir = os.getcwd() if not isinstance(models, (list, tuple)): models = [models] mm = MaterialModel(topdir, verbose=False) for model in models: if type(model) == dict: model = model["model"] try: mm.load(model) create(mm) except Exception: logging.exception("in create_samb_qtdraw") raise return False
# ==================================================
[docs] def create_samb_matrix(select_inputs, topdir=None, verbose=False): """ Create SAMB matrix (hr). Args: select_inputs (str or [str] or dict or [dict]): select input file name(s) or dict(s). topdir (str, optional): top directory. verbose (bool, optional): verbose ? Returns: - (bool) -- if no error occurs, return False. Note: - matrix (and hr) file is created in model directory. - if topdir is None, current directory is used, which should contain model directory. - if input does not have "parameter" key, hr.dat is not created. - if input does not have "select" key, all SAMBs are used. """ setup_logging() def create(mm, select, parameter): @timer(f"create matrix (hr) for model='{mm["model"]}'", verbose=verbose) def create0(): mm.save_samb_matrix(select, parameter=parameter, verbose=verbose) create0() select_inputs = list(read_dict_file(select_inputs, topdir=topdir, verbose=verbose).values()) mm = MaterialModel(topdir, verbose=False) for inp in select_inputs: model = inp["model"] select = inp.get("select", None) parameter = inp.get("parameter", None) try: mm.load(model) create(mm, select, parameter) except Exception as e: print(e) logging.exception("in create_samb_matrix") raise return False