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

Source Code for Module diffpy.srrietveld.phase

  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 Phase class in SrRietveld, which is an script interface 
 16  to access the structure information 
 17  """ 
 18   
 19  __id__ = "$Id: phase.py 6726 2011-08-25 09:36:23Z yshang $" 
 20   
 21  from diffpy.refinementdata.structure import Structure 
 22  from diffpy.srrietveld.paramnames import PARAMNAMES 
 23  import diffpy.srrietveld.utility as UTILS  
 24   
25 -class Phase(Structure):
26 """A Phase object saves the structure to be refined. It contains the 27 a list of variables to represent a structure. such as a, b, c, alpha, beta, 28 gamma and so on. 29 30 data member: 31 spacegroup: space group of the structure 32 a,b,c: the lattice constant 33 alpha,beta,gamma: the lattice angle 34 35 This class is also an interface for the Structure class in 36 diffpy.refinementdata.structure package, to provide convenient access functions 37 to the structure data 38 """
39 - def __init__(self, owner, name=None, handle=None, shape=None):
40 """ 41 Constructor. The construction of a Phase object is taken care of by the 42 Project. Users do not have to call this function directly. 43 44 @type owner: a data object 45 @param owner: the owner, which is usually a Refinement object. 46 @type name: string 47 @param name: the node name. 48 @type handle: a HDF5Handle object 49 @param handle: a HDF5Handle pointing to the underlying HDF5 node. 50 @type shape: tuple 51 @param shape: the shape of the data object. Each element denotes 52 the number of elements in each dimension 53 54 A name is passed to the initialization method when creating a node. 55 56 A handle is passed to the inialization method in two cases: 57 1. when loading from a HDF5 file; 58 2. when creating a HDF5 file but the object is a hard link to 59 a preexisiting one. 60 61 In the case when both name and handle are given, name will be simply ignored. 62 In the case when neither name nor handle is given, an exception will be raised. 63 """ 64 Structure.__init__(self, owner, name, handle, shape) 65 return
66
67 - def getAtomByName(self, name):
68 ''' 69 Get the atom by its name 70 71 @type name: string 72 @param name: the atom name 73 74 @return: the atom object with the name if exists. None if no such 75 phase object. The program will emit a warning if duplicate 76 atom names exist, and the first atom obj with the same name 77 will be returned 78 ''' 79 80 rv = [None] 81 rv = [obj for obj in self.listAtoms() if obj.name == name] 82 if len(rv) > 1: 83 __msg = 'Duplicate phase names, the first refinement is returned' 84 UTILS.printWarning(__msg) 85 86 return rv[0]
87
88 - def getSpaceGroup(self):
89 """ 90 Get the space group of the phase 91 92 @return: return the space group string list 93 """ 94 return self.getByPath(PARAMNAMES[self.getEngineType()]["space_group"])
95
96 - def getLatticeA(self):
97 """ 98 Get the lattice parameter a in angstroms 99 100 @return: the lattice a values 101 """ 102 return self.getByPath(PARAMNAMES[self.getEngineType()]["a"])
103
104 - def getLatticeASigma(self):
105 """ 106 Get the standard deviation of lattice parameter a in angstroms 107 108 @return: the lattice a values 109 """ 110 return self.getSigmaByPath(PARAMNAMES[self.getEngineType()]["a"])
111 112
113 - def getLatticeB(self):
114 """ 115 Get the lattice parameter b in anstrom 116 117 @return: the lattice b values 118 """ 119 return self.getByPath(PARAMNAMES[self.getEngineType()][ "b"])
120
121 - def getLatticeBSigma(self):
122 """ 123 Get the standard deviation of lattice parameter b in anstrom 124 125 @return: the lattice b standard deviations 126 """ 127 return self.getSigmaByPath(PARAMNAMES[self.getEngineType()][ "b"])
128
129 - def getLatticeC(self):
130 """ 131 Get the lattice parameter c in anstrom 132 133 @return: the lattice c values 134 """ 135 return self.getByPath(PARAMNAMES[self.getEngineType()]["c"])
136
137 - def getLatticeCSigma(self):
138 """ 139 Get the standard deviation of lattice parameter c in anstrom 140 141 @return: the lattice c standard deviations 142 """ 143 return self.getSigmaByPath(PARAMNAMES[self.getEngineType()]["c"])
144 145
146 - def getAlpha(self):
147 """ 148 Get the alpha value in degree 149 150 @return: if index is None, return the alpha value list in a Dataset 151 if index is a number or tuple, return the a value as a float 152 """ 153 return self.getByPath(PARAMNAMES[self.getEngineType()]["alpha"])
154
155 - def getAlphaSigma(self):
156 """ 157 Get the alpha value in degree 158 159 @return: if index is None, return the alpha value list in a Dataset 160 if index is a number or tuple, return the a value as a float 161 """ 162 return self.getSigmaByPath(PARAMNAMES[self.getEngineType()]["alpha"])
163 164
165 - def getBeta(self):
166 """ 167 Get the beta value in degree 168 169 @return: if index is None, return the beta value list in a Dataset 170 if index is a number or tuple, return the a value as a float 171 """ 172 return self.getByPath(PARAMNAMES[self.getEngineType()]["beta"])
173
174 - def getBetaSigma(self):
175 """ 176 Get the standard deviation beta value in degree 177 178 @return: the beta standard deviations 179 """ 180 return self.getSigmaByPath(PARAMNAMES[self.getEngineType()]["beta"])
181
182 - def getEngineType(self):
183 '''Get the engine type for this refinement 184 185 @return: the string of the engine type, for example I{"gsas"} or I{"fullprof"}''' 186 187 return self.owner.owner.getEngineType()
188
189 - def getGamma(self):
190 """ 191 Get the gamma value in degree 192 193 @return: return the gamma values 194 """ 195 return self.getByPath(PARAMNAMES[self.getEngineType()]["gamma"])
196
197 - def getGammaSigma(self):
198 """ 199 Get the standard deviation gamma value in degree 200 201 @return: return the gamma standard deviations 202 """ 203 return self.getSigmaByPath(PARAMNAMES[self.getEngineType()]["gamma"])
204
205 - def getName(self):
206 ''' 207 Get the phase name 208 209 @return: string 210 ''' 211 return self.get('Name').first()
212
213 - def getNumOfAtoms(self):
214 """ 215 Get number of atoms in the phase 216 217 @return: number of atoms 218 """ 219 return len(self.listAtoms())
220
221 - def listAtoms(self):
222 """ 223 List the atoms 224 225 @return: a list of Atom objects 226 """ 227 return [obj for obj in self.listObjects(recursively = True) if obj.name.startswith('Atom[')]
228
229 - def listAtomNames(self):
230 ''' 231 List the atom names 232 233 @return: a list of atom names in this phase 234 ''' 235 return[atom.getName() for atom in self.listAtoms()]
236