Ignore:
Timestamp:
Mar 20, 2009 8:26:01 PM (15 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:
20d30e9
Parents:
f2776f6
Message:

new interface design —→ proposition

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sansview/perspectives/fitting/model_thread.py

    rbb18ef1 rc77d859  
    9090    """ 
    9191     
    92     def __init__(self, x, y, model,qmin, qmax,qstep, 
     92    def __init__(self, x, y, data,model,qmin, qmax,qstep, 
    9393                 completefn = None, 
    9494                 updatefn   = None, 
     
    101101                 worktime) 
    102102        self.qmin= qmin 
    103         self.qmax=qmax 
     103        self.qmax= qmax 
    104104        self.qstep= qstep 
    105105        self.x = x 
    106106        self.y = y 
     107        self.data= data 
    107108        ## the model on to calculate 
    108109        self.model = model 
     
    128129        y = self.y 
    129130        output = numpy.zeros((len(x),len(y))) 
    130        
    131         center_x=0 
    132         center_y=0 
     131         
     132        if self.qmin==None: 
     133            self.qmin = 0 
     134        if self.qmax== None: 
     135            if data ==None: 
     136                return 
     137            newx= math.pow(max(math.fabs(data.xmax),math.fabs(data.xmin)),2) 
     138            newy= math.pow(max(math.fabs(data.ymax),math.fabs(data.ymin)),2) 
     139            self.qmax=math.sqrt( newx + newy ) 
    133140         
    134141        self.starttime = time.time() 
    135142         
    136          
    137143        lx = len(self.x) 
    138         
    139144        for i_x in range(len(self.x)): 
    140145            # Check whether we need to bail out 
     
    143148        
    144149            for i_y in range(int(len(self.y))): 
    145             
    146                 if (self.x[i_x]*self.x[i_x]+self.y[i_y]*self.y[i_y]) \ 
    147                     < self.qmin * self.qmin: 
    148                      
    149                     output[i_x] [i_y]=0    
     150                radius = self.x[i_x]*self.x[i_x]+self.y[i_y]*self.y[i_y] 
     151                 
     152                if  self.qmin <= radius or radius<= self.qmax: 
     153                    value = self.model.runXY( [self.x[i_x], self.y[i_y]] ) 
     154                    output[i_x] [i_y]=value    
    150155                else: 
    151                     value = self.model.runXY([self.x[i_x]-center_x, self.y[i_y]-center_y]) 
    152                     output[i_x] [i_y]=value    
     156                     output[i_x] [i_y]=0    
    153157             
    154158        elapsed = time.time()-self.starttime 
    155         self.complete( 
    156                       output=output, elapsed=elapsed,model= self.model, 
    157                       qmin= self.qmin, 
    158                       qmax=self.qmax, 
    159                       qstep=self.qstep) 
     159        self.complete( image = output, 
     160                       data = self.data ,  
     161                       model = self.model, 
     162                       elapsed = elapsed, 
     163                       qmin = self.qmin, 
     164                       qmax =self.qmax, 
     165                       qstep = self.qstep ) 
    160166 
    161167 
     
    256262                 qmin=None, 
    257263                 qmax=None, 
    258                  name=None, 
    259264                 smearer=None, 
    260265                 completefn = None, 
     
    272277        self.qmax= qmax 
    273278        self.model = model 
    274         self.name= name 
    275279        self.smearer= smearer 
    276280        self.starttime = 0 
    277281         
    278282    def compute(self): 
     283        """ 
     284            Compute model 1d value given qmin , qmax , x value  
     285        """ 
    279286        import numpy 
    280287         
    281288        output = numpy.zeros(len(self.x)) 
    282         if self.qmin==None: 
    283             self.qmin= min(self.x) 
    284         if self.qmax==None: 
    285             self.qmax= max(self.x)  
    286                 
     289        
    287290        self.starttime = time.time() 
    288291         
     
    294297                value = self.model.run(self.x[i_x]) 
    295298                output[i_x] = value 
     299                 
    296300        if self.smearer!=None: 
    297301            output = self.smearer(output) 
    298                      
     302             
     303                       
    299304        elapsed = time.time()-self.starttime 
    300         self.complete(x= self.x, output=output,  
    301                       elapsed=elapsed, name=self.name, data=self.data) 
     305        self.complete(x= self.x, y= output,  
     306                      elapsed=elapsed, model= self.model, data=self.data) 
    302307         
    303308         
Note: See TracChangeset for help on using the changeset viewer.