Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/sas/qtgui/Perspectives/Fitting/ModelThread.py

    rdcabba7 r40975f8  
    101101        elapsed = time.time() - self.starttime 
    102102 
    103         res = dict(image = output, data = self.data, page_id = self.page_id, 
    104             model = self.model, state = self.state, 
    105             toggle_mode_on = self.toggle_mode_on, elapsed = elapsed, 
    106             index = index_model, fid = self.fid, 
    107             qmin = self.qmin, qmax = self.qmax, 
    108             weight = self.weight, update_chisqr = self.update_chisqr, 
    109             source = self.source) 
    110  
    111103        if LocalConfig.USING_TWISTED: 
    112             return res 
    113         else: 
    114             self.completefn(res) 
     104            return (output, 
     105                    self.data, 
     106                    self.page_id, 
     107                    self.model, 
     108                    self.state, 
     109                    self.toggle_mode_on, 
     110                    elapsed, 
     111                    index_model, 
     112                    self.fid, 
     113                    self.qmin, 
     114                    self.qmax, 
     115                    self.weight, 
     116                    self.update_chisqr, 
     117                    self.source) 
     118        else: 
     119            self.completefn((output, 
     120                           self.data, 
     121                           self.page_id, 
     122                           self.model, 
     123                           self.state, 
     124                           self.toggle_mode_on, 
     125                           elapsed, 
     126                           index_model, 
     127                           self.fid, 
     128                           self.qmin, 
     129                           self.qmax, 
     130                           self.weight, 
     131                           #qstep=self.qstep, 
     132                           self.update_chisqr, 
     133                           self.source)) 
     134 
    115135 
    116136class Calc1D(CalcThread): 
     
    195215            output[index] = self.model.evalDistribution(self.data.x[index]) 
    196216 
    197         sq_values = None 
    198         pq_values = None 
    199         s_model = None 
    200         p_model = None 
    201         if isinstance(self.model, MultiplicationModel): 
    202             s_model = self.model.s_model 
    203             p_model = self.model.p_model 
    204         elif hasattr(self.model, "calc_composition_models"): 
    205             results = self.model.calc_composition_models(self.data.x[index]) 
    206             if results is not None: 
    207                 pq_values, sq_values = results 
    208  
    209         if pq_values is None or sq_values is None: 
    210             if p_model is not None and s_model is not None: 
    211                 sq_values = numpy.zeros((len(self.data.x))) 
    212                 pq_values = numpy.zeros((len(self.data.x))) 
    213                 sq_values[index] = s_model.evalDistribution(self.data.x[index]) 
    214                 pq_values[index] = p_model.evalDistribution(self.data.x[index]) 
     217        results_eval = {} 
     218        intermediate_results = getattr(self.model, "_intermediate_results", None) 
     219        if callable(intermediate_results): 
     220            # support for future sasmodels (beta approx support) - it returns a dict of intermediate results, keyed by 
     221            # name 
     222            results_eval = intermediate_results() 
     223        else: 
     224            sq_values = None 
     225            pq_values = None 
     226            s_model = None 
     227            p_model = None 
     228            if isinstance(self.model, MultiplicationModel): 
     229                s_model = self.model.s_model 
     230                p_model = self.model.p_model 
     231            elif hasattr(self.model, "calc_composition_models"): 
     232                results = self.model.calc_composition_models(self.data.x[index]) 
     233                if results is not None: 
     234                    pq_values, sq_values = results 
     235 
     236            if pq_values is None or sq_values is None: 
     237                if p_model is not None and s_model is not None: 
     238                    sq_values = numpy.zeros((len(self.data.x))) 
     239                    pq_values = numpy.zeros((len(self.data.x))) 
     240                    sq_values[index] = s_model.evalDistribution(self.data.x[index]) 
     241                    pq_values[index] = p_model.evalDistribution(self.data.x[index]) 
     242 
     243            if pq_values is not None and sq_values is not None: 
     244                results_eval = { 
     245                    "P(Q)": pq_values, 
     246                    "S(Q)": sq_values 
     247                } 
    215248 
    216249        elapsed = time.time() - self.starttime 
    217250 
    218         res = dict(x = self.data.x[index], y = output[index], 
    219             page_id = self.page_id, state = self.state, weight = self.weight, 
    220             fid = self.fid, toggle_mode_on = self.toggle_mode_on, 
    221             elapsed = elapsed, index = index, model = self.model, 
    222             data = self.data, update_chisqr = self.update_chisqr, 
    223             source = self.source, unsmeared_output = unsmeared_output, 
    224             unsmeared_data = unsmeared_data, unsmeared_error = unsmeared_error, 
    225             pq_values = pq_values, sq_values = sq_values) 
    226  
    227251        if LocalConfig.USING_TWISTED: 
    228             return res 
    229         else: 
    230             self.completefn(res) 
     252            return (self.data.x[index], output[index], 
     253                    self.page_id, 
     254                    self.state, 
     255                    self.weight, 
     256                    self.fid, 
     257                    self.toggle_mode_on, 
     258                    elapsed, index, self.model, 
     259                    self.data, 
     260                    self.update_chisqr, 
     261                    self.source, 
     262                    unsmeared_output, unsmeared_data, unsmeared_error, 
     263                    results_eval) 
     264        else: 
     265            self.completefn((self.data.x[index], output[index], 
     266                        self.page_id, 
     267                        self.state, 
     268                        self.weight, 
     269                        self.fid, 
     270                        self.toggle_mode_on, 
     271                        elapsed, index, self.model, 
     272                        self.data, 
     273                        self.update_chisqr, 
     274                        self.source, 
     275                        unsmeared_output, unsmeared_data, unsmeared_error, 
     276                        results_eval)) 
    231277 
    232278    def results(self): 
Note: See TracChangeset for help on using the changeset viewer.