Documentation updated

This commit is contained in:
fjosw 2025-10-19 10:29:24 +00:00
commit 1eb6305597
3 changed files with 125 additions and 119 deletions

View file

@ -1648,112 +1648,114 @@
</span><span id="L-1405"><a href="#L-1405"><span class="linenos">1405</span></a> <span class="n">tmpmat</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">Ntrunc</span><span class="p">,</span> <span class="n">Ntrunc</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="nb">object</span><span class="p">)</span>
</span><span id="L-1406"><a href="#L-1406"><span class="linenos">1406</span></a> <span class="n">rmat</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="L-1407"><a href="#L-1407"><span class="linenos">1407</span></a> <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">basematrix</span><span class="o">.</span><span class="n">T</span><span class="p">):</span>
</span><span id="L-1408"><a href="#L-1408"><span class="linenos">1408</span></a> <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">Ntrunc</span><span class="p">):</span>
</span><span id="L-1409"><a href="#L-1409"><span class="linenos">1409</span></a> <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">Ntrunc</span><span class="p">):</span>
</span><span id="L-1410"><a href="#L-1410"><span class="linenos">1410</span></a> <span class="n">tmpmat</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">evecs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">T</span> <span class="o">@</span> <span class="bp">self</span><span class="p">[</span><span class="n">t</span><span class="p">]</span> <span class="o">@</span> <span class="n">evecs</span><span class="p">[</span><span class="n">j</span><span class="p">]</span>
</span><span id="L-1411"><a href="#L-1411"><span class="linenos">1411</span></a> <span class="n">rmat</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">tmpmat</span><span class="p">))</span>
</span><span id="L-1412"><a href="#L-1412"><span class="linenos">1412</span></a>
</span><span id="L-1413"><a href="#L-1413"><span class="linenos">1413</span></a> <span class="n">newcontent</span> <span class="o">=</span> <span class="p">[</span><span class="kc">None</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">t</span><span class="p">]</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">)</span> <span class="k">else</span> <span class="n">rmat</span><span class="p">[</span><span class="n">t</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><span id="L-1414"><a href="#L-1414"><span class="linenos">1414</span></a> <span class="k">return</span> <span class="n">Corr</span><span class="p">(</span><span class="n">newcontent</span><span class="p">)</span>
</span><span id="L-1408"><a href="#L-1408"><span class="linenos">1408</span></a> <span class="k">if</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="ow">is</span> <span class="kc">None</span><span class="p">:</span>
</span><span id="L-1409"><a href="#L-1409"><span class="linenos">1409</span></a> <span class="n">rmat</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span>
</span><span id="L-1410"><a href="#L-1410"><span class="linenos">1410</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-1411"><a href="#L-1411"><span class="linenos">1411</span></a> <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">Ntrunc</span><span class="p">):</span>
</span><span id="L-1412"><a href="#L-1412"><span class="linenos">1412</span></a> <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">Ntrunc</span><span class="p">):</span>
</span><span id="L-1413"><a href="#L-1413"><span class="linenos">1413</span></a> <span class="n">tmpmat</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">evecs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">T</span> <span class="o">@</span> <span class="bp">self</span><span class="p">[</span><span class="n">t</span><span class="p">]</span> <span class="o">@</span> <span class="n">evecs</span><span class="p">[</span><span class="n">j</span><span class="p">]</span>
</span><span id="L-1414"><a href="#L-1414"><span class="linenos">1414</span></a> <span class="n">rmat</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">tmpmat</span><span class="p">))</span>
</span><span id="L-1415"><a href="#L-1415"><span class="linenos">1415</span></a>
</span><span id="L-1416"><a href="#L-1416"><span class="linenos">1416</span></a>
</span><span id="L-1417"><a href="#L-1417"><span class="linenos">1417</span></a><span class="k">def</span><span class="w"> </span><span class="nf">_sort_vectors</span><span class="p">(</span><span class="n">vec_set_in</span><span class="p">,</span> <span class="n">ts</span><span class="p">):</span>
</span><span id="L-1418"><a href="#L-1418"><span class="linenos">1418</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Helper function used to find a set of Eigenvectors consistent over all timeslices&quot;&quot;&quot;</span>
</span><span id="L-1419"><a href="#L-1419"><span class="linenos">1419</span></a>
</span><span id="L-1420"><a href="#L-1420"><span class="linenos">1420</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">vec_set_in</span><span class="p">[</span><span class="n">ts</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span> <span class="n">Obs</span><span class="p">):</span>
</span><span id="L-1421"><a href="#L-1421"><span class="linenos">1421</span></a> <span class="n">vec_set</span> <span class="o">=</span> <span class="p">[</span><span class="n">anp</span><span class="o">.</span><span class="n">vectorize</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="nb">float</span><span class="p">(</span><span class="n">x</span><span class="p">))(</span><span class="n">vi</span><span class="p">)</span> <span class="k">if</span> <span class="n">vi</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">vi</span> <span class="k">for</span> <span class="n">vi</span> <span class="ow">in</span> <span class="n">vec_set_in</span><span class="p">]</span>
</span><span id="L-1422"><a href="#L-1422"><span class="linenos">1422</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-1423"><a href="#L-1423"><span class="linenos">1423</span></a> <span class="n">vec_set</span> <span class="o">=</span> <span class="n">vec_set_in</span>
</span><span id="L-1424"><a href="#L-1424"><span class="linenos">1424</span></a> <span class="n">reference_sorting</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">vec_set</span><span class="p">[</span><span class="n">ts</span><span class="p">])</span>
</span><span id="L-1425"><a href="#L-1425"><span class="linenos">1425</span></a> <span class="n">N</span> <span class="o">=</span> <span class="n">reference_sorting</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
</span><span id="L-1426"><a href="#L-1426"><span class="linenos">1426</span></a> <span class="n">sorted_vec_set</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="L-1427"><a href="#L-1427"><span class="linenos">1427</span></a> <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="nb">len</span><span class="p">(</span><span class="n">vec_set</span><span class="p">)):</span>
</span><span id="L-1428"><a href="#L-1428"><span class="linenos">1428</span></a> <span class="k">if</span> <span class="n">vec_set</span><span class="p">[</span><span class="n">t</span><span class="p">]</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
</span><span id="L-1429"><a href="#L-1429"><span class="linenos">1429</span></a> <span class="n">sorted_vec_set</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span>
</span><span id="L-1430"><a href="#L-1430"><span class="linenos">1430</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="n">t</span> <span class="o">==</span> <span class="n">ts</span><span class="p">:</span>
</span><span id="L-1431"><a href="#L-1431"><span class="linenos">1431</span></a> <span class="n">perms</span> <span class="o">=</span> <span class="p">[</span><span class="nb">list</span><span class="p">(</span><span class="n">o</span><span class="p">)</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">permutations</span><span class="p">([</span><span class="n">i</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="n">N</span><span class="p">)]</span>
</span><span id="L-1432"><a href="#L-1432"><span class="linenos">1432</span></a> <span class="n">best_score</span> <span class="o">=</span> <span class="mi">0</span>
</span><span id="L-1433"><a href="#L-1433"><span class="linenos">1433</span></a> <span class="k">for</span> <span class="n">perm</span> <span class="ow">in</span> <span class="n">perms</span><span class="p">:</span>
</span><span id="L-1434"><a href="#L-1434"><span class="linenos">1434</span></a> <span class="n">current_score</span> <span class="o">=</span> <span class="mi">1</span>
</span><span id="L-1435"><a href="#L-1435"><span class="linenos">1435</span></a> <span class="k">for</span> <span class="n">k</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><span id="L-1436"><a href="#L-1436"><span class="linenos">1436</span></a> <span class="n">new_sorting</span> <span class="o">=</span> <span class="n">reference_sorting</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
</span><span id="L-1437"><a href="#L-1437"><span class="linenos">1437</span></a> <span class="n">new_sorting</span><span class="p">[</span><span class="n">perm</span><span class="p">[</span><span class="n">k</span><span class="p">],</span> <span class="p">:]</span> <span class="o">=</span> <span class="n">vec_set</span><span class="p">[</span><span class="n">t</span><span class="p">][</span><span class="n">k</span><span class="p">]</span>
</span><span id="L-1438"><a href="#L-1438"><span class="linenos">1438</span></a> <span class="n">current_score</span> <span class="o">*=</span> <span class="nb">abs</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">linalg</span><span class="o">.</span><span class="n">det</span><span class="p">(</span><span class="n">new_sorting</span><span class="p">))</span>
</span><span id="L-1439"><a href="#L-1439"><span class="linenos">1439</span></a> <span class="k">if</span> <span class="n">current_score</span> <span class="o">&gt;</span> <span class="n">best_score</span><span class="p">:</span>
</span><span id="L-1440"><a href="#L-1440"><span class="linenos">1440</span></a> <span class="n">best_score</span> <span class="o">=</span> <span class="n">current_score</span>
</span><span id="L-1441"><a href="#L-1441"><span class="linenos">1441</span></a> <span class="n">best_perm</span> <span class="o">=</span> <span class="n">perm</span>
</span><span id="L-1442"><a href="#L-1442"><span class="linenos">1442</span></a> <span class="n">sorted_vec_set</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">vec_set_in</span><span class="p">[</span><span class="n">t</span><span class="p">][</span><span class="n">k</span><span class="p">]</span> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">best_perm</span><span class="p">])</span>
</span><span id="L-1443"><a href="#L-1443"><span class="linenos">1443</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-1444"><a href="#L-1444"><span class="linenos">1444</span></a> <span class="n">sorted_vec_set</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">vec_set_in</span><span class="p">[</span><span class="n">t</span><span class="p">])</span>
</span><span id="L-1445"><a href="#L-1445"><span class="linenos">1445</span></a>
</span><span id="L-1446"><a href="#L-1446"><span class="linenos">1446</span></a> <span class="k">return</span> <span class="n">sorted_vec_set</span>
</span><span id="L-1416"><a href="#L-1416"><span class="linenos">1416</span></a> <span class="k">return</span> <span class="n">Corr</span><span class="p">(</span><span class="n">rmat</span><span class="p">)</span>
</span><span id="L-1417"><a href="#L-1417"><span class="linenos">1417</span></a>
</span><span id="L-1418"><a href="#L-1418"><span class="linenos">1418</span></a>
</span><span id="L-1419"><a href="#L-1419"><span class="linenos">1419</span></a><span class="k">def</span><span class="w"> </span><span class="nf">_sort_vectors</span><span class="p">(</span><span class="n">vec_set_in</span><span class="p">,</span> <span class="n">ts</span><span class="p">):</span>
</span><span id="L-1420"><a href="#L-1420"><span class="linenos">1420</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Helper function used to find a set of Eigenvectors consistent over all timeslices&quot;&quot;&quot;</span>
</span><span id="L-1421"><a href="#L-1421"><span class="linenos">1421</span></a>
</span><span id="L-1422"><a href="#L-1422"><span class="linenos">1422</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">vec_set_in</span><span class="p">[</span><span class="n">ts</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span> <span class="n">Obs</span><span class="p">):</span>
</span><span id="L-1423"><a href="#L-1423"><span class="linenos">1423</span></a> <span class="n">vec_set</span> <span class="o">=</span> <span class="p">[</span><span class="n">anp</span><span class="o">.</span><span class="n">vectorize</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="nb">float</span><span class="p">(</span><span class="n">x</span><span class="p">))(</span><span class="n">vi</span><span class="p">)</span> <span class="k">if</span> <span class="n">vi</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">vi</span> <span class="k">for</span> <span class="n">vi</span> <span class="ow">in</span> <span class="n">vec_set_in</span><span class="p">]</span>
</span><span id="L-1424"><a href="#L-1424"><span class="linenos">1424</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-1425"><a href="#L-1425"><span class="linenos">1425</span></a> <span class="n">vec_set</span> <span class="o">=</span> <span class="n">vec_set_in</span>
</span><span id="L-1426"><a href="#L-1426"><span class="linenos">1426</span></a> <span class="n">reference_sorting</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">vec_set</span><span class="p">[</span><span class="n">ts</span><span class="p">])</span>
</span><span id="L-1427"><a href="#L-1427"><span class="linenos">1427</span></a> <span class="n">N</span> <span class="o">=</span> <span class="n">reference_sorting</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
</span><span id="L-1428"><a href="#L-1428"><span class="linenos">1428</span></a> <span class="n">sorted_vec_set</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="L-1429"><a href="#L-1429"><span class="linenos">1429</span></a> <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="nb">len</span><span class="p">(</span><span class="n">vec_set</span><span class="p">)):</span>
</span><span id="L-1430"><a href="#L-1430"><span class="linenos">1430</span></a> <span class="k">if</span> <span class="n">vec_set</span><span class="p">[</span><span class="n">t</span><span class="p">]</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
</span><span id="L-1431"><a href="#L-1431"><span class="linenos">1431</span></a> <span class="n">sorted_vec_set</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span>
</span><span id="L-1432"><a href="#L-1432"><span class="linenos">1432</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="n">t</span> <span class="o">==</span> <span class="n">ts</span><span class="p">:</span>
</span><span id="L-1433"><a href="#L-1433"><span class="linenos">1433</span></a> <span class="n">perms</span> <span class="o">=</span> <span class="p">[</span><span class="nb">list</span><span class="p">(</span><span class="n">o</span><span class="p">)</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">permutations</span><span class="p">([</span><span class="n">i</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="n">N</span><span class="p">)]</span>
</span><span id="L-1434"><a href="#L-1434"><span class="linenos">1434</span></a> <span class="n">best_score</span> <span class="o">=</span> <span class="mi">0</span>
</span><span id="L-1435"><a href="#L-1435"><span class="linenos">1435</span></a> <span class="k">for</span> <span class="n">perm</span> <span class="ow">in</span> <span class="n">perms</span><span class="p">:</span>
</span><span id="L-1436"><a href="#L-1436"><span class="linenos">1436</span></a> <span class="n">current_score</span> <span class="o">=</span> <span class="mi">1</span>
</span><span id="L-1437"><a href="#L-1437"><span class="linenos">1437</span></a> <span class="k">for</span> <span class="n">k</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><span id="L-1438"><a href="#L-1438"><span class="linenos">1438</span></a> <span class="n">new_sorting</span> <span class="o">=</span> <span class="n">reference_sorting</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
</span><span id="L-1439"><a href="#L-1439"><span class="linenos">1439</span></a> <span class="n">new_sorting</span><span class="p">[</span><span class="n">perm</span><span class="p">[</span><span class="n">k</span><span class="p">],</span> <span class="p">:]</span> <span class="o">=</span> <span class="n">vec_set</span><span class="p">[</span><span class="n">t</span><span class="p">][</span><span class="n">k</span><span class="p">]</span>
</span><span id="L-1440"><a href="#L-1440"><span class="linenos">1440</span></a> <span class="n">current_score</span> <span class="o">*=</span> <span class="nb">abs</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">linalg</span><span class="o">.</span><span class="n">det</span><span class="p">(</span><span class="n">new_sorting</span><span class="p">))</span>
</span><span id="L-1441"><a href="#L-1441"><span class="linenos">1441</span></a> <span class="k">if</span> <span class="n">current_score</span> <span class="o">&gt;</span> <span class="n">best_score</span><span class="p">:</span>
</span><span id="L-1442"><a href="#L-1442"><span class="linenos">1442</span></a> <span class="n">best_score</span> <span class="o">=</span> <span class="n">current_score</span>
</span><span id="L-1443"><a href="#L-1443"><span class="linenos">1443</span></a> <span class="n">best_perm</span> <span class="o">=</span> <span class="n">perm</span>
</span><span id="L-1444"><a href="#L-1444"><span class="linenos">1444</span></a> <span class="n">sorted_vec_set</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">vec_set_in</span><span class="p">[</span><span class="n">t</span><span class="p">][</span><span class="n">k</span><span class="p">]</span> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">best_perm</span><span class="p">])</span>
</span><span id="L-1445"><a href="#L-1445"><span class="linenos">1445</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-1446"><a href="#L-1446"><span class="linenos">1446</span></a> <span class="n">sorted_vec_set</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">vec_set_in</span><span class="p">[</span><span class="n">t</span><span class="p">])</span>
</span><span id="L-1447"><a href="#L-1447"><span class="linenos">1447</span></a>
</span><span id="L-1448"><a href="#L-1448"><span class="linenos">1448</span></a>
</span><span id="L-1449"><a href="#L-1449"><span class="linenos">1449</span></a><span class="k">def</span><span class="w"> </span><span class="nf">_check_for_none</span><span class="p">(</span><span class="n">corr</span><span class="p">,</span> <span class="n">entry</span><span class="p">):</span>
</span><span id="L-1450"><a href="#L-1450"><span class="linenos">1450</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Checks if entry for correlator corr is None&quot;&quot;&quot;</span>
</span><span id="L-1451"><a href="#L-1451"><span class="linenos">1451</span></a> <span class="k">return</span> <span class="nb">len</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="nb">filter</span><span class="p">(</span><span class="kc">None</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">entry</span><span class="p">)</span><span class="o">.</span><span class="n">flatten</span><span class="p">())))</span> <span class="o">&lt;</span> <span class="n">corr</span><span class="o">.</span><span class="n">N</span> <span class="o">**</span> <span class="mi">2</span>
</span><span id="L-1452"><a href="#L-1452"><span class="linenos">1452</span></a>
</span><span id="L-1453"><a href="#L-1453"><span class="linenos">1453</span></a>
</span><span id="L-1454"><a href="#L-1454"><span class="linenos">1454</span></a><span class="k">def</span><span class="w"> </span><span class="nf">_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">method</span><span class="o">=</span><span class="s1">&#39;eigh&#39;</span><span class="p">,</span> <span class="n">chol_inv</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
</span><span id="L-1455"><a href="#L-1455"><span class="linenos">1455</span></a><span class="w"> </span><span class="sa">r</span><span class="sd">&quot;&quot;&quot;Helper function for solving the GEVP and sorting the eigenvectors.</span>
</span><span id="L-1456"><a href="#L-1456"><span class="linenos">1456</span></a>
</span><span id="L-1457"><a href="#L-1457"><span class="linenos">1457</span></a><span class="sd"> Solves $G(t)v_i=\lambda_i G(t_0)v_i$ and returns the eigenvectors v_i</span>
</span><span id="L-1448"><a href="#L-1448"><span class="linenos">1448</span></a> <span class="k">return</span> <span class="n">sorted_vec_set</span>
</span><span id="L-1449"><a href="#L-1449"><span class="linenos">1449</span></a>
</span><span id="L-1450"><a href="#L-1450"><span class="linenos">1450</span></a>
</span><span id="L-1451"><a href="#L-1451"><span class="linenos">1451</span></a><span class="k">def</span><span class="w"> </span><span class="nf">_check_for_none</span><span class="p">(</span><span class="n">corr</span><span class="p">,</span> <span class="n">entry</span><span class="p">):</span>
</span><span id="L-1452"><a href="#L-1452"><span class="linenos">1452</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Checks if entry for correlator corr is None&quot;&quot;&quot;</span>
</span><span id="L-1453"><a href="#L-1453"><span class="linenos">1453</span></a> <span class="k">return</span> <span class="nb">len</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="nb">filter</span><span class="p">(</span><span class="kc">None</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">entry</span><span class="p">)</span><span class="o">.</span><span class="n">flatten</span><span class="p">())))</span> <span class="o">&lt;</span> <span class="n">corr</span><span class="o">.</span><span class="n">N</span> <span class="o">**</span> <span class="mi">2</span>
</span><span id="L-1454"><a href="#L-1454"><span class="linenos">1454</span></a>
</span><span id="L-1455"><a href="#L-1455"><span class="linenos">1455</span></a>
</span><span id="L-1456"><a href="#L-1456"><span class="linenos">1456</span></a><span class="k">def</span><span class="w"> </span><span class="nf">_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">method</span><span class="o">=</span><span class="s1">&#39;eigh&#39;</span><span class="p">,</span> <span class="n">chol_inv</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
</span><span id="L-1457"><a href="#L-1457"><span class="linenos">1457</span></a><span class="w"> </span><span class="sa">r</span><span class="sd">&quot;&quot;&quot;Helper function for solving the GEVP and sorting the eigenvectors.</span>
</span><span id="L-1458"><a href="#L-1458"><span class="linenos">1458</span></a>
</span><span id="L-1459"><a href="#L-1459"><span class="linenos">1459</span></a><span class="sd"> The helper function assumes that both provided matrices are symmetric and</span>
</span><span id="L-1460"><a href="#L-1460"><span class="linenos">1460</span></a><span class="sd"> only processes the lower triangular part of both matrices. In case the matrices</span>
</span><span id="L-1461"><a href="#L-1461"><span class="linenos">1461</span></a><span class="sd"> are not symmetric the upper triangular parts are effectively discarded.</span>
</span><span id="L-1462"><a href="#L-1462"><span class="linenos">1462</span></a>
</span><span id="L-1463"><a href="#L-1463"><span class="linenos">1463</span></a><span class="sd"> Parameters</span>
</span><span id="L-1464"><a href="#L-1464"><span class="linenos">1464</span></a><span class="sd"> ----------</span>
</span><span id="L-1465"><a href="#L-1465"><span class="linenos">1465</span></a><span class="sd"> Gt : array</span>
</span><span id="L-1466"><a href="#L-1466"><span class="linenos">1466</span></a><span class="sd"> The correlator at time t for the left hand side of the GEVP</span>
</span><span id="L-1467"><a href="#L-1467"><span class="linenos">1467</span></a><span class="sd"> G0 : array</span>
</span><span id="L-1468"><a href="#L-1468"><span class="linenos">1468</span></a><span class="sd"> The correlator at time t0 for the right hand side of the GEVP</span>
</span><span id="L-1469"><a href="#L-1469"><span class="linenos">1469</span></a><span class="sd"> Method used to solve the GEVP.</span>
</span><span id="L-1470"><a href="#L-1470"><span class="linenos">1470</span></a><span class="sd"> - &quot;eigh&quot;: Use scipy.linalg.eigh to solve the GEVP.</span>
</span><span id="L-1471"><a href="#L-1471"><span class="linenos">1471</span></a><span class="sd"> - &quot;cholesky&quot;: Use manually implemented solution via the Cholesky decomposition.</span>
</span><span id="L-1472"><a href="#L-1472"><span class="linenos">1472</span></a><span class="sd"> chol_inv : array, optional</span>
</span><span id="L-1473"><a href="#L-1473"><span class="linenos">1473</span></a><span class="sd"> Inverse of the Cholesky decomposition of G0. May be provided to</span>
</span><span id="L-1474"><a href="#L-1474"><span class="linenos">1474</span></a><span class="sd"> speed up the computation in the case of method==&#39;cholesky&#39;</span>
</span><span id="L-1475"><a href="#L-1475"><span class="linenos">1475</span></a>
</span><span id="L-1476"><a href="#L-1476"><span class="linenos">1476</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-1477"><a href="#L-1477"><span class="linenos">1477</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">G0</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span> <span class="n">Obs</span><span class="p">):</span>
</span><span id="L-1478"><a href="#L-1478"><span class="linenos">1478</span></a> <span class="n">vector_obs</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="L-1479"><a href="#L-1479"><span class="linenos">1479</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-1480"><a href="#L-1480"><span class="linenos">1480</span></a> <span class="n">vector_obs</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-1481"><a href="#L-1481"><span class="linenos">1481</span></a>
</span><span id="L-1482"><a href="#L-1482"><span class="linenos">1482</span></a> <span class="k">if</span> <span class="n">method</span> <span class="o">==</span> <span class="s1">&#39;cholesky&#39;</span><span class="p">:</span>
</span><span id="L-1483"><a href="#L-1483"><span class="linenos">1483</span></a> <span class="k">if</span> <span class="n">vector_obs</span><span class="p">:</span>
</span><span id="L-1484"><a href="#L-1484"><span class="linenos">1484</span></a> <span class="n">cholesky</span> <span class="o">=</span> <span class="n">linalg</span><span class="o">.</span><span class="n">cholesky</span>
</span><span id="L-1485"><a href="#L-1485"><span class="linenos">1485</span></a> <span class="n">inv</span> <span class="o">=</span> <span class="n">linalg</span><span class="o">.</span><span class="n">inv</span>
</span><span id="L-1486"><a href="#L-1486"><span class="linenos">1486</span></a> <span class="n">eigv</span> <span class="o">=</span> <span class="n">linalg</span><span class="o">.</span><span class="n">eigv</span>
</span><span id="L-1487"><a href="#L-1487"><span class="linenos">1487</span></a> <span class="n">matmul</span> <span class="o">=</span> <span class="n">linalg</span><span class="o">.</span><span class="n">matmul</span>
</span><span id="L-1488"><a href="#L-1488"><span class="linenos">1488</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-1489"><a href="#L-1489"><span class="linenos">1489</span></a> <span class="n">cholesky</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linalg</span><span class="o">.</span><span class="n">cholesky</span>
</span><span id="L-1490"><a href="#L-1490"><span class="linenos">1490</span></a> <span class="n">inv</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linalg</span><span class="o">.</span><span class="n">inv</span>
</span><span id="L-1491"><a href="#L-1491"><span class="linenos">1491</span></a>
</span><span id="L-1492"><a href="#L-1492"><span class="linenos">1492</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">eigv</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="L-1493"><a href="#L-1493"><span class="linenos">1493</span></a> <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">linalg</span><span class="o">.</span><span class="n">eigh</span><span class="p">(</span><span class="n">x</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span>
</span><span id="L-1494"><a href="#L-1494"><span class="linenos">1494</span></a>
</span><span id="L-1495"><a href="#L-1495"><span class="linenos">1495</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">matmul</span><span class="p">(</span><span class="o">*</span><span class="n">operands</span><span class="p">):</span>
</span><span id="L-1496"><a href="#L-1496"><span class="linenos">1496</span></a> <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">linalg</span><span class="o">.</span><span class="n">multi_dot</span><span class="p">(</span><span class="n">operands</span><span class="p">)</span>
</span><span id="L-1497"><a href="#L-1497"><span class="linenos">1497</span></a> <span class="n">N</span> <span class="o">=</span> <span class="n">Gt</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
</span><span id="L-1498"><a href="#L-1498"><span class="linenos">1498</span></a> <span class="n">output</span> <span class="o">=</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><span id="L-1499"><a href="#L-1499"><span class="linenos">1499</span></a> <span class="k">if</span> <span class="n">chol_inv</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
</span><span id="L-1500"><a href="#L-1500"><span class="linenos">1500</span></a> <span class="n">chol</span> <span class="o">=</span> <span class="n">cholesky</span><span class="p">(</span><span class="n">G0</span><span class="p">)</span> <span class="c1"># This will automatically report if the matrix is not pos-def</span>
</span><span id="L-1501"><a href="#L-1501"><span class="linenos">1501</span></a> <span class="n">chol_inv</span> <span class="o">=</span> <span class="n">inv</span><span class="p">(</span><span class="n">chol</span><span class="p">)</span>
</span><span id="L-1502"><a href="#L-1502"><span class="linenos">1502</span></a>
</span><span id="L-1503"><a href="#L-1503"><span class="linenos">1503</span></a> <span class="k">try</span><span class="p">:</span>
</span><span id="L-1504"><a href="#L-1504"><span class="linenos">1504</span></a> <span class="n">new_matrix</span> <span class="o">=</span> <span class="n">matmul</span><span class="p">(</span><span class="n">chol_inv</span><span class="p">,</span> <span class="n">Gt</span><span class="p">,</span> <span class="n">chol_inv</span><span class="o">.</span><span class="n">T</span><span class="p">)</span>
</span><span id="L-1505"><a href="#L-1505"><span class="linenos">1505</span></a> <span class="n">ev</span> <span class="o">=</span> <span class="n">eigv</span><span class="p">(</span><span class="n">new_matrix</span><span class="p">)</span>
</span><span id="L-1506"><a href="#L-1506"><span class="linenos">1506</span></a> <span class="n">ev</span> <span class="o">=</span> <span class="n">matmul</span><span class="p">(</span><span class="n">chol_inv</span><span class="o">.</span><span class="n">T</span><span class="p">,</span> <span class="n">ev</span><span class="p">)</span>
</span><span id="L-1507"><a href="#L-1507"><span class="linenos">1507</span></a> <span class="n">output</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">flip</span><span class="p">(</span><span class="n">ev</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">T</span>
</span><span id="L-1508"><a href="#L-1508"><span class="linenos">1508</span></a> <span class="k">except</span> <span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">linalg</span><span class="o">.</span><span class="n">LinAlgError</span><span class="p">,</span> <span class="ne">TypeError</span><span class="p">,</span> <span class="ne">ValueError</span><span class="p">):</span> <span class="c1"># The above code can fail because of linalg-errors or because the entry of the corr is None</span>
</span><span id="L-1509"><a href="#L-1509"><span class="linenos">1509</span></a> <span class="k">for</span> <span class="n">s</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><span id="L-1510"><a href="#L-1510"><span class="linenos">1510</span></a> <span class="n">output</span><span class="p">[</span><span class="n">s</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="L-1511"><a href="#L-1511"><span class="linenos">1511</span></a> <span class="k">return</span> <span class="n">output</span>
</span><span id="L-1512"><a href="#L-1512"><span class="linenos">1512</span></a> <span class="k">elif</span> <span class="n">method</span> <span class="o">==</span> <span class="s1">&#39;eigh&#39;</span><span class="p">:</span>
</span><span id="L-1513"><a href="#L-1513"><span class="linenos">1513</span></a> <span class="k">return</span> <span class="n">scipy</span><span class="o">.</span><span class="n">linalg</span><span class="o">.</span><span class="n">eigh</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">lower</span><span class="o">=</span><span class="kc">True</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">T</span><span class="p">[::</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
</span><span id="L-1459"><a href="#L-1459"><span class="linenos">1459</span></a><span class="sd"> Solves $G(t)v_i=\lambda_i G(t_0)v_i$ and returns the eigenvectors v_i</span>
</span><span id="L-1460"><a href="#L-1460"><span class="linenos">1460</span></a>
</span><span id="L-1461"><a href="#L-1461"><span class="linenos">1461</span></a><span class="sd"> The helper function assumes that both provided matrices are symmetric and</span>
</span><span id="L-1462"><a href="#L-1462"><span class="linenos">1462</span></a><span class="sd"> only processes the lower triangular part of both matrices. In case the matrices</span>
</span><span id="L-1463"><a href="#L-1463"><span class="linenos">1463</span></a><span class="sd"> are not symmetric the upper triangular parts are effectively discarded.</span>
</span><span id="L-1464"><a href="#L-1464"><span class="linenos">1464</span></a>
</span><span id="L-1465"><a href="#L-1465"><span class="linenos">1465</span></a><span class="sd"> Parameters</span>
</span><span id="L-1466"><a href="#L-1466"><span class="linenos">1466</span></a><span class="sd"> ----------</span>
</span><span id="L-1467"><a href="#L-1467"><span class="linenos">1467</span></a><span class="sd"> Gt : array</span>
</span><span id="L-1468"><a href="#L-1468"><span class="linenos">1468</span></a><span class="sd"> The correlator at time t for the left hand side of the GEVP</span>
</span><span id="L-1469"><a href="#L-1469"><span class="linenos">1469</span></a><span class="sd"> G0 : array</span>
</span><span id="L-1470"><a href="#L-1470"><span class="linenos">1470</span></a><span class="sd"> The correlator at time t0 for the right hand side of the GEVP</span>
</span><span id="L-1471"><a href="#L-1471"><span class="linenos">1471</span></a><span class="sd"> Method used to solve the GEVP.</span>
</span><span id="L-1472"><a href="#L-1472"><span class="linenos">1472</span></a><span class="sd"> - &quot;eigh&quot;: Use scipy.linalg.eigh to solve the GEVP.</span>
</span><span id="L-1473"><a href="#L-1473"><span class="linenos">1473</span></a><span class="sd"> - &quot;cholesky&quot;: Use manually implemented solution via the Cholesky decomposition.</span>
</span><span id="L-1474"><a href="#L-1474"><span class="linenos">1474</span></a><span class="sd"> chol_inv : array, optional</span>
</span><span id="L-1475"><a href="#L-1475"><span class="linenos">1475</span></a><span class="sd"> Inverse of the Cholesky decomposition of G0. May be provided to</span>
</span><span id="L-1476"><a href="#L-1476"><span class="linenos">1476</span></a><span class="sd"> speed up the computation in the case of method==&#39;cholesky&#39;</span>
</span><span id="L-1477"><a href="#L-1477"><span class="linenos">1477</span></a>
</span><span id="L-1478"><a href="#L-1478"><span class="linenos">1478</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-1479"><a href="#L-1479"><span class="linenos">1479</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">G0</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span> <span class="n">Obs</span><span class="p">):</span>
</span><span id="L-1480"><a href="#L-1480"><span class="linenos">1480</span></a> <span class="n">vector_obs</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="L-1481"><a href="#L-1481"><span class="linenos">1481</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-1482"><a href="#L-1482"><span class="linenos">1482</span></a> <span class="n">vector_obs</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-1483"><a href="#L-1483"><span class="linenos">1483</span></a>
</span><span id="L-1484"><a href="#L-1484"><span class="linenos">1484</span></a> <span class="k">if</span> <span class="n">method</span> <span class="o">==</span> <span class="s1">&#39;cholesky&#39;</span><span class="p">:</span>
</span><span id="L-1485"><a href="#L-1485"><span class="linenos">1485</span></a> <span class="k">if</span> <span class="n">vector_obs</span><span class="p">:</span>
</span><span id="L-1486"><a href="#L-1486"><span class="linenos">1486</span></a> <span class="n">cholesky</span> <span class="o">=</span> <span class="n">linalg</span><span class="o">.</span><span class="n">cholesky</span>
</span><span id="L-1487"><a href="#L-1487"><span class="linenos">1487</span></a> <span class="n">inv</span> <span class="o">=</span> <span class="n">linalg</span><span class="o">.</span><span class="n">inv</span>
</span><span id="L-1488"><a href="#L-1488"><span class="linenos">1488</span></a> <span class="n">eigv</span> <span class="o">=</span> <span class="n">linalg</span><span class="o">.</span><span class="n">eigv</span>
</span><span id="L-1489"><a href="#L-1489"><span class="linenos">1489</span></a> <span class="n">matmul</span> <span class="o">=</span> <span class="n">linalg</span><span class="o">.</span><span class="n">matmul</span>
</span><span id="L-1490"><a href="#L-1490"><span class="linenos">1490</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-1491"><a href="#L-1491"><span class="linenos">1491</span></a> <span class="n">cholesky</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linalg</span><span class="o">.</span><span class="n">cholesky</span>
</span><span id="L-1492"><a href="#L-1492"><span class="linenos">1492</span></a> <span class="n">inv</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linalg</span><span class="o">.</span><span class="n">inv</span>
</span><span id="L-1493"><a href="#L-1493"><span class="linenos">1493</span></a>
</span><span id="L-1494"><a href="#L-1494"><span class="linenos">1494</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">eigv</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="L-1495"><a href="#L-1495"><span class="linenos">1495</span></a> <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">linalg</span><span class="o">.</span><span class="n">eigh</span><span class="p">(</span><span class="n">x</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span>
</span><span id="L-1496"><a href="#L-1496"><span class="linenos">1496</span></a>
</span><span id="L-1497"><a href="#L-1497"><span class="linenos">1497</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">matmul</span><span class="p">(</span><span class="o">*</span><span class="n">operands</span><span class="p">):</span>
</span><span id="L-1498"><a href="#L-1498"><span class="linenos">1498</span></a> <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">linalg</span><span class="o">.</span><span class="n">multi_dot</span><span class="p">(</span><span class="n">operands</span><span class="p">)</span>
</span><span id="L-1499"><a href="#L-1499"><span class="linenos">1499</span></a> <span class="n">N</span> <span class="o">=</span> <span class="n">Gt</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
</span><span id="L-1500"><a href="#L-1500"><span class="linenos">1500</span></a> <span class="n">output</span> <span class="o">=</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><span id="L-1501"><a href="#L-1501"><span class="linenos">1501</span></a> <span class="k">if</span> <span class="n">chol_inv</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
</span><span id="L-1502"><a href="#L-1502"><span class="linenos">1502</span></a> <span class="n">chol</span> <span class="o">=</span> <span class="n">cholesky</span><span class="p">(</span><span class="n">G0</span><span class="p">)</span> <span class="c1"># This will automatically report if the matrix is not pos-def</span>
</span><span id="L-1503"><a href="#L-1503"><span class="linenos">1503</span></a> <span class="n">chol_inv</span> <span class="o">=</span> <span class="n">inv</span><span class="p">(</span><span class="n">chol</span><span class="p">)</span>
</span><span id="L-1504"><a href="#L-1504"><span class="linenos">1504</span></a>
</span><span id="L-1505"><a href="#L-1505"><span class="linenos">1505</span></a> <span class="k">try</span><span class="p">:</span>
</span><span id="L-1506"><a href="#L-1506"><span class="linenos">1506</span></a> <span class="n">new_matrix</span> <span class="o">=</span> <span class="n">matmul</span><span class="p">(</span><span class="n">chol_inv</span><span class="p">,</span> <span class="n">Gt</span><span class="p">,</span> <span class="n">chol_inv</span><span class="o">.</span><span class="n">T</span><span class="p">)</span>
</span><span id="L-1507"><a href="#L-1507"><span class="linenos">1507</span></a> <span class="n">ev</span> <span class="o">=</span> <span class="n">eigv</span><span class="p">(</span><span class="n">new_matrix</span><span class="p">)</span>
</span><span id="L-1508"><a href="#L-1508"><span class="linenos">1508</span></a> <span class="n">ev</span> <span class="o">=</span> <span class="n">matmul</span><span class="p">(</span><span class="n">chol_inv</span><span class="o">.</span><span class="n">T</span><span class="p">,</span> <span class="n">ev</span><span class="p">)</span>
</span><span id="L-1509"><a href="#L-1509"><span class="linenos">1509</span></a> <span class="n">output</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">flip</span><span class="p">(</span><span class="n">ev</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">T</span>
</span><span id="L-1510"><a href="#L-1510"><span class="linenos">1510</span></a> <span class="k">except</span> <span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">linalg</span><span class="o">.</span><span class="n">LinAlgError</span><span class="p">,</span> <span class="ne">TypeError</span><span class="p">,</span> <span class="ne">ValueError</span><span class="p">):</span> <span class="c1"># The above code can fail because of linalg-errors or because the entry of the corr is None</span>
</span><span id="L-1511"><a href="#L-1511"><span class="linenos">1511</span></a> <span class="k">for</span> <span class="n">s</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><span id="L-1512"><a href="#L-1512"><span class="linenos">1512</span></a> <span class="n">output</span><span class="p">[</span><span class="n">s</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="L-1513"><a href="#L-1513"><span class="linenos">1513</span></a> <span class="k">return</span> <span class="n">output</span>
</span><span id="L-1514"><a href="#L-1514"><span class="linenos">1514</span></a> <span class="k">elif</span> <span class="n">method</span> <span class="o">==</span> <span class="s1">&#39;eigh&#39;</span><span class="p">:</span>
</span><span id="L-1515"><a href="#L-1515"><span class="linenos">1515</span></a> <span class="k">return</span> <span class="n">scipy</span><span class="o">.</span><span class="n">linalg</span><span class="o">.</span><span class="n">eigh</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">lower</span><span class="o">=</span><span class="kc">True</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">T</span><span class="p">[::</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
</span></pre></div>
@ -3163,13 +3165,15 @@
</span><span id="Corr-1406"><a href="#Corr-1406"><span class="linenos">1406</span></a> <span class="n">tmpmat</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">Ntrunc</span><span class="p">,</span> <span class="n">Ntrunc</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="nb">object</span><span class="p">)</span>
</span><span id="Corr-1407"><a href="#Corr-1407"><span class="linenos">1407</span></a> <span class="n">rmat</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="Corr-1408"><a href="#Corr-1408"><span class="linenos">1408</span></a> <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">basematrix</span><span class="o">.</span><span class="n">T</span><span class="p">):</span>
</span><span id="Corr-1409"><a href="#Corr-1409"><span class="linenos">1409</span></a> <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">Ntrunc</span><span class="p">):</span>
</span><span id="Corr-1410"><a href="#Corr-1410"><span class="linenos">1410</span></a> <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">Ntrunc</span><span class="p">):</span>
</span><span id="Corr-1411"><a href="#Corr-1411"><span class="linenos">1411</span></a> <span class="n">tmpmat</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">evecs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">T</span> <span class="o">@</span> <span class="bp">self</span><span class="p">[</span><span class="n">t</span><span class="p">]</span> <span class="o">@</span> <span class="n">evecs</span><span class="p">[</span><span class="n">j</span><span class="p">]</span>
</span><span id="Corr-1412"><a href="#Corr-1412"><span class="linenos">1412</span></a> <span class="n">rmat</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">tmpmat</span><span class="p">))</span>
</span><span id="Corr-1413"><a href="#Corr-1413"><span class="linenos">1413</span></a>
</span><span id="Corr-1414"><a href="#Corr-1414"><span class="linenos">1414</span></a> <span class="n">newcontent</span> <span class="o">=</span> <span class="p">[</span><span class="kc">None</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">t</span><span class="p">]</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">)</span> <span class="k">else</span> <span class="n">rmat</span><span class="p">[</span><span class="n">t</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><span id="Corr-1415"><a href="#Corr-1415"><span class="linenos">1415</span></a> <span class="k">return</span> <span class="n">Corr</span><span class="p">(</span><span class="n">newcontent</span><span class="p">)</span>
</span><span id="Corr-1409"><a href="#Corr-1409"><span class="linenos">1409</span></a> <span class="k">if</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="ow">is</span> <span class="kc">None</span><span class="p">:</span>
</span><span id="Corr-1410"><a href="#Corr-1410"><span class="linenos">1410</span></a> <span class="n">rmat</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span>
</span><span id="Corr-1411"><a href="#Corr-1411"><span class="linenos">1411</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Corr-1412"><a href="#Corr-1412"><span class="linenos">1412</span></a> <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">Ntrunc</span><span class="p">):</span>
</span><span id="Corr-1413"><a href="#Corr-1413"><span class="linenos">1413</span></a> <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">Ntrunc</span><span class="p">):</span>
</span><span id="Corr-1414"><a href="#Corr-1414"><span class="linenos">1414</span></a> <span class="n">tmpmat</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">evecs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">T</span> <span class="o">@</span> <span class="bp">self</span><span class="p">[</span><span class="n">t</span><span class="p">]</span> <span class="o">@</span> <span class="n">evecs</span><span class="p">[</span><span class="n">j</span><span class="p">]</span>
</span><span id="Corr-1415"><a href="#Corr-1415"><span class="linenos">1415</span></a> <span class="n">rmat</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">tmpmat</span><span class="p">))</span>
</span><span id="Corr-1416"><a href="#Corr-1416"><span class="linenos">1416</span></a>
</span><span id="Corr-1417"><a href="#Corr-1417"><span class="linenos">1417</span></a> <span class="k">return</span> <span class="n">Corr</span><span class="p">(</span><span class="n">rmat</span><span class="p">)</span>
</span></pre></div>
@ -5460,13 +5464,15 @@ specifies a custom path for the file (default '.')</li>
</span><span id="Corr.prune-1406"><a href="#Corr.prune-1406"><span class="linenos">1406</span></a> <span class="n">tmpmat</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">Ntrunc</span><span class="p">,</span> <span class="n">Ntrunc</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="nb">object</span><span class="p">)</span>
</span><span id="Corr.prune-1407"><a href="#Corr.prune-1407"><span class="linenos">1407</span></a> <span class="n">rmat</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="Corr.prune-1408"><a href="#Corr.prune-1408"><span class="linenos">1408</span></a> <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">basematrix</span><span class="o">.</span><span class="n">T</span><span class="p">):</span>
</span><span id="Corr.prune-1409"><a href="#Corr.prune-1409"><span class="linenos">1409</span></a> <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">Ntrunc</span><span class="p">):</span>
</span><span id="Corr.prune-1410"><a href="#Corr.prune-1410"><span class="linenos">1410</span></a> <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">Ntrunc</span><span class="p">):</span>
</span><span id="Corr.prune-1411"><a href="#Corr.prune-1411"><span class="linenos">1411</span></a> <span class="n">tmpmat</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">evecs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">T</span> <span class="o">@</span> <span class="bp">self</span><span class="p">[</span><span class="n">t</span><span class="p">]</span> <span class="o">@</span> <span class="n">evecs</span><span class="p">[</span><span class="n">j</span><span class="p">]</span>
</span><span id="Corr.prune-1412"><a href="#Corr.prune-1412"><span class="linenos">1412</span></a> <span class="n">rmat</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">tmpmat</span><span class="p">))</span>
</span><span id="Corr.prune-1413"><a href="#Corr.prune-1413"><span class="linenos">1413</span></a>
</span><span id="Corr.prune-1414"><a href="#Corr.prune-1414"><span class="linenos">1414</span></a> <span class="n">newcontent</span> <span class="o">=</span> <span class="p">[</span><span class="kc">None</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">t</span><span class="p">]</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">)</span> <span class="k">else</span> <span class="n">rmat</span><span class="p">[</span><span class="n">t</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><span id="Corr.prune-1415"><a href="#Corr.prune-1415"><span class="linenos">1415</span></a> <span class="k">return</span> <span class="n">Corr</span><span class="p">(</span><span class="n">newcontent</span><span class="p">)</span>
</span><span id="Corr.prune-1409"><a href="#Corr.prune-1409"><span class="linenos">1409</span></a> <span class="k">if</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="ow">is</span> <span class="kc">None</span><span class="p">:</span>
</span><span id="Corr.prune-1410"><a href="#Corr.prune-1410"><span class="linenos">1410</span></a> <span class="n">rmat</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span>
</span><span id="Corr.prune-1411"><a href="#Corr.prune-1411"><span class="linenos">1411</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Corr.prune-1412"><a href="#Corr.prune-1412"><span class="linenos">1412</span></a> <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">Ntrunc</span><span class="p">):</span>
</span><span id="Corr.prune-1413"><a href="#Corr.prune-1413"><span class="linenos">1413</span></a> <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">Ntrunc</span><span class="p">):</span>
</span><span id="Corr.prune-1414"><a href="#Corr.prune-1414"><span class="linenos">1414</span></a> <span class="n">tmpmat</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">evecs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">T</span> <span class="o">@</span> <span class="bp">self</span><span class="p">[</span><span class="n">t</span><span class="p">]</span> <span class="o">@</span> <span class="n">evecs</span><span class="p">[</span><span class="n">j</span><span class="p">]</span>
</span><span id="Corr.prune-1415"><a href="#Corr.prune-1415"><span class="linenos">1415</span></a> <span class="n">rmat</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">tmpmat</span><span class="p">))</span>
</span><span id="Corr.prune-1416"><a href="#Corr.prune-1416"><span class="linenos">1416</span></a>
</span><span id="Corr.prune-1417"><a href="#Corr.prune-1417"><span class="linenos">1417</span></a> <span class="k">return</span> <span class="n">Corr</span><span class="p">(</span><span class="n">rmat</span><span class="p">)</span>
</span></pre></div>

View file

@ -316,7 +316,7 @@
<div class="attr function">
<span class="def">def</span>
<span class="name">errorbar</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="n">x</span>,</span><span class="param"> <span class="n">y</span>,</span><span class="param"> <span class="n">axes</span><span class="o">=&lt;</span><span class="n">module</span> <span class="s1">&#39;matplotlib.pyplot&#39;</span> <span class="kn">from</span><span class="w"> </span><span class="s1">&#39;/opt/hostedtoolcache/Python/3.10.18/x64/lib/python3.10/site-packages/matplotlib/pyplot.py&#39;</span><span class="o">&gt;</span>,</span><span class="param"> <span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
<span class="name">errorbar</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="n">x</span>,</span><span class="param"> <span class="n">y</span>,</span><span class="param"> <span class="n">axes</span><span class="o">=&lt;</span><span class="n">module</span> <span class="s1">&#39;matplotlib.pyplot&#39;</span> <span class="kn">from</span><span class="w"> </span><span class="s1">&#39;/opt/hostedtoolcache/Python/3.10.19/x64/lib/python3.10/site-packages/matplotlib/pyplot.py&#39;</span><span class="o">&gt;</span>,</span><span class="param"> <span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="errorbar-view-source"><span>View Source</span></label>

File diff suppressed because one or more lines are too long