1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" |
---|
2 | "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
---|
3 | |
---|
4 | |
---|
5 | <html xmlns="http://www.w3.org/1999/xhtml"> |
---|
6 | <head> |
---|
7 | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
---|
8 | |
---|
9 | <title>GSASIIobj — GSAS-II 0.2.0 documentation</title> |
---|
10 | |
---|
11 | <link rel="stylesheet" href="../_static/default.css" type="text/css" /> |
---|
12 | <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> |
---|
13 | |
---|
14 | <script type="text/javascript"> |
---|
15 | var DOCUMENTATION_OPTIONS = { |
---|
16 | URL_ROOT: '../', |
---|
17 | VERSION: '0.2.0', |
---|
18 | COLLAPSE_INDEX: false, |
---|
19 | FILE_SUFFIX: '.html', |
---|
20 | HAS_SOURCE: true |
---|
21 | }; |
---|
22 | </script> |
---|
23 | <script type="text/javascript" src="../_static/jquery.js"></script> |
---|
24 | <script type="text/javascript" src="../_static/underscore.js"></script> |
---|
25 | <script type="text/javascript" src="../_static/doctools.js"></script> |
---|
26 | <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> |
---|
27 | <link rel="top" title="GSAS-II 0.2.0 documentation" href="../index.html" /> |
---|
28 | <link rel="up" title="Module code" href="index.html" /> |
---|
29 | </head> |
---|
30 | <body> |
---|
31 | <div class="related"> |
---|
32 | <h3>Navigation</h3> |
---|
33 | <ul> |
---|
34 | <li class="right" style="margin-right: 10px"> |
---|
35 | <a href="../genindex.html" title="General Index" |
---|
36 | accesskey="I">index</a></li> |
---|
37 | <li class="right" > |
---|
38 | <a href="../py-modindex.html" title="Python Module Index" |
---|
39 | >modules</a> |</li> |
---|
40 | <li><a href="../index.html">GSAS-II 0.2.0 documentation</a> »</li> |
---|
41 | <li><a href="index.html" accesskey="U">Module code</a> »</li> |
---|
42 | </ul> |
---|
43 | </div> |
---|
44 | |
---|
45 | <div class="document"> |
---|
46 | <div class="documentwrapper"> |
---|
47 | <div class="bodywrapper"> |
---|
48 | <div class="body"> |
---|
49 | |
---|
50 | <h1>Source code for GSASIIobj</h1><div class="highlight"><pre> |
---|
51 | <span class="c"># -*- coding: utf-8 -*-</span> |
---|
52 | <span class="c">#GSASIIobj - data objects for GSAS-II</span> |
---|
53 | <span class="c">########### SVN repository information ###################</span> |
---|
54 | <span class="c"># $Date: 2015-03-12 17:09:00 -0500 (Thu, 12 Mar 2015) $</span> |
---|
55 | <span class="c"># $Author: toby $</span> |
---|
56 | <span class="c"># $Revision: 1698 $</span> |
---|
57 | <span class="c"># $URL: https://subversion.xray.aps.anl.gov/pyGSAS/trunk/GSASIIobj.py $</span> |
---|
58 | <span class="c"># $Id: GSASIIobj.py 1698 2015-03-12 22:09:00Z toby $</span> |
---|
59 | <span class="c">########### SVN repository information ###################</span> |
---|
60 | |
---|
61 | <span class="sd">'''</span> |
---|
62 | <span class="sd">*GSASIIobj: Data objects*</span> |
---|
63 | <span class="sd">=========================</span> |
---|
64 | |
---|
65 | <span class="sd">This module defines and/or documents the data structures used in GSAS-II, as well</span> |
---|
66 | <span class="sd">as provides misc. support routines. </span> |
---|
67 | |
---|
68 | <span class="sd">Constraints Tree Item</span> |
---|
69 | <span class="sd">----------------------</span> |
---|
70 | |
---|
71 | <span class="sd">.. _Constraints_table:</span> |
---|
72 | |
---|
73 | <span class="sd">.. index::</span> |
---|
74 | <span class="sd"> single: Constraints object description</span> |
---|
75 | <span class="sd"> single: Data object descriptions; Constraints</span> |
---|
76 | |
---|
77 | <span class="sd">Constraints are stored in a dict, separated into groups.</span> |
---|
78 | <span class="sd">Note that parameter are named in the following pattern,</span> |
---|
79 | <span class="sd">p:h:<var>:n, where p is the phase number, h is the histogram number</span> |
---|
80 | <span class="sd"><var> is a variable name and n is the parameter number.</span> |
---|
81 | <span class="sd">If a parameter does not depend on a histogram or phase or is unnumbered, that</span> |
---|
82 | <span class="sd">number is omitted.</span> |
---|
83 | <span class="sd">Note that the contents of each dict item is a List where each element in the</span> |
---|
84 | <span class="sd">list is a :ref:`constraint definition objects <Constraint_definitions_table>`.</span> |
---|
85 | <span class="sd">The constraints in this form are converted in</span> |
---|
86 | <span class="sd">:func:`GSASIIstrIO.ProcessConstraints` to the form used in :mod:`GSASIImapvars`</span> |
---|
87 | |
---|
88 | <span class="sd">The keys in the Constraints dict are:</span> |
---|
89 | |
---|
90 | <span class="sd">.. tabularcolumns:: |l|p{4.5in}|</span> |
---|
91 | |
---|
92 | <span class="sd">========== ====================================================</span> |
---|
93 | <span class="sd"> key explanation</span> |
---|
94 | <span class="sd">========== ====================================================</span> |
---|
95 | <span class="sd">Hist This specifies a list of constraints on </span> |
---|
96 | <span class="sd"> histogram-related parameters,</span> |
---|
97 | <span class="sd"> which will be of form :h:<var>:n.</span> |
---|
98 | <span class="sd">HAP This specifies a list of constraints on parameters</span> |
---|
99 | <span class="sd"> that are defined for every histogram in each phase</span> |
---|
100 | <span class="sd"> and are of form p:h:<var>:n. </span> |
---|
101 | <span class="sd">Phase This specifies a list of constraints on phase</span> |
---|
102 | <span class="sd"> parameters,</span> |
---|
103 | <span class="sd"> which will be of form p::<var>:n.</span> |
---|
104 | <span class="sd">Global This specifies a list of constraints on parameters</span> |
---|
105 | <span class="sd"> that are not tied to a histogram or phase and</span> |
---|
106 | <span class="sd"> are of form ::<var>:n</span> |
---|
107 | <span class="sd">========== ====================================================</span> |
---|
108 | |
---|
109 | <span class="sd">.. _Constraint_definitions_table:</span> |
---|
110 | |
---|
111 | <span class="sd">.. index::</span> |
---|
112 | <span class="sd"> single: Constraint definition object description</span> |
---|
113 | <span class="sd"> single: Data object descriptions; Constraint Definition</span> |
---|
114 | |
---|
115 | <span class="sd">Each constraint is defined as an item in a list. Each constraint is of form::</span> |
---|
116 | |
---|
117 | <span class="sd">[[<mult1>, <var1>], [<mult2>, <var2>],..., <fixedval>, <varyflag>, <constype>]</span> |
---|
118 | |
---|
119 | <span class="sd">Where the variable pair list item containing two values [<mult>, <var>], where: </span> |
---|
120 | |
---|
121 | <span class="sd"> * <mult> is a multiplier for the constraint (float)</span> |
---|
122 | <span class="sd"> * <var> a :class:`G2VarObj` object (previously a str variable name of form</span> |
---|
123 | <span class="sd"> 'p:h:name[:at]')</span> |
---|
124 | |
---|
125 | <span class="sd">Note that the last three items in the list play a special role:</span> |
---|
126 | |
---|
127 | <span class="sd"> * <fixedval> is the fixed value for a `constant equation` (``constype=c``)</span> |
---|
128 | <span class="sd"> constraint or is None. For a `New variable` (``constype=f``) constraint,</span> |
---|
129 | <span class="sd"> a variable name can be specified as a str (used for externally</span> |
---|
130 | <span class="sd"> generated constraints)</span> |
---|
131 | <span class="sd"> * <varyflag> is True or False for `New variable` (``constype=f``) constraints</span> |
---|
132 | <span class="sd"> or is None. This will be implemented in the future to indicate if these variables</span> |
---|
133 | <span class="sd"> should be refined.</span> |
---|
134 | <span class="sd"> * <constype> is one of four letters, 'e', 'c', 'h', 'f' that determines the type of constraint:</span> |
---|
135 | |
---|
136 | <span class="sd"> * 'e' defines a set of equivalent variables. Only the first variable is refined (if the</span> |
---|
137 | <span class="sd"> appropriate refine flag is set) and and all other equivalent variables in the list</span> |
---|
138 | <span class="sd"> are generated from that variable, using the appropriate multipliers. </span> |
---|
139 | <span class="sd"> * 'c' defines a constraint equation of form,</span> |
---|
140 | <span class="sd"> :math:`m_1 \\times var_1 + m_2 \\times var_2 + ... = c`</span> |
---|
141 | <span class="sd"> * 'h' defines a variable to hold (not vary). Any variable on this list is not varied,</span> |
---|
142 | <span class="sd"> even if its refinement flag is set. Only one [mult,var] pair is allowed in a hold</span> |
---|
143 | <span class="sd"> constraint and the mult value is ignored.</span> |
---|
144 | <span class="sd"> This is of particular value when needing to hold one or more variables where a</span> |
---|
145 | <span class="sd"> single flag controls a set of variables such as, coordinates, </span> |
---|
146 | <span class="sd"> the reciprocal metric tensor or anisotropic displacement parameter. </span> |
---|
147 | <span class="sd"> * 'f' defines a new variable (function) according to relationship </span> |
---|
148 | <span class="sd"> :math:`newvar = m_1 \\times var_1 + m_2 \\times var_2 + ...`</span> |
---|
149 | |
---|
150 | <span class="sd">Covariance Tree Item</span> |
---|
151 | <span class="sd">--------------------</span> |
---|
152 | |
---|
153 | <span class="sd">.. _Covariance_table:</span> |
---|
154 | |
---|
155 | <span class="sd">.. index::</span> |
---|
156 | <span class="sd"> single: Covariance description</span> |
---|
157 | <span class="sd"> single: Data object descriptions; Covariance</span> |
---|
158 | |
---|
159 | <span class="sd">The Covariance tree item has results from the last least-squares run. They</span> |
---|
160 | <span class="sd">are stored in a dict with these keys:</span> |
---|
161 | |
---|
162 | <span class="sd">.. tabularcolumns:: |l|l|p{4in}|</span> |
---|
163 | |
---|
164 | <span class="sd">============= =============== ====================================================</span> |
---|
165 | <span class="sd"> key sub-key explanation</span> |
---|
166 | <span class="sd">============= =============== ====================================================</span> |
---|
167 | <span class="sd">newCellDict \ dict with lattice parameters computed by</span> |
---|
168 | <span class="sd"> :func:`GSASIIstrMath.GetNewCellParms` (dict)</span> |
---|
169 | <span class="sd">title \ Name of gpx file(?) (str)</span> |
---|
170 | <span class="sd">variables \ Values for all N refined variables</span> |
---|
171 | <span class="sd"> (list of float values, length N,</span> |
---|
172 | <span class="sd"> ordered to match varyList)</span> |
---|
173 | <span class="sd">sig \ Uncertainty values for all N refined variables</span> |
---|
174 | <span class="sd"> (list of float values, length N,</span> |
---|
175 | <span class="sd"> ordered to match varyList)</span> |
---|
176 | <span class="sd">varyList \ List of directly refined variables </span> |
---|
177 | <span class="sd"> (list of str values, length N)</span> |
---|
178 | <span class="sd">newAtomDict \ dict with atom position values computed in </span> |
---|
179 | <span class="sd"> :func:`GSASIIstrMath.ApplyXYZshifts` (dict)</span> |
---|
180 | <span class="sd">Rvals \ R-factors, GOF, Marquardt value for last</span> |
---|
181 | <span class="sd"> refinement cycle (dict)</span> |
---|
182 | <span class="sd">\ Nobs Number of observed data points (int)</span> |
---|
183 | <span class="sd">\ Rwp overall weighted profile R-factor (%, float)</span> |
---|
184 | <span class="sd">\ chisq sum[w*(Iobs-Icalc)**2] for all data</span> |
---|
185 | <span class="sd"> note this is not the reduced chi squared (float)</span> |
---|
186 | <span class="sd">\ lamMax Marquardt value applied to Hessian diagonal</span> |
---|
187 | <span class="sd"> (float)</span> |
---|
188 | <span class="sd">\ GOF The goodness-of-fit, aka square root of</span> |
---|
189 | <span class="sd"> the reduced chi squared. (float)</span> |
---|
190 | <span class="sd">covMatrix \ The (NxN) covVariance matrix (np.array)</span> |
---|
191 | <span class="sd">============= =============== ====================================================</span> |
---|
192 | |
---|
193 | <span class="sd">Phase Tree Items</span> |
---|
194 | <span class="sd">----------------</span> |
---|
195 | |
---|
196 | <span class="sd">.. _Phase_table:</span> |
---|
197 | |
---|
198 | <span class="sd">.. index::</span> |
---|
199 | <span class="sd"> single: Phase object description</span> |
---|
200 | <span class="sd"> single: Data object descriptions; Phase</span> |
---|
201 | |
---|
202 | <span class="sd">Phase information is stored in the GSAS-II data tree as children of the</span> |
---|
203 | <span class="sd">Phases item in a dict with keys:</span> |
---|
204 | |
---|
205 | <span class="sd">.. tabularcolumns:: |l|l|p{4in}|</span> |
---|
206 | |
---|
207 | <span class="sd">========== =============== ====================================================</span> |
---|
208 | <span class="sd"> key sub-key explanation</span> |
---|
209 | <span class="sd">========== =============== ====================================================</span> |
---|
210 | <span class="sd">General \ Overall information for the phase (dict)</span> |
---|
211 | <span class="sd"> \ AtomPtrs list of four locations to use to pull info</span> |
---|
212 | <span class="sd"> from the atom records (list)</span> |
---|
213 | <span class="sd"> \ F000X x-ray F(000) intensity (float)</span> |
---|
214 | <span class="sd"> \ F000N neutron F(000) intensity (float)</span> |
---|
215 | <span class="sd"> \ Mydir directory of current .gpx file (str)</span> |
---|
216 | <span class="sd"> \ MCSA controls Monte Carlo-Simulated Annealing controls (dict)</span> |
---|
217 | <span class="sd"> \ Cell List with 8 items: cell refinement flag (bool)</span> |
---|
218 | <span class="sd"> a, b, c, (Angstrom, float)</span> |
---|
219 | <span class="sd"> alpha, beta & gamma (degrees, float)</span> |
---|
220 | <span class="sd"> volume (A^3, float)</span> |
---|
221 | <span class="sd"> \ Type 'nuclear' or 'macromolecular' for now (str)</span> |
---|
222 | <span class="sd"> \ Map dict of map parameters</span> |
---|
223 | <span class="sd"> \ SH Texture dict of spherical harmonic preferred orientation </span> |
---|
224 | <span class="sd"> parameters</span> |
---|
225 | <span class="sd"> \ Isotope dict of isotopes for each atom type</span> |
---|
226 | <span class="sd"> \ Isotopes dict of scattering lengths for each isotope</span> |
---|
227 | <span class="sd"> combination for each element in phase </span> |
---|
228 | <span class="sd"> \ Name phase name (str)</span> |
---|
229 | <span class="sd"> \ SGData Space group details as a :ref:`space group (SGData) object <SGData_table>`</span> |
---|
230 | <span class="sd"> as defined in :func:`GSASIIspc.SpcGroup`.</span> |
---|
231 | <span class="sd"> \ Pawley neg wt Restraint value for negative Pawley intensities</span> |
---|
232 | <span class="sd"> (float)</span> |
---|
233 | <span class="sd"> \ Flip dict of Charge flip controls </span> |
---|
234 | <span class="sd"> \ Data plot type data plot type ('Mustrain', 'Size' or </span> |
---|
235 | <span class="sd"> 'Preferred orientation') for powder data (str)</span> |
---|
236 | <span class="sd"> \ Mass Mass of unit cell contents in g/mol</span> |
---|
237 | <span class="sd"> \ POhkl March-Dollase preferred orientation direction</span> |
---|
238 | <span class="sd"> \ Z dict of atomic numbers for each atom type </span> |
---|
239 | <span class="sd"> \ vdWRadii dict of van der Waals radii for each atom type </span> |
---|
240 | <span class="sd"> \ Color Colors for atoms (list of (r,b,g) triplets)</span> |
---|
241 | <span class="sd"> \ AtomTypes List of atom types</span> |
---|
242 | <span class="sd"> \ AtomMass List of masses for atoms</span> |
---|
243 | <span class="sd"> \ doPawley Flag for Pawley intensity extraction (bool)</span> |
---|
244 | <span class="sd"> \ NoAtoms Number of atoms per unit cell of each type (dict)</span> |
---|
245 | <span class="sd"> \ Pawley dmin maximum Q (as d-space) to use for Pawley </span> |
---|
246 | <span class="sd"> extraction (float)</span> |
---|
247 | <span class="sd"> \ BondRadii Default radius for each atom used to compute </span> |
---|
248 | <span class="sd"> interatomic distances (list of floats)</span> |
---|
249 | <span class="sd"> \ AngleRadii Default radius for each atom used to compute </span> |
---|
250 | <span class="sd"> interatomic angles (list of floats)</span> |
---|
251 | <span class="sd"> \ DisAglCtls Dict with distance/angle search controls,</span> |
---|
252 | <span class="sd"> which has keys 'Name', 'AtomTypes',</span> |
---|
253 | <span class="sd"> 'BondRadii', 'AngleRadii' which are as above</span> |
---|
254 | <span class="sd"> except are possibly edited. Also contains</span> |
---|
255 | <span class="sd"> 'Factors', which is a 2 element list with</span> |
---|
256 | <span class="sd"> a multiplier for bond and angle search range</span> |
---|
257 | <span class="sd"> [typically (0.85,0.85)].</span> |
---|
258 | <span class="sd">ranId \ unique random number Id for phase (int)</span> |
---|
259 | <span class="sd">pId \ Phase Id number for current project (int).</span> |
---|
260 | <span class="sd">Atoms \ Atoms in phase as a list of lists. The outer list</span> |
---|
261 | <span class="sd"> is for each atom, the inner list contains varying</span> |
---|
262 | <span class="sd"> items depending on the type of phase, see</span> |
---|
263 | <span class="sd"> the :ref:`Atom Records <Atoms_table>` description.</span> |
---|
264 | <span class="sd"> (list of lists)</span> |
---|
265 | <span class="sd">Drawing \ Display parameters (dict)</span> |
---|
266 | <span class="sd">\ ballScale Size of spheres in ball-and-stick display (float)</span> |
---|
267 | <span class="sd">\ bondList dict with bonds</span> |
---|
268 | <span class="sd">\ contourLevel map contour level in e/A^3 (float)</span> |
---|
269 | <span class="sd">\ showABC Flag to show view point triplet (bool). True=show.</span> |
---|
270 | <span class="sd">\ viewDir cartesian viewing direction (np.array with three</span> |
---|
271 | <span class="sd"> elements)</span> |
---|
272 | <span class="sd">\ Zclip clipping distance in A (float)</span> |
---|
273 | <span class="sd">\ backColor background for plot as and R,G,B triplet</span> |
---|
274 | <span class="sd"> (default = [0, 0, 0], black).</span> |
---|
275 | <span class="sd"> (list with three atoms)</span> |
---|
276 | <span class="sd">\ selectedAtoms List of selected atoms (list of int values)</span> |
---|
277 | <span class="sd">\ showRigidBodies Flag to highlight rigid body placement</span> |
---|
278 | <span class="sd">\ sizeH Size ratio for H atoms (float) </span> |
---|
279 | <span class="sd">\ bondRadius Size of binds in A (float)</span> |
---|
280 | <span class="sd">\ atomPtrs positions of x, type, site sym, ADP flag in Draw Atoms (list)</span> |
---|
281 | <span class="sd">\ viewPoint list of lists. First item in list is [x,y,z]</span> |
---|
282 | <span class="sd"> in fractional coordinates for the center of</span> |
---|
283 | <span class="sd"> the plot. Second item list of previous & current </span> |
---|
284 | <span class="sd"> atom number viewed (may be [0,0])</span> |
---|
285 | <span class="sd">\ showHydrogen Flag to control plotting of H atoms.</span> |
---|
286 | <span class="sd">\ unitCellBox Flag to control display of the unit cell.</span> |
---|
287 | <span class="sd">\ ellipseProb Probability limit for display of thermal</span> |
---|
288 | <span class="sd"> ellipsoids in % (float).</span> |
---|
289 | <span class="sd">\ vdwScale Multiplier of van der Waals radius for</span> |
---|
290 | <span class="sd"> display of vdW spheres. </span> |
---|
291 | <span class="sd">\ Atoms A list of lists with an entry for each atom</span> |
---|
292 | <span class="sd"> that is plotted.</span> |
---|
293 | <span class="sd">\ Zstep Step to de/increase Z-clip (float)</span> |
---|
294 | <span class="sd">\ Quaternion Viewing quaternion (4 element np.array)</span> |
---|
295 | <span class="sd">\ radiusFactor Distance ratio for searching for bonds. ? Bonds</span> |
---|
296 | <span class="sd"> are located that are within r(Ra+Rb) and (Ra+Rb)/r</span> |
---|
297 | <span class="sd"> where Ra and Rb are the atomic radii.</span> |
---|
298 | <span class="sd">\ oldxy previous view point (list with two floats)</span> |
---|
299 | <span class="sd">\ cameraPos Viewing position in A for plot (float)</span> |
---|
300 | <span class="sd">\ depthFog True if use depthFog on plot - set currently as False (bool)</span> |
---|
301 | <span class="sd">RBModels \ Rigid body assignments (note Rigid body definitions</span> |
---|
302 | <span class="sd"> are stored in their own main top-level tree entry.)</span> |
---|
303 | <span class="sd">Pawley ref \ Pawley reflections</span> |
---|
304 | <span class="sd">Histograms \ A dict of dicts. The key for the outer dict is</span> |
---|
305 | <span class="sd"> the histograms tied to this phase. The inner</span> |
---|
306 | <span class="sd"> dict contains the combined phase/histogram</span> |
---|
307 | <span class="sd"> parameters for items such as scale factors,</span> |
---|
308 | <span class="sd"> size and strain parameters. (dict)</span> |
---|
309 | <span class="sd">MCSA \ Monte-Carlo simulated annealing parameters (dict)</span> |
---|
310 | <span class="sd">\ </span> |
---|
311 | <span class="sd">========== =============== ====================================================</span> |
---|
312 | |
---|
313 | <span class="sd">Rigid Body Objects</span> |
---|
314 | <span class="sd">------------------</span> |
---|
315 | |
---|
316 | <span class="sd">.. _RBData_table:</span> |
---|
317 | |
---|
318 | <span class="sd">.. index::</span> |
---|
319 | <span class="sd"> single: Rigid Body Data description</span> |
---|
320 | <span class="sd"> single: Data object descriptions; Rigid Body Data</span> |
---|
321 | <span class="sd"> </span> |
---|
322 | <span class="sd">Rigid body descriptions are available for two types of rigid bodies: 'Vector' </span> |
---|
323 | <span class="sd">and 'Residue'. Vector rigid bodies are developed by a sequence of translations each</span> |
---|
324 | <span class="sd">with a refinable magnitude and Residue rigid bodies are described as Cartesian coordinates</span> |
---|
325 | <span class="sd">with defined refinable torsion angles.</span> |
---|
326 | |
---|
327 | <span class="sd">.. tabularcolumns:: |l|l|p{4in}|</span> |
---|
328 | |
---|
329 | <span class="sd">========== =============== ====================================================</span> |
---|
330 | <span class="sd"> key sub-key explanation</span> |
---|
331 | <span class="sd">========== =============== ====================================================</span> |
---|
332 | <span class="sd">Vector RBId vector rigid bodies (dict of dict)</span> |
---|
333 | <span class="sd">\ AtInfo Drad, Color: atom drawing radius & color for each atom type (dict)</span> |
---|
334 | <span class="sd">\ RBname Name assigned by user to rigid body (str)</span> |
---|
335 | <span class="sd">\ VectMag vector magnitudes in A (list)</span> |
---|
336 | <span class="sd">\ rbXYZ Cartesian coordinates for Vector rigid body (list of 3 float)</span> |
---|
337 | <span class="sd">\ rbRef 3 assigned reference atom nos. in rigid body for origin </span> |
---|
338 | <span class="sd"> definition, use center of atoms flag (list of 3 int & 1 bool)</span> |
---|
339 | <span class="sd">\ VectRef refinement flags for VectMag values (list of bool)</span> |
---|
340 | <span class="sd">\ rbTypes Atom types for each atom in rigid body (list of str)</span> |
---|
341 | <span class="sd">\ rbVect Cartesian vectors for each translation used to build rigid body (list of lists)</span> |
---|
342 | <span class="sd">\ useCount Number of times rigid body is used in any structure (int)</span> |
---|
343 | <span class="sd">Residue RBId residue rigid bodies (dict of dict)</span> |
---|
344 | <span class="sd">\ AtInfo Drad, Color: atom drawing radius & color for each atom type(dict)</span> |
---|
345 | <span class="sd">\ RBname Name assigned by user to rigid body (str)</span> |
---|
346 | <span class="sd">\ rbXYZ Cartesian coordinates for Residue rigid body (list of 3 float)</span> |
---|
347 | <span class="sd">\ rbTypes Atom types for each atom in rigid body (list of str)</span> |
---|
348 | <span class="sd">\ atNames Names of each atom in rigid body (e.g. C1,N2...) (list of str)</span> |
---|
349 | <span class="sd">\ rbRef 3 assigned reference atom nos. in rigid body for origin </span> |
---|
350 | <span class="sd"> definition, use center of atoms flag (list of 3 int & 1 bool)</span> |
---|
351 | <span class="sd">\ rbSeq Orig,Piv,angle,Riding (list): definition of internal rigid body</span> |
---|
352 | <span class="sd"> torsion; origin atom (int), pivot atom (int), torsion angle (float),</span> |
---|
353 | <span class="sd"> riding atoms (list of int)</span> |
---|
354 | <span class="sd">\ SelSeq [int,int] used by SeqSizer to identify objects</span> |
---|
355 | <span class="sd">\ useCount Number of times rigid body is used in any structure (int)</span> |
---|
356 | <span class="sd">RBIds \ unique Ids generated upon creation of each rigid body (dict)</span> |
---|
357 | <span class="sd">\ Vector Ids for each Vector rigid body (list)</span> |
---|
358 | <span class="sd">\ Residue Ids for each Residue rigid body (list)</span> |
---|
359 | <span class="sd">========== =============== ====================================================</span> |
---|
360 | |
---|
361 | <span class="sd">Space Group Objects </span> |
---|
362 | <span class="sd">-------------------</span> |
---|
363 | |
---|
364 | <span class="sd">.. _SGData_table:</span> |
---|
365 | |
---|
366 | <span class="sd">.. index::</span> |
---|
367 | <span class="sd"> single: Space Group Data description</span> |
---|
368 | <span class="sd"> single: Data object descriptions; Space Group Data</span> |
---|
369 | |
---|
370 | <span class="sd">Space groups are interpreted by :func:`GSASIIspc.SpcGroup` </span> |
---|
371 | <span class="sd">and the information is placed in a SGdata object </span> |
---|
372 | <span class="sd">which is a dict with these keys:</span> |
---|
373 | |
---|
374 | <span class="sd">.. tabularcolumns:: |l|p{4.5in}|</span> |
---|
375 | |
---|
376 | <span class="sd">========== ====================================================</span> |
---|
377 | <span class="sd"> key explanation</span> |
---|
378 | <span class="sd">========== ====================================================</span> |
---|
379 | <span class="sd">SpGrp space group symbol (str)</span> |
---|
380 | <span class="sd">Laue one of the following 14 Laue classes:</span> |
---|
381 | <span class="sd"> -1, 2/m, mmm, 4/m, 4/mmm, 3R,</span> |
---|
382 | <span class="sd"> 3mR, 3, 3m1, 31m, 6/m, 6/mmm, m3, m3m (str)</span> |
---|
383 | <span class="sd">SGInv True if centrosymmetric, False if not (bool)</span> |
---|
384 | <span class="sd">SGLatt Lattice centering type. Will be one of</span> |
---|
385 | <span class="sd"> P, A, B, C, I, F, R (str)</span> |
---|
386 | <span class="sd">SGUniq unique axis if monoclinic. Will be</span> |
---|
387 | <span class="sd"> a, b, or c for monoclinic space groups.</span> |
---|
388 | <span class="sd"> Will be blank for non-monoclinic. (str)</span> |
---|
389 | <span class="sd">SGCen Symmetry cell centering vectors. A (n,3) np.array</span> |
---|
390 | <span class="sd"> of centers. Will always have at least one row:</span> |
---|
391 | <span class="sd"> ``np.array([[0, 0, 0]])``</span> |
---|
392 | <span class="sd">SGOps symmetry operations as a list of form</span> |
---|
393 | <span class="sd"> ``[[M1,T1], [M2,T2],...]``</span> |
---|
394 | <span class="sd"> where :math:`M_n` is a 3x3 np.array</span> |
---|
395 | <span class="sd"> and :math:`T_n` is a length 3 np.array.</span> |
---|
396 | <span class="sd"> Atom coordinates are transformed where the</span> |
---|
397 | <span class="sd"> Asymmetric unit coordinates [X is (x,y,z)]</span> |
---|
398 | <span class="sd"> are transformed using</span> |
---|
399 | <span class="sd"> :math:`X^\prime = M_n*X+T_n`</span> |
---|
400 | <span class="sd">SGSys symmetry unit cell: type one of</span> |
---|
401 | <span class="sd"> 'triclinic', 'monoclinic', 'orthorhombic',</span> |
---|
402 | <span class="sd"> 'tetragonal', 'rhombohedral', 'trigonal',</span> |
---|
403 | <span class="sd"> 'hexagonal', 'cubic' (str)</span> |
---|
404 | <span class="sd">SGPolax Axes for space group polarity. Will be one of</span> |
---|
405 | <span class="sd"> '', 'x', 'y', 'x y', 'z', 'x z', 'y z',</span> |
---|
406 | <span class="sd"> 'xyz'. In the case where axes are arbitrary </span> |
---|
407 | <span class="sd"> '111' is used (P 1, and ?).</span> |
---|
408 | <span class="sd">========== ====================================================</span> |
---|
409 | |
---|
410 | <span class="sd">Atom Records</span> |
---|
411 | <span class="sd">------------</span> |
---|
412 | |
---|
413 | <span class="sd">.. _Atoms_table:</span> |
---|
414 | |
---|
415 | <span class="sd">.. index::</span> |
---|
416 | <span class="sd"> single: Atoms record description</span> |
---|
417 | <span class="sd"> single: Data object descriptions; Atoms record</span> |
---|
418 | |
---|
419 | |
---|
420 | <span class="sd">If ``phasedict`` points to the phase information in the data tree, then</span> |
---|
421 | <span class="sd">atoms are contained in a list of atom records (list) in</span> |
---|
422 | <span class="sd">``phasedict['Atoms']``. Also needed to read atom information </span> |
---|
423 | <span class="sd">are four pointers, ``cx,ct,cs,cia = phasedict['General']['atomPtrs']``,</span> |
---|
424 | <span class="sd">which define locations in the atom record, as shown below. Items shown are </span> |
---|
425 | <span class="sd">always present; additional ones for macromolecular phases are marked 'mm'</span> |
---|
426 | |
---|
427 | <span class="sd">.. tabularcolumns:: |l|p{4.5in}|</span> |
---|
428 | |
---|
429 | <span class="sd">============== ====================================================</span> |
---|
430 | <span class="sd">location explanation</span> |
---|
431 | <span class="sd">============== ====================================================</span> |
---|
432 | <span class="sd">ct-4 mm - residue number (str)</span> |
---|
433 | <span class="sd">ct-3 mm - residue name (e.g. ALA) (str)</span> |
---|
434 | <span class="sd">ct-2 mm - chain label (str)</span> |
---|
435 | <span class="sd">ct-1 atom label (str)</span> |
---|
436 | <span class="sd">ct atom type (str)</span> |
---|
437 | <span class="sd">ct+1 refinement flags; combination of 'F', 'X', 'U' (str)</span> |
---|
438 | <span class="sd">cx,cx+1,cx+2 the x,y and z coordinates (3 floats)</span> |
---|
439 | <span class="sd">cs site symmetry (str)</span> |
---|
440 | <span class="sd">cs+1 site multiplicity (int)</span> |
---|
441 | <span class="sd">cia ADP flag: Isotropic ('I') or Anisotropic ('A')</span> |
---|
442 | <span class="sd">cia+1 Uiso (float)</span> |
---|
443 | <span class="sd">cia+2...cia+7 U11, U22, U33, U12, U13, U23 (6 floats)</span> |
---|
444 | <span class="sd">atom[cia+8] unique atom identifier (int)</span> |
---|
445 | |
---|
446 | <span class="sd">============== ====================================================</span> |
---|
447 | |
---|
448 | <span class="sd">Drawing Atom Records</span> |
---|
449 | <span class="sd">--------------------</span> |
---|
450 | |
---|
451 | <span class="sd">.. _Drawing_atoms_table:</span> |
---|
452 | |
---|
453 | <span class="sd">.. index::</span> |
---|
454 | <span class="sd"> single: Drawing atoms record description</span> |
---|
455 | <span class="sd"> single: Data object descriptions; Drawing atoms record</span> |
---|
456 | |
---|
457 | |
---|
458 | <span class="sd">If ``phasedict`` points to the phase information in the data tree, then</span> |
---|
459 | <span class="sd">drawing atoms are contained in a list of drawing atom records (list) in</span> |
---|
460 | <span class="sd">``phasedict['Drawing']['Atoms']``. Also needed to read atom information </span> |
---|
461 | <span class="sd">are four pointers, ``cx,ct,cs,ci = phasedict['Drawing']['AtomPtrs']``,</span> |
---|
462 | <span class="sd">which define locations in the atom record, as shown below. Items shown are </span> |
---|
463 | <span class="sd">always present; additional ones for macromolecular phases are marked 'mm'</span> |
---|
464 | |
---|
465 | <span class="sd">.. tabularcolumns:: |l|p{4.5in}|</span> |
---|
466 | |
---|
467 | <span class="sd">============== ====================================================</span> |
---|
468 | <span class="sd">location explanation</span> |
---|
469 | <span class="sd">============== ====================================================</span> |
---|
470 | <span class="sd">ct-4 mm - residue number (str)</span> |
---|
471 | <span class="sd">ct-3 mm - residue name (e.g. ALA) (str)</span> |
---|
472 | <span class="sd">ct-2 mm - chain label (str)</span> |
---|
473 | <span class="sd">ct-1 atom label (str)</span> |
---|
474 | <span class="sd">ct atom type (str)</span> |
---|
475 | <span class="sd">cx,cx+1,cx+2 the x,y and z coordinates (3 floats)</span> |
---|
476 | <span class="sd">cs-1 Sym Op symbol; sym. op number + unit cell id (e.g. '1,0,-1') (str)</span> |
---|
477 | <span class="sd">cs atom drawing style; e.g. 'balls & sticks' (str)</span> |
---|
478 | <span class="sd">cs+1 atom label style (e.g. 'name') (str)</span> |
---|
479 | <span class="sd">cs+2 atom color (RBG triplet) (int)</span> |
---|
480 | <span class="sd">cs+3 ADP flag: Isotropic ('I') or Anisotropic ('A')</span> |
---|
481 | <span class="sd">cs+4 Uiso (float)</span> |
---|
482 | <span class="sd">cs+5...cs+11 U11, U22, U33, U12, U13, U23 (6 floats)</span> |
---|
483 | <span class="sd">ci unique atom identifier; matches source atom Id in Atom Records (int)</span> |
---|
484 | <span class="sd">============== ====================================================</span> |
---|
485 | |
---|
486 | <span class="sd">Powder Diffraction Tree Items</span> |
---|
487 | <span class="sd">-----------------------------</span> |
---|
488 | |
---|
489 | <span class="sd">.. _Powder_table:</span> |
---|
490 | |
---|
491 | <span class="sd">.. index::</span> |
---|
492 | <span class="sd"> single: Powder data object description</span> |
---|
493 | <span class="sd"> single: Data object descriptions; Powder Data</span> |
---|
494 | |
---|
495 | <span class="sd">Every powder diffraction histogram is stored in the GSAS-II data tree</span> |
---|
496 | <span class="sd">with a top-level entry named beginning with the string "PWDR ". The</span> |
---|
497 | <span class="sd">diffraction data for that information are directly associated with</span> |
---|
498 | <span class="sd">that tree item and there are a series of children to that item. The</span> |
---|
499 | <span class="sd">routines :func:`GSASII.GSASII.GetUsedHistogramsAndPhasesfromTree`</span> |
---|
500 | <span class="sd">and :func:`GSASIIstrIO.GetUsedHistogramsAndPhases` will</span> |
---|
501 | <span class="sd">load this information into a dictionary where the child tree name is</span> |
---|
502 | <span class="sd">used as a key, and the information in the main entry is assigned</span> |
---|
503 | <span class="sd">a key of ``Data``, as outlined below.</span> |
---|
504 | |
---|
505 | <span class="sd">.. tabularcolumns:: |l|l|p{4in}|</span> |
---|
506 | |
---|
507 | <span class="sd">====================== =============== ====================================================</span> |
---|
508 | <span class="sd"> key sub-key explanation</span> |
---|
509 | <span class="sd">====================== =============== ====================================================</span> |
---|
510 | <span class="sd">Comments \ Text strings extracted from the original powder </span> |
---|
511 | <span class="sd"> data header. These cannot be changed by the user; </span> |
---|
512 | <span class="sd"> it may be empty.</span> |
---|
513 | <span class="sd">Limits \ A list of two two element lists, as [[Ld,Hd],[L,H]]</span> |
---|
514 | <span class="sd"> where L and Ld are the current and default lowest</span> |
---|
515 | <span class="sd"> two-theta value to be used and </span> |
---|
516 | <span class="sd"> where H and Hd are the current and default highest</span> |
---|
517 | <span class="sd"> two-theta value to be used.</span> |
---|
518 | <span class="sd">Reflection Lists \ A dict with an entry for each phase in the</span> |
---|
519 | <span class="sd"> histogram. The contents of each dict item</span> |
---|
520 | <span class="sd"> is a dict containing reflections, as described in</span> |
---|
521 | <span class="sd"> the :ref:`Powder Reflections <PowderRefl_table>`</span> |
---|
522 | <span class="sd"> description.</span> |
---|
523 | <span class="sd">Instrument Parameters \ A list containing two dicts where the possible</span> |
---|
524 | <span class="sd"> keys in each dict are listed below. The value</span> |
---|
525 | <span class="sd"> for each item is a list containing three values:</span> |
---|
526 | <span class="sd"> the initial value, the current value and a</span> |
---|
527 | <span class="sd"> refinement flag which can have a value of</span> |
---|
528 | <span class="sd"> True, False or 0 where 0 indicates a value that</span> |
---|
529 | <span class="sd"> cannot be refined. The first and second</span> |
---|
530 | <span class="sd"> values are floats unless otherwise noted.</span> |
---|
531 | <span class="sd"> Items in the first dict are noted as [1]</span> |
---|
532 | <span class="sd">\ Lam Specifies a wavelength in Angstroms [1]</span> |
---|
533 | <span class="sd">\ Lam1 Specifies the primary wavelength in</span> |
---|
534 | <span class="sd"> Angstrom, when an alpha1, alpha2</span> |
---|
535 | <span class="sd"> source is used [1]</span> |
---|
536 | <span class="sd">\ Lam2 Specifies the secondary wavelength in</span> |
---|
537 | <span class="sd"> Angstrom, when an alpha1, alpha2</span> |
---|
538 | <span class="sd"> source is used [1]</span> |
---|
539 | <span class="sd"> I(L2)/I(L1) Ratio of Lam2 to Lam1 [1] </span> |
---|
540 | <span class="sd">\ Type Histogram type (str) [1]: </span> |
---|
541 | <span class="sd"> * 'PXC' for constant wavelength x-ray</span> |
---|
542 | <span class="sd"> * 'PNC' for constant wavelength neutron</span> |
---|
543 | <span class="sd"> * 'PNT' for time of flight neutron</span> |
---|
544 | <span class="sd">\ Zero Two-theta zero correction in *degrees* [1]</span> |
---|
545 | <span class="sd">\ Azimuth Azimuthal setting angle for data recorded</span> |
---|
546 | <span class="sd"> with differing setting angles [1]</span> |
---|
547 | <span class="sd">\ U, V, W Cagliotti profile coefficients</span> |
---|
548 | <span class="sd"> for Gaussian instrumental broadening, where the</span> |
---|
549 | <span class="sd"> FWHM goes as</span> |
---|
550 | <span class="sd"> :math:`U \\tan^2\\theta + V \\tan\\theta + W` [1]</span> |
---|
551 | <span class="sd">\ X, Y Cauchy (Lorentzian) instrumental broadening</span> |
---|
552 | <span class="sd"> coefficients [1]</span> |
---|
553 | <span class="sd">\ SH/L Variant of the Finger-Cox-Jephcoat asymmetric</span> |
---|
554 | <span class="sd"> peak broadening ratio. Note that this is the</span> |
---|
555 | <span class="sd"> average between S/L and H/L where S is</span> |
---|
556 | <span class="sd"> sample height, H is the slit height and</span> |
---|
557 | <span class="sd"> L is the goniometer diameter. [1]</span> |
---|
558 | <span class="sd">\ Polariz. Polarization coefficient. [1]</span> |
---|
559 | <span class="sd">wtFactor \ A weighting factor to increase or decrease</span> |
---|
560 | <span class="sd"> the leverage of data in the histogram (float).</span> |
---|
561 | <span class="sd"> A value of 1.0 weights the data with their</span> |
---|
562 | <span class="sd"> standard uncertainties and a larger value</span> |
---|
563 | <span class="sd"> increases the weighting of the data (equivalent</span> |
---|
564 | <span class="sd"> to decreasing the uncertainties).</span> |
---|
565 | <span class="sd">Sample Parameters \ Specifies a dict with parameters that describe how</span> |
---|
566 | <span class="sd"> the data were collected, as listed</span> |
---|
567 | <span class="sd"> below. Refinable parameters are a list containing</span> |
---|
568 | <span class="sd"> a float and a bool, where the second value</span> |
---|
569 | <span class="sd"> specifies if the value is refined, otherwise</span> |
---|
570 | <span class="sd"> the value is a float unless otherwise noted.</span> |
---|
571 | <span class="sd">\ Scale The histogram scale factor (refinable) </span> |
---|
572 | <span class="sd">\ Absorption The sample absorption coefficient as</span> |
---|
573 | <span class="sd"> :math:`\\mu r` where r is the radius</span> |
---|
574 | <span class="sd"> (refinable). Only valid for Debye-Scherrer geometry.</span> |
---|
575 | <span class="sd">\ SurfaceRoughA Surface roughness parameter A as defined by</span> |
---|
576 | <span class="sd"> Surotti,J. Appl. Cryst, 5,325-331, 1972.(refinable - </span> |
---|
577 | <span class="sd"> only valid for Bragg-Brentano geometry) </span> |
---|
578 | <span class="sd">\ SurfaceRoughB Surface roughness parameter B (refinable - </span> |
---|
579 | <span class="sd"> only valid for Bragg-Brentano geometry) </span> |
---|
580 | <span class="sd">\ DisplaceX, Sample displacement from goniometer center</span> |
---|
581 | <span class="sd"> DisplaceY where Y is along the beam direction and</span> |
---|
582 | <span class="sd"> X is perpendicular. Units are :math:`\\mu m`</span> |
---|
583 | <span class="sd"> (refinable).</span> |
---|
584 | <span class="sd">\ Phi, Chi, Goniometer sample setting angles, in degrees.</span> |
---|
585 | <span class="sd"> Omega</span> |
---|
586 | <span class="sd">\ Gonio. radius Radius of the diffractometer in mm</span> |
---|
587 | <span class="sd">\ InstrName A name for the instrument, used in preparing</span> |
---|
588 | <span class="sd"> a CIF (str).</span> |
---|
589 | <span class="sd">\ Force, Variables that describe how the measurement</span> |
---|
590 | <span class="sd"> Temperature, was performed. Not used directly in </span> |
---|
591 | <span class="sd"> Humidity, any computations. </span> |
---|
592 | <span class="sd"> Pressure,</span> |
---|
593 | <span class="sd"> Voltage</span> |
---|
594 | <span class="sd">\ ranId The random-number Id for the histogram</span> |
---|
595 | <span class="sd"> (same value as where top-level key is ranId)</span> |
---|
596 | <span class="sd">\ Type Type of diffraction data, may be 'Debye-Scherrer'</span> |
---|
597 | <span class="sd"> or 'Bragg-Brentano' (str).</span> |
---|
598 | <span class="sd">\ Diffuse not in use?</span> |
---|
599 | <span class="sd">hId \ The number assigned to the histogram when</span> |
---|
600 | <span class="sd"> the project is loaded or edited (can change)</span> |
---|
601 | <span class="sd">ranId \ A random number id for the histogram</span> |
---|
602 | <span class="sd"> that does not change</span> |
---|
603 | <span class="sd">Background \ The background is stored as a list with where</span> |
---|
604 | <span class="sd"> the first item in the list is list and the second</span> |
---|
605 | <span class="sd"> item is a dict. The list contains the background</span> |
---|
606 | <span class="sd"> function and its coefficients; the dict contains</span> |
---|
607 | <span class="sd"> Debye diffuse terms and background peaks.</span> |
---|
608 | <span class="sd"> (TODO: this needs to be expanded.)</span> |
---|
609 | <span class="sd">Data \ The data consist of a list of 6 np.arrays </span> |
---|
610 | <span class="sd"> containing in order:</span> |
---|
611 | |
---|
612 | <span class="sd"> 0. the x-postions (two-theta in degrees),</span> |
---|
613 | <span class="sd"> 1. the intensity values (Yobs),</span> |
---|
614 | <span class="sd"> 2. the weights for each Yobs value</span> |
---|
615 | <span class="sd"> 3. the computed intensity values (Ycalc)</span> |
---|
616 | <span class="sd"> 4. the background values</span> |
---|
617 | <span class="sd"> 5. Yobs-Ycalc</span> |
---|
618 | <span class="sd">====================== =============== ====================================================</span> |
---|
619 | |
---|
620 | <span class="sd">Powder Reflection Data Structure</span> |
---|
621 | <span class="sd">--------------------------------</span> |
---|
622 | |
---|
623 | <span class="sd">.. _PowderRefl_table:</span> |
---|
624 | |
---|
625 | <span class="sd">.. index::</span> |
---|
626 | <span class="sd"> single: Powder reflection object description</span> |
---|
627 | <span class="sd"> single: Data object descriptions; Powder Reflections</span> |
---|
628 | <span class="sd"> </span> |
---|
629 | <span class="sd">For every phase in a histogram, the ``Reflection Lists`` value is a dict</span> |
---|
630 | <span class="sd">one element of which is `'RefList'`, which is a np.array containing</span> |
---|
631 | <span class="sd">reflections. The columns in that array are documented below.</span> |
---|
632 | |
---|
633 | <span class="sd">========== ====================================================</span> |
---|
634 | <span class="sd"> index explanation</span> |
---|
635 | <span class="sd">========== ====================================================</span> |
---|
636 | <span class="sd"> 0,1,2 h,k,l (float)</span> |
---|
637 | <span class="sd"> 3 multiplicity</span> |
---|
638 | <span class="sd"> 4 d-space, Angstrom</span> |
---|
639 | <span class="sd"> 5 pos, two-theta</span> |
---|
640 | <span class="sd"> 6 sig, Gaussian width</span> |
---|
641 | <span class="sd"> 7 gam, Lorenzian width</span> |
---|
642 | <span class="sd"> 8 :math:`F_{obs}^2`</span> |
---|
643 | <span class="sd"> 9 :math:`F_{calc}^2`</span> |
---|
644 | <span class="sd"> 10 reflection phase, in degrees</span> |
---|
645 | <span class="sd"> 11 intensity correction for reflection, this times</span> |
---|
646 | <span class="sd"> :math:`F_{obs}^2` or :math:`F_{calc}^2` gives Iobs or Icalc </span> |
---|
647 | <span class="sd">========== ====================================================</span> |
---|
648 | |
---|
649 | <span class="sd">Single Crystal Tree Items</span> |
---|
650 | <span class="sd">-------------------------</span> |
---|
651 | |
---|
652 | <span class="sd">.. _Xtal_table:</span> |
---|
653 | |
---|
654 | <span class="sd">.. index::</span> |
---|
655 | <span class="sd"> single: Single Crystal data object description</span> |
---|
656 | <span class="sd"> single: Data object descriptions; Single crystal data</span> |
---|
657 | |
---|
658 | <span class="sd">Every single crystal diffraction histogram is stored in the GSAS-II data tree</span> |
---|
659 | <span class="sd">with a top-level entry named beginning with the string "HKLF ". The</span> |
---|
660 | <span class="sd">diffraction data for that information are directly associated with</span> |
---|
661 | <span class="sd">that tree item and there are a series of children to that item. The</span> |
---|
662 | <span class="sd">routines :func:`GSASII.GSASII.GetUsedHistogramsAndPhasesfromTree`</span> |
---|
663 | <span class="sd">and :func:`GSASIIstrIO.GetUsedHistogramsAndPhases` will</span> |
---|
664 | <span class="sd">load this information into a dictionary where the child tree name is</span> |
---|
665 | <span class="sd">used as a key, and the information in the main entry is assigned</span> |
---|
666 | <span class="sd">a key of ``Data``, as outlined below.</span> |
---|
667 | |
---|
668 | <span class="sd">.. tabularcolumns:: |l|l|p{4in}|</span> |
---|
669 | |
---|
670 | <span class="sd">====================== =============== ====================================================</span> |
---|
671 | <span class="sd"> key sub-key explanation</span> |
---|
672 | <span class="sd">====================== =============== ====================================================</span> |
---|
673 | <span class="sd">Data \ A dict that contains the </span> |
---|
674 | <span class="sd"> reflection table,</span> |
---|
675 | <span class="sd"> as described in the</span> |
---|
676 | <span class="sd"> :ref:`Single Crystal Reflections</span> |
---|
677 | <span class="sd"> <XtalRefl_table>`</span> |
---|
678 | <span class="sd"> description.</span> |
---|
679 | |
---|
680 | <span class="sd">Instrument Parameters \ A list containing two dicts where the possible</span> |
---|
681 | <span class="sd"> keys in each dict are listed below. The value</span> |
---|
682 | <span class="sd"> for most items is a list containing two values:</span> |
---|
683 | <span class="sd"> the initial value, the current value.</span> |
---|
684 | <span class="sd"> The first and second</span> |
---|
685 | <span class="sd"> values are floats unless otherwise noted.</span> |
---|
686 | <span class="sd">\ Lam Specifies a wavelength in Angstroms (two floats)</span> |
---|
687 | <span class="sd">\ Type Histogram type (two str values): </span> |
---|
688 | <span class="sd"> * 'SXC' for constant wavelength x-ray</span> |
---|
689 | <span class="sd"> * 'SNC' for constant wavelength neutron</span> |
---|
690 | <span class="sd"> * 'SNT' for time of flight neutron</span> |
---|
691 | <span class="sd">\ InstrName A name for the instrument, used in preparing</span> |
---|
692 | <span class="sd"> a CIF (str).</span> |
---|
693 | |
---|
694 | <span class="sd">wtFactor \ A weighting factor to increase or decrease</span> |
---|
695 | <span class="sd"> the leverage of data in the histogram (float).</span> |
---|
696 | <span class="sd"> A value of 1.0 weights the data with their</span> |
---|
697 | <span class="sd"> standard uncertainties and a larger value</span> |
---|
698 | <span class="sd"> increases the weighting of the data (equivalent</span> |
---|
699 | <span class="sd"> to decreasing the uncertainties).</span> |
---|
700 | |
---|
701 | <span class="sd">hId \ The number assigned to the histogram when</span> |
---|
702 | <span class="sd"> the project is loaded or edited (can change)</span> |
---|
703 | <span class="sd">ranId \ A random number id for the histogram</span> |
---|
704 | <span class="sd"> that does not change</span> |
---|
705 | <span class="sd">====================== =============== ====================================================</span> |
---|
706 | |
---|
707 | <span class="sd">Single Crystal Reflection Data Structure</span> |
---|
708 | <span class="sd">----------------------------------------</span> |
---|
709 | |
---|
710 | <span class="sd">.. _XtalRefl_table:</span> |
---|
711 | |
---|
712 | <span class="sd">.. index::</span> |
---|
713 | <span class="sd"> single: Single Crystal reflection object description</span> |
---|
714 | <span class="sd"> single: Data object descriptions; Single Crystal Reflections</span> |
---|
715 | <span class="sd"> </span> |
---|
716 | <span class="sd">For every single crystal a histogram, the ``'Data'`` item contains</span> |
---|
717 | <span class="sd">the structure factors as an np.array in item `'RefList'`.</span> |
---|
718 | <span class="sd">The columns in that array are documented below.</span> |
---|
719 | |
---|
720 | <span class="sd">========== ====================================================</span> |
---|
721 | <span class="sd"> index explanation</span> |
---|
722 | <span class="sd">========== ====================================================</span> |
---|
723 | <span class="sd"> 0,1,2 h,k,l (float)</span> |
---|
724 | <span class="sd"> 3 multiplicity</span> |
---|
725 | <span class="sd"> 4 d-space, Angstrom</span> |
---|
726 | <span class="sd"> 5 :math:`F_{obs}^2`</span> |
---|
727 | <span class="sd"> 6 :math:`\sigma(F_{obs}^2)`</span> |
---|
728 | <span class="sd"> 7 :math:`F_{calc}^2`</span> |
---|
729 | <span class="sd"> 8 :math:`F_{obs}^2T`</span> |
---|
730 | <span class="sd"> 9 :math:`F_{calc}^2T`</span> |
---|
731 | <span class="sd"> 10 reflection phase, in degrees</span> |
---|
732 | <span class="sd"> 11 intensity correction for reflection, this times</span> |
---|
733 | <span class="sd"> :math:`F_{obs}^2` or :math:`F_{calc}^2`</span> |
---|
734 | <span class="sd"> gives Iobs or Icalc</span> |
---|
735 | <span class="sd">========== ====================================================</span> |
---|
736 | |
---|
737 | <span class="sd">Image Data Structure</span> |
---|
738 | <span class="sd">--------------------</span> |
---|
739 | |
---|
740 | <span class="sd">.. _Image_table:</span> |
---|
741 | |
---|
742 | <span class="sd">.. index::</span> |
---|
743 | <span class="sd"> image: Image data object description</span> |
---|
744 | <span class="sd"> image: Image object descriptions</span> |
---|
745 | <span class="sd"> </span> |
---|
746 | <span class="sd">Every 2-dimensional image is stored in the GSAS-II data tree</span> |
---|
747 | <span class="sd">with a top-level entry named beginning with the string "IMG ". The</span> |
---|
748 | <span class="sd">image data are directly associated with that tree item and there </span> |
---|
749 | <span class="sd">are a series of children to that item. The routines :func:`GSASII.GSASII.GetUsedHistogramsAndPhasesfromTree`</span> |
---|
750 | <span class="sd">and :func:`GSASIIstrIO.GetUsedHistogramsAndPhases` will</span> |
---|
751 | <span class="sd">load this information into a dictionary where the child tree name is</span> |
---|
752 | <span class="sd">used as a key, and the information in the main entry is assigned</span> |
---|
753 | <span class="sd">a key of ``Data``, as outlined below.</span> |
---|
754 | |
---|
755 | <span class="sd">.. tabularcolumns:: |l|l|p{4in}|</span> |
---|
756 | |
---|
757 | <span class="sd">====================== ====================== ====================================================</span> |
---|
758 | <span class="sd"> key sub-key explanation</span> |
---|
759 | <span class="sd">====================== ====================== ====================================================</span> |
---|
760 | <span class="sd">Comments \ Text strings extracted from the original image data </span> |
---|
761 | <span class="sd"> header or a metafile. These cannot be changed by </span> |
---|
762 | <span class="sd"> the user; it may be empty. </span> |
---|
763 | <span class="sd">Image Controls azmthOff (float) The offset to be applied to an azimuthal </span> |
---|
764 | <span class="sd"> value. Accomodates </span> |
---|
765 | <span class="sd"> detector orientations other than with the detector </span> |
---|
766 | <span class="sd"> X-axis</span> |
---|
767 | <span class="sd"> horizontal.</span> |
---|
768 | <span class="sd">\ background image (list:str,float) The name of a tree item ("IMG ...") that is to be subtracted</span> |
---|
769 | <span class="sd"> during image integration multiplied by value. It must have the same size/shape as </span> |
---|
770 | <span class="sd"> the integrated image. NB: value < 0 for subtraction.</span> |
---|
771 | <span class="sd">\ calibrant (str) The material used for determining the position/orientation</span> |
---|
772 | <span class="sd"> of the image. The data is obtained from :func:`ImageCalibrants` </span> |
---|
773 | <span class="sd"> and UserCalibrants.py (supplied by user).</span> |
---|
774 | <span class="sd">\ calibdmin (float) The minimum d-spacing used during the last calibration run.</span> |
---|
775 | <span class="sd">\ calibskip (int) The number of expected diffraction lines skipped during the last</span> |
---|
776 | <span class="sd"> calibration run.</span> |
---|
777 | <span class="sd">\ center (list:floats) The [X,Y] point in detector coordinates (mm) where the direct beam</span> |
---|
778 | <span class="sd"> strikes the detector plane as determined by calibration. This point </span> |
---|
779 | <span class="sd"> does not have to be within the limits of the detector boundaries. </span> |
---|
780 | <span class="sd">\ centerAzm (bool) If True then the azimuth reported for the integrated slice</span> |
---|
781 | <span class="sd"> of the image is at the center line otherwise it is at the leading edge.</span> |
---|
782 | <span class="sd">\ color (str) The name of the colormap used to display the image. Default = 'Paired'.</span> |
---|
783 | <span class="sd">\ cutoff (float) The minimum value of I/Ib for a point selected in a diffraction ring for </span> |
---|
784 | <span class="sd"> calibration calculations. See pixLimit for details as how point is found. </span> |
---|
785 | <span class="sd">\ DetDepth (float) Coefficient for penetration correction to distance; accounts for diffraction</span> |
---|
786 | <span class="sd"> ring offset at higher angles. Optionally determined by calibration.</span> |
---|
787 | <span class="sd">\ DetDepthRef (bool) If True then refine DetDepth during calibration/recalibration calculation.</span> |
---|
788 | <span class="sd">\ distance (float) The distance (mm) from sample to detector plane.</span> |
---|
789 | <span class="sd">\ ellipses (list:lists) Each object in ellipses is a list [center,phi,radii,color] where</span> |
---|
790 | <span class="sd"> center (list) is location (mm) of the ellipse center on the detector plane, phi is the </span> |
---|
791 | <span class="sd"> rotation of the ellipse minor axis from the x-axis, and radii are the minor & major</span> |
---|
792 | <span class="sd"> radii of the ellipse. If radii[0] is negative then parameters describe a hyperbola. Color</span> |
---|
793 | <span class="sd"> is the selected drawing color (one of 'b', 'g' ,'r') for the ellipse/hyperbola.</span> |
---|
794 | <span class="sd">\ edgemin (float) Not used; parameter in EdgeFinder code.</span> |
---|
795 | <span class="sd">\ fullIntegrate (bool) If True then integrate over full 360 deg azimuthal range.</span> |
---|
796 | <span class="sd">\ GonioAngles (list:floats) The 'Omega','Chi','Phi' goniometer angles used for this image. </span> |
---|
797 | <span class="sd"> Required for texture calculations.</span> |
---|
798 | <span class="sd">\ invert_x (bool) If True display the image with the x-axis inverted.</span> |
---|
799 | <span class="sd">\ invert_y (bool) If True display the image with the y-axis inverted.</span> |
---|
800 | <span class="sd">\ IOtth (list:floats) The minimum and maximum 2-theta values to be used for integration.</span> |
---|
801 | <span class="sd">\ LRazimuth (list:floats) The minimum and maximum azimuth values to be used for integration.</span> |
---|
802 | <span class="sd">\ Oblique (list:float,bool) If True apply a detector absorption correction using the value to the</span> |
---|
803 | <span class="sd"> intensities obtained during integration.</span> |
---|
804 | <span class="sd">\ outAzimuths (int) The number of azimuth pie slices.</span> |
---|
805 | <span class="sd">\ outChannels (int) The number of 2-theta steps. </span> |
---|
806 | <span class="sd">\ pixelSize (list:ints) The X,Y dimensions (microns) of each pixel.</span> |
---|
807 | <span class="sd">\ pixLimit (int) A box in the image with 2*pixLimit+1 edges is searched to find the maximum.</span> |
---|
808 | <span class="sd"> This value (I) along with the minimum (Ib) in the box is reported by :func:`GSASIIimage.ImageLocalMax`</span> |
---|
809 | <span class="sd"> and subject to cutoff in :func:`GSASIIimage.makeRing`. </span> |
---|
810 | <span class="sd"> Locations are used to construct rings of points for calibration calcualtions.</span> |
---|
811 | <span class="sd">\ PolaVal (list:float,bool) If type='SASD' and if True, apply polarization correction to intensities from </span> |
---|
812 | <span class="sd"> integration using value.</span> |
---|
813 | <span class="sd">\ rings (list:lists) Each entry is [X,Y,dsp] where X & Y are lists of x,y coordinates around a </span> |
---|
814 | <span class="sd"> diffraction ring with the same d-spacing (dsp)</span> |
---|
815 | <span class="sd">\ ring (list) The x,y coordinates of the >5 points on an inner ring </span> |
---|
816 | <span class="sd"> selected by the user,</span> |
---|
817 | <span class="sd">\ Range (list) The minimum & maximum values of the image</span> |
---|
818 | <span class="sd">\ rotation (float) The angle between the x-axis and the vector about which the </span> |
---|
819 | <span class="sd"> detector is tilted. Constrained to -180 to 180 deg. </span> |
---|
820 | <span class="sd">\ SampleShape (str) Currently only 'Cylinder'. Sample shape for Debye-Scherrer experiments; used for absorption</span> |
---|
821 | <span class="sd"> calculations.</span> |
---|
822 | <span class="sd">\ SampleAbs (list: float,bool) Value of absorption coefficient for Debye-Scherrer experimnents, flag if True</span> |
---|
823 | <span class="sd"> to cause correction to be applied.</span> |
---|
824 | <span class="sd">\ setDefault (bool) If True the use the image controls values for all new images to be read. (might be removed)</span> |
---|
825 | <span class="sd">\ setRings (bool) If True then display all the selected x,y ring positions (vida supra rings) used in the calibration. </span> |
---|
826 | <span class="sd">\ showLines (bool) If True then isplay the integration limits to be used.</span> |
---|
827 | <span class="sd">\ size (list:int) The number of pixels on the image x & y axes</span> |
---|
828 | <span class="sd">\ type (str) One of 'PWDR', 'SASD' or 'REFL' for powder, small angle or reflectometry data, respectively.</span> |
---|
829 | <span class="sd">\ tilt (float) The angle the detector normal makes with the incident beam; range -90 to 90.</span> |
---|
830 | <span class="sd">\ wavelength (float) Tha radiation wavelength (Angstroms) as entered by the user (or someday obtained from the image header).</span> |
---|
831 | <span class="sd"> </span> |
---|
832 | <span class="sd">Masks Arcs (list: lists) Each entry [2-theta,[azimuth[0],azimuth[1]],thickness] describes an arc mask</span> |
---|
833 | <span class="sd"> to be excluded from integration</span> |
---|
834 | <span class="sd">\ Frames (list:lists) Each entry describes the x,y points (3 or more - mm) that describe a frame outside</span> |
---|
835 | <span class="sd"> of which is excluded from recalibration and integration. Only one frame is allowed.</span> |
---|
836 | <span class="sd">\ Points (list:lists) Each entry [x,y,radius] (mm) describes an excluded spot on the image to be excluded</span> |
---|
837 | <span class="sd"> from integration.</span> |
---|
838 | <span class="sd">\ Polygons (list:lists) Each entry is a list of 3+ [x,y] points (mm) that describe a polygon on the image</span> |
---|
839 | <span class="sd"> to be excluded from integration.</span> |
---|
840 | <span class="sd">\ Rings (list: lists) Each entry [2-theta,thickness] describes a ring mask</span> |
---|
841 | <span class="sd"> to be excluded from integration.</span> |
---|
842 | <span class="sd">\ Thresholds (list:[tuple,list]) [(Imin,Imax),[Imin,Imax]] This gives lower and upper limits for points on the image to be included</span> |
---|
843 | <span class="sd"> in integrsation. The tuple is the image intensity limits and the list are those set by the user. </span> |
---|
844 | <span class="sd"> </span> |
---|
845 | <span class="sd">Stress/Strain Sample phi (float) Sample rotation about vertical axis.</span> |
---|
846 | <span class="sd">\ Sample z (float) Sample translation from the calibration sample position (for Sample phi = 0)</span> |
---|
847 | <span class="sd"> These will be restricted by space group symmetry; result of strain fit refinement.</span> |
---|
848 | <span class="sd">\ Type (str) 'True' or 'Conventional': The strain model used for the calculation.</span> |
---|
849 | <span class="sd">\ d-zero (list:dict) Each item is for a diffraction ring on the image; all items are from the same phase </span> |
---|
850 | <span class="sd"> and are used to determine the strain tensor.</span> |
---|
851 | <span class="sd"> The dictionary items are:</span> |
---|
852 | <span class="sd"> 'Dset': (float) True d-spacing for the diffraction ring; entered by the user.</span> |
---|
853 | <span class="sd"> 'Dcalc': (float) Average calculated d-spacing determined from strain coeff.</span> |
---|
854 | <span class="sd"> 'Emat': (list: float) The strain tensor elements e11, e12 & e22 (e21=e12, rest are 0)</span> |
---|
855 | <span class="sd"> 'Esig': (list: float) Esds for Emat from fitting.</span> |
---|
856 | <span class="sd"> 'pixLimit': (int) Search range to find highest point on ring for each data point</span> |
---|
857 | <span class="sd"> 'cutoff': (float) I/Ib cutoff for searching.</span> |
---|
858 | <span class="sd"> 'ImxyObs': (list: lists) [[X],[Y]] observed points to be used for strain calculations.</span> |
---|
859 | <span class="sd"> 'ImtaObs': (list: lists) [[d],[azm]] transformed via detector calibration from ImxyObs.</span> |
---|
860 | <span class="sd"> 'ImtaCalc': (list: lists [[d],[azm]] calculated d-spacing & azimuth from fit.</span> |
---|
861 | <span class="sd"> </span> |
---|
862 | <span class="sd">====================== ====================== ====================================================</span> |
---|
863 | |
---|
864 | <span class="sd">Parameter Dictionary</span> |
---|
865 | <span class="sd">-------------------------</span> |
---|
866 | |
---|
867 | <span class="sd">.. _parmDict_table:</span> |
---|
868 | |
---|
869 | <span class="sd">.. index::</span> |
---|
870 | <span class="sd"> single: Parameter dictionary</span> |
---|
871 | |
---|
872 | <span class="sd">The parameter dictionary contains all of the variable parameters for the refinement.</span> |
---|
873 | <span class="sd">The dictionary keys are the name of the parameter (<phase>:<hist>:<name>:<atom>). </span> |
---|
874 | <span class="sd">It is prepared in two ways. When loaded from the tree</span> |
---|
875 | <span class="sd">(in :meth:`GSASII.GSASII.MakeLSParmDict` and</span> |
---|
876 | <span class="sd">:meth:`GSASIIIO.ExportBaseclass.loadParmDict`), </span> |
---|
877 | <span class="sd">the values are lists with two elements: ``[value, refine flag]``</span> |
---|
878 | |
---|
879 | <span class="sd">When loaded from the GPX file (in</span> |
---|
880 | <span class="sd">:func:`GSASIIstrMain.Refine` and :func:`GSASIIstrMain.SeqRefine`), the value in the</span> |
---|
881 | <span class="sd">dict is the actual parameter value (usually a float, but sometimes a </span> |
---|
882 | <span class="sd">letter or string flag value (such as I or A for iso/anisotropic). </span> |
---|
883 | |
---|
884 | |
---|
885 | <span class="sd">*Classes and routines*</span> |
---|
886 | <span class="sd">----------------------</span> |
---|
887 | |
---|
888 | <span class="sd">'''</span> |
---|
889 | <span class="kn">import</span> <span class="nn">re</span> |
---|
890 | <span class="kn">import</span> <span class="nn">imp</span> |
---|
891 | <span class="kn">import</span> <span class="nn">random</span> <span class="kn">as</span> <span class="nn">ran</span> |
---|
892 | <span class="kn">import</span> <span class="nn">sys</span> |
---|
893 | <span class="kn">import</span> <span class="nn">GSASIIpath</span> |
---|
894 | <span class="kn">import</span> <span class="nn">GSASIImath</span> <span class="kn">as</span> <span class="nn">G2mth</span> |
---|
895 | <span class="kn">import</span> <span class="nn">numpy</span> <span class="kn">as</span> <span class="nn">np</span> |
---|
896 | |
---|
897 | <span class="n">GSASIIpath</span><span class="o">.</span><span class="n">SetVersionNumber</span><span class="p">(</span><span class="s">"$Revision: 1698 $"</span><span class="p">)</span> |
---|
898 | |
---|
899 | <span class="n">DefaultControls</span> <span class="o">=</span> <span class="p">{</span> |
---|
900 | <span class="s">'deriv type'</span><span class="p">:</span><span class="s">'analytic Hessian'</span><span class="p">,</span> <span class="c">#default controls</span> |
---|
901 | <span class="s">'min dM/M'</span><span class="p">:</span><span class="mf">0.0001</span><span class="p">,</span><span class="s">'shift factor'</span><span class="p">:</span><span class="mf">1.</span><span class="p">,</span><span class="s">'max cyc'</span><span class="p">:</span><span class="mi">3</span><span class="p">,</span><span class="s">'F**2'</span><span class="p">:</span><span class="bp">True</span><span class="p">,</span> |
---|
902 | <span class="s">'minF/sig'</span><span class="p">:</span><span class="mi">0</span><span class="p">,</span> |
---|
903 | <span class="s">'Author'</span><span class="p">:</span><span class="s">'no name'</span><span class="p">,</span> |
---|
904 | <span class="s">'FreePrm1'</span><span class="p">:</span><span class="s">'Sample humidity (%)'</span><span class="p">,</span> |
---|
905 | <span class="s">'FreePrm2'</span><span class="p">:</span><span class="s">'Sample voltage (V)'</span><span class="p">,</span> |
---|
906 | <span class="s">'FreePrm3'</span><span class="p">:</span><span class="s">'Applied load (MN)'</span><span class="p">,</span> |
---|
907 | <span class="p">}</span> |
---|
908 | <span class="sd">'''Values to be used as defaults for the initial contents of the ``Controls``</span> |
---|
909 | <span class="sd">data tree item.</span> |
---|
910 | <span class="sd">'''</span> |
---|
911 | |
---|
912 | <div class="viewcode-block" id="MakeUniqueLabel"><a class="viewcode-back" href="../GSASIIobj.html#GSASIIobj.MakeUniqueLabel">[docs]</a><span class="k">def</span> <span class="nf">MakeUniqueLabel</span><span class="p">(</span><span class="n">lbl</span><span class="p">,</span><span class="n">labellist</span><span class="p">):</span> |
---|
913 | <span class="sd">'''Make sure that every a label is unique against a list by adding</span> |
---|
914 | <span class="sd"> digits at the end until it is not found in list.</span> |
---|
915 | |
---|
916 | <span class="sd"> :param str lbl: the input label</span> |
---|
917 | <span class="sd"> :param list labellist: the labels that have already been encountered</span> |
---|
918 | <span class="sd"> :returns: lbl if not found in labellist or lbl with ``_1-9`` (or</span> |
---|
919 | <span class="sd"> ``_10-99``, etc.) appended at the end</span> |
---|
920 | <span class="sd"> '''</span> |
---|
921 | <span class="n">lbl</span> <span class="o">=</span> <span class="n">lbl</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> |
---|
922 | <span class="k">if</span> <span class="ow">not</span> <span class="n">lbl</span><span class="p">:</span> <span class="c"># deal with a blank label</span> |
---|
923 | <span class="n">lbl</span> <span class="o">=</span> <span class="s">'_1'</span> |
---|
924 | <span class="k">if</span> <span class="n">lbl</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">labellist</span><span class="p">:</span> |
---|
925 | <span class="n">labellist</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">lbl</span><span class="p">)</span> |
---|
926 | <span class="k">return</span> <span class="n">lbl</span> |
---|
927 | <span class="n">i</span> <span class="o">=</span> <span class="mi">1</span> |
---|
928 | <span class="n">prefix</span> <span class="o">=</span> <span class="n">lbl</span> |
---|
929 | <span class="k">if</span> <span class="s">'_'</span> <span class="ow">in</span> <span class="n">lbl</span><span class="p">:</span> |
---|
930 | <span class="n">prefix</span> <span class="o">=</span> <span class="n">lbl</span><span class="p">[:</span><span class="n">lbl</span><span class="o">.</span><span class="n">rfind</span><span class="p">(</span><span class="s">'_'</span><span class="p">)]</span> |
---|
931 | <span class="n">suffix</span> <span class="o">=</span> <span class="n">lbl</span><span class="p">[</span><span class="n">lbl</span><span class="o">.</span><span class="n">rfind</span><span class="p">(</span><span class="s">'_'</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">:]</span> |
---|
932 | <span class="k">try</span><span class="p">:</span> |
---|
933 | <span class="n">i</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">suffix</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span> |
---|
934 | <span class="k">except</span><span class="p">:</span> <span class="c"># suffix could not be parsed</span> |
---|
935 | <span class="n">i</span> <span class="o">=</span> <span class="mi">1</span> |
---|
936 | <span class="n">prefix</span> <span class="o">=</span> <span class="n">lbl</span> |
---|
937 | <span class="k">while</span> <span class="n">prefix</span><span class="o">+</span><span class="s">'_'</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="ow">in</span> <span class="n">labellist</span><span class="p">:</span> |
---|
938 | <span class="n">i</span> <span class="o">+=</span> <span class="mi">1</span> |
---|
939 | <span class="k">else</span><span class="p">:</span> |
---|
940 | <span class="n">lbl</span> <span class="o">=</span> <span class="n">prefix</span><span class="o">+</span><span class="s">'_'</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> |
---|
941 | <span class="n">labellist</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">lbl</span><span class="p">)</span> |
---|
942 | <span class="k">return</span> <span class="n">lbl</span> |
---|
943 | </div> |
---|
944 | <span class="n">PhaseIdLookup</span> <span class="o">=</span> <span class="p">{}</span> |
---|
945 | <span class="sd">'''dict listing phase name and random Id keyed by sequential phase index as a str;</span> |
---|
946 | <span class="sd">best to access this using :func:`LookupPhaseName`</span> |
---|
947 | <span class="sd">'''</span> |
---|
948 | <span class="n">PhaseRanIdLookup</span> <span class="o">=</span> <span class="p">{}</span> |
---|
949 | <span class="sd">'''dict listing phase sequential index keyed by phase random Id;</span> |
---|
950 | <span class="sd">best to access this using :func:`LookupPhaseId`</span> |
---|
951 | <span class="sd">'''</span> |
---|
952 | <span class="n">HistIdLookup</span> <span class="o">=</span> <span class="p">{}</span> |
---|
953 | <span class="sd">'''dict listing histogram name and random Id, keyed by sequential histogram index as a str;</span> |
---|
954 | <span class="sd">best to access this using :func:`LookupHistName`</span> |
---|
955 | <span class="sd">'''</span> |
---|
956 | <span class="n">HistRanIdLookup</span> <span class="o">=</span> <span class="p">{}</span> |
---|
957 | <span class="sd">'''dict listing histogram sequential index keyed by histogram random Id;</span> |
---|
958 | <span class="sd">best to access this using :func:`LookupHistId`</span> |
---|
959 | <span class="sd">'''</span> |
---|
960 | <span class="n">AtomIdLookup</span> <span class="o">=</span> <span class="p">{}</span> |
---|
961 | <span class="sd">'''dict listing for each phase index as a str, the atom label and atom random Id,</span> |
---|
962 | <span class="sd">keyed by atom sequential index as a str;</span> |
---|
963 | <span class="sd">best to access this using :func:`LookupAtomLabel`</span> |
---|
964 | <span class="sd">'''</span> |
---|
965 | <span class="n">AtomRanIdLookup</span> <span class="o">=</span> <span class="p">{}</span> |
---|
966 | <span class="sd">'''dict listing for each phase the atom sequential index keyed by atom random Id;</span> |
---|
967 | <span class="sd">best to access this using :func:`LookupAtomId`</span> |
---|
968 | <span class="sd">'''</span> |
---|
969 | <span class="n">ShortPhaseNames</span> <span class="o">=</span> <span class="p">{}</span> |
---|
970 | <span class="sd">'''a dict containing a possibly shortened and when non-unique numbered</span> |
---|
971 | <span class="sd">version of the phase name. Keyed by the phase sequential index.</span> |
---|
972 | <span class="sd">'''</span> |
---|
973 | <span class="n">ShortHistNames</span> <span class="o">=</span> <span class="p">{}</span> |
---|
974 | <span class="sd">'''a dict containing a possibly shortened and when non-unique numbered</span> |
---|
975 | <span class="sd">version of the histogram name. Keyed by the histogram sequential index.</span> |
---|
976 | <span class="sd">'''</span> |
---|
977 | |
---|
978 | <span class="n">VarDesc</span> <span class="o">=</span> <span class="p">{}</span> |
---|
979 | <span class="sd">''' This dictionary lists descriptions for GSAS-II variables,</span> |
---|
980 | <span class="sd">as set in :func:`CompileVarDesc`. See that function for a description</span> |
---|
981 | <span class="sd">for how keys and values are written.</span> |
---|
982 | <span class="sd">'''</span> |
---|
983 | |
---|
984 | <span class="n">reVarDesc</span> <span class="o">=</span> <span class="p">{}</span> |
---|
985 | <span class="sd">''' This dictionary lists descriptions for GSAS-II variables with</span> |
---|
986 | <span class="sd">the same values as :attr:`VarDesc` except that keys have been compiled as</span> |
---|
987 | <span class="sd">regular expressions. Initialized in :func:`CompileVarDesc`.</span> |
---|
988 | <span class="sd">'''</span> |
---|
989 | |
---|
990 | <div class="viewcode-block" id="IndexAllIds"><a class="viewcode-back" href="../GSASIIobj.html#GSASIIobj.IndexAllIds">[docs]</a><span class="k">def</span> <span class="nf">IndexAllIds</span><span class="p">(</span><span class="n">Histograms</span><span class="p">,</span><span class="n">Phases</span><span class="p">):</span> |
---|
991 | <span class="sd">'''Scan through the used phases & histograms and create an index</span> |
---|
992 | <span class="sd"> to the random numbers of phases, histograms and atoms. While doing this,</span> |
---|
993 | <span class="sd"> confirm that assigned random numbers are unique -- just in case lightning</span> |
---|
994 | <span class="sd"> strikes twice in the same place.</span> |
---|
995 | |
---|
996 | <span class="sd"> Note: this code assumes that the atom random Id (ranId) is the last </span> |
---|
997 | <span class="sd"> element each atom record.</span> |
---|
998 | |
---|
999 | <span class="sd"> This is called in three places (only): :func:`GSASIIstrIO.GetUsedHistogramsAndPhases`</span> |
---|
1000 | <span class="sd"> (which loads the histograms and phases from a GPX file),</span> |
---|
1001 | <span class="sd"> :meth:`~GSASII.GSASII.GetUsedHistogramsAndPhasesfromTree`</span> |
---|
1002 | <span class="sd"> (which loads the histograms and phases from the data tree.) and</span> |
---|
1003 | <span class="sd"> :meth:`GSASIIconstrGUI.UpdateConstraints`</span> |
---|
1004 | <span class="sd"> (which displays & edits the constraints in a GUI)</span> |
---|
1005 | |
---|
1006 | <span class="sd"> TODO: do we need a lookup for rigid body variables?</span> |
---|
1007 | <span class="sd"> '''</span> |
---|
1008 | <span class="c"># process phases and atoms</span> |
---|
1009 | <span class="n">PhaseIdLookup</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span> |
---|
1010 | <span class="n">PhaseRanIdLookup</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span> |
---|
1011 | <span class="n">AtomIdLookup</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span> |
---|
1012 | <span class="n">AtomRanIdLookup</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span> |
---|
1013 | <span class="n">ShortPhaseNames</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span> |
---|
1014 | <span class="k">for</span> <span class="n">ph</span> <span class="ow">in</span> <span class="n">Phases</span><span class="p">:</span> |
---|
1015 | <span class="n">cx</span><span class="p">,</span><span class="n">ct</span><span class="p">,</span><span class="n">cs</span><span class="p">,</span><span class="n">cia</span> <span class="o">=</span> <span class="n">Phases</span><span class="p">[</span><span class="n">ph</span><span class="p">][</span><span class="s">'General'</span><span class="p">][</span><span class="s">'AtomPtrs'</span><span class="p">]</span> |
---|
1016 | <span class="n">ranId</span> <span class="o">=</span> <span class="n">Phases</span><span class="p">[</span><span class="n">ph</span><span class="p">][</span><span class="s">'ranId'</span><span class="p">]</span> |
---|
1017 | <span class="k">while</span> <span class="n">ranId</span> <span class="ow">in</span> <span class="n">PhaseRanIdLookup</span><span class="p">:</span> |
---|
1018 | <span class="c"># Found duplicate random Id! note and reassign</span> |
---|
1019 | <span class="k">print</span> <span class="p">(</span><span class="s">"</span><span class="se">\n\n</span><span class="s">*** Phase "</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">ph</span><span class="p">)</span><span class="o">+</span><span class="s">" has repeated ranId. Fixing.</span><span class="se">\n</span><span class="s">"</span><span class="p">)</span> |
---|
1020 | <span class="n">Phases</span><span class="p">[</span><span class="n">ph</span><span class="p">][</span><span class="s">'ranId'</span><span class="p">]</span> <span class="o">=</span> <span class="n">ranId</span> <span class="o">=</span> <span class="n">ran</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="n">sys</span><span class="o">.</span><span class="n">maxint</span><span class="p">)</span> |
---|
1021 | <span class="n">pId</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">Phases</span><span class="p">[</span><span class="n">ph</span><span class="p">][</span><span class="s">'pId'</span><span class="p">])</span> |
---|
1022 | <span class="n">PhaseIdLookup</span><span class="p">[</span><span class="n">pId</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">ph</span><span class="p">,</span><span class="n">ranId</span><span class="p">)</span> |
---|
1023 | <span class="n">PhaseRanIdLookup</span><span class="p">[</span><span class="n">ranId</span><span class="p">]</span> <span class="o">=</span> <span class="n">pId</span> |
---|
1024 | <span class="n">shortname</span> <span class="o">=</span> <span class="n">ph</span><span class="p">[:</span><span class="mi">10</span><span class="p">]</span> |
---|
1025 | <span class="k">while</span> <span class="n">shortname</span> <span class="ow">in</span> <span class="n">ShortPhaseNames</span><span class="o">.</span><span class="n">values</span><span class="p">():</span> |
---|
1026 | <span class="n">shortname</span> <span class="o">=</span> <span class="n">ph</span><span class="p">[:</span><span class="mi">8</span><span class="p">]</span> <span class="o">+</span> <span class="s">' ('</span><span class="o">+</span> <span class="n">pId</span> <span class="o">+</span> <span class="s">')'</span> |
---|
1027 | <span class="n">ShortPhaseNames</span><span class="p">[</span><span class="n">pId</span><span class="p">]</span> <span class="o">=</span> <span class="n">shortname</span> |
---|
1028 | <span class="n">AtomIdLookup</span><span class="p">[</span><span class="n">pId</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> |
---|
1029 | <span class="n">AtomRanIdLookup</span><span class="p">[</span><span class="n">pId</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> |
---|
1030 | <span class="k">for</span> <span class="n">iatm</span><span class="p">,</span><span class="n">at</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">Phases</span><span class="p">[</span><span class="n">ph</span><span class="p">][</span><span class="s">'Atoms'</span><span class="p">]):</span> |
---|
1031 | <span class="n">ranId</span> <span class="o">=</span> <span class="n">at</span><span class="p">[</span><span class="n">cia</span><span class="o">+</span><span class="mi">8</span><span class="p">]</span> |
---|
1032 | <span class="k">while</span> <span class="n">ranId</span> <span class="ow">in</span> <span class="n">AtomRanIdLookup</span><span class="p">[</span><span class="n">pId</span><span class="p">]:</span> <span class="c"># check for dups</span> |
---|
1033 | <span class="k">print</span> <span class="p">(</span><span class="s">"</span><span class="se">\n\n</span><span class="s">*** Phase "</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">ph</span><span class="p">)</span><span class="o">+</span><span class="s">" atom "</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">iatm</span><span class="p">)</span><span class="o">+</span><span class="s">" has repeated ranId. Fixing.</span><span class="se">\n</span><span class="s">"</span><span class="p">)</span> |
---|
1034 | <span class="n">at</span><span class="p">[</span><span class="n">cia</span><span class="o">+</span><span class="mi">8</span><span class="p">]</span> <span class="o">=</span> <span class="n">ranId</span> <span class="o">=</span> <span class="n">ran</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="n">sys</span><span class="o">.</span><span class="n">maxint</span><span class="p">)</span> |
---|
1035 | <span class="n">AtomRanIdLookup</span><span class="p">[</span><span class="n">pId</span><span class="p">][</span><span class="n">ranId</span><span class="p">]</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">iatm</span><span class="p">)</span> |
---|
1036 | <span class="k">if</span> <span class="n">Phases</span><span class="p">[</span><span class="n">ph</span><span class="p">][</span><span class="s">'General'</span><span class="p">][</span><span class="s">'Type'</span><span class="p">]</span> <span class="o">==</span> <span class="s">'macromolecular'</span><span class="p">:</span> |
---|
1037 | <span class="n">label</span> <span class="o">=</span> <span class="s">'</span><span class="si">%s</span><span class="s">_</span><span class="si">%s</span><span class="s">_</span><span class="si">%s</span><span class="s">_</span><span class="si">%s</span><span class="s">'</span><span class="o">%</span><span class="p">(</span><span class="n">at</span><span class="p">[</span><span class="n">ct</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span><span class="n">at</span><span class="p">[</span><span class="n">ct</span><span class="o">-</span><span class="mi">3</span><span class="p">],</span><span class="n">at</span><span class="p">[</span><span class="n">ct</span><span class="o">-</span><span class="mi">4</span><span class="p">],</span><span class="n">at</span><span class="p">[</span><span class="n">ct</span><span class="o">-</span><span class="mi">2</span><span class="p">])</span> |
---|
1038 | <span class="k">else</span><span class="p">:</span> |
---|
1039 | <span class="n">label</span> <span class="o">=</span> <span class="n">at</span><span class="p">[</span><span class="n">ct</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> |
---|
1040 | <span class="n">AtomIdLookup</span><span class="p">[</span><span class="n">pId</span><span class="p">][</span><span class="nb">str</span><span class="p">(</span><span class="n">iatm</span><span class="p">)]</span> <span class="o">=</span> <span class="p">(</span><span class="n">label</span><span class="p">,</span><span class="n">ranId</span><span class="p">)</span> |
---|
1041 | <span class="c"># process histograms</span> |
---|
1042 | <span class="n">HistIdLookup</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span> |
---|
1043 | <span class="n">HistRanIdLookup</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span> |
---|
1044 | <span class="n">ShortHistNames</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span> |
---|
1045 | <span class="k">for</span> <span class="n">hist</span> <span class="ow">in</span> <span class="n">Histograms</span><span class="p">:</span> |
---|
1046 | <span class="n">ranId</span> <span class="o">=</span> <span class="n">Histograms</span><span class="p">[</span><span class="n">hist</span><span class="p">][</span><span class="s">'ranId'</span><span class="p">]</span> |
---|
1047 | <span class="k">while</span> <span class="n">ranId</span> <span class="ow">in</span> <span class="n">HistRanIdLookup</span><span class="p">:</span> |
---|
1048 | <span class="c"># Found duplicate random Id! note and reassign</span> |
---|
1049 | <span class="k">print</span> <span class="p">(</span><span class="s">"</span><span class="se">\n\n</span><span class="s">*** Histogram "</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">hist</span><span class="p">)</span><span class="o">+</span><span class="s">" has repeated ranId. Fixing.</span><span class="se">\n</span><span class="s">"</span><span class="p">)</span> |
---|
1050 | <span class="n">Histograms</span><span class="p">[</span><span class="n">hist</span><span class="p">][</span><span class="s">'ranId'</span><span class="p">]</span> <span class="o">=</span> <span class="n">ranId</span> <span class="o">=</span> <span class="n">ran</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="n">sys</span><span class="o">.</span><span class="n">maxint</span><span class="p">)</span> |
---|
1051 | <span class="n">hId</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">Histograms</span><span class="p">[</span><span class="n">hist</span><span class="p">][</span><span class="s">'hId'</span><span class="p">])</span> |
---|
1052 | <span class="n">HistIdLookup</span><span class="p">[</span><span class="n">hId</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">hist</span><span class="p">,</span><span class="n">ranId</span><span class="p">)</span> |
---|
1053 | <span class="n">HistRanIdLookup</span><span class="p">[</span><span class="n">ranId</span><span class="p">]</span> <span class="o">=</span> <span class="n">hId</span> |
---|
1054 | <span class="n">shortname</span> <span class="o">=</span> <span class="n">hist</span><span class="p">[:</span><span class="mi">15</span><span class="p">]</span> |
---|
1055 | <span class="k">while</span> <span class="n">shortname</span> <span class="ow">in</span> <span class="n">ShortHistNames</span><span class="o">.</span><span class="n">values</span><span class="p">():</span> |
---|
1056 | <span class="n">shortname</span> <span class="o">=</span> <span class="n">hist</span><span class="p">[:</span><span class="mi">11</span><span class="p">]</span> <span class="o">+</span> <span class="s">' ('</span><span class="o">+</span> <span class="n">hId</span> <span class="o">+</span> <span class="s">')'</span> |
---|
1057 | <span class="n">ShortHistNames</span><span class="p">[</span><span class="n">hId</span><span class="p">]</span> <span class="o">=</span> <span class="n">shortname</span> |
---|
1058 | </div> |
---|
1059 | <div class="viewcode-block" id="LookupAtomId"><a class="viewcode-back" href="../GSASIIobj.html#GSASIIobj.LookupAtomId">[docs]</a><span class="k">def</span> <span class="nf">LookupAtomId</span><span class="p">(</span><span class="n">pId</span><span class="p">,</span><span class="n">ranId</span><span class="p">):</span> |
---|
1060 | <span class="sd">'''Get the atom number from a phase and atom random Id</span> |
---|
1061 | |
---|
1062 | <span class="sd"> :param int/str pId: the sequential number of the phase</span> |
---|
1063 | <span class="sd"> :param int ranId: the random Id assigned to an atom</span> |
---|
1064 | |
---|
1065 | <span class="sd"> :returns: the index number of the atom (str)</span> |
---|
1066 | <span class="sd"> '''</span> |
---|
1067 | <span class="k">if</span> <span class="ow">not</span> <span class="n">AtomRanIdLookup</span><span class="p">:</span> |
---|
1068 | <span class="k">raise</span> <span class="ne">Exception</span><span class="p">,</span><span class="s">'Error: LookupAtomId called before IndexAllIds was run'</span> |
---|
1069 | <span class="k">if</span> <span class="n">pId</span> <span class="ow">is</span> <span class="bp">None</span> <span class="ow">or</span> <span class="n">pId</span> <span class="o">==</span> <span class="s">''</span><span class="p">:</span> |
---|
1070 | <span class="k">raise</span> <span class="ne">KeyError</span><span class="p">,</span><span class="s">'Error: phase is invalid (None or blank)'</span> |
---|
1071 | <span class="n">pId</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">pId</span><span class="p">)</span> |
---|
1072 | <span class="k">if</span> <span class="n">pId</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">AtomRanIdLookup</span><span class="p">:</span> |
---|
1073 | <span class="k">raise</span> <span class="ne">KeyError</span><span class="p">,</span><span class="s">'Error: LookupAtomId does not have phase '</span><span class="o">+</span><span class="n">pId</span> |
---|
1074 | <span class="k">if</span> <span class="n">ranId</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">AtomRanIdLookup</span><span class="p">[</span><span class="n">pId</span><span class="p">]:</span> |
---|
1075 | <span class="k">raise</span> <span class="ne">KeyError</span><span class="p">,</span><span class="s">'Error: LookupAtomId, ranId '</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">ranId</span><span class="p">)</span><span class="o">+</span><span class="s">' not in AtomRanIdLookup['</span><span class="o">+</span><span class="n">pId</span><span class="o">+</span><span class="s">']'</span> |
---|
1076 | <span class="k">return</span> <span class="n">AtomRanIdLookup</span><span class="p">[</span><span class="n">pId</span><span class="p">][</span><span class="n">ranId</span><span class="p">]</span> |
---|
1077 | </div> |
---|
1078 | <div class="viewcode-block" id="LookupAtomLabel"><a class="viewcode-back" href="../GSASIIobj.html#GSASIIobj.LookupAtomLabel">[docs]</a><span class="k">def</span> <span class="nf">LookupAtomLabel</span><span class="p">(</span><span class="n">pId</span><span class="p">,</span><span class="n">index</span><span class="p">):</span> |
---|
1079 | <span class="sd">'''Get the atom label from a phase and atom index number</span> |
---|
1080 | |
---|
1081 | <span class="sd"> :param int/str pId: the sequential number of the phase</span> |
---|
1082 | <span class="sd"> :param int index: the index of the atom in the list of atoms</span> |
---|
1083 | |
---|
1084 | <span class="sd"> :returns: the label for the atom (str) and the random Id of the atom (int)</span> |
---|
1085 | <span class="sd"> '''</span> |
---|
1086 | <span class="k">if</span> <span class="ow">not</span> <span class="n">AtomIdLookup</span><span class="p">:</span> |
---|
1087 | <span class="k">raise</span> <span class="ne">Exception</span><span class="p">,</span><span class="s">'Error: LookupAtomLabel called before IndexAllIds was run'</span> |
---|
1088 | <span class="k">if</span> <span class="n">pId</span> <span class="ow">is</span> <span class="bp">None</span> <span class="ow">or</span> <span class="n">pId</span> <span class="o">==</span> <span class="s">''</span><span class="p">:</span> |
---|
1089 | <span class="k">raise</span> <span class="ne">KeyError</span><span class="p">,</span><span class="s">'Error: phase is invalid (None or blank)'</span> |
---|
1090 | <span class="n">pId</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">pId</span><span class="p">)</span> |
---|
1091 | <span class="k">if</span> <span class="n">pId</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">AtomIdLookup</span><span class="p">:</span> |
---|
1092 | <span class="k">raise</span> <span class="ne">KeyError</span><span class="p">,</span><span class="s">'Error: LookupAtomLabel does not have phase '</span><span class="o">+</span><span class="n">pId</span> |
---|
1093 | <span class="k">if</span> <span class="n">index</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">AtomIdLookup</span><span class="p">[</span><span class="n">pId</span><span class="p">]:</span> |
---|
1094 | <span class="k">raise</span> <span class="ne">KeyError</span><span class="p">,</span><span class="s">'Error: LookupAtomLabel, ranId '</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">index</span><span class="p">)</span><span class="o">+</span><span class="s">' not in AtomRanIdLookup['</span><span class="o">+</span><span class="n">pId</span><span class="o">+</span><span class="s">']'</span> |
---|
1095 | <span class="k">return</span> <span class="n">AtomIdLookup</span><span class="p">[</span><span class="n">pId</span><span class="p">][</span><span class="n">index</span><span class="p">]</span> |
---|
1096 | </div> |
---|
1097 | <div class="viewcode-block" id="LookupPhaseId"><a class="viewcode-back" href="../GSASIIobj.html#GSASIIobj.LookupPhaseId">[docs]</a><span class="k">def</span> <span class="nf">LookupPhaseId</span><span class="p">(</span><span class="n">ranId</span><span class="p">):</span> |
---|
1098 | <span class="sd">'''Get the phase number and name from a phase random Id</span> |
---|
1099 | |
---|
1100 | <span class="sd"> :param int ranId: the random Id assigned to a phase</span> |
---|
1101 | <span class="sd"> :returns: the sequential Id (pId) number for the phase (str)</span> |
---|
1102 | <span class="sd"> '''</span> |
---|
1103 | <span class="k">if</span> <span class="ow">not</span> <span class="n">PhaseRanIdLookup</span><span class="p">:</span> |
---|
1104 | <span class="k">raise</span> <span class="ne">Exception</span><span class="p">,</span><span class="s">'Error: LookupPhaseId called before IndexAllIds was run'</span> |
---|
1105 | <span class="k">if</span> <span class="n">ranId</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">PhaseRanIdLookup</span><span class="p">:</span> |
---|
1106 | <span class="k">raise</span> <span class="ne">KeyError</span><span class="p">,</span><span class="s">'Error: LookupPhaseId does not have ranId '</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">ranId</span><span class="p">)</span> |
---|
1107 | <span class="k">return</span> <span class="n">PhaseRanIdLookup</span><span class="p">[</span><span class="n">ranId</span><span class="p">]</span> |
---|
1108 | </div> |
---|
1109 | <div class="viewcode-block" id="LookupPhaseName"><a class="viewcode-back" href="../GSASIIobj.html#GSASIIobj.LookupPhaseName">[docs]</a><span class="k">def</span> <span class="nf">LookupPhaseName</span><span class="p">(</span><span class="n">pId</span><span class="p">):</span> |
---|
1110 | <span class="sd">'''Get the phase number and name from a phase Id</span> |
---|
1111 | |
---|
1112 | <span class="sd"> :param int/str pId: the sequential assigned to a phase</span> |
---|
1113 | <span class="sd"> :returns: (phase,ranId) where phase is the name of the phase (str)</span> |
---|
1114 | <span class="sd"> and ranId is the random # id for the phase (int)</span> |
---|
1115 | <span class="sd"> '''</span> |
---|
1116 | <span class="k">if</span> <span class="ow">not</span> <span class="n">PhaseIdLookup</span><span class="p">:</span> |
---|
1117 | <span class="k">raise</span> <span class="ne">Exception</span><span class="p">,</span><span class="s">'Error: LookupPhaseName called before IndexAllIds was run'</span> |
---|
1118 | <span class="k">if</span> <span class="n">pId</span> <span class="ow">is</span> <span class="bp">None</span> <span class="ow">or</span> <span class="n">pId</span> <span class="o">==</span> <span class="s">''</span><span class="p">:</span> |
---|
1119 | <span class="k">raise</span> <span class="ne">KeyError</span><span class="p">,</span><span class="s">'Error: phase is invalid (None or blank)'</span> |
---|
1120 | <span class="n">pId</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">pId</span><span class="p">)</span> |
---|
1121 | <span class="k">if</span> <span class="n">pId</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">PhaseIdLookup</span><span class="p">:</span> |
---|
1122 | <span class="k">raise</span> <span class="ne">KeyError</span><span class="p">,</span><span class="s">'Error: LookupPhaseName does not have index '</span><span class="o">+</span><span class="n">pId</span> |
---|
1123 | <span class="k">return</span> <span class="n">PhaseIdLookup</span><span class="p">[</span><span class="n">pId</span><span class="p">]</span> |
---|
1124 | </div> |
---|
1125 | <div class="viewcode-block" id="LookupHistId"><a class="viewcode-back" href="../GSASIIobj.html#GSASIIobj.LookupHistId">[docs]</a><span class="k">def</span> <span class="nf">LookupHistId</span><span class="p">(</span><span class="n">ranId</span><span class="p">):</span> |
---|
1126 | <span class="sd">'''Get the histogram number and name from a histogram random Id</span> |
---|
1127 | |
---|
1128 | <span class="sd"> :param int ranId: the random Id assigned to a histogram</span> |
---|
1129 | <span class="sd"> :returns: the sequential Id (hId) number for the histogram (str)</span> |
---|
1130 | <span class="sd"> '''</span> |
---|
1131 | <span class="k">if</span> <span class="ow">not</span> <span class="n">HistRanIdLookup</span><span class="p">:</span> |
---|
1132 | <span class="k">raise</span> <span class="ne">Exception</span><span class="p">,</span><span class="s">'Error: LookupHistId called before IndexAllIds was run'</span> |
---|
1133 | <span class="k">if</span> <span class="n">ranId</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">HistRanIdLookup</span><span class="p">:</span> |
---|
1134 | <span class="k">raise</span> <span class="ne">KeyError</span><span class="p">,</span><span class="s">'Error: LookupHistId does not have ranId '</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">ranId</span><span class="p">)</span> |
---|
1135 | <span class="k">return</span> <span class="n">HistRanIdLookup</span><span class="p">[</span><span class="n">ranId</span><span class="p">]</span> |
---|
1136 | </div> |
---|
1137 | <div class="viewcode-block" id="LookupHistName"><a class="viewcode-back" href="../GSASIIobj.html#GSASIIobj.LookupHistName">[docs]</a><span class="k">def</span> <span class="nf">LookupHistName</span><span class="p">(</span><span class="n">hId</span><span class="p">):</span> |
---|
1138 | <span class="sd">'''Get the histogram number and name from a histogram Id</span> |
---|
1139 | |
---|
1140 | <span class="sd"> :param int/str hId: the sequential assigned to a histogram</span> |
---|
1141 | <span class="sd"> :returns: (hist,ranId) where hist is the name of the histogram (str)</span> |
---|
1142 | <span class="sd"> and ranId is the random # id for the histogram (int)</span> |
---|
1143 | <span class="sd"> '''</span> |
---|
1144 | <span class="k">if</span> <span class="ow">not</span> <span class="n">HistIdLookup</span><span class="p">:</span> |
---|
1145 | <span class="k">raise</span> <span class="ne">Exception</span><span class="p">,</span><span class="s">'Error: LookupHistName called before IndexAllIds was run'</span> |
---|
1146 | <span class="k">if</span> <span class="n">hId</span> <span class="ow">is</span> <span class="bp">None</span> <span class="ow">or</span> <span class="n">hId</span> <span class="o">==</span> <span class="s">''</span><span class="p">:</span> |
---|
1147 | <span class="k">raise</span> <span class="ne">KeyError</span><span class="p">,</span><span class="s">'Error: histogram is invalid (None or blank)'</span> |
---|
1148 | <span class="n">hId</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">hId</span><span class="p">)</span> |
---|
1149 | <span class="k">if</span> <span class="n">hId</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">HistIdLookup</span><span class="p">:</span> |
---|
1150 | <span class="k">raise</span> <span class="ne">KeyError</span><span class="p">,</span><span class="s">'Error: LookupHistName does not have index '</span><span class="o">+</span><span class="n">hId</span> |
---|
1151 | <span class="k">return</span> <span class="n">HistIdLookup</span><span class="p">[</span><span class="n">hId</span><span class="p">]</span> |
---|
1152 | </div> |
---|
1153 | <div class="viewcode-block" id="fmtVarDescr"><a class="viewcode-back" href="../GSASIIobj.html#GSASIIobj.fmtVarDescr">[docs]</a><span class="k">def</span> <span class="nf">fmtVarDescr</span><span class="p">(</span><span class="n">varname</span><span class="p">):</span> |
---|
1154 | <span class="sd">'''Return a string with a more complete description for a GSAS-II variable </span> |
---|
1155 | |
---|
1156 | <span class="sd"> :param str varname: A full G2 variable name with 2 or 3 or 4</span> |
---|
1157 | <span class="sd"> colons (<p>:<h>:name[:<a>] or <p>::RBname:<r>:<t>])</span> |
---|
1158 | <span class="sd"> </span> |
---|
1159 | <span class="sd"> :returns: a string with the description</span> |
---|
1160 | <span class="sd"> '''</span> |
---|
1161 | <span class="n">s</span><span class="p">,</span><span class="n">l</span> <span class="o">=</span> <span class="n">VarDescr</span><span class="p">(</span><span class="n">varname</span><span class="p">)</span> |
---|
1162 | <span class="k">return</span> <span class="n">s</span><span class="o">+</span><span class="s">": "</span><span class="o">+</span><span class="n">l</span> |
---|
1163 | </div> |
---|
1164 | <div class="viewcode-block" id="VarDescr"><a class="viewcode-back" href="../GSASIIobj.html#GSASIIobj.VarDescr">[docs]</a><span class="k">def</span> <span class="nf">VarDescr</span><span class="p">(</span><span class="n">varname</span><span class="p">):</span> |
---|
1165 | <span class="sd">'''Return two strings with a more complete description for a GSAS-II variable </span> |
---|
1166 | |
---|
1167 | <span class="sd"> :param str name: A full G2 variable name with 2 or 3 or 4</span> |
---|
1168 | <span class="sd"> colons (<p>:<h>:name[:<a>] or <p>::RBname:<r>:<t>])</span> |
---|
1169 | <span class="sd"> </span> |
---|
1170 | <span class="sd"> :returns: (loc,meaning) where loc describes what item the variable is mapped</span> |
---|
1171 | <span class="sd"> (phase, histogram, etc.) and meaning describes what the variable does.</span> |
---|
1172 | <span class="sd"> '''</span> |
---|
1173 | |
---|
1174 | <span class="c"># special handling for parameter names without a colons</span> |
---|
1175 | <span class="c"># for now, assume self-defining</span> |
---|
1176 | <span class="k">if</span> <span class="n">varname</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s">':'</span><span class="p">)</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span> |
---|
1177 | <span class="k">return</span> <span class="s">"Global"</span><span class="p">,</span><span class="n">varname</span> |
---|
1178 | |
---|
1179 | <span class="n">l</span> <span class="o">=</span> <span class="n">getVarDescr</span><span class="p">(</span><span class="n">varname</span><span class="p">)</span> |
---|
1180 | <span class="k">if</span> <span class="ow">not</span> <span class="n">l</span><span class="p">:</span> |
---|
1181 | <span class="k">return</span> <span class="p">(</span><span class="s">"invalid variable name ("</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">varname</span><span class="p">)</span><span class="o">+</span><span class="s">")!"</span><span class="p">),</span><span class="s">""</span> |
---|
1182 | <span class="c"># return "invalid variable name!",""</span> |
---|
1183 | |
---|
1184 | <span class="k">if</span> <span class="ow">not</span> <span class="n">l</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]:</span> |
---|
1185 | <span class="n">l</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="s">"(variable needs a definition! Set it in CompileVarDesc)"</span> |
---|
1186 | |
---|
1187 | <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">l</span><span class="p">)</span> <span class="o">==</span> <span class="mi">3</span><span class="p">:</span> <span class="c">#SASD variable name!</span> |
---|
1188 | <span class="n">s</span> <span class="o">=</span> <span class="s">'component:'</span><span class="o">+</span><span class="n">l</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> |
---|
1189 | <span class="k">return</span> <span class="n">s</span><span class="p">,</span><span class="n">l</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> |
---|
1190 | <span class="n">s</span> <span class="o">=</span> <span class="s">""</span> |
---|
1191 | <span class="k">if</span> <span class="n">l</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span> <span class="ow">and</span> <span class="n">l</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> <span class="c"># HAP: keep short</span> |
---|
1192 | <span class="k">if</span> <span class="n">l</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">==</span> <span class="s">"Scale"</span><span class="p">:</span> <span class="c"># fix up ambigous name</span> |
---|
1193 | <span class="n">l</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span> <span class="o">=</span> <span class="s">"Phase fraction"</span> |
---|
1194 | <span class="k">if</span> <span class="n">l</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="s">'*'</span><span class="p">:</span> |
---|
1195 | <span class="n">lbl</span> <span class="o">=</span> <span class="s">'all'</span> |
---|
1196 | <span class="k">else</span><span class="p">:</span> |
---|
1197 | <span class="n">lbl</span> <span class="o">=</span> <span class="n">ShortPhaseNames</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">l</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="s">'? #'</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">l</span><span class="p">[</span><span class="mi">0</span><span class="p">]))</span> |
---|
1198 | <span class="k">if</span> <span class="n">l</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="s">'*'</span><span class="p">:</span> |
---|
1199 | <span class="n">hlbl</span> <span class="o">=</span> <span class="s">'all'</span> |
---|
1200 | <span class="k">else</span><span class="p">:</span> |
---|
1201 | <span class="n">hlbl</span> <span class="o">=</span> <span class="n">ShortHistNames</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">l</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span><span class="s">'? #'</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">l</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span> |
---|
1202 | <span class="k">if</span> <span class="n">hlbl</span><span class="p">[:</span><span class="mi">4</span><span class="p">]</span> <span class="o">==</span> <span class="s">'HKLF'</span><span class="p">:</span> |
---|
1203 | <span class="n">hlbl</span> <span class="o">=</span> <span class="s">'Xtl='</span><span class="o">+</span><span class="n">hlbl</span><span class="p">[</span><span class="mi">5</span><span class="p">:]</span> |
---|
1204 | <span class="k">elif</span> <span class="n">hlbl</span><span class="p">[:</span><span class="mi">4</span><span class="p">]</span> <span class="o">==</span> <span class="s">'PWDR'</span><span class="p">:</span> |
---|
1205 | <span class="n">hlbl</span> <span class="o">=</span> <span class="s">'Pwd='</span><span class="o">+</span><span class="n">hlbl</span><span class="p">[</span><span class="mi">5</span><span class="p">:]</span> |
---|
1206 | <span class="k">else</span><span class="p">:</span> |
---|
1207 | <span class="n">hlbl</span> <span class="o">=</span> <span class="s">'Hist='</span><span class="o">+</span><span class="n">hlbl</span> |
---|
1208 | <span class="n">s</span> <span class="o">=</span> <span class="s">"Ph="</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">lbl</span><span class="p">)</span><span class="o">+</span><span class="s">" * "</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">hlbl</span><span class="p">)</span> |
---|
1209 | <span class="k">else</span><span class="p">:</span> |
---|
1210 | <span class="k">if</span> <span class="n">l</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">==</span> <span class="s">"Scale"</span><span class="p">:</span> <span class="c"># fix up ambigous name: must be scale factor, since not HAP</span> |
---|
1211 | <span class="n">l</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span> <span class="o">=</span> <span class="s">"Scale factor"</span> |
---|
1212 | <span class="k">if</span> <span class="n">l</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">==</span> <span class="s">'Back'</span><span class="p">:</span> <span class="c"># background parameters are "special", alas</span> |
---|
1213 | <span class="n">s</span> <span class="o">=</span> <span class="s">'Hist='</span><span class="o">+</span><span class="n">ShortHistNames</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">l</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span><span class="s">'? #'</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">l</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span> |
---|
1214 | <span class="n">l</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">+=</span> <span class="s">' #'</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">l</span><span class="p">[</span><span class="mi">3</span><span class="p">])</span> |
---|
1215 | <span class="k">elif</span> <span class="n">l</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> <span class="c"># rigid body parameter</span> |
---|
1216 | <span class="n">lbl</span> <span class="o">=</span> <span class="n">ShortPhaseNames</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">l</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="s">'phase?'</span><span class="p">)</span> |
---|
1217 | <span class="n">s</span> <span class="o">=</span> <span class="s">"Res #"</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">l</span><span class="p">[</span><span class="mi">3</span><span class="p">])</span><span class="o">+</span><span class="s">" body #"</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">l</span><span class="p">[</span><span class="mi">4</span><span class="p">])</span><span class="o">+</span><span class="s">" in "</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">lbl</span><span class="p">)</span> |
---|
1218 | <span class="k">elif</span> <span class="n">l</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> <span class="c"># atom parameter, </span> |
---|
1219 | <span class="n">lbl</span> <span class="o">=</span> <span class="n">ShortPhaseNames</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">l</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="s">'phase?'</span><span class="p">)</span> |
---|
1220 | <span class="k">try</span><span class="p">:</span> |
---|
1221 | <span class="n">albl</span> <span class="o">=</span> <span class="n">LookupAtomLabel</span><span class="p">(</span><span class="n">l</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="n">l</span><span class="p">[</span><span class="mi">3</span><span class="p">])[</span><span class="mi">0</span><span class="p">]</span> |
---|
1222 | <span class="k">except</span> <span class="ne">KeyError</span><span class="p">:</span> |
---|
1223 | <span class="n">albl</span> <span class="o">=</span> <span class="s">'Atom?'</span> |
---|
1224 | <span class="n">s</span> <span class="o">=</span> <span class="s">"Atom "</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">albl</span><span class="p">)</span><span class="o">+</span><span class="s">" in "</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">lbl</span><span class="p">)</span> |
---|
1225 | <span class="k">elif</span> <span class="n">l</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="s">'*'</span><span class="p">:</span> |
---|
1226 | <span class="n">s</span> <span class="o">=</span> <span class="s">"All phases "</span> |
---|
1227 | <span class="k">elif</span> <span class="n">l</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> |
---|
1228 | <span class="n">lbl</span> <span class="o">=</span> <span class="n">ShortPhaseNames</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">l</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="s">'phase?'</span><span class="p">)</span> |
---|
1229 | <span class="n">s</span> <span class="o">=</span> <span class="s">"Phase "</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">lbl</span><span class="p">)</span> |
---|
1230 | <span class="k">elif</span> <span class="n">l</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="s">'*'</span><span class="p">:</span> |
---|
1231 | <span class="n">s</span> <span class="o">=</span> <span class="s">'All hists'</span> |
---|
1232 | <span class="k">elif</span> <span class="n">l</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> |
---|
1233 | <span class="n">hlbl</span> <span class="o">=</span> <span class="n">ShortHistNames</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">l</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span><span class="s">'? #'</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">l</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span> |
---|
1234 | <span class="k">if</span> <span class="n">hlbl</span><span class="p">[:</span><span class="mi">4</span><span class="p">]</span> <span class="o">==</span> <span class="s">'HKLF'</span><span class="p">:</span> |
---|
1235 | <span class="n">hlbl</span> <span class="o">=</span> <span class="s">'Xtl='</span><span class="o">+</span><span class="n">hlbl</span><span class="p">[</span><span class="mi">5</span><span class="p">:]</span> |
---|
1236 | <span class="k">elif</span> <span class="n">hlbl</span><span class="p">[:</span><span class="mi">4</span><span class="p">]</span> <span class="o">==</span> <span class="s">'PWDR'</span><span class="p">:</span> |
---|
1237 | <span class="n">hlbl</span> <span class="o">=</span> <span class="s">'Pwd='</span><span class="o">+</span><span class="n">hlbl</span><span class="p">[</span><span class="mi">5</span><span class="p">:]</span> |
---|
1238 | <span class="k">else</span><span class="p">:</span> |
---|
1239 | <span class="n">hlbl</span> <span class="o">=</span> <span class="s">'Hist='</span><span class="o">+</span><span class="n">hlbl</span> |
---|
1240 | <span class="n">s</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">hlbl</span><span class="p">)</span> |
---|
1241 | <span class="k">if</span> <span class="ow">not</span> <span class="n">s</span><span class="p">:</span> |
---|
1242 | <span class="n">s</span> <span class="o">=</span> <span class="s">'Global'</span> |
---|
1243 | <span class="k">return</span> <span class="n">s</span><span class="p">,</span><span class="n">l</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> |
---|
1244 | </div> |
---|
1245 | <div class="viewcode-block" id="getVarDescr"><a class="viewcode-back" href="../GSASIIobj.html#GSASIIobj.getVarDescr">[docs]</a><span class="k">def</span> <span class="nf">getVarDescr</span><span class="p">(</span><span class="n">varname</span><span class="p">):</span> |
---|
1246 | <span class="sd">'''Return a short description for a GSAS-II variable </span> |
---|
1247 | |
---|
1248 | <span class="sd"> :param str name: A full G2 variable name with 2 or 3 or 4</span> |
---|
1249 | <span class="sd"> colons (<p>:<h>:name[:<a1>][:<a2>])</span> |
---|
1250 | <span class="sd"> </span> |
---|
1251 | <span class="sd"> :returns: a six element list as [`p`,`h`,`name`,`a1`,`a2`,`description`],</span> |
---|
1252 | <span class="sd"> where `p`, `h`, `a1`, `a2` are str values or `None`, for the phase number,</span> |
---|
1253 | <span class="sd"> the histogram number and the atom number; `name` will always be</span> |
---|
1254 | <span class="sd"> a str; and `description` is str or `None`.</span> |
---|
1255 | <span class="sd"> If the variable name is incorrectly formed (for example, wrong</span> |
---|
1256 | <span class="sd"> number of colons), `None` is returned instead of a list.</span> |
---|
1257 | <span class="sd"> '''</span> |
---|
1258 | <span class="n">l</span> <span class="o">=</span> <span class="n">varname</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">':'</span><span class="p">)</span> |
---|
1259 | <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">l</span><span class="p">)</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span> <span class="c">#SASD parameter name</span> |
---|
1260 | <span class="k">return</span> <span class="n">varname</span><span class="p">,</span><span class="n">l</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="n">getDescr</span><span class="p">(</span><span class="n">l</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> |
---|
1261 | <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">l</span><span class="p">)</span> <span class="o">==</span> <span class="mi">3</span><span class="p">:</span> |
---|
1262 | <span class="n">l</span> <span class="o">+=</span> <span class="p">[</span><span class="bp">None</span><span class="p">,</span><span class="bp">None</span><span class="p">]</span> |
---|
1263 | <span class="k">elif</span> <span class="nb">len</span><span class="p">(</span><span class="n">l</span><span class="p">)</span> <span class="o">==</span> <span class="mi">4</span><span class="p">:</span> |
---|
1264 | <span class="n">l</span> <span class="o">+=</span> <span class="p">[</span><span class="bp">None</span><span class="p">]</span> |
---|
1265 | <span class="k">elif</span> <span class="nb">len</span><span class="p">(</span><span class="n">l</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">5</span><span class="p">:</span> |
---|
1266 | <span class="k">return</span> <span class="bp">None</span> |
---|
1267 | <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">):</span> |
---|
1268 | <span class="k">if</span> <span class="n">l</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">==</span> <span class="s">""</span><span class="p">:</span> |
---|
1269 | <span class="n">l</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="bp">None</span> |
---|
1270 | <span class="n">l</span> <span class="o">+=</span> <span class="p">[</span><span class="n">getDescr</span><span class="p">(</span><span class="n">l</span><span class="p">[</span><span class="mi">2</span><span class="p">])]</span> |
---|
1271 | <span class="k">return</span> <span class="n">l</span> |
---|
1272 | </div> |
---|
1273 | <div class="viewcode-block" id="CompileVarDesc"><a class="viewcode-back" href="../GSASIIobj.html#GSASIIobj.CompileVarDesc">[docs]</a><span class="k">def</span> <span class="nf">CompileVarDesc</span><span class="p">():</span> |
---|
1274 | <span class="sd">'''Set the values in the variable description lookup table (:attr:`VarDesc`)</span> |
---|
1275 | <span class="sd"> into :attr:`reVarDesc`. This is called in :func:`getDescr` so the initialization</span> |
---|
1276 | <span class="sd"> is always done before use.</span> |
---|
1277 | |
---|
1278 | <span class="sd"> Note that keys may contain regular expressions, where '[xyz]'</span> |
---|
1279 | <span class="sd"> matches 'x' 'y' or 'z' (equivalently '[x-z]' describes this as range of values).</span> |
---|
1280 | <span class="sd"> '.*' matches any string. For example::</span> |
---|
1281 | |
---|
1282 | <span class="sd"> 'AUiso':'Atomic isotropic displacement parameter',</span> |
---|
1283 | |
---|
1284 | <span class="sd"> will match variable ``'p::AUiso:a'``.</span> |
---|
1285 | <span class="sd"> If parentheses are used in the key, the contents of those parentheses can be</span> |
---|
1286 | <span class="sd"> used in the value, such as::</span> |
---|
1287 | |
---|
1288 | <span class="sd"> 'AU([123][123])':'Atomic anisotropic displacement parameter U\\1',</span> |
---|
1289 | |
---|
1290 | <span class="sd"> will match ``AU11``, ``AU23``,.. and `U11`, `U23` etc will be displayed</span> |
---|
1291 | <span class="sd"> in the value when used.</span> |
---|
1292 | <span class="sd"> </span> |
---|
1293 | <span class="sd"> '''</span> |
---|
1294 | <span class="k">if</span> <span class="n">reVarDesc</span><span class="p">:</span> <span class="k">return</span> <span class="c"># already done</span> |
---|
1295 | <span class="k">for</span> <span class="n">key</span><span class="p">,</span><span class="n">value</span> <span class="ow">in</span> <span class="p">{</span> |
---|
1296 | <span class="c"># derived or other sequential vars</span> |
---|
1297 | <span class="s">'([abc])$'</span> <span class="p">:</span> <span class="s">'Lattice parameter, </span><span class="se">\\</span><span class="s">1, from Ai and Djk'</span><span class="p">,</span> <span class="c"># N.B. '$' prevents match if any characters follow</span> |
---|
1298 | <span class="s">u'</span><span class="se">\u03B1</span><span class="s">'</span> <span class="p">:</span> <span class="s">u'Lattice parameter, </span><span class="se">\u03B1</span><span class="s">, from Ai and Djk'</span><span class="p">,</span> |
---|
1299 | <span class="s">u'</span><span class="se">\u03B2</span><span class="s">'</span> <span class="p">:</span> <span class="s">u'Lattice parameter, </span><span class="se">\u03B2</span><span class="s">, from Ai and Djk'</span><span class="p">,</span> |
---|
1300 | <span class="s">u'</span><span class="se">\u03B3</span><span class="s">'</span> <span class="p">:</span> <span class="s">u'Lattice parameter, </span><span class="se">\u03B3</span><span class="s">, from Ai and Djk'</span><span class="p">,</span> |
---|
1301 | <span class="c"># ambiguous, alas:</span> |
---|
1302 | <span class="s">'Scale'</span> <span class="p">:</span> <span class="s">'Phase or Histogram scale factor'</span><span class="p">,</span> |
---|
1303 | <span class="c"># Phase vars (p::<var>)</span> |
---|
1304 | <span class="s">'A([0-5])'</span> <span class="p">:</span> <span class="s">'Reciprocal metric tensor component </span><span class="se">\\</span><span class="s">1'</span><span class="p">,</span> |
---|
1305 | <span class="s">'Vol'</span> <span class="p">:</span> <span class="s">'Unit cell volume'</span><span class="p">,</span> |
---|
1306 | <span class="c"># Atom vars (p::<var>:a)</span> |
---|
1307 | <span class="s">'dA([xyz])$'</span> <span class="p">:</span> <span class="s">'change to atomic coordinate, </span><span class="se">\\</span><span class="s">1'</span><span class="p">,</span> |
---|
1308 | <span class="s">'A([xyz])$'</span> <span class="p">:</span> <span class="s">'</span><span class="se">\\</span><span class="s">1 fractional atomic coordinate'</span><span class="p">,</span> |
---|
1309 | <span class="s">'AUiso'</span><span class="p">:</span><span class="s">'Atomic isotropic displacement parameter'</span><span class="p">,</span> |
---|
1310 | <span class="s">'AU([123][123])'</span><span class="p">:</span><span class="s">'Atomic anisotropic displacement parameter U</span><span class="se">\\</span><span class="s">1'</span><span class="p">,</span> |
---|
1311 | <span class="s">'Afrac'</span><span class="p">:</span> <span class="s">'Atomic occupancy parameter'</span><span class="p">,</span> |
---|
1312 | <span class="c"># Hist & Phase (HAP) vars (p:h:<var>)</span> |
---|
1313 | <span class="s">'Back'</span><span class="p">:</span> <span class="s">'Background term'</span><span class="p">,</span> |
---|
1314 | <span class="s">'BkPkint;(.*)'</span><span class="p">:</span><span class="s">'Background peak #</span><span class="se">\\</span><span class="s">1 intensity'</span><span class="p">,</span> |
---|
1315 | <span class="s">'BkPkpos;(.*)'</span><span class="p">:</span><span class="s">'Background peak #</span><span class="se">\\</span><span class="s">1 position'</span><span class="p">,</span> |
---|
1316 | <span class="s">'BkPksig;(.*)'</span><span class="p">:</span><span class="s">'Background peak #</span><span class="se">\\</span><span class="s">1 Gaussian width'</span><span class="p">,</span> |
---|
1317 | <span class="s">'BkPkgam;(.*)'</span><span class="p">:</span><span class="s">'Background peak #</span><span class="se">\\</span><span class="s">1 Cauchy width'</span><span class="p">,</span> |
---|
1318 | <span class="s">'Bab([AU])'</span><span class="p">:</span> <span class="s">'Babinet solvent scattering coef. </span><span class="se">\\</span><span class="s">1'</span><span class="p">,</span> |
---|
1319 | <span class="s">'D([123][123])'</span> <span class="p">:</span> <span class="s">'Anisotropic strain coef. </span><span class="se">\\</span><span class="s">1'</span><span class="p">,</span> |
---|
1320 | <span class="s">'Extinction'</span> <span class="p">:</span> <span class="s">'Extinction coef.'</span><span class="p">,</span> |
---|
1321 | <span class="s">'MD'</span> <span class="p">:</span> <span class="s">'March-Dollase coef.'</span><span class="p">,</span> |
---|
1322 | <span class="s">'Mustrain;.*'</span> <span class="p">:</span> <span class="s">'Microstrain coef.'</span><span class="p">,</span> |
---|
1323 | <span class="s">'Size;.*'</span> <span class="p">:</span> <span class="s">'Crystallite size value'</span><span class="p">,</span> |
---|
1324 | <span class="s">'eA$'</span> <span class="p">:</span> <span class="s">'Cubic mustrain value'</span><span class="p">,</span> |
---|
1325 | <span class="s">'Ep$'</span> <span class="p">:</span> <span class="s">'Primary extinction'</span><span class="p">,</span> |
---|
1326 | <span class="s">'Es$'</span> <span class="p">:</span> <span class="s">'Secondary type II extinction'</span><span class="p">,</span> |
---|
1327 | <span class="s">'Eg$'</span> <span class="p">:</span> <span class="s">'Secondary type I extinction'</span><span class="p">,</span> |
---|
1328 | <span class="c">#Histogram vars (:h:<var>)</span> |
---|
1329 | <span class="s">'Absorption'</span> <span class="p">:</span> <span class="s">'Absorption coef.'</span><span class="p">,</span> |
---|
1330 | <span class="s">'Displace([XY])'</span> <span class="p">:</span> <span class="s">'Debye-Scherrer sample displacement </span><span class="se">\\</span><span class="s">1'</span><span class="p">,</span> |
---|
1331 | <span class="s">'Lam'</span> <span class="p">:</span> <span class="s">'Wavelength'</span><span class="p">,</span> |
---|
1332 | <span class="s">'Polariz\.'</span> <span class="p">:</span> <span class="s">'Polarization correction'</span><span class="p">,</span> |
---|
1333 | <span class="s">'SH/L'</span> <span class="p">:</span> <span class="s">'FCJ peak asymmetry correction'</span><span class="p">,</span> |
---|
1334 | <span class="s">'([UVW])$'</span> <span class="p">:</span> <span class="s">'Gaussian instrument broadening </span><span class="se">\\</span><span class="s">1'</span><span class="p">,</span> |
---|
1335 | <span class="s">'([XY])$'</span> <span class="p">:</span> <span class="s">'Cauchy instrument broadening </span><span class="se">\\</span><span class="s">1'</span><span class="p">,</span> |
---|
1336 | <span class="s">'Zero'</span> <span class="p">:</span> <span class="s">'Debye-Scherrer zero correction'</span><span class="p">,</span> |
---|
1337 | <span class="s">'nDebye'</span> <span class="p">:</span> <span class="s">'Debye model background corr. terms'</span><span class="p">,</span> |
---|
1338 | <span class="s">'nPeaks'</span> <span class="p">:</span> <span class="s">'Fixed peak background corr. terms'</span><span class="p">,</span> |
---|
1339 | <span class="s">'RBV.*'</span> <span class="p">:</span> <span class="s">'Vector rigid body parameter'</span><span class="p">,</span> |
---|
1340 | <span class="s">'RBR.*'</span> <span class="p">:</span> <span class="s">'Residue rigid body parameter'</span><span class="p">,</span> |
---|
1341 | <span class="s">'RBRO([aijk])'</span> <span class="p">:</span> <span class="s">'Residue rigid body orientation parameter'</span><span class="p">,</span> |
---|
1342 | <span class="s">'RBRP([xyz])'</span> <span class="p">:</span> <span class="s">'Residue rigid body position parameter'</span><span class="p">,</span> |
---|
1343 | <span class="s">'RBRTr;.*'</span> <span class="p">:</span> <span class="s">'Residue rigid body torsion parameter'</span><span class="p">,</span> |
---|
1344 | <span class="s">'RBR([TLS])([123AB][123AB])'</span> <span class="p">:</span> <span class="s">'Residue rigid body group disp. param.'</span><span class="p">,</span> |
---|
1345 | <span class="s">'constr([0-9]*)'</span> <span class="p">:</span> <span class="s">'Parameter from constraint'</span><span class="p">,</span> |
---|
1346 | <span class="c"># supersymmetry parameters p::<var>:a:o 'Flen','Fcent'?</span> |
---|
1347 | <span class="s">'mV([0-2])$'</span> <span class="p">:</span> <span class="s">'Modulation vector component </span><span class="se">\\</span><span class="s">1'</span><span class="p">,</span> |
---|
1348 | <span class="s">'Fsin'</span> <span class="p">:</span> <span class="s">'Sin site fraction modulation'</span><span class="p">,</span> |
---|
1349 | <span class="s">'Fcos'</span> <span class="p">:</span> <span class="s">'Cos site fraction modulation'</span><span class="p">,</span> |
---|
1350 | <span class="s">'Fzero'</span> <span class="p">:</span> <span class="s">'Crenel function offset'</span><span class="p">,</span> |
---|
1351 | <span class="s">'Fwid'</span> <span class="p">:</span> <span class="s">'Crenel function width'</span><span class="p">,</span> |
---|
1352 | <span class="s">'Tzero'</span> <span class="p">:</span> <span class="s">'Sawtooth/ZigZag location'</span><span class="p">,</span> |
---|
1353 | <span class="s">'([XYZ])slope'</span><span class="p">:</span> <span class="s">'Sawtooth/ZigZag slope for </span><span class="se">\\</span><span class="s">1'</span><span class="p">,</span> |
---|
1354 | <span class="s">'([XYZ])sin'</span> <span class="p">:</span> <span class="s">'Sin position wave for </span><span class="se">\\</span><span class="s">1'</span><span class="p">,</span> |
---|
1355 | <span class="s">'([XYZ])cos'</span> <span class="p">:</span> <span class="s">'Cos position wave for </span><span class="se">\\</span><span class="s">1'</span><span class="p">,</span> |
---|
1356 | <span class="s">'U([123][123])sin$'</span> <span class="p">:</span> <span class="s">'Sin thermal wave for U</span><span class="se">\\</span><span class="s">1'</span><span class="p">,</span> |
---|
1357 | <span class="s">'U([123][123])cos$'</span> <span class="p">:</span> <span class="s">'Cos thermal wave for U</span><span class="se">\\</span><span class="s">1'</span><span class="p">,</span> |
---|
1358 | <span class="s">'M([XYZ])sin$'</span> <span class="p">:</span> <span class="s">'Sin mag. moment wave for </span><span class="se">\\</span><span class="s">1'</span><span class="p">,</span> |
---|
1359 | <span class="s">'M([XYZ])cos$'</span> <span class="p">:</span> <span class="s">'Cos mag. moment wave for </span><span class="se">\\</span><span class="s">1'</span><span class="p">,</span> |
---|
1360 | <span class="c"># SASD vars (l:<var>;l = component)</span> |
---|
1361 | <span class="s">'Aspect ratio'</span> <span class="p">:</span> <span class="s">'Particle aspect ratio'</span><span class="p">,</span> |
---|
1362 | <span class="s">'Length'</span> <span class="p">:</span> <span class="s">'Cylinder length'</span><span class="p">,</span> |
---|
1363 | <span class="s">'Diameter'</span> <span class="p">:</span> <span class="s">'Cylinder/disk diameter'</span><span class="p">,</span> |
---|
1364 | <span class="s">'Thickness'</span> <span class="p">:</span> <span class="s">'Disk thickness'</span><span class="p">,</span> |
---|
1365 | <span class="s">'Dist'</span> <span class="p">:</span> <span class="s">'Interparticle distance'</span><span class="p">,</span> |
---|
1366 | <span class="s">'VolFr'</span> <span class="p">:</span> <span class="s">'Dense scatterer volume fraction'</span><span class="p">,</span> |
---|
1367 | <span class="s">'epis'</span> <span class="p">:</span> <span class="s">'Sticky sphere epsilon'</span><span class="p">,</span> |
---|
1368 | <span class="s">'Sticky'</span> <span class="p">:</span> <span class="s">'Stickyness'</span><span class="p">,</span> |
---|
1369 | <span class="s">'Depth'</span> <span class="p">:</span> <span class="s">'Well depth'</span><span class="p">,</span> |
---|
1370 | <span class="s">'Width'</span> <span class="p">:</span> <span class="s">'Well width'</span><span class="p">,</span> |
---|
1371 | <span class="s">'Volume'</span> <span class="p">:</span> <span class="s">'Particle volume'</span><span class="p">,</span> |
---|
1372 | <span class="s">'Radius'</span> <span class="p">:</span> <span class="s">'Sphere/cylinder/disk radius'</span><span class="p">,</span> |
---|
1373 | <span class="s">'Mean'</span> <span class="p">:</span> <span class="s">'Particle mean radius'</span><span class="p">,</span> |
---|
1374 | <span class="s">'StdDev'</span> <span class="p">:</span> <span class="s">'Standard deviation in Mean'</span><span class="p">,</span> |
---|
1375 | <span class="s">'G$'</span><span class="p">:</span> <span class="s">'Guinier prefactor'</span><span class="p">,</span> |
---|
1376 | <span class="s">'Rg$'</span><span class="p">:</span> <span class="s">'Guinier radius of gyration'</span><span class="p">,</span> |
---|
1377 | <span class="s">'B$'</span><span class="p">:</span> <span class="s">'Porod prefactor'</span><span class="p">,</span> |
---|
1378 | <span class="s">'P$'</span><span class="p">:</span> <span class="s">'Porod power'</span><span class="p">,</span> |
---|
1379 | <span class="s">'Cutoff'</span><span class="p">:</span> <span class="s">'Porod cutoff'</span><span class="p">,</span> |
---|
1380 | <span class="s">'PkInt'</span><span class="p">:</span> <span class="s">'Bragg peak intensity'</span><span class="p">,</span> |
---|
1381 | <span class="s">'PkPos'</span><span class="p">:</span> <span class="s">'Bragg peak position'</span><span class="p">,</span> |
---|
1382 | <span class="s">'PkSig'</span><span class="p">:</span> <span class="s">'Bragg peak sigma'</span><span class="p">,</span> |
---|
1383 | <span class="s">'PkGam'</span><span class="p">:</span> <span class="s">'Bragg peak gamma'</span><span class="p">,</span> |
---|
1384 | <span class="s">'e([12][12])'</span> <span class="p">:</span> <span class="s">'strain tensor e</span><span class="se">\1</span><span class="s">'</span><span class="p">,</span> <span class="c"># strain vars e11, e22, e12</span> |
---|
1385 | <span class="s">'Dcalc'</span><span class="p">:</span> <span class="s">'Calc. d-spacing'</span><span class="p">,</span> |
---|
1386 | <span class="s">'Back$'</span><span class="p">:</span> <span class="s">'background parameter'</span><span class="p">,</span> |
---|
1387 | <span class="s">'pos$'</span><span class="p">:</span> <span class="s">'peak position'</span><span class="p">,</span> |
---|
1388 | <span class="s">'int$'</span><span class="p">:</span> <span class="s">'peak intensity'</span><span class="p">,</span> |
---|
1389 | <span class="p">}</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> |
---|
1390 | <span class="n">VarDesc</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span> |
---|
1391 | <span class="n">reVarDesc</span><span class="p">[</span><span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="n">key</span><span class="p">)]</span> <span class="o">=</span> <span class="n">value</span> |
---|
1392 | </div> |
---|
1393 | <div class="viewcode-block" id="getDescr"><a class="viewcode-back" href="../GSASIIobj.html#GSASIIobj.getDescr">[docs]</a><span class="k">def</span> <span class="nf">getDescr</span><span class="p">(</span><span class="n">name</span><span class="p">):</span> |
---|
1394 | <span class="sd">'''Return a short description for a GSAS-II variable </span> |
---|
1395 | |
---|
1396 | <span class="sd"> :param str name: The descriptive part of the variable name without colons (:)</span> |
---|
1397 | <span class="sd"> </span> |
---|
1398 | <span class="sd"> :returns: a short description or None if not found</span> |
---|
1399 | <span class="sd"> '''</span> |
---|
1400 | |
---|
1401 | <span class="n">CompileVarDesc</span><span class="p">()</span> <span class="c"># compile the regular expressions, if needed</span> |
---|
1402 | <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">reVarDesc</span><span class="p">:</span> |
---|
1403 | <span class="n">m</span> <span class="o">=</span> <span class="n">key</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> |
---|
1404 | <span class="k">if</span> <span class="n">m</span><span class="p">:</span> |
---|
1405 | <span class="n">reVarDesc</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> |
---|
1406 | <span class="k">return</span> <span class="n">m</span><span class="o">.</span><span class="n">expand</span><span class="p">(</span><span class="n">reVarDesc</span><span class="p">[</span><span class="n">key</span><span class="p">])</span> |
---|
1407 | <span class="k">return</span> <span class="bp">None</span> |
---|
1408 | </div> |
---|
1409 | <div class="viewcode-block" id="GenWildCard"><a class="viewcode-back" href="../GSASIIobj.html#GSASIIobj.GenWildCard">[docs]</a><span class="k">def</span> <span class="nf">GenWildCard</span><span class="p">(</span><span class="n">varlist</span><span class="p">):</span> |
---|
1410 | <span class="sd">'''Generate wildcard versions of G2 variables. These introduce '*'</span> |
---|
1411 | <span class="sd"> for a phase, histogram or atom number (but only for one of these</span> |
---|
1412 | <span class="sd"> fields) but only when there is more than one matching variable in the</span> |
---|
1413 | <span class="sd"> input variable list. So if the input is this::</span> |
---|
1414 | <span class="sd"> </span> |
---|
1415 | <span class="sd"> varlist = ['0::AUiso:0', '0::AUiso:1', '1::AUiso:0']</span> |
---|
1416 | |
---|
1417 | <span class="sd"> then the output will be this::</span> |
---|
1418 | <span class="sd"> </span> |
---|
1419 | <span class="sd"> wildList = ['*::AUiso:0', '0::AUiso:*']</span> |
---|
1420 | |
---|
1421 | <span class="sd"> :param list varlist: an input list of GSAS-II variable names</span> |
---|
1422 | <span class="sd"> (such as 0::AUiso:0)</span> |
---|
1423 | |
---|
1424 | <span class="sd"> :returns: wildList, the generated list of wild card variable names.</span> |
---|
1425 | <span class="sd"> '''</span> |
---|
1426 | <span class="n">wild</span> <span class="o">=</span> <span class="p">[]</span> |
---|
1427 | <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">3</span><span class="p">):</span> |
---|
1428 | <span class="n">currentL</span> <span class="o">=</span> <span class="n">varlist</span><span class="p">[:]</span> |
---|
1429 | <span class="k">while</span> <span class="n">currentL</span><span class="p">:</span> |
---|
1430 | <span class="n">item1</span> <span class="o">=</span> <span class="n">currentL</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> |
---|
1431 | <span class="n">i1splt</span> <span class="o">=</span> <span class="n">item1</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">':'</span><span class="p">)</span> |
---|
1432 | <span class="k">if</span> <span class="n">i</span> <span class="o">>=</span> <span class="nb">len</span><span class="p">(</span><span class="n">i1splt</span><span class="p">):</span> <span class="k">continue</span> |
---|
1433 | <span class="k">if</span> <span class="n">i1splt</span><span class="p">[</span><span class="n">i</span><span class="p">]:</span> |
---|
1434 | <span class="n">nextL</span> <span class="o">=</span> <span class="p">[]</span> |
---|
1435 | <span class="n">i1splt</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="s">'[0-9]+'</span> |
---|
1436 | <span class="n">rexp</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s">':'</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">i1splt</span><span class="p">))</span> |
---|
1437 | <span class="n">matchlist</span> <span class="o">=</span> <span class="p">[</span><span class="n">item1</span><span class="p">]</span> |
---|
1438 | <span class="k">for</span> <span class="n">nxtitem</span> <span class="ow">in</span> <span class="n">currentL</span><span class="p">:</span> |
---|
1439 | <span class="k">if</span> <span class="n">rexp</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">nxtitem</span><span class="p">):</span> |
---|
1440 | <span class="n">matchlist</span> <span class="o">+=</span> <span class="p">[</span><span class="n">nxtitem</span><span class="p">]</span> |
---|
1441 | <span class="k">else</span><span class="p">:</span> |
---|
1442 | <span class="n">nextL</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">nxtitem</span><span class="p">)</span> |
---|
1443 | <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">matchlist</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span> |
---|
1444 | <span class="n">i1splt</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="s">'*'</span> |
---|
1445 | <span class="n">wild</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">':'</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">i1splt</span><span class="p">))</span> |
---|
1446 | <span class="n">currentL</span> <span class="o">=</span> <span class="n">nextL</span> |
---|
1447 | <span class="k">return</span> <span class="n">wild</span> |
---|
1448 | </div> |
---|
1449 | <div class="viewcode-block" id="LookupWildCard"><a class="viewcode-back" href="../GSASIIobj.html#GSASIIobj.LookupWildCard">[docs]</a><span class="k">def</span> <span class="nf">LookupWildCard</span><span class="p">(</span><span class="n">varname</span><span class="p">,</span><span class="n">varlist</span><span class="p">):</span> |
---|
1450 | <span class="sd">'''returns a list of variable names from list varname</span> |
---|
1451 | <span class="sd"> that match wildcard name in varname</span> |
---|
1452 | <span class="sd"> </span> |
---|
1453 | <span class="sd"> :param str varname: a G2 variable name containing a wildcard</span> |
---|
1454 | <span class="sd"> (such as \*::var)</span> |
---|
1455 | <span class="sd"> :param list varlist: the list of all variable names used in</span> |
---|
1456 | <span class="sd"> the current project</span> |
---|
1457 | <span class="sd"> :returns: a list of matching GSAS-II variables (may be empty) </span> |
---|
1458 | <span class="sd"> '''</span> |
---|
1459 | <span class="n">rexp</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="n">varname</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">'*'</span><span class="p">,</span><span class="s">'[0-9]+'</span><span class="p">))</span> |
---|
1460 | <span class="k">return</span> <span class="nb">sorted</span><span class="p">([</span><span class="n">var</span> <span class="k">for</span> <span class="n">var</span> <span class="ow">in</span> <span class="n">varlist</span> <span class="k">if</span> <span class="n">rexp</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">var</span><span class="p">)])</span> |
---|
1461 | |
---|
1462 | </div> |
---|
1463 | <span class="k">def</span> <span class="nf">_lookup</span><span class="p">(</span><span class="n">dic</span><span class="p">,</span><span class="n">key</span><span class="p">):</span> |
---|
1464 | <span class="sd">'''Lookup a key in a dictionary, where None returns an empty string</span> |
---|
1465 | <span class="sd"> but an unmatched key returns a question mark. Used in :class:`G2VarObj`</span> |
---|
1466 | <span class="sd"> '''</span> |
---|
1467 | <span class="k">if</span> <span class="n">key</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> |
---|
1468 | <span class="k">return</span> <span class="s">""</span> |
---|
1469 | <span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s">"*"</span><span class="p">:</span> |
---|
1470 | <span class="k">return</span> <span class="s">"*"</span> |
---|
1471 | <span class="k">else</span><span class="p">:</span> |
---|
1472 | <span class="k">return</span> <span class="n">dic</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">,</span><span class="s">'?'</span><span class="p">)</span> |
---|
1473 | |
---|
1474 | <div class="viewcode-block" id="G2VarObj"><a class="viewcode-back" href="../GSASIIobj.html#GSASIIobj.G2VarObj">[docs]</a><span class="k">class</span> <span class="nc">G2VarObj</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> |
---|
1475 | <span class="sd">'''Defines a GSAS-II variable either using the phase/atom/histogram</span> |
---|
1476 | <span class="sd"> unique Id numbers or using a character string that specifies</span> |
---|
1477 | <span class="sd"> variables by phase/atom/histogram number (which can change).</span> |
---|
1478 | <span class="sd"> Note that :func:`LoadID` should be used to (re)load the current Ids</span> |
---|
1479 | <span class="sd"> before creating or later using the G2VarObj object.</span> |
---|
1480 | |
---|
1481 | <span class="sd"> This can store rigid body variables, but does not translate the residue # and</span> |
---|
1482 | <span class="sd"> body # to/from random Ids</span> |
---|
1483 | |
---|
1484 | <span class="sd"> A :class:`G2VarObj` object can be created with a single parameter:</span> |
---|
1485 | <span class="sd"> </span> |
---|
1486 | <span class="sd"> :param str/tuple varname: a single value can be used to create a :class:`G2VarObj`</span> |
---|
1487 | <span class="sd"> object. If a string, it must be of form "p:h:var" or "p:h:var:a", where</span> |
---|
1488 | |
---|
1489 | <span class="sd"> * p is the phase number (which may be left blank or may be '*' to indicate all phases); </span> |
---|
1490 | <span class="sd"> * h is the histogram number (which may be left blank or may be '*' to indicate all histograms); </span> |
---|
1491 | <span class="sd"> * a is the atom number (which may be left blank in which case the third colon is omitted).</span> |
---|
1492 | <span class="sd"> The atom number can be specified as '*' if a phase number is specified (not as '*').</span> |
---|
1493 | <span class="sd"> For rigid body variables, specify a will be a string of form "residue:body#"</span> |
---|
1494 | |
---|
1495 | <span class="sd"> Alternately a single tuple of form (Phase,Histogram,VarName,AtomID) can be used, where</span> |
---|
1496 | <span class="sd"> Phase, Histogram, and AtomID are None or are ranId values (or one can be '*')</span> |
---|
1497 | <span class="sd"> and VarName is a string. Note that if Phase is '*' then the AtomID is an atom number.</span> |
---|
1498 | <span class="sd"> For a rigid body variables, AtomID is a string of form "residue:body#".</span> |
---|
1499 | |
---|
1500 | <span class="sd"> If four positional arguments are supplied, they are:</span> |
---|
1501 | |
---|
1502 | <span class="sd"> :param str/int phasenum: The number for the phase (or None or '*')</span> |
---|
1503 | <span class="sd"> :param str/int histnum: The number for the histogram (or None or '*')</span> |
---|
1504 | <span class="sd"> :param str varname: a single value can be used to create a :class:`G2VarObj`</span> |
---|
1505 | <span class="sd"> :param str/int atomnum: The number for the atom (or None or '*')</span> |
---|
1506 | <span class="sd"> </span> |
---|
1507 | <span class="sd"> '''</span> |
---|
1508 | <span class="n">IDdict</span> <span class="o">=</span> <span class="p">{}</span> |
---|
1509 | <span class="n">IDdict</span><span class="p">[</span><span class="s">'phases'</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> |
---|
1510 | <span class="n">IDdict</span><span class="p">[</span><span class="s">'hists'</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> |
---|
1511 | <span class="n">IDdict</span><span class="p">[</span><span class="s">'atoms'</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> |
---|
1512 | <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="o">*</span><span class="n">args</span><span class="p">):</span> |
---|
1513 | <span class="bp">self</span><span class="o">.</span><span class="n">phase</span> <span class="o">=</span> <span class="bp">None</span> |
---|
1514 | <span class="bp">self</span><span class="o">.</span><span class="n">histogram</span> <span class="o">=</span> <span class="bp">None</span> |
---|
1515 | <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="s">''</span> |
---|
1516 | <span class="bp">self</span><span class="o">.</span><span class="n">atom</span> <span class="o">=</span> <span class="bp">None</span> |
---|
1517 | <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> <span class="ow">and</span> <span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="ow">is</span> <span class="nb">list</span> <span class="ow">or</span> <span class="nb">type</span><span class="p">(</span><span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="ow">is</span> <span class="nb">tuple</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="o">==</span> <span class="mi">4</span><span class="p">:</span> |
---|
1518 | <span class="c"># single arg with 4 values</span> |
---|
1519 | <span class="bp">self</span><span class="o">.</span><span class="n">phase</span><span class="p">,</span><span class="bp">self</span><span class="o">.</span><span class="n">histogram</span><span class="p">,</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span><span class="bp">self</span><span class="o">.</span><span class="n">atom</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> |
---|
1520 | <span class="k">elif</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> <span class="ow">and</span> <span class="s">':'</span> <span class="ow">in</span> <span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">]:</span> |
---|
1521 | <span class="c">#parse a string </span> |
---|
1522 | <span class="n">lst</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s"> |
---|