Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/sas/models/CoreMultiShellModel.py

    re0c16ce rac7be54  
    5353        ## parameters with orientation: can be removed since there is no orientational params 
    5454        self._set_orientation_params() 
    55  
     55                 
     56         
    5657    def _clone(self, obj): 
    5758        """ 
     
    6667 
    6768        return obj 
    68  
     69     
     70     
    6971    def _set_dispersion(self): 
    7072        """ 
    7173        model dispersions 
    7274        Polydispersion should not be applied to s_model 
    73         """ 
    74         ##set dispersion from model 
     75        """  
     76        ##set dispersion from model  
    7577        for name , value in self.model.dispersion.iteritems():       
    7678            nshell = 0 
     
    8082                    if name.split('_')[-1] == 'shell%s' % str(nshell): 
    8183                        self.dispersion[name] = value 
    82                     else: 
     84                    else:  
    8385                        continue 
    8486            else: 
    8587                self.dispersion[name] = value 
    86  
     88                 
    8789    def _set_orientation_params(self): 
    8890        """ 
    8991        model orientation and magnetic parameters, same params for this model 
    90         """ 
     92        """  
    9193        ##set dispersion from model  
    9294        for param in self.model.orientation_params:      
     
    102104                    self.orientation_params.append(param) 
    103105                    self.magnetic_params.append(param) 
    104                     continue 
     106                    continue                            
    105107 
    106108    def _set_params(self): 
    107109        """ 
    108110        Concatenate the parameters of the model to create 
    109         this model parameters 
     111        this model parameters  
    110112        """ 
    111113        # rearrange the parameters for the given # of shells 
     
    126128            else: 
    127129                self.params[name]= value 
    128  
     130             
    129131        # set constrained values for the original model params 
    130         self._set_xtra_model_param() 
    131  
     132        self._set_xtra_model_param()        
     133   
    132134    def _set_details(self): 
    133135        """ 
    134136        Concatenate details of the original model to create 
    135         this model details 
     137        this model details  
    136138        """ 
    137139        for name ,detail in self.model.details.iteritems(): 
    138140            if name in self.params.iterkeys(): 
    139141                self.details[name]= detail 
    140  
    141  
     142             
     143     
    142144    def _set_xtra_model_param(self): 
    143145        """ 
     
    161163                                self.model.setParam(key, 0.0) 
    162164                        except: pass 
    163  
     165                      
    164166 
    165167    def getProfile(self): 
    166168        """ 
    167         Get SLD profile 
    168         **Note:** This works only for func_shell num = 2. 
    169  
    170         :return: (r, beta) where r is a list of radius of the transition points\ 
    171          and beta is a list of the corresponding SLD values. 
     169        Get SLD profile  
     170         
     171        : return: (r, beta) where r is a list of radius of the transition points 
     172            beta is a list of the corresponding SLD values 
     173        : Note: This works only for func_shell num = 2. 
    172174        """ 
    173175        r = [] 
     
    179181        r.append(self.params['rad_core0']) 
    180182        beta.append(self.params['sld_core0']) 
    181  
     183         
    182184        # for shells 
    183185        for n in range(1, self.n_shells+1): 
    184186            # Left side of each shells 
    185             r0 = r[len(r)-1] 
     187            r0 = r[len(r)-1]             
    186188            r.append(r0) 
    187189            exec "beta.append(self.params['sld_shell%s'% str(n)])" 
     
    191193            r.append(r0) 
    192194            exec "beta.append(self.params['sld_shell%s'% str(n)])" 
    193  
     195             
    194196        # for solvent 
    195197        r0 = r[len(r)-1]             
     
    199201        r.append(r_solv) 
    200202        beta.append(self.params['sld_solv']) 
    201  
     203         
    202204        return r, beta 
    203205 
    204206    def setParam(self, name, value): 
    205         """ 
     207        """  
    206208        Set the value of a model parameter 
    207  
    208         :param name: name of the parameter 
    209         :param value: value of the parameter 
     209     
     210        : param name: name of the parameter 
     211        : param value: value of the parameter 
    210212        """ 
    211213        # set param to new model 
    212214        self._setParamHelper( name, value) 
    213         ## setParam to model 
     215        ## setParam to model  
    214216        if name == 'sld_solv': 
    215217            # the sld_*** model.params not in params must set to value of sld_solv 
     
    241243                self.params[item] = value 
    242244                return 
     245         
    243246        #raise ValueError, "Model does not contain parameter %s" % name 
    244  
    245  
     247              
     248    
    246249    def _set_fixed_params(self): 
    247250        """ 
     
    249252        """ 
    250253        for item in self.model.fixed: 
    251             if item.split('.')[0] in self.params.keys(): 
     254            if item.split('.')[0] in self.params.keys():  
    252255                self.fixed.append(item) 
    253256 
    254257        self.fixed.sort() 
    255  
     258                 
    256259    def run(self, x = 0.0): 
    257         """ 
     260        """  
    258261        Evaluate the model 
    259  
    260         :param x: input q-value (float or [float, float] as [r, theta]) 
    261         :return: (DAB value) 
     262         
     263        : param x: input q-value (float or [float, float] as [r, theta]) 
     264        : return: (DAB value) 
    262265        """ 
    263266        # set effective radius and scaling factor before run 
     
    266269 
    267270    def runXY(self, x = 0.0): 
    268         """ 
     271        """  
    269272        Evaluate the model 
    270  
    271         :param x: input q-value (float or [float, float] as [qx, qy]) 
    272         :return: DAB value 
     273         
     274        : param x: input q-value (float or [float, float] as [qx, qy]) 
     275        : return: DAB value 
    273276        """   
    274277        # set effective radius and scaling factor before run 
    275278 
    276279        return self.model.runXY(x) 
    277  
     280     
    278281    ## Now (May27,10) directly uses the model eval function  
    279282    ## instead of the for-loop in Base Component. 
    280283    def evalDistribution(self, x = []): 
    281         """ 
     284        """  
    282285        Evaluate the model in cartesian coordinates 
    283  
    284         :param x: input q[], or [qx[], qy[]] 
    285         :return: scattering function P(q[]) 
     286         
     287        : param x: input q[], or [qx[], qy[]] 
     288        : return: scattering function P(q[]) 
    286289        """ 
    287290        # set effective radius and scaling factor before run 
    288291        return self.model.evalDistribution(x) 
    289  
     292     
    290293    def calculate_ER(self): 
    291         """ 
     294        """  
    292295        Calculate the effective radius for P(q)*S(q) 
    293  
     296         
    294297        :return: the value of the effective radius 
    295         """ 
     298         
     299        """        
    296300        return self.model.calculate_ER()  
    297  
     301     
    298302    def calculate_VR(self): 
    299         """ 
     303        """  
    300304        Calculate the volf ratio for P(q)*S(q) 
    301  
     305         
    302306        :return: the value of the volf ratio 
    303         """ 
     307         
     308        """        
    304309        return self.model.calculate_VR() 
    305  
     310     
    306311    def set_dispersion(self, parameter, dispersion): 
    307312        """ 
    308313        Set the dispersion object for a model parameter 
    309  
    310         :param parameter: name of the parameter [string] 
    311         :param dispersion: dispersion object of type DispersionModel 
     314         
     315        : param parameter: name of the parameter [string] 
     316        :dispersion: dispersion object of type DispersionModel 
    312317        """ 
    313318        value = None 
     
    318323            return value 
    319324        except: 
    320             raise 
     325            raise  
Note: See TracChangeset for help on using the changeset viewer.