Changeset 511c6810 in sasview for park_integration


Ignore:
Timestamp:
Mar 18, 2011 4:20:07 PM (13 years ago)
Author:
Gervaise Alina <gervyh@…>
Branches:
master, ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc, costrafo411, magnetic_scatt, release-4.1.1, release-4.1.2, release-4.2.2, release_4.0.1, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
Children:
66ff250
Parents:
5080cda
Message:

working fit stop

Location:
park_integration
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • park_integration/AbstractFitEngine.py

    rc4d6900 r511c6810  
    403403    Exception raise to stop the fit 
    404404    """ 
    405     #print"Creating fit abort Exception" 
    406405 
    407406 
     
    450449         
    451450        """ 
    452         #import thread 
    453451        self.model.set_params(self.paramlist,params) 
    454452        self.res = self.data.residuals(self.model.eval) 
    455453        if self.fitresult is not None and  self.handler is not None: 
    456454            self.fitresult.set_model(model=self.model) 
    457             #fitness = self.chisq(params=params) 
    458455            fitness = self.chisq() 
     456            self.fitresult.pvec = params 
    459457            self.fitresult.set_fitness(fitness=fitness) 
    460458            self.handler.set_result(result=self.fitresult) 
    461             self.handler.update_fit() 
    462          
    463         #if self.curr_thread != None : 
    464         #    try: 
    465         #        self.curr_thread.isquit() 
    466         #    except: 
    467         #        raise FitAbort,"stop leastsqr optimizer"     
     459            #self.handler.update_fit() 
     460            if self.curr_thread != None : 
     461                try: 
     462                    self.curr_thread.isquit() 
     463                except: 
     464                    raise FitAbort,"stop leastsqr optimizer"         
    468465        return self.res 
    469466     
  • park_integration/Fitting.py

    rc4d6900 r511c6810  
    5252    def fit(self, q=None, handler=None, curr_thread=None): 
    5353        """Perform the fit """ 
    54         #try: 
    5554        return self._engine.fit(q, handler, curr_thread=curr_thread) 
    56         #except: 
    57         #    raise 
    58      
     55      
    5956    def set_model(self, model, id, pars=[], constraints=[]): 
    6057        """ 
  • park_integration/ScipyFitting.py

    r3ab116f r511c6810  
    88 
    99import numpy  
     10import sys 
    1011from scipy import optimize 
    1112 
    1213from sans.fit.AbstractFitEngine import FitEngine 
    1314from sans.fit.AbstractFitEngine import SansAssembly 
    14 #from sans.fit.AbstractFitEngine import FitAbort 
     15from sans.fit.AbstractFitEngine import FitAbort 
     16 
    1517 
    1618class fitresult(object): 
     
    98100        self.param_list = [] 
    99101        self.curr_thread = None 
     102        self.result = None 
    100103    #def fit(self, *args, **kw): 
    101104    #    return profile(self._fit, *args, **kw) 
     
    122125        data = listdata 
    123126        self.curr_thread = curr_thread 
    124         result = fitresult(model=model, param_list=self.param_list) 
    125         if handler is not None: 
    126             handler.set_result(result=result) 
     127        self.result = fitresult(model=model, param_list=self.param_list) 
     128        self.handler = handler 
     129        if self.handler is not None: 
     130            self.handler.set_result(result=self.result) 
    127131        #try: 
    128         functor = SansAssembly(self.param_list, model, data, handler=handler, 
    129                          fitresult=result, curr_thread= self.curr_thread) 
    130         out, cov_x, _, mesg, success = optimize.leastsq(functor, 
     132        functor = SansAssembly(self.param_list, model, data, handler=self.handler, 
     133                         fitresult=self.result, curr_thread= self.curr_thread) 
     134     
     135        try: 
     136            out, cov_x, _, mesg, success = optimize.leastsq(functor, 
    131137                                            model.get_params(self.param_list), 
    132138                                                    ftol = 0.001, 
    133139                                                    full_output=1, 
    134140                                                    warning=True) 
    135    
     141        except: 
     142            if sys.last_type == FitAbort: 
     143                if self.handler is not None: 
     144                    msg = "Fit Stop!" 
     145                    #self.handler.error(msg) 
     146                    self.result = self.handler.get_result() 
     147                    return self.result 
     148            else: 
     149                raise  
     150        
    136151        chisqr = functor.chisq() 
    137152        if cov_x is not None and numpy.isfinite(cov_x).all(): 
     
    139154        else: 
    140155            stderr = None 
     156         
     157        if (out is not None) and not (numpy.isnan(out).any()) \ 
     158            and (cov_x != None): 
     159            self.result.fitness = chisqr 
     160            self.result.stderr  = stderr 
     161            self.result.pvec = out 
     162            self.result.success = success 
     163        else:   
     164            msg = "SVD did not converge " + str(mesg) 
     165            #handler.error(msg) 
     166        return self.result 
    141167 
    142         if not (numpy.isnan(out).any()) and (cov_x != None): 
    143             result.fitness = chisqr 
    144             result.stderr  = stderr 
    145             result.pvec = out 
    146             result.success = success 
    147             if q is not None: 
    148                 q.put(result) 
    149                 return q 
    150             return result 
    151         else:   
    152             raise ValueError, "SVD did not converge" + str(mesg) 
     168        
    153169     
    154170 
Note: See TracChangeset for help on using the changeset viewer.