1 """Model estimation classes for ODEs.
2
3 Robert Clewley.
4 """
5
6
7 from PyDSTool.Points import Point, Pointset
8 from PyDSTool.Model import Model
9 from PyDSTool.ModelSpec import *
10 from PyDSTool.common import Utility, _seq_types, metric, args
11 from PyDSTool.utils import intersect, remain, filteredDict
12 from PyDSTool.errors import *
13 from PyDSTool.Toolbox.ParamEst import *
14
15
16 from scipy.linalg import norm, eig, eigvals, svd, svdvals
17
18 from numpy import linspace, array, arange, zeros, sum, power, \
19 swapaxes, asarray, ones, alltrue, concatenate, rank, ravel, argmax
20 import math, types
21 from copy import copy, deepcopy
22
23
24
25
27 """General-purpose model estimation class.
28 """
29 _needKeys = ['manager', 'context']
30 _optionalKeys = ['libraries', 'verboselevel']
31
33
34 self.manager = kw['manager']
35
36 if 'libraries' in kw:
37 self.libraries = kw['libraries']
38 else:
39 self.libraries = None
40
41 self.context = kw['context']
42 if 'verboselevel' in kw:
43 self.verboselevel = kw['verboselevel']
44 else:
45 self.verboselevel = 1
46
47 - def fit(self, name, free_pars, parest=None):
48 """Fit an individual candidate model in its context,
49 peforming parameter optimization on the given free parameters.
50 """
51 model = self.manager[name]
52 assert remain(free_pars, model.pars) == [], "Invalid free variables"
53 model.set(verboselevel=self.verboselevel)
54
55
56 if self.context.evaluate(model):
57 return filteredDict(model.pars, free_pars)
58
59
60
61
62
63 print "Get pre-defined tols from features somehow"
64 print "Establish parameter estimation class and run it"
65
66
67
68
69
70
71
72
73