Changeset 1709 for sphinxdocs/build/html/_modules/GSASIIimage.html
- Timestamp:
- Mar 14, 2015 5:35:03 PM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sphinxdocs/build/html/_modules/GSASIIimage.html
r1513 r1709 52 52 <span class="c">#GSASII image calculations: ellipse fitting & image integration </span> 53 53 <span class="c">########### SVN repository information ###################</span> 54 <span class="c"># $Date: 201 4-09-07 14:37:26 -0400 (Sun, 07 Sep 2014) $</span>54 <span class="c"># $Date: 2015-03-10 11:35:24 -0500 (Tue, 10 Mar 2015) $</span> 55 55 <span class="c"># $Author: vondreele $</span> 56 <span class="c"># $Revision: 1 489$</span>56 <span class="c"># $Revision: 1694 $</span> 57 57 <span class="c"># $URL: https://subversion.xray.aps.anl.gov/pyGSAS/trunk/GSASIIimage.py $</span> 58 <span class="c"># $Id: GSASIIimage.py 1 489 2014-09-07 18:37:26Z vondreele $</span>58 <span class="c"># $Id: GSASIIimage.py 1694 2015-03-10 16:35:24Z vondreele $</span> 59 59 <span class="c">########### SVN repository information ###################</span> 60 60 <span class="sd">'''</span> … … 75 75 <span class="kn">import</span> <span class="nn">copy</span> 76 76 <span class="kn">import</span> <span class="nn">GSASIIpath</span> 77 <span class="n">GSASIIpath</span><span class="o">.</span><span class="n">SetVersionNumber</span><span class="p">(</span><span class="s">"$Revision: 1 489$"</span><span class="p">)</span>77 <span class="n">GSASIIpath</span><span class="o">.</span><span class="n">SetVersionNumber</span><span class="p">(</span><span class="s">"$Revision: 1694 $"</span><span class="p">)</span> 78 78 <span class="kn">import</span> <span class="nn">GSASIIplot</span> <span class="kn">as</span> <span class="nn">G2plt</span> 79 79 <span class="kn">import</span> <span class="nn">GSASIIlattice</span> <span class="kn">as</span> <span class="nn">G2lat</span> … … 99 99 <span class="n">npatand</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="mf">180.</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">arctan</span><span class="p">(</span><span class="n">x</span><span class="p">)</span><span class="o">/</span><span class="n">np</span><span class="o">.</span><span class="n">pi</span> 100 100 <span class="n">npatan2d</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">y</span><span class="p">,</span><span class="n">x</span><span class="p">:</span> <span class="mf">180.</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">arctan2</span><span class="p">(</span><span class="n">y</span><span class="p">,</span><span class="n">x</span><span class="p">)</span><span class="o">/</span><span class="n">np</span><span class="o">.</span><span class="n">pi</span> 101 <span class="n">debug</span> <span class="o">=</span> <span class="bp">False</span> 101 102 102 103 <div class="viewcode-block" id="pointInPolygon"><a class="viewcode-back" href="../GSASIIimage.html#GSASIIimage.pointInPolygon">[docs]</a><span class="k">def</span> <span class="nf">pointInPolygon</span><span class="p">(</span><span class="n">pXY</span><span class="p">,</span><span class="n">xy</span><span class="p">):</span> … … 189 190 <span class="n">ptstr</span> <span class="o">=</span> <span class="s">'values:'</span> 190 191 <span class="n">sigstr</span> <span class="o">=</span> <span class="s">'esds :'</span> 191 <span class="k">for</span> <span class="n">name</span><span class="p">,</span><span class="n"> fmt</span><span class="p">,</span><span class="n">value</span><span class="p">,</span><span class="n">sig</span> <span class="ow">in</span> <span class="n">ValSig</span><span class="p">:</span>192 <span class="k">for</span> <span class="n">name</span><span class="p">,</span><span class="n">value</span><span class="p">,</span><span class="n">sig</span> <span class="ow">in</span> <span class="n">ValSig</span><span class="p">:</span> 192 193 <span class="n">ptlbls</span> <span class="o">+=</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">name</span><span class="o">.</span><span class="n">rjust</span><span class="p">(</span><span class="mi">12</span><span class="p">))</span> 193 194 <span class="k">if</span> <span class="n">name</span> <span class="o">==</span> <span class="s">'phi'</span><span class="p">:</span> 194 <span class="n">ptstr</span> <span class="o">+=</span> <span class="n"> fmt</span> <span class="o">%</span> <span class="p">(</span><span class="n">value</span><span class="o">%</span><span class="mf">360.</span><span class="p">)</span>195 <span class="n">ptstr</span> <span class="o">+=</span> <span class="n">Fmt</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">%</span> <span class="p">(</span><span class="n">value</span><span class="o">%</span><span class="mf">360.</span><span class="p">)</span> 195 196 <span class="k">else</span><span class="p">:</span> 196 <span class="n">ptstr</span> <span class="o">+=</span> <span class="n"> fmt</span> <span class="o">%</span> <span class="p">(</span><span class="n">value</span><span class="p">)</span>197 <span class="n">ptstr</span> <span class="o">+=</span> <span class="n">Fmt</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">%</span> <span class="p">(</span><span class="n">value</span><span class="p">)</span> 197 198 <span class="k">if</span> <span class="n">sig</span><span class="p">:</span> 198 <span class="n">sigstr</span> <span class="o">+=</span> <span class="n"> fmt</span> <span class="o">%</span> <span class="p">(</span><span class="n">sig</span><span class="p">)</span>199 <span class="n">sigstr</span> <span class="o">+=</span> <span class="n">Fmt</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">%</span> <span class="p">(</span><span class="n">sig</span><span class="p">)</span> 199 200 <span class="k">else</span><span class="p">:</span> 200 201 <span class="n">sigstr</span> <span class="o">+=</span> <span class="mi">12</span><span class="o">*</span><span class="s">' '</span> … … 204 205 205 206 <span class="k">def</span> <span class="nf">ellipseCalcD</span><span class="p">(</span><span class="n">B</span><span class="p">,</span><span class="n">xyd</span><span class="p">,</span><span class="n">varyList</span><span class="p">,</span><span class="n">parmDict</span><span class="p">):</span> 207 206 208 <span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">dsp</span> <span class="o">=</span> <span class="n">xyd</span> 207 <span class="n">wave</span> <span class="o">=</span> <span class="n">parmDict</span><span class="p">[</span><span class="s">'wave'</span><span class="p">]</span> 208 <span class="k">if</span> <span class="s">'dep'</span> <span class="ow">in</span> <span class="n">varyList</span><span class="p">:</span> 209 <span class="n">dist</span><span class="p">,</span><span class="n">x0</span><span class="p">,</span><span class="n">y0</span><span class="p">,</span><span class="n">tilt</span><span class="p">,</span><span class="n">chi</span><span class="p">,</span><span class="n">dep</span> <span class="o">=</span> <span class="n">B</span><span class="p">[:</span><span class="mi">6</span><span class="p">]</span> 210 <span class="k">else</span><span class="p">:</span> 211 <span class="n">dist</span><span class="p">,</span><span class="n">x0</span><span class="p">,</span><span class="n">y0</span><span class="p">,</span><span class="n">tilt</span><span class="p">,</span><span class="n">chi</span> <span class="o">=</span> <span class="n">B</span><span class="p">[:</span><span class="mi">5</span><span class="p">]</span> 212 <span class="n">dep</span> <span class="o">=</span> <span class="n">parmDict</span><span class="p">[</span><span class="s">'dep'</span><span class="p">]</span> 213 <span class="k">if</span> <span class="s">'wave'</span> <span class="ow">in</span> <span class="n">varyList</span><span class="p">:</span> 214 <span class="n">wave</span> <span class="o">=</span> <span class="n">B</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> 215 <span class="n">phi</span> <span class="o">=</span> <span class="n">chi</span><span class="o">-</span><span class="mf">90.</span> <span class="c">#get rotation of major axis from tilt axis</span> 216 <span class="n">tth</span> <span class="o">=</span> <span class="mf">2.0</span><span class="o">*</span><span class="n">npasind</span><span class="p">(</span><span class="n">wave</span><span class="o">/</span><span class="p">(</span><span class="mf">2.</span><span class="o">*</span><span class="n">dsp</span><span class="p">))</span> 217 <span class="n">phi0</span> <span class="o">=</span> <span class="n">npatan2d</span><span class="p">(</span><span class="n">y</span><span class="o">-</span><span class="n">y0</span><span class="p">,</span><span class="n">x</span><span class="o">-</span><span class="n">x0</span><span class="p">)</span> 218 <span class="n">dxy</span> <span class="o">=</span> <span class="n">peneCorr</span><span class="p">(</span><span class="n">tth</span><span class="p">,</span><span class="n">dep</span><span class="p">,</span><span class="n">tilt</span><span class="p">,</span><span class="n">phi0</span><span class="p">)</span> 209 <span class="n">varyDict</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="n">varyList</span><span class="p">,</span><span class="n">B</span><span class="p">))</span> 210 <span class="n">parms</span> <span class="o">=</span> <span class="p">{}</span> 211 <span class="k">for</span> <span class="n">parm</span> <span class="ow">in</span> <span class="n">parmDict</span><span class="p">:</span> 212 <span class="k">if</span> <span class="n">parm</span> <span class="ow">in</span> <span class="n">varyList</span><span class="p">:</span> 213 <span class="n">parms</span><span class="p">[</span><span class="n">parm</span><span class="p">]</span> <span class="o">=</span> <span class="n">varyDict</span><span class="p">[</span><span class="n">parm</span><span class="p">]</span> 214 <span class="k">else</span><span class="p">:</span> 215 <span class="n">parms</span><span class="p">[</span><span class="n">parm</span><span class="p">]</span> <span class="o">=</span> <span class="n">parmDict</span><span class="p">[</span><span class="n">parm</span><span class="p">]</span> 216 <span class="n">phi</span> <span class="o">=</span> <span class="n">parms</span><span class="p">[</span><span class="s">'phi'</span><span class="p">]</span><span class="o">-</span><span class="mf">90.</span> <span class="c">#get rotation of major axis from tilt axis</span> 217 <span class="n">tth</span> <span class="o">=</span> <span class="mf">2.0</span><span class="o">*</span><span class="n">npasind</span><span class="p">(</span><span class="n">parms</span><span class="p">[</span><span class="s">'wave'</span><span class="p">]</span><span class="o">/</span><span class="p">(</span><span class="mf">2.</span><span class="o">*</span><span class="n">dsp</span><span class="p">))</span> 218 <span class="n">phi0</span> <span class="o">=</span> <span class="n">npatan2d</span><span class="p">(</span><span class="n">y</span><span class="o">-</span><span class="n">parms</span><span class="p">[</span><span class="s">'det-Y'</span><span class="p">],</span><span class="n">x</span><span class="o">-</span><span class="n">parms</span><span class="p">[</span><span class="s">'det-X'</span><span class="p">])</span> 219 <span class="n">dxy</span> <span class="o">=</span> <span class="n">peneCorr</span><span class="p">(</span><span class="n">tth</span><span class="p">,</span><span class="n">parms</span><span class="p">[</span><span class="s">'dep'</span><span class="p">],</span><span class="n">parms</span><span class="p">[</span><span class="s">'tilt'</span><span class="p">],</span><span class="n">phi0</span><span class="p">)</span> 219 220 <span class="n">ttth</span> <span class="o">=</span> <span class="n">nptand</span><span class="p">(</span><span class="n">tth</span><span class="p">)</span> 220 221 <span class="n">stth</span> <span class="o">=</span> <span class="n">npsind</span><span class="p">(</span><span class="n">tth</span><span class="p">)</span> 221 <span class="n">cosb</span> <span class="o">=</span> <span class="n">npcosd</span><span class="p">(</span><span class="n"> tilt</span><span class="p">)</span>222 <span class="n">tanb</span> <span class="o">=</span> <span class="n">nptand</span><span class="p">(</span><span class="n"> tilt</span><span class="p">)</span>223 <span class="n">tbm</span> <span class="o">=</span> <span class="n">nptand</span><span class="p">((</span><span class="n">tth</span><span class="o">-</span><span class="n"> tilt</span><span class="p">)</span><span class="o">/</span><span class="mf">2.</span><span class="p">)</span>224 <span class="n">tbp</span> <span class="o">=</span> <span class="n">nptand</span><span class="p">((</span><span class="n">tth</span><span class="o">+</span><span class="n"> tilt</span><span class="p">)</span><span class="o">/</span><span class="mf">2.</span><span class="p">)</span>225 <span class="n">sinb</span> <span class="o">=</span> <span class="n">npsind</span><span class="p">(</span><span class="n"> tilt</span><span class="p">)</span>226 <span class="n">d</span> <span class="o">=</span> <span class="n"> dist</span><span class="o">+</span><span class="n">dxy</span>222 <span class="n">cosb</span> <span class="o">=</span> <span class="n">npcosd</span><span class="p">(</span><span class="n">parms</span><span class="p">[</span><span class="s">'tilt'</span><span class="p">])</span> 223 <span class="n">tanb</span> <span class="o">=</span> <span class="n">nptand</span><span class="p">(</span><span class="n">parms</span><span class="p">[</span><span class="s">'tilt'</span><span class="p">])</span> 224 <span class="n">tbm</span> <span class="o">=</span> <span class="n">nptand</span><span class="p">((</span><span class="n">tth</span><span class="o">-</span><span class="n">parms</span><span class="p">[</span><span class="s">'tilt'</span><span class="p">])</span><span class="o">/</span><span class="mf">2.</span><span class="p">)</span> 225 <span class="n">tbp</span> <span class="o">=</span> <span class="n">nptand</span><span class="p">((</span><span class="n">tth</span><span class="o">+</span><span class="n">parms</span><span class="p">[</span><span class="s">'tilt'</span><span class="p">])</span><span class="o">/</span><span class="mf">2.</span><span class="p">)</span> 226 <span class="n">sinb</span> <span class="o">=</span> <span class="n">npsind</span><span class="p">(</span><span class="n">parms</span><span class="p">[</span><span class="s">'tilt'</span><span class="p">])</span> 227 <span class="n">d</span> <span class="o">=</span> <span class="n">parms</span><span class="p">[</span><span class="s">'dist'</span><span class="p">]</span><span class="o">+</span><span class="n">dxy</span> 227 228 <span class="n">fplus</span> <span class="o">=</span> <span class="n">d</span><span class="o">*</span><span class="n">tanb</span><span class="o">*</span><span class="n">stth</span><span class="o">/</span><span class="p">(</span><span class="n">cosb</span><span class="o">+</span><span class="n">stth</span><span class="p">)</span> 228 229 <span class="n">fminus</span> <span class="o">=</span> <span class="n">d</span><span class="o">*</span><span class="n">tanb</span><span class="o">*</span><span class="n">stth</span><span class="o">/</span><span class="p">(</span><span class="n">cosb</span><span class="o">-</span><span class="n">stth</span><span class="p">)</span> … … 232 233 <span class="n">R1</span> <span class="o">=</span> <span class="p">(</span><span class="n">vplus</span><span class="o">+</span><span class="n">vminus</span><span class="p">)</span><span class="o">/</span><span class="mf">2.</span> <span class="c">#major axis</span> 233 234 <span class="n">zdis</span> <span class="o">=</span> <span class="p">(</span><span class="n">fplus</span><span class="o">-</span><span class="n">fminus</span><span class="p">)</span><span class="o">/</span><span class="mf">2.</span> 234 <span class="n">Robs</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">((</span><span class="n">x</span><span class="o">-</span><span class="n"> x0</span><span class="p">)</span><span class="o">**</span><span class="mi">2</span><span class="o">+</span><span class="p">(</span><span class="n">y</span><span class="o">-</span><span class="n">y0</span><span class="p">)</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span>235 <span class="n">Robs</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">((</span><span class="n">x</span><span class="o">-</span><span class="n">parms</span><span class="p">[</span><span class="s">'det-X'</span><span class="p">])</span><span class="o">**</span><span class="mi">2</span><span class="o">+</span><span class="p">(</span><span class="n">y</span><span class="o">-</span><span class="n">parms</span><span class="p">[</span><span class="s">'det-Y'</span><span class="p">])</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span> 235 236 <span class="n">rsqplus</span> <span class="o">=</span> <span class="n">R0</span><span class="o">**</span><span class="mi">2</span><span class="o">+</span><span class="n">R1</span><span class="o">**</span><span class="mi">2</span> 236 237 <span class="n">rsqminus</span> <span class="o">=</span> <span class="n">R0</span><span class="o">**</span><span class="mi">2</span><span class="o">-</span><span class="n">R1</span><span class="o">**</span><span class="mi">2</span> … … 243 244 244 245 <span class="n">names</span> <span class="o">=</span> <span class="p">[</span><span class="s">'dist'</span><span class="p">,</span><span class="s">'det-X'</span><span class="p">,</span><span class="s">'det-Y'</span><span class="p">,</span><span class="s">'tilt'</span><span class="p">,</span><span class="s">'phi'</span><span class="p">,</span><span class="s">'dep'</span><span class="p">,</span><span class="s">'wave'</span><span class="p">]</span> 245 <span class="n">fmt</span> <span class="o">=</span> <span class="p">[</span><span class="s">'</span><span class="si">%12.3f</span><span class="s">'</span><span class="p">,</span><span class="s">'</span><span class="si">%12.3f</span><span class="s">'</span><span class="p">,</span><span class="s">'</span><span class="si">%12.3f</span><span class="s">'</span><span class="p">,</span><span class="s">'</span><span class="si">%12.3f</span><span class="s">'</span><span class="p">,</span><span class="s">'</span><span class="si">%12.3f</span><span class="s">'</span><span class="p">,</span><span class="s">'</span><span class="si">%12.3f</span><span class="s">'</span><span class="p">,</span><span class="s">'</span><span class="si">%12.5f</span><span class="s">'</span><span class="p">]</span> 246 <span class="n">fmt</span> <span class="o">=</span> <span class="p">[</span><span class="s">'</span><span class="si">%12.3f</span><span class="s">'</span><span class="p">,</span><span class="s">'</span><span class="si">%12.3f</span><span class="s">'</span><span class="p">,</span><span class="s">'</span><span class="si">%12.3f</span><span class="s">'</span><span class="p">,</span><span class="s">'</span><span class="si">%12.3f</span><span class="s">'</span><span class="p">,</span><span class="s">'</span><span class="si">%12.3f</span><span class="s">'</span><span class="p">,</span><span class="s">'</span><span class="si">%12.2f</span><span class="s">'</span><span class="p">,</span><span class="s">'</span><span class="si">%12.6f</span><span class="s">'</span><span class="p">]</span> 247 <span class="n">Fmt</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="n">names</span><span class="p">,</span><span class="n">fmt</span><span class="p">))</span> 246 248 <span class="n">p0</span> <span class="o">=</span> <span class="p">[</span><span class="n">parmDict</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">varyList</span><span class="p">]</span> 247 249 <span class="n">result</span> <span class="o">=</span> <span class="n">leastsq</span><span class="p">(</span><span class="n">ellipseCalcD</span><span class="p">,</span><span class="n">p0</span><span class="p">,</span><span class="n">args</span><span class="o">=</span><span class="p">(</span><span class="n">rings</span><span class="o">.</span><span class="n">T</span><span class="p">,</span><span class="n">varyList</span><span class="p">,</span><span class="n">parmDict</span><span class="p">),</span><span class="n">full_output</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span><span class="n">ftol</span><span class="o">=</span><span class="mf">1.e-8</span><span class="p">)</span> … … 251 253 <span class="n">sig</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">chisq</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">result</span><span class="p">[</span><span class="mi">1</span><span class="p">])))</span> 252 254 <span class="n">sigList</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="mi">7</span><span class="p">)</span> 253 <span class="k">for</span> <span class="n">i</span><span class="p">,</span><span class="n">name</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">names</span><span class="p">):</span> 254 <span class="k">if</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">varyList</span><span class="p">:</span> 255 <span class="n">sigList</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">sig</span><span class="p">[</span><span class="n">varyList</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">name</span><span class="p">)]</span> 256 <span class="n">ValSig</span> <span class="o">=</span> <span class="nb">zip</span><span class="p">(</span><span class="n">names</span><span class="p">,</span><span class="n">fmt</span><span class="p">,</span><span class="n">vals</span><span class="p">,</span><span class="n">sig</span><span class="p">)</span> 255 <span class="k">for</span> <span class="n">i</span><span class="p">,</span><span class="n">name</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">varyList</span><span class="p">):</span> 256 <span class="n">sigList</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">sig</span><span class="p">[</span><span class="n">varyList</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">name</span><span class="p">)]</span> 257 <span class="n">ValSig</span> <span class="o">=</span> <span class="nb">zip</span><span class="p">(</span><span class="n">varyList</span><span class="p">,</span><span class="n">vals</span><span class="p">,</span><span class="n">sig</span><span class="p">)</span> 257 258 <span class="k">if</span> <span class="n">Print</span><span class="p">:</span> 258 259 <span class="n">CalibPrint</span><span class="p">(</span><span class="n">ValSig</span><span class="p">,</span><span class="n">chisq</span><span class="p">,</span><span class="n">rings</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> … … 476 477 <span class="s">'Give azimuth value for detector x,y position; calibration info in data'</span> 477 478 <span class="k">return</span> <span class="n">GetTthAzmDsp</span><span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">data</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span> 478 </div> 479 </div> 480 <span class="k">def</span> <span class="nf">meanAzm</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="n">b</span><span class="p">):</span> 481 <span class="n">AZM</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">a</span><span class="p">,</span><span class="n">b</span><span class="p">:</span> <span class="n">npacosd</span><span class="p">(</span><span class="mf">0.5</span><span class="o">*</span><span class="p">(</span><span class="n">npsind</span><span class="p">(</span><span class="mf">2.</span><span class="o">*</span><span class="n">b</span><span class="p">)</span><span class="o">-</span><span class="n">npsind</span><span class="p">(</span><span class="mf">2.</span><span class="o">*</span><span class="n">a</span><span class="p">))</span><span class="o">/</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">pi</span><span class="o">*</span><span class="p">(</span><span class="n">b</span><span class="o">-</span><span class="n">a</span><span class="p">)</span><span class="o">/</span><span class="mf">180.</span><span class="p">))</span><span class="o">/</span><span class="mf">2.</span> 482 <span class="n">azm</span> <span class="o">=</span> <span class="n">AZM</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="n">b</span><span class="p">)</span> 483 <span class="n">quad</span> <span class="o">=</span> <span class="nb">int</span><span class="p">((</span><span class="n">a</span><span class="o">+</span><span class="n">b</span><span class="p">)</span><span class="o">/</span><span class="mf">180.</span><span class="p">)</span> 484 <span class="k">if</span> <span class="n">quad</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> 485 <span class="n">azm</span> <span class="o">=</span> <span class="mf">180.</span><span class="o">-</span><span class="n">azm</span> 486 <span class="k">elif</span> <span class="n">quad</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span> 487 <span class="n">azm</span> <span class="o">+=</span> <span class="mf">180.</span> 488 <span class="k">elif</span> <span class="n">quad</span> <span class="o">==</span> <span class="mi">3</span><span class="p">:</span> 489 <span class="n">azm</span> <span class="o">=</span> <span class="mi">360</span><span class="o">-</span><span class="n">azm</span> 490 <span class="k">return</span> <span class="n">azm</span> 491 479 492 <div class="viewcode-block" id="ImageCompress"><a class="viewcode-back" href="../GSASIIimage.html#GSASIIimage.ImageCompress">[docs]</a><span class="k">def</span> <span class="nf">ImageCompress</span><span class="p">(</span><span class="n">image</span><span class="p">,</span><span class="n">scale</span><span class="p">):</span> 480 493 <span class="s">'Needs a doc string'</span> … … 567 580 <span class="n">HKL</span> <span class="o">+=</span> <span class="n">hkl</span> 568 581 <span class="n">HKL</span> <span class="o">=</span> <span class="n">G2lat</span><span class="o">.</span><span class="n">sortHKLd</span><span class="p">(</span><span class="n">HKL</span><span class="p">,</span><span class="bp">True</span><span class="p">,</span><span class="bp">False</span><span class="p">)</span> 569 <span class="n">varyList</span> <span class="o">=</span> <span class="p">[</span><span class=" s">'dist'</span><span class="p">,</span><span class="s">'det-X'</span><span class="p">,</span><span class="s">'det-Y'</span><span class="p">,</span><span class="s">'tilt'</span><span class="p">,</span><span class="s">'phi'</span><span class="p">]</span>582 <span class="n">varyList</span> <span class="o">=</span> <span class="p">[</span><span class="n">item</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">data</span><span class="p">[</span><span class="s">'varyList'</span><span class="p">]</span> <span class="k">if</span> <span class="n">data</span><span class="p">[</span><span class="s">'varyList'</span><span class="p">][</span><span class="n">item</span><span class="p">]]</span> 570 583 <span class="n">parmDict</span> <span class="o">=</span> <span class="p">{</span><span class="s">'dist'</span><span class="p">:</span><span class="n">data</span><span class="p">[</span><span class="s">'distance'</span><span class="p">],</span><span class="s">'det-X'</span><span class="p">:</span><span class="n">data</span><span class="p">[</span><span class="s">'center'</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span><span class="s">'det-Y'</span><span class="p">:</span><span class="n">data</span><span class="p">[</span><span class="s">'center'</span><span class="p">][</span><span class="mi">1</span><span class="p">],</span> 571 584 <span class="s">'tilt'</span><span class="p">:</span><span class="n">data</span><span class="p">[</span><span class="s">'tilt'</span><span class="p">],</span><span class="s">'phi'</span><span class="p">:</span><span class="n">data</span><span class="p">[</span><span class="s">'rotation'</span><span class="p">],</span><span class="s">'wave'</span><span class="p">:</span><span class="n">data</span><span class="p">[</span><span class="s">'wavelength'</span><span class="p">],</span><span class="s">'dep'</span><span class="p">:</span><span class="n">data</span><span class="p">[</span><span class="s">'DetDepth'</span><span class="p">]}</span> … … 577 590 <span class="n">tam</span> <span class="o">=</span> <span class="n">ma</span><span class="o">.</span><span class="n">mask_or</span><span class="p">(</span><span class="n">tam</span><span class="p">,</span><span class="n">MakeFrameMask</span><span class="p">(</span><span class="n">data</span><span class="p">,</span><span class="n">frame</span><span class="p">))</span> 578 591 <span class="k">for</span> <span class="n">iH</span><span class="p">,</span><span class="n">H</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">HKL</span><span class="p">):</span> 579 <span class="k"> print</span> <span class="n">H</span>592 <span class="k">if</span> <span class="n">debug</span><span class="p">:</span> <span class="k">print</span> <span class="n">H</span> 580 593 <span class="n">dsp</span> <span class="o">=</span> <span class="n">H</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> 581 594 <span class="n">tth</span> <span class="o">=</span> <span class="mf">2.0</span><span class="o">*</span><span class="n">asind</span><span class="p">(</span><span class="n">wave</span><span class="o">/</span><span class="p">(</span><span class="mf">2.</span><span class="o">*</span><span class="n">dsp</span><span class="p">))</span> … … 597 610 <span class="c"># break</span> 598 611 <span class="n">rings</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">((</span><span class="n">data</span><span class="p">[</span><span class="s">'rings'</span><span class="p">]),</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> 599 <span class="k">if</span> <span class="n">data</span><span class="p">[</span><span class="s">'DetDepthRef'</span><span class="p">]:</span>600 <span class="n">varyList</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">'dep'</span><span class="p">)</span>601 612 <span class="n">chisq</span> <span class="o">=</span> <span class="n">FitDetector</span><span class="p">(</span><span class="n">rings</span><span class="p">,</span><span class="n">varyList</span><span class="p">,</span><span class="n">parmDict</span><span class="p">)</span> 613 <span class="n">data</span><span class="p">[</span><span class="s">'wavelength'</span><span class="p">]</span> <span class="o">=</span> <span class="n">parmDict</span><span class="p">[</span><span class="s">'wave'</span><span class="p">]</span> 602 614 <span class="n">data</span><span class="p">[</span><span class="s">'distance'</span><span class="p">]</span> <span class="o">=</span> <span class="n">parmDict</span><span class="p">[</span><span class="s">'dist'</span><span class="p">]</span> 603 615 <span class="n">data</span><span class="p">[</span><span class="s">'center'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">parmDict</span><span class="p">[</span><span class="s">'det-X'</span><span class="p">],</span><span class="n">parmDict</span><span class="p">[</span><span class="s">'det-Y'</span><span class="p">]]</span> … … 610 622 <span class="k">for</span> <span class="n">H</span> <span class="ow">in</span> <span class="n">HKL</span><span class="p">[:</span><span class="n">N</span><span class="p">]:</span> 611 623 <span class="n">ellipse</span> <span class="o">=</span> <span class="n">GetEllipse</span><span class="p">(</span><span class="n">H</span><span class="p">[</span><span class="mi">3</span><span class="p">],</span><span class="n">data</span><span class="p">)</span> 612 <span class="n">data</span><span class="p">[</span><span class="s">'ellipses'</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="n">ellipse</span><span class="o">+</span><span class="p">(</span><span class="s">'b'</span><span class="p">,)))</span> 613 624 <span class="n">data</span><span class="p">[</span><span class="s">'ellipses'</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="n">ellipse</span><span class="o">+</span><span class="p">(</span><span class="s">'b'</span><span class="p">,)))</span> 614 625 <span class="k">print</span> <span class="s">'calibration time = '</span><span class="p">,</span><span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span><span class="o">-</span><span class="n">time0</span> 615 626 <span class="n">G2plt</span><span class="o">.</span><span class="n">PlotImage</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">newImage</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> … … 628 639 <span class="n">pixLimit</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="s">'pixLimit'</span><span class="p">]</span> 629 640 <span class="n">cutoff</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="s">'cutoff'</span><span class="p">]</span> 641 <span class="n">varyDict</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="s">'varyList'</span><span class="p">]</span> 642 <span class="k">if</span> <span class="n">varyDict</span><span class="p">[</span><span class="s">'dist'</span><span class="p">]</span> <span class="ow">and</span> <span class="n">varyDict</span><span class="p">[</span><span class="s">'wave'</span><span class="p">]:</span> 643 <span class="k">print</span> <span class="s">'ERROR - you can not simultaneously calibrate distance and wavelength'</span> 644 <span class="k">return</span> <span class="bp">False</span> 630 645 <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">ring</span><span class="p">)</span> <span class="o"><</span> <span class="mi">5</span><span class="p">:</span> 631 <span class="k">print</span> <span class="s">' not enough inner ring points for ellipse'</span>646 <span class="k">print</span> <span class="s">'ERROR - not enough inner ring points for ellipse'</span> 632 647 <span class="k">return</span> <span class="bp">False</span> 633 648 … … 654 669 <span class="k">print</span> <span class="s">'1st ring not sufficiently complete to proceed'</span> 655 670 <span class="k">return</span> <span class="bp">False</span> 656 <span class="k">print</span> <span class="n">fmt2</span><span class="o">%</span><span class="p">(</span><span class="s">'inner ring: '</span><span class="p">,</span><span class="n">ellipse</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span><span class="n">ellipse</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="n">ellipse</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span><span class="n">ellipse</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span><span class="n">ellipse</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">1</span><span class="p">],</span><span class="mf">0.</span><span class="p">,</span><span class="nb">len</span><span class="p">(</span><span class="n">Ring</span><span class="p">))</span> <span class="c">#cent,phi,radii</span> 671 <span class="k">if</span> <span class="n">debug</span><span class="p">:</span> 672 <span class="k">print</span> <span class="n">fmt2</span><span class="o">%</span><span class="p">(</span><span class="s">'inner ring: '</span><span class="p">,</span><span class="n">ellipse</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span><span class="n">ellipse</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="n">ellipse</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> 673 <span class="n">ellipse</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span><span class="n">ellipse</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">1</span><span class="p">],</span><span class="mf">0.</span><span class="p">,</span><span class="nb">len</span><span class="p">(</span><span class="n">Ring</span><span class="p">))</span> <span class="c">#cent,phi,radii</span> 657 674 <span class="n">data</span><span class="p">[</span><span class="s">'ellipses'</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">ellipse</span><span class="p">[:]</span><span class="o">+</span><span class="p">(</span><span class="s">'r'</span><span class="p">,))</span> 658 675 <span class="n">data</span><span class="p">[</span><span class="s">'rings'</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">Ring</span><span class="p">))</span> … … 680 697 <span class="n">HKL</span> <span class="o">+=</span> <span class="n">hkl</span> 681 698 <span class="n">HKL</span> <span class="o">=</span> <span class="n">G2lat</span><span class="o">.</span><span class="n">sortHKLd</span><span class="p">(</span><span class="n">HKL</span><span class="p">,</span><span class="bp">True</span><span class="p">,</span><span class="bp">False</span><span class="p">)[</span><span class="n">skip</span><span class="p">:]</span> 682 <span class="n">wave</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="s">'wavelength'</span><span class="p">]</span>683 699 <span class="c">#set up 1st ring</span> 684 700 <span class="n">elcent</span><span class="p">,</span><span class="n">phi</span><span class="p">,</span><span class="n">radii</span> <span class="o">=</span> <span class="n">ellipse</span> <span class="c">#from fit of 1st ring</span> 685 701 <span class="n">dsp</span> <span class="o">=</span> <span class="n">HKL</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">3</span><span class="p">]</span> 686 702 <span class="k">print</span> <span class="s">'1st ring: try </span><span class="si">%.4f</span><span class="s">'</span><span class="o">%</span><span class="p">(</span><span class="n">dsp</span><span class="p">)</span> 687 <span class="n">tth</span> <span class="o">=</span> <span class="mf">2.0</span><span class="o">*</span><span class="n">asind</span><span class="p">(</span><span class="n">wave</span><span class="o">/</span><span class="p">(</span><span class="mf">2.</span><span class="o">*</span><span class="n">dsp</span><span class="p">))</span> 703 <span class="k">if</span> <span class="n">varyDict</span><span class="p">[</span><span class="s">'dist'</span><span class="p">]:</span> 704 <span class="n">wave</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="s">'wavelength'</span><span class="p">]</span> 705 <span class="n">tth</span> <span class="o">=</span> <span class="mf">2.0</span><span class="o">*</span><span class="n">asind</span><span class="p">(</span><span class="n">wave</span><span class="o">/</span><span class="p">(</span><span class="mf">2.</span><span class="o">*</span><span class="n">dsp</span><span class="p">))</span> 706 <span class="k">else</span><span class="p">:</span> <span class="c">#varyDict['wave']!</span> 707 <span class="n">dist</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="s">'distance'</span><span class="p">]</span> 708 <span class="n">tth</span> <span class="o">=</span> <span class="n">npatan2d</span><span class="p">(</span><span class="n">radii</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="n">dist</span><span class="p">)</span> 709 <span class="n">data</span><span class="p">[</span><span class="s">'wavelength'</span><span class="p">]</span> <span class="o">=</span> <span class="n">wave</span> <span class="o">=</span> <span class="mf">2.0</span><span class="o">*</span><span class="n">dsp</span><span class="o">*</span><span class="n">sind</span><span class="p">(</span><span class="n">tth</span><span class="o">/</span><span class="mf">2.0</span><span class="p">)</span> 688 710 <span class="n">Ring0</span> <span class="o">=</span> <span class="n">makeRing</span><span class="p">(</span><span class="n">dsp</span><span class="p">,</span><span class="n">ellipse</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="n">cutoff</span><span class="p">,</span><span class="n">scalex</span><span class="p">,</span><span class="n">scaley</span><span class="p">,</span><span class="bp">self</span><span class="o">.</span><span class="n">ImageZ</span><span class="p">)</span> 689 711 <span class="n">ttth</span> <span class="o">=</span> <span class="n">nptand</span><span class="p">(</span><span class="n">tth</span><span class="p">)</span> … … 691 713 <span class="n">ctth</span> <span class="o">=</span> <span class="n">npcosd</span><span class="p">(</span><span class="n">tth</span><span class="p">)</span> 692 714 <span class="c">#1st estimate of tilt; assume ellipse - don't know sign though</span> 693 <span class="n">tilt</span> <span class="o">=</span> <span class="n">npasind</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="nb">max</span><span class="p">(</span><span class="mf">0.</span><span class="p">,</span><span class="mf">1.</span><span class="o">-</span><span class="p">(</span><span class="n">radii</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">/</span><span class="n">radii</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span><span class="o">**</span><span class="mi">2</span><span class="p">))</span><span class="o">*</span><span class="n">ctth</span><span class="p">)</span> 694 <span class="k">if</span> <span class="ow">not</span> <span class="n">tilt</span><span class="p">:</span> 695 <span class="k">print</span> <span class="s">'WARNING - selected ring was fitted as a circle'</span> 696 <span class="k">print</span> <span class="s">' - if detector was tilted we suggest you skip this ring - WARNING'</span> 715 <span class="k">if</span> <span class="n">varyDict</span><span class="p">[</span><span class="s">'tilt'</span><span class="p">]:</span> 716 <span class="n">tilt</span> <span class="o">=</span> <span class="n">npasind</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="nb">max</span><span class="p">(</span><span class="mf">0.</span><span class="p">,</span><span class="mf">1.</span><span class="o">-</span><span class="p">(</span><span class="n">radii</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">/</span><span class="n">radii</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span><span class="o">**</span><span class="mi">2</span><span class="p">))</span><span class="o">*</span><span class="n">ctth</span><span class="p">)</span> 717 <span class="k">if</span> <span class="ow">not</span> <span class="n">tilt</span><span class="p">:</span> 718 <span class="k">print</span> <span class="s">'WARNING - selected ring was fitted as a circle'</span> 719 <span class="k">print</span> <span class="s">' - if detector was tilted we suggest you skip this ring - WARNING'</span> 720 <span class="k">else</span><span class="p">:</span> 721 <span class="n">tilt</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="s">'tilt'</span><span class="p">]</span> 697 722 <span class="c">#1st estimate of dist: sample to detector normal to plane</span> 698 <span class="n">data</span><span class="p">[</span><span class="s">'distance'</span><span class="p">]</span> <span class="o">=</span> <span class="n">dist</span> <span class="o">=</span> <span class="n">radii</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">**</span><span class="mi">2</span><span class="o">/</span><span class="p">(</span><span class="n">ttth</span><span class="o">*</span><span class="n">radii</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> 723 <span class="k">if</span> <span class="n">varyDict</span><span class="p">[</span><span class="s">'dist'</span><span class="p">]:</span> 724 <span class="n">data</span><span class="p">[</span><span class="s">'distance'</span><span class="p">]</span> <span class="o">=</span> <span class="n">dist</span> <span class="o">=</span> <span class="n">radii</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">**</span><span class="mi">2</span><span class="o">/</span><span class="p">(</span><span class="n">ttth</span><span class="o">*</span><span class="n">radii</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> 725 <span class="k">else</span><span class="p">:</span> 726 <span class="n">dist</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="s">'distance'</span><span class="p">]</span> 727 <span class="k">if</span> <span class="n">varyDict</span><span class="p">[</span><span class="s">'tilt'</span><span class="p">]:</span> 699 728 <span class="c">#ellipse to cone axis (x-ray beam); 2 choices depending on sign of tilt</span> 700 <span class="n">zdisp</span> <span class="o">=</span> <span class="n">radii</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">ttth</span><span class="o">*</span><span class="n">tand</span><span class="p">(</span><span class="n">tilt</span><span class="p">)</span>701 <span class="n">zdism</span> <span class="o">=</span> <span class="n">radii</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">ttth</span><span class="o">*</span><span class="n">tand</span><span class="p">(</span><span class="o">-</span><span class="n">tilt</span><span class="p">)</span>729 <span class="n">zdisp</span> <span class="o">=</span> <span class="n">radii</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">ttth</span><span class="o">*</span><span class="n">tand</span><span class="p">(</span><span class="n">tilt</span><span class="p">)</span> 730 <span class="n">zdism</span> <span class="o">=</span> <span class="n">radii</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">ttth</span><span class="o">*</span><span class="n">tand</span><span class="p">(</span><span class="o">-</span><span class="n">tilt</span><span class="p">)</span> 702 731 <span class="c">#cone axis position; 2 choices. Which is right? </span> 703 732 <span class="c">#NB: zdisp is || to major axis & phi is rotation of minor axis</span> 704 733 <span class="c">#thus shift from beam to ellipse center is [Z*sin(phi),-Z*cos(phi)]</span> 705 <span class="n">centp</span> <span class="o">=</span> <span class="p">[</span><span class="n">elcent</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="n">zdisp</span><span class="o">*</span><span class="n">sind</span><span class="p">(</span><span class="n">phi</span><span class="p">),</span><span class="n">elcent</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">-</span><span class="n">zdisp</span><span class="o">*</span><span class="n">cosd</span><span class="p">(</span><span class="n">phi</span><span class="p">)]</span>706 <span class="n">centm</span> <span class="o">=</span> <span class="p">[</span><span class="n">elcent</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="n">zdism</span><span class="o">*</span><span class="n">sind</span><span class="p">(</span><span class="n">phi</span><span class="p">),</span><span class="n">elcent</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">-</span><span class="n">zdism</span><span class="o">*</span><span class="n">cosd</span><span class="p">(</span><span class="n">phi</span><span class="p">)]</span>734 <span class="n">centp</span> <span class="o">=</span> <span class="p">[</span><span class="n">elcent</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="n">zdisp</span><span class="o">*</span><span class="n">sind</span><span class="p">(</span><span class="n">phi</span><span class="p">),</span><span class="n">elcent</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">-</span><span class="n">zdisp</span><span class="o">*</span><span class="n">cosd</span><span class="p">(</span><span class="n">phi</span><span class="p">)]</span> 735 <span class="n">centm</span> <span class="o">=</span> <span class="p">[</span><span class="n">elcent</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="n">zdism</span><span class="o">*</span><span class="n">sind</span><span class="p">(</span><span class="n">phi</span><span class="p">),</span><span class="n">elcent</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">-</span><span class="n">zdism</span><span class="o">*</span><span class="n">cosd</span><span class="p">(</span><span class="n">phi</span><span class="p">)]</span> 707 736 <span class="c">#check get same ellipse parms either way</span> 708 737 <span class="c">#now do next ring; estimate either way & do a FitDetector each way; best fit is correct one</span> 709 <span class="n">fail</span> <span class="o">=</span> <span class="bp">True</span> 710 <span class="n">i2</span> <span class="o">=</span> <span class="mi">1</span> 711 <span class="k">while</span> <span class="n">fail</span><span class="p">:</span> 712 <span class="n">dsp</span> <span class="o">=</span> <span class="n">HKL</span><span class="p">[</span><span class="n">i2</span><span class="p">][</span><span class="mi">3</span><span class="p">]</span> 713 <span class="k">print</span> <span class="s">'2nd ring: try </span><span class="si">%.4f</span><span class="s">'</span><span class="o">%</span><span class="p">(</span><span class="n">dsp</span><span class="p">)</span> 714 <span class="n">tth</span> <span class="o">=</span> <span class="mf">2.0</span><span class="o">*</span><span class="n">asind</span><span class="p">(</span><span class="n">wave</span><span class="o">/</span><span class="p">(</span><span class="mf">2.</span><span class="o">*</span><span class="n">dsp</span><span class="p">))</span> 715 <span class="n">ellipsep</span> <span class="o">=</span> <span class="n">GetEllipse2</span><span class="p">(</span><span class="n">tth</span><span class="p">,</span><span class="mf">0.</span><span class="p">,</span><span class="n">dist</span><span class="p">,</span><span class="n">centp</span><span class="p">,</span><span class="n">tilt</span><span class="p">,</span><span class="n">phi</span><span class="p">)</span> 716 <span class="k">print</span> <span class="n">fmt</span><span class="o">%</span><span class="p">(</span><span class="s">'plus ellipse :'</span><span class="p">,</span><span class="n">ellipsep</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span><span class="n">ellipsep</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="n">ellipsep</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span><span class="n">ellipsep</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span><span class="n">ellipsep</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">1</span><span class="p">])</span> 717 <span class="n">Ringp</span> <span class="o">=</span> <span class="n">makeRing</span><span class="p">(</span><span class="n">dsp</span><span class="p">,</span><span class="n">ellipsep</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="n">cutoff</span><span class="p">,</span><span class="n">scalex</span><span class="p">,</span><span class="n">scaley</span><span class="p">,</span><span class="bp">self</span><span class="o">.</span><span class="n">ImageZ</span><span class="p">)</span> 718 <span class="n">parmDict</span> <span class="o">=</span> <span class="p">{</span><span class="s">'dist'</span><span class="p">:</span><span class="n">dist</span><span class="p">,</span><span class="s">'det-X'</span><span class="p">:</span><span class="n">centp</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="s">'det-Y'</span><span class="p">:</span><span class="n">centp</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> 719 <span class="s">'tilt'</span><span class="p">:</span><span class="n">tilt</span><span class="p">,</span><span class="s">'phi'</span><span class="p">:</span><span class="n">phi</span><span class="p">,</span><span class="s">'wave'</span><span class="p">:</span><span class="n">wave</span><span class="p">,</span><span class="s">'dep'</span><span class="p">:</span><span class="mf">0.0</span><span class="p">}</span> 720 <span class="n">varyList</span> <span class="o">=</span> <span class="p">[</span><span class="s">'dist'</span><span class="p">,</span><span class="s">'det-X'</span><span class="p">,</span><span class="s">'det-Y'</span><span class="p">,</span><span class="s">'tilt'</span><span class="p">,</span><span class="s">'phi'</span><span class="p">]</span> 721 <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">Ringp</span><span class="p">)</span> <span class="o">></span> <span class="mi">10</span><span class="p">:</span> 722 <span class="n">chip</span> <span class="o">=</span> <span class="n">FitDetector</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">Ring0</span><span class="o">+</span><span class="n">Ringp</span><span class="p">),</span><span class="n">varyList</span><span class="p">,</span><span class="n">parmDict</span><span class="p">,</span><span class="bp">True</span><span class="p">)</span> 723 <span class="n">tiltp</span> <span class="o">=</span> <span class="n">parmDict</span><span class="p">[</span><span class="s">'tilt'</span><span class="p">]</span> 724 <span class="n">phip</span> <span class="o">=</span> <span class="n">parmDict</span><span class="p">[</span><span class="s">'phi'</span><span class="p">]</span> 725 <span class="n">centp</span> <span class="o">=</span> <span class="p">[</span><span class="n">parmDict</span><span class="p">[</span><span class="s">'det-X'</span><span class="p">],</span><span class="n">parmDict</span><span class="p">[</span><span class="s">'det-Y'</span><span class="p">]]</span> 726 <span class="n">fail</span> <span class="o">=</span> <span class="bp">False</span> 738 <span class="n">fail</span> <span class="o">=</span> <span class="bp">True</span> 739 <span class="n">i2</span> <span class="o">=</span> <span class="mi">1</span> 740 <span class="k">while</span> <span class="n">fail</span><span class="p">:</span> 741 <span class="n">dsp</span> <span class="o">=</span> <span class="n">HKL</span><span class="p">[</span><span class="n">i2</span><span class="p">][</span><span class="mi">3</span><span class="p">]</span> 742 <span class="k">print</span> <span class="s">'2nd ring: try </span><span class="si">%.4f</span><span class="s">'</span><span class="o">%</span><span class="p">(</span><span class="n">dsp</span><span class="p">)</span> 743 <span class="n">tth</span> <span class="o">=</span> <span class="mf">2.0</span><span class="o">*</span><span class="n">asind</span><span class="p">(</span><span class="n">wave</span><span class="o">/</span><span class="p">(</span><span class="mf">2.</span><span class="o">*</span><span class="n">dsp</span><span class="p">))</span> 744 <span class="n">ellipsep</span> <span class="o">=</span> <span class="n">GetEllipse2</span><span class="p">(</span><span class="n">tth</span><span class="p">,</span><span class="mf">0.</span><span class="p">,</span><span class="n">dist</span><span class="p">,</span><span class="n">centp</span><span class="p">,</span><span class="n">tilt</span><span class="p">,</span><span class="n">phi</span><span class="p">)</span> 745 <span class="k">print</span> <span class="n">fmt</span><span class="o">%</span><span class="p">(</span><span class="s">'plus ellipse :'</span><span class="p">,</span><span class="n">ellipsep</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span><span class="n">ellipsep</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="n">ellipsep</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span><span class="n">ellipsep</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span><span class="n">ellipsep</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">1</span><span class="p">])</span> 746 <span class="n">Ringp</span> <span class="o">=</span> <span class="n">makeRing</span><span class="p">(</span><span class="n">dsp</span><span class="p">,</span><span class="n">ellipsep</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="n">cutoff</span><span class="p">,</span><span class="n">scalex</span><span class="p">,</span><span class="n">scaley</span><span class="p">,</span><span class="bp">self</span><span class="o">.</span><span class="n">ImageZ</span><span class="p">)</span> 747 <span class="n">parmDict</span> <span class="o">=</span> <span class="p">{</span><span class="s">'dist'</span><span class="p">:</span><span class="n">dist</span><span class="p">,</span><span class="s">'det-X'</span><span class="p">:</span><span class="n">centp</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="s">'det-Y'</span><span class="p">:</span><span class="n">centp</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> 748 <span class="s">'tilt'</span><span class="p">:</span><span class="n">tilt</span><span class="p">,</span><span class="s">'phi'</span><span class="p">:</span><span class="n">phi</span><span class="p">,</span><span class="s">'wave'</span><span class="p">:</span><span class="n">wave</span><span class="p">,</span><span class="s">'dep'</span><span class="p">:</span><span class="mf">0.0</span><span class="p">}</span> 749 <span class="n">varyList</span> <span class="o">=</span> <span class="p">[</span><span class="n">item</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">varyDict</span> <span class="k">if</span> <span class="n">varyDict</span><span class="p">[</span><span class="n">item</span><span class="p">]]</span> 750 <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">Ringp</span><span class="p">)</span> <span class="o">></span> <span class="mi">10</span><span class="p">:</span> 751 <span class="n">chip</span> <span class="o">=</span> <span class="n">FitDetector</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">Ring0</span><span class="o">+</span><span class="n">Ringp</span><span class="p">),</span><span class="n">varyList</span><span class="p">,</span><span class="n">parmDict</span><span class="p">,</span><span class="bp">True</span><span class="p">)</span> 752 <span class="n">tiltp</span> <span class="o">=</span> <span class="n">parmDict</span><span class="p">[</span><span class="s">'tilt'</span><span class="p">]</span> 753 <span class="n">phip</span> <span class="o">=</span> <span class="n">parmDict</span><span class="p">[</span><span class="s">'phi'</span><span class="p">]</span> 754 <span class="n">centp</span> <span class="o">=</span> <span class="p">[</span><span class="n">parmDict</span><span class="p">[</span><span class="s">'det-X'</span><span class="p">],</span><span class="n">parmDict</span><span class="p">[</span><span class="s">'det-Y'</span><span class="p">]]</span> 755 <span class="n">fail</span> <span class="o">=</span> <span class="bp">False</span> 756 <span class="k">else</span><span class="p">:</span> 757 <span class="n">chip</span> <span class="o">=</span> <span class="mf">1e6</span> 758 <span class="n">ellipsem</span> <span class="o">=</span> <span class="n">GetEllipse2</span><span class="p">(</span><span class="n">tth</span><span class="p">,</span><span class="mf">0.</span><span class="p">,</span><span class="n">dist</span><span class="p">,</span><span class="n">centm</span><span class="p">,</span><span class="o">-</span><span class="n">tilt</span><span class="p">,</span><span class="n">phi</span><span class="p">)</span> 759 <span class="k">print</span> <span class="n">fmt</span><span class="o">%</span><span class="p">(</span><span class="s">'minus ellipse:'</span><span class="p">,</span><span class="n">ellipsem</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span><span class="n">ellipsem</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="n">ellipsem</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span><span class="n">ellipsem</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span><span class="n">ellipsem</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">1</span><span class="p">])</span> 760 <span class="n">Ringm</span> <span class="o">=</span> <span class="n">makeRing</span><span class="p">(</span><span class="n">dsp</span><span class="p">,</span><span class="n">ellipsem</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="n">cutoff</span><span class="p">,</span><span class="n">scalex</span><span class="p">,</span><span class="n">scaley</span><span class="p">,</span><span class="bp">self</span><span class="o">.</span><span class="n">ImageZ</span><span class="p">)</span> 761 <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">Ringm</span><span class="p">)</span> <span class="o">></span> <span class="mi">10</span><span class="p">:</span> 762 <span class="n">parmDict</span><span class="p">[</span><span class="s">'tilt'</span><span class="p">]</span> <span class="o">*=</span> <span class="o">-</span><span class="mi">1</span> 763 <span class="n">chim</span> <span class="o">=</span> <span class="n">FitDetector</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">Ring0</span><span class="o">+</span><span class="n">Ringm</span><span class="p">),</span><span class="n">varyList</span><span class="p">,</span><span class="n">parmDict</span><span class="p">,</span><span class="bp">True</span><span class="p">)</span> 764 <span class="n">tiltm</span> <span class="o">=</span> <span class="n">parmDict</span><span class="p">[</span><span class="s">'tilt'</span><span class="p">]</span> 765 <span class="n">phim</span> <span class="o">=</span> <span class="n">parmDict</span><span class="p">[</span><span class="s">'phi'</span><span class="p">]</span> 766 <span class="n">centm</span> <span class="o">=</span> <span class="p">[</span><span class="n">parmDict</span><span class="p">[</span><span class="s">'det-X'</span><span class="p">],</span><span class="n">parmDict</span><span class="p">[</span><span class="s">'det-Y'</span><span class="p">]]</span> 767 <span class="n">fail</span> <span class="o">=</span> <span class="bp">False</span> 768 <span class="k">else</span><span class="p">:</span> 769 <span class="n">chim</span> <span class="o">=</span> <span class="mf">1e6</span> 770 <span class="k">if</span> <span class="n">fail</span><span class="p">:</span> 771 <span class="n">i2</span> <span class="o">+=</span> <span class="mi">1</span> 772 <span class="k">if</span> <span class="n">chip</span> <span class="o"><</span> <span class="n">chim</span><span class="p">:</span> 773 <span class="n">data</span><span class="p">[</span><span class="s">'tilt'</span><span class="p">]</span> <span class="o">=</span> <span class="n">tiltp</span> 774 <span class="n">data</span><span class="p">[</span><span class="s">'center'</span><span class="p">]</span> <span class="o">=</span> <span class="n">centp</span> 775 <span class="n">data</span><span class="p">[</span><span class="s">'rotation'</span><span class="p">]</span> <span class="o">=</span> <span class="n">phip</span> 727 776 <span class="k">else</span><span class="p">:</span> 728 <span class="n">chip</span> <span class="o">=</span> <span class="mf">1e6</span> 729 <span class="n">ellipsem</span> <span class="o">=</span> <span class="n">GetEllipse2</span><span class="p">(</span><span class="n">tth</span><span class="p">,</span><span class="mf">0.</span><span class="p">,</span><span class="n">dist</span><span class="p">,</span><span class="n">centm</span><span class="p">,</span><span class="o">-</span><span class="n">tilt</span><span class="p">,</span><span class="n">phi</span><span class="p">)</span> 730 <span class="k">print</span> <span class="n">fmt</span><span class="o">%</span><span class="p">(</span><span class="s">'minus ellipse:'</span><span class="p">,</span><span class="n">ellipsem</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span><span class="n">ellipsem</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="n">ellipsem</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span><span class="n">ellipsem</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span><span class="n">ellipsem</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">1</span><span class="p">])</span> 731 <span class="n">Ringm</span> <span class="o">=</span> <span class="n">makeRing</span><span class="p">(</span><span class="n">dsp</span><span class="p">,</span><span class="n">ellipsem</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="n">cutoff</span><span class="p">,</span><span class="n">scalex</span><span class="p">,</span><span class="n">scaley</span><span class="p">,</span><span class="bp">self</span><span class="o">.</span><span class="n">ImageZ</span><span class="p">)</span> 732 <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">Ringm</span><span class="p">)</span> <span class="o">></span> <span class="mi">10</span><span class="p">:</span> 733 <span class="n">parmDict</span><span class="p">[</span><span class="s">'tilt'</span><span class="p">]</span> <span class="o">*=</span> <span class="o">-</span><span class="mi">1</span> 734 <span class="n">chim</span> <span class="o">=</span> <span class="n">FitDetector</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">Ring0</span><span class="o">+</span><span class="n">Ringm</span><span class="p">),</span><span class="n">varyList</span><span class="p">,</span><span class="n">parmDict</span><span class="p">,</span><span class="bp">True</span><span class="p">)</span> 735 <span class="n">tiltm</span> <span class="o">=</span> <span class="n">parmDict</span><span class="p">[</span><span class="s">'tilt'</span><span class="p">]</span> 736 <span class="n">phim</span> <span class="o">=</span> <span class="n">parmDict</span><span class="p">[</span><span class="s">'phi'</span><span class="p">]</span> 737 <span class="n">centm</span> <span class="o">=</span> <span class="p">[</span><span class="n">parmDict</span><span class="p">[</span><span class="s">'det-X'</span><span class="p">],</span><span class="n">parmDict</span><span class="p">[</span><span class="s">'det-Y'</span><span class="p">]]</span> 738 <span class="n">fail</span> <span class="o">=</span> <span class="bp">False</span> 739 <span class="k">else</span><span class="p">:</span> 740 <span class="n">chim</span> <span class="o">=</span> <span class="mf">1e6</span> 741 <span class="k">if</span> <span class="n">fail</span><span class="p">:</span> 742 <span class="n">i2</span> <span class="o">+=</span> <span class="mi">1</span> 743 <span class="k">if</span> <span class="n">chip</span> <span class="o"><</span> <span class="n">chim</span><span class="p">:</span> 744 <span class="n">data</span><span class="p">[</span><span class="s">'tilt'</span><span class="p">]</span> <span class="o">=</span> <span class="n">tiltp</span> 745 <span class="n">data</span><span class="p">[</span><span class="s">'center'</span><span class="p">]</span> <span class="o">=</span> <span class="n">centp</span> 746 <span class="n">data</span><span class="p">[</span><span class="s">'rotation'</span><span class="p">]</span> <span class="o">=</span> <span class="n">phip</span> 747 <span class="k">else</span><span class="p">:</span> 748 <span class="n">data</span><span class="p">[</span><span class="s">'tilt'</span><span class="p">]</span> <span class="o">=</span> <span class="n">tiltm</span> 749 <span class="n">data</span><span class="p">[</span><span class="s">'center'</span><span class="p">]</span> <span class="o">=</span> <span class="n">centm</span> 750 <span class="n">data</span><span class="p">[</span><span class="s">'rotation'</span><span class="p">]</span> <span class="o">=</span> <span class="n">phim</span> 751 <span class="n">data</span><span class="p">[</span><span class="s">'ellipses'</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">ellipsep</span><span class="p">[:]</span><span class="o">+</span><span class="p">(</span><span class="s">'b'</span><span class="p">,))</span> 752 <span class="n">data</span><span class="p">[</span><span class="s">'rings'</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">Ringp</span><span class="p">))</span> 753 <span class="n">data</span><span class="p">[</span><span class="s">'ellipses'</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">ellipsem</span><span class="p">[:]</span><span class="o">+</span><span class="p">(</span><span class="s">'r'</span><span class="p">,))</span> 754 <span class="n">data</span><span class="p">[</span><span class="s">'rings'</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">Ringm</span><span class="p">))</span> 755 <span class="n">G2plt</span><span class="o">.</span><span class="n">PlotImage</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">newImage</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> 777 <span class="n">data</span><span class="p">[</span><span class="s">'tilt'</span><span class="p">]</span> <span class="o">=</span> <span class="n">tiltm</span> 778 <span class="n">data</span><span class="p">[</span><span class="s">'center'</span><span class="p">]</span> <span class="o">=</span> <span class="n">centm</span> 779 <span class="n">data</span><span class="p">[</span><span class="s">'rotation'</span><span class="p">]</span> <span class="o">=</span> <span class="n">phim</span> 780 <span class="n">data</span><span class="p">[</span><span class="s">'ellipses'</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">ellipsep</span><span class="p">[:]</span><span class="o">+</span><span class="p">(</span><span class="s">'b'</span><span class="p">,))</span> 781 <span class="n">data</span><span class="p">[</span><span class="s">'rings'</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">Ringp</span><span class="p">))</span> 782 <span class="n">data</span><span class="p">[</span><span class="s">'ellipses'</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">ellipsem</span><span class="p">[:]</span><span class="o">+</span><span class="p">(</span><span class="s">'r'</span><span class="p">,))</span> 783 <span class="n">data</span><span class="p">[</span><span class="s">'rings'</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">Ringm</span><span class="p">))</span> 784 <span class="n">G2plt</span><span class="o">.</span><span class="n">PlotImage</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">newImage</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> 756 785 <span class="n">parmDict</span> <span class="o">=</span> <span class="p">{</span><span class="s">'dist'</span><span class="p">:</span><span class="n">data</span><span class="p">[</span><span class="s">'distance'</span><span class="p">],</span><span class="s">'det-X'</span><span class="p">:</span><span class="n">data</span><span class="p">[</span><span class="s">'center'</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span><span class="s">'det-Y'</span><span class="p">:</span><span class="n">data</span><span class="p">[</span><span class="s">'center'</span><span class="p">][</span><span class="mi">1</span><span class="p">],</span> 757 786 <span class="s">'tilt'</span><span class="p">:</span><span class="n">data</span><span class="p">[</span><span class="s">'tilt'</span><span class="p">],</span><span class="s">'phi'</span><span class="p">:</span><span class="n">data</span><span class="p">[</span><span class="s">'rotation'</span><span class="p">],</span><span class="s">'wave'</span><span class="p">:</span><span class="n">data</span><span class="p">[</span><span class="s">'wavelength'</span><span class="p">],</span><span class="s">'dep'</span><span class="p">:</span><span class="n">data</span><span class="p">[</span><span class="s">'DetDepth'</span><span class="p">]}</span> 758 <span class="n">varyList</span> <span class="o">=</span> <span class="p">[</span><span class="s">'dist'</span><span class="p">,</span><span class="s">'det-X'</span><span class="p">,</span><span class="s">'det-Y'</span><span class="p">,</span><span class="s">'tilt'</span><span class="p">,</span><span class="s">'phi'</span><span class="p">]</span> 759 <span class="k">if</span> <span class="n">data</span><span class="p">[</span><span class="s">'DetDepthRef'</span><span class="p">]:</span> 760 <span class="n">varyList</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">'dep'</span><span class="p">)</span> 787 <span class="n">varyList</span> <span class="o">=</span> <span class="p">[</span><span class="n">item</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">varyDict</span> <span class="k">if</span> <span class="n">varyDict</span><span class="p">[</span><span class="n">item</span><span class="p">]]</span> 761 788 <span class="n">data</span><span class="p">[</span><span class="s">'rings'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> 762 789 <span class="n">data</span><span class="p">[</span><span class="s">'ellipses'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> … … 767 794 <span class="k">print</span> <span class="s">'next line is a hyperbola - search stopped'</span> 768 795 <span class="k">break</span> 769 <span class="k"> print</span> <span class="s">'HKLD:'</span><span class="p">,</span><span class="n">H</span><span class="p">[:</span><span class="mi">4</span><span class="p">],</span><span class="s">'2-theta: </span><span class="si">%.4f</span><span class="s">'</span><span class="o">%</span><span class="p">(</span><span class="n">tth</span><span class="p">)</span>796 <span class="k">if</span> <span class="n">debug</span><span class="p">:</span> <span class="k">print</span> <span class="s">'HKLD:'</span><span class="p">,</span><span class="n">H</span><span class="p">[:</span><span class="mi">4</span><span class="p">],</span><span class="s">'2-theta: </span><span class="si">%.4f</span><span class="s">'</span><span class="o">%</span><span class="p">(</span><span class="n">tth</span><span class="p">)</span> 770 797 <span class="n">elcent</span><span class="p">,</span><span class="n">phi</span><span class="p">,</span><span class="n">radii</span> <span class="o">=</span> <span class="n">ellipse</span> <span class="o">=</span> <span class="n">GetEllipse</span><span class="p">(</span><span class="n">dsp</span><span class="p">,</span><span class="n">data</span><span class="p">)</span> 771 798 <span class="n">data</span><span class="p">[</span><span class="s">'ellipses'</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="n">ellipse</span><span class="o">+</span><span class="p">(</span><span class="s">'g'</span><span class="p">,)))</span> 772 <span class="k"> print</span> <span class="n">fmt</span><span class="o">%</span><span class="p">(</span><span class="s">'predicted ellipse:'</span><span class="p">,</span><span class="n">elcent</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="n">elcent</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span><span class="n">phi</span><span class="p">,</span><span class="n">radii</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="n">radii</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>799 <span class="k">if</span> <span class="n">debug</span><span class="p">:</span> <span class="k">print</span> <span class="n">fmt</span><span class="o">%</span><span class="p">(</span><span class="s">'predicted ellipse:'</span><span class="p">,</span><span class="n">elcent</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="n">elcent</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span><span class="n">phi</span><span class="p">,</span><span class="n">radii</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="n">radii</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> 773 800 <span class="n">Ring</span> <span class="o">=</span> <span class="n">makeRing</span><span class="p">(</span><span class="n">dsp</span><span class="p">,</span><span class="n">ellipse</span><span class="p">,</span><span class="n">pixLimit</span><span class="p">,</span><span class="n">cutoff</span><span class="p">,</span><span class="n">scalex</span><span class="p">,</span><span class="n">scaley</span><span class="p">,</span><span class="bp">self</span><span class="o">.</span><span class="n">ImageZ</span><span class="p">)</span> 774 801 <span class="k">if</span> <span class="n">Ring</span><span class="p">:</span> … … 784 811 <span class="n">data</span><span class="p">[</span><span class="s">'chisq'</span><span class="p">]</span> <span class="o">=</span> <span class="n">chisq</span> 785 812 <span class="n">elcent</span><span class="p">,</span><span class="n">phi</span><span class="p">,</span><span class="n">radii</span> <span class="o">=</span> <span class="n">ellipse</span> <span class="o">=</span> <span class="n">GetEllipse</span><span class="p">(</span><span class="n">dsp</span><span class="p">,</span><span class="n">data</span><span class="p">)</span> 786 <span class="k"> print</span> <span class="n">fmt2</span><span class="o">%</span><span class="p">(</span><span class="s">'fitted ellipse: '</span><span class="p">,</span><span class="n">elcent</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="n">elcent</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span><span class="n">phi</span><span class="p">,</span><span class="n">radii</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="n">radii</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span><span class="n">chisq</span><span class="p">,</span><span class="nb">len</span><span class="p">(</span><span class="n">rings</span><span class="p">))</span>813 <span class="k">if</span> <span class="n">debug</span><span class="p">:</span> <span class="k">print</span> <span class="n">fmt2</span><span class="o">%</span><span class="p">(</span><span class="s">'fitted ellipse: '</span><span class="p">,</span><span class="n">elcent</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="n">elcent</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span><span class="n">phi</span><span class="p">,</span><span class="n">radii</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="n">radii</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span><span class="n">chisq</span><span class="p">,</span><span class="nb">len</span><span class="p">(</span><span class="n">rings</span><span class="p">))</span> 787 814 <span class="n">data</span><span class="p">[</span><span class="s">'ellipses'</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="n">ellipse</span><span class="o">+</span><span class="p">(</span><span class="s">'r'</span><span class="p">,)))</span> 788 815 <span class="c"># G2plt.PlotImage(self,newImage=True)</span> 789 816 <span class="k">else</span><span class="p">:</span> 790 <span class="k"> print</span> <span class="s">'insufficient number of points in this ellipse to fit'</span>817 <span class="k">if</span> <span class="n">debug</span><span class="p">:</span> <span class="k">print</span> <span class="s">'insufficient number of points in this ellipse to fit'</span> 791 818 <span class="c"># break</span> 792 819 <span class="n">G2plt</span><span class="o">.</span><span class="n">PlotImage</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">newImage</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> … … 797 824 <span class="k">if</span> <span class="n">N</span> <span class="o">></span> <span class="mi">2</span><span class="p">:</span> 798 825 <span class="n">FitDetector</span><span class="p">(</span><span class="n">rings</span><span class="p">,</span><span class="n">varyList</span><span class="p">,</span><span class="n">parmDict</span><span class="p">)</span> 826 <span class="n">data</span><span class="p">[</span><span class="s">'wavelength'</span><span class="p">]</span> <span class="o">=</span> <span class="n">parmDict</span><span class="p">[</span><span class="s">'wave'</span><span class="p">]</span> 799 827 <span class="n">data</span><span class="p">[</span><span class="s">'distance'</span><span class="p">]</span> <span class="o">=</span> <span class="n">parmDict</span><span class="p">[</span><span class="s">'dist'</span><span class="p">]</span> 800 828 <span class="n">data</span><span class="p">[</span><span class="s">'center'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">parmDict</span><span class="p">[</span><span class="s">'det-X'</span><span class="p">],</span><span class="n">parmDict</span><span class="p">[</span><span class="s">'det-Y'</span><span class="p">]]</span>
Note: See TracChangeset
for help on using the changeset viewer.