Ignore:
Timestamp:
Mar 14, 2015 5:35:03 PM (8 years ago)
Author:
toby
Message:

change sphinx docs links; rebuild & fixing minor formatting

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sphinxdocs/build/html/_modules/GSASIIimage.html

    r1513 r1709  
    5252<span class="c">#GSASII image calculations: ellipse fitting &amp; image integration        </span>
    5353<span class="c">########### SVN repository information ###################</span>
    54 <span class="c"># $Date: 2014-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>
    5555<span class="c"># $Author: vondreele $</span>
    56 <span class="c"># $Revision: 1489 $</span>
     56<span class="c"># $Revision: 1694 $</span>
    5757<span class="c"># $URL: https://subversion.xray.aps.anl.gov/pyGSAS/trunk/GSASIIimage.py $</span>
    58 <span class="c"># $Id: GSASIIimage.py 1489 2014-09-07 18:37:26Z vondreele $</span>
     58<span class="c"># $Id: GSASIIimage.py 1694 2015-03-10 16:35:24Z vondreele $</span>
    5959<span class="c">########### SVN repository information ###################</span>
    6060<span class="sd">&#39;&#39;&#39;</span>
     
    7575<span class="kn">import</span> <span class="nn">copy</span>
    7676<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">&quot;$Revision: 1489 $&quot;</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">&quot;$Revision: 1694 $&quot;</span><span class="p">)</span>
    7878<span class="kn">import</span> <span class="nn">GSASIIplot</span> <span class="kn">as</span> <span class="nn">G2plt</span>
    7979<span class="kn">import</span> <span class="nn">GSASIIlattice</span> <span class="kn">as</span> <span class="nn">G2lat</span>
     
    9999<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>
    100100<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>
    101102   
    102103<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>
     
    189190        <span class="n">ptstr</span> <span class="o">=</span>  <span class="s">&#39;values:&#39;</span>
    190191        <span class="n">sigstr</span> <span class="o">=</span> <span class="s">&#39;esds  :&#39;</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>
    192193            <span class="n">ptlbls</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s">&quot;</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>
    193194            <span class="k">if</span> <span class="n">name</span> <span class="o">==</span> <span class="s">&#39;phi&#39;</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>
    195196            <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>
    197198            <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>
    199200            <span class="k">else</span><span class="p">:</span>
    200201                <span class="n">sigstr</span> <span class="o">+=</span> <span class="mi">12</span><span class="o">*</span><span class="s">&#39; &#39;</span>
     
    204205       
    205206    <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       
    206208        <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">&#39;wave&#39;</span><span class="p">]</span>
    208         <span class="k">if</span> <span class="s">&#39;dep&#39;</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">&#39;dep&#39;</span><span class="p">]</span>
    213         <span class="k">if</span> <span class="s">&#39;wave&#39;</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">&#39;phi&#39;</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">&#39;wave&#39;</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">&#39;det-Y&#39;</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">&#39;det-X&#39;</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">&#39;dep&#39;</span><span class="p">],</span><span class="n">parms</span><span class="p">[</span><span class="s">&#39;tilt&#39;</span><span class="p">],</span><span class="n">phi0</span><span class="p">)</span>
    219220        <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>
    220221        <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">&#39;tilt&#39;</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">&#39;tilt&#39;</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">&#39;tilt&#39;</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">&#39;tilt&#39;</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">&#39;tilt&#39;</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">&#39;dist&#39;</span><span class="p">]</span><span class="o">+</span><span class="n">dxy</span>
    227228        <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>
    228229        <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>
     
    232233        <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>
    233234        <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">&#39;det-X&#39;</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">&#39;det-Y&#39;</span><span class="p">])</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span>
    235236        <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>
    236237        <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>
     
    243244       
    244245    <span class="n">names</span> <span class="o">=</span> <span class="p">[</span><span class="s">&#39;dist&#39;</span><span class="p">,</span><span class="s">&#39;det-X&#39;</span><span class="p">,</span><span class="s">&#39;det-Y&#39;</span><span class="p">,</span><span class="s">&#39;tilt&#39;</span><span class="p">,</span><span class="s">&#39;phi&#39;</span><span class="p">,</span><span class="s">&#39;dep&#39;</span><span class="p">,</span><span class="s">&#39;wave&#39;</span><span class="p">]</span>
    245     <span class="n">fmt</span> <span class="o">=</span> <span class="p">[</span><span class="s">&#39;</span><span class="si">%12.3f</span><span class="s">&#39;</span><span class="p">,</span><span class="s">&#39;</span><span class="si">%12.3f</span><span class="s">&#39;</span><span class="p">,</span><span class="s">&#39;</span><span class="si">%12.3f</span><span class="s">&#39;</span><span class="p">,</span><span class="s">&#39;</span><span class="si">%12.3f</span><span class="s">&#39;</span><span class="p">,</span><span class="s">&#39;</span><span class="si">%12.3f</span><span class="s">&#39;</span><span class="p">,</span><span class="s">&#39;</span><span class="si">%12.3f</span><span class="s">&#39;</span><span class="p">,</span><span class="s">&#39;</span><span class="si">%12.5f</span><span class="s">&#39;</span><span class="p">]</span>
     246    <span class="n">fmt</span> <span class="o">=</span> <span class="p">[</span><span class="s">&#39;</span><span class="si">%12.3f</span><span class="s">&#39;</span><span class="p">,</span><span class="s">&#39;</span><span class="si">%12.3f</span><span class="s">&#39;</span><span class="p">,</span><span class="s">&#39;</span><span class="si">%12.3f</span><span class="s">&#39;</span><span class="p">,</span><span class="s">&#39;</span><span class="si">%12.3f</span><span class="s">&#39;</span><span class="p">,</span><span class="s">&#39;</span><span class="si">%12.3f</span><span class="s">&#39;</span><span class="p">,</span><span class="s">&#39;</span><span class="si">%12.2f</span><span class="s">&#39;</span><span class="p">,</span><span class="s">&#39;</span><span class="si">%12.6f</span><span class="s">&#39;</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>
    246248    <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>
    247249    <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>
     
    251253    <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>
    252254    <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>
    257258    <span class="k">if</span> <span class="n">Print</span><span class="p">:</span>
    258259        <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>
     
    476477    <span class="s">&#39;Give azimuth value for detector x,y position; calibration info in data&#39;</span>
    477478    <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       
    479492<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>
    480493    <span class="s">&#39;Needs a doc string&#39;</span>
     
    567580            <span class="n">HKL</span> <span class="o">+=</span> <span class="n">hkl</span>
    568581    <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">&#39;dist&#39;</span><span class="p">,</span><span class="s">&#39;det-X&#39;</span><span class="p">,</span><span class="s">&#39;det-Y&#39;</span><span class="p">,</span><span class="s">&#39;tilt&#39;</span><span class="p">,</span><span class="s">&#39;phi&#39;</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">&#39;varyList&#39;</span><span class="p">]</span> <span class="k">if</span> <span class="n">data</span><span class="p">[</span><span class="s">&#39;varyList&#39;</span><span class="p">][</span><span class="n">item</span><span class="p">]]</span>
    570583    <span class="n">parmDict</span> <span class="o">=</span> <span class="p">{</span><span class="s">&#39;dist&#39;</span><span class="p">:</span><span class="n">data</span><span class="p">[</span><span class="s">&#39;distance&#39;</span><span class="p">],</span><span class="s">&#39;det-X&#39;</span><span class="p">:</span><span class="n">data</span><span class="p">[</span><span class="s">&#39;center&#39;</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span><span class="s">&#39;det-Y&#39;</span><span class="p">:</span><span class="n">data</span><span class="p">[</span><span class="s">&#39;center&#39;</span><span class="p">][</span><span class="mi">1</span><span class="p">],</span>
    571584        <span class="s">&#39;tilt&#39;</span><span class="p">:</span><span class="n">data</span><span class="p">[</span><span class="s">&#39;tilt&#39;</span><span class="p">],</span><span class="s">&#39;phi&#39;</span><span class="p">:</span><span class="n">data</span><span class="p">[</span><span class="s">&#39;rotation&#39;</span><span class="p">],</span><span class="s">&#39;wave&#39;</span><span class="p">:</span><span class="n">data</span><span class="p">[</span><span class="s">&#39;wavelength&#39;</span><span class="p">],</span><span class="s">&#39;dep&#39;</span><span class="p">:</span><span class="n">data</span><span class="p">[</span><span class="s">&#39;DetDepth&#39;</span><span class="p">]}</span>
     
    577590        <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>
    578591    <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>
    580593        <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>
    581594        <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>
     
    597610<span class="c">#            break</span>
    598611    <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">&#39;rings&#39;</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">&#39;DetDepthRef&#39;</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">&#39;dep&#39;</span><span class="p">)</span>
    601612    <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">&#39;wavelength&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">parmDict</span><span class="p">[</span><span class="s">&#39;wave&#39;</span><span class="p">]</span>
    602614    <span class="n">data</span><span class="p">[</span><span class="s">&#39;distance&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">parmDict</span><span class="p">[</span><span class="s">&#39;dist&#39;</span><span class="p">]</span>
    603615    <span class="n">data</span><span class="p">[</span><span class="s">&#39;center&#39;</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">&#39;det-X&#39;</span><span class="p">],</span><span class="n">parmDict</span><span class="p">[</span><span class="s">&#39;det-Y&#39;</span><span class="p">]]</span>
     
    610622    <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>
    611623        <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">&#39;ellipses&#39;</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">&#39;b&#39;</span><span class="p">,)))</span>
    613    
     624        <span class="n">data</span><span class="p">[</span><span class="s">&#39;ellipses&#39;</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">&#39;b&#39;</span><span class="p">,)))</span>   
    614625    <span class="k">print</span> <span class="s">&#39;calibration time = &#39;</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>
    615626    <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>       
     
    628639    <span class="n">pixLimit</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="s">&#39;pixLimit&#39;</span><span class="p">]</span>
    629640    <span class="n">cutoff</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="s">&#39;cutoff&#39;</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">&#39;varyList&#39;</span><span class="p">]</span>
     642    <span class="k">if</span> <span class="n">varyDict</span><span class="p">[</span><span class="s">&#39;dist&#39;</span><span class="p">]</span> <span class="ow">and</span> <span class="n">varyDict</span><span class="p">[</span><span class="s">&#39;wave&#39;</span><span class="p">]:</span>
     643        <span class="k">print</span> <span class="s">&#39;ERROR - you can not simultaneously calibrate distance and wavelength&#39;</span>
     644        <span class="k">return</span> <span class="bp">False</span>
    630645    <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">&lt;</span> <span class="mi">5</span><span class="p">:</span>
    631         <span class="k">print</span> <span class="s">&#39;not enough inner ring points for ellipse&#39;</span>
     646        <span class="k">print</span> <span class="s">&#39;ERROR - not enough inner ring points for ellipse&#39;</span>
    632647        <span class="k">return</span> <span class="bp">False</span>
    633648       
     
    654669        <span class="k">print</span> <span class="s">&#39;1st ring not sufficiently complete to proceed&#39;</span>
    655670        <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">&#39;inner ring:    &#39;</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">&#39;inner ring:    &#39;</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>
    657674    <span class="n">data</span><span class="p">[</span><span class="s">&#39;ellipses&#39;</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">&#39;r&#39;</span><span class="p">,))</span>
    658675    <span class="n">data</span><span class="p">[</span><span class="s">&#39;rings&#39;</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>
     
    680697            <span class="n">HKL</span> <span class="o">+=</span> <span class="n">hkl</span>
    681698    <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">&#39;wavelength&#39;</span><span class="p">]</span>
    683699<span class="c">#set up 1st ring</span>
    684700    <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>
    685701    <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>
    686702    <span class="k">print</span> <span class="s">&#39;1st ring: try </span><span class="si">%.4f</span><span class="s">&#39;</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">&#39;dist&#39;</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">&#39;wavelength&#39;</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[&#39;wave&#39;]!</span>
     707        <span class="n">dist</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="s">&#39;distance&#39;</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">&#39;wavelength&#39;</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>
    688710    <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>
    689711    <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>
     
    691713    <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>
    692714<span class="c">#1st estimate of tilt; assume ellipse - don&#39;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">&#39;WARNING - selected ring was fitted as a circle&#39;</span>
    696         <span class="k">print</span> <span class="s">&#39; - if detector was tilted we suggest you skip this ring - WARNING&#39;</span>
     715    <span class="k">if</span> <span class="n">varyDict</span><span class="p">[</span><span class="s">&#39;tilt&#39;</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">&#39;WARNING - selected ring was fitted as a circle&#39;</span>
     719            <span class="k">print</span> <span class="s">&#39; - if detector was tilted we suggest you skip this ring - WARNING&#39;</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">&#39;tilt&#39;</span><span class="p">]</span>
    697722<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">&#39;distance&#39;</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">&#39;dist&#39;</span><span class="p">]:</span>
     724        <span class="n">data</span><span class="p">[</span><span class="s">&#39;distance&#39;</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">&#39;distance&#39;</span><span class="p">]</span>
     727    <span class="k">if</span> <span class="n">varyDict</span><span class="p">[</span><span class="s">&#39;tilt&#39;</span><span class="p">]:</span>
    699728<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>
    702731<span class="c">#cone axis position; 2 choices. Which is right?     </span>
    703732<span class="c">#NB: zdisp is || to major axis &amp; phi is rotation of minor axis</span>
    704733<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>
    707736<span class="c">#check get same ellipse parms either way</span>
    708737<span class="c">#now do next ring; estimate either way &amp; 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">&#39;2nd ring: try </span><span class="si">%.4f</span><span class="s">&#39;</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">&#39;plus ellipse :&#39;</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">&#39;dist&#39;</span><span class="p">:</span><span class="n">dist</span><span class="p">,</span><span class="s">&#39;det-X&#39;</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">&#39;det-Y&#39;</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">&#39;tilt&#39;</span><span class="p">:</span><span class="n">tilt</span><span class="p">,</span><span class="s">&#39;phi&#39;</span><span class="p">:</span><span class="n">phi</span><span class="p">,</span><span class="s">&#39;wave&#39;</span><span class="p">:</span><span class="n">wave</span><span class="p">,</span><span class="s">&#39;dep&#39;</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">&#39;dist&#39;</span><span class="p">,</span><span class="s">&#39;det-X&#39;</span><span class="p">,</span><span class="s">&#39;det-Y&#39;</span><span class="p">,</span><span class="s">&#39;tilt&#39;</span><span class="p">,</span><span class="s">&#39;phi&#39;</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">&gt;</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">&#39;tilt&#39;</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">&#39;phi&#39;</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">&#39;det-X&#39;</span><span class="p">],</span><span class="n">parmDict</span><span class="p">[</span><span class="s">&#39;det-Y&#39;</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">&#39;2nd ring: try </span><span class="si">%.4f</span><span class="s">&#39;</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">&#39;plus ellipse :&#39;</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">&#39;dist&#39;</span><span class="p">:</span><span class="n">dist</span><span class="p">,</span><span class="s">&#39;det-X&#39;</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">&#39;det-Y&#39;</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">&#39;tilt&#39;</span><span class="p">:</span><span class="n">tilt</span><span class="p">,</span><span class="s">&#39;phi&#39;</span><span class="p">:</span><span class="n">phi</span><span class="p">,</span><span class="s">&#39;wave&#39;</span><span class="p">:</span><span class="n">wave</span><span class="p">,</span><span class="s">&#39;dep&#39;</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">&gt;</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">&#39;tilt&#39;</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">&#39;phi&#39;</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">&#39;det-X&#39;</span><span class="p">],</span><span class="n">parmDict</span><span class="p">[</span><span class="s">&#39;det-Y&#39;</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">&#39;minus ellipse:&#39;</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">&gt;</span> <span class="mi">10</span><span class="p">:</span>
     762                <span class="n">parmDict</span><span class="p">[</span><span class="s">&#39;tilt&#39;</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">&#39;tilt&#39;</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">&#39;phi&#39;</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">&#39;det-X&#39;</span><span class="p">],</span><span class="n">parmDict</span><span class="p">[</span><span class="s">&#39;det-Y&#39;</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">&lt;</span> <span class="n">chim</span><span class="p">:</span>
     773            <span class="n">data</span><span class="p">[</span><span class="s">&#39;tilt&#39;</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">&#39;center&#39;</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">&#39;rotation&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">phip</span>
    727776        <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">&#39;minus ellipse:&#39;</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">&gt;</span> <span class="mi">10</span><span class="p">:</span>
    733             <span class="n">parmDict</span><span class="p">[</span><span class="s">&#39;tilt&#39;</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">&#39;tilt&#39;</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">&#39;phi&#39;</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">&#39;det-X&#39;</span><span class="p">],</span><span class="n">parmDict</span><span class="p">[</span><span class="s">&#39;det-Y&#39;</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">&lt;</span> <span class="n">chim</span><span class="p">:</span>
    744         <span class="n">data</span><span class="p">[</span><span class="s">&#39;tilt&#39;</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">&#39;center&#39;</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">&#39;rotation&#39;</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">&#39;tilt&#39;</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">&#39;center&#39;</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">&#39;rotation&#39;</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">&#39;ellipses&#39;</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">&#39;b&#39;</span><span class="p">,))</span>
    752     <span class="n">data</span><span class="p">[</span><span class="s">&#39;rings&#39;</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">&#39;ellipses&#39;</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">&#39;r&#39;</span><span class="p">,))</span>
    754     <span class="n">data</span><span class="p">[</span><span class="s">&#39;rings&#39;</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">&#39;tilt&#39;</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">&#39;center&#39;</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">&#39;rotation&#39;</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">&#39;ellipses&#39;</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">&#39;b&#39;</span><span class="p">,))</span>
     781        <span class="n">data</span><span class="p">[</span><span class="s">&#39;rings&#39;</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">&#39;ellipses&#39;</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">&#39;r&#39;</span><span class="p">,))</span>
     783        <span class="n">data</span><span class="p">[</span><span class="s">&#39;rings&#39;</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>
    756785    <span class="n">parmDict</span> <span class="o">=</span> <span class="p">{</span><span class="s">&#39;dist&#39;</span><span class="p">:</span><span class="n">data</span><span class="p">[</span><span class="s">&#39;distance&#39;</span><span class="p">],</span><span class="s">&#39;det-X&#39;</span><span class="p">:</span><span class="n">data</span><span class="p">[</span><span class="s">&#39;center&#39;</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span><span class="s">&#39;det-Y&#39;</span><span class="p">:</span><span class="n">data</span><span class="p">[</span><span class="s">&#39;center&#39;</span><span class="p">][</span><span class="mi">1</span><span class="p">],</span>
    757786        <span class="s">&#39;tilt&#39;</span><span class="p">:</span><span class="n">data</span><span class="p">[</span><span class="s">&#39;tilt&#39;</span><span class="p">],</span><span class="s">&#39;phi&#39;</span><span class="p">:</span><span class="n">data</span><span class="p">[</span><span class="s">&#39;rotation&#39;</span><span class="p">],</span><span class="s">&#39;wave&#39;</span><span class="p">:</span><span class="n">data</span><span class="p">[</span><span class="s">&#39;wavelength&#39;</span><span class="p">],</span><span class="s">&#39;dep&#39;</span><span class="p">:</span><span class="n">data</span><span class="p">[</span><span class="s">&#39;DetDepth&#39;</span><span class="p">]}</span>
    758     <span class="n">varyList</span> <span class="o">=</span> <span class="p">[</span><span class="s">&#39;dist&#39;</span><span class="p">,</span><span class="s">&#39;det-X&#39;</span><span class="p">,</span><span class="s">&#39;det-Y&#39;</span><span class="p">,</span><span class="s">&#39;tilt&#39;</span><span class="p">,</span><span class="s">&#39;phi&#39;</span><span class="p">]</span>
    759     <span class="k">if</span> <span class="n">data</span><span class="p">[</span><span class="s">&#39;DetDepthRef&#39;</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">&#39;dep&#39;</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>
    761788    <span class="n">data</span><span class="p">[</span><span class="s">&#39;rings&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span>
    762789    <span class="n">data</span><span class="p">[</span><span class="s">&#39;ellipses&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span>
     
    767794            <span class="k">print</span> <span class="s">&#39;next line is a hyperbola - search stopped&#39;</span>
    768795            <span class="k">break</span>
    769         <span class="k">print</span> <span class="s">&#39;HKLD:&#39;</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">&#39;2-theta: </span><span class="si">%.4f</span><span class="s">&#39;</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">&#39;HKLD:&#39;</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">&#39;2-theta: </span><span class="si">%.4f</span><span class="s">&#39;</span><span class="o">%</span><span class="p">(</span><span class="n">tth</span><span class="p">)</span>
    770797        <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>
    771798        <span class="n">data</span><span class="p">[</span><span class="s">&#39;ellipses&#39;</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">&#39;g&#39;</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">&#39;predicted ellipse:&#39;</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">&#39;predicted ellipse:&#39;</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>
    773800        <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>
    774801        <span class="k">if</span> <span class="n">Ring</span><span class="p">:</span>
     
    784811                <span class="n">data</span><span class="p">[</span><span class="s">&#39;chisq&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">chisq</span>
    785812                <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">&#39;fitted ellipse:   &#39;</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">&#39;fitted ellipse:   &#39;</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>
    787814            <span class="n">data</span><span class="p">[</span><span class="s">&#39;ellipses&#39;</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">&#39;r&#39;</span><span class="p">,)))</span>
    788815<span class="c">#            G2plt.PlotImage(self,newImage=True)</span>
    789816        <span class="k">else</span><span class="p">:</span>
    790             <span class="k">print</span> <span class="s">&#39;insufficient number of points in this ellipse to fit&#39;</span>
     817            <span class="k">if</span> <span class="n">debug</span><span class="p">:</span>   <span class="k">print</span> <span class="s">&#39;insufficient number of points in this ellipse to fit&#39;</span>
    791818<span class="c">#            break</span>
    792819    <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>
     
    797824    <span class="k">if</span> <span class="n">N</span> <span class="o">&gt;</span> <span class="mi">2</span><span class="p">:</span>
    798825        <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">&#39;wavelength&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">parmDict</span><span class="p">[</span><span class="s">&#39;wave&#39;</span><span class="p">]</span>
    799827        <span class="n">data</span><span class="p">[</span><span class="s">&#39;distance&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">parmDict</span><span class="p">[</span><span class="s">&#39;dist&#39;</span><span class="p">]</span>
    800828        <span class="n">data</span><span class="p">[</span><span class="s">&#39;center&#39;</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">&#39;det-X&#39;</span><span class="p">],</span><span class="n">parmDict</span><span class="p">[</span><span class="s">&#39;det-Y&#39;</span><span class="p">]]</span>
Note: See TracChangeset for help on using the changeset viewer.