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/GSASIImath.html

    r1513 r1709  
    5252<span class="c">#GSASIImath - major mathematics routines</span>
    5353<span class="c">########### SVN repository information ###################</span>
    54 <span class="c"># $Date: 2014-09-26 09:41:33 -0500 (Fri, 26 Sep 2014) $</span>
     54<span class="c"># $Date: 2015-02-28 18:24:48 -0600 (Sat, 28 Feb 2015) $</span>
    5555<span class="c"># $Author: vondreele $</span>
    56 <span class="c"># $Revision: 1506 $</span>
     56<span class="c"># $Revision: 1683 $</span>
    5757<span class="c"># $URL: https://subversion.xray.aps.anl.gov/pyGSAS/trunk/GSASIImath.py $</span>
    58 <span class="c"># $Id: GSASIImath.py 1506 2014-09-26 14:41:33Z vondreele $</span>
     58<span class="c"># $Id: GSASIImath.py 1683 2015-03-01 00:24:48Z vondreele $</span>
    5959<span class="c">########### SVN repository information ###################</span>
    6060<span class="sd">&#39;&#39;&#39;</span>
     
    7777<span class="kn">import</span> <span class="nn">copy</span>
    7878<span class="kn">import</span> <span class="nn">GSASIIpath</span>
    79 <span class="n">GSASIIpath</span><span class="o">.</span><span class="n">SetVersionNumber</span><span class="p">(</span><span class="s">&quot;$Revision: 1506 $&quot;</span><span class="p">)</span>
     79<span class="n">GSASIIpath</span><span class="o">.</span><span class="n">SetVersionNumber</span><span class="p">(</span><span class="s">&quot;$Revision: 1683 $&quot;</span><span class="p">)</span>
    8080<span class="kn">import</span> <span class="nn">GSASIIElem</span> <span class="kn">as</span> <span class="nn">G2el</span>
    8181<span class="kn">import</span> <span class="nn">GSASIIlattice</span> <span class="kn">as</span> <span class="nn">G2lat</span>
     
    9292<span class="n">atand</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>
    9393<span class="n">atan2d</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>
     94<span class="n">twopi</span> <span class="o">=</span> <span class="mf">2.0</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">pi</span>
     95<span class="n">twopisq</span> <span class="o">=</span> <span class="mf">2.0</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">pi</span><span class="o">**</span><span class="mi">2</span>
     96   
     97<span class="c">################################################################################</span>
     98<span class="c">##### Hessian least-squares Levenberg-Marquardt routine</span>
     99<span class="c">################################################################################</span>
    94100
    95101<div class="viewcode-block" id="HessianLSQ"><a class="viewcode-back" href="../GSASIImath.html#GSASIImath.HessianLSQ">[docs]</a><span class="k">def</span> <span class="nf">HessianLSQ</span><span class="p">(</span><span class="n">func</span><span class="p">,</span><span class="n">x0</span><span class="p">,</span><span class="n">Hess</span><span class="p">,</span><span class="n">args</span><span class="o">=</span><span class="p">(),</span><span class="n">ftol</span><span class="o">=</span><span class="mf">1.49012e-8</span><span class="p">,</span><span class="n">xtol</span><span class="o">=</span><span class="mf">1.49012e-8</span><span class="p">,</span> <span class="n">maxcyc</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">Print</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
     
    195201        <span class="n">deltaChi2</span> <span class="o">=</span> <span class="p">(</span><span class="n">chisq0</span><span class="o">-</span><span class="n">chisq1</span><span class="p">)</span><span class="o">/</span><span class="n">chisq0</span>
    196202        <span class="k">if</span> <span class="n">Print</span><span class="p">:</span>
    197             <span class="k">print</span> <span class="s">&#39; Cycle: </span><span class="si">%d</span><span class="s">, Time: </span><span class="si">%.2f</span><span class="s">s, Chi**2: </span><span class="si">%.3g</span><span class="s">, Lambda: </span><span class="si">%.3g</span><span class="s">,  Delta: </span><span class="si">%.3g</span><span class="s">&#39;</span><span class="o">%</span><span class="p">(</span>
     203            <span class="k">print</span> <span class="s">&#39; Cycle: </span><span class="si">%d</span><span class="s">, Time: </span><span class="si">%.2f</span><span class="s">s, Chi**2: </span><span class="si">%.5g</span><span class="s">, Lambda: </span><span class="si">%.3g</span><span class="s">,  Delta: </span><span class="si">%.3g</span><span class="s">&#39;</span><span class="o">%</span><span class="p">(</span>
    198204                <span class="n">icycle</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><span class="p">,</span><span class="n">chisq1</span><span class="p">,</span><span class="n">lam</span><span class="p">,</span><span class="n">deltaChi2</span><span class="p">)</span>
    199205        <span class="k">if</span> <span class="n">deltaChi2</span> <span class="o">&lt;</span> <span class="n">ftol</span><span class="p">:</span>
     
    238244                <span class="n">vcov</span><span class="p">[</span><span class="n">i1</span><span class="p">][</span><span class="n">i2</span><span class="p">]</span> <span class="o">=</span> <span class="n">covMatrix</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">name1</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">name2</span><span class="p">)]</span>
    239245            <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
    240                 <span class="k">if</span> <span class="n">i1</span> <span class="o">==</span> <span class="n">i2</span><span class="p">:</span>
    241                     <span class="n">vcov</span><span class="p">[</span><span class="n">i1</span><span class="p">][</span><span class="n">i2</span><span class="p">]</span> <span class="o">=</span> <span class="mf">1.0</span>
    242                 <span class="k">else</span><span class="p">:</span>
    243                     <span class="n">vcov</span><span class="p">[</span><span class="n">i1</span><span class="p">][</span><span class="n">i2</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.0</span>
     246                <span class="n">vcov</span><span class="p">[</span><span class="n">i1</span><span class="p">][</span><span class="n">i2</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.0</span>
     247<span class="c">#                if i1 == i2:</span>
     248<span class="c">#                    vcov[i1][i2] = 1e-20</span>
     249<span class="c">#                else: </span>
     250<span class="c">#                    vcov[i1][i2] = 0.0</span>
    244251    <span class="k">return</span> <span class="n">vcov</span>
     252   
     253<span class="c">################################################################################</span>
     254<span class="c">##### Atom manipulations</span>
     255<span class="c">################################################################################</span>
    245256</div>
     257<span class="k">def</span> <span class="nf">FindMolecule</span><span class="p">(</span><span class="n">ind</span><span class="p">,</span><span class="n">generalData</span><span class="p">,</span><span class="n">atomData</span><span class="p">):</span>                    <span class="c">#uses numpy &amp; masks - very fast even for proteins!</span>
     258
     259    <span class="k">def</span> <span class="nf">getNeighbors</span><span class="p">(</span><span class="n">atom</span><span class="p">,</span><span class="n">radius</span><span class="p">):</span>
     260        <span class="n">neighList</span> <span class="o">=</span> <span class="p">[]</span> 
     261        <span class="n">Dx</span> <span class="o">=</span> <span class="n">UAtoms</span><span class="o">-</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">atom</span><span class="p">[</span><span class="n">cx</span><span class="p">:</span><span class="n">cx</span><span class="o">+</span><span class="mi">3</span><span class="p">])</span>
     262        <span class="n">dist</span> <span class="o">=</span> <span class="n">ma</span><span class="o">.</span><span class="n">masked_less</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">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">Amat</span><span class="p">,</span><span class="n">Dx</span><span class="p">)</span><span class="o">**</span><span class="mi">2</span><span class="p">,</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)),</span><span class="mf">0.5</span><span class="p">)</span> <span class="c">#gets rid of disorder &quot;bonds&quot; &lt; 0.5A</span>
     263        <span class="n">sumR</span> <span class="o">=</span> <span class="n">Radii</span><span class="o">+</span><span class="n">radius</span>
     264        <span class="k">return</span> <span class="nb">set</span><span class="p">(</span><span class="n">ma</span><span class="o">.</span><span class="n">nonzero</span><span class="p">(</span><span class="n">ma</span><span class="o">.</span><span class="n">masked_greater</span><span class="p">(</span><span class="n">dist</span><span class="o">-</span><span class="n">factor</span><span class="o">*</span><span class="n">sumR</span><span class="p">,</span><span class="mf">0.</span><span class="p">))[</span><span class="mi">0</span><span class="p">])</span>                <span class="c">#get indices of bonded atoms</span>
     265
     266    <span class="kn">import</span> <span class="nn">numpy.ma</span> <span class="kn">as</span> <span class="nn">ma</span>
     267    <span class="n">indices</span> <span class="o">=</span> <span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
     268    <span class="n">Units</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([[</span><span class="n">h</span><span class="p">,</span><span class="n">k</span><span class="p">,</span><span class="n">l</span><span class="p">]</span> <span class="k">for</span> <span class="n">h</span> <span class="ow">in</span> <span class="n">indices</span> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">indices</span> <span class="k">for</span> <span class="n">l</span> <span class="ow">in</span> <span class="n">indices</span><span class="p">],</span><span class="n">dtype</span><span class="o">=</span><span class="s">&#39;f&#39;</span><span class="p">)</span>
     269    <span class="n">cx</span><span class="p">,</span><span class="n">ct</span><span class="p">,</span><span class="n">cs</span><span class="p">,</span><span class="n">ci</span> <span class="o">=</span> <span class="n">generalData</span><span class="p">[</span><span class="s">&#39;AtomPtrs&#39;</span><span class="p">]</span>
     270    <span class="n">DisAglCtls</span> <span class="o">=</span> <span class="n">generalData</span><span class="p">[</span><span class="s">&#39;DisAglCtls&#39;</span><span class="p">]</span>
     271    <span class="n">SGData</span> <span class="o">=</span> <span class="n">generalData</span><span class="p">[</span><span class="s">&#39;SGData&#39;</span><span class="p">]</span>
     272    <span class="n">Amat</span><span class="p">,</span><span class="n">Bmat</span> <span class="o">=</span> <span class="n">G2lat</span><span class="o">.</span><span class="n">cell2AB</span><span class="p">(</span><span class="n">generalData</span><span class="p">[</span><span class="s">&#39;Cell&#39;</span><span class="p">][</span><span class="mi">1</span><span class="p">:</span><span class="mi">7</span><span class="p">])</span>
     273    <span class="n">radii</span> <span class="o">=</span> <span class="n">DisAglCtls</span><span class="p">[</span><span class="s">&#39;BondRadii&#39;</span><span class="p">]</span>
     274    <span class="n">atomTypes</span> <span class="o">=</span> <span class="n">DisAglCtls</span><span class="p">[</span><span class="s">&#39;AtomTypes&#39;</span><span class="p">]</span>
     275    <span class="n">factor</span> <span class="o">=</span> <span class="n">DisAglCtls</span><span class="p">[</span><span class="s">&#39;Factors&#39;</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
     276    <span class="n">unit</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">3</span><span class="p">)</span>
     277    <span class="k">try</span><span class="p">:</span>
     278        <span class="n">indH</span> <span class="o">=</span> <span class="n">atomTypes</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="s">&#39;H&#39;</span><span class="p">)</span>
     279        <span class="n">radii</span><span class="p">[</span><span class="n">indH</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.5</span>
     280    <span class="k">except</span><span class="p">:</span>
     281        <span class="k">pass</span>           
     282    <span class="n">nAtom</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">atomData</span><span class="p">)</span>
     283    <span class="n">Indx</span> <span class="o">=</span> <span class="nb">range</span><span class="p">(</span><span class="n">nAtom</span><span class="p">)</span>
     284    <span class="n">UAtoms</span> <span class="o">=</span> <span class="p">[]</span>
     285    <span class="n">Radii</span> <span class="o">=</span> <span class="p">[]</span>
     286    <span class="k">for</span> <span class="n">atom</span> <span class="ow">in</span> <span class="n">atomData</span><span class="p">:</span>
     287        <span class="n">UAtoms</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">atom</span><span class="p">[</span><span class="n">cx</span><span class="p">:</span><span class="n">cx</span><span class="o">+</span><span class="mi">3</span><span class="p">]))</span>
     288        <span class="n">Radii</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">radii</span><span class="p">[</span><span class="n">atomTypes</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">atom</span><span class="p">[</span><span class="n">ct</span><span class="p">])])</span>
     289    <span class="n">UAtoms</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">UAtoms</span><span class="p">)</span>
     290    <span class="n">Radii</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">Radii</span><span class="p">)</span>
     291    <span class="k">for</span> <span class="n">nOp</span><span class="p">,</span><span class="n">Op</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">SGData</span><span class="p">[</span><span class="s">&#39;SGOps&#39;</span><span class="p">][</span><span class="mi">1</span><span class="p">:]):</span>
     292        <span class="n">UAtoms</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">UAtoms</span><span class="p">,(</span><span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">Op</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="n">UAtoms</span><span class="p">[:</span><span class="n">nAtom</span><span class="p">])</span><span class="o">.</span><span class="n">T</span><span class="o">+</span><span class="n">Op</span><span class="p">[</span><span class="mi">1</span><span class="p">])))</span>
     293        <span class="n">Radii</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">Radii</span><span class="p">,</span><span class="n">Radii</span><span class="p">[:</span><span class="n">nAtom</span><span class="p">]))</span>
     294        <span class="n">Indx</span> <span class="o">+=</span> <span class="n">Indx</span><span class="p">[:</span><span class="n">nAtom</span><span class="p">]</span>
     295    <span class="k">for</span> <span class="n">icen</span><span class="p">,</span><span class="n">cen</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">SGData</span><span class="p">[</span><span class="s">&#39;SGCen&#39;</span><span class="p">][</span><span class="mi">1</span><span class="p">:]):</span>
     296        <span class="n">UAtoms</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">UAtoms</span><span class="p">,(</span><span class="n">UAtoms</span><span class="o">+</span><span class="n">cen</span><span class="p">)))</span>
     297        <span class="n">Radii</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">Radii</span><span class="p">,</span><span class="n">Radii</span><span class="p">))</span>
     298        <span class="n">Indx</span> <span class="o">+=</span> <span class="n">Indx</span><span class="p">[:</span><span class="n">nAtom</span><span class="p">]</span>
     299    <span class="k">if</span> <span class="n">SGData</span><span class="p">[</span><span class="s">&#39;SGInv&#39;</span><span class="p">]:</span>
     300        <span class="n">UAtoms</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">UAtoms</span><span class="p">,</span><span class="o">-</span><span class="n">UAtoms</span><span class="p">))</span>
     301        <span class="n">Radii</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">Radii</span><span class="p">,</span><span class="n">Radii</span><span class="p">))</span>
     302        <span class="n">Indx</span> <span class="o">+=</span> <span class="n">Indx</span>
     303    <span class="n">UAtoms</span> <span class="o">%=</span> <span class="mf">1.</span>
     304    <span class="n">mAtoms</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">UAtoms</span><span class="p">)</span>
     305    <span class="k">for</span> <span class="n">unit</span> <span class="ow">in</span> <span class="n">Units</span><span class="p">:</span>
     306        <span class="k">if</span> <span class="n">np</span><span class="o">.</span><span class="n">any</span><span class="p">(</span><span class="n">unit</span><span class="p">):</span>    <span class="c">#skip origin cell</span>
     307            <span class="n">UAtoms</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">UAtoms</span><span class="p">,</span><span class="n">UAtoms</span><span class="p">[:</span><span class="n">mAtoms</span><span class="p">]</span><span class="o">+</span><span class="n">unit</span><span class="p">))</span>
     308            <span class="n">Radii</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">Radii</span><span class="p">,</span><span class="n">Radii</span><span class="p">[:</span><span class="n">mAtoms</span><span class="p">]))</span>
     309            <span class="n">Indx</span> <span class="o">+=</span> <span class="n">Indx</span><span class="p">[:</span><span class="n">mAtoms</span><span class="p">]</span>
     310    <span class="n">UAtoms</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">UAtoms</span><span class="p">)</span>
     311    <span class="n">Radii</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">Radii</span><span class="p">)</span>
     312    <span class="n">newAtoms</span> <span class="o">=</span> <span class="p">[</span><span class="n">atomData</span><span class="p">[</span><span class="n">ind</span><span class="p">],]</span>
     313    <span class="n">atomData</span><span class="p">[</span><span class="n">ind</span><span class="p">]</span> <span class="o">=</span> <span class="bp">None</span>
     314    <span class="n">radius</span> <span class="o">=</span> <span class="n">Radii</span><span class="p">[</span><span class="n">ind</span><span class="p">]</span>
     315    <span class="n">IndB</span> <span class="o">=</span> <span class="n">getNeighbors</span><span class="p">(</span><span class="n">newAtoms</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span><span class="n">radius</span><span class="p">)</span>
     316    <span class="k">while</span> <span class="bp">True</span><span class="p">:</span>
     317        <span class="k">if</span> <span class="ow">not</span> <span class="nb">len</span><span class="p">(</span><span class="n">IndB</span><span class="p">):</span>
     318            <span class="k">break</span>
     319        <span class="n">indb</span> <span class="o">=</span> <span class="n">IndB</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span>
     320        <span class="k">if</span> <span class="n">atomData</span><span class="p">[</span><span class="n">Indx</span><span class="p">[</span><span class="n">indb</span><span class="p">]]</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span>
     321            <span class="k">continue</span>
     322        <span class="k">while</span> <span class="bp">True</span><span class="p">:</span>
     323            <span class="k">try</span><span class="p">:</span>
     324                <span class="n">jndb</span> <span class="o">=</span> <span class="n">Indb</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">indb</span><span class="p">)</span>
     325                <span class="n">Indb</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">jndb</span><span class="p">)</span>
     326            <span class="k">except</span><span class="p">:</span>
     327                <span class="k">break</span>
     328        <span class="n">newAtom</span> <span class="o">=</span> <span class="n">copy</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">atomData</span><span class="p">[</span><span class="n">Indx</span><span class="p">[</span><span class="n">indb</span><span class="p">]])</span>
     329        <span class="n">newAtom</span><span class="p">[</span><span class="n">cx</span><span class="p">:</span><span class="n">cx</span><span class="o">+</span><span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="n">UAtoms</span><span class="p">[</span><span class="n">indb</span><span class="p">]</span>     <span class="c">#NB: thermal Uij, etc. not transformed!</span>
     330        <span class="n">newAtoms</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">newAtom</span><span class="p">)</span>
     331        <span class="n">atomData</span><span class="p">[</span><span class="n">Indx</span><span class="p">[</span><span class="n">indb</span><span class="p">]]</span> <span class="o">=</span> <span class="bp">None</span>
     332        <span class="n">IndB</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="n">IndB</span><span class="p">)</span><span class="o">+</span><span class="nb">list</span><span class="p">(</span><span class="n">getNeighbors</span><span class="p">(</span><span class="n">newAtoms</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span><span class="n">radius</span><span class="p">)))</span>
     333        <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">IndB</span><span class="p">)</span> <span class="o">&gt;</span> <span class="n">nAtom</span><span class="p">:</span>
     334            <span class="k">return</span> <span class="s">&#39;Assemble molecule cannot be used on extended structures&#39;</span>
     335    <span class="k">for</span> <span class="n">atom</span> <span class="ow">in</span> <span class="n">atomData</span><span class="p">:</span>
     336        <span class="k">if</span> <span class="n">atom</span> <span class="o">!=</span> <span class="bp">None</span><span class="p">:</span>
     337            <span class="n">newAtoms</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">atom</span><span class="p">)</span>
     338    <span class="k">return</span> <span class="n">newAtoms</span>
     339       
    246340<div class="viewcode-block" id="FindAtomIndexByIDs"><a class="viewcode-back" href="../GSASIImath.html#GSASIImath.FindAtomIndexByIDs">[docs]</a><span class="k">def</span> <span class="nf">FindAtomIndexByIDs</span><span class="p">(</span><span class="n">atomData</span><span class="p">,</span><span class="n">IDs</span><span class="p">,</span><span class="n">Draw</span><span class="o">=</span><span class="bp">True</span><span class="p">):</span>
    247341    <span class="sd">&#39;&#39;&#39;finds the set of atom array indices for a list of atom IDs. Will search </span>
     
    264358    <span class="k">return</span> <span class="n">indx</span>
    265359</div>
    266 <div class="viewcode-block" id="FillAtomLookUp"><a class="viewcode-back" href="../GSASIImath.html#GSASIImath.FillAtomLookUp">[docs]</a><span class="k">def</span> <span class="nf">FillAtomLookUp</span><span class="p">(</span><span class="n">atomData</span><span class="p">):</span>
     360<div class="viewcode-block" id="FillAtomLookUp"><a class="viewcode-back" href="../GSASIImath.html#GSASIImath.FillAtomLookUp">[docs]</a><span class="k">def</span> <span class="nf">FillAtomLookUp</span><span class="p">(</span><span class="n">atomData</span><span class="p">,</span><span class="n">indx</span><span class="p">):</span>
    267361    <span class="sd">&#39;&#39;&#39;create a dictionary of atom indexes with atom IDs as keys</span>
    268362<span class="sd">    </span>
     
    274368    <span class="n">atomLookUp</span> <span class="o">=</span> <span class="p">{}</span>
    275369    <span class="k">for</span> <span class="n">iatm</span><span class="p">,</span><span class="n">atom</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">atomData</span><span class="p">):</span>
    276         <span class="n">atomLookUp</span><span class="p">[</span><span class="n">atom</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]]</span> <span class="o">=</span> <span class="n">iatm</span>
     370        <span class="n">atomLookUp</span><span class="p">[</span><span class="n">atom</span><span class="p">[</span><span class="n">indx</span><span class="p">]]</span> <span class="o">=</span> <span class="n">iatm</span>
    277371    <span class="k">return</span> <span class="n">atomLookUp</span>
    278372</div>
     
    746840    <span class="k">return</span> <span class="n">Xanom</span>
    747841   
     842<span class="k">def</span> <span class="nf">Modulation</span><span class="p">(</span><span class="n">waveTypes</span><span class="p">,</span><span class="n">SSUniq</span><span class="p">,</span><span class="n">SSPhi</span><span class="p">,</span><span class="n">FSSdata</span><span class="p">,</span><span class="n">XSSdata</span><span class="p">,</span><span class="n">USSdata</span><span class="p">):</span>
     843    <span class="kn">import</span> <span class="nn">scipy.special</span> <span class="kn">as</span> <span class="nn">sp</span>
     844    <span class="kn">import</span> <span class="nn">scipy.integrate</span> <span class="kn">as</span> <span class="nn">si</span>
     845    <span class="n">m</span> <span class="o">=</span> <span class="n">SSUniq</span><span class="o">.</span><span class="n">T</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span>
     846    <span class="n">nh</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">1</span><span class="p">)</span>
     847    <span class="k">if</span> <span class="n">XSSdata</span><span class="o">.</span><span class="n">ndim</span> <span class="o">&gt;</span> <span class="mi">2</span><span class="p">:</span>
     848        <span class="n">nh</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">XSSdata</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>       
     849    <span class="n">M</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">m</span><span class="o">&gt;</span><span class="mi">0</span><span class="p">,</span><span class="n">m</span><span class="o">+</span><span class="n">nh</span><span class="p">[:,</span><span class="n">np</span><span class="o">.</span><span class="n">newaxis</span><span class="p">],</span><span class="n">m</span><span class="o">-</span><span class="n">nh</span><span class="p">[:,</span><span class="n">np</span><span class="o">.</span><span class="n">newaxis</span><span class="p">])</span>
     850    <span class="n">A</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">XSSdata</span><span class="p">[:</span><span class="mi">3</span><span class="p">])</span>
     851    <span class="n">B</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">XSSdata</span><span class="p">[</span><span class="mi">3</span><span class="p">:])</span>
     852    <span class="n">HdotA</span> <span class="o">=</span> <span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">A</span><span class="o">.</span><span class="n">T</span><span class="p">,</span><span class="n">SSUniq</span><span class="o">.</span><span class="n">T</span><span class="p">[:</span><span class="mi">3</span><span class="p">]</span><span class="o">.</span><span class="n">T</span><span class="p">)</span><span class="o">+</span><span class="n">SSPhi</span><span class="p">)</span>
     853    <span class="n">HdotB</span> <span class="o">=</span> <span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">B</span><span class="o">.</span><span class="n">T</span><span class="p">,</span><span class="n">SSUniq</span><span class="o">.</span><span class="n">T</span><span class="p">[:</span><span class="mi">3</span><span class="p">]</span><span class="o">.</span><span class="n">T</span><span class="p">)</span><span class="o">+</span><span class="n">SSPhi</span><span class="p">)</span>
     854    <span class="n">GpA</span> <span class="o">=</span> <span class="n">sp</span><span class="o">.</span><span class="n">jn</span><span class="p">(</span><span class="n">M</span><span class="p">[:,</span><span class="n">np</span><span class="o">.</span><span class="n">newaxis</span><span class="p">],</span><span class="n">twopi</span><span class="o">*</span><span class="n">HdotA</span><span class="p">)</span>
     855    <span class="n">GpB</span> <span class="o">=</span> <span class="n">sp</span><span class="o">.</span><span class="n">jn</span><span class="p">(</span><span class="n">M</span><span class="p">[:,</span><span class="n">np</span><span class="o">.</span><span class="n">newaxis</span><span class="p">],</span><span class="n">twopi</span><span class="o">*</span><span class="n">HdotB</span><span class="p">)</span><span class="o">*</span><span class="p">(</span><span class="mf">1.j</span><span class="p">)</span><span class="o">**</span><span class="n">M</span>
     856    <span class="n">Gp</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">GpA</span><span class="o">+</span><span class="n">GpB</span><span class="p">,</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
     857    <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">real</span><span class="p">(</span><span class="n">Gp</span><span class="p">)</span><span class="o">.</span><span class="n">T</span><span class="p">,</span><span class="n">np</span><span class="o">.</span><span class="n">imag</span><span class="p">(</span><span class="n">Gp</span><span class="p">)</span><span class="o">.</span><span class="n">T</span>
     858   
     859<span class="k">def</span> <span class="nf">ModulationDerv</span><span class="p">(</span><span class="n">waveTypes</span><span class="p">,</span><span class="n">SSUniq</span><span class="p">,</span><span class="n">SSPhi</span><span class="p">,</span><span class="n">FSSdata</span><span class="p">,</span><span class="n">XSSdata</span><span class="p">,</span><span class="n">USSdata</span><span class="p">):</span>
     860    <span class="kn">import</span> <span class="nn">scipy.special</span> <span class="kn">as</span> <span class="nn">sp</span>
     861    <span class="n">m</span> <span class="o">=</span> <span class="n">SSUniq</span><span class="o">.</span><span class="n">T</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span>
     862    <span class="n">nh</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">1</span><span class="p">)</span>
     863    <span class="k">if</span> <span class="n">XSSdata</span><span class="o">.</span><span class="n">ndim</span> <span class="o">&gt;</span> <span class="mi">2</span><span class="p">:</span>
     864        <span class="n">nh</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">XSSdata</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>       
     865    <span class="n">M</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">m</span><span class="o">&gt;</span><span class="mi">0</span><span class="p">,</span><span class="n">m</span><span class="o">+</span><span class="n">nh</span><span class="p">[:,</span><span class="n">np</span><span class="o">.</span><span class="n">newaxis</span><span class="p">],</span><span class="n">m</span><span class="o">-</span><span class="n">nh</span><span class="p">[:,</span><span class="n">np</span><span class="o">.</span><span class="n">newaxis</span><span class="p">])</span>
     866    <span class="n">A</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([[</span><span class="n">a</span><span class="p">,</span><span class="n">b</span><span class="p">]</span> <span class="k">for</span> <span class="n">a</span><span class="p">,</span><span class="n">b</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">XSSdata</span><span class="p">[:</span><span class="mi">3</span><span class="p">],</span><span class="n">XSSdata</span><span class="p">[</span><span class="mi">3</span><span class="p">:])])</span>
     867    <span class="n">HdotA</span> <span class="o">=</span> <span class="n">twopi</span><span class="o">*</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">SSUniq</span><span class="o">.</span><span class="n">T</span><span class="p">[:</span><span class="mi">3</span><span class="p">]</span><span class="o">.</span><span class="n">T</span><span class="p">,</span><span class="n">A</span><span class="o">.</span><span class="n">T</span><span class="p">)</span><span class="o">+</span><span class="n">SSPhi</span><span class="p">)</span>
     868    <span class="n">Gpm</span> <span class="o">=</span> <span class="n">sp</span><span class="o">.</span><span class="n">jn</span><span class="p">(</span><span class="n">M</span><span class="p">[:,</span><span class="n">np</span><span class="o">.</span><span class="n">newaxis</span><span class="p">,:]</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="n">HdotA</span><span class="p">)</span>
     869    <span class="n">Gpp</span> <span class="o">=</span> <span class="n">sp</span><span class="o">.</span><span class="n">jn</span><span class="p">(</span><span class="n">M</span><span class="p">[:,</span><span class="n">np</span><span class="o">.</span><span class="n">newaxis</span><span class="p">,:]</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span><span class="n">HdotA</span><span class="p">)</span>
     870    <span class="k">if</span> <span class="n">Gpm</span><span class="o">.</span><span class="n">ndim</span> <span class="o">&gt;</span> <span class="mi">3</span><span class="p">:</span> <span class="c">#sum over multiple harmonics</span>
     871        <span class="n">Gpm</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">Gpm</span><span class="p">,</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
     872        <span class="n">Gpp</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">Gpp</span><span class="p">,</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
     873    <span class="n">dGpdk</span> <span class="o">=</span> <span class="mf">0.5</span><span class="o">*</span><span class="p">(</span><span class="n">Gpm</span><span class="o">+</span><span class="n">Gpp</span><span class="p">)</span>
     874    <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">real</span><span class="p">(</span><span class="n">dGpdk</span><span class="p">),</span><span class="n">np</span><span class="o">.</span><span class="n">imag</span><span class="p">(</span><span class="n">dGpdk</span><span class="p">)</span>
     875   
     876<span class="k">def</span> <span class="nf">posFourier</span><span class="p">(</span><span class="n">tau</span><span class="p">,</span><span class="n">psin</span><span class="p">,</span><span class="n">pcos</span><span class="p">):</span>
     877    <span class="n">A</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">ps</span><span class="p">[:,</span><span class="n">np</span><span class="o">.</span><span class="n">newaxis</span><span class="p">]</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="mi">2</span><span class="o">*</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">i</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">*</span><span class="n">tau</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span><span class="n">ps</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">psin</span><span class="p">)])</span>
     878    <span class="n">B</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">pc</span><span class="p">[:,</span><span class="n">np</span><span class="o">.</span><span class="n">newaxis</span><span class="p">]</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="mi">2</span><span class="o">*</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">i</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">*</span><span class="n">tau</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span><span class="n">pc</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">pcos</span><span class="p">)])</span>
     879    <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">A</span><span class="p">,</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span><span class="o">+</span><span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">B</span><span class="p">,</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
     880   
     881<span class="k">def</span> <span class="nf">posSawtooth</span><span class="p">(</span><span class="n">tau</span><span class="p">,</span><span class="n">Toff</span><span class="p">,</span><span class="n">slopes</span><span class="p">):</span>
     882    <span class="n">Tau</span> <span class="o">=</span> <span class="p">(</span><span class="n">tau</span><span class="o">-</span><span class="n">Toff</span><span class="p">)</span><span class="o">%</span><span class="mf">1.</span>
     883    <span class="n">A</span> <span class="o">=</span> <span class="n">slopes</span><span class="p">[:,</span><span class="n">np</span><span class="o">.</span><span class="n">newaxis</span><span class="p">]</span><span class="o">*</span><span class="n">Tau</span>
     884    <span class="k">return</span> <span class="n">A</span>
     885
     886<span class="k">def</span> <span class="nf">posZigZag</span><span class="p">(</span><span class="n">tau</span><span class="p">,</span><span class="n">Toff</span><span class="p">,</span><span class="n">slopes</span><span class="p">):</span>
     887    <span class="n">Tau</span> <span class="o">=</span> <span class="p">(</span><span class="n">tau</span><span class="o">-</span><span class="n">Toff</span><span class="p">)</span><span class="o">%</span><span class="mf">1.</span>
     888    <span class="n">A</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">Tau</span> <span class="o">&lt;=</span> <span class="mf">0.5</span><span class="p">,</span><span class="n">slopes</span><span class="p">[:,</span><span class="n">np</span><span class="o">.</span><span class="n">newaxis</span><span class="p">]</span><span class="o">*</span><span class="n">Tau</span><span class="p">,</span><span class="n">slopes</span><span class="p">[:,</span><span class="n">np</span><span class="o">.</span><span class="n">newaxis</span><span class="p">]</span><span class="o">*</span><span class="p">(</span><span class="mf">1.</span><span class="o">-</span><span class="n">Tau</span><span class="p">))</span>
     889    <span class="k">return</span> <span class="n">A</span>
     890   
     891<span class="k">def</span> <span class="nf">fracCrenel</span><span class="p">(</span><span class="n">tau</span><span class="p">,</span><span class="n">Toff</span><span class="p">,</span><span class="n">Twid</span><span class="p">):</span>
     892    <span class="n">Tau</span> <span class="o">=</span> <span class="p">(</span><span class="n">tau</span><span class="o">-</span><span class="n">Toff</span><span class="p">)</span><span class="o">%</span><span class="mf">1.</span>
     893    <span class="n">A</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">Tau</span><span class="o">&lt;</span><span class="n">Twid</span><span class="p">,</span><span class="mf">1.</span><span class="p">,</span><span class="mf">0.</span><span class="p">)</span>
     894    <span class="k">return</span> <span class="n">A</span>
     895   
     896<span class="k">def</span> <span class="nf">fracFourier</span><span class="p">(</span><span class="n">tau</span><span class="p">,</span><span class="n">fsin</span><span class="p">,</span><span class="n">fcos</span><span class="p">):</span>
     897    <span class="n">A</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">fs</span><span class="p">[:,</span><span class="n">np</span><span class="o">.</span><span class="n">newaxis</span><span class="p">]</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="mf">2.</span><span class="o">*</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">i</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">*</span><span class="n">tau</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span><span class="n">fs</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">fsin</span><span class="p">)])</span>
     898    <span class="n">B</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">fc</span><span class="p">[:,</span><span class="n">np</span><span class="o">.</span><span class="n">newaxis</span><span class="p">]</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="mf">2.</span><span class="o">*</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">i</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">*</span><span class="n">tau</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span><span class="n">fc</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">fcos</span><span class="p">)])</span>
     899    <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">A</span><span class="p">,</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span><span class="o">+</span><span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">B</span><span class="p">,</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
    748900   
    749901<span class="c">################################################################################</span>
    750 <span class="c">##### distance, angle, planes, torsion stuff stuff</span>
     902<span class="c">##### distance, angle, planes, torsion stuff </span>
    751903<span class="c">################################################################################</span>
    752904
     
    10711223<span class="sd">    &#39;&#39;&#39;</span>
    10721224    <span class="k">def</span> <span class="nf">calcVec</span><span class="p">(</span><span class="n">Ox</span><span class="p">,</span><span class="n">Tx</span><span class="p">,</span><span class="n">U</span><span class="p">,</span><span class="n">inv</span><span class="p">,</span><span class="n">C</span><span class="p">,</span><span class="n">M</span><span class="p">,</span><span class="n">T</span><span class="p">,</span><span class="n">Amat</span><span class="p">):</span>
    1073         <span class="n">TxT</span> <span class="o">=</span> <span class="n">inv</span><span class="o">*</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">M</span><span class="p">,</span><span class="n">Tx</span><span class="p">)</span><span class="o">+</span><span class="n">T</span><span class="p">)</span><span class="o">+</span><span class="n">C</span>
    1074         <span class="n">TxT</span> <span class="o">=</span> <span class="n">G2spc</span><span class="o">.</span><span class="n">MoveToUnitCell</span><span class="p">(</span><span class="n">TxT</span><span class="p">)</span><span class="o">+</span><span class="n">U</span>
     1225        <span class="n">TxT</span> <span class="o">=</span> <span class="n">inv</span><span class="o">*</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">M</span><span class="p">,</span><span class="n">Tx</span><span class="p">)</span><span class="o">+</span><span class="n">T</span><span class="p">)</span><span class="o">+</span><span class="n">C</span><span class="o">+</span><span class="n">U</span>
    10751226        <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">Amat</span><span class="p">,(</span><span class="n">TxT</span><span class="o">-</span><span class="n">Ox</span><span class="p">))</span>
    10761227       
     
    14391590<span class="sd">    &#39;&#39;&#39;</span>
    14401591    <span class="c"># Note: this routine is Python 3 compatible -- I think</span>
     1592    <span class="n">cutoff</span> <span class="o">=</span> <span class="mf">3.16228</span>    <span class="c">#=(sqrt(10); same as old GSAS   was 1.95</span>
    14411593    <span class="k">if</span> <span class="n">math</span><span class="o">.</span><span class="n">isnan</span><span class="p">(</span><span class="n">value</span><span class="p">):</span> <span class="c"># invalid value, bail out</span>
    14421594        <span class="k">return</span> <span class="s">&#39;?&#39;</span>
     
    14461598    <span class="k">elif</span> <span class="n">esd</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span>
    14471599        <span class="c"># transform the esd to a one or two digit integer</span>
    1448         <span class="n">l</span> <span class="o">=</span> <span class="n">math</span><span class="o">.</span><span class="n">log10</span><span class="p">(</span><span class="nb">abs</span><span class="p">(</span><span class="n">esd</span><span class="p">))</span> <span class="o">%</span> <span class="mi">1</span>
    1449         <span class="c"># cut off of 19 1.9==&gt;(19) but 1.95==&gt;(2) N.B. log10(1.95) = 0.2900...</span>
    1450         <span class="k">if</span> <span class="n">l</span> <span class="o">&lt;</span> <span class="mf">0.290034611362518</span><span class="p">:</span> <span class="n">l</span><span class="o">+=</span> <span class="mf">1.</span>       
     1600        <span class="n">l</span> <span class="o">=</span> <span class="n">math</span><span class="o">.</span><span class="n">log10</span><span class="p">(</span><span class="nb">abs</span><span class="p">(</span><span class="n">esd</span><span class="p">))</span> <span class="o">%</span> <span class="mf">1.</span>
     1601        <span class="k">if</span> <span class="n">l</span> <span class="o">&lt;</span> <span class="n">math</span><span class="o">.</span><span class="n">log10</span><span class="p">(</span><span class="n">cutoff</span><span class="p">):</span> <span class="n">l</span><span class="o">+=</span> <span class="mf">1.</span>       
    14511602        <span class="n">intesd</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="nb">round</span><span class="p">(</span><span class="mi">10</span><span class="o">**</span><span class="n">l</span><span class="p">))</span> <span class="c"># esd as integer</span>
    14521603        <span class="c"># determine the number of digits offset for the esd</span>
     
    15011652<span class="sd">    &#39;&#39;&#39;</span>
    15021653    <span class="k">if</span> <span class="n">SGData</span><span class="p">[</span><span class="s">&#39;SGLaue&#39;</span><span class="p">]</span> <span class="ow">in</span> <span class="p">[</span><span class="s">&#39;3&#39;</span><span class="p">,</span><span class="s">&#39;3m1&#39;</span><span class="p">,</span><span class="s">&#39;31m&#39;</span><span class="p">,</span><span class="s">&#39;6/m&#39;</span><span class="p">,</span><span class="s">&#39;6/mmm&#39;</span><span class="p">]:</span>
    1503         <span class="n">Hmax</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="p">((</span><span class="n">Hmax</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="mi">3</span><span class="p">)</span><span class="o">/</span><span class="mi">6</span><span class="p">)</span><span class="o">*</span><span class="mi">6</span>
    1504         <span class="n">Hmax</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">((</span><span class="n">Hmax</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">+</span><span class="mi">3</span><span class="p">)</span><span class="o">/</span><span class="mi">6</span><span class="p">)</span><span class="o">*</span><span class="mi">6</span>
    1505         <span class="n">Hmax</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="p">((</span><span class="n">Hmax</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">/</span><span class="mi">4</span><span class="p">)</span><span class="o">*</span><span class="mi">4</span>
     1654        <span class="n">Hmax</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">math</span><span class="o">.</span><span class="n">ceil</span><span class="p">(</span><span class="n">Hmax</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">/</span><span class="mf">6.</span><span class="p">))</span><span class="o">*</span><span class="mi">6</span>
     1655        <span class="n">Hmax</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">math</span><span class="o">.</span><span class="n">ceil</span><span class="p">(</span><span class="n">Hmax</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">/</span><span class="mf">6.</span><span class="p">))</span><span class="o">*</span><span class="mi">6</span>
     1656        <span class="n">Hmax</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">math</span><span class="o">.</span><span class="n">ceil</span><span class="p">(</span><span class="n">Hmax</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">/</span><span class="mf">4.</span><span class="p">))</span><span class="o">*</span><span class="mi">4</span>
    15061657    <span class="k">else</span><span class="p">:</span>
    1507         <span class="n">Hmax</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="p">((</span><span class="n">Hmax</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="p">)</span><span class="o">/</span><span class="mi">4</span><span class="p">)</span><span class="o">*</span><span class="mi">4</span>
    1508         <span class="n">Hmax</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">((</span><span class="n">Hmax</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="mi">4</span><span class="p">)</span><span class="o">*</span><span class="mi">4</span>
    1509         <span class="n">Hmax</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="p">((</span><span class="n">Hmax</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">+</span><span class="mi">2</span><span class="p">)</span><span class="o">/</span><span class="mi">4</span><span class="p">)</span><span class="o">*</span><span class="mi">4</span>
     1658        <span class="n">Hmax</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">math</span><span class="o">.</span><span class="n">ceil</span><span class="p">(</span><span class="n">Hmax</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">/</span><span class="mf">4.</span><span class="p">))</span><span class="o">*</span><span class="mi">4</span>
     1659        <span class="n">Hmax</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">math</span><span class="o">.</span><span class="n">ceil</span><span class="p">(</span><span class="n">Hmax</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">/</span><span class="mf">4.</span><span class="p">))</span><span class="o">*</span><span class="mi">4</span>
     1660        <span class="n">Hmax</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">math</span><span class="o">.</span><span class="n">ceil</span><span class="p">(</span><span class="n">Hmax</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">/</span><span class="mf">4.</span><span class="p">))</span><span class="o">*</span><span class="mi">4</span>
    15101661</div>
    15111662<div class="viewcode-block" id="OmitMap"><a class="viewcode-back" href="../GSASIImath.html#GSASIImath.OmitMap">[docs]</a><span class="k">def</span> <span class="nf">OmitMap</span><span class="p">(</span><span class="n">data</span><span class="p">,</span><span class="n">reflDict</span><span class="p">,</span><span class="n">pgbar</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
     
    15731724    <span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">real</span><span class="p">(</span><span class="n">rho_omit</span><span class="p">)</span><span class="o">/</span><span class="n">cell</span><span class="p">[</span><span class="mi">6</span><span class="p">]</span>
    15741725    <span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rhoMax&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">]),</span><span class="o">-</span><span class="n">np</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">]))</span>
     1726    <span class="n">mapData</span><span class="p">[</span><span class="s">&#39;minmax&#39;</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">max</span><span class="p">(</span><span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">]),</span><span class="n">np</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">])]</span>
    15751727    <span class="k">print</span> <span class="s">&#39;Omit map time: </span><span class="si">%.4f</span><span class="s">&#39;</span><span class="o">%</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><span class="p">),</span><span class="s">&#39;no. elements: </span><span class="si">%d</span><span class="s">&#39;</span><span class="o">%</span><span class="p">(</span><span class="n">Fhkl</span><span class="o">.</span><span class="n">size</span><span class="p">)</span>
     1728    <span class="k">return</span> <span class="n">mapData</span>
     1729    </div>
     1730<div class="viewcode-block" id="Fourier4DMap"><a class="viewcode-back" href="../GSASIImath.html#GSASIImath.Fourier4DMap">[docs]</a><span class="k">def</span> <span class="nf">Fourier4DMap</span><span class="p">(</span><span class="n">data</span><span class="p">,</span><span class="n">reflDict</span><span class="p">):</span>
     1731    <span class="sd">&#39;&#39;&#39;default doc string</span>
     1732<span class="sd">    </span>
     1733<span class="sd">    :param type name: description</span>
     1734<span class="sd">    </span>
     1735<span class="sd">    :returns: type name: description</span>
     1736<span class="sd">    </span>
     1737<span class="sd">    &#39;&#39;&#39;</span>
     1738    <span class="n">generalData</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="s">&#39;General&#39;</span><span class="p">]</span>
     1739    <span class="n">mapData</span> <span class="o">=</span> <span class="n">generalData</span><span class="p">[</span><span class="s">&#39;4DmapData&#39;</span><span class="p">]</span>
     1740    <span class="n">dmin</span> <span class="o">=</span> <span class="n">mapData</span><span class="p">[</span><span class="s">&#39;Resolution&#39;</span><span class="p">]</span>
     1741    <span class="n">SGData</span> <span class="o">=</span> <span class="n">generalData</span><span class="p">[</span><span class="s">&#39;SGData&#39;</span><span class="p">]</span>
     1742    <span class="n">SSGData</span> <span class="o">=</span> <span class="n">generalData</span><span class="p">[</span><span class="s">&#39;SSGData&#39;</span><span class="p">]</span>
     1743    <span class="n">SSGMT</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">ops</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">T</span> <span class="k">for</span> <span class="n">ops</span> <span class="ow">in</span> <span class="n">SSGData</span><span class="p">[</span><span class="s">&#39;SSGOps&#39;</span><span class="p">]])</span>
     1744    <span class="n">SSGT</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">ops</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="k">for</span> <span class="n">ops</span> <span class="ow">in</span> <span class="n">SSGData</span><span class="p">[</span><span class="s">&#39;SSGOps&#39;</span><span class="p">]])</span>
     1745    <span class="n">cell</span> <span class="o">=</span> <span class="n">generalData</span><span class="p">[</span><span class="s">&#39;Cell&#39;</span><span class="p">][</span><span class="mi">1</span><span class="p">:</span><span class="mi">8</span><span class="p">]</span>       
     1746    <span class="n">A</span> <span class="o">=</span> <span class="n">G2lat</span><span class="o">.</span><span class="n">cell2A</span><span class="p">(</span><span class="n">cell</span><span class="p">[:</span><span class="mi">6</span><span class="p">])</span>
     1747    <span class="n">maxM</span> <span class="o">=</span> <span class="n">generalData</span><span class="p">[</span><span class="s">&#39;SuperVec&#39;</span><span class="p">][</span><span class="mi">2</span><span class="p">]</span>
     1748    <span class="n">Hmax</span> <span class="o">=</span> <span class="n">G2lat</span><span class="o">.</span><span class="n">getHKLmax</span><span class="p">(</span><span class="n">dmin</span><span class="p">,</span><span class="n">SGData</span><span class="p">,</span><span class="n">A</span><span class="p">)</span><span class="o">+</span><span class="p">[</span><span class="n">maxM</span><span class="p">,]</span>
     1749    <span class="n">adjHKLmax</span><span class="p">(</span><span class="n">SGData</span><span class="p">,</span><span class="n">Hmax</span><span class="p">)</span>
     1750    <span class="n">Hmax</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">Hmax</span><span class="p">,</span><span class="n">dtype</span><span class="o">=</span><span class="s">&#39;i&#39;</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span>
     1751    <span class="n">Fhkl</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="n">shape</span><span class="o">=</span><span class="mi">2</span><span class="o">*</span><span class="n">Hmax</span><span class="p">,</span><span class="n">dtype</span><span class="o">=</span><span class="s">&#39;c16&#39;</span><span class="p">)</span>
     1752    <span class="n">time0</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span>
     1753    <span class="k">for</span> <span class="n">iref</span><span class="p">,</span><span class="n">ref</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">reflDict</span><span class="p">[</span><span class="s">&#39;RefList&#39;</span><span class="p">]):</span>
     1754        <span class="k">if</span> <span class="n">ref</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span> <span class="o">&gt;</span> <span class="n">dmin</span><span class="p">:</span>
     1755            <span class="n">Fosq</span><span class="p">,</span><span class="n">Fcsq</span><span class="p">,</span><span class="n">ph</span> <span class="o">=</span> <span class="n">ref</span><span class="p">[</span><span class="mi">9</span><span class="p">:</span><span class="mi">12</span><span class="p">]</span>
     1756            <span class="n">Uniq</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">ref</span><span class="p">[:</span><span class="mi">4</span><span class="p">],</span><span class="n">SSGMT</span><span class="p">)</span>
     1757            <span class="n">Phi</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">ref</span><span class="p">[:</span><span class="mi">4</span><span class="p">],</span><span class="n">SSGT</span><span class="p">)</span>
     1758            <span class="k">for</span> <span class="n">i</span><span class="p">,</span><span class="n">hkl</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">Uniq</span><span class="p">):</span>        <span class="c">#uses uniq</span>
     1759                <span class="n">hkl</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">hkl</span><span class="p">,</span><span class="n">dtype</span><span class="o">=</span><span class="s">&#39;i&#39;</span><span class="p">)</span>
     1760                <span class="n">dp</span> <span class="o">=</span> <span class="mf">360.</span><span class="o">*</span><span class="n">Phi</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>                <span class="c">#and phi</span>
     1761                <span class="n">a</span> <span class="o">=</span> <span class="n">cosd</span><span class="p">(</span><span class="n">ph</span><span class="o">+</span><span class="n">dp</span><span class="p">)</span>
     1762                <span class="n">b</span> <span class="o">=</span> <span class="n">sind</span><span class="p">(</span><span class="n">ph</span><span class="o">+</span><span class="n">dp</span><span class="p">)</span>
     1763                <span class="n">phasep</span> <span class="o">=</span> <span class="nb">complex</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="n">b</span><span class="p">)</span>
     1764                <span class="n">phasem</span> <span class="o">=</span> <span class="nb">complex</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="o">-</span><span class="n">b</span><span class="p">)</span>
     1765                <span class="k">if</span> <span class="s">&#39;Fobs&#39;</span> <span class="ow">in</span> <span class="n">mapData</span><span class="p">[</span><span class="s">&#39;MapType&#39;</span><span class="p">]:</span>
     1766                    <span class="n">F</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">Fosq</span><span class="o">&gt;</span><span class="mf">0.</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">Fosq</span><span class="p">),</span><span class="mf">0.</span><span class="p">)</span>
     1767                    <span class="n">h</span><span class="p">,</span><span class="n">k</span><span class="p">,</span><span class="n">l</span><span class="p">,</span><span class="n">m</span> <span class="o">=</span> <span class="n">hkl</span><span class="o">+</span><span class="n">Hmax</span>
     1768                    <span class="n">Fhkl</span><span class="p">[</span><span class="n">h</span><span class="p">,</span><span class="n">k</span><span class="p">,</span><span class="n">l</span><span class="p">,</span><span class="n">m</span><span class="p">]</span> <span class="o">=</span> <span class="n">F</span><span class="o">*</span><span class="n">phasep</span>
     1769                    <span class="n">h</span><span class="p">,</span><span class="n">k</span><span class="p">,</span><span class="n">l</span><span class="p">,</span><span class="n">m</span> <span class="o">=</span> <span class="o">-</span><span class="n">hkl</span><span class="o">+</span><span class="n">Hmax</span>
     1770                    <span class="n">Fhkl</span><span class="p">[</span><span class="n">h</span><span class="p">,</span><span class="n">k</span><span class="p">,</span><span class="n">l</span><span class="p">,</span><span class="n">m</span><span class="p">]</span> <span class="o">=</span> <span class="n">F</span><span class="o">*</span><span class="n">phasem</span>
     1771                <span class="k">elif</span> <span class="s">&#39;delt-F&#39;</span> <span class="ow">in</span> <span class="n">mapData</span><span class="p">[</span><span class="s">&#39;MapType&#39;</span><span class="p">]:</span>
     1772                    <span class="n">dF</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">Fosq</span><span class="o">&gt;</span><span class="mf">0.</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">Fosq</span><span class="p">),</span><span class="mf">0.</span><span class="p">)</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">Fcsq</span><span class="p">)</span>
     1773                    <span class="n">h</span><span class="p">,</span><span class="n">k</span><span class="p">,</span><span class="n">l</span><span class="p">,</span><span class="n">m</span> <span class="o">=</span> <span class="n">hkl</span><span class="o">+</span><span class="n">Hmax</span>
     1774                    <span class="n">Fhkl</span><span class="p">[</span><span class="n">h</span><span class="p">,</span><span class="n">k</span><span class="p">,</span><span class="n">l</span><span class="p">,</span><span class="n">m</span><span class="p">]</span> <span class="o">=</span> <span class="n">dF</span><span class="o">*</span><span class="n">phasep</span>
     1775                    <span class="n">h</span><span class="p">,</span><span class="n">k</span><span class="p">,</span><span class="n">l</span><span class="p">,</span><span class="n">m</span> <span class="o">=</span> <span class="o">-</span><span class="n">hkl</span><span class="o">+</span><span class="n">Hmax</span>
     1776                    <span class="n">Fhkl</span><span class="p">[</span><span class="n">h</span><span class="p">,</span><span class="n">k</span><span class="p">,</span><span class="n">l</span><span class="p">,</span><span class="n">m</span><span class="p">]</span> <span class="o">=</span> <span class="n">dF</span><span class="o">*</span><span class="n">phasem</span>
     1777    <span class="n">rho</span> <span class="o">=</span> <span class="n">fft</span><span class="o">.</span><span class="n">fftn</span><span class="p">(</span><span class="n">fft</span><span class="o">.</span><span class="n">fftshift</span><span class="p">(</span><span class="n">Fhkl</span><span class="p">))</span><span class="o">/</span><span class="n">cell</span><span class="p">[</span><span class="mi">6</span><span class="p">]</span>
     1778    <span class="k">print</span> <span class="s">&#39;Fourier map time: </span><span class="si">%.4f</span><span class="s">&#39;</span><span class="o">%</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><span class="p">),</span><span class="s">&#39;no. elements: </span><span class="si">%d</span><span class="s">&#39;</span><span class="o">%</span><span class="p">(</span><span class="n">Fhkl</span><span class="o">.</span><span class="n">size</span><span class="p">)</span>
     1779    <span class="n">mapData</span><span class="p">[</span><span class="s">&#39;Type&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">reflDict</span><span class="p">[</span><span class="s">&#39;Type&#39;</span><span class="p">]</span>
     1780    <span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">real</span><span class="p">(</span><span class="n">rho</span><span class="p">)</span>
     1781    <span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rhoMax&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">]),</span><span class="o">-</span><span class="n">np</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">]))</span>
     1782    <span class="n">mapData</span><span class="p">[</span><span class="s">&#39;minmax&#39;</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">max</span><span class="p">(</span><span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">]),</span><span class="n">np</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">])]</span>
    15761783    <span class="k">return</span> <span class="n">mapData</span>
    15771784</div>
     
    15851792<span class="sd">    &#39;&#39;&#39;</span>
    15861793    <span class="n">generalData</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="s">&#39;General&#39;</span><span class="p">]</span>
    1587     <span class="k">if</span> <span class="ow">not</span> <span class="n">generalData</span><span class="p">[</span><span class="s">&#39;Map&#39;</span><span class="p">][</span><span class="s">&#39;MapType&#39;</span><span class="p">]:</span>
    1588         <span class="k">print</span> <span class="s">&#39;**** ERROR - Fourier map not defined&#39;</span>
    1589         <span class="k">return</span>
    15901794    <span class="n">mapData</span> <span class="o">=</span> <span class="n">generalData</span><span class="p">[</span><span class="s">&#39;Map&#39;</span><span class="p">]</span>
    15911795    <span class="n">dmin</span> <span class="o">=</span> <span class="n">mapData</span><span class="p">[</span><span class="s">&#39;Resolution&#39;</span><span class="p">]</span>
     
    16011805    <span class="n">time0</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span>
    16021806    <span class="k">for</span> <span class="n">iref</span><span class="p">,</span><span class="n">ref</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">reflDict</span><span class="p">[</span><span class="s">&#39;RefList&#39;</span><span class="p">]):</span>
    1603         <span class="k">if</span> <span class="n">ref</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span> <span class="o">&gt;=</span> <span class="n">dmin</span><span class="p">:</span>
     1807        <span class="k">if</span> <span class="n">ref</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span> <span class="o">&gt;</span> <span class="n">dmin</span><span class="p">:</span>
    16041808            <span class="n">Fosq</span><span class="p">,</span><span class="n">Fcsq</span><span class="p">,</span><span class="n">ph</span> <span class="o">=</span> <span class="n">ref</span><span class="p">[</span><span class="mi">8</span><span class="p">:</span><span class="mi">11</span><span class="p">]</span>
    16051809            <span class="n">Uniq</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">ref</span><span class="p">[:</span><span class="mi">3</span><span class="p">],</span><span class="n">SGMT</span><span class="p">)</span>
     
    16431847    <span class="n">rho</span> <span class="o">=</span> <span class="n">fft</span><span class="o">.</span><span class="n">fftn</span><span class="p">(</span><span class="n">fft</span><span class="o">.</span><span class="n">fftshift</span><span class="p">(</span><span class="n">Fhkl</span><span class="p">))</span><span class="o">/</span><span class="n">cell</span><span class="p">[</span><span class="mi">6</span><span class="p">]</span>
    16441848    <span class="k">print</span> <span class="s">&#39;Fourier map time: </span><span class="si">%.4f</span><span class="s">&#39;</span><span class="o">%</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><span class="p">),</span><span class="s">&#39;no. elements: </span><span class="si">%d</span><span class="s">&#39;</span><span class="o">%</span><span class="p">(</span><span class="n">Fhkl</span><span class="o">.</span><span class="n">size</span><span class="p">)</span>
     1849    <span class="n">mapData</span><span class="p">[</span><span class="s">&#39;Type&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">reflDict</span><span class="p">[</span><span class="s">&#39;Type&#39;</span><span class="p">]</span>
    16451850    <span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">real</span><span class="p">(</span><span class="n">rho</span><span class="p">)</span>
    16461851    <span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rhoMax&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">]),</span><span class="o">-</span><span class="n">np</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">]))</span>
     1852    <span class="n">mapData</span><span class="p">[</span><span class="s">&#39;minmax&#39;</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">max</span><span class="p">(</span><span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">]),</span><span class="n">np</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">])]</span>
    16471853    <span class="k">return</span> <span class="n">mapData</span>
    16481854   
     
    17061912    <span class="n">DH</span> <span class="o">=</span> <span class="p">[]</span>
    17071913    <span class="n">Dphi</span> <span class="o">=</span> <span class="p">[]</span>
     1914    <span class="n">SGMT</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">ops</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">T</span> <span class="k">for</span> <span class="n">ops</span> <span class="ow">in</span> <span class="n">SGData</span><span class="p">[</span><span class="s">&#39;SGOps&#39;</span><span class="p">]])</span>
     1915    <span class="n">SGT</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">ops</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="k">for</span> <span class="n">ops</span> <span class="ow">in</span> <span class="n">SGData</span><span class="p">[</span><span class="s">&#39;SGOps&#39;</span><span class="p">]])</span>
    17081916    <span class="n">Hmax</span> <span class="o">=</span> <span class="mi">2</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">G2lat</span><span class="o">.</span><span class="n">getHKLmax</span><span class="p">(</span><span class="mf">3.5</span><span class="p">,</span><span class="n">SGData</span><span class="p">,</span><span class="n">A</span><span class="p">),</span><span class="n">dtype</span><span class="o">=</span><span class="s">&#39;i&#39;</span><span class="p">)</span>
    17091917    <span class="k">for</span> <span class="n">F</span> <span class="ow">in</span> <span class="n">Flist</span><span class="p">:</span>
    17101918        <span class="n">hkl</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">unravel_index</span><span class="p">(</span><span class="n">Fdict</span><span class="p">[</span><span class="n">F</span><span class="p">],</span><span class="n">hklShape</span><span class="p">)</span>
     1919        <span class="k">if</span> <span class="n">np</span><span class="o">.</span><span class="n">any</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="n">hkl</span><span class="o">-</span><span class="n">hklHalf</span><span class="p">)</span><span class="o">-</span><span class="n">Hmax</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">):</span>
     1920            <span class="k">continue</span>
    17111921        <span class="n">iabsnt</span><span class="p">,</span><span class="n">mulp</span><span class="p">,</span><span class="n">Uniq</span><span class="p">,</span><span class="n">Phi</span> <span class="o">=</span> <span class="n">G2spc</span><span class="o">.</span><span class="n">GenHKLf</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="n">hkl</span><span class="o">-</span><span class="n">hklHalf</span><span class="p">),</span><span class="n">SGData</span><span class="p">)</span>
    17121922        <span class="n">Uniq</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">Uniq</span><span class="p">,</span><span class="n">dtype</span><span class="o">=</span><span class="s">&#39;i&#39;</span><span class="p">)</span>
     
    17201930            <span class="n">dH</span> <span class="o">=</span> <span class="n">H</span><span class="o">-</span><span class="n">hkl</span>
    17211931            <span class="n">dang</span> <span class="o">=</span> <span class="n">ang</span><span class="o">-</span><span class="n">ang0</span>
    1722             <span class="k">if</span> <span class="n">np</span><span class="o">.</span><span class="n">any</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="n">dH</span><span class="p">)</span><span class="o">-</span> <span class="n">Hmax</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">):</span>    <span class="c">#keep low order DHs</span>
    1723                 <span class="k">continue</span>
    17241932            <span class="n">DH</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">dH</span><span class="p">)</span>
    17251933            <span class="n">Dphi</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">dang</span><span class="o">+.</span><span class="mi">5</span><span class="p">)</span> <span class="o">%</span> <span class="mf">1.0</span><span class="p">)</span>
     
    17691977    <span class="n">A</span> <span class="o">=</span> <span class="n">G2lat</span><span class="o">.</span><span class="n">cell2A</span><span class="p">(</span><span class="n">cell</span><span class="p">[:</span><span class="mi">6</span><span class="p">])</span>
    17701978    <span class="n">Vol</span> <span class="o">=</span> <span class="n">cell</span><span class="p">[</span><span class="mi">6</span><span class="p">]</span>
     1979    <span class="n">im</span> <span class="o">=</span> <span class="mi">0</span>
     1980    <span class="k">if</span> <span class="n">generalData</span><span class="p">[</span><span class="s">&#39;Type&#39;</span><span class="p">]</span> <span class="ow">in</span> <span class="p">[</span><span class="s">&#39;modulated&#39;</span><span class="p">,</span><span class="s">&#39;magnetic&#39;</span><span class="p">,]:</span>
     1981        <span class="n">im</span> <span class="o">=</span> <span class="mi">1</span>
    17711982    <span class="n">Hmax</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">G2lat</span><span class="o">.</span><span class="n">getHKLmax</span><span class="p">(</span><span class="n">dmin</span><span class="p">,</span><span class="n">SGData</span><span class="p">,</span><span class="n">A</span><span class="p">),</span><span class="n">dtype</span><span class="o">=</span><span class="s">&#39;i&#39;</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span>
    17721983    <span class="n">adjHKLmax</span><span class="p">(</span><span class="n">SGData</span><span class="p">,</span><span class="n">Hmax</span><span class="p">)</span>
     
    17741985    <span class="n">time0</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span>
    17751986    <span class="k">for</span> <span class="n">iref</span><span class="p">,</span><span class="n">ref</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">reflDict</span><span class="p">[</span><span class="s">&#39;RefList&#39;</span><span class="p">]):</span>
    1776         <span class="n">dsp</span> <span class="o">=</span> <span class="n">ref</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span>
    1777         <span class="k">if</span> <span class="n">dsp</span> <span class="o">&gt;=</span> <span class="n">dmin</span><span class="p">:</span>
     1987        <span class="n">dsp</span> <span class="o">=</span> <span class="n">ref</span><span class="p">[</span><span class="mi">4</span><span class="o">+</span><span class="n">im</span><span class="p">]</span>
     1988        <span class="k">if</span> <span class="n">im</span> <span class="ow">and</span> <span class="n">ref</span><span class="p">[</span><span class="mi">3</span><span class="p">]:</span>   <span class="c">#skip super lattice reflections - result is 3D projection</span>
     1989            <span class="k">continue</span>
     1990        <span class="k">if</span> <span class="n">dsp</span> <span class="o">&gt;</span> <span class="n">dmin</span><span class="p">:</span>
    17781991            <span class="n">ff</span> <span class="o">=</span> <span class="mf">0.1</span><span class="o">*</span><span class="n">Vol</span>    <span class="c">#est. no. atoms for ~10A**3/atom</span>
    17791992            <span class="k">if</span> <span class="n">FFtable</span><span class="p">:</span>
    17801993                <span class="n">SQ</span> <span class="o">=</span> <span class="mf">0.25</span><span class="o">/</span><span class="n">dsp</span><span class="o">**</span><span class="mi">2</span>
    17811994                <span class="n">ff</span> <span class="o">*=</span> <span class="n">G2el</span><span class="o">.</span><span class="n">ScatFac</span><span class="p">(</span><span class="n">FFtable</span><span class="p">,</span><span class="n">SQ</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
    1782             <span class="k">if</span> <span class="n">ref</span><span class="p">[</span><span class="mi">8</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mf">0.</span><span class="p">:</span>         <span class="c">#use only +ve Fobs**2</span>
    1783                 <span class="n">E</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">ref</span><span class="p">[</span><span class="mi">8</span><span class="p">])</span><span class="o">/</span><span class="n">ff</span>
     1995            <span class="k">if</span> <span class="n">ref</span><span class="p">[</span><span class="mi">8</span><span class="o">+</span><span class="n">im</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mf">0.</span><span class="p">:</span>         <span class="c">#use only +ve Fobs**2</span>
     1996                <span class="n">E</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">ref</span><span class="p">[</span><span class="mi">8</span><span class="o">+</span><span class="n">im</span><span class="p">])</span><span class="o">/</span><span class="n">ff</span>
    17841997            <span class="k">else</span><span class="p">:</span>
    17851998                <span class="n">E</span> <span class="o">=</span> <span class="mf">0.</span>
     
    18332046    <span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">roll</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">roll</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">roll</span><span class="p">(</span><span class="n">CErho</span><span class="p">,</span><span class="n">roll</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">),</span><span class="n">roll</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span><span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">),</span><span class="n">roll</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span><span class="n">axis</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
    18342047    <span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rhoMax&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">]),</span><span class="o">-</span><span class="n">np</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">]))</span>
    1835     <span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rollMap&#39;</span><span class="p">]</span> <span class="o">=</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="mi">0</span><span class="p">]</span>
     2048    <span class="n">mapData</span><span class="p">[</span><span class="s">&#39;minmax&#39;</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">max</span><span class="p">(</span><span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">]),</span><span class="n">np</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">])]</span>
     2049    <span class="n">mapData</span><span class="p">[</span><span class="s">&#39;Type&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">reflDict</span><span class="p">[</span><span class="s">&#39;Type&#39;</span><span class="p">]</span>
    18362050    <span class="k">return</span> <span class="n">mapData</span>
    18372051    </div>
    1838 <div class="viewcode-block" id="SearchMap"><a class="viewcode-back" href="../GSASIImath.html#GSASIImath.SearchMap">[docs]</a><span class="k">def</span> <span class="nf">SearchMap</span><span class="p">(</span><span class="n">data</span><span class="p">):</span>
     2052<div class="viewcode-block" id="findSSOffset"><a class="viewcode-back" href="../GSASIImath.html#GSASIImath.findSSOffset">[docs]</a><span class="k">def</span> <span class="nf">findSSOffset</span><span class="p">(</span><span class="n">SGData</span><span class="p">,</span><span class="n">SSGData</span><span class="p">,</span><span class="n">A</span><span class="p">,</span><span class="n">Fhklm</span><span class="p">):</span>   
     2053    <span class="sd">&#39;&#39;&#39;default doc string</span>
     2054<span class="sd">    </span>
     2055<span class="sd">    :param type name: description</span>
     2056<span class="sd">    </span>
     2057<span class="sd">    :returns: type name: description</span>
     2058<span class="sd">    </span>
     2059<span class="sd">    &#39;&#39;&#39;</span>
     2060    <span class="k">if</span> <span class="n">SGData</span><span class="p">[</span><span class="s">&#39;SpGrp&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="s">&#39;P 1&#39;</span><span class="p">:</span>
     2061        <span class="k">return</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="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">]</span>   
     2062    <span class="n">hklmShape</span> <span class="o">=</span> <span class="n">Fhklm</span><span class="o">.</span><span class="n">shape</span>
     2063    <span class="n">hklmHalf</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">hklmShape</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span>
     2064    <span class="n">sortHKLM</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">argsort</span><span class="p">(</span><span class="n">Fhklm</span><span class="o">.</span><span class="n">flatten</span><span class="p">())</span>
     2065    <span class="n">Fdict</span> <span class="o">=</span> <span class="p">{}</span>
     2066    <span class="k">for</span> <span class="n">hklm</span> <span class="ow">in</span> <span class="n">sortHKLM</span><span class="p">:</span>
     2067        <span class="n">HKLM</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">unravel_index</span><span class="p">(</span><span class="n">hklm</span><span class="p">,</span><span class="n">hklmShape</span><span class="p">)</span>
     2068        <span class="n">F</span> <span class="o">=</span> <span class="n">Fhklm</span><span class="p">[</span><span class="n">HKLM</span><span class="p">[</span><span class="mi">0</span><span class="p">]][</span><span class="n">HKLM</span><span class="p">[</span><span class="mi">1</span><span class="p">]][</span><span class="n">HKLM</span><span class="p">[</span><span class="mi">2</span><span class="p">]][</span><span class="n">HKLM</span><span class="p">[</span><span class="mi">3</span><span class="p">]]</span>
     2069        <span class="k">if</span> <span class="n">F</span> <span class="o">==</span> <span class="mf">0.</span><span class="p">:</span>
     2070            <span class="k">break</span>
     2071        <span class="n">Fdict</span><span class="p">[</span><span class="s">&#39;</span><span class="si">%.6f</span><span class="s">&#39;</span><span class="o">%</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">absolute</span><span class="p">(</span><span class="n">F</span><span class="p">))]</span> <span class="o">=</span> <span class="n">hklm</span>
     2072    <span class="n">Flist</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">flipud</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">sort</span><span class="p">(</span><span class="n">Fdict</span><span class="o">.</span><span class="n">keys</span><span class="p">()))</span>
     2073    <span class="n">F</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="mf">1.e6</span><span class="p">)</span>
     2074    <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span>
     2075    <span class="n">DH</span> <span class="o">=</span> <span class="p">[]</span>
     2076    <span class="n">Dphi</span> <span class="o">=</span> <span class="p">[]</span>
     2077    <span class="n">SSGMT</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">ops</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">T</span> <span class="k">for</span> <span class="n">ops</span> <span class="ow">in</span> <span class="n">SSGData</span><span class="p">[</span><span class="s">&#39;SSGOps&#39;</span><span class="p">]])</span>
     2078    <span class="n">SSGT</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">ops</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="k">for</span> <span class="n">ops</span> <span class="ow">in</span> <span class="n">SSGData</span><span class="p">[</span><span class="s">&#39;SSGOps&#39;</span><span class="p">]])</span>
     2079    <span class="n">Hmax</span> <span class="o">=</span> <span class="mi">2</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">G2lat</span><span class="o">.</span><span class="n">getHKLmax</span><span class="p">(</span><span class="mf">3.5</span><span class="p">,</span><span class="n">SGData</span><span class="p">,</span><span class="n">A</span><span class="p">),</span><span class="n">dtype</span><span class="o">=</span><span class="s">&#39;i&#39;</span><span class="p">)</span>
     2080    <span class="k">for</span> <span class="n">F</span> <span class="ow">in</span> <span class="n">Flist</span><span class="p">:</span>
     2081        <span class="n">hklm</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">unravel_index</span><span class="p">(</span><span class="n">Fdict</span><span class="p">[</span><span class="n">F</span><span class="p">],</span><span class="n">hklmShape</span><span class="p">)</span>
     2082        <span class="k">if</span> <span class="n">np</span><span class="o">.</span><span class="n">any</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="n">hklm</span><span class="o">-</span><span class="n">hklmHalf</span><span class="p">)[:</span><span class="mi">3</span><span class="p">]</span><span class="o">-</span><span class="n">Hmax</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">):</span>
     2083            <span class="k">continue</span>
     2084        <span class="n">Uniq</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">hklm</span><span class="o">-</span><span class="n">hklmHalf</span><span class="p">,</span><span class="n">SSGMT</span><span class="p">)</span>
     2085        <span class="n">Phi</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">hklm</span><span class="o">-</span><span class="n">hklmHalf</span><span class="p">,</span><span class="n">SSGT</span><span class="p">)</span>
     2086        <span class="n">Uniq</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">Uniq</span><span class="p">,</span><span class="o">-</span><span class="n">Uniq</span><span class="p">))</span><span class="o">+</span><span class="n">hklmHalf</span>         <span class="c"># put in Friedel pairs &amp; make as index to Farray</span>
     2087        <span class="n">Phi</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">Phi</span><span class="p">,</span><span class="o">-</span><span class="n">Phi</span><span class="p">))</span>                      <span class="c"># and their phase shifts</span>
     2088        <span class="n">Fh0</span> <span class="o">=</span> <span class="n">Fhklm</span><span class="p">[</span><span class="n">hklm</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="n">hklm</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span><span class="n">hklm</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span><span class="n">hklm</span><span class="p">[</span><span class="mi">3</span><span class="p">]]</span>
     2089        <span class="n">ang0</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">angle</span><span class="p">(</span><span class="n">Fh0</span><span class="p">,</span><span class="n">deg</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span><span class="o">/</span><span class="mf">360.</span>
     2090        <span class="k">for</span> <span class="n">H</span><span class="p">,</span><span class="n">phi</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">Uniq</span><span class="p">,</span><span class="n">Phi</span><span class="p">)[</span><span class="mi">1</span><span class="p">:]:</span>
     2091            <span class="n">ang</span> <span class="o">=</span> <span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">angle</span><span class="p">(</span><span class="n">Fhklm</span><span class="p">[</span><span class="n">H</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="n">H</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span><span class="n">H</span><span class="p">[</span><span class="mi">2</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">deg</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span><span class="o">/</span><span class="mf">360.</span><span class="o">-</span><span class="n">phi</span><span class="p">)</span>
     2092            <span class="n">dH</span> <span class="o">=</span> <span class="n">H</span><span class="o">-</span><span class="n">hklm</span>
     2093            <span class="n">dang</span> <span class="o">=</span> <span class="n">ang</span><span class="o">-</span><span class="n">ang0</span>
     2094            <span class="n">DH</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">dH</span><span class="p">)</span>
     2095            <span class="n">Dphi</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">dang</span><span class="o">+.</span><span class="mi">5</span><span class="p">)</span> <span class="o">%</span> <span class="mf">1.0</span><span class="p">)</span>
     2096        <span class="k">if</span> <span class="n">i</span> <span class="o">&gt;</span> <span class="mi">20</span> <span class="ow">or</span> <span class="nb">len</span><span class="p">(</span><span class="n">DH</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">30</span><span class="p">:</span>
     2097            <span class="k">break</span>
     2098        <span class="n">i</span> <span class="o">+=</span> <span class="mi">1</span>
     2099    <span class="n">DH</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">DH</span><span class="p">)</span>
     2100    <span class="k">print</span> <span class="s">&#39; map offset no.of terms: </span><span class="si">%d</span><span class="s"> from </span><span class="si">%d</span><span class="s"> reflections&#39;</span><span class="o">%</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">DH</span><span class="p">),</span><span class="nb">len</span><span class="p">(</span><span class="n">Flist</span><span class="p">))</span>
     2101    <span class="n">Dphi</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">Dphi</span><span class="p">)</span>
     2102    <span class="n">steps</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">hklmShape</span><span class="p">)</span>
     2103    <span class="n">X</span><span class="p">,</span><span class="n">Y</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">T</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">mgrid</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="mf">1.</span><span class="o">/</span><span class="n">steps</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="mi">1</span><span class="p">:</span><span class="mf">1.</span><span class="o">/</span><span class="n">steps</span><span class="p">[</span><span class="mi">1</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="mf">1.</span><span class="o">/</span><span class="n">steps</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="mi">1</span><span class="p">:</span><span class="mf">1.</span><span class="o">/</span><span class="n">steps</span><span class="p">[</span><span class="mi">3</span><span class="p">]]</span>
     2104    <span class="n">XYZT</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="n">X</span><span class="o">.</span><span class="n">flatten</span><span class="p">(),</span><span class="n">Y</span><span class="o">.</span><span class="n">flatten</span><span class="p">(),</span><span class="n">Z</span><span class="o">.</span><span class="n">flatten</span><span class="p">(),</span><span class="n">T</span><span class="o">.</span><span class="n">flatten</span><span class="p">()))</span>
     2105    <span class="n">Dang</span> <span class="o">=</span> <span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">XYZT</span><span class="p">,</span><span class="n">DH</span><span class="o">.</span><span class="n">T</span><span class="p">)</span><span class="o">+.</span><span class="mi">5</span><span class="p">)</span><span class="o">%</span><span class="mf">1.</span><span class="o">-</span><span class="n">Dphi</span>
     2106    <span class="n">Mmap</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">((</span><span class="n">Dang</span><span class="p">)</span><span class="o">**</span><span class="mi">2</span><span class="p">,</span><span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">),</span><span class="n">newshape</span><span class="o">=</span><span class="n">steps</span><span class="p">)</span><span class="o">/</span><span class="nb">len</span><span class="p">(</span><span class="n">DH</span><span class="p">)</span>
     2107    <span class="n">hist</span><span class="p">,</span><span class="n">bins</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">histogram</span><span class="p">(</span><span class="n">Mmap</span><span class="p">,</span><span class="n">bins</span><span class="o">=</span><span class="mi">1000</span><span class="p">)</span>
     2108<span class="c">#    for i,item in enumerate(hist[:10]):</span>
     2109<span class="c">#        print item,bins[i]</span>
     2110    <span class="n">chisq</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">Mmap</span><span class="p">)</span>
     2111    <span class="n">DX</span> <span class="o">=</span> <span class="o">-</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">unravel_index</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">argmin</span><span class="p">(</span><span class="n">Mmap</span><span class="p">),</span><span class="n">Mmap</span><span class="o">.</span><span class="n">shape</span><span class="p">))</span>
     2112    <span class="k">print</span> <span class="s">&#39; map offset chi**2: </span><span class="si">%.3f</span><span class="s">, map offset: </span><span class="si">%d</span><span class="s"> </span><span class="si">%d</span><span class="s"> </span><span class="si">%d</span><span class="s"> </span><span class="si">%d</span><span class="s">&#39;</span><span class="o">%</span><span class="p">(</span><span class="n">chisq</span><span class="p">,</span><span class="n">DX</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="n">DX</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span><span class="n">DX</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span><span class="n">DX</span><span class="p">[</span><span class="mi">3</span><span class="p">])</span>
     2113<span class="c">#    print (np.dot(DX,DH.T)+.5)%1.-Dphi</span>
     2114    <span class="k">return</span> <span class="n">DX</span>
     2115    </div>
     2116<div class="viewcode-block" id="SSChargeFlip"><a class="viewcode-back" href="../GSASIImath.html#GSASIImath.SSChargeFlip">[docs]</a><span class="k">def</span> <span class="nf">SSChargeFlip</span><span class="p">(</span><span class="n">data</span><span class="p">,</span><span class="n">reflDict</span><span class="p">,</span><span class="n">pgbar</span><span class="p">):</span>
     2117    <span class="sd">&#39;&#39;&#39;default doc string</span>
     2118<span class="sd">    </span>
     2119<span class="sd">    :param type name: description</span>
     2120<span class="sd">    </span>
     2121<span class="sd">    :returns: type name: description</span>
     2122<span class="sd">    </span>
     2123<span class="sd">    &#39;&#39;&#39;</span>
     2124    <span class="n">generalData</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="s">&#39;General&#39;</span><span class="p">]</span>
     2125    <span class="n">mapData</span> <span class="o">=</span> <span class="n">generalData</span><span class="p">[</span><span class="s">&#39;Map&#39;</span><span class="p">]</span>
     2126    <span class="n">map4DData</span> <span class="o">=</span> <span class="p">{}</span>
     2127    <span class="n">flipData</span> <span class="o">=</span> <span class="n">generalData</span><span class="p">[</span><span class="s">&#39;Flip&#39;</span><span class="p">]</span>
     2128    <span class="n">FFtable</span> <span class="o">=</span> <span class="p">{}</span>
     2129    <span class="k">if</span> <span class="s">&#39;None&#39;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">flipData</span><span class="p">[</span><span class="s">&#39;Norm element&#39;</span><span class="p">]:</span>
     2130        <span class="n">normElem</span> <span class="o">=</span> <span class="n">flipData</span><span class="p">[</span><span class="s">&#39;Norm element&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span>
     2131        <span class="n">FFs</span> <span class="o">=</span> <span class="n">G2el</span><span class="o">.</span><span class="n">GetFormFactorCoeff</span><span class="p">(</span><span class="n">normElem</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">&#39;+&#39;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">&#39;-&#39;</span><span class="p">)[</span><span class="mi">0</span><span class="p">])</span>
     2132        <span class="k">for</span> <span class="n">ff</span> <span class="ow">in</span> <span class="n">FFs</span><span class="p">:</span>
     2133            <span class="k">if</span> <span class="n">ff</span><span class="p">[</span><span class="s">&#39;Symbol&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="n">normElem</span><span class="p">:</span>
     2134                <span class="n">FFtable</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">ff</span><span class="p">)</span>
     2135    <span class="n">dmin</span> <span class="o">=</span> <span class="n">flipData</span><span class="p">[</span><span class="s">&#39;Resolution&#39;</span><span class="p">]</span>
     2136    <span class="n">SGData</span> <span class="o">=</span> <span class="n">generalData</span><span class="p">[</span><span class="s">&#39;SGData&#39;</span><span class="p">]</span>
     2137    <span class="n">SSGData</span> <span class="o">=</span> <span class="n">generalData</span><span class="p">[</span><span class="s">&#39;SSGData&#39;</span><span class="p">]</span>
     2138    <span class="n">SGMT</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">ops</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">T</span> <span class="k">for</span> <span class="n">ops</span> <span class="ow">in</span> <span class="n">SGData</span><span class="p">[</span><span class="s">&#39;SGOps&#39;</span><span class="p">]])</span>
     2139    <span class="n">SGT</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">ops</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="k">for</span> <span class="n">ops</span> <span class="ow">in</span> <span class="n">SGData</span><span class="p">[</span><span class="s">&#39;SGOps&#39;</span><span class="p">]])</span>
     2140    <span class="n">SSGMT</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">ops</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">T</span> <span class="k">for</span> <span class="n">ops</span> <span class="ow">in</span> <span class="n">SSGData</span><span class="p">[</span><span class="s">&#39;SSGOps&#39;</span><span class="p">]])</span>
     2141    <span class="n">SSGT</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">ops</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="k">for</span> <span class="n">ops</span> <span class="ow">in</span> <span class="n">SSGData</span><span class="p">[</span><span class="s">&#39;SSGOps&#39;</span><span class="p">]])</span>
     2142    <span class="n">cell</span> <span class="o">=</span> <span class="n">generalData</span><span class="p">[</span><span class="s">&#39;Cell&#39;</span><span class="p">][</span><span class="mi">1</span><span class="p">:</span><span class="mi">8</span><span class="p">]</span>       
     2143    <span class="n">A</span> <span class="o">=</span> <span class="n">G2lat</span><span class="o">.</span><span class="n">cell2A</span><span class="p">(</span><span class="n">cell</span><span class="p">[:</span><span class="mi">6</span><span class="p">])</span>
     2144    <span class="n">Vol</span> <span class="o">=</span> <span class="n">cell</span><span class="p">[</span><span class="mi">6</span><span class="p">]</span>
     2145    <span class="n">maxM</span> <span class="o">=</span> <span class="n">generalData</span><span class="p">[</span><span class="s">&#39;SuperVec&#39;</span><span class="p">][</span><span class="mi">2</span><span class="p">]</span>
     2146    <span class="n">Hmax</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">G2lat</span><span class="o">.</span><span class="n">getHKLmax</span><span class="p">(</span><span class="n">dmin</span><span class="p">,</span><span class="n">SGData</span><span class="p">,</span><span class="n">A</span><span class="p">)</span><span class="o">+</span><span class="p">[</span><span class="n">maxM</span><span class="p">,],</span><span class="n">dtype</span><span class="o">=</span><span class="s">&#39;i&#39;</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span>
     2147    <span class="n">adjHKLmax</span><span class="p">(</span><span class="n">SGData</span><span class="p">,</span><span class="n">Hmax</span><span class="p">)</span>
     2148    <span class="n">Ehkl</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="n">shape</span><span class="o">=</span><span class="mi">2</span><span class="o">*</span><span class="n">Hmax</span><span class="p">,</span><span class="n">dtype</span><span class="o">=</span><span class="s">&#39;c16&#39;</span><span class="p">)</span>       <span class="c">#2X64bits per complex no.</span>
     2149    <span class="n">time0</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span>
     2150    <span class="k">for</span> <span class="n">iref</span><span class="p">,</span><span class="n">ref</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">reflDict</span><span class="p">[</span><span class="s">&#39;RefList&#39;</span><span class="p">]):</span>
     2151        <span class="n">dsp</span> <span class="o">=</span> <span class="n">ref</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span>
     2152        <span class="k">if</span> <span class="n">dsp</span> <span class="o">&gt;</span> <span class="n">dmin</span><span class="p">:</span>
     2153            <span class="n">ff</span> <span class="o">=</span> <span class="mf">0.1</span><span class="o">*</span><span class="n">Vol</span>    <span class="c">#est. no. atoms for ~10A**3/atom</span>
     2154            <span class="k">if</span> <span class="n">FFtable</span><span class="p">:</span>
     2155                <span class="n">SQ</span> <span class="o">=</span> <span class="mf">0.25</span><span class="o">/</span><span class="n">dsp</span><span class="o">**</span><span class="mi">2</span>
     2156                <span class="n">ff</span> <span class="o">*=</span> <span class="n">G2el</span><span class="o">.</span><span class="n">ScatFac</span><span class="p">(</span><span class="n">FFtable</span><span class="p">,</span><span class="n">SQ</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
     2157            <span class="k">if</span> <span class="n">ref</span><span class="p">[</span><span class="mi">9</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mf">0.</span><span class="p">:</span>         <span class="c">#use only +ve Fobs**2</span>
     2158                <span class="n">E</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">ref</span><span class="p">[</span><span class="mi">9</span><span class="p">])</span><span class="o">/</span><span class="n">ff</span>
     2159            <span class="k">else</span><span class="p">:</span>
     2160                <span class="n">E</span> <span class="o">=</span> <span class="mf">0.</span>
     2161            <span class="n">ph</span> <span class="o">=</span> <span class="n">ref</span><span class="p">[</span><span class="mi">11</span><span class="p">]</span>
     2162            <span class="n">ph</span> <span class="o">=</span> <span class="n">rn</span><span class="o">.</span><span class="n">uniform</span><span class="p">(</span><span class="mf">0.</span><span class="p">,</span><span class="mf">360.</span><span class="p">)</span>
     2163            <span class="n">Uniq</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">ref</span><span class="p">[:</span><span class="mi">4</span><span class="p">],</span><span class="n">SSGMT</span><span class="p">)</span>
     2164            <span class="n">Phi</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">ref</span><span class="p">[:</span><span class="mi">4</span><span class="p">],</span><span class="n">SSGT</span><span class="p">)</span>
     2165            <span class="k">for</span> <span class="n">i</span><span class="p">,</span><span class="n">hklm</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">Uniq</span><span class="p">):</span>        <span class="c">#uses uniq</span>
     2166                <span class="n">hklm</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">hklm</span><span class="p">,</span><span class="n">dtype</span><span class="o">=</span><span class="s">&#39;i&#39;</span><span class="p">)</span>
     2167                <span class="n">dp</span> <span class="o">=</span> <span class="mf">360.</span><span class="o">*</span><span class="n">Phi</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>                <span class="c">#and phi</span>
     2168                <span class="n">a</span> <span class="o">=</span> <span class="n">cosd</span><span class="p">(</span><span class="n">ph</span><span class="o">+</span><span class="n">dp</span><span class="p">)</span>
     2169                <span class="n">b</span> <span class="o">=</span> <span class="n">sind</span><span class="p">(</span><span class="n">ph</span><span class="o">+</span><span class="n">dp</span><span class="p">)</span>
     2170                <span class="n">phasep</span> <span class="o">=</span> <span class="nb">complex</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="n">b</span><span class="p">)</span>
     2171                <span class="n">phasem</span> <span class="o">=</span> <span class="nb">complex</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="o">-</span><span class="n">b</span><span class="p">)</span>
     2172                <span class="n">h</span><span class="p">,</span><span class="n">k</span><span class="p">,</span><span class="n">l</span><span class="p">,</span><span class="n">m</span> <span class="o">=</span> <span class="n">hklm</span><span class="o">+</span><span class="n">Hmax</span>
     2173                <span class="n">Ehkl</span><span class="p">[</span><span class="n">h</span><span class="p">,</span><span class="n">k</span><span class="p">,</span><span class="n">l</span><span class="p">,</span><span class="n">m</span><span class="p">]</span> <span class="o">=</span> <span class="n">E</span><span class="o">*</span><span class="n">phasep</span>
     2174                <span class="n">h</span><span class="p">,</span><span class="n">k</span><span class="p">,</span><span class="n">l</span><span class="p">,</span><span class="n">m</span> <span class="o">=</span> <span class="o">-</span><span class="n">hklm</span><span class="o">+</span><span class="n">Hmax</span>       <span class="c">#Friedel pair refl.</span>
     2175                <span class="n">Ehkl</span><span class="p">[</span><span class="n">h</span><span class="p">,</span><span class="n">k</span><span class="p">,</span><span class="n">l</span><span class="p">,</span><span class="n">m</span><span class="p">]</span> <span class="o">=</span> <span class="n">E</span><span class="o">*</span><span class="n">phasem</span>
     2176<span class="c">#    Ehkl[Hmax] = 0.00001           #this to preserve F[0,0,0]</span>
     2177    <span class="n">CEhkl</span> <span class="o">=</span> <span class="n">copy</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">Ehkl</span><span class="p">)</span>
     2178    <span class="n">MEhkl</span> <span class="o">=</span> <span class="n">ma</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">Ehkl</span><span class="p">,</span><span class="n">mask</span><span class="o">=</span><span class="p">(</span><span class="n">Ehkl</span><span class="o">==</span><span class="mf">0.0</span><span class="p">))</span>
     2179    <span class="n">Emask</span> <span class="o">=</span> <span class="n">ma</span><span class="o">.</span><span class="n">getmask</span><span class="p">(</span><span class="n">MEhkl</span><span class="p">)</span>
     2180    <span class="n">sumE</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">ma</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">absolute</span><span class="p">(</span><span class="n">CEhkl</span><span class="p">),</span><span class="n">mask</span><span class="o">=</span><span class="n">Emask</span><span class="p">))</span>
     2181    <span class="n">Ncyc</span> <span class="o">=</span> <span class="mi">0</span>
     2182    <span class="n">old</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">seterr</span><span class="p">(</span><span class="nb">all</span><span class="o">=</span><span class="s">&#39;raise&#39;</span><span class="p">)</span>
     2183    <span class="k">while</span> <span class="bp">True</span><span class="p">:</span>       
     2184        <span class="n">CErho</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">real</span><span class="p">(</span><span class="n">fft</span><span class="o">.</span><span class="n">fftn</span><span class="p">(</span><span class="n">fft</span><span class="o">.</span><span class="n">fftshift</span><span class="p">(</span><span class="n">CEhkl</span><span class="p">)))</span><span class="o">*</span><span class="p">(</span><span class="mf">1.</span><span class="o">+</span><span class="mi">0j</span><span class="p">)</span>
     2185        <span class="n">CEsig</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">std</span><span class="p">(</span><span class="n">CErho</span><span class="p">)</span>
     2186        <span class="n">CFrho</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">real</span><span class="p">(</span><span class="n">CErho</span><span class="p">)</span> <span class="o">&gt;=</span> <span class="n">flipData</span><span class="p">[</span><span class="s">&#39;k-factor&#39;</span><span class="p">]</span><span class="o">*</span><span class="n">CEsig</span><span class="p">,</span><span class="n">CErho</span><span class="p">,</span><span class="o">-</span><span class="n">CErho</span><span class="p">)</span>
     2187        <span class="n">CFrho</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">real</span><span class="p">(</span><span class="n">CErho</span><span class="p">)</span> <span class="o">&lt;=</span> <span class="n">flipData</span><span class="p">[</span><span class="s">&#39;k-Max&#39;</span><span class="p">]</span><span class="o">*</span><span class="n">CEsig</span><span class="p">,</span><span class="n">CFrho</span><span class="p">,</span><span class="o">-</span><span class="n">CFrho</span><span class="p">)</span>      <span class="c">#solves U atom problem!</span>
     2188        <span class="n">CFhkl</span> <span class="o">=</span> <span class="n">fft</span><span class="o">.</span><span class="n">ifftshift</span><span class="p">(</span><span class="n">fft</span><span class="o">.</span><span class="n">ifftn</span><span class="p">(</span><span class="n">CFrho</span><span class="p">))</span>
     2189        <span class="n">CFhkl</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">CFhkl</span><span class="p">,</span><span class="n">CFhkl</span><span class="p">,</span><span class="mf">1.0</span><span class="p">)</span>           <span class="c">#avoid divide by zero</span>
     2190        <span class="n">phase</span> <span class="o">=</span> <span class="n">CFhkl</span><span class="o">/</span><span class="n">np</span><span class="o">.</span><span class="n">absolute</span><span class="p">(</span><span class="n">CFhkl</span><span class="p">)</span>
     2191        <span class="n">CEhkl</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">absolute</span><span class="p">(</span><span class="n">Ehkl</span><span class="p">)</span><span class="o">*</span><span class="n">phase</span>
     2192        <span class="n">Ncyc</span> <span class="o">+=</span> <span class="mi">1</span>
     2193        <span class="n">sumCF</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">ma</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">absolute</span><span class="p">(</span><span class="n">CFhkl</span><span class="p">),</span><span class="n">mask</span><span class="o">=</span><span class="n">Emask</span><span class="p">))</span>
     2194        <span class="n">DEhkl</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">absolute</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">absolute</span><span class="p">(</span><span class="n">Ehkl</span><span class="p">)</span><span class="o">/</span><span class="n">sumE</span><span class="o">-</span><span class="n">np</span><span class="o">.</span><span class="n">absolute</span><span class="p">(</span><span class="n">CFhkl</span><span class="p">)</span><span class="o">/</span><span class="n">sumCF</span><span class="p">)</span>
     2195        <span class="n">Rcf</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="mf">100.</span><span class="p">,</span><span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">ma</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">DEhkl</span><span class="p">,</span><span class="n">mask</span><span class="o">=</span><span class="n">Emask</span><span class="p">)</span><span class="o">*</span><span class="mf">100.</span><span class="p">))</span>
     2196        <span class="k">if</span> <span class="n">Rcf</span> <span class="o">&lt;</span> <span class="mf">5.</span><span class="p">:</span>
     2197            <span class="k">break</span>
     2198        <span class="n">GoOn</span> <span class="o">=</span> <span class="n">pgbar</span><span class="o">.</span><span class="n">Update</span><span class="p">(</span><span class="n">Rcf</span><span class="p">,</span><span class="n">newmsg</span><span class="o">=</span><span class="s">&#39;</span><span class="si">%s%8.3f%s</span><span class="se">\n</span><span class="si">%s</span><span class="s"> </span><span class="si">%d</span><span class="s">&#39;</span><span class="o">%</span><span class="p">(</span><span class="s">&#39;Residual Rcf =&#39;</span><span class="p">,</span><span class="n">Rcf</span><span class="p">,</span><span class="s">&#39;%&#39;</span><span class="p">,</span><span class="s">&#39;No.cycles = &#39;</span><span class="p">,</span><span class="n">Ncyc</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span>
     2199        <span class="k">if</span> <span class="ow">not</span> <span class="n">GoOn</span> <span class="ow">or</span> <span class="n">Ncyc</span> <span class="o">&gt;</span> <span class="mi">10000</span><span class="p">:</span>
     2200            <span class="k">break</span>
     2201    <span class="n">np</span><span class="o">.</span><span class="n">seterr</span><span class="p">(</span><span class="o">**</span><span class="n">old</span><span class="p">)</span>
     2202    <span class="k">print</span> <span class="s">&#39; Charge flip time: </span><span class="si">%.4f</span><span class="s">&#39;</span><span class="o">%</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><span class="p">),</span><span class="s">&#39;no. elements: </span><span class="si">%d</span><span class="s">&#39;</span><span class="o">%</span><span class="p">(</span><span class="n">Ehkl</span><span class="o">.</span><span class="n">size</span><span class="p">)</span>
     2203    <span class="n">CErho</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">real</span><span class="p">(</span><span class="n">fft</span><span class="o">.</span><span class="n">fftn</span><span class="p">(</span><span class="n">fft</span><span class="o">.</span><span class="n">fftshift</span><span class="p">(</span><span class="n">CEhkl</span><span class="p">[:,:,:,</span><span class="n">maxM</span><span class="o">+</span><span class="mi">1</span><span class="p">])))</span>
     2204    <span class="n">SSrho</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">real</span><span class="p">(</span><span class="n">fft</span><span class="o">.</span><span class="n">fftn</span><span class="p">(</span><span class="n">fft</span><span class="o">.</span><span class="n">fftshift</span><span class="p">(</span><span class="n">CEhkl</span><span class="p">)))</span>
     2205    <span class="k">print</span> <span class="s">&#39; No.cycles = &#39;</span><span class="p">,</span><span class="n">Ncyc</span><span class="p">,</span><span class="s">&#39;Residual Rcf =</span><span class="si">%8.3f%s</span><span class="s">&#39;</span><span class="o">%</span><span class="p">(</span><span class="n">Rcf</span><span class="p">,</span><span class="s">&#39;%&#39;</span><span class="p">)</span><span class="o">+</span><span class="s">&#39; Map size:&#39;</span><span class="p">,</span><span class="n">CErho</span><span class="o">.</span><span class="n">shape</span>
     2206    <span class="n">roll</span> <span class="o">=</span> <span class="n">findSSOffset</span><span class="p">(</span><span class="n">SGData</span><span class="p">,</span><span class="n">SSGData</span><span class="p">,</span><span class="n">A</span><span class="p">,</span><span class="n">CEhkl</span><span class="p">)</span>               <span class="c">#CEhkl needs to be just the observed set, not the full set!</span>
     2207
     2208    <span class="n">mapData</span><span class="p">[</span><span class="s">&#39;Rcf&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">Rcf</span>
     2209    <span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">roll</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">roll</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">roll</span><span class="p">(</span><span class="n">CErho</span><span class="p">,</span><span class="n">roll</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">),</span><span class="n">roll</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span><span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">),</span><span class="n">roll</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span><span class="n">axis</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
     2210    <span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rhoMax&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">]),</span><span class="o">-</span><span class="n">np</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">]))</span>
     2211    <span class="n">mapData</span><span class="p">[</span><span class="s">&#39;minmax&#39;</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">max</span><span class="p">(</span><span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">]),</span><span class="n">np</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">])]</span>
     2212    <span class="n">mapData</span><span class="p">[</span><span class="s">&#39;Type&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">reflDict</span><span class="p">[</span><span class="s">&#39;Type&#39;</span><span class="p">]</span>
     2213
     2214    <span class="n">map4DData</span><span class="p">[</span><span class="s">&#39;Rcf&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">Rcf</span>
     2215    <span class="n">map4DData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">real</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">roll</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">roll</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">roll</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">roll</span><span class="p">(</span><span class="n">SSrho</span><span class="p">,</span><span class="n">roll</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">),</span><span class="n">roll</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span><span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">),</span><span class="n">roll</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span><span class="n">axis</span><span class="o">=</span><span class="mi">2</span><span class="p">),</span><span class="n">roll</span><span class="p">[</span><span class="mi">3</span><span class="p">],</span><span class="n">axis</span><span class="o">=</span><span class="mi">3</span><span class="p">))</span>
     2216    <span class="n">map4DData</span><span class="p">[</span><span class="s">&#39;rhoMax&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">map4DData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">]),</span><span class="o">-</span><span class="n">np</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">map4DData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">]))</span>
     2217    <span class="n">map4DData</span><span class="p">[</span><span class="s">&#39;minmax&#39;</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">max</span><span class="p">(</span><span class="n">map4DData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">]),</span><span class="n">np</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">map4DData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">])]</span>
     2218    <span class="n">map4DData</span><span class="p">[</span><span class="s">&#39;Type&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">reflDict</span><span class="p">[</span><span class="s">&#39;Type&#39;</span><span class="p">]</span>
     2219    <span class="k">return</span> <span class="n">mapData</span><span class="p">,</span><span class="n">map4DData</span>
     2220    </div>
     2221<div class="viewcode-block" id="SearchMap"><a class="viewcode-back" href="../GSASIImath.html#GSASIImath.SearchMap">[docs]</a><span class="k">def</span> <span class="nf">SearchMap</span><span class="p">(</span><span class="n">generalData</span><span class="p">,</span><span class="n">drawingData</span><span class="p">,</span><span class="n">Neg</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
    18392222    <span class="sd">&#39;&#39;&#39;Does a search of a density map for peaks meeting the criterion of peak</span>
    18402223<span class="sd">    height is greater than mapData[&#39;cutOff&#39;]/100 of mapData[&#39;rhoMax&#39;] where </span>
    18412224<span class="sd">    mapData is data[&#39;General&#39;][&#39;mapData&#39;]; the map is also in mapData.</span>
    18422225
    1843 <span class="sd">    :param data: the phase data structure</span>
     2226<span class="sd">    :param generalData: the phase data structure; includes the map</span>
     2227<span class="sd">    :param drawingData: the drawing data structure</span>
     2228<span class="sd">    :param Neg:  if True then search for negative peaks (i.e. H-atoms &amp; neutron data)</span>
    18442229
    18452230<span class="sd">    :returns: (peaks,mags,dzeros) where</span>
     
    18512236<span class="sd">        * dzeros : ndarray</span>
    18522237<span class="sd">          the distance of the peaks from  the unit cell origin</span>
     2238<span class="sd">        * dcent : ndarray</span>
     2239<span class="sd">          the distance of the peaks from  the unit cell center</span>
    18532240
    18542241<span class="sd">    &#39;&#39;&#39;</span>       
     
    19052292        <span class="k">return</span> <span class="n">Vec</span><span class="p">,</span><span class="n">Hess</span>
    19062293       
    1907     <span class="n">generalData</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="s">&#39;General&#39;</span><span class="p">]</span>
    19082294    <span class="n">phaseName</span> <span class="o">=</span> <span class="n">generalData</span><span class="p">[</span><span class="s">&#39;Name&#39;</span><span class="p">]</span>
    19092295    <span class="n">SGData</span> <span class="o">=</span> <span class="n">generalData</span><span class="p">[</span><span class="s">&#39;SGData&#39;</span><span class="p">]</span>
    19102296    <span class="n">Amat</span><span class="p">,</span><span class="n">Bmat</span> <span class="o">=</span> <span class="n">G2lat</span><span class="o">.</span><span class="n">cell2AB</span><span class="p">(</span><span class="n">generalData</span><span class="p">[</span><span class="s">&#39;Cell&#39;</span><span class="p">][</span><span class="mi">1</span><span class="p">:</span><span class="mi">7</span><span class="p">])</span>
    1911     <span class="n">drawingData</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="s">&#39;Drawing&#39;</span><span class="p">]</span>
    19122297    <span class="n">peaks</span> <span class="o">=</span> <span class="p">[]</span>
    19132298    <span class="n">mags</span> <span class="o">=</span> <span class="p">[]</span>
    19142299    <span class="n">dzeros</span> <span class="o">=</span> <span class="p">[]</span>
     2300    <span class="n">dcent</span> <span class="o">=</span> <span class="p">[]</span>
    19152301    <span class="k">try</span><span class="p">:</span>
    19162302        <span class="n">mapData</span> <span class="o">=</span> <span class="n">generalData</span><span class="p">[</span><span class="s">&#39;Map&#39;</span><span class="p">]</span>
    19172303        <span class="n">contLevel</span> <span class="o">=</span> <span class="n">mapData</span><span class="p">[</span><span class="s">&#39;cutOff&#39;</span><span class="p">]</span><span class="o">*</span><span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rhoMax&#39;</span><span class="p">]</span><span class="o">/</span><span class="mf">100.</span>
    1918         <span class="n">rho</span> <span class="o">=</span> <span class="n">copy</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">])</span>     <span class="c">#don&#39;t mess up original</span>
     2304        <span class="k">if</span> <span class="n">Neg</span><span class="p">:</span>
     2305            <span class="n">rho</span> <span class="o">=</span> <span class="o">-</span><span class="n">copy</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">])</span>     <span class="c">#flip +/-</span>
     2306        <span class="k">else</span><span class="p">:</span>
     2307            <span class="n">rho</span> <span class="o">=</span> <span class="n">copy</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">])</span>     <span class="c">#don&#39;t mess up original</span>
    19192308        <span class="n">mapHalf</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">rho</span><span class="o">.</span><span class="n">shape</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span>
    19202309        <span class="n">res</span> <span class="o">=</span> <span class="n">mapData</span><span class="p">[</span><span class="s">&#39;Resolution&#39;</span><span class="p">]</span>
     
    19492338            <span class="n">peak</span> <span class="o">=</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">x1</span><span class="p">[</span><span class="mi">1</span><span class="p">:</span><span class="mi">4</span><span class="p">])</span><span class="o">-</span><span class="n">ind</span><span class="p">)</span><span class="o">/</span><span class="n">incre</span>
    19502339        <span class="n">peak</span> <span class="o">=</span> <span class="n">fixSpecialPos</span><span class="p">(</span><span class="n">peak</span><span class="p">,</span><span class="n">SGData</span><span class="p">,</span><span class="n">Amat</span><span class="p">)</span>
    1951         <span class="n">rho</span> <span class="o">=</span> <span class="n">rollMap</span><span class="p">(</span><span class="n">rho</span><span class="p">,</span><span class="o">-</span><span class="n">ind</span><span class="p">)</span>       
     2340        <span class="n">rho</span> <span class="o">=</span> <span class="n">rollMap</span><span class="p">(</span><span class="n">rho</span><span class="p">,</span><span class="o">-</span><span class="n">ind</span><span class="p">)</span>
     2341    <span class="n">cent</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">ones</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span><span class="o">*.</span><span class="mi">5</span>     
    19522342    <span class="n">dzeros</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">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">Amat</span><span class="p">,</span><span class="n">peaks</span><span class="p">)</span><span class="o">**</span><span class="mi">2</span><span class="p">,</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">))</span>
    1953     <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">peaks</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">mags</span><span class="p">,])</span><span class="o">.</span><span class="n">T</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">dzeros</span><span class="p">,])</span><span class="o">.</span><span class="n">T</span>
     2343    <span class="n">dcent</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">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">Amat</span><span class="p">,</span><span class="n">peaks</span><span class="o">-</span><span class="n">cent</span><span class="p">)</span><span class="o">**</span><span class="mi">2</span><span class="p">,</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">))</span>
     2344    <span class="k">if</span> <span class="n">Neg</span><span class="p">:</span>     <span class="c">#want negative magnitudes for negative peaks</span>
     2345        <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">peaks</span><span class="p">),</span><span class="o">-</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">mags</span><span class="p">,])</span><span class="o">.</span><span class="n">T</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">dzeros</span><span class="p">,])</span><span class="o">.</span><span class="n">T</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">dcent</span><span class="p">,])</span><span class="o">.</span><span class="n">T</span>
     2346    <span class="k">else</span><span class="p">:</span>
     2347        <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">peaks</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">mags</span><span class="p">,])</span><span class="o">.</span><span class="n">T</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">dzeros</span><span class="p">,])</span><span class="o">.</span><span class="n">T</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">dcent</span><span class="p">,])</span><span class="o">.</span><span class="n">T</span>
    19542348    </div>
    19552349<div class="viewcode-block" id="sortArray"><a class="viewcode-back" href="../GSASIImath.html#GSASIImath.sortArray">[docs]</a><span class="k">def</span> <span class="nf">sortArray</span><span class="p">(</span><span class="n">data</span><span class="p">,</span><span class="n">pos</span><span class="p">,</span><span class="n">reverse</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
     
    19592353    <span class="n">T</span> <span class="o">=</span> <span class="p">[]</span>
    19602354    <span class="k">for</span> <span class="n">i</span><span class="p">,</span><span class="n">M</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">data</span><span class="p">):</span>
    1961         <span class="n">T</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">M</span><span class="p">[</span><span class="n">pos</span><span class="p">],</span><span class="n">i</span><span class="p">))</span>
     2355        <span class="k">try</span><span class="p">:</span>
     2356            <span class="n">T</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">M</span><span class="p">[</span><span class="n">pos</span><span class="p">],</span><span class="n">i</span><span class="p">))</span>
     2357        <span class="k">except</span> <span class="ne">IndexError</span><span class="p">:</span>
     2358            <span class="k">return</span> <span class="n">data</span>
    19622359    <span class="n">D</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">T</span><span class="p">,</span><span class="n">data</span><span class="p">))</span>
    19632360    <span class="n">T</span><span class="o">.</span><span class="n">sort</span><span class="p">()</span>
     
    20152412
    20162413    <span class="k">def</span> <span class="nf">noDuplicate</span><span class="p">(</span><span class="n">xyz</span><span class="p">,</span><span class="n">peaks</span><span class="p">,</span><span class="n">Amat</span><span class="p">):</span>
    2017         <span class="k">if</span> <span class="bp">True</span> <span class="ow">in</span> <span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">allclose</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">Amat</span><span class="p">,</span><span class="n">xyz</span><span class="p">),</span><span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">Amat</span><span class="p">,</span><span class="n">peak</span><span class="p">),</span><span class="n">atol</span><span class="o">=</span><span class="mf">1.0</span><span class="p">)</span> <span class="k">for</span> <span class="n">peak</span> <span class="ow">in</span> <span class="n">peaks</span><span class="p">]:</span>
     2414        <span class="k">if</span> <span class="bp">True</span> <span class="ow">in</span> <span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">allclose</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">Amat</span><span class="p">,</span><span class="n">xyz</span><span class="p">),</span><span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">Amat</span><span class="p">,</span><span class="n">peak</span><span class="p">),</span><span class="n">atol</span><span class="o">=</span><span class="mf">0.5</span><span class="p">)</span> <span class="k">for</span> <span class="n">peak</span> <span class="ow">in</span> <span class="n">peaks</span><span class="p">]:</span>
    20182415            <span class="k">return</span> <span class="bp">False</span>
    20192416        <span class="k">return</span> <span class="bp">True</span>
     
    26773074<span class="sd">    &#39;&#39;&#39;</span>
    26783075   
    2679     <span class="n">twopi</span> <span class="o">=</span> <span class="mf">2.0</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">pi</span>
    26803076    <span class="k">global</span> <span class="n">tsum</span>
    26813077    <span class="n">tsum</span> <span class="o">=</span> <span class="mf">0.</span>
     
    30273423    <span class="n">x0</span> <span class="o">=</span> <span class="p">[</span><span class="n">parmDict</span><span class="p">[</span><span class="n">val</span><span class="p">]</span> <span class="k">for</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">varyList</span><span class="p">]</span>
    30283424    <span class="n">ifInv</span> <span class="o">=</span> <span class="n">SGData</span><span class="p">[</span><span class="s">&#39;SGInv&#39;</span><span class="p">]</span>
     3425    <span class="c"># consider replacing anneal with scipy.optimize.basinhopping</span>
    30293426    <span class="n">results</span> <span class="o">=</span> <span class="n">anneal</span><span class="p">(</span><span class="n">mcsaCalc</span><span class="p">,</span><span class="n">x0</span><span class="p">,</span><span class="n">args</span><span class="o">=</span><span class="p">(</span><span class="n">refs</span><span class="p">,</span><span class="n">rcov</span><span class="p">,</span><span class="n">cosTable</span><span class="p">,</span><span class="n">ifInv</span><span class="p">,</span><span class="n">allFF</span><span class="p">,</span><span class="n">RBdata</span><span class="p">,</span><span class="n">varyList</span><span class="p">,</span><span class="n">parmDict</span><span class="p">),</span>
    30303427        <span class="n">schedule</span><span class="o">=</span><span class="n">MCSA</span><span class="p">[</span><span class="s">&#39;Algorithm&#39;</span><span class="p">],</span> <span class="n">full_output</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
Note: See TracChangeset for help on using the changeset viewer.