[Tutor] constructing semi-arbitrary functions
"André Walker-Loud <walksloud@gmail.com>"
walksloud at gmail.com
Tue Feb 18 01:34:13 CET 2014
Hi Oscar,
On Feb 17, 2014, at 6:02 PM, Oscar Benjamin <oscar.j.benjamin at gmail.com> wrote:
> On 17 February 2014 22:15, "André Walker-Loud <walksloud at gmail.com>"
> <walksloud at gmail.com> wrote:
>>> This particular case is easily solved:
>>>
>>> def f_lambda(x,pars):
>>> return lambda x: poly(x,*pars)
>>>
>>> You let the closure take care of pars and return a function that takes
>>> exactly one argument x.
>>
>> Hi Oscar,
>>
>> This is the opposite of what I am trying to do. In the example, x represents the data and pars represent the parameters I want to determine, so it is the pars which I need passed into the "func_code.co_varnames" part of f.
>>
>> Maybe your suggestion gets me in that direction, but I don't see how.
>
> No, you're right. I misunderstood this example.
>
> Are you able to see/alter the source code of the 3rd party function?
> As I said earlier my preferred solution would be to rewrite the
> outermost part of that.
>
> The core inner minimisation routine will (I'm guessing) be something
> that really doesn't care about the names of these parameters and just
> needs to know the dimensionality of the space it is exploring. If you
> can access that routine directly then you can bypass the (IMO
> unfortunate) interface that you're currently trying to contort your
> problems into.
Thanks for the advice. At the moment, that sounds a bit too daunting to look into, but worth the effort in the long run. The code is all available. It is in fact a python wrapper around a sophisticated c++ minimizer (Minuit if you’ve heard of it). I am not sure if the python wrapper design was just a choice, or forced upon the designer by the interface to Minuit. That will involve a bit of research.
Thanks,
Andre
More information about the Tutor
mailing list