schrodinger.models.paramtools module

schrodinger.models.paramtools.selective_set_value(src_model, dest_model, *, exclude=())

Set the value of dest_model to the value of src_model, excluding any params specified by exclude.

  • src_model (CompoundParam) – The param to take values from.

  • dest_model (iterator[Param]) – The param to apply values to.

  • exclude – An iterator of abstract params specifying values to ignore when applying src_model to dest_model.

schrodinger.models.paramtools.map_subparams(map_func, compound_param, subparam_type)

Find all subparams of type subparam_type in compound_param and apply map_func to it. The compound_param will be modified in place.

An example:

class Model(parameters.CompoundParam):
    workflow_runtimes: List[float]
    total_idle_time: float
    min_max_runtimes: Tuple[float, float] = None

model = Model(workflow_runtimes = [60, 120, 180],

def seconds_to_minutes(seconds):
    return seconds/60

map_subparams(seconds_to_minutes, model, subparam_type=float)
model.workflow_runtimes # [1, 2, 3]
model.total_idle_time # 1.5
model.min_max_runtimes # (1, 3)

Optionally, the map_func may accept a second argument of abstract_param. This may be useful in error messages or debugging. Example:

def seconds_to_minutes(seconds, abstract_param):
    if seconds is None:
        print(f'{abstract_subparam} was not set.')
        return None
    return seconds/60

Note that the argument must be named ‘abstract_param’ for it to get picked up.

schrodinger.models.paramtools.get_subparam_type_hints(abstract_param: type) schrodinger.models.parameters.ParamDict

Return a dictionary version of the provided abstract param. The returned dictionary is fully nested and contains the type hint for each subparam

a_dict = get_subparam_type_hints(Atom)
assert a_dict['coord']['x'] == <class 'float'>
assert a_dict['coord'] == {
    'x': <class 'float'>, 'y': <class 'float'>}

abstract_param – A subclass of CompoundParam for which to get subparam type hints.


TypeError if abstract_param is not abstract.


AttributeError if abstract_param is not a CompoundParam