mirror of
https://github.com/fjosw/pyerrors.git
synced 2025-03-16 15:20:24 +01:00
Documentation updated
This commit is contained in:
parent
3376a75a20
commit
91b01bfc60
3 changed files with 289 additions and 73 deletions
|
@ -237,8 +237,8 @@
|
|||
|
||||
<span class="sd"> Parameters</span>
|
||||
<span class="sd"> ----------</span>
|
||||
<span class="sd"> data_input : list</span>
|
||||
<span class="sd"> list of Obs or list of arrays of Obs.</span>
|
||||
<span class="sd"> data_input : list or array</span>
|
||||
<span class="sd"> list of Obs or list of arrays of Obs or array of Corrs</span>
|
||||
<span class="sd"> padding : list, optional</span>
|
||||
<span class="sd"> List with two entries where the first labels the padding</span>
|
||||
<span class="sd"> at the front of the correlator and the second the padding</span>
|
||||
|
@ -248,9 +248,39 @@
|
|||
<span class="sd"> region indentified for this correlator.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">data_input</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s1">'Corr__init__ expects a list of timeslices.'</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">data_input</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">):</span> <span class="c1"># Input is an array of Corrs</span>
|
||||
|
||||
<span class="c1"># This only works, if the array fulfills the conditions below</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">len</span><span class="p">(</span><span class="n">data_input</span><span class="o">.</span><span class="n">shape</span><span class="p">)</span> <span class="o">==</span> <span class="mi">2</span> <span class="ow">and</span> <span class="n">data_input</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="n">data_input</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]:</span>
|
||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"Incompatible array shape"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">all</span><span class="p">([</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">Corr</span><span class="p">)</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">data_input</span><span class="o">.</span><span class="n">flatten</span><span class="p">()]):</span>
|
||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"If the input is an array, its elements must be of type pe.Corr"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">all</span><span class="p">([</span><span class="n">item</span><span class="o">.</span><span class="n">N</span> <span class="o">==</span> <span class="mi">1</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">data_input</span><span class="o">.</span><span class="n">flatten</span><span class="p">()]):</span>
|
||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"Can only construct matrix correlator from single valued correlators"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">len</span><span class="p">(</span><span class="nb">set</span><span class="p">([</span><span class="n">item</span><span class="o">.</span><span class="n">T</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">data_input</span><span class="o">.</span><span class="n">flatten</span><span class="p">()]))</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"All input Correlators must be defined over the same timeslices."</span><span class="p">)</span>
|
||||
|
||||
<span class="n">T</span> <span class="o">=</span> <span class="n">data_input</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="o">.</span><span class="n">T</span>
|
||||
<span class="n">N</span> <span class="o">=</span> <span class="n">data_input</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="n">input_as_list</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">t</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">T</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="nb">any</span><span class="p">([(</span><span class="n">item</span><span class="o">.</span><span class="n">content</span><span class="p">[</span><span class="n">t</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">)</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">data_input</span><span class="o">.</span><span class="n">flatten</span><span class="p">()]):</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">all</span><span class="p">([(</span><span class="n">item</span><span class="o">.</span><span class="n">content</span><span class="p">[</span><span class="n">t</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">)</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">data_input</span><span class="o">.</span><span class="n">flatten</span><span class="p">()]):</span>
|
||||
<span class="n">warnings</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="s2">"Input ill-defined at different timeslices. Conversion leads to data loss!"</span><span class="p">,</span> <span class="ne">RuntimeWarning</span><span class="p">)</span>
|
||||
<span class="n">input_as_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">array_at_timeslace</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">empty</span><span class="p">([</span><span class="n">N</span><span class="p">,</span> <span class="n">N</span><span class="p">],</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">"object"</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">N</span><span class="p">):</span>
|
||||
<span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">N</span><span class="p">):</span>
|
||||
<span class="n">array_at_timeslace</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">=</span> <span class="n">data_input</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">][</span><span class="n">t</span><span class="p">]</span>
|
||||
<span class="n">input_as_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">array_at_timeslace</span><span class="p">)</span>
|
||||
<span class="n">data_input</span> <span class="o">=</span> <span class="n">input_as_list</span>
|
||||
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">data_input</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span>
|
||||
|
||||
<span class="k">if</span> <span class="nb">all</span><span class="p">([(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">Obs</span><span class="p">)</span> <span class="ow">or</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">CObs</span><span class="p">))</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">data_input</span><span class="p">]):</span>
|
||||
<span class="n">_assert_equal_properties</span><span class="p">(</span><span class="n">data_input</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">content</span> <span class="o">=</span> <span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">([</span><span class="n">item</span><span class="p">])</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">data_input</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="nb">all</span><span class="p">([(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">Obs</span><span class="p">)</span> <span class="ow">or</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">CObs</span><span class="p">))</span> <span class="ow">or</span> <span class="n">item</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">data_input</span><span class="p">]):</span>
|
||||
<span class="n">_assert_equal_properties</span><span class="p">([</span><span class="n">o</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">data_input</span> <span class="k">if</span> <span class="n">o</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">])</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">content</span> <span class="o">=</span> <span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">([</span><span class="n">item</span><span class="p">])</span> <span class="k">if</span> <span class="n">item</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="kc">None</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">data_input</span><span class="p">]</span>
|
||||
|
@ -258,7 +288,6 @@
|
|||
|
||||
<span class="k">elif</span> <span class="nb">all</span><span class="p">([</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">)</span> <span class="ow">or</span> <span class="n">item</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">data_input</span><span class="p">])</span> <span class="ow">and</span> <span class="nb">any</span><span class="p">([</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">)</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">data_input</span><span class="p">]):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">content</span> <span class="o">=</span> <span class="n">data_input</span>
|
||||
|
||||
<span class="n">noNull</span> <span class="o">=</span> <span class="p">[</span><span class="n">a</span> <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">content</span> <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">a</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">)]</span> <span class="c1"># To check if the matrices are correct for all undefined elements</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">N</span> <span class="o">=</span> <span class="n">noNull</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">N</span> <span class="o">></span> <span class="mi">1</span> <span class="ow">and</span> <span class="n">noNull</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="n">noNull</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]:</span>
|
||||
|
@ -267,6 +296,8 @@
|
|||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"Items in data_input are not of identical shape."</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">noNull</span><span class="p">))</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"data_input contains item of wrong type"</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"Data input was not given as list or correct array"</span><span class="p">)</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">tag</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
|
||||
|
@ -423,8 +454,27 @@
|
|||
<span class="c1"># There are two ways, the GEVP metod can be called.</span>
|
||||
<span class="c1"># 1. return_list=False will return a single eigenvector, normalized according to V*C(t_0)*V=1</span>
|
||||
<span class="c1"># 2. return_list=True will return a new eigenvector for every timeslice. The time t_s is used to order the vectors according to. arXiv:2004.10472 [hep-lat]</span>
|
||||
<span class="k">def</span> <span class="nf">GEVP</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">t0</span><span class="p">,</span> <span class="n">ts</span><span class="p">,</span> <span class="n">state</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">sorting</span><span class="o">=</span><span class="s2">"Eigenvalue"</span><span class="p">,</span> <span class="n">return_list</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">return_list</span><span class="p">:</span>
|
||||
<span class="k">def</span> <span class="nf">GEVP</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">t0</span><span class="p">,</span> <span class="n">ts</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">state</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">sorted_list</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="sd">"""Solve the general eigenvalue problem on the current correlator</span>
|
||||
|
||||
<span class="sd"> Parameters</span>
|
||||
<span class="sd"> ----------</span>
|
||||
<span class="sd"> t0 : int</span>
|
||||
<span class="sd"> The time t0 for G(t)v= lambda G(t_0)v</span>
|
||||
<span class="sd"> ts : int</span>
|
||||
<span class="sd"> fixed time G(t_s)v= lambda G(t_0)v if return_list=False</span>
|
||||
<span class="sd"> If return_list=True and sorting=Eigenvector it gives a reference point for the sorting method.</span>
|
||||
<span class="sd"> state : int</span>
|
||||
<span class="sd"> The state one is interested in ordered by energy. The lowest state is zero.</span>
|
||||
<span class="sd"> sorted list : string</span>
|
||||
<span class="sd"> if this argument is set, a list of vectors (len=self.T) is returned. If it is left as None, only one vector is returned.</span>
|
||||
<span class="sd"> "Eigenvalue" - The eigenvector is chosen according to which einvenvalue it belongs individually on every timeslice.</span>
|
||||
<span class="sd"> "Eigenvector" - Use the method described in arXiv:2004.10472 [hep-lat] to find the set of v(t) belonging to the state.</span>
|
||||
<span class="sd"> The referense state is identified by its eigenvalue at t=ts</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="n">sorted_list</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="p">(</span><span class="n">ts</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"ts is required if return_list=False"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">content</span><span class="p">[</span><span class="n">t0</span><span class="p">]</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">content</span><span class="p">[</span><span class="n">ts</span><span class="p">]</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"Corr not defined at t0/ts"</span><span class="p">)</span>
|
||||
<span class="n">G0</span><span class="p">,</span> <span class="n">Gt</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">empty</span><span class="p">([</span><span class="bp">self</span><span class="o">.</span><span class="n">N</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">N</span><span class="p">],</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">"double"</span><span class="p">),</span> <span class="n">np</span><span class="o">.</span><span class="n">empty</span><span class="p">([</span><span class="bp">self</span><span class="o">.</span><span class="n">N</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">N</span><span class="p">],</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">"double"</span><span class="p">)</span>
|
||||
|
@ -436,7 +486,8 @@
|
|||
<span class="n">sp_vecs</span> <span class="o">=</span> <span class="n">_GEVP_solver</span><span class="p">(</span><span class="n">Gt</span><span class="p">,</span> <span class="n">G0</span><span class="p">)</span>
|
||||
<span class="n">sp_vec</span> <span class="o">=</span> <span class="n">sp_vecs</span><span class="p">[</span><span class="n">state</span><span class="p">]</span>
|
||||
<span class="k">return</span> <span class="n">sp_vec</span>
|
||||
<span class="k">if</span> <span class="n">return_list</span><span class="p">:</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
|
||||
<span class="n">all_vecs</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">t</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">T</span><span class="p">):</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
|
@ -447,14 +498,16 @@
|
|||
<span class="n">Gt</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">content</span><span class="p">[</span><span class="n">t</span><span class="p">][</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span><span class="o">.</span><span class="n">value</span>
|
||||
|
||||
<span class="n">sp_vecs</span> <span class="o">=</span> <span class="n">_GEVP_solver</span><span class="p">(</span><span class="n">Gt</span><span class="p">,</span> <span class="n">G0</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">sorting</span> <span class="o">==</span> <span class="s2">"Eigenvalue"</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">sorted_list</span> <span class="o">==</span> <span class="s2">"Eigenvalue"</span><span class="p">:</span>
|
||||
<span class="n">sp_vec</span> <span class="o">=</span> <span class="n">sp_vecs</span><span class="p">[</span><span class="n">state</span><span class="p">]</span>
|
||||
<span class="n">all_vecs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">sp_vec</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">all_vecs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">sp_vecs</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
|
||||
<span class="n">all_vecs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">sorting</span> <span class="o">==</span> <span class="s2">"Eigenvector"</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">sorted_list</span> <span class="o">==</span> <span class="s2">"Eigenvector"</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="p">(</span><span class="n">ts</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"ts is required for the Eigenvector sorting method."</span><span class="p">)</span>
|
||||
<span class="n">all_vecs</span> <span class="o">=</span> <span class="n">_sort_vectors</span><span class="p">(</span><span class="n">all_vecs</span><span class="p">,</span> <span class="n">ts</span><span class="p">)</span>
|
||||
<span class="n">all_vecs</span> <span class="o">=</span> <span class="p">[</span><span class="n">a</span><span class="p">[</span><span class="n">state</span><span class="p">]</span> <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="n">all_vecs</span><span class="p">]</span>
|
||||
|
||||
|
@ -1220,8 +1273,8 @@
|
|||
|
||||
<span class="sd"> Parameters</span>
|
||||
<span class="sd"> ----------</span>
|
||||
<span class="sd"> data_input : list</span>
|
||||
<span class="sd"> list of Obs or list of arrays of Obs.</span>
|
||||
<span class="sd"> data_input : list or array</span>
|
||||
<span class="sd"> list of Obs or list of arrays of Obs or array of Corrs</span>
|
||||
<span class="sd"> padding : list, optional</span>
|
||||
<span class="sd"> List with two entries where the first labels the padding</span>
|
||||
<span class="sd"> at the front of the correlator and the second the padding</span>
|
||||
|
@ -1231,9 +1284,39 @@
|
|||
<span class="sd"> region indentified for this correlator.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">data_input</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s1">'Corr__init__ expects a list of timeslices.'</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">data_input</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">):</span> <span class="c1"># Input is an array of Corrs</span>
|
||||
|
||||
<span class="c1"># This only works, if the array fulfills the conditions below</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">len</span><span class="p">(</span><span class="n">data_input</span><span class="o">.</span><span class="n">shape</span><span class="p">)</span> <span class="o">==</span> <span class="mi">2</span> <span class="ow">and</span> <span class="n">data_input</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="n">data_input</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]:</span>
|
||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"Incompatible array shape"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">all</span><span class="p">([</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">Corr</span><span class="p">)</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">data_input</span><span class="o">.</span><span class="n">flatten</span><span class="p">()]):</span>
|
||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"If the input is an array, its elements must be of type pe.Corr"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">all</span><span class="p">([</span><span class="n">item</span><span class="o">.</span><span class="n">N</span> <span class="o">==</span> <span class="mi">1</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">data_input</span><span class="o">.</span><span class="n">flatten</span><span class="p">()]):</span>
|
||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"Can only construct matrix correlator from single valued correlators"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">len</span><span class="p">(</span><span class="nb">set</span><span class="p">([</span><span class="n">item</span><span class="o">.</span><span class="n">T</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">data_input</span><span class="o">.</span><span class="n">flatten</span><span class="p">()]))</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"All input Correlators must be defined over the same timeslices."</span><span class="p">)</span>
|
||||
|
||||
<span class="n">T</span> <span class="o">=</span> <span class="n">data_input</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="o">.</span><span class="n">T</span>
|
||||
<span class="n">N</span> <span class="o">=</span> <span class="n">data_input</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="n">input_as_list</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">t</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">T</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="nb">any</span><span class="p">([(</span><span class="n">item</span><span class="o">.</span><span class="n">content</span><span class="p">[</span><span class="n">t</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">)</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">data_input</span><span class="o">.</span><span class="n">flatten</span><span class="p">()]):</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">all</span><span class="p">([(</span><span class="n">item</span><span class="o">.</span><span class="n">content</span><span class="p">[</span><span class="n">t</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">)</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">data_input</span><span class="o">.</span><span class="n">flatten</span><span class="p">()]):</span>
|
||||
<span class="n">warnings</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="s2">"Input ill-defined at different timeslices. Conversion leads to data loss!"</span><span class="p">,</span> <span class="ne">RuntimeWarning</span><span class="p">)</span>
|
||||
<span class="n">input_as_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">array_at_timeslace</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">empty</span><span class="p">([</span><span class="n">N</span><span class="p">,</span> <span class="n">N</span><span class="p">],</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">"object"</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">N</span><span class="p">):</span>
|
||||
<span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">N</span><span class="p">):</span>
|
||||
<span class="n">array_at_timeslace</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">=</span> <span class="n">data_input</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">][</span><span class="n">t</span><span class="p">]</span>
|
||||
<span class="n">input_as_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">array_at_timeslace</span><span class="p">)</span>
|
||||
<span class="n">data_input</span> <span class="o">=</span> <span class="n">input_as_list</span>
|
||||
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">data_input</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span>
|
||||
|
||||
<span class="k">if</span> <span class="nb">all</span><span class="p">([(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">Obs</span><span class="p">)</span> <span class="ow">or</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">CObs</span><span class="p">))</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">data_input</span><span class="p">]):</span>
|
||||
<span class="n">_assert_equal_properties</span><span class="p">(</span><span class="n">data_input</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">content</span> <span class="o">=</span> <span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">([</span><span class="n">item</span><span class="p">])</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">data_input</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="nb">all</span><span class="p">([(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">Obs</span><span class="p">)</span> <span class="ow">or</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">CObs</span><span class="p">))</span> <span class="ow">or</span> <span class="n">item</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">data_input</span><span class="p">]):</span>
|
||||
<span class="n">_assert_equal_properties</span><span class="p">([</span><span class="n">o</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">data_input</span> <span class="k">if</span> <span class="n">o</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">])</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">content</span> <span class="o">=</span> <span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">([</span><span class="n">item</span><span class="p">])</span> <span class="k">if</span> <span class="n">item</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="kc">None</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">data_input</span><span class="p">]</span>
|
||||
|
@ -1241,7 +1324,6 @@
|
|||
|
||||
<span class="k">elif</span> <span class="nb">all</span><span class="p">([</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">)</span> <span class="ow">or</span> <span class="n">item</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">data_input</span><span class="p">])</span> <span class="ow">and</span> <span class="nb">any</span><span class="p">([</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">)</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">data_input</span><span class="p">]):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">content</span> <span class="o">=</span> <span class="n">data_input</span>
|
||||
|
||||
<span class="n">noNull</span> <span class="o">=</span> <span class="p">[</span><span class="n">a</span> <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">content</span> <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">a</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">)]</span> <span class="c1"># To check if the matrices are correct for all undefined elements</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">N</span> <span class="o">=</span> <span class="n">noNull</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">N</span> <span class="o">></span> <span class="mi">1</span> <span class="ow">and</span> <span class="n">noNull</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="n">noNull</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]:</span>
|
||||
|
@ -1250,6 +1332,8 @@
|
|||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"Items in data_input are not of identical shape."</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">noNull</span><span class="p">))</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"data_input contains item of wrong type"</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"Data input was not given as list or correct array"</span><span class="p">)</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">tag</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
|
||||
|
@ -1406,8 +1490,27 @@
|
|||
<span class="c1"># There are two ways, the GEVP metod can be called.</span>
|
||||
<span class="c1"># 1. return_list=False will return a single eigenvector, normalized according to V*C(t_0)*V=1</span>
|
||||
<span class="c1"># 2. return_list=True will return a new eigenvector for every timeslice. The time t_s is used to order the vectors according to. arXiv:2004.10472 [hep-lat]</span>
|
||||
<span class="k">def</span> <span class="nf">GEVP</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">t0</span><span class="p">,</span> <span class="n">ts</span><span class="p">,</span> <span class="n">state</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">sorting</span><span class="o">=</span><span class="s2">"Eigenvalue"</span><span class="p">,</span> <span class="n">return_list</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">return_list</span><span class="p">:</span>
|
||||
<span class="k">def</span> <span class="nf">GEVP</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">t0</span><span class="p">,</span> <span class="n">ts</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">state</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">sorted_list</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="sd">"""Solve the general eigenvalue problem on the current correlator</span>
|
||||
|
||||
<span class="sd"> Parameters</span>
|
||||
<span class="sd"> ----------</span>
|
||||
<span class="sd"> t0 : int</span>
|
||||
<span class="sd"> The time t0 for G(t)v= lambda G(t_0)v</span>
|
||||
<span class="sd"> ts : int</span>
|
||||
<span class="sd"> fixed time G(t_s)v= lambda G(t_0)v if return_list=False</span>
|
||||
<span class="sd"> If return_list=True and sorting=Eigenvector it gives a reference point for the sorting method.</span>
|
||||
<span class="sd"> state : int</span>
|
||||
<span class="sd"> The state one is interested in ordered by energy. The lowest state is zero.</span>
|
||||
<span class="sd"> sorted list : string</span>
|
||||
<span class="sd"> if this argument is set, a list of vectors (len=self.T) is returned. If it is left as None, only one vector is returned.</span>
|
||||
<span class="sd"> "Eigenvalue" - The eigenvector is chosen according to which einvenvalue it belongs individually on every timeslice.</span>
|
||||
<span class="sd"> "Eigenvector" - Use the method described in arXiv:2004.10472 [hep-lat] to find the set of v(t) belonging to the state.</span>
|
||||
<span class="sd"> The referense state is identified by its eigenvalue at t=ts</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="n">sorted_list</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="p">(</span><span class="n">ts</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"ts is required if return_list=False"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">content</span><span class="p">[</span><span class="n">t0</span><span class="p">]</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">content</span><span class="p">[</span><span class="n">ts</span><span class="p">]</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"Corr not defined at t0/ts"</span><span class="p">)</span>
|
||||
<span class="n">G0</span><span class="p">,</span> <span class="n">Gt</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">empty</span><span class="p">([</span><span class="bp">self</span><span class="o">.</span><span class="n">N</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">N</span><span class="p">],</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">"double"</span><span class="p">),</span> <span class="n">np</span><span class="o">.</span><span class="n">empty</span><span class="p">([</span><span class="bp">self</span><span class="o">.</span><span class="n">N</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">N</span><span class="p">],</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">"double"</span><span class="p">)</span>
|
||||
|
@ -1419,7 +1522,8 @@
|
|||
<span class="n">sp_vecs</span> <span class="o">=</span> <span class="n">_GEVP_solver</span><span class="p">(</span><span class="n">Gt</span><span class="p">,</span> <span class="n">G0</span><span class="p">)</span>
|
||||
<span class="n">sp_vec</span> <span class="o">=</span> <span class="n">sp_vecs</span><span class="p">[</span><span class="n">state</span><span class="p">]</span>
|
||||
<span class="k">return</span> <span class="n">sp_vec</span>
|
||||
<span class="k">if</span> <span class="n">return_list</span><span class="p">:</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
|
||||
<span class="n">all_vecs</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">t</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">T</span><span class="p">):</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
|
@ -1430,14 +1534,16 @@
|
|||
<span class="n">Gt</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">content</span><span class="p">[</span><span class="n">t</span><span class="p">][</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span><span class="o">.</span><span class="n">value</span>
|
||||
|
||||
<span class="n">sp_vecs</span> <span class="o">=</span> <span class="n">_GEVP_solver</span><span class="p">(</span><span class="n">Gt</span><span class="p">,</span> <span class="n">G0</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">sorting</span> <span class="o">==</span> <span class="s2">"Eigenvalue"</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">sorted_list</span> <span class="o">==</span> <span class="s2">"Eigenvalue"</span><span class="p">:</span>
|
||||
<span class="n">sp_vec</span> <span class="o">=</span> <span class="n">sp_vecs</span><span class="p">[</span><span class="n">state</span><span class="p">]</span>
|
||||
<span class="n">all_vecs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">sp_vec</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">all_vecs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">sp_vecs</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
|
||||
<span class="n">all_vecs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">sorting</span> <span class="o">==</span> <span class="s2">"Eigenvector"</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">sorted_list</span> <span class="o">==</span> <span class="s2">"Eigenvector"</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="p">(</span><span class="n">ts</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"ts is required for the Eigenvector sorting method."</span><span class="p">)</span>
|
||||
<span class="n">all_vecs</span> <span class="o">=</span> <span class="n">_sort_vectors</span><span class="p">(</span><span class="n">all_vecs</span><span class="p">,</span> <span class="n">ts</span><span class="p">)</span>
|
||||
<span class="n">all_vecs</span> <span class="o">=</span> <span class="p">[</span><span class="n">a</span><span class="p">[</span><span class="n">state</span><span class="p">]</span> <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="n">all_vecs</span><span class="p">]</span>
|
||||
|
||||
|
@ -2152,8 +2258,8 @@ smearing matrix at every timeslice. Other dependency (eg. spatial) are not suppo
|
|||
|
||||
<span class="sd"> Parameters</span>
|
||||
<span class="sd"> ----------</span>
|
||||
<span class="sd"> data_input : list</span>
|
||||
<span class="sd"> list of Obs or list of arrays of Obs.</span>
|
||||
<span class="sd"> data_input : list or array</span>
|
||||
<span class="sd"> list of Obs or list of arrays of Obs or array of Corrs</span>
|
||||
<span class="sd"> padding : list, optional</span>
|
||||
<span class="sd"> List with two entries where the first labels the padding</span>
|
||||
<span class="sd"> at the front of the correlator and the second the padding</span>
|
||||
|
@ -2163,9 +2269,39 @@ smearing matrix at every timeslice. Other dependency (eg. spatial) are not suppo
|
|||
<span class="sd"> region indentified for this correlator.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">data_input</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s1">'Corr__init__ expects a list of timeslices.'</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">data_input</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">):</span> <span class="c1"># Input is an array of Corrs</span>
|
||||
|
||||
<span class="c1"># This only works, if the array fulfills the conditions below</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">len</span><span class="p">(</span><span class="n">data_input</span><span class="o">.</span><span class="n">shape</span><span class="p">)</span> <span class="o">==</span> <span class="mi">2</span> <span class="ow">and</span> <span class="n">data_input</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="n">data_input</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]:</span>
|
||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"Incompatible array shape"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">all</span><span class="p">([</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">Corr</span><span class="p">)</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">data_input</span><span class="o">.</span><span class="n">flatten</span><span class="p">()]):</span>
|
||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"If the input is an array, its elements must be of type pe.Corr"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">all</span><span class="p">([</span><span class="n">item</span><span class="o">.</span><span class="n">N</span> <span class="o">==</span> <span class="mi">1</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">data_input</span><span class="o">.</span><span class="n">flatten</span><span class="p">()]):</span>
|
||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"Can only construct matrix correlator from single valued correlators"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">len</span><span class="p">(</span><span class="nb">set</span><span class="p">([</span><span class="n">item</span><span class="o">.</span><span class="n">T</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">data_input</span><span class="o">.</span><span class="n">flatten</span><span class="p">()]))</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"All input Correlators must be defined over the same timeslices."</span><span class="p">)</span>
|
||||
|
||||
<span class="n">T</span> <span class="o">=</span> <span class="n">data_input</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="o">.</span><span class="n">T</span>
|
||||
<span class="n">N</span> <span class="o">=</span> <span class="n">data_input</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="n">input_as_list</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">t</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">T</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="nb">any</span><span class="p">([(</span><span class="n">item</span><span class="o">.</span><span class="n">content</span><span class="p">[</span><span class="n">t</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">)</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">data_input</span><span class="o">.</span><span class="n">flatten</span><span class="p">()]):</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">all</span><span class="p">([(</span><span class="n">item</span><span class="o">.</span><span class="n">content</span><span class="p">[</span><span class="n">t</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">)</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">data_input</span><span class="o">.</span><span class="n">flatten</span><span class="p">()]):</span>
|
||||
<span class="n">warnings</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="s2">"Input ill-defined at different timeslices. Conversion leads to data loss!"</span><span class="p">,</span> <span class="ne">RuntimeWarning</span><span class="p">)</span>
|
||||
<span class="n">input_as_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">array_at_timeslace</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">empty</span><span class="p">([</span><span class="n">N</span><span class="p">,</span> <span class="n">N</span><span class="p">],</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">"object"</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">N</span><span class="p">):</span>
|
||||
<span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">N</span><span class="p">):</span>
|
||||
<span class="n">array_at_timeslace</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">=</span> <span class="n">data_input</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">][</span><span class="n">t</span><span class="p">]</span>
|
||||
<span class="n">input_as_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">array_at_timeslace</span><span class="p">)</span>
|
||||
<span class="n">data_input</span> <span class="o">=</span> <span class="n">input_as_list</span>
|
||||
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">data_input</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span>
|
||||
|
||||
<span class="k">if</span> <span class="nb">all</span><span class="p">([(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">Obs</span><span class="p">)</span> <span class="ow">or</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">CObs</span><span class="p">))</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">data_input</span><span class="p">]):</span>
|
||||
<span class="n">_assert_equal_properties</span><span class="p">(</span><span class="n">data_input</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">content</span> <span class="o">=</span> <span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">([</span><span class="n">item</span><span class="p">])</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">data_input</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="nb">all</span><span class="p">([(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">Obs</span><span class="p">)</span> <span class="ow">or</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">CObs</span><span class="p">))</span> <span class="ow">or</span> <span class="n">item</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">data_input</span><span class="p">]):</span>
|
||||
<span class="n">_assert_equal_properties</span><span class="p">([</span><span class="n">o</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">data_input</span> <span class="k">if</span> <span class="n">o</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">])</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">content</span> <span class="o">=</span> <span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">([</span><span class="n">item</span><span class="p">])</span> <span class="k">if</span> <span class="n">item</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="kc">None</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">data_input</span><span class="p">]</span>
|
||||
|
@ -2173,7 +2309,6 @@ smearing matrix at every timeslice. Other dependency (eg. spatial) are not suppo
|
|||
|
||||
<span class="k">elif</span> <span class="nb">all</span><span class="p">([</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">)</span> <span class="ow">or</span> <span class="n">item</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">data_input</span><span class="p">])</span> <span class="ow">and</span> <span class="nb">any</span><span class="p">([</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">)</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">data_input</span><span class="p">]):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">content</span> <span class="o">=</span> <span class="n">data_input</span>
|
||||
|
||||
<span class="n">noNull</span> <span class="o">=</span> <span class="p">[</span><span class="n">a</span> <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">content</span> <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">a</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">)]</span> <span class="c1"># To check if the matrices are correct for all undefined elements</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">N</span> <span class="o">=</span> <span class="n">noNull</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">N</span> <span class="o">></span> <span class="mi">1</span> <span class="ow">and</span> <span class="n">noNull</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="n">noNull</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]:</span>
|
||||
|
@ -2182,6 +2317,8 @@ smearing matrix at every timeslice. Other dependency (eg. spatial) are not suppo
|
|||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"Items in data_input are not of identical shape."</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">noNull</span><span class="p">))</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"data_input contains item of wrong type"</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"Data input was not given as list or correct array"</span><span class="p">)</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">tag</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
|
||||
|
@ -2201,8 +2338,8 @@ smearing matrix at every timeslice. Other dependency (eg. spatial) are not suppo
|
|||
<h6 id="parameters">Parameters</h6>
|
||||
|
||||
<ul>
|
||||
<li><strong>data_input</strong> (list):
|
||||
list of Obs or list of arrays of Obs.</li>
|
||||
<li><strong>data_input</strong> (list or array):
|
||||
list of Obs or list of arrays of Obs or array of Corrs</li>
|
||||
<li><strong>padding</strong> (list, optional):
|
||||
List with two entries where the first labels the padding
|
||||
at the front of the correlator and the second the padding
|
||||
|
@ -2498,13 +2635,32 @@ timeslice and the error on each timeslice.</p>
|
|||
|
||||
|
||||
<span class="def">def</span>
|
||||
<span class="name">GEVP</span><span class="signature">(self, t0, ts, state=0, sorting='Eigenvalue', return_list=False)</span>:
|
||||
<span class="name">GEVP</span><span class="signature">(self, t0, ts=None, state=0, sorted_list=None)</span>:
|
||||
</div>
|
||||
|
||||
<details>
|
||||
<summary>View Source</summary>
|
||||
<div class="codehilite"><pre><span></span> <span class="k">def</span> <span class="nf">GEVP</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">t0</span><span class="p">,</span> <span class="n">ts</span><span class="p">,</span> <span class="n">state</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">sorting</span><span class="o">=</span><span class="s2">"Eigenvalue"</span><span class="p">,</span> <span class="n">return_list</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">return_list</span><span class="p">:</span>
|
||||
<div class="codehilite"><pre><span></span> <span class="k">def</span> <span class="nf">GEVP</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">t0</span><span class="p">,</span> <span class="n">ts</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">state</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">sorted_list</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="sd">"""Solve the general eigenvalue problem on the current correlator</span>
|
||||
|
||||
<span class="sd"> Parameters</span>
|
||||
<span class="sd"> ----------</span>
|
||||
<span class="sd"> t0 : int</span>
|
||||
<span class="sd"> The time t0 for G(t)v= lambda G(t_0)v</span>
|
||||
<span class="sd"> ts : int</span>
|
||||
<span class="sd"> fixed time G(t_s)v= lambda G(t_0)v if return_list=False</span>
|
||||
<span class="sd"> If return_list=True and sorting=Eigenvector it gives a reference point for the sorting method.</span>
|
||||
<span class="sd"> state : int</span>
|
||||
<span class="sd"> The state one is interested in ordered by energy. The lowest state is zero.</span>
|
||||
<span class="sd"> sorted list : string</span>
|
||||
<span class="sd"> if this argument is set, a list of vectors (len=self.T) is returned. If it is left as None, only one vector is returned.</span>
|
||||
<span class="sd"> "Eigenvalue" - The eigenvector is chosen according to which einvenvalue it belongs individually on every timeslice.</span>
|
||||
<span class="sd"> "Eigenvector" - Use the method described in arXiv:2004.10472 [hep-lat] to find the set of v(t) belonging to the state.</span>
|
||||
<span class="sd"> The referense state is identified by its eigenvalue at t=ts</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="n">sorted_list</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="p">(</span><span class="n">ts</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"ts is required if return_list=False"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">content</span><span class="p">[</span><span class="n">t0</span><span class="p">]</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">content</span><span class="p">[</span><span class="n">ts</span><span class="p">]</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"Corr not defined at t0/ts"</span><span class="p">)</span>
|
||||
<span class="n">G0</span><span class="p">,</span> <span class="n">Gt</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">empty</span><span class="p">([</span><span class="bp">self</span><span class="o">.</span><span class="n">N</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">N</span><span class="p">],</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">"double"</span><span class="p">),</span> <span class="n">np</span><span class="o">.</span><span class="n">empty</span><span class="p">([</span><span class="bp">self</span><span class="o">.</span><span class="n">N</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">N</span><span class="p">],</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">"double"</span><span class="p">)</span>
|
||||
|
@ -2516,7 +2672,8 @@ timeslice and the error on each timeslice.</p>
|
|||
<span class="n">sp_vecs</span> <span class="o">=</span> <span class="n">_GEVP_solver</span><span class="p">(</span><span class="n">Gt</span><span class="p">,</span> <span class="n">G0</span><span class="p">)</span>
|
||||
<span class="n">sp_vec</span> <span class="o">=</span> <span class="n">sp_vecs</span><span class="p">[</span><span class="n">state</span><span class="p">]</span>
|
||||
<span class="k">return</span> <span class="n">sp_vec</span>
|
||||
<span class="k">if</span> <span class="n">return_list</span><span class="p">:</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
|
||||
<span class="n">all_vecs</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">t</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">T</span><span class="p">):</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
|
@ -2527,14 +2684,16 @@ timeslice and the error on each timeslice.</p>
|
|||
<span class="n">Gt</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">content</span><span class="p">[</span><span class="n">t</span><span class="p">][</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span><span class="o">.</span><span class="n">value</span>
|
||||
|
||||
<span class="n">sp_vecs</span> <span class="o">=</span> <span class="n">_GEVP_solver</span><span class="p">(</span><span class="n">Gt</span><span class="p">,</span> <span class="n">G0</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">sorting</span> <span class="o">==</span> <span class="s2">"Eigenvalue"</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">sorted_list</span> <span class="o">==</span> <span class="s2">"Eigenvalue"</span><span class="p">:</span>
|
||||
<span class="n">sp_vec</span> <span class="o">=</span> <span class="n">sp_vecs</span><span class="p">[</span><span class="n">state</span><span class="p">]</span>
|
||||
<span class="n">all_vecs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">sp_vec</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">all_vecs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">sp_vecs</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
|
||||
<span class="n">all_vecs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">sorting</span> <span class="o">==</span> <span class="s2">"Eigenvector"</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">sorted_list</span> <span class="o">==</span> <span class="s2">"Eigenvector"</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="p">(</span><span class="n">ts</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"ts is required for the Eigenvector sorting method."</span><span class="p">)</span>
|
||||
<span class="n">all_vecs</span> <span class="o">=</span> <span class="n">_sort_vectors</span><span class="p">(</span><span class="n">all_vecs</span><span class="p">,</span> <span class="n">ts</span><span class="p">)</span>
|
||||
<span class="n">all_vecs</span> <span class="o">=</span> <span class="p">[</span><span class="n">a</span><span class="p">[</span><span class="n">state</span><span class="p">]</span> <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="n">all_vecs</span><span class="p">]</span>
|
||||
|
||||
|
@ -2543,6 +2702,25 @@ timeslice and the error on each timeslice.</p>
|
|||
|
||||
</details>
|
||||
|
||||
<div class="docstring"><p>Solve the general eigenvalue problem on the current correlator</p>
|
||||
|
||||
<h6 id="parameters">Parameters</h6>
|
||||
|
||||
<ul>
|
||||
<li><strong>t0</strong> (int):
|
||||
The time t0 for G(t)v= lambda G(t_0)v</li>
|
||||
<li><strong>ts</strong> (int):
|
||||
fixed time G(t_s)v= lambda G(t_0)v if return_list=False
|
||||
If return_list=True and sorting=Eigenvector it gives a reference point for the sorting method.</li>
|
||||
<li><strong>state</strong> (int):
|
||||
The state one is interested in ordered by energy. The lowest state is zero.</li>
|
||||
<li><strong>sorted list</strong> (string):
|
||||
if this argument is set, a list of vectors (len=self.T) is returned. If it is left as None, only one vector is returned.
|
||||
"Eigenvalue" - The eigenvector is chosen according to which einvenvalue it belongs individually on every timeslice.
|
||||
"Eigenvector" - Use the method described in arXiv:2004.10472 [hep-lat] to find the set of v(t) belonging to the state.
|
||||
The referense state is identified by its eigenvalue at t=ts</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
|
|
@ -266,6 +266,11 @@
|
|||
<span class="n">dat</span><span class="p">[</span><span class="s1">'tag'</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">corr_meta_data</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">dat</span><span class="p">[</span><span class="s1">'tag'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">corr_meta_data</span><span class="p">]</span>
|
||||
<span class="n">taglist</span> <span class="o">=</span> <span class="n">dat</span><span class="p">[</span><span class="s1">'tag'</span><span class="p">]</span>
|
||||
<span class="n">dat</span><span class="p">[</span><span class="s1">'tag'</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> <span class="c1"># tag is now a dictionary, that contains the previous taglist in the key "tag"</span>
|
||||
<span class="n">dat</span><span class="p">[</span><span class="s1">'tag'</span><span class="p">][</span><span class="s1">'tag'</span><span class="p">]</span> <span class="o">=</span> <span class="n">taglist</span>
|
||||
<span class="k">if</span> <span class="n">my_corr</span><span class="o">.</span><span class="n">prange</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">dat</span><span class="p">[</span><span class="s1">'tag'</span><span class="p">][</span><span class="s1">'prange'</span><span class="p">]</span> <span class="o">=</span> <span class="n">my_corr</span><span class="o">.</span><span class="n">prange</span>
|
||||
<span class="k">return</span> <span class="n">dat</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">ol</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span>
|
||||
|
@ -475,7 +480,19 @@
|
|||
<span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">ret</span><span class="p">,</span> <span class="n">layout</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_Corr_from_dict</span><span class="p">(</span><span class="n">o</span><span class="p">):</span>
|
||||
<span class="n">taglist</span> <span class="o">=</span> <span class="n">o</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'tag'</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">o</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'tag'</span><span class="p">),</span> <span class="nb">list</span><span class="p">):</span> <span class="c1"># supports the old way</span>
|
||||
<span class="n">taglist</span> <span class="o">=</span> <span class="n">o</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'tag'</span><span class="p">)</span> <span class="c1"># This had to be modified to get the taglist from the dictionary</span>
|
||||
<span class="n">temp_prange</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">o</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'tag'</span><span class="p">),</span> <span class="nb">dict</span><span class="p">):</span>
|
||||
<span class="n">tagdic</span> <span class="o">=</span> <span class="n">o</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'tag'</span><span class="p">)</span>
|
||||
<span class="n">taglist</span> <span class="o">=</span> <span class="n">tagdic</span><span class="p">[</span><span class="s1">'tag'</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="s1">'prange'</span> <span class="ow">in</span> <span class="n">tagdic</span><span class="p">:</span>
|
||||
<span class="n">temp_prange</span> <span class="o">=</span> <span class="n">tagdic</span><span class="p">[</span><span class="s1">'prange'</span><span class="p">]</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">temp_prange</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"The tag is not a list or dict"</span><span class="p">)</span>
|
||||
|
||||
<span class="n">corr_tag</span> <span class="o">=</span> <span class="n">taglist</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
|
||||
<span class="n">tmp_o</span> <span class="o">=</span> <span class="n">o</span>
|
||||
<span class="n">tmp_o</span><span class="p">[</span><span class="s1">'tag'</span><span class="p">]</span> <span class="o">=</span> <span class="n">taglist</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
|
||||
|
@ -485,6 +502,8 @@
|
|||
<span class="n">my_corr</span> <span class="o">=</span> <span class="n">Corr</span><span class="p">([</span><span class="kc">None</span> <span class="k">if</span> <span class="n">np</span><span class="o">.</span><span class="n">isnan</span><span class="p">(</span><span class="n">o</span><span class="o">.</span><span class="n">ravel</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">value</span><span class="p">)</span> <span class="k">else</span> <span class="n">o</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="nb">list</span><span class="p">(</span><span class="n">dat</span><span class="p">)])</span>
|
||||
<span class="k">if</span> <span class="n">corr_tag</span> <span class="o">!=</span> <span class="s1">'None'</span><span class="p">:</span>
|
||||
<span class="n">my_corr</span><span class="o">.</span><span class="n">tag</span> <span class="o">=</span> <span class="n">corr_tag</span>
|
||||
|
||||
<span class="n">my_corr</span><span class="o">.</span><span class="n">prange</span> <span class="o">=</span> <span class="n">temp_prange</span>
|
||||
<span class="k">return</span> <span class="n">my_corr</span>
|
||||
|
||||
<span class="n">json_dict</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">loads</span><span class="p">(</span><span class="n">json_string</span><span class="p">)</span>
|
||||
|
@ -756,6 +775,11 @@
|
|||
<span class="n">dat</span><span class="p">[</span><span class="s1">'tag'</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">corr_meta_data</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">dat</span><span class="p">[</span><span class="s1">'tag'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">corr_meta_data</span><span class="p">]</span>
|
||||
<span class="n">taglist</span> <span class="o">=</span> <span class="n">dat</span><span class="p">[</span><span class="s1">'tag'</span><span class="p">]</span>
|
||||
<span class="n">dat</span><span class="p">[</span><span class="s1">'tag'</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> <span class="c1"># tag is now a dictionary, that contains the previous taglist in the key "tag"</span>
|
||||
<span class="n">dat</span><span class="p">[</span><span class="s1">'tag'</span><span class="p">][</span><span class="s1">'tag'</span><span class="p">]</span> <span class="o">=</span> <span class="n">taglist</span>
|
||||
<span class="k">if</span> <span class="n">my_corr</span><span class="o">.</span><span class="n">prange</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">dat</span><span class="p">[</span><span class="s1">'tag'</span><span class="p">][</span><span class="s1">'prange'</span><span class="p">]</span> <span class="o">=</span> <span class="n">my_corr</span><span class="o">.</span><span class="n">prange</span>
|
||||
<span class="k">return</span> <span class="n">dat</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">ol</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span>
|
||||
|
@ -1032,7 +1056,19 @@ If True, the output is a gzipped json. If False, the output is a json file.</li>
|
|||
<span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">ret</span><span class="p">,</span> <span class="n">layout</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_Corr_from_dict</span><span class="p">(</span><span class="n">o</span><span class="p">):</span>
|
||||
<span class="n">taglist</span> <span class="o">=</span> <span class="n">o</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'tag'</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">o</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'tag'</span><span class="p">),</span> <span class="nb">list</span><span class="p">):</span> <span class="c1"># supports the old way</span>
|
||||
<span class="n">taglist</span> <span class="o">=</span> <span class="n">o</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'tag'</span><span class="p">)</span> <span class="c1"># This had to be modified to get the taglist from the dictionary</span>
|
||||
<span class="n">temp_prange</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">o</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'tag'</span><span class="p">),</span> <span class="nb">dict</span><span class="p">):</span>
|
||||
<span class="n">tagdic</span> <span class="o">=</span> <span class="n">o</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'tag'</span><span class="p">)</span>
|
||||
<span class="n">taglist</span> <span class="o">=</span> <span class="n">tagdic</span><span class="p">[</span><span class="s1">'tag'</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="s1">'prange'</span> <span class="ow">in</span> <span class="n">tagdic</span><span class="p">:</span>
|
||||
<span class="n">temp_prange</span> <span class="o">=</span> <span class="n">tagdic</span><span class="p">[</span><span class="s1">'prange'</span><span class="p">]</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">temp_prange</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"The tag is not a list or dict"</span><span class="p">)</span>
|
||||
|
||||
<span class="n">corr_tag</span> <span class="o">=</span> <span class="n">taglist</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
|
||||
<span class="n">tmp_o</span> <span class="o">=</span> <span class="n">o</span>
|
||||
<span class="n">tmp_o</span><span class="p">[</span><span class="s1">'tag'</span><span class="p">]</span> <span class="o">=</span> <span class="n">taglist</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
|
||||
|
@ -1042,6 +1078,8 @@ If True, the output is a gzipped json. If False, the output is a json file.</li>
|
|||
<span class="n">my_corr</span> <span class="o">=</span> <span class="n">Corr</span><span class="p">([</span><span class="kc">None</span> <span class="k">if</span> <span class="n">np</span><span class="o">.</span><span class="n">isnan</span><span class="p">(</span><span class="n">o</span><span class="o">.</span><span class="n">ravel</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">value</span><span class="p">)</span> <span class="k">else</span> <span class="n">o</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="nb">list</span><span class="p">(</span><span class="n">dat</span><span class="p">)])</span>
|
||||
<span class="k">if</span> <span class="n">corr_tag</span> <span class="o">!=</span> <span class="s1">'None'</span><span class="p">:</span>
|
||||
<span class="n">my_corr</span><span class="o">.</span><span class="n">tag</span> <span class="o">=</span> <span class="n">corr_tag</span>
|
||||
|
||||
<span class="n">my_corr</span><span class="o">.</span><span class="n">prange</span> <span class="o">=</span> <span class="n">temp_prange</span>
|
||||
<span class="k">return</span> <span class="n">my_corr</span>
|
||||
|
||||
<span class="n">json_dict</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">loads</span><span class="p">(</span><span class="n">json_string</span><span class="p">)</span>
|
||||
|
|
File diff suppressed because one or more lines are too long
Loading…
Add table
Reference in a new issue