Hello, I have a function that I fitting to a curve via scipy.optimize.leastsq. The function has 4 parameters and this is all working fine.
For a site, I have a number of curves (n=10 in the example below). I would like to some of the parameters to be the best fit across all curves (best fit for a site) while letting the other parameters vary for each curve. I have this working as well. The issue I have is like to be able to vary this for a run. That is do a run where parameter1 is best fit for entire site, whith the remaining three varying per curve. Then on the next run, have two parameters being held or fitted for all curves at one. Or be able to do a run where all 4 parameters are fit for each individual curve. Using my e.g. below, if I change the 'fix' dict, so that 'a','b', and 'c' are True, with 'd' False, then I will have to change the zip to for a,b,c in zip(a,b,c): solve(a,b,c,d) I would prefer to find a way to do this via code. I hope this example makes sense. The code below is all within my objective function that is being called by scipy.optimize.leastsq. import numpy as np def solve(a,b,c,d): print a,b,c,d #return x*a*b*c*d fix = {"a":True,"b":True,"c":False,"d":False} n=10 params = np.array([0,1,2,3]*n) params = params.reshape(-1,4) if fix["a"] is True: a = params[0,0] else: a = params[:,0] if fix["b"] is True: b = params[0,1] else: b = params[:,1] if fix["c"] is True: c = params[0,2] else: c = params[:,2] if fix["d"] is True: d = params[0,3] else: d = params[:,3] res=[] for c,d in zip(c,d): res = solve(a,b,c,d) #res = solve(a,b,c,d)-self.orig #return np.hstack(res)**2 _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion