[AstroPy] Ap.modeling.fitting.SLSQPLSQFitter() argument fails.

Nadia Dencheva dencheva at stsci.edu
Mon Jan 8 10:54:20 EST 2018


Hi Eric,


This was a bug in modeling - it didn't pass some of the keywords correctly to scipy's fmin_slsqp.


It has been fixed since astropy 1.3.1


https://github.com/astropy/astropy/pull/5815


Cheers,
Nadia


________________________________
From: AstroPy <astropy-bounces+dencheva=stsci.edu at python.org> on behalf of Éric Depagne <eric at depagne.org>
Sent: Monday, January 8, 2018 7:21 AM
To: astropy at python.org
Subject: [AstroPy] Ap.modeling.fitting.SLSQPLSQFitter() argument fails.


Hi all.



I have a problem with SLSQPLSQFitter that seems to be related to the astropy/scipy version I'm using, but I can't find out why it's failing, so any help will be appreciated.



I have the following code:



def _gaussian_fit(self, a, k):

from astropy.modeling import fitting, models

fitter = fitting.SLSQPLSQFitter()

gaus = models.Gaussian1D(amplitude=1., mean=a, stddev=5.)

try:

gfit = fitter(gaus, y, self.hrs.data[y, 50 * (k + 1)] / self.hrs.data[y, 50 * (k + 1)].max(), verblevel=0)

except IndexError:

return



def find_orders(self, op):

vgf = np.vectorize(self._gaussian_fit)

for i in range(op.shape[1]):

tt = vgf(op[:, i], i)

fit[:, i] = tt

positions[:, :, 0], positions[:, :, 1], positions[:, :, 2] = vadd(fit)

I have a virtual environnment where I'm using astropy v 2.0.1 and scipy v 0.19.1 and the code works as expected: it fits the data.



I am also running this code on the default version installed on my Ubuntu box, which are : astropy v 1.3 and scipy v 0.18.1 and in this case, I have the following error message:



/home/eric/stability/stability.py in find_orders(self, op)

349 positions = np.zeros((op.shape[0], op.shape[1], 3))

350 for i in range(op.shape[1]):

--> 351 tt = vgf(op[:, i], i)

352 fit[:, i] = tt



/usr/lib/python3/dist-packages/numpy/lib/function_base.py in __call__(self, *args, **kwargs)

2574 vargs.extend([kwargs[_n] for _n in names])

2575

-> 2576 return self._vectorize_call(func=func, args=vargs)

2577

2578 def _get_ufunc_and_otypes(self, func, args):



/usr/lib/python3/dist-packages/numpy/lib/function_base.py in _vectorize_call(self, func, args)

2644 res = func()

2645 else:

-> 2646 ufunc, otypes = self._get_ufunc_and_otypes(func=func, args=args)

2647

2648 # Convert args to object arrays first



/usr/lib/python3/dist-packages/numpy/lib/function_base.py in _get_ufunc_and_otypes(self, func, args)

2604

2605 inputs = [arg.flat[0] for arg in args]

-> 2606 outputs = func(*inputs)

2607

2608 # Performance note: profiling indicates that -- for simple



/home/eric/stability/stability.py in _gaussian_fit(self, a, k)

325 y = np.arange(y1, y2)

326 try:

--> 327 gfit = fitter(gaus, y, self.hrs.data[y, 50 * (k + 1)] / self.hrs.data[y, 50 * (k + 1)].max(), verblevel=0)

328 except IndexError:

329 return



/usr/lib/python3/dist-packages/astropy/modeling/fitting.py in __call__(self, model, x, y, z, weights, **kwargs)

682 p0, _ = _model_to_fit_params(model_copy)

683 fitparams, self.fit_info = self._opt_method(

--> 684 self.objective_function, p0, farg, **kwargs)

685 _fitter_to_model_params(model_copy, fitparams)

686



/usr/lib/python3/dist-packages/astropy/modeling/optimizers.py in __call__(self, objfunc, initval, fargs, **kwargs)

160 objfunc, initval, args=fargs, full_output=True,

161 bounds=bounds, eqcons=eqcons, ieqcons=ineqcons,

--> 162 **kwargs)

163

164 self.fit_info['final_func_val'] = final_func_val



TypeError: fmin_slsqp() got an unexpected keyword argument 'verblevel'





I have had a look on the astropy and scipy github to check whether the verblevel keyword had been added in between the versions (1.3 and 2.0) and/or (0.18.1 and 0.19.1), but it's not the case.



I know that 1.3 and 0.18 are old and not stable version anymore, so I can simply do a version check and have my code exit if they are too old, but I'd be interested in understanding where I am doing something wrong.



Thanks.



Éric.



--

Un clavier azerty en vaut deux

----------------------------------------------------------

Éric Depagne


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/astropy/attachments/20180108/8f98edb1/attachment.html>


More information about the AstroPy mailing list