Source code for sfsimodels.build_model_descriptions

from sfsimodels import models
from sfsimodels import properties
from sfsimodels import exceptions
from collections import OrderedDict
vp = properties.pp


[docs]def build_parameter_descriptions(obj, user_p=None, output="csv", show_none=True, ignore=None, plist=None): """ Creates a list of the decription of all the inputs of an object :param obj: object, that has parameters :param user_p: dict, user defined parameter descriptions :param show_none: if false, only shows descriptions of parameters that are not None :param ignore: list of parameters to not build :return: """ if user_p is None: user_p = {} if ignore is None: ignore = [] para = [[obj.__class__.__name__ + " inputs:", "", ""]] if plist is None: if not hasattr(obj, 'inputs'): raise exceptions.ModelError("Object must contain parameter 'inputs' or set plist as an input") plist = obj.inputs p_dict = {} if hasattr(obj, 'ancestor_types'): bt = obj.ancestor_types for otype in bt: # cycles from lowest class, so descriptions get overridden if otype in vp: for item in vp[otype]: p_dict[item] = vp[otype][item] for item in user_p: # user defined definitions override base ones p_dict[item] = user_p[item] else: p_dict = user_p for item in plist: if show_none is False and getattr(obj, item) is None: continue if item in ignore: continue if item in p_dict: para.append([item, p_dict[item][1], p_dict[item][0]]) else: para.append([item, "", ""]) if output == "csv": out_obj = [] for i in range(len(para)): out_obj.append(",".join(para[i])) elif output == "list": out_obj = para elif output == "dict": out_obj = OrderedDict() for i in range(len(para)): out_obj[para[i][0]] = {"description": para[i][2], "units": para[i][1]} else: raise ValueError("output must be either: 'csv', 'dict' or 'list'.") return out_obj
[docs]def all_descriptions(): """ Generates a list of descriptions of all the models :return: """ para = [] para += build_parameter_descriptions(models.Soil()) + [",,\n"] para += build_parameter_descriptions(models.SoilProfile()) + [",,\n"] para += build_parameter_descriptions(models.Foundation()) + [",,\n"] para += build_parameter_descriptions(models.PadFoundation()) + [",,\n"] para += build_parameter_descriptions(models.SDOFBuilding()) + [",,\n"] para += build_parameter_descriptions(models.FrameBuilding2D(1, 1)) return para
if __name__ == '__main__': # all_descriptions() para = [] para += build_parameter_descriptions(models.Soil()) + [",,\n"] para += build_parameter_descriptions(models.SoilProfile()) + [",,\n"] para += build_parameter_descriptions(models.Foundation()) + [",,\n"] para += build_parameter_descriptions(models.PadFoundation()) + [",,\n"] para += build_parameter_descriptions(models.Structure()) + [",,\n"] para += build_parameter_descriptions(models.FrameBuilding2D(1, 1)) print("\n".join(para))