Changes in src/sas/models/CoreMultiShellModel.py [e0c16ce:ac7be54] in sasview
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/sas/models/CoreMultiShellModel.py
re0c16ce rac7be54 53 53 ## parameters with orientation: can be removed since there is no orientational params 54 54 self._set_orientation_params() 55 55 56 56 57 def _clone(self, obj): 57 58 """ … … 66 67 67 68 return obj 68 69 70 69 71 def _set_dispersion(self): 70 72 """ 71 73 model dispersions 72 74 Polydispersion should not be applied to s_model 73 """ 74 ##set dispersion from model 75 """ 76 ##set dispersion from model 75 77 for name , value in self.model.dispersion.iteritems(): 76 78 nshell = 0 … … 80 82 if name.split('_')[-1] == 'shell%s' % str(nshell): 81 83 self.dispersion[name] = value 82 else: 84 else: 83 85 continue 84 86 else: 85 87 self.dispersion[name] = value 86 88 87 89 def _set_orientation_params(self): 88 90 """ 89 91 model orientation and magnetic parameters, same params for this model 90 """ 92 """ 91 93 ##set dispersion from model 92 94 for param in self.model.orientation_params: … … 102 104 self.orientation_params.append(param) 103 105 self.magnetic_params.append(param) 104 continue 106 continue 105 107 106 108 def _set_params(self): 107 109 """ 108 110 Concatenate the parameters of the model to create 109 this model parameters 111 this model parameters 110 112 """ 111 113 # rearrange the parameters for the given # of shells … … 126 128 else: 127 129 self.params[name]= value 128 130 129 131 # set constrained values for the original model params 130 self._set_xtra_model_param() 131 132 self._set_xtra_model_param() 133 132 134 def _set_details(self): 133 135 """ 134 136 Concatenate details of the original model to create 135 this model details 137 this model details 136 138 """ 137 139 for name ,detail in self.model.details.iteritems(): 138 140 if name in self.params.iterkeys(): 139 141 self.details[name]= detail 140 141 142 143 142 144 def _set_xtra_model_param(self): 143 145 """ … … 161 163 self.model.setParam(key, 0.0) 162 164 except: pass 163 165 164 166 165 167 def getProfile(self): 166 168 """ 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. 172 174 """ 173 175 r = [] … … 179 181 r.append(self.params['rad_core0']) 180 182 beta.append(self.params['sld_core0']) 181 183 182 184 # for shells 183 185 for n in range(1, self.n_shells+1): 184 186 # Left side of each shells 185 r0 = r[len(r)-1] 187 r0 = r[len(r)-1] 186 188 r.append(r0) 187 189 exec "beta.append(self.params['sld_shell%s'% str(n)])" … … 191 193 r.append(r0) 192 194 exec "beta.append(self.params['sld_shell%s'% str(n)])" 193 195 194 196 # for solvent 195 197 r0 = r[len(r)-1] … … 199 201 r.append(r_solv) 200 202 beta.append(self.params['sld_solv']) 201 203 202 204 return r, beta 203 205 204 206 def setParam(self, name, value): 205 """ 207 """ 206 208 Set the value of a model parameter 207 208 : param name: name of the parameter209 : param value: value of the parameter209 210 : param name: name of the parameter 211 : param value: value of the parameter 210 212 """ 211 213 # set param to new model 212 214 self._setParamHelper( name, value) 213 ## setParam to model 215 ## setParam to model 214 216 if name == 'sld_solv': 215 217 # the sld_*** model.params not in params must set to value of sld_solv … … 241 243 self.params[item] = value 242 244 return 245 243 246 #raise ValueError, "Model does not contain parameter %s" % name 244 245 247 248 246 249 def _set_fixed_params(self): 247 250 """ … … 249 252 """ 250 253 for item in self.model.fixed: 251 if item.split('.')[0] in self.params.keys(): 254 if item.split('.')[0] in self.params.keys(): 252 255 self.fixed.append(item) 253 256 254 257 self.fixed.sort() 255 258 256 259 def run(self, x = 0.0): 257 """ 260 """ 258 261 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) 262 265 """ 263 266 # set effective radius and scaling factor before run … … 266 269 267 270 def runXY(self, x = 0.0): 268 """ 271 """ 269 272 Evaluate the model 270 271 : param x: input q-value (float or [float, float] as [qx, qy])272 : return: DAB value273 274 : param x: input q-value (float or [float, float] as [qx, qy]) 275 : return: DAB value 273 276 """ 274 277 # set effective radius and scaling factor before run 275 278 276 279 return self.model.runXY(x) 277 280 278 281 ## Now (May27,10) directly uses the model eval function 279 282 ## instead of the for-loop in Base Component. 280 283 def evalDistribution(self, x = []): 281 """ 284 """ 282 285 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[]) 286 289 """ 287 290 # set effective radius and scaling factor before run 288 291 return self.model.evalDistribution(x) 289 292 290 293 def calculate_ER(self): 291 """ 294 """ 292 295 Calculate the effective radius for P(q)*S(q) 293 296 294 297 :return: the value of the effective radius 295 """ 298 299 """ 296 300 return self.model.calculate_ER() 297 301 298 302 def calculate_VR(self): 299 """ 303 """ 300 304 Calculate the volf ratio for P(q)*S(q) 301 305 302 306 :return: the value of the volf ratio 303 """ 307 308 """ 304 309 return self.model.calculate_VR() 305 310 306 311 def set_dispersion(self, parameter, dispersion): 307 312 """ 308 313 Set the dispersion object for a model parameter 309 310 : param parameter: name of the parameter [string]311 : paramdispersion: dispersion object of type DispersionModel314 315 : param parameter: name of the parameter [string] 316 :dispersion: dispersion object of type DispersionModel 312 317 """ 313 318 value = None … … 318 323 return value 319 324 except: 320 raise 325 raise
Note: See TracChangeset
for help on using the changeset viewer.