Source code for binf.model.forwardmodels

"""
This module contains interfaces for forward models.
"""

from abc import abstractmethod, ABCMeta

from binf.model import AbstractModel


[docs]class AbstractForwardModel(AbstractModel): __meta__ = ABCMeta @abstractmethod def __init__(self, name, parameters=[]): super(AbstractForwardModel, self).__init__(name, parameters) @property def data(self): return self._data
[docs] def jacobi_matrix(self, **variables): self._complete_variables(variables) result = self._evaluate_jacobi_matrix(**variables) return result
[docs] @abstractmethod def _evaluate_jacobi_matrix(self, **model_parameters): self._check_differentiability(**model_parameters)
[docs] @abstractmethod def clone(self): pass
[docs] def fix_variables(self, **fixed_vars): """ Sets ('fixes') specific variables to values given as keyword arguments by removing these variables from the list of registered variables and registering corresponding parameters to this object. """ for v in fixed_vars: if v in self.variables: self._delete_variable(v) self._register(v) if v in self.var_param_types: self[v] = self.var_param_types[v](fixed_vars[v], v) else: msg = 'Parameter type for variable "{}" not defined'.format(v) raise ValueError(msg) else: msg = '{} is not a variable of {}'.format(self.__repr__(), v) raise ValueError(msg)
[docs] def _set_parameters(self, copy): for p in self.parameters: if not p in copy.parameters: copy._register(p) copy[p] = self[p].__class__(self[p].value, p) if p in copy.variables: copy._delete_variable(p)