Changeset 279e371 in sasview for sansmodels/src/sans/models/CoreMultiShellModel.py
- Timestamp:
- Apr 18, 2012 1:26:13 PM (12 years ago)
- 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:
- 499fe7a
- Parents:
- 3ee4d96
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sansmodels/src/sans/models/CoreMultiShellModel.py
r339ce67 r279e371 1 1 """ 2 Core-Multi-Shell model 3 """ 2 4 from sans.models.BaseComponent import BaseComponent 3 5 from sans.models.CoreFourShellModel import CoreFourShellModel … … 11 13 def __init__(self, multfactor=1): 12 14 BaseComponent.__init__(self) 13 """14 :param n_shells: number of shells in the model, assumes 1<= n_shells <=4.15 """16 15 17 16 ## Setting model name model description 18 self.description=""19 17 model = CoreFourShellModel() 20 18 self.model = model 21 19 self.name = "CoreMultiShellModel" 22 self.description =""20 self.description = "" 23 21 self.n_shells = multfactor 24 22 ## Define parameters … … 45 43 # [int(maximum no. of functionality),"str(Titl), 46 44 # [str(name of function0),...], [str(x-asix name of sld),...]] 47 self.multiplicity_info = [max_nshells, "No. of Shells:",[],['Radius']]48 49 ## parameters with orientation: can be removed since there is no orientational params45 self.multiplicity_info = [max_nshells, "No. of Shells:", [], ['Radius']] 46 47 ## parameters with orientation: 50 48 for item in self.model.orientation_params: 51 49 self.orientation_params.append(item) 52 53 50 54 51 def _clone(self, obj): … … 57 54 data members to a fresh copy. 58 55 """ 59 obj.params 60 obj.description 61 obj.details 56 obj.params = copy.deepcopy(self.params) 57 obj.description = copy.deepcopy(self.description) 58 obj.details = copy.deepcopy(self.details) 62 59 obj.dispersion = copy.deepcopy(self.dispersion) 63 obj.model 60 obj.model = self.model.clone() 64 61 65 62 return obj 66 67 63 68 64 def _set_dispersion(self): … … 75 71 nshell = 0 76 72 if name.split('_')[0] == 'thick': 77 while nshell <self.n_shells:73 while nshell < self.n_shells: 78 74 nshell += 1 79 75 if name.split('_')[1] == 'shell%s' % str(nshell): 80 self.dispersion[name] = value76 self.dispersion[name] = value 81 77 else: 82 78 continue 83 79 else: 84 self.dispersion[name] = value80 self.dispersion[name] = value 85 81 86 82 … … 94 90 nshell = 0 95 91 if name.split('_')[0] == 'thick' or name.split('_')[0] == 'sld': 96 if name.split('_')[1] == 'solv' or name.split('_')[1] == 'core0': 97 self.params[name]= value 92 if name.split('_')[1] == 'solv' \ 93 or name.split('_')[1] == 'core0': 94 self.params[name] = value 98 95 continue 99 while nshell <self.n_shells:96 while nshell < self.n_shells: 100 97 nshell += 1 101 98 if name.split('_')[1] == 'shell%s' % str(nshell): 102 self.params[name] = value99 self.params[name] = value 103 100 continue 104 101 else: 105 self.params[name] = value102 self.params[name] = value 106 103 107 104 … … 116 113 for name ,detail in self.model.details.iteritems(): 117 114 if name in self.params.iterkeys(): 118 self.details[name] = detail115 self.details[name] = detail 119 116 120 117 … … 131 128 132 129 for nshell in range(self.n_shells,max_nshells): 133 if key.split('_')[0] == 'sld' and key.split('_')[1] == 'shell%s' % str(nshell+1): 130 if key.split('_')[0] == 'sld' and \ 131 key.split('_')[1] == 'shell%s' % str(nshell+1): 134 132 try: 135 133 value = self.model.params['sld_solv'] 136 134 self.model.setParam(key, value) 137 except: pass 135 except: 136 message = "CoreMultiShellModel evaluation problem" 137 raise RuntimeError, message 138 138 139 139 def getProfile(self): … … 155 155 156 156 # for shells 157 for n in range(1, self.n_shells+1):157 for n in range(1, self.n_shells+1): 158 158 # Left side of each shells 159 159 r0 = r[len(r)-1] … … 186 186 self._setParamHelper( name, value) 187 187 ## setParam to model 188 if name=='sld_solv': 189 # the sld_*** model.params not in params must set to value of sld_solv 188 if name == 'sld_solv': 189 # the sld_*** model.params not in params 190 # must set to value of sld_solv 190 191 for key in self.model.params.iterkeys(): 191 192 if key not in self.params.keys()and key.split('_')[0] == 'sld': 192 193 self.model.setParam(key, value) 193 194 self.model.setParam( name, value) 194 195 … … 199 200 #look for dispersion parameters 200 201 toks = name.split('.') 201 if len(toks) ==2:202 if len(toks) == 2: 202 203 for item in self.dispersion.keys(): 203 204 if item.lower()==toks[0].lower(): … … 224 225 225 226 self.fixed.sort() 226 pass227 227 228 228 def run(self, x = 0.0): … … 250 250 ## Now (May27,10) directly uses the model eval function 251 251 ## instead of the for-loop in Base Component. 252 def evalDistribution(self, x = []):252 def evalDistribution(self, x): 253 253 """ 254 254 Evaluate the model in cartesian coordinates … … 267 267 :dispersion: dispersion object of type DispersionModel 268 268 """ 269 value = None269 value = None 270 270 try: 271 271 if parameter in self.model.dispersion.keys(): 272 value = self.model.set_dispersion(parameter, dispersion)272 value = self.model.set_dispersion(parameter, dispersion) 273 273 self._set_dispersion() 274 274 return value
Note: See TracChangeset
for help on using the changeset viewer.