Ignore:
Timestamp:
Oct 11, 2011 5:51:37 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:
6a4002d
Parents:
d59cb8c
Message:

make sure result similar for both engine

File:
1 edited

Legend:

Unmodified
Added
Removed
  • park_integration/src/sans/fit/ParkFitting.py

    rd59cb8c r444c900e  
    2525#from Loader import Load 
    2626from sans.fit.AbstractFitEngine import FitEngine 
     27from sans.fit.AbstractFitEngine import FResult 
    2728   
    2829class SansFitResult(fitresult.FitResult): 
     
    208209class MyAssembly(Assembly): 
    209210    def __init__(self, models, curr_thread=None): 
    210         Assembly.__init__(self, models) 
     211        """Build an assembly from a list of models.""" 
     212        self.parts = [] 
     213        for m in models: 
     214            self.parts.append(SansPart(m)) 
    211215        self.curr_thread = curr_thread 
    212216        self.chisq = None 
    213217        self._cancel = False 
    214218        self.theory = None 
     219        self._reset() 
    215220         
    216221    def fit_parameters(self): 
     
    398403        if handler == None: 
    399404            handler = fitresult.ConsoleUpdate(improvement_delta=0.1) 
     405         
     406        result_list = [] 
    400407        try: 
    401408            result = fit.fit(self.problem, fitter=fitter, handler=handler) 
    402409            self.problem.all_results(result) 
     410             
    403411        except LinAlgError: 
    404412            raise ValueError, "SVD did not converge" 
    405              
    406         if result != None: 
    407             if q != None: 
    408                 q.put(result) 
    409                 return q 
    410             return result 
    411         else: 
    412             raise ValueError, "SVD did not converge" 
    413              
     413     
     414        for m in self.problem.parts: 
     415            residuals, theory = m.fitness.residuals() 
     416            small_result = FResult(model=m.model, data=m.data.sans_data) 
     417            small_result.theory = theory 
     418            small_result.residuals = residuals 
     419            small_result.pvec = [] 
     420            small_result.cov = [] 
     421            small_result.stderr = [] 
     422            small_result.param_list = [] 
     423            small_result.residuals = m.residuals 
     424            if result is not None: 
     425                for p in result.parameters: 
     426                    if p.data.name == small_result.data.name: 
     427                        small_result.index = m.data.idx 
     428                        small_result.fitness = result.fitness 
     429                        small_result.pvec.append(p.value) 
     430                        small_result.stderr.append(p.stderr) 
     431                        name = p.name.split('.')[1].strip() 
     432                        small_result.param_list.append(name) 
     433            result_list.append(small_result)     
     434        if q != None: 
     435            q.put(result) 
     436            return q 
     437        print "park", len(result_list) 
     438        return result_list 
     439        
Note: See TracChangeset for help on using the changeset viewer.