Skip to content

Commit

Permalink
sym
Browse files Browse the repository at this point in the history
  • Loading branch information
Matthew Weiss committed Nov 5, 2020
1 parent 29d8e20 commit e6a409e
Show file tree
Hide file tree
Showing 25 changed files with 835 additions and 33 deletions.
Binary file modified docs/_build/doctrees/environment.pickle
Binary file not shown.
Binary file modified docs/_build/doctrees/index.doctree
Binary file not shown.
1 change: 1 addition & 0 deletions docs/_build/html/_modules/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,7 @@

<h1>All modules for which code is available</h1>
<ul><li><a href="spheres/stars.html">spheres.stars</a></li>
<li><a href="spheres/symmetrization.html">spheres.symmetrization</a></li>
<li><a href="spheres/utils.html">spheres.utils</a></li>
</ul>

Expand Down
92 changes: 91 additions & 1 deletion docs/_build/html/_modules/spheres/stars.html
Original file line number Diff line number Diff line change
Expand Up @@ -459,7 +459,7 @@ <h1>Source code for spheres.stars</h1><div class="highlight"><pre>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Takes a spin-j state and returns the cartesian coordinates on the unit sphere</span>
<span class="sd"> corresponding to its &quot;Majorana stars.&quot; Each contributes a quantum of angular </span>
<span class="sd"> momentum :math:`\\frac{1}{2}` to the overal spin.</span>
<span class="sd"> momentum :math:`\\frac{1}{2}` to the overall spin.</span>

<span class="sd"> Parameters</span>
<span class="sd"> ----------</span>
Expand Down Expand Up @@ -489,6 +489,96 @@ <h1>Source code for spheres.stars</h1><div class="highlight"><pre>
<span class="sd"> Spin-j state.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">poly_spin</span><span class="p">(</span><span class="n">roots_poly</span><span class="p">([</span><span class="n">xyz_c</span><span class="p">(</span><span class="n">star</span><span class="p">)</span> <span class="k">for</span> <span class="n">star</span> <span class="ow">in</span> <span class="n">xyz</span><span class="p">]))</span></div>

<div class="viewcode-block" id="spin_spinors"><a class="viewcode-back" href="../../index.html#spheres.stars.spin_spinors">[docs]</a><span class="k">def</span> <span class="nf">spin_spinors</span><span class="p">(</span><span class="n">spin</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Takes a spin-j state and returns its decomposition into 2j spinors.</span>

<span class="sd"> Parameters</span>
<span class="sd"> ----------</span>
<span class="sd"> spin : qt.Qobj</span>
<span class="sd"> Spin-j state.</span>

<span class="sd"> Returns</span>
<span class="sd"> -------</span>
<span class="sd"> spinors : list</span>
<span class="sd"> 2j spinors.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="p">[</span><span class="n">c_spinor</span><span class="p">(</span><span class="n">c</span><span class="p">)</span> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">poly_roots</span><span class="p">(</span><span class="n">spin_poly</span><span class="p">(</span><span class="n">spin</span><span class="p">))]</span></div>

<div class="viewcode-block" id="spinors_spin"><a class="viewcode-back" href="../../index.html#spheres.stars.spinors_spin">[docs]</a><span class="k">def</span> <span class="nf">spinors_spin</span><span class="p">(</span><span class="n">spinors</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Given 2j spinors constructs corresponding spin-j state (up to phase).</span>

<span class="sd"> Parameters</span>
<span class="sd"> ----------</span>
<span class="sd"> spinors : list</span>
<span class="sd"> 2j spinors.</span>

<span class="sd"> Returns</span>
<span class="sd"> -------</span>
<span class="sd"> spin : qt.Qobj</span>
<span class="sd"> Spin-j state.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">poly_spin</span><span class="p">(</span><span class="n">roots_poly</span><span class="p">([</span><span class="n">spinor_c</span><span class="p">(</span><span class="n">spinor</span><span class="p">)</span> <span class="k">for</span> <span class="n">spinor</span> <span class="ow">in</span> <span class="n">spinors</span><span class="p">]))</span></div>

<div class="viewcode-block" id="mobius"><a class="viewcode-back" href="../../index.html#spheres.stars.mobius">[docs]</a><span class="k">def</span> <span class="nf">mobius</span><span class="p">(</span><span class="n">abcd</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Given parameters :math:`\\begin{pmatrix} a &amp; b \\\\ b &amp; c \\end{pmatrix}`,</span>
<span class="sd"> arranged in a 2x2 matrix, returns a function which implements the </span>
<span class="sd"> corresponding `Möbius transformation &lt;https://en.wikipedia.org/wiki/M%C3%B6bius_transformation&gt;`_</span>

<span class="sd"> .. math::</span>

<span class="sd"> f(z) = \\frac{az+b}{cz+d}</span>

<span class="sd"> which acts on the extended complex plane. Note that if :math:`c \\neq 0`, we have:</span>

<span class="sd"> .. math::</span>

<span class="sd"> f(-\\frac{d}{c}) = \\infty</span>

<span class="sd"> f(\\infty) = \\frac{a}{c}</span>

<span class="sd"> And if :math:`c = 0`, we have:</span>

<span class="sd"> .. math::</span>

<span class="sd"> f(\\infty) = \\infty</span>

<span class="sd"> Parameters</span>
<span class="sd"> ----------</span>
<span class="sd"> abcd : np.ndarray or qt.Qobj</span>
<span class="sd"> 2x2 matrix representing Möbius parameters.</span>

<span class="sd"> Returns</span>
<span class="sd"> -------</span>
<span class="sd"> mobius : func</span>
<span class="sd"> A function which takes an extended complex coordinate as input, </span>
<span class="sd"> and returns an extended complex coordinate as output.</span>

<span class="sd"> Raises</span>
<span class="sd"> ------</span>
<span class="sd"> Exception</span>
<span class="sd"> If :math:`ad = bc`, then :math:`f(z) = \\frac{a}{c}`, a constant function,</span>
<span class="sd"> which doesn&#39;t qualify as a Möbius transformation.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">abcd</span><span class="p">)</span> <span class="o">==</span> <span class="n">qt</span><span class="o">.</span><span class="n">Qobj</span><span class="p">:</span>
<span class="n">abcd</span> <span class="o">=</span> <span class="n">abcd</span><span class="o">.</span><span class="n">full</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="n">c</span><span class="p">,</span> <span class="n">d</span> <span class="o">=</span> <span class="n">abcd</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span>
<span class="k">if</span> <span class="n">a</span><span class="o">*</span><span class="n">d</span> <span class="o">-</span> <span class="n">b</span><span class="o">*</span><span class="n">c</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">&quot;Möbius transformation doesn&#39;t satisfy ad-bc != 0.&quot;</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__mobius__</span><span class="p">(</span><span class="n">z</span><span class="p">):</span>
<span class="k">if</span> <span class="n">c</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span>
<span class="k">if</span> <span class="n">z</span> <span class="o">==</span> <span class="o">-</span><span class="n">d</span><span class="o">/</span><span class="n">c</span><span class="p">:</span>
<span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">inf</span>
<span class="k">if</span> <span class="n">z</span> <span class="o">==</span> <span class="n">np</span><span class="o">.</span><span class="n">inf</span><span class="p">:</span>
<span class="k">return</span> <span class="n">a</span><span class="o">/</span><span class="n">c</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">if</span> <span class="n">z</span> <span class="o">==</span> <span class="n">np</span><span class="o">.</span><span class="n">inf</span><span class="p">:</span>
<span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">inf</span>
<span class="k">return</span> <span class="p">(</span><span class="n">a</span><span class="o">*</span><span class="n">z</span> <span class="o">+</span> <span class="n">b</span><span class="p">)</span><span class="o">/</span><span class="p">(</span><span class="n">c</span><span class="o">*</span><span class="n">z</span> <span class="o">+</span> <span class="n">d</span><span class="p">)</span>
<span class="k">return</span> <span class="n">__mobius__</span></div>
</pre></div>

</div>
Expand Down

0 comments on commit e6a409e

Please sign in to comment.