def __init__(self, regimes=None, aliases=None, state_variables=None): """Dynamics object constructor :param aliases: A list of aliases, which must be either |Alias| objects or ``string``s. :param regimes: A list containing at least one |Regime| object. :param state_variables: An optional list of the state variables, which can either be |StateVariable| objects or `string` s. If provided, it must match the inferred state-variables from the regimes; if it is not provided it will be inferred automatically. """ aliases = normalise_parameter_as_list(aliases) regimes = normalise_parameter_as_list(regimes) state_variables = normalise_parameter_as_list(state_variables) # Load the aliases as objects or strings: alias_td = filter_discrete_types(aliases, (basestring, Alias)) aliases_from_strs = [StrToExpr.alias(o) for o in alias_td[basestring]] aliases = alias_td[Alias] + aliases_from_strs # Load the state variables as objects or strings: sv_types = (basestring, StateVariable) sv_td = filter_discrete_types(state_variables, sv_types) sv_from_strings = [StateVariable(o) for o in sv_td[basestring]] state_variables = sv_td[StateVariable] + sv_from_strings self._regimes = regimes self._aliases = aliases self._state_variables = state_variables