Package diffpy :: Package srrietveld :: Module pattern
[frames] | no frames]

Source Code for Module diffpy.srrietveld.pattern

  1  ############################################################################## 
  2  # 
  3  # diffpy.srrietveld by DANSE Diffraction group 
  4  #                   Simon J. L. Billinge 
  5  #                   (c) 2009 Trustees of the Columbia University 
  6  #                   in the City of New York.  All rights reserved. 
  7  # 
  8  # File coded by:    Yingrui Shang 
  9  # 
 10  # See AUTHORS.txt for a list of people who contributed. 
 11  # See LICENSE.txt for license information. 
 12  # 
 13  ############################################################################## 
 14  """ 
 15  This package contains the Pattern class in SrRietveld, which is an script interface 
 16  to access the structure information 
 17  """ 
 18   
 19  __id__ = "$Id: pattern.py 6727 2011-08-26 21:53:10Z yshang $" 
 20   
 21  from diffpy.refinementdata.pattern import Pattern as BasePattern 
 22  from diffpy.refinementdata.refinable import Refinable 
 23  from diffpy.srrietveld.paramnames import PARAMNAMES 
 24   
25 -class Pattern(BasePattern):
26 """ 27 Pattern inherits the Pattern class in diffpy.refinementdata. Its basic 28 data is the array of 2theta, time of flight, intensity, error. It may not 29 have a list of parameters. It may have a file object which stores the original 30 data. 31 32 data member: 33 34 xobs: the observed data 35 yobs: the observed y data 36 ycal: the refined y data 37 refl: the reflection list 38 srcfiles: the source files, including data files and source files 39 """ 40 41
42 - def __init__(self, owner, name=None, handle=None, shape=None):
43 """Initialization 44 45 @type owner: a data project 46 @param owner: the owner, which is usually a refinement. 47 @type name: string 48 @param name the name of the pattern 49 @type handle: a HDF5Handle object 50 @param handle: a HDF5Handle pointing to the underlying HDF5 node. 51 52 A name is passed to the initialization method when creating a node. 53 54 A handle is passed to the inialization method in two cases: 55 1. when loading from a HDF5 file; 56 2. when creating a HDF5 file but the object is a hard link to 57 a preexisiting one. 58 59 In the case when both name and handle are given, name will be simply ignored. 60 In the case when neither name nor handle is given, an exception will be raised. 61 62 Usually in the scripting interface, users do not have to worry about the 63 initialization 64 """ 65 BasePattern.__init__(self, owner, name, handle, shape) 66 67 return
68
69 - def getAbsoluteDataFile(self):
70 ''' 71 Get the absolute data file path 72 73 @return: the absolute data path strings 74 ''' 75 return self.getByPath(PARAMNAMES[self.getEngineType()]['data_file_absolute'])
76
78 ''' 79 Get the background coefficients in a two dimensional array 80 81 @return: the background coefficient values in a two dimensional array 82 ''' 83 return self.getByPath(PARAMNAMES[self.getEngineType()]['background_coefficients'])
84
86 ''' 87 Get the background coefficients standard deviations in a two dimensional array 88 89 @return: the background coefficient standard deviations in a two dimensional array 90 ''' 91 return self.getSigmaByPath(PARAMNAMES[self.getEngineType()]['background_coefficients'])
92
93 - def getBackgroundType(self):
94 ''' 95 Get the background type identification number. This number has different 96 meanings in engines. 97 98 @return: an integer represent the type of the background function 99 ''' 100 return self.getByPath(PARAMNAMES[self.getEngineType()]['background_type']).first()
101
102 - def getDataFile(self):
103 ''' 104 Get the path of the data file. 105 106 @return: the data path strings 107 ''' 108 return self.getByPath(PARAMNAMES[self.getEngineType()]['data_file'])
109
110 - def getEngineType(self):
111 '''Get the engine type for this refinement 112 113 @return: the string of the engine type, for example I{"gsas"} or I{"fullprof"}''' 114 115 return self.owner.owner.getEngineType()
116
117 - def getPolarType(self):
118 ''' 119 Get the polarization type id numbers. These numbers have different meanings 120 in different engine files, please refer to the manual of the refinement engine. 121 122 @return: the Tmin of the pattern as float 123 ''' 124 return self.getByPath(PARAMNAMES[self.getEngineType()]['polar_type'])
125
126 - def getLambda(self):
127 ''' 128 Get the refined wavelength value. In FullProf, there can be only one 129 lambda value can be refined 130 131 @return: the values of wavelength in angstroms 132 ''' 133 return self.getByPath(PARAMNAMES[self.getEngineType()]['lambda'])
134
135 - def getLambdaSigma(self):
136 ''' 137 Get the refined wavelength standard deviation. In FullProf, there can be only one 138 lambda value can be refined 139 140 @return: the wavelength standard deviation 141 ''' 142 return self.getSigmaByPath(PARAMNAMES[self.getEngineType()]['lambda'])
143
144 - def getLambda1(self):
145 ''' 146 Get the first wavelength value 147 148 @return: the values of the wavelength in angstroms 149 ''' 150 return self.getByPath(PARAMNAMES[self.getEngineType()]['lambda1'])
151
152 - def getLambda1Sigma(self):
153 ''' 154 Get the first wavelength standard deviation 155 156 @return: the wavelength standard deviation 157 ''' 158 return self.getSigmaByPath(PARAMNAMES[self.getEngineType()]['lambda1'])
159
160 - def getLambda2(self):
161 ''' 162 Get the second wavelength value 163 164 @return: the values of the wavelength in angstroms 165 ''' 166 return self.getByPath(PARAMNAMES[self.getEngineType()]['lambda2'])
167
168 - def getLambda2Sigma(self):
169 ''' 170 Get the second wavelength standard deviation 171 172 @return: the wavelength standard deviation 173 ''' 174 return self.getSigmaByPath(PARAMNAMES[self.getEngineType()]['lambda2'])
175
177 ''' 178 Get the number of background coefficients. This is number is from the 179 dimensions of the background coefficients array 180 181 @return: the number of background coefficients 182 ''' 183 return len(self.getBackgroundCoefficients()[0])
184
185 - def getPolar(self):
186 ''' 187 Get the polarization factors 188 189 @return: the polarization factors 190 ''' 191 return self.getByPath(PARAMNAMES[self.getEngineType()]['polar'])
192
193 - def getRp(self):
194 ''' 195 Get the Rp value of the refinement list 196 197 @return: the values of Rp 198 ''' 199 return self.getByPath(PARAMNAMES[self.getEngineType()]['Rp'])
200
201 - def getRwp(self):
202 ''' 203 Get the Rwp value of the refinement list 204 205 @return: the values of Rwp 206 ''' 207 return self.getByPath(PARAMNAMES[self.getEngineType()]['Rwp'])
208
209 - def getRatio(self):
210 ''' 211 Get the ratio value of the refinement list. These values are read from 212 the engine files, and not calculated in SrRietveld. 213 214 @return: the values of ratios of intensities of lambda2 / lambda1 215 ''' 216 return self.getByPath(PARAMNAMES[self.getEngineType()]['ratio'])
217
218 - def getScale(self):
219 ''' 220 Get the scale factor of the pattern 221 222 @return: the scale factor of the pattern as float 223 ''' 224 return self.getByPath(PARAMNAMES[self.getEngineType()]['scale'])
225
226 - def getScaleSigma(self):
227 ''' 228 Get the scale factor standard deviation 229 230 @return: the scale factor standard deviation 231 ''' 232 return self.getSigmaByPath(PARAMNAMES[self.getEngineType()]['scale'])
233
234 - def getStep(self):
235 ''' 236 Get the step values 237 238 @return: the step sizes 239 ''' 240 return self.getByPath(PARAMNAMES[self.getEngineType()]['step'])
241
242 - def getTmin(self):
243 ''' 244 Get the Tmin of the pattern 245 246 @return: the Tmin of the pattern as float 247 ''' 248 return self.getByPath(PARAMNAMES[self.getEngineType()]['Tmin'])
249
250 - def getUseFlag(self):
251 ''' 252 Get the use flag of this pattern. In GSAS a histogram can be flagged as 253 used (True) or unused (False). The pattern will be included in the 254 refinement only if its used. The pattern will always be used in a 255 FullProf refinement. 256 257 @return: the use flags (boolean) of this pattern in refinements 258 ''' 259 return self.getByPath(PARAMNAMES[self.getEngineType()]['used'])
260
261 - def getTmax(self):
262 ''' 263 Get the Tmax of the pattern 264 265 @return: the Tmax of the pattern as float 266 ''' 267 return self.getByPath(PARAMNAMES[self.getEngineType()]['Tmax'])
268
269 - def getXobs(self):
270 ''' 271 Get the observed x axis points. This parameters is only available after 272 the refinement is complete. 273 274 @return: a multi-dimensional array with the x axis points. 275 ''' 276 return self.getByPath(PARAMNAMES[self.getEngineType()]['xobs'])
277
278 - def getYobs(self):
279 ''' 280 Get the observed y values. This parameters is only available after 281 the refinement is complete. 282 283 @return: a multi-dimensional array with the observed y values. 284 ''' 285 return self.getByPath(PARAMNAMES[self.getEngineType()]['yobs'])
286
287 - def getYcal(self):
288 ''' 289 Get the calculated y values. This parameters is only available after 290 the refinement is complete. 291 292 @return: a multi-dimensional array with the calculated y values. 293 ''' 294 return self.getByPath(PARAMNAMES[self.getEngineType()]['ycal'])
295
296 - def getZero(self):
297 ''' 298 Get the zero shift value for this pattern 299 300 @return: the zero shift value as float 301 ''' 302 return self.getByPath(PARAMNAMES[self.getEngineType()]['zero'])
303
304 - def getZeroSigma(self):
305 ''' 306 Get the zero shift standard deviation 307 308 @return: the zero shift standard deviation 309 ''' 310 return self.getSigmaByPath(PARAMNAMES[self.getEngineType()]['zero'])
311
312 - def listExcludedRegions(self):
313 ''' 314 Get the excluded regions as list 315 ''' 316 return [obj for obj in self.listObjects(recursively = True) if obj.name.startswith('ExcludedRegion[')]
317
318 -class ExcludedRegion(Refinable):
319 ''' 320 This is a script interface of the excluded region, with access functions to 321 the begin and end parameters in the object 322 '''
323 - def __init__(self, owner, name=None, handle=None, formula=None, variables=None, shape=None):
324 """Initialization. 325 326 @type owner: a data project 327 @param owner: the owner, which is usually a refinement. 328 @type name: string 329 @param name the name of the pattern 330 @type handle: a HDF5Handle object 331 @param handle: a HDF5Handle pointing to the underlying HDF5 node. 332 @type formula: string 333 @param formula: a string of the function definition in C style 334 @type variables: a space separated string 335 @param variables: a space separated string of all variables 336 337 A name is passed to the initialization method when creating a node. 338 339 A handle is passed to the inialization method in two cases: 340 1. when loading from a HDF5 file; 341 2. when creating a HDF5 file but the object is a hard link to 342 a preexisiting one. 343 344 In the case when both name and handle are given, name will be simply ignored. 345 In the case when neither name nor handle is given, an exception will be raised. 346 347 Generally, in the scripting interface, users do not have to call this 348 constructor directly 349 """ 350 Refinable.__init__(self, owner, name, handle, shape) 351 return
352
353 - def getBegin(self):
354 ''' 355 Get the begin values of the excluded region 356 357 @return: begin values 358 ''' 359 return self.getByPath(PARAMNAMES[self.getEngineType()]["begin"])
360
361 - def getEnd(self):
362 ''' 363 Get the end values of the excluded region 364 365 @return: end values 366 ''' 367 return self.getByPath(PARAMNAMES[self.getEngineType()]["end"])
368 369
370 - def getEngineType(self):
371 '''Get the engine type for this refinement 372 373 @return: the string of the engine type, for example I{"gsas"} or I{"fullprof"}''' 374 375 return self.owner.owner.getEngineType()
376