mirror of
https://github.com/fjosw/pyerrors.git
synced 2025-05-14 19:43:41 +02:00
Documentation updated
This commit is contained in:
parent
ddb3aa9259
commit
3c97fd2410
2 changed files with 373 additions and 364 deletions
|
@ -1634,239 +1634,242 @@
|
|||
</span><span id="L-1430"><a href="#L-1430"><span class="linenos">1430</span></a><span class="k">def</span> <span class="nf">covariance</span><span class="p">(</span><span class="n">obs</span><span class="p">,</span> <span class="n">visualize</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">correlation</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">smooth</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
</span><span id="L-1431"><a href="#L-1431"><span class="linenos">1431</span></a> <span class="sa">r</span><span class="sd">'''Calculates the error covariance matrix of a set of observables.</span>
|
||||
</span><span id="L-1432"><a href="#L-1432"><span class="linenos">1432</span></a>
|
||||
</span><span id="L-1433"><a href="#L-1433"><span class="linenos">1433</span></a><span class="sd"> The gamma method has to be applied first to all observables.</span>
|
||||
</span><span id="L-1434"><a href="#L-1434"><span class="linenos">1434</span></a>
|
||||
</span><span id="L-1435"><a href="#L-1435"><span class="linenos">1435</span></a><span class="sd"> Parameters</span>
|
||||
</span><span id="L-1436"><a href="#L-1436"><span class="linenos">1436</span></a><span class="sd"> ----------</span>
|
||||
</span><span id="L-1437"><a href="#L-1437"><span class="linenos">1437</span></a><span class="sd"> obs : list or numpy.ndarray</span>
|
||||
</span><span id="L-1438"><a href="#L-1438"><span class="linenos">1438</span></a><span class="sd"> List or one dimensional array of Obs</span>
|
||||
</span><span id="L-1439"><a href="#L-1439"><span class="linenos">1439</span></a><span class="sd"> visualize : bool</span>
|
||||
</span><span id="L-1440"><a href="#L-1440"><span class="linenos">1440</span></a><span class="sd"> If True plots the corresponding normalized correlation matrix (default False).</span>
|
||||
</span><span id="L-1441"><a href="#L-1441"><span class="linenos">1441</span></a><span class="sd"> correlation : bool</span>
|
||||
</span><span id="L-1442"><a href="#L-1442"><span class="linenos">1442</span></a><span class="sd"> If True the correlation matrix instead of the error covariance matrix is returned (default False).</span>
|
||||
</span><span id="L-1443"><a href="#L-1443"><span class="linenos">1443</span></a><span class="sd"> smooth : None or int</span>
|
||||
</span><span id="L-1444"><a href="#L-1444"><span class="linenos">1444</span></a><span class="sd"> If smooth is an integer 'E' between 2 and the dimension of the matrix minus 1 the eigenvalue</span>
|
||||
</span><span id="L-1445"><a href="#L-1445"><span class="linenos">1445</span></a><span class="sd"> smoothing procedure of hep-lat/9412087 is applied to the correlation matrix which leaves the</span>
|
||||
</span><span id="L-1446"><a href="#L-1446"><span class="linenos">1446</span></a><span class="sd"> largest E eigenvalues essentially unchanged and smoothes the smaller eigenvalues to avoid extremely</span>
|
||||
</span><span id="L-1447"><a href="#L-1447"><span class="linenos">1447</span></a><span class="sd"> small ones.</span>
|
||||
</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="sd"> Notes</span>
|
||||
</span><span id="L-1450"><a href="#L-1450"><span class="linenos">1450</span></a><span class="sd"> -----</span>
|
||||
</span><span id="L-1451"><a href="#L-1451"><span class="linenos">1451</span></a><span class="sd"> The error covariance is defined such that it agrees with the squared standard error for two identical observables</span>
|
||||
</span><span id="L-1452"><a href="#L-1452"><span class="linenos">1452</span></a><span class="sd"> $$\operatorname{cov}(a,a)=\sum_{s=1}^N\delta_a^s\delta_a^s/N^2=\Gamma_{aa}(0)/N=\operatorname{var}(a)/N=\sigma_a^2$$</span>
|
||||
</span><span id="L-1453"><a href="#L-1453"><span class="linenos">1453</span></a><span class="sd"> in the absence of autocorrelation.</span>
|
||||
</span><span id="L-1454"><a href="#L-1454"><span class="linenos">1454</span></a><span class="sd"> The error covariance is estimated by calculating the correlation matrix assuming no autocorrelation and then rescaling the correlation matrix by the full errors including the previous gamma method estimate for the autocorrelation of the observables. The covariance at windowsize 0 is guaranteed to be positive semi-definite</span>
|
||||
</span><span id="L-1455"><a href="#L-1455"><span class="linenos">1455</span></a><span class="sd"> $$\sum_{i,j}v_i\Gamma_{ij}(0)v_j=\frac{1}{N}\sum_{s=1}^N\sum_{i,j}v_i\delta_i^s\delta_j^s v_j=\frac{1}{N}\sum_{s=1}^N\sum_{i}|v_i\delta_i^s|^2\geq 0\,,$$ for every $v\in\mathbb{R}^M$, while such an identity does not hold for larger windows/lags.</span>
|
||||
</span><span id="L-1456"><a href="#L-1456"><span class="linenos">1456</span></a><span class="sd"> For observables defined on a single ensemble our approximation is equivalent to assuming that the integrated autocorrelation time of an off-diagonal element is equal to the geometric mean of the integrated autocorrelation times of the corresponding diagonal elements.</span>
|
||||
</span><span id="L-1457"><a href="#L-1457"><span class="linenos">1457</span></a><span class="sd"> $$\tau_{\mathrm{int}, ij}=\sqrt{\tau_{\mathrm{int}, i}\times \tau_{\mathrm{int}, j}}$$</span>
|
||||
</span><span id="L-1458"><a href="#L-1458"><span class="linenos">1458</span></a><span class="sd"> This construction ensures that the estimated covariance matrix is positive semi-definite (up to numerical rounding errors).</span>
|
||||
</span><span id="L-1459"><a href="#L-1459"><span class="linenos">1459</span></a><span class="sd"> '''</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="n">length</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">obs</span><span class="p">)</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="n">max_samples</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">([</span><span class="n">o</span><span class="o">.</span><span class="n">N</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">obs</span><span class="p">])</span>
|
||||
</span><span id="L-1464"><a href="#L-1464"><span class="linenos">1464</span></a> <span class="k">if</span> <span class="n">max_samples</span> <span class="o"><=</span> <span class="n">length</span> <span class="ow">and</span> <span class="ow">not</span> <span class="p">[</span><span class="n">item</span> <span class="k">for</span> <span class="n">sublist</span> <span class="ow">in</span> <span class="p">[</span><span class="n">o</span><span class="o">.</span><span class="n">cov_names</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">obs</span><span class="p">]</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">sublist</span><span class="p">]:</span>
|
||||
</span><span id="L-1465"><a href="#L-1465"><span class="linenos">1465</span></a> <span class="n">warnings</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="sa">f</span><span class="s2">"The dimension of the covariance matrix (</span><span class="si">{</span><span class="n">length</span><span class="si">}</span><span class="s2">) is larger or equal to the number of samples (</span><span class="si">{</span><span class="n">max_samples</span><span class="si">}</span><span class="s2">). This will result in a rank deficient matrix."</span><span class="p">,</span> <span class="ne">RuntimeWarning</span><span class="p">)</span>
|
||||
</span><span id="L-1466"><a href="#L-1466"><span class="linenos">1466</span></a>
|
||||
</span><span id="L-1467"><a href="#L-1467"><span class="linenos">1467</span></a> <span class="n">cov</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">((</span><span class="n">length</span><span class="p">,</span> <span class="n">length</span><span class="p">))</span>
|
||||
</span><span id="L-1468"><a href="#L-1468"><span class="linenos">1468</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">length</span><span class="p">):</span>
|
||||
</span><span id="L-1469"><a href="#L-1469"><span class="linenos">1469</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">i</span><span class="p">,</span> <span class="n">length</span><span class="p">):</span>
|
||||
</span><span id="L-1470"><a href="#L-1470"><span class="linenos">1470</span></a> <span class="n">cov</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">_covariance_element</span><span class="p">(</span><span class="n">obs</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">obs</span><span class="p">[</span><span class="n">j</span><span class="p">])</span>
|
||||
</span><span id="L-1471"><a href="#L-1471"><span class="linenos">1471</span></a> <span class="n">cov</span> <span class="o">=</span> <span class="n">cov</span> <span class="o">+</span> <span class="n">cov</span><span class="o">.</span><span class="n">T</span> <span class="o">-</span> <span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">cov</span><span class="p">))</span>
|
||||
</span><span id="L-1472"><a href="#L-1472"><span class="linenos">1472</span></a>
|
||||
</span><span id="L-1473"><a href="#L-1473"><span class="linenos">1473</span></a> <span class="n">corr</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="mi">1</span> <span class="o">/</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">cov</span><span class="p">)))</span> <span class="o">@</span> <span class="n">cov</span> <span class="o">@</span> <span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="mi">1</span> <span class="o">/</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">cov</span><span class="p">)))</span>
|
||||
</span><span id="L-1474"><a href="#L-1474"><span class="linenos">1474</span></a>
|
||||
</span><span id="L-1475"><a href="#L-1475"><span class="linenos">1475</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">smooth</span><span class="p">,</span> <span class="nb">int</span><span class="p">):</span>
|
||||
</span><span id="L-1476"><a href="#L-1476"><span class="linenos">1476</span></a> <span class="n">corr</span> <span class="o">=</span> <span class="n">_smooth_eigenvalues</span><span class="p">(</span><span class="n">corr</span><span class="p">,</span> <span class="n">smooth</span><span class="p">)</span>
|
||||
</span><span id="L-1433"><a href="#L-1433"><span class="linenos">1433</span></a><span class="sd"> WARNING: This function should be used with care, especially for observables with support on multiple</span>
|
||||
</span><span id="L-1434"><a href="#L-1434"><span class="linenos">1434</span></a><span class="sd"> ensembles with differing autocorrelations. See the notes below for details.</span>
|
||||
</span><span id="L-1435"><a href="#L-1435"><span class="linenos">1435</span></a>
|
||||
</span><span id="L-1436"><a href="#L-1436"><span class="linenos">1436</span></a><span class="sd"> The gamma method has to be applied first to all observables.</span>
|
||||
</span><span id="L-1437"><a href="#L-1437"><span class="linenos">1437</span></a>
|
||||
</span><span id="L-1438"><a href="#L-1438"><span class="linenos">1438</span></a><span class="sd"> Parameters</span>
|
||||
</span><span id="L-1439"><a href="#L-1439"><span class="linenos">1439</span></a><span class="sd"> ----------</span>
|
||||
</span><span id="L-1440"><a href="#L-1440"><span class="linenos">1440</span></a><span class="sd"> obs : list or numpy.ndarray</span>
|
||||
</span><span id="L-1441"><a href="#L-1441"><span class="linenos">1441</span></a><span class="sd"> List or one dimensional array of Obs</span>
|
||||
</span><span id="L-1442"><a href="#L-1442"><span class="linenos">1442</span></a><span class="sd"> visualize : bool</span>
|
||||
</span><span id="L-1443"><a href="#L-1443"><span class="linenos">1443</span></a><span class="sd"> If True plots the corresponding normalized correlation matrix (default False).</span>
|
||||
</span><span id="L-1444"><a href="#L-1444"><span class="linenos">1444</span></a><span class="sd"> correlation : bool</span>
|
||||
</span><span id="L-1445"><a href="#L-1445"><span class="linenos">1445</span></a><span class="sd"> If True the correlation matrix instead of the error covariance matrix is returned (default False).</span>
|
||||
</span><span id="L-1446"><a href="#L-1446"><span class="linenos">1446</span></a><span class="sd"> smooth : None or int</span>
|
||||
</span><span id="L-1447"><a href="#L-1447"><span class="linenos">1447</span></a><span class="sd"> If smooth is an integer 'E' between 2 and the dimension of the matrix minus 1 the eigenvalue</span>
|
||||
</span><span id="L-1448"><a href="#L-1448"><span class="linenos">1448</span></a><span class="sd"> smoothing procedure of hep-lat/9412087 is applied to the correlation matrix which leaves the</span>
|
||||
</span><span id="L-1449"><a href="#L-1449"><span class="linenos">1449</span></a><span class="sd"> largest E eigenvalues essentially unchanged and smoothes the smaller eigenvalues to avoid extremely</span>
|
||||
</span><span id="L-1450"><a href="#L-1450"><span class="linenos">1450</span></a><span class="sd"> small ones.</span>
|
||||
</span><span id="L-1451"><a href="#L-1451"><span class="linenos">1451</span></a>
|
||||
</span><span id="L-1452"><a href="#L-1452"><span class="linenos">1452</span></a><span class="sd"> Notes</span>
|
||||
</span><span id="L-1453"><a href="#L-1453"><span class="linenos">1453</span></a><span class="sd"> -----</span>
|
||||
</span><span id="L-1454"><a href="#L-1454"><span class="linenos">1454</span></a><span class="sd"> The error covariance is defined such that it agrees with the squared standard error for two identical observables</span>
|
||||
</span><span id="L-1455"><a href="#L-1455"><span class="linenos">1455</span></a><span class="sd"> $$\operatorname{cov}(a,a)=\sum_{s=1}^N\delta_a^s\delta_a^s/N^2=\Gamma_{aa}(0)/N=\operatorname{var}(a)/N=\sigma_a^2$$</span>
|
||||
</span><span id="L-1456"><a href="#L-1456"><span class="linenos">1456</span></a><span class="sd"> in the absence of autocorrelation.</span>
|
||||
</span><span id="L-1457"><a href="#L-1457"><span class="linenos">1457</span></a><span class="sd"> The error covariance is estimated by calculating the correlation matrix assuming no autocorrelation and then rescaling the correlation matrix by the full errors including the previous gamma method estimate for the autocorrelation of the observables. The covariance at windowsize 0 is guaranteed to be positive semi-definite</span>
|
||||
</span><span id="L-1458"><a href="#L-1458"><span class="linenos">1458</span></a><span class="sd"> $$\sum_{i,j}v_i\Gamma_{ij}(0)v_j=\frac{1}{N}\sum_{s=1}^N\sum_{i,j}v_i\delta_i^s\delta_j^s v_j=\frac{1}{N}\sum_{s=1}^N\sum_{i}|v_i\delta_i^s|^2\geq 0\,,$$ for every $v\in\mathbb{R}^M$, while such an identity does not hold for larger windows/lags.</span>
|
||||
</span><span id="L-1459"><a href="#L-1459"><span class="linenos">1459</span></a><span class="sd"> For observables defined on a single ensemble our approximation is equivalent to assuming that the integrated autocorrelation time of an off-diagonal element is equal to the geometric mean of the integrated autocorrelation times of the corresponding diagonal elements.</span>
|
||||
</span><span id="L-1460"><a href="#L-1460"><span class="linenos">1460</span></a><span class="sd"> $$\tau_{\mathrm{int}, ij}=\sqrt{\tau_{\mathrm{int}, i}\times \tau_{\mathrm{int}, j}}$$</span>
|
||||
</span><span id="L-1461"><a href="#L-1461"><span class="linenos">1461</span></a><span class="sd"> This construction ensures that the estimated covariance matrix is positive semi-definite (up to numerical rounding errors).</span>
|
||||
</span><span id="L-1462"><a href="#L-1462"><span class="linenos">1462</span></a><span class="sd"> '''</span>
|
||||
</span><span id="L-1463"><a href="#L-1463"><span class="linenos">1463</span></a>
|
||||
</span><span id="L-1464"><a href="#L-1464"><span class="linenos">1464</span></a> <span class="n">length</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">obs</span><span class="p">)</span>
|
||||
</span><span id="L-1465"><a href="#L-1465"><span class="linenos">1465</span></a>
|
||||
</span><span id="L-1466"><a href="#L-1466"><span class="linenos">1466</span></a> <span class="n">max_samples</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">([</span><span class="n">o</span><span class="o">.</span><span class="n">N</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">obs</span><span class="p">])</span>
|
||||
</span><span id="L-1467"><a href="#L-1467"><span class="linenos">1467</span></a> <span class="k">if</span> <span class="n">max_samples</span> <span class="o"><=</span> <span class="n">length</span> <span class="ow">and</span> <span class="ow">not</span> <span class="p">[</span><span class="n">item</span> <span class="k">for</span> <span class="n">sublist</span> <span class="ow">in</span> <span class="p">[</span><span class="n">o</span><span class="o">.</span><span class="n">cov_names</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">obs</span><span class="p">]</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">sublist</span><span class="p">]:</span>
|
||||
</span><span id="L-1468"><a href="#L-1468"><span class="linenos">1468</span></a> <span class="n">warnings</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="sa">f</span><span class="s2">"The dimension of the covariance matrix (</span><span class="si">{</span><span class="n">length</span><span class="si">}</span><span class="s2">) is larger or equal to the number of samples (</span><span class="si">{</span><span class="n">max_samples</span><span class="si">}</span><span class="s2">). This will result in a rank deficient matrix."</span><span class="p">,</span> <span class="ne">RuntimeWarning</span><span class="p">)</span>
|
||||
</span><span id="L-1469"><a href="#L-1469"><span class="linenos">1469</span></a>
|
||||
</span><span id="L-1470"><a href="#L-1470"><span class="linenos">1470</span></a> <span class="n">cov</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">((</span><span class="n">length</span><span class="p">,</span> <span class="n">length</span><span class="p">))</span>
|
||||
</span><span id="L-1471"><a href="#L-1471"><span class="linenos">1471</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">length</span><span class="p">):</span>
|
||||
</span><span id="L-1472"><a href="#L-1472"><span class="linenos">1472</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">i</span><span class="p">,</span> <span class="n">length</span><span class="p">):</span>
|
||||
</span><span id="L-1473"><a href="#L-1473"><span class="linenos">1473</span></a> <span class="n">cov</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">_covariance_element</span><span class="p">(</span><span class="n">obs</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">obs</span><span class="p">[</span><span class="n">j</span><span class="p">])</span>
|
||||
</span><span id="L-1474"><a href="#L-1474"><span class="linenos">1474</span></a> <span class="n">cov</span> <span class="o">=</span> <span class="n">cov</span> <span class="o">+</span> <span class="n">cov</span><span class="o">.</span><span class="n">T</span> <span class="o">-</span> <span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">cov</span><span class="p">))</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="n">corr</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="mi">1</span> <span class="o">/</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">cov</span><span class="p">)))</span> <span class="o">@</span> <span class="n">cov</span> <span class="o">@</span> <span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="mi">1</span> <span class="o">/</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">cov</span><span class="p">)))</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="k">if</span> <span class="n">visualize</span><span class="p">:</span>
|
||||
</span><span id="L-1479"><a href="#L-1479"><span class="linenos">1479</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">matshow</span><span class="p">(</span><span class="n">corr</span><span class="p">,</span> <span class="n">vmin</span><span class="o">=-</span><span class="mi">1</span><span class="p">,</span> <span class="n">vmax</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
|
||||
</span><span id="L-1480"><a href="#L-1480"><span class="linenos">1480</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">set_cmap</span><span class="p">(</span><span class="s1">'RdBu'</span><span class="p">)</span>
|
||||
</span><span id="L-1481"><a href="#L-1481"><span class="linenos">1481</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">colorbar</span><span class="p">()</span>
|
||||
</span><span id="L-1482"><a href="#L-1482"><span class="linenos">1482</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">draw</span><span class="p">()</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">correlation</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span>
|
||||
</span><span id="L-1485"><a href="#L-1485"><span class="linenos">1485</span></a> <span class="k">return</span> <span class="n">corr</span>
|
||||
</span><span id="L-1478"><a href="#L-1478"><span class="linenos">1478</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">smooth</span><span class="p">,</span> <span class="nb">int</span><span class="p">):</span>
|
||||
</span><span id="L-1479"><a href="#L-1479"><span class="linenos">1479</span></a> <span class="n">corr</span> <span class="o">=</span> <span class="n">_smooth_eigenvalues</span><span class="p">(</span><span class="n">corr</span><span class="p">,</span> <span class="n">smooth</span><span class="p">)</span>
|
||||
</span><span id="L-1480"><a href="#L-1480"><span class="linenos">1480</span></a>
|
||||
</span><span id="L-1481"><a href="#L-1481"><span class="linenos">1481</span></a> <span class="k">if</span> <span class="n">visualize</span><span class="p">:</span>
|
||||
</span><span id="L-1482"><a href="#L-1482"><span class="linenos">1482</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">matshow</span><span class="p">(</span><span class="n">corr</span><span class="p">,</span> <span class="n">vmin</span><span class="o">=-</span><span class="mi">1</span><span class="p">,</span> <span class="n">vmax</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
|
||||
</span><span id="L-1483"><a href="#L-1483"><span class="linenos">1483</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">set_cmap</span><span class="p">(</span><span class="s1">'RdBu'</span><span class="p">)</span>
|
||||
</span><span id="L-1484"><a href="#L-1484"><span class="linenos">1484</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">colorbar</span><span class="p">()</span>
|
||||
</span><span id="L-1485"><a href="#L-1485"><span class="linenos">1485</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">draw</span><span class="p">()</span>
|
||||
</span><span id="L-1486"><a href="#L-1486"><span class="linenos">1486</span></a>
|
||||
</span><span id="L-1487"><a href="#L-1487"><span class="linenos">1487</span></a> <span class="n">errors</span> <span class="o">=</span> <span class="p">[</span><span class="n">o</span><span class="o">.</span><span class="n">dvalue</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">obs</span><span class="p">]</span>
|
||||
</span><span id="L-1488"><a href="#L-1488"><span class="linenos">1488</span></a> <span class="n">cov</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">errors</span><span class="p">)</span> <span class="o">@</span> <span class="n">corr</span> <span class="o">@</span> <span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">errors</span><span class="p">)</span>
|
||||
</span><span id="L-1487"><a href="#L-1487"><span class="linenos">1487</span></a> <span class="k">if</span> <span class="n">correlation</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span>
|
||||
</span><span id="L-1488"><a href="#L-1488"><span class="linenos">1488</span></a> <span class="k">return</span> <span class="n">corr</span>
|
||||
</span><span id="L-1489"><a href="#L-1489"><span class="linenos">1489</span></a>
|
||||
</span><span id="L-1490"><a href="#L-1490"><span class="linenos">1490</span></a> <span class="n">eigenvalues</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">eigh</span><span class="p">(</span><span class="n">cov</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
|
||||
</span><span id="L-1491"><a href="#L-1491"><span class="linenos">1491</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">np</span><span class="o">.</span><span class="n">all</span><span class="p">(</span><span class="n">eigenvalues</span> <span class="o">>=</span> <span class="mi">0</span><span class="p">):</span>
|
||||
</span><span id="L-1492"><a href="#L-1492"><span class="linenos">1492</span></a> <span class="n">warnings</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="s2">"Covariance matrix is not positive semi-definite (Eigenvalues: "</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">eigenvalues</span><span class="p">)</span> <span class="o">+</span> <span class="s2">")"</span><span class="p">,</span> <span class="ne">RuntimeWarning</span><span class="p">)</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">return</span> <span class="n">cov</span>
|
||||
</span><span id="L-1495"><a href="#L-1495"><span class="linenos">1495</span></a>
|
||||
</span><span id="L-1490"><a href="#L-1490"><span class="linenos">1490</span></a> <span class="n">errors</span> <span class="o">=</span> <span class="p">[</span><span class="n">o</span><span class="o">.</span><span class="n">dvalue</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">obs</span><span class="p">]</span>
|
||||
</span><span id="L-1491"><a href="#L-1491"><span class="linenos">1491</span></a> <span class="n">cov</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">errors</span><span class="p">)</span> <span class="o">@</span> <span class="n">corr</span> <span class="o">@</span> <span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">errors</span><span class="p">)</span>
|
||||
</span><span id="L-1492"><a href="#L-1492"><span class="linenos">1492</span></a>
|
||||
</span><span id="L-1493"><a href="#L-1493"><span class="linenos">1493</span></a> <span class="n">eigenvalues</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">eigh</span><span class="p">(</span><span class="n">cov</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
|
||||
</span><span id="L-1494"><a href="#L-1494"><span class="linenos">1494</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">np</span><span class="o">.</span><span class="n">all</span><span class="p">(</span><span class="n">eigenvalues</span> <span class="o">>=</span> <span class="mi">0</span><span class="p">):</span>
|
||||
</span><span id="L-1495"><a href="#L-1495"><span class="linenos">1495</span></a> <span class="n">warnings</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="s2">"Covariance matrix is not positive semi-definite (Eigenvalues: "</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">eigenvalues</span><span class="p">)</span> <span class="o">+</span> <span class="s2">")"</span><span class="p">,</span> <span class="ne">RuntimeWarning</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="nf">_smooth_eigenvalues</span><span class="p">(</span><span class="n">corr</span><span class="p">,</span> <span class="n">E</span><span class="p">):</span>
|
||||
</span><span id="L-1498"><a href="#L-1498"><span class="linenos">1498</span></a> <span class="sd">"""Eigenvalue smoothing as described in hep-lat/9412087</span>
|
||||
</span><span id="L-1497"><a href="#L-1497"><span class="linenos">1497</span></a> <span class="k">return</span> <span class="n">cov</span>
|
||||
</span><span id="L-1498"><a href="#L-1498"><span class="linenos">1498</span></a>
|
||||
</span><span id="L-1499"><a href="#L-1499"><span class="linenos">1499</span></a>
|
||||
</span><span id="L-1500"><a href="#L-1500"><span class="linenos">1500</span></a><span class="sd"> corr : np.ndarray</span>
|
||||
</span><span id="L-1501"><a href="#L-1501"><span class="linenos">1501</span></a><span class="sd"> correlation matrix</span>
|
||||
</span><span id="L-1502"><a href="#L-1502"><span class="linenos">1502</span></a><span class="sd"> E : integer</span>
|
||||
</span><span id="L-1503"><a href="#L-1503"><span class="linenos">1503</span></a><span class="sd"> Number of eigenvalues to be left substantially unchanged</span>
|
||||
</span><span id="L-1504"><a href="#L-1504"><span class="linenos">1504</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-1505"><a href="#L-1505"><span class="linenos">1505</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="mi">2</span> <span class="o"><</span> <span class="n">E</span> <span class="o"><</span> <span class="n">corr</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="mi">1</span><span class="p">):</span>
|
||||
</span><span id="L-1506"><a href="#L-1506"><span class="linenos">1506</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="sa">f</span><span class="s2">"'E' has to be between 2 and the dimension of the correlation matrix minus 1 (</span><span class="si">{</span><span class="n">corr</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="mi">1</span><span class="si">}</span><span class="s2">)."</span><span class="p">)</span>
|
||||
</span><span id="L-1507"><a href="#L-1507"><span class="linenos">1507</span></a> <span class="n">vals</span><span class="p">,</span> <span class="n">vec</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">eigh</span><span class="p">(</span><span class="n">corr</span><span class="p">)</span>
|
||||
</span><span id="L-1508"><a href="#L-1508"><span class="linenos">1508</span></a> <span class="n">lambda_min</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">vals</span><span class="p">[:</span><span class="o">-</span><span class="n">E</span><span class="p">])</span>
|
||||
</span><span id="L-1509"><a href="#L-1509"><span class="linenos">1509</span></a> <span class="n">vals</span><span class="p">[</span><span class="n">vals</span> <span class="o"><</span> <span class="n">lambda_min</span><span class="p">]</span> <span class="o">=</span> <span class="n">lambda_min</span>
|
||||
</span><span id="L-1510"><a href="#L-1510"><span class="linenos">1510</span></a> <span class="n">vals</span> <span class="o">/=</span> <span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">vals</span><span class="p">)</span>
|
||||
</span><span id="L-1511"><a href="#L-1511"><span class="linenos">1511</span></a> <span class="k">return</span> <span class="n">vec</span> <span class="o">@</span> <span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">vals</span><span class="p">)</span> <span class="o">@</span> <span class="n">vec</span><span class="o">.</span><span class="n">T</span>
|
||||
</span><span id="L-1512"><a href="#L-1512"><span class="linenos">1512</span></a>
|
||||
</span><span id="L-1513"><a href="#L-1513"><span class="linenos">1513</span></a>
|
||||
</span><span id="L-1514"><a href="#L-1514"><span class="linenos">1514</span></a><span class="k">def</span> <span class="nf">_covariance_element</span><span class="p">(</span><span class="n">obs1</span><span class="p">,</span> <span class="n">obs2</span><span class="p">):</span>
|
||||
</span><span id="L-1515"><a href="#L-1515"><span class="linenos">1515</span></a> <span class="sd">"""Estimates the covariance of two Obs objects, neglecting autocorrelations."""</span>
|
||||
</span><span id="L-1500"><a href="#L-1500"><span class="linenos">1500</span></a><span class="k">def</span> <span class="nf">_smooth_eigenvalues</span><span class="p">(</span><span class="n">corr</span><span class="p">,</span> <span class="n">E</span><span class="p">):</span>
|
||||
</span><span id="L-1501"><a href="#L-1501"><span class="linenos">1501</span></a> <span class="sd">"""Eigenvalue smoothing as described in hep-lat/9412087</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="sd"> corr : np.ndarray</span>
|
||||
</span><span id="L-1504"><a href="#L-1504"><span class="linenos">1504</span></a><span class="sd"> correlation matrix</span>
|
||||
</span><span id="L-1505"><a href="#L-1505"><span class="linenos">1505</span></a><span class="sd"> E : integer</span>
|
||||
</span><span id="L-1506"><a href="#L-1506"><span class="linenos">1506</span></a><span class="sd"> Number of eigenvalues to be left substantially unchanged</span>
|
||||
</span><span id="L-1507"><a href="#L-1507"><span class="linenos">1507</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-1508"><a href="#L-1508"><span class="linenos">1508</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="mi">2</span> <span class="o"><</span> <span class="n">E</span> <span class="o"><</span> <span class="n">corr</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="mi">1</span><span class="p">):</span>
|
||||
</span><span id="L-1509"><a href="#L-1509"><span class="linenos">1509</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="sa">f</span><span class="s2">"'E' has to be between 2 and the dimension of the correlation matrix minus 1 (</span><span class="si">{</span><span class="n">corr</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="mi">1</span><span class="si">}</span><span class="s2">)."</span><span class="p">)</span>
|
||||
</span><span id="L-1510"><a href="#L-1510"><span class="linenos">1510</span></a> <span class="n">vals</span><span class="p">,</span> <span class="n">vec</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">eigh</span><span class="p">(</span><span class="n">corr</span><span class="p">)</span>
|
||||
</span><span id="L-1511"><a href="#L-1511"><span class="linenos">1511</span></a> <span class="n">lambda_min</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">vals</span><span class="p">[:</span><span class="o">-</span><span class="n">E</span><span class="p">])</span>
|
||||
</span><span id="L-1512"><a href="#L-1512"><span class="linenos">1512</span></a> <span class="n">vals</span><span class="p">[</span><span class="n">vals</span> <span class="o"><</span> <span class="n">lambda_min</span><span class="p">]</span> <span class="o">=</span> <span class="n">lambda_min</span>
|
||||
</span><span id="L-1513"><a href="#L-1513"><span class="linenos">1513</span></a> <span class="n">vals</span> <span class="o">/=</span> <span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">vals</span><span class="p">)</span>
|
||||
</span><span id="L-1514"><a href="#L-1514"><span class="linenos">1514</span></a> <span class="k">return</span> <span class="n">vec</span> <span class="o">@</span> <span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">vals</span><span class="p">)</span> <span class="o">@</span> <span class="n">vec</span><span class="o">.</span><span class="n">T</span>
|
||||
</span><span id="L-1515"><a href="#L-1515"><span class="linenos">1515</span></a>
|
||||
</span><span id="L-1516"><a href="#L-1516"><span class="linenos">1516</span></a>
|
||||
</span><span id="L-1517"><a href="#L-1517"><span class="linenos">1517</span></a> <span class="k">def</span> <span class="nf">calc_gamma</span><span class="p">(</span><span class="n">deltas1</span><span class="p">,</span> <span class="n">deltas2</span><span class="p">,</span> <span class="n">idx1</span><span class="p">,</span> <span class="n">idx2</span><span class="p">,</span> <span class="n">new_idx</span><span class="p">):</span>
|
||||
</span><span id="L-1518"><a href="#L-1518"><span class="linenos">1518</span></a> <span class="n">deltas1</span> <span class="o">=</span> <span class="n">_reduce_deltas</span><span class="p">(</span><span class="n">deltas1</span><span class="p">,</span> <span class="n">idx1</span><span class="p">,</span> <span class="n">new_idx</span><span class="p">)</span>
|
||||
</span><span id="L-1519"><a href="#L-1519"><span class="linenos">1519</span></a> <span class="n">deltas2</span> <span class="o">=</span> <span class="n">_reduce_deltas</span><span class="p">(</span><span class="n">deltas2</span><span class="p">,</span> <span class="n">idx2</span><span class="p">,</span> <span class="n">new_idx</span><span class="p">)</span>
|
||||
</span><span id="L-1520"><a href="#L-1520"><span class="linenos">1520</span></a> <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">deltas1</span> <span class="o">*</span> <span class="n">deltas2</span><span class="p">)</span>
|
||||
</span><span id="L-1521"><a href="#L-1521"><span class="linenos">1521</span></a>
|
||||
</span><span id="L-1522"><a href="#L-1522"><span class="linenos">1522</span></a> <span class="k">if</span> <span class="nb">set</span><span class="p">(</span><span class="n">obs1</span><span class="o">.</span><span class="n">names</span><span class="p">)</span><span class="o">.</span><span class="n">isdisjoint</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">obs2</span><span class="o">.</span><span class="n">names</span><span class="p">)):</span>
|
||||
</span><span id="L-1523"><a href="#L-1523"><span class="linenos">1523</span></a> <span class="k">return</span> <span class="mf">0.0</span>
|
||||
</span><span id="L-1517"><a href="#L-1517"><span class="linenos">1517</span></a><span class="k">def</span> <span class="nf">_covariance_element</span><span class="p">(</span><span class="n">obs1</span><span class="p">,</span> <span class="n">obs2</span><span class="p">):</span>
|
||||
</span><span id="L-1518"><a href="#L-1518"><span class="linenos">1518</span></a> <span class="sd">"""Estimates the covariance of two Obs objects, neglecting autocorrelations."""</span>
|
||||
</span><span id="L-1519"><a href="#L-1519"><span class="linenos">1519</span></a>
|
||||
</span><span id="L-1520"><a href="#L-1520"><span class="linenos">1520</span></a> <span class="k">def</span> <span class="nf">calc_gamma</span><span class="p">(</span><span class="n">deltas1</span><span class="p">,</span> <span class="n">deltas2</span><span class="p">,</span> <span class="n">idx1</span><span class="p">,</span> <span class="n">idx2</span><span class="p">,</span> <span class="n">new_idx</span><span class="p">):</span>
|
||||
</span><span id="L-1521"><a href="#L-1521"><span class="linenos">1521</span></a> <span class="n">deltas1</span> <span class="o">=</span> <span class="n">_reduce_deltas</span><span class="p">(</span><span class="n">deltas1</span><span class="p">,</span> <span class="n">idx1</span><span class="p">,</span> <span class="n">new_idx</span><span class="p">)</span>
|
||||
</span><span id="L-1522"><a href="#L-1522"><span class="linenos">1522</span></a> <span class="n">deltas2</span> <span class="o">=</span> <span class="n">_reduce_deltas</span><span class="p">(</span><span class="n">deltas2</span><span class="p">,</span> <span class="n">idx2</span><span class="p">,</span> <span class="n">new_idx</span><span class="p">)</span>
|
||||
</span><span id="L-1523"><a href="#L-1523"><span class="linenos">1523</span></a> <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">deltas1</span> <span class="o">*</span> <span class="n">deltas2</span><span class="p">)</span>
|
||||
</span><span id="L-1524"><a href="#L-1524"><span class="linenos">1524</span></a>
|
||||
</span><span id="L-1525"><a href="#L-1525"><span class="linenos">1525</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">obs1</span><span class="p">,</span> <span class="s1">'e_dvalue'</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">obs2</span><span class="p">,</span> <span class="s1">'e_dvalue'</span><span class="p">):</span>
|
||||
</span><span id="L-1526"><a href="#L-1526"><span class="linenos">1526</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">'The gamma method has to be applied to both Obs first.'</span><span class="p">)</span>
|
||||
</span><span id="L-1525"><a href="#L-1525"><span class="linenos">1525</span></a> <span class="k">if</span> <span class="nb">set</span><span class="p">(</span><span class="n">obs1</span><span class="o">.</span><span class="n">names</span><span class="p">)</span><span class="o">.</span><span class="n">isdisjoint</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">obs2</span><span class="o">.</span><span class="n">names</span><span class="p">)):</span>
|
||||
</span><span id="L-1526"><a href="#L-1526"><span class="linenos">1526</span></a> <span class="k">return</span> <span class="mf">0.0</span>
|
||||
</span><span id="L-1527"><a href="#L-1527"><span class="linenos">1527</span></a>
|
||||
</span><span id="L-1528"><a href="#L-1528"><span class="linenos">1528</span></a> <span class="n">dvalue</span> <span class="o">=</span> <span class="mf">0.0</span>
|
||||
</span><span id="L-1529"><a href="#L-1529"><span class="linenos">1529</span></a>
|
||||
</span><span id="L-1530"><a href="#L-1530"><span class="linenos">1530</span></a> <span class="k">for</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="n">obs1</span><span class="o">.</span><span class="n">mc_names</span><span class="p">:</span>
|
||||
</span><span id="L-1531"><a href="#L-1531"><span class="linenos">1531</span></a>
|
||||
</span><span id="L-1532"><a href="#L-1532"><span class="linenos">1532</span></a> <span class="k">if</span> <span class="n">e_name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">obs2</span><span class="o">.</span><span class="n">mc_names</span><span class="p">:</span>
|
||||
</span><span id="L-1533"><a href="#L-1533"><span class="linenos">1533</span></a> <span class="k">continue</span>
|
||||
</span><span id="L-1528"><a href="#L-1528"><span class="linenos">1528</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">obs1</span><span class="p">,</span> <span class="s1">'e_dvalue'</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">obs2</span><span class="p">,</span> <span class="s1">'e_dvalue'</span><span class="p">):</span>
|
||||
</span><span id="L-1529"><a href="#L-1529"><span class="linenos">1529</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">'The gamma method has to be applied to both Obs first.'</span><span class="p">)</span>
|
||||
</span><span id="L-1530"><a href="#L-1530"><span class="linenos">1530</span></a>
|
||||
</span><span id="L-1531"><a href="#L-1531"><span class="linenos">1531</span></a> <span class="n">dvalue</span> <span class="o">=</span> <span class="mf">0.0</span>
|
||||
</span><span id="L-1532"><a href="#L-1532"><span class="linenos">1532</span></a>
|
||||
</span><span id="L-1533"><a href="#L-1533"><span class="linenos">1533</span></a> <span class="k">for</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="n">obs1</span><span class="o">.</span><span class="n">mc_names</span><span class="p">:</span>
|
||||
</span><span id="L-1534"><a href="#L-1534"><span class="linenos">1534</span></a>
|
||||
</span><span id="L-1535"><a href="#L-1535"><span class="linenos">1535</span></a> <span class="n">idl_d</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
</span><span id="L-1536"><a href="#L-1536"><span class="linenos">1536</span></a> <span class="k">for</span> <span class="n">r_name</span> <span class="ow">in</span> <span class="n">obs1</span><span class="o">.</span><span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]:</span>
|
||||
</span><span id="L-1537"><a href="#L-1537"><span class="linenos">1537</span></a> <span class="k">if</span> <span class="n">r_name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">obs2</span><span class="o">.</span><span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]:</span>
|
||||
</span><span id="L-1538"><a href="#L-1538"><span class="linenos">1538</span></a> <span class="k">continue</span>
|
||||
</span><span id="L-1539"><a href="#L-1539"><span class="linenos">1539</span></a> <span class="n">idl_d</span><span class="p">[</span><span class="n">r_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">_intersection_idx</span><span class="p">([</span><span class="n">obs1</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">obs2</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">]])</span>
|
||||
</span><span id="L-1540"><a href="#L-1540"><span class="linenos">1540</span></a>
|
||||
</span><span id="L-1541"><a href="#L-1541"><span class="linenos">1541</span></a> <span class="n">gamma</span> <span class="o">=</span> <span class="mf">0.0</span>
|
||||
</span><span id="L-1542"><a href="#L-1542"><span class="linenos">1542</span></a>
|
||||
</span><span id="L-1543"><a href="#L-1543"><span class="linenos">1543</span></a> <span class="k">for</span> <span class="n">r_name</span> <span class="ow">in</span> <span class="n">obs1</span><span class="o">.</span><span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]:</span>
|
||||
</span><span id="L-1544"><a href="#L-1544"><span class="linenos">1544</span></a> <span class="k">if</span> <span class="n">r_name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">obs2</span><span class="o">.</span><span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]:</span>
|
||||
</span><span id="L-1545"><a href="#L-1545"><span class="linenos">1545</span></a> <span class="k">continue</span>
|
||||
</span><span id="L-1546"><a href="#L-1546"><span class="linenos">1546</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">idl_d</span><span class="p">[</span><span class="n">r_name</span><span class="p">])</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||||
</span><span id="L-1547"><a href="#L-1547"><span class="linenos">1547</span></a> <span class="k">continue</span>
|
||||
</span><span id="L-1548"><a href="#L-1548"><span class="linenos">1548</span></a> <span class="n">gamma</span> <span class="o">+=</span> <span class="n">calc_gamma</span><span class="p">(</span><span class="n">obs1</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">obs2</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">obs1</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">obs2</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">idl_d</span><span class="p">[</span><span class="n">r_name</span><span class="p">])</span>
|
||||
</span><span id="L-1549"><a href="#L-1549"><span class="linenos">1549</span></a>
|
||||
</span><span id="L-1550"><a href="#L-1550"><span class="linenos">1550</span></a> <span class="k">if</span> <span class="n">gamma</span> <span class="o">==</span> <span class="mf">0.0</span><span class="p">:</span>
|
||||
</span><span id="L-1551"><a href="#L-1551"><span class="linenos">1551</span></a> <span class="k">continue</span>
|
||||
</span><span id="L-1535"><a href="#L-1535"><span class="linenos">1535</span></a> <span class="k">if</span> <span class="n">e_name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">obs2</span><span class="o">.</span><span class="n">mc_names</span><span class="p">:</span>
|
||||
</span><span id="L-1536"><a href="#L-1536"><span class="linenos">1536</span></a> <span class="k">continue</span>
|
||||
</span><span id="L-1537"><a href="#L-1537"><span class="linenos">1537</span></a>
|
||||
</span><span id="L-1538"><a href="#L-1538"><span class="linenos">1538</span></a> <span class="n">idl_d</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
</span><span id="L-1539"><a href="#L-1539"><span class="linenos">1539</span></a> <span class="k">for</span> <span class="n">r_name</span> <span class="ow">in</span> <span class="n">obs1</span><span class="o">.</span><span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]:</span>
|
||||
</span><span id="L-1540"><a href="#L-1540"><span class="linenos">1540</span></a> <span class="k">if</span> <span class="n">r_name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">obs2</span><span class="o">.</span><span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]:</span>
|
||||
</span><span id="L-1541"><a href="#L-1541"><span class="linenos">1541</span></a> <span class="k">continue</span>
|
||||
</span><span id="L-1542"><a href="#L-1542"><span class="linenos">1542</span></a> <span class="n">idl_d</span><span class="p">[</span><span class="n">r_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">_intersection_idx</span><span class="p">([</span><span class="n">obs1</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">obs2</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">]])</span>
|
||||
</span><span id="L-1543"><a href="#L-1543"><span class="linenos">1543</span></a>
|
||||
</span><span id="L-1544"><a href="#L-1544"><span class="linenos">1544</span></a> <span class="n">gamma</span> <span class="o">=</span> <span class="mf">0.0</span>
|
||||
</span><span id="L-1545"><a href="#L-1545"><span class="linenos">1545</span></a>
|
||||
</span><span id="L-1546"><a href="#L-1546"><span class="linenos">1546</span></a> <span class="k">for</span> <span class="n">r_name</span> <span class="ow">in</span> <span class="n">obs1</span><span class="o">.</span><span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]:</span>
|
||||
</span><span id="L-1547"><a href="#L-1547"><span class="linenos">1547</span></a> <span class="k">if</span> <span class="n">r_name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">obs2</span><span class="o">.</span><span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]:</span>
|
||||
</span><span id="L-1548"><a href="#L-1548"><span class="linenos">1548</span></a> <span class="k">continue</span>
|
||||
</span><span id="L-1549"><a href="#L-1549"><span class="linenos">1549</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">idl_d</span><span class="p">[</span><span class="n">r_name</span><span class="p">])</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||||
</span><span id="L-1550"><a href="#L-1550"><span class="linenos">1550</span></a> <span class="k">continue</span>
|
||||
</span><span id="L-1551"><a href="#L-1551"><span class="linenos">1551</span></a> <span class="n">gamma</span> <span class="o">+=</span> <span class="n">calc_gamma</span><span class="p">(</span><span class="n">obs1</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">obs2</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">obs1</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">obs2</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">idl_d</span><span class="p">[</span><span class="n">r_name</span><span class="p">])</span>
|
||||
</span><span id="L-1552"><a href="#L-1552"><span class="linenos">1552</span></a>
|
||||
</span><span id="L-1553"><a href="#L-1553"><span class="linenos">1553</span></a> <span class="n">gamma_div</span> <span class="o">=</span> <span class="mf">0.0</span>
|
||||
</span><span id="L-1554"><a href="#L-1554"><span class="linenos">1554</span></a> <span class="k">for</span> <span class="n">r_name</span> <span class="ow">in</span> <span class="n">obs1</span><span class="o">.</span><span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]:</span>
|
||||
</span><span id="L-1555"><a href="#L-1555"><span class="linenos">1555</span></a> <span class="k">if</span> <span class="n">r_name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">obs2</span><span class="o">.</span><span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]:</span>
|
||||
</span><span id="L-1556"><a href="#L-1556"><span class="linenos">1556</span></a> <span class="k">continue</span>
|
||||
</span><span id="L-1557"><a href="#L-1557"><span class="linenos">1557</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">idl_d</span><span class="p">[</span><span class="n">r_name</span><span class="p">])</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||||
</span><span id="L-1558"><a href="#L-1558"><span class="linenos">1558</span></a> <span class="k">continue</span>
|
||||
</span><span id="L-1559"><a href="#L-1559"><span class="linenos">1559</span></a> <span class="n">gamma_div</span> <span class="o">+=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">calc_gamma</span><span class="p">(</span><span class="n">obs1</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">obs1</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">obs1</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">obs1</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">idl_d</span><span class="p">[</span><span class="n">r_name</span><span class="p">])</span> <span class="o">*</span> <span class="n">calc_gamma</span><span class="p">(</span><span class="n">obs2</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">obs2</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">obs2</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">obs2</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">idl_d</span><span class="p">[</span><span class="n">r_name</span><span class="p">]))</span>
|
||||
</span><span id="L-1560"><a href="#L-1560"><span class="linenos">1560</span></a> <span class="n">gamma</span> <span class="o">/=</span> <span class="n">gamma_div</span>
|
||||
</span><span id="L-1561"><a href="#L-1561"><span class="linenos">1561</span></a>
|
||||
</span><span id="L-1562"><a href="#L-1562"><span class="linenos">1562</span></a> <span class="n">dvalue</span> <span class="o">+=</span> <span class="n">gamma</span>
|
||||
</span><span id="L-1563"><a href="#L-1563"><span class="linenos">1563</span></a>
|
||||
</span><span id="L-1564"><a href="#L-1564"><span class="linenos">1564</span></a> <span class="k">for</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="n">obs1</span><span class="o">.</span><span class="n">cov_names</span><span class="p">:</span>
|
||||
</span><span id="L-1565"><a href="#L-1565"><span class="linenos">1565</span></a>
|
||||
</span><span id="L-1566"><a href="#L-1566"><span class="linenos">1566</span></a> <span class="k">if</span> <span class="n">e_name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">obs2</span><span class="o">.</span><span class="n">cov_names</span><span class="p">:</span>
|
||||
</span><span id="L-1567"><a href="#L-1567"><span class="linenos">1567</span></a> <span class="k">continue</span>
|
||||
</span><span id="L-1553"><a href="#L-1553"><span class="linenos">1553</span></a> <span class="k">if</span> <span class="n">gamma</span> <span class="o">==</span> <span class="mf">0.0</span><span class="p">:</span>
|
||||
</span><span id="L-1554"><a href="#L-1554"><span class="linenos">1554</span></a> <span class="k">continue</span>
|
||||
</span><span id="L-1555"><a href="#L-1555"><span class="linenos">1555</span></a>
|
||||
</span><span id="L-1556"><a href="#L-1556"><span class="linenos">1556</span></a> <span class="n">gamma_div</span> <span class="o">=</span> <span class="mf">0.0</span>
|
||||
</span><span id="L-1557"><a href="#L-1557"><span class="linenos">1557</span></a> <span class="k">for</span> <span class="n">r_name</span> <span class="ow">in</span> <span class="n">obs1</span><span class="o">.</span><span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]:</span>
|
||||
</span><span id="L-1558"><a href="#L-1558"><span class="linenos">1558</span></a> <span class="k">if</span> <span class="n">r_name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">obs2</span><span class="o">.</span><span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]:</span>
|
||||
</span><span id="L-1559"><a href="#L-1559"><span class="linenos">1559</span></a> <span class="k">continue</span>
|
||||
</span><span id="L-1560"><a href="#L-1560"><span class="linenos">1560</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">idl_d</span><span class="p">[</span><span class="n">r_name</span><span class="p">])</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||||
</span><span id="L-1561"><a href="#L-1561"><span class="linenos">1561</span></a> <span class="k">continue</span>
|
||||
</span><span id="L-1562"><a href="#L-1562"><span class="linenos">1562</span></a> <span class="n">gamma_div</span> <span class="o">+=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">calc_gamma</span><span class="p">(</span><span class="n">obs1</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">obs1</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">obs1</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">obs1</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">idl_d</span><span class="p">[</span><span class="n">r_name</span><span class="p">])</span> <span class="o">*</span> <span class="n">calc_gamma</span><span class="p">(</span><span class="n">obs2</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">obs2</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">obs2</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">obs2</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">idl_d</span><span class="p">[</span><span class="n">r_name</span><span class="p">]))</span>
|
||||
</span><span id="L-1563"><a href="#L-1563"><span class="linenos">1563</span></a> <span class="n">gamma</span> <span class="o">/=</span> <span class="n">gamma_div</span>
|
||||
</span><span id="L-1564"><a href="#L-1564"><span class="linenos">1564</span></a>
|
||||
</span><span id="L-1565"><a href="#L-1565"><span class="linenos">1565</span></a> <span class="n">dvalue</span> <span class="o">+=</span> <span class="n">gamma</span>
|
||||
</span><span id="L-1566"><a href="#L-1566"><span class="linenos">1566</span></a>
|
||||
</span><span id="L-1567"><a href="#L-1567"><span class="linenos">1567</span></a> <span class="k">for</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="n">obs1</span><span class="o">.</span><span class="n">cov_names</span><span class="p">:</span>
|
||||
</span><span id="L-1568"><a href="#L-1568"><span class="linenos">1568</span></a>
|
||||
</span><span id="L-1569"><a href="#L-1569"><span class="linenos">1569</span></a> <span class="n">dvalue</span> <span class="o">+=</span> <span class="nb">float</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">transpose</span><span class="p">(</span><span class="n">obs1</span><span class="o">.</span><span class="n">covobs</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span><span class="o">.</span><span class="n">grad</span><span class="p">),</span> <span class="n">np</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">obs1</span><span class="o">.</span><span class="n">covobs</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span><span class="o">.</span><span class="n">cov</span><span class="p">,</span> <span class="n">obs2</span><span class="o">.</span><span class="n">covobs</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span><span class="o">.</span><span class="n">grad</span><span class="p">)))</span>
|
||||
</span><span id="L-1570"><a href="#L-1570"><span class="linenos">1570</span></a>
|
||||
</span><span id="L-1571"><a href="#L-1571"><span class="linenos">1571</span></a> <span class="k">return</span> <span class="n">dvalue</span>
|
||||
</span><span id="L-1572"><a href="#L-1572"><span class="linenos">1572</span></a>
|
||||
</span><span id="L-1569"><a href="#L-1569"><span class="linenos">1569</span></a> <span class="k">if</span> <span class="n">e_name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">obs2</span><span class="o">.</span><span class="n">cov_names</span><span class="p">:</span>
|
||||
</span><span id="L-1570"><a href="#L-1570"><span class="linenos">1570</span></a> <span class="k">continue</span>
|
||||
</span><span id="L-1571"><a href="#L-1571"><span class="linenos">1571</span></a>
|
||||
</span><span id="L-1572"><a href="#L-1572"><span class="linenos">1572</span></a> <span class="n">dvalue</span> <span class="o">+=</span> <span class="nb">float</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">transpose</span><span class="p">(</span><span class="n">obs1</span><span class="o">.</span><span class="n">covobs</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span><span class="o">.</span><span class="n">grad</span><span class="p">),</span> <span class="n">np</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">obs1</span><span class="o">.</span><span class="n">covobs</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span><span class="o">.</span><span class="n">cov</span><span class="p">,</span> <span class="n">obs2</span><span class="o">.</span><span class="n">covobs</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span><span class="o">.</span><span class="n">grad</span><span class="p">)))</span>
|
||||
</span><span id="L-1573"><a href="#L-1573"><span class="linenos">1573</span></a>
|
||||
</span><span id="L-1574"><a href="#L-1574"><span class="linenos">1574</span></a><span class="k">def</span> <span class="nf">import_jackknife</span><span class="p">(</span><span class="n">jacks</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">idl</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
</span><span id="L-1575"><a href="#L-1575"><span class="linenos">1575</span></a> <span class="sd">"""Imports jackknife samples and returns an Obs</span>
|
||||
</span><span id="L-1574"><a href="#L-1574"><span class="linenos">1574</span></a> <span class="k">return</span> <span class="n">dvalue</span>
|
||||
</span><span id="L-1575"><a href="#L-1575"><span class="linenos">1575</span></a>
|
||||
</span><span id="L-1576"><a href="#L-1576"><span class="linenos">1576</span></a>
|
||||
</span><span id="L-1577"><a href="#L-1577"><span class="linenos">1577</span></a><span class="sd"> Parameters</span>
|
||||
</span><span id="L-1578"><a href="#L-1578"><span class="linenos">1578</span></a><span class="sd"> ----------</span>
|
||||
</span><span id="L-1579"><a href="#L-1579"><span class="linenos">1579</span></a><span class="sd"> jacks : numpy.ndarray</span>
|
||||
</span><span id="L-1580"><a href="#L-1580"><span class="linenos">1580</span></a><span class="sd"> numpy array containing the mean value as zeroth entry and</span>
|
||||
</span><span id="L-1581"><a href="#L-1581"><span class="linenos">1581</span></a><span class="sd"> the N jackknife samples as first to Nth entry.</span>
|
||||
</span><span id="L-1582"><a href="#L-1582"><span class="linenos">1582</span></a><span class="sd"> name : str</span>
|
||||
</span><span id="L-1583"><a href="#L-1583"><span class="linenos">1583</span></a><span class="sd"> name of the ensemble the samples are defined on.</span>
|
||||
</span><span id="L-1584"><a href="#L-1584"><span class="linenos">1584</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-1585"><a href="#L-1585"><span class="linenos">1585</span></a> <span class="n">length</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">jacks</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span>
|
||||
</span><span id="L-1586"><a href="#L-1586"><span class="linenos">1586</span></a> <span class="n">prj</span> <span class="o">=</span> <span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">ones</span><span class="p">((</span><span class="n">length</span><span class="p">,</span> <span class="n">length</span><span class="p">))</span> <span class="o">-</span> <span class="p">(</span><span class="n">length</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">identity</span><span class="p">(</span><span class="n">length</span><span class="p">))</span>
|
||||
</span><span id="L-1587"><a href="#L-1587"><span class="linenos">1587</span></a> <span class="n">samples</span> <span class="o">=</span> <span class="n">jacks</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span> <span class="o">@</span> <span class="n">prj</span>
|
||||
</span><span id="L-1588"><a href="#L-1588"><span class="linenos">1588</span></a> <span class="n">mean</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">samples</span><span class="p">)</span>
|
||||
</span><span id="L-1589"><a href="#L-1589"><span class="linenos">1589</span></a> <span class="n">new_obs</span> <span class="o">=</span> <span class="n">Obs</span><span class="p">([</span><span class="n">samples</span> <span class="o">-</span> <span class="n">mean</span><span class="p">],</span> <span class="p">[</span><span class="n">name</span><span class="p">],</span> <span class="n">idl</span><span class="o">=</span><span class="n">idl</span><span class="p">,</span> <span class="n">means</span><span class="o">=</span><span class="p">[</span><span class="n">mean</span><span class="p">])</span>
|
||||
</span><span id="L-1590"><a href="#L-1590"><span class="linenos">1590</span></a> <span class="n">new_obs</span><span class="o">.</span><span class="n">_value</span> <span class="o">=</span> <span class="n">jacks</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
</span><span id="L-1591"><a href="#L-1591"><span class="linenos">1591</span></a> <span class="k">return</span> <span class="n">new_obs</span>
|
||||
</span><span id="L-1592"><a href="#L-1592"><span class="linenos">1592</span></a>
|
||||
</span><span id="L-1593"><a href="#L-1593"><span class="linenos">1593</span></a>
|
||||
</span><span id="L-1594"><a href="#L-1594"><span class="linenos">1594</span></a><span class="k">def</span> <span class="nf">merge_obs</span><span class="p">(</span><span class="n">list_of_obs</span><span class="p">):</span>
|
||||
</span><span id="L-1595"><a href="#L-1595"><span class="linenos">1595</span></a> <span class="sd">"""Combine all observables in list_of_obs into one new observable</span>
|
||||
</span><span id="L-1577"><a href="#L-1577"><span class="linenos">1577</span></a><span class="k">def</span> <span class="nf">import_jackknife</span><span class="p">(</span><span class="n">jacks</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">idl</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
</span><span id="L-1578"><a href="#L-1578"><span class="linenos">1578</span></a> <span class="sd">"""Imports jackknife samples and returns an Obs</span>
|
||||
</span><span id="L-1579"><a href="#L-1579"><span class="linenos">1579</span></a>
|
||||
</span><span id="L-1580"><a href="#L-1580"><span class="linenos">1580</span></a><span class="sd"> Parameters</span>
|
||||
</span><span id="L-1581"><a href="#L-1581"><span class="linenos">1581</span></a><span class="sd"> ----------</span>
|
||||
</span><span id="L-1582"><a href="#L-1582"><span class="linenos">1582</span></a><span class="sd"> jacks : numpy.ndarray</span>
|
||||
</span><span id="L-1583"><a href="#L-1583"><span class="linenos">1583</span></a><span class="sd"> numpy array containing the mean value as zeroth entry and</span>
|
||||
</span><span id="L-1584"><a href="#L-1584"><span class="linenos">1584</span></a><span class="sd"> the N jackknife samples as first to Nth entry.</span>
|
||||
</span><span id="L-1585"><a href="#L-1585"><span class="linenos">1585</span></a><span class="sd"> name : str</span>
|
||||
</span><span id="L-1586"><a href="#L-1586"><span class="linenos">1586</span></a><span class="sd"> name of the ensemble the samples are defined on.</span>
|
||||
</span><span id="L-1587"><a href="#L-1587"><span class="linenos">1587</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-1588"><a href="#L-1588"><span class="linenos">1588</span></a> <span class="n">length</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">jacks</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span>
|
||||
</span><span id="L-1589"><a href="#L-1589"><span class="linenos">1589</span></a> <span class="n">prj</span> <span class="o">=</span> <span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">ones</span><span class="p">((</span><span class="n">length</span><span class="p">,</span> <span class="n">length</span><span class="p">))</span> <span class="o">-</span> <span class="p">(</span><span class="n">length</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">identity</span><span class="p">(</span><span class="n">length</span><span class="p">))</span>
|
||||
</span><span id="L-1590"><a href="#L-1590"><span class="linenos">1590</span></a> <span class="n">samples</span> <span class="o">=</span> <span class="n">jacks</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span> <span class="o">@</span> <span class="n">prj</span>
|
||||
</span><span id="L-1591"><a href="#L-1591"><span class="linenos">1591</span></a> <span class="n">mean</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">samples</span><span class="p">)</span>
|
||||
</span><span id="L-1592"><a href="#L-1592"><span class="linenos">1592</span></a> <span class="n">new_obs</span> <span class="o">=</span> <span class="n">Obs</span><span class="p">([</span><span class="n">samples</span> <span class="o">-</span> <span class="n">mean</span><span class="p">],</span> <span class="p">[</span><span class="n">name</span><span class="p">],</span> <span class="n">idl</span><span class="o">=</span><span class="n">idl</span><span class="p">,</span> <span class="n">means</span><span class="o">=</span><span class="p">[</span><span class="n">mean</span><span class="p">])</span>
|
||||
</span><span id="L-1593"><a href="#L-1593"><span class="linenos">1593</span></a> <span class="n">new_obs</span><span class="o">.</span><span class="n">_value</span> <span class="o">=</span> <span class="n">jacks</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
</span><span id="L-1594"><a href="#L-1594"><span class="linenos">1594</span></a> <span class="k">return</span> <span class="n">new_obs</span>
|
||||
</span><span id="L-1595"><a href="#L-1595"><span class="linenos">1595</span></a>
|
||||
</span><span id="L-1596"><a href="#L-1596"><span class="linenos">1596</span></a>
|
||||
</span><span id="L-1597"><a href="#L-1597"><span class="linenos">1597</span></a><span class="sd"> Parameters</span>
|
||||
</span><span id="L-1598"><a href="#L-1598"><span class="linenos">1598</span></a><span class="sd"> ----------</span>
|
||||
</span><span id="L-1599"><a href="#L-1599"><span class="linenos">1599</span></a><span class="sd"> list_of_obs : list</span>
|
||||
</span><span id="L-1600"><a href="#L-1600"><span class="linenos">1600</span></a><span class="sd"> list of the Obs object to be combined</span>
|
||||
</span><span id="L-1601"><a href="#L-1601"><span class="linenos">1601</span></a>
|
||||
</span><span id="L-1602"><a href="#L-1602"><span class="linenos">1602</span></a><span class="sd"> Notes</span>
|
||||
</span><span id="L-1603"><a href="#L-1603"><span class="linenos">1603</span></a><span class="sd"> -----</span>
|
||||
</span><span id="L-1604"><a href="#L-1604"><span class="linenos">1604</span></a><span class="sd"> It is not possible to combine obs which are based on the same replicum</span>
|
||||
</span><span id="L-1605"><a href="#L-1605"><span class="linenos">1605</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-1606"><a href="#L-1606"><span class="linenos">1606</span></a> <span class="n">replist</span> <span class="o">=</span> <span class="p">[</span><span class="n">item</span> <span class="k">for</span> <span class="n">obs</span> <span class="ow">in</span> <span class="n">list_of_obs</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">obs</span><span class="o">.</span><span class="n">names</span><span class="p">]</span>
|
||||
</span><span id="L-1607"><a href="#L-1607"><span class="linenos">1607</span></a> <span class="k">if</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">replist</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">replist</span><span class="p">)))</span> <span class="ow">is</span> <span class="kc">False</span><span class="p">:</span>
|
||||
</span><span id="L-1608"><a href="#L-1608"><span class="linenos">1608</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">'list_of_obs contains duplicate replica: </span><span class="si">%s</span><span class="s1">'</span> <span class="o">%</span> <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">replist</span><span class="p">)))</span>
|
||||
</span><span id="L-1609"><a href="#L-1609"><span class="linenos">1609</span></a> <span class="k">if</span> <span class="nb">any</span><span class="p">([</span><span class="nb">len</span><span class="p">(</span><span class="n">o</span><span class="o">.</span><span class="n">cov_names</span><span class="p">)</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">list_of_obs</span><span class="p">]):</span>
|
||||
</span><span id="L-1610"><a href="#L-1610"><span class="linenos">1610</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">'Not possible to merge data that contains covobs!'</span><span class="p">)</span>
|
||||
</span><span id="L-1611"><a href="#L-1611"><span class="linenos">1611</span></a> <span class="n">new_dict</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
</span><span id="L-1612"><a href="#L-1612"><span class="linenos">1612</span></a> <span class="n">idl_dict</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
</span><span id="L-1613"><a href="#L-1613"><span class="linenos">1613</span></a> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">list_of_obs</span><span class="p">:</span>
|
||||
</span><span id="L-1614"><a href="#L-1614"><span class="linenos">1614</span></a> <span class="n">new_dict</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="n">key</span><span class="p">:</span> <span class="n">o</span><span class="o">.</span><span class="n">deltas</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="o">+</span> <span class="n">o</span><span class="o">.</span><span class="n">r_values</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
|
||||
</span><span id="L-1615"><a href="#L-1615"><span class="linenos">1615</span></a> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="nb">set</span><span class="p">(</span><span class="n">o</span><span class="o">.</span><span class="n">deltas</span><span class="p">)</span> <span class="o">|</span> <span class="nb">set</span><span class="p">(</span><span class="n">o</span><span class="o">.</span><span class="n">r_values</span><span class="p">)})</span>
|
||||
</span><span id="L-1616"><a href="#L-1616"><span class="linenos">1616</span></a> <span class="n">idl_dict</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="n">key</span><span class="p">:</span> <span class="n">o</span><span class="o">.</span><span class="n">idl</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="nb">set</span><span class="p">(</span><span class="n">o</span><span class="o">.</span><span class="n">deltas</span><span class="p">)})</span>
|
||||
</span><span id="L-1617"><a href="#L-1617"><span class="linenos">1617</span></a>
|
||||
</span><span id="L-1618"><a href="#L-1618"><span class="linenos">1618</span></a> <span class="n">names</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">new_dict</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span>
|
||||
</span><span id="L-1619"><a href="#L-1619"><span class="linenos">1619</span></a> <span class="n">o</span> <span class="o">=</span> <span class="n">Obs</span><span class="p">([</span><span class="n">new_dict</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">names</span><span class="p">],</span> <span class="n">names</span><span class="p">,</span> <span class="n">idl</span><span class="o">=</span><span class="p">[</span><span class="n">idl_dict</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">names</span><span class="p">])</span>
|
||||
</span><span id="L-1620"><a href="#L-1620"><span class="linenos">1620</span></a> <span class="n">o</span><span class="o">.</span><span class="n">is_merged</span> <span class="o">=</span> <span class="p">{</span><span class="n">name</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">any</span><span class="p">([</span><span class="n">oi</span><span class="o">.</span><span class="n">is_merged</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> <span class="k">for</span> <span class="n">oi</span> <span class="ow">in</span> <span class="n">list_of_obs</span><span class="p">])</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">o</span><span class="o">.</span><span class="n">names</span><span class="p">}</span>
|
||||
</span><span id="L-1621"><a href="#L-1621"><span class="linenos">1621</span></a> <span class="n">o</span><span class="o">.</span><span class="n">reweighted</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">([</span><span class="n">oi</span><span class="o">.</span><span class="n">reweighted</span> <span class="k">for</span> <span class="n">oi</span> <span class="ow">in</span> <span class="n">list_of_obs</span><span class="p">])</span>
|
||||
</span><span id="L-1622"><a href="#L-1622"><span class="linenos">1622</span></a> <span class="k">return</span> <span class="n">o</span>
|
||||
</span><span id="L-1623"><a href="#L-1623"><span class="linenos">1623</span></a>
|
||||
</span><span id="L-1624"><a href="#L-1624"><span class="linenos">1624</span></a>
|
||||
</span><span id="L-1625"><a href="#L-1625"><span class="linenos">1625</span></a><span class="k">def</span> <span class="nf">cov_Obs</span><span class="p">(</span><span class="n">means</span><span class="p">,</span> <span class="n">cov</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">grad</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
</span><span id="L-1626"><a href="#L-1626"><span class="linenos">1626</span></a> <span class="sd">"""Create an Obs based on mean(s) and a covariance matrix</span>
|
||||
</span><span id="L-1597"><a href="#L-1597"><span class="linenos">1597</span></a><span class="k">def</span> <span class="nf">merge_obs</span><span class="p">(</span><span class="n">list_of_obs</span><span class="p">):</span>
|
||||
</span><span id="L-1598"><a href="#L-1598"><span class="linenos">1598</span></a> <span class="sd">"""Combine all observables in list_of_obs into one new observable</span>
|
||||
</span><span id="L-1599"><a href="#L-1599"><span class="linenos">1599</span></a>
|
||||
</span><span id="L-1600"><a href="#L-1600"><span class="linenos">1600</span></a><span class="sd"> Parameters</span>
|
||||
</span><span id="L-1601"><a href="#L-1601"><span class="linenos">1601</span></a><span class="sd"> ----------</span>
|
||||
</span><span id="L-1602"><a href="#L-1602"><span class="linenos">1602</span></a><span class="sd"> list_of_obs : list</span>
|
||||
</span><span id="L-1603"><a href="#L-1603"><span class="linenos">1603</span></a><span class="sd"> list of the Obs object to be combined</span>
|
||||
</span><span id="L-1604"><a href="#L-1604"><span class="linenos">1604</span></a>
|
||||
</span><span id="L-1605"><a href="#L-1605"><span class="linenos">1605</span></a><span class="sd"> Notes</span>
|
||||
</span><span id="L-1606"><a href="#L-1606"><span class="linenos">1606</span></a><span class="sd"> -----</span>
|
||||
</span><span id="L-1607"><a href="#L-1607"><span class="linenos">1607</span></a><span class="sd"> It is not possible to combine obs which are based on the same replicum</span>
|
||||
</span><span id="L-1608"><a href="#L-1608"><span class="linenos">1608</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-1609"><a href="#L-1609"><span class="linenos">1609</span></a> <span class="n">replist</span> <span class="o">=</span> <span class="p">[</span><span class="n">item</span> <span class="k">for</span> <span class="n">obs</span> <span class="ow">in</span> <span class="n">list_of_obs</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">obs</span><span class="o">.</span><span class="n">names</span><span class="p">]</span>
|
||||
</span><span id="L-1610"><a href="#L-1610"><span class="linenos">1610</span></a> <span class="k">if</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">replist</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">replist</span><span class="p">)))</span> <span class="ow">is</span> <span class="kc">False</span><span class="p">:</span>
|
||||
</span><span id="L-1611"><a href="#L-1611"><span class="linenos">1611</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">'list_of_obs contains duplicate replica: </span><span class="si">%s</span><span class="s1">'</span> <span class="o">%</span> <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">replist</span><span class="p">)))</span>
|
||||
</span><span id="L-1612"><a href="#L-1612"><span class="linenos">1612</span></a> <span class="k">if</span> <span class="nb">any</span><span class="p">([</span><span class="nb">len</span><span class="p">(</span><span class="n">o</span><span class="o">.</span><span class="n">cov_names</span><span class="p">)</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">list_of_obs</span><span class="p">]):</span>
|
||||
</span><span id="L-1613"><a href="#L-1613"><span class="linenos">1613</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">'Not possible to merge data that contains covobs!'</span><span class="p">)</span>
|
||||
</span><span id="L-1614"><a href="#L-1614"><span class="linenos">1614</span></a> <span class="n">new_dict</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
</span><span id="L-1615"><a href="#L-1615"><span class="linenos">1615</span></a> <span class="n">idl_dict</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
</span><span id="L-1616"><a href="#L-1616"><span class="linenos">1616</span></a> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">list_of_obs</span><span class="p">:</span>
|
||||
</span><span id="L-1617"><a href="#L-1617"><span class="linenos">1617</span></a> <span class="n">new_dict</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="n">key</span><span class="p">:</span> <span class="n">o</span><span class="o">.</span><span class="n">deltas</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="o">+</span> <span class="n">o</span><span class="o">.</span><span class="n">r_values</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
|
||||
</span><span id="L-1618"><a href="#L-1618"><span class="linenos">1618</span></a> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="nb">set</span><span class="p">(</span><span class="n">o</span><span class="o">.</span><span class="n">deltas</span><span class="p">)</span> <span class="o">|</span> <span class="nb">set</span><span class="p">(</span><span class="n">o</span><span class="o">.</span><span class="n">r_values</span><span class="p">)})</span>
|
||||
</span><span id="L-1619"><a href="#L-1619"><span class="linenos">1619</span></a> <span class="n">idl_dict</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="n">key</span><span class="p">:</span> <span class="n">o</span><span class="o">.</span><span class="n">idl</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="nb">set</span><span class="p">(</span><span class="n">o</span><span class="o">.</span><span class="n">deltas</span><span class="p">)})</span>
|
||||
</span><span id="L-1620"><a href="#L-1620"><span class="linenos">1620</span></a>
|
||||
</span><span id="L-1621"><a href="#L-1621"><span class="linenos">1621</span></a> <span class="n">names</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">new_dict</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span>
|
||||
</span><span id="L-1622"><a href="#L-1622"><span class="linenos">1622</span></a> <span class="n">o</span> <span class="o">=</span> <span class="n">Obs</span><span class="p">([</span><span class="n">new_dict</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">names</span><span class="p">],</span> <span class="n">names</span><span class="p">,</span> <span class="n">idl</span><span class="o">=</span><span class="p">[</span><span class="n">idl_dict</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">names</span><span class="p">])</span>
|
||||
</span><span id="L-1623"><a href="#L-1623"><span class="linenos">1623</span></a> <span class="n">o</span><span class="o">.</span><span class="n">is_merged</span> <span class="o">=</span> <span class="p">{</span><span class="n">name</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">any</span><span class="p">([</span><span class="n">oi</span><span class="o">.</span><span class="n">is_merged</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> <span class="k">for</span> <span class="n">oi</span> <span class="ow">in</span> <span class="n">list_of_obs</span><span class="p">])</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">o</span><span class="o">.</span><span class="n">names</span><span class="p">}</span>
|
||||
</span><span id="L-1624"><a href="#L-1624"><span class="linenos">1624</span></a> <span class="n">o</span><span class="o">.</span><span class="n">reweighted</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">([</span><span class="n">oi</span><span class="o">.</span><span class="n">reweighted</span> <span class="k">for</span> <span class="n">oi</span> <span class="ow">in</span> <span class="n">list_of_obs</span><span class="p">])</span>
|
||||
</span><span id="L-1625"><a href="#L-1625"><span class="linenos">1625</span></a> <span class="k">return</span> <span class="n">o</span>
|
||||
</span><span id="L-1626"><a href="#L-1626"><span class="linenos">1626</span></a>
|
||||
</span><span id="L-1627"><a href="#L-1627"><span class="linenos">1627</span></a>
|
||||
</span><span id="L-1628"><a href="#L-1628"><span class="linenos">1628</span></a><span class="sd"> Parameters</span>
|
||||
</span><span id="L-1629"><a href="#L-1629"><span class="linenos">1629</span></a><span class="sd"> ----------</span>
|
||||
</span><span id="L-1630"><a href="#L-1630"><span class="linenos">1630</span></a><span class="sd"> mean : list of floats or float</span>
|
||||
</span><span id="L-1631"><a href="#L-1631"><span class="linenos">1631</span></a><span class="sd"> N mean value(s) of the new Obs</span>
|
||||
</span><span id="L-1632"><a href="#L-1632"><span class="linenos">1632</span></a><span class="sd"> cov : list or array</span>
|
||||
</span><span id="L-1633"><a href="#L-1633"><span class="linenos">1633</span></a><span class="sd"> 2d (NxN) Covariance matrix, 1d diagonal entries or 0d covariance</span>
|
||||
</span><span id="L-1634"><a href="#L-1634"><span class="linenos">1634</span></a><span class="sd"> name : str</span>
|
||||
</span><span id="L-1635"><a href="#L-1635"><span class="linenos">1635</span></a><span class="sd"> identifier for the covariance matrix</span>
|
||||
</span><span id="L-1636"><a href="#L-1636"><span class="linenos">1636</span></a><span class="sd"> grad : list or array</span>
|
||||
</span><span id="L-1637"><a href="#L-1637"><span class="linenos">1637</span></a><span class="sd"> Gradient of the Covobs wrt. the means belonging to cov.</span>
|
||||
</span><span id="L-1638"><a href="#L-1638"><span class="linenos">1638</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-1639"><a href="#L-1639"><span class="linenos">1639</span></a>
|
||||
</span><span id="L-1640"><a href="#L-1640"><span class="linenos">1640</span></a> <span class="k">def</span> <span class="nf">covobs_to_obs</span><span class="p">(</span><span class="n">co</span><span class="p">):</span>
|
||||
</span><span id="L-1641"><a href="#L-1641"><span class="linenos">1641</span></a> <span class="sd">"""Make an Obs out of a Covobs</span>
|
||||
</span><span id="L-1628"><a href="#L-1628"><span class="linenos">1628</span></a><span class="k">def</span> <span class="nf">cov_Obs</span><span class="p">(</span><span class="n">means</span><span class="p">,</span> <span class="n">cov</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">grad</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
</span><span id="L-1629"><a href="#L-1629"><span class="linenos">1629</span></a> <span class="sd">"""Create an Obs based on mean(s) and a covariance matrix</span>
|
||||
</span><span id="L-1630"><a href="#L-1630"><span class="linenos">1630</span></a>
|
||||
</span><span id="L-1631"><a href="#L-1631"><span class="linenos">1631</span></a><span class="sd"> Parameters</span>
|
||||
</span><span id="L-1632"><a href="#L-1632"><span class="linenos">1632</span></a><span class="sd"> ----------</span>
|
||||
</span><span id="L-1633"><a href="#L-1633"><span class="linenos">1633</span></a><span class="sd"> mean : list of floats or float</span>
|
||||
</span><span id="L-1634"><a href="#L-1634"><span class="linenos">1634</span></a><span class="sd"> N mean value(s) of the new Obs</span>
|
||||
</span><span id="L-1635"><a href="#L-1635"><span class="linenos">1635</span></a><span class="sd"> cov : list or array</span>
|
||||
</span><span id="L-1636"><a href="#L-1636"><span class="linenos">1636</span></a><span class="sd"> 2d (NxN) Covariance matrix, 1d diagonal entries or 0d covariance</span>
|
||||
</span><span id="L-1637"><a href="#L-1637"><span class="linenos">1637</span></a><span class="sd"> name : str</span>
|
||||
</span><span id="L-1638"><a href="#L-1638"><span class="linenos">1638</span></a><span class="sd"> identifier for the covariance matrix</span>
|
||||
</span><span id="L-1639"><a href="#L-1639"><span class="linenos">1639</span></a><span class="sd"> grad : list or array</span>
|
||||
</span><span id="L-1640"><a href="#L-1640"><span class="linenos">1640</span></a><span class="sd"> Gradient of the Covobs wrt. the means belonging to cov.</span>
|
||||
</span><span id="L-1641"><a href="#L-1641"><span class="linenos">1641</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-1642"><a href="#L-1642"><span class="linenos">1642</span></a>
|
||||
</span><span id="L-1643"><a href="#L-1643"><span class="linenos">1643</span></a><span class="sd"> Parameters</span>
|
||||
</span><span id="L-1644"><a href="#L-1644"><span class="linenos">1644</span></a><span class="sd"> ----------</span>
|
||||
</span><span id="L-1645"><a href="#L-1645"><span class="linenos">1645</span></a><span class="sd"> co : Covobs</span>
|
||||
</span><span id="L-1646"><a href="#L-1646"><span class="linenos">1646</span></a><span class="sd"> Covobs to be embedded into the Obs</span>
|
||||
</span><span id="L-1647"><a href="#L-1647"><span class="linenos">1647</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-1648"><a href="#L-1648"><span class="linenos">1648</span></a> <span class="n">o</span> <span class="o">=</span> <span class="n">Obs</span><span class="p">([],</span> <span class="p">[],</span> <span class="n">means</span><span class="o">=</span><span class="p">[])</span>
|
||||
</span><span id="L-1649"><a href="#L-1649"><span class="linenos">1649</span></a> <span class="n">o</span><span class="o">.</span><span class="n">_value</span> <span class="o">=</span> <span class="n">co</span><span class="o">.</span><span class="n">value</span>
|
||||
</span><span id="L-1650"><a href="#L-1650"><span class="linenos">1650</span></a> <span class="n">o</span><span class="o">.</span><span class="n">names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">co</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
</span><span id="L-1651"><a href="#L-1651"><span class="linenos">1651</span></a> <span class="n">o</span><span class="o">.</span><span class="n">_covobs</span><span class="p">[</span><span class="n">co</span><span class="o">.</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">co</span>
|
||||
</span><span id="L-1652"><a href="#L-1652"><span class="linenos">1652</span></a> <span class="n">o</span><span class="o">.</span><span class="n">_dvalue</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">co</span><span class="o">.</span><span class="n">errsq</span><span class="p">())</span>
|
||||
</span><span id="L-1653"><a href="#L-1653"><span class="linenos">1653</span></a> <span class="k">return</span> <span class="n">o</span>
|
||||
</span><span id="L-1654"><a href="#L-1654"><span class="linenos">1654</span></a>
|
||||
</span><span id="L-1655"><a href="#L-1655"><span class="linenos">1655</span></a> <span class="n">ol</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
</span><span id="L-1656"><a href="#L-1656"><span class="linenos">1656</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">means</span><span class="p">,</span> <span class="p">(</span><span class="nb">float</span><span class="p">,</span> <span class="nb">int</span><span class="p">)):</span>
|
||||
</span><span id="L-1657"><a href="#L-1657"><span class="linenos">1657</span></a> <span class="n">means</span> <span class="o">=</span> <span class="p">[</span><span class="n">means</span><span class="p">]</span>
|
||||
</span><span id="L-1658"><a href="#L-1658"><span class="linenos">1658</span></a>
|
||||
</span><span id="L-1659"><a href="#L-1659"><span class="linenos">1659</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="nb">len</span><span class="p">(</span><span class="n">means</span><span class="p">)):</span>
|
||||
</span><span id="L-1660"><a href="#L-1660"><span class="linenos">1660</span></a> <span class="n">ol</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">covobs_to_obs</span><span class="p">(</span><span class="n">Covobs</span><span class="p">(</span><span class="n">means</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">cov</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">pos</span><span class="o">=</span><span class="n">i</span><span class="p">,</span> <span class="n">grad</span><span class="o">=</span><span class="n">grad</span><span class="p">)))</span>
|
||||
</span><span id="L-1661"><a href="#L-1661"><span class="linenos">1661</span></a> <span class="k">if</span> <span class="n">ol</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">covobs</span><span class="p">[</span><span class="n">name</span><span class="p">]</span><span class="o">.</span><span class="n">N</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">means</span><span class="p">):</span>
|
||||
</span><span id="L-1662"><a href="#L-1662"><span class="linenos">1662</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">'You have to provide </span><span class="si">%d</span><span class="s1"> mean values!'</span> <span class="o">%</span> <span class="p">(</span><span class="n">ol</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">N</span><span class="p">))</span>
|
||||
</span><span id="L-1663"><a href="#L-1663"><span class="linenos">1663</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">ol</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
|
||||
</span><span id="L-1664"><a href="#L-1664"><span class="linenos">1664</span></a> <span class="k">return</span> <span class="n">ol</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
</span><span id="L-1665"><a href="#L-1665"><span class="linenos">1665</span></a> <span class="k">return</span> <span class="n">ol</span>
|
||||
</span><span id="L-1643"><a href="#L-1643"><span class="linenos">1643</span></a> <span class="k">def</span> <span class="nf">covobs_to_obs</span><span class="p">(</span><span class="n">co</span><span class="p">):</span>
|
||||
</span><span id="L-1644"><a href="#L-1644"><span class="linenos">1644</span></a> <span class="sd">"""Make an Obs out of a Covobs</span>
|
||||
</span><span id="L-1645"><a href="#L-1645"><span class="linenos">1645</span></a>
|
||||
</span><span id="L-1646"><a href="#L-1646"><span class="linenos">1646</span></a><span class="sd"> Parameters</span>
|
||||
</span><span id="L-1647"><a href="#L-1647"><span class="linenos">1647</span></a><span class="sd"> ----------</span>
|
||||
</span><span id="L-1648"><a href="#L-1648"><span class="linenos">1648</span></a><span class="sd"> co : Covobs</span>
|
||||
</span><span id="L-1649"><a href="#L-1649"><span class="linenos">1649</span></a><span class="sd"> Covobs to be embedded into the Obs</span>
|
||||
</span><span id="L-1650"><a href="#L-1650"><span class="linenos">1650</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-1651"><a href="#L-1651"><span class="linenos">1651</span></a> <span class="n">o</span> <span class="o">=</span> <span class="n">Obs</span><span class="p">([],</span> <span class="p">[],</span> <span class="n">means</span><span class="o">=</span><span class="p">[])</span>
|
||||
</span><span id="L-1652"><a href="#L-1652"><span class="linenos">1652</span></a> <span class="n">o</span><span class="o">.</span><span class="n">_value</span> <span class="o">=</span> <span class="n">co</span><span class="o">.</span><span class="n">value</span>
|
||||
</span><span id="L-1653"><a href="#L-1653"><span class="linenos">1653</span></a> <span class="n">o</span><span class="o">.</span><span class="n">names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">co</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
</span><span id="L-1654"><a href="#L-1654"><span class="linenos">1654</span></a> <span class="n">o</span><span class="o">.</span><span class="n">_covobs</span><span class="p">[</span><span class="n">co</span><span class="o">.</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">co</span>
|
||||
</span><span id="L-1655"><a href="#L-1655"><span class="linenos">1655</span></a> <span class="n">o</span><span class="o">.</span><span class="n">_dvalue</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">co</span><span class="o">.</span><span class="n">errsq</span><span class="p">())</span>
|
||||
</span><span id="L-1656"><a href="#L-1656"><span class="linenos">1656</span></a> <span class="k">return</span> <span class="n">o</span>
|
||||
</span><span id="L-1657"><a href="#L-1657"><span class="linenos">1657</span></a>
|
||||
</span><span id="L-1658"><a href="#L-1658"><span class="linenos">1658</span></a> <span class="n">ol</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
</span><span id="L-1659"><a href="#L-1659"><span class="linenos">1659</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">means</span><span class="p">,</span> <span class="p">(</span><span class="nb">float</span><span class="p">,</span> <span class="nb">int</span><span class="p">)):</span>
|
||||
</span><span id="L-1660"><a href="#L-1660"><span class="linenos">1660</span></a> <span class="n">means</span> <span class="o">=</span> <span class="p">[</span><span class="n">means</span><span class="p">]</span>
|
||||
</span><span id="L-1661"><a href="#L-1661"><span class="linenos">1661</span></a>
|
||||
</span><span id="L-1662"><a href="#L-1662"><span class="linenos">1662</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="nb">len</span><span class="p">(</span><span class="n">means</span><span class="p">)):</span>
|
||||
</span><span id="L-1663"><a href="#L-1663"><span class="linenos">1663</span></a> <span class="n">ol</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">covobs_to_obs</span><span class="p">(</span><span class="n">Covobs</span><span class="p">(</span><span class="n">means</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">cov</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">pos</span><span class="o">=</span><span class="n">i</span><span class="p">,</span> <span class="n">grad</span><span class="o">=</span><span class="n">grad</span><span class="p">)))</span>
|
||||
</span><span id="L-1664"><a href="#L-1664"><span class="linenos">1664</span></a> <span class="k">if</span> <span class="n">ol</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">covobs</span><span class="p">[</span><span class="n">name</span><span class="p">]</span><span class="o">.</span><span class="n">N</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">means</span><span class="p">):</span>
|
||||
</span><span id="L-1665"><a href="#L-1665"><span class="linenos">1665</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">'You have to provide </span><span class="si">%d</span><span class="s1"> mean values!'</span> <span class="o">%</span> <span class="p">(</span><span class="n">ol</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">N</span><span class="p">))</span>
|
||||
</span><span id="L-1666"><a href="#L-1666"><span class="linenos">1666</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">ol</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
|
||||
</span><span id="L-1667"><a href="#L-1667"><span class="linenos">1667</span></a> <span class="k">return</span> <span class="n">ol</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
</span><span id="L-1668"><a href="#L-1668"><span class="linenos">1668</span></a> <span class="k">return</span> <span class="n">ol</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -4575,73 +4578,79 @@ Currently only works if ensembles are identical (this is not strictly necessary)
|
|||
<div class="pdoc-code codehilite"><pre><span></span><span id="covariance-1431"><a href="#covariance-1431"><span class="linenos">1431</span></a><span class="k">def</span> <span class="nf">covariance</span><span class="p">(</span><span class="n">obs</span><span class="p">,</span> <span class="n">visualize</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">correlation</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">smooth</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
</span><span id="covariance-1432"><a href="#covariance-1432"><span class="linenos">1432</span></a> <span class="sa">r</span><span class="sd">'''Calculates the error covariance matrix of a set of observables.</span>
|
||||
</span><span id="covariance-1433"><a href="#covariance-1433"><span class="linenos">1433</span></a>
|
||||
</span><span id="covariance-1434"><a href="#covariance-1434"><span class="linenos">1434</span></a><span class="sd"> The gamma method has to be applied first to all observables.</span>
|
||||
</span><span id="covariance-1435"><a href="#covariance-1435"><span class="linenos">1435</span></a>
|
||||
</span><span id="covariance-1436"><a href="#covariance-1436"><span class="linenos">1436</span></a><span class="sd"> Parameters</span>
|
||||
</span><span id="covariance-1437"><a href="#covariance-1437"><span class="linenos">1437</span></a><span class="sd"> ----------</span>
|
||||
</span><span id="covariance-1438"><a href="#covariance-1438"><span class="linenos">1438</span></a><span class="sd"> obs : list or numpy.ndarray</span>
|
||||
</span><span id="covariance-1439"><a href="#covariance-1439"><span class="linenos">1439</span></a><span class="sd"> List or one dimensional array of Obs</span>
|
||||
</span><span id="covariance-1440"><a href="#covariance-1440"><span class="linenos">1440</span></a><span class="sd"> visualize : bool</span>
|
||||
</span><span id="covariance-1441"><a href="#covariance-1441"><span class="linenos">1441</span></a><span class="sd"> If True plots the corresponding normalized correlation matrix (default False).</span>
|
||||
</span><span id="covariance-1442"><a href="#covariance-1442"><span class="linenos">1442</span></a><span class="sd"> correlation : bool</span>
|
||||
</span><span id="covariance-1443"><a href="#covariance-1443"><span class="linenos">1443</span></a><span class="sd"> If True the correlation matrix instead of the error covariance matrix is returned (default False).</span>
|
||||
</span><span id="covariance-1444"><a href="#covariance-1444"><span class="linenos">1444</span></a><span class="sd"> smooth : None or int</span>
|
||||
</span><span id="covariance-1445"><a href="#covariance-1445"><span class="linenos">1445</span></a><span class="sd"> If smooth is an integer 'E' between 2 and the dimension of the matrix minus 1 the eigenvalue</span>
|
||||
</span><span id="covariance-1446"><a href="#covariance-1446"><span class="linenos">1446</span></a><span class="sd"> smoothing procedure of hep-lat/9412087 is applied to the correlation matrix which leaves the</span>
|
||||
</span><span id="covariance-1447"><a href="#covariance-1447"><span class="linenos">1447</span></a><span class="sd"> largest E eigenvalues essentially unchanged and smoothes the smaller eigenvalues to avoid extremely</span>
|
||||
</span><span id="covariance-1448"><a href="#covariance-1448"><span class="linenos">1448</span></a><span class="sd"> small ones.</span>
|
||||
</span><span id="covariance-1449"><a href="#covariance-1449"><span class="linenos">1449</span></a>
|
||||
</span><span id="covariance-1450"><a href="#covariance-1450"><span class="linenos">1450</span></a><span class="sd"> Notes</span>
|
||||
</span><span id="covariance-1451"><a href="#covariance-1451"><span class="linenos">1451</span></a><span class="sd"> -----</span>
|
||||
</span><span id="covariance-1452"><a href="#covariance-1452"><span class="linenos">1452</span></a><span class="sd"> The error covariance is defined such that it agrees with the squared standard error for two identical observables</span>
|
||||
</span><span id="covariance-1453"><a href="#covariance-1453"><span class="linenos">1453</span></a><span class="sd"> $$\operatorname{cov}(a,a)=\sum_{s=1}^N\delta_a^s\delta_a^s/N^2=\Gamma_{aa}(0)/N=\operatorname{var}(a)/N=\sigma_a^2$$</span>
|
||||
</span><span id="covariance-1454"><a href="#covariance-1454"><span class="linenos">1454</span></a><span class="sd"> in the absence of autocorrelation.</span>
|
||||
</span><span id="covariance-1455"><a href="#covariance-1455"><span class="linenos">1455</span></a><span class="sd"> The error covariance is estimated by calculating the correlation matrix assuming no autocorrelation and then rescaling the correlation matrix by the full errors including the previous gamma method estimate for the autocorrelation of the observables. The covariance at windowsize 0 is guaranteed to be positive semi-definite</span>
|
||||
</span><span id="covariance-1456"><a href="#covariance-1456"><span class="linenos">1456</span></a><span class="sd"> $$\sum_{i,j}v_i\Gamma_{ij}(0)v_j=\frac{1}{N}\sum_{s=1}^N\sum_{i,j}v_i\delta_i^s\delta_j^s v_j=\frac{1}{N}\sum_{s=1}^N\sum_{i}|v_i\delta_i^s|^2\geq 0\,,$$ for every $v\in\mathbb{R}^M$, while such an identity does not hold for larger windows/lags.</span>
|
||||
</span><span id="covariance-1457"><a href="#covariance-1457"><span class="linenos">1457</span></a><span class="sd"> For observables defined on a single ensemble our approximation is equivalent to assuming that the integrated autocorrelation time of an off-diagonal element is equal to the geometric mean of the integrated autocorrelation times of the corresponding diagonal elements.</span>
|
||||
</span><span id="covariance-1458"><a href="#covariance-1458"><span class="linenos">1458</span></a><span class="sd"> $$\tau_{\mathrm{int}, ij}=\sqrt{\tau_{\mathrm{int}, i}\times \tau_{\mathrm{int}, j}}$$</span>
|
||||
</span><span id="covariance-1459"><a href="#covariance-1459"><span class="linenos">1459</span></a><span class="sd"> This construction ensures that the estimated covariance matrix is positive semi-definite (up to numerical rounding errors).</span>
|
||||
</span><span id="covariance-1460"><a href="#covariance-1460"><span class="linenos">1460</span></a><span class="sd"> '''</span>
|
||||
</span><span id="covariance-1461"><a href="#covariance-1461"><span class="linenos">1461</span></a>
|
||||
</span><span id="covariance-1462"><a href="#covariance-1462"><span class="linenos">1462</span></a> <span class="n">length</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">obs</span><span class="p">)</span>
|
||||
</span><span id="covariance-1463"><a href="#covariance-1463"><span class="linenos">1463</span></a>
|
||||
</span><span id="covariance-1464"><a href="#covariance-1464"><span class="linenos">1464</span></a> <span class="n">max_samples</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">([</span><span class="n">o</span><span class="o">.</span><span class="n">N</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">obs</span><span class="p">])</span>
|
||||
</span><span id="covariance-1465"><a href="#covariance-1465"><span class="linenos">1465</span></a> <span class="k">if</span> <span class="n">max_samples</span> <span class="o"><=</span> <span class="n">length</span> <span class="ow">and</span> <span class="ow">not</span> <span class="p">[</span><span class="n">item</span> <span class="k">for</span> <span class="n">sublist</span> <span class="ow">in</span> <span class="p">[</span><span class="n">o</span><span class="o">.</span><span class="n">cov_names</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">obs</span><span class="p">]</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">sublist</span><span class="p">]:</span>
|
||||
</span><span id="covariance-1466"><a href="#covariance-1466"><span class="linenos">1466</span></a> <span class="n">warnings</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="sa">f</span><span class="s2">"The dimension of the covariance matrix (</span><span class="si">{</span><span class="n">length</span><span class="si">}</span><span class="s2">) is larger or equal to the number of samples (</span><span class="si">{</span><span class="n">max_samples</span><span class="si">}</span><span class="s2">). This will result in a rank deficient matrix."</span><span class="p">,</span> <span class="ne">RuntimeWarning</span><span class="p">)</span>
|
||||
</span><span id="covariance-1467"><a href="#covariance-1467"><span class="linenos">1467</span></a>
|
||||
</span><span id="covariance-1468"><a href="#covariance-1468"><span class="linenos">1468</span></a> <span class="n">cov</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">((</span><span class="n">length</span><span class="p">,</span> <span class="n">length</span><span class="p">))</span>
|
||||
</span><span id="covariance-1469"><a href="#covariance-1469"><span class="linenos">1469</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">length</span><span class="p">):</span>
|
||||
</span><span id="covariance-1470"><a href="#covariance-1470"><span class="linenos">1470</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">i</span><span class="p">,</span> <span class="n">length</span><span class="p">):</span>
|
||||
</span><span id="covariance-1471"><a href="#covariance-1471"><span class="linenos">1471</span></a> <span class="n">cov</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">_covariance_element</span><span class="p">(</span><span class="n">obs</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">obs</span><span class="p">[</span><span class="n">j</span><span class="p">])</span>
|
||||
</span><span id="covariance-1472"><a href="#covariance-1472"><span class="linenos">1472</span></a> <span class="n">cov</span> <span class="o">=</span> <span class="n">cov</span> <span class="o">+</span> <span class="n">cov</span><span class="o">.</span><span class="n">T</span> <span class="o">-</span> <span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">cov</span><span class="p">))</span>
|
||||
</span><span id="covariance-1473"><a href="#covariance-1473"><span class="linenos">1473</span></a>
|
||||
</span><span id="covariance-1474"><a href="#covariance-1474"><span class="linenos">1474</span></a> <span class="n">corr</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="mi">1</span> <span class="o">/</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">cov</span><span class="p">)))</span> <span class="o">@</span> <span class="n">cov</span> <span class="o">@</span> <span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="mi">1</span> <span class="o">/</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">cov</span><span class="p">)))</span>
|
||||
</span><span id="covariance-1475"><a href="#covariance-1475"><span class="linenos">1475</span></a>
|
||||
</span><span id="covariance-1476"><a href="#covariance-1476"><span class="linenos">1476</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">smooth</span><span class="p">,</span> <span class="nb">int</span><span class="p">):</span>
|
||||
</span><span id="covariance-1477"><a href="#covariance-1477"><span class="linenos">1477</span></a> <span class="n">corr</span> <span class="o">=</span> <span class="n">_smooth_eigenvalues</span><span class="p">(</span><span class="n">corr</span><span class="p">,</span> <span class="n">smooth</span><span class="p">)</span>
|
||||
</span><span id="covariance-1434"><a href="#covariance-1434"><span class="linenos">1434</span></a><span class="sd"> WARNING: This function should be used with care, especially for observables with support on multiple</span>
|
||||
</span><span id="covariance-1435"><a href="#covariance-1435"><span class="linenos">1435</span></a><span class="sd"> ensembles with differing autocorrelations. See the notes below for details.</span>
|
||||
</span><span id="covariance-1436"><a href="#covariance-1436"><span class="linenos">1436</span></a>
|
||||
</span><span id="covariance-1437"><a href="#covariance-1437"><span class="linenos">1437</span></a><span class="sd"> The gamma method has to be applied first to all observables.</span>
|
||||
</span><span id="covariance-1438"><a href="#covariance-1438"><span class="linenos">1438</span></a>
|
||||
</span><span id="covariance-1439"><a href="#covariance-1439"><span class="linenos">1439</span></a><span class="sd"> Parameters</span>
|
||||
</span><span id="covariance-1440"><a href="#covariance-1440"><span class="linenos">1440</span></a><span class="sd"> ----------</span>
|
||||
</span><span id="covariance-1441"><a href="#covariance-1441"><span class="linenos">1441</span></a><span class="sd"> obs : list or numpy.ndarray</span>
|
||||
</span><span id="covariance-1442"><a href="#covariance-1442"><span class="linenos">1442</span></a><span class="sd"> List or one dimensional array of Obs</span>
|
||||
</span><span id="covariance-1443"><a href="#covariance-1443"><span class="linenos">1443</span></a><span class="sd"> visualize : bool</span>
|
||||
</span><span id="covariance-1444"><a href="#covariance-1444"><span class="linenos">1444</span></a><span class="sd"> If True plots the corresponding normalized correlation matrix (default False).</span>
|
||||
</span><span id="covariance-1445"><a href="#covariance-1445"><span class="linenos">1445</span></a><span class="sd"> correlation : bool</span>
|
||||
</span><span id="covariance-1446"><a href="#covariance-1446"><span class="linenos">1446</span></a><span class="sd"> If True the correlation matrix instead of the error covariance matrix is returned (default False).</span>
|
||||
</span><span id="covariance-1447"><a href="#covariance-1447"><span class="linenos">1447</span></a><span class="sd"> smooth : None or int</span>
|
||||
</span><span id="covariance-1448"><a href="#covariance-1448"><span class="linenos">1448</span></a><span class="sd"> If smooth is an integer 'E' between 2 and the dimension of the matrix minus 1 the eigenvalue</span>
|
||||
</span><span id="covariance-1449"><a href="#covariance-1449"><span class="linenos">1449</span></a><span class="sd"> smoothing procedure of hep-lat/9412087 is applied to the correlation matrix which leaves the</span>
|
||||
</span><span id="covariance-1450"><a href="#covariance-1450"><span class="linenos">1450</span></a><span class="sd"> largest E eigenvalues essentially unchanged and smoothes the smaller eigenvalues to avoid extremely</span>
|
||||
</span><span id="covariance-1451"><a href="#covariance-1451"><span class="linenos">1451</span></a><span class="sd"> small ones.</span>
|
||||
</span><span id="covariance-1452"><a href="#covariance-1452"><span class="linenos">1452</span></a>
|
||||
</span><span id="covariance-1453"><a href="#covariance-1453"><span class="linenos">1453</span></a><span class="sd"> Notes</span>
|
||||
</span><span id="covariance-1454"><a href="#covariance-1454"><span class="linenos">1454</span></a><span class="sd"> -----</span>
|
||||
</span><span id="covariance-1455"><a href="#covariance-1455"><span class="linenos">1455</span></a><span class="sd"> The error covariance is defined such that it agrees with the squared standard error for two identical observables</span>
|
||||
</span><span id="covariance-1456"><a href="#covariance-1456"><span class="linenos">1456</span></a><span class="sd"> $$\operatorname{cov}(a,a)=\sum_{s=1}^N\delta_a^s\delta_a^s/N^2=\Gamma_{aa}(0)/N=\operatorname{var}(a)/N=\sigma_a^2$$</span>
|
||||
</span><span id="covariance-1457"><a href="#covariance-1457"><span class="linenos">1457</span></a><span class="sd"> in the absence of autocorrelation.</span>
|
||||
</span><span id="covariance-1458"><a href="#covariance-1458"><span class="linenos">1458</span></a><span class="sd"> The error covariance is estimated by calculating the correlation matrix assuming no autocorrelation and then rescaling the correlation matrix by the full errors including the previous gamma method estimate for the autocorrelation of the observables. The covariance at windowsize 0 is guaranteed to be positive semi-definite</span>
|
||||
</span><span id="covariance-1459"><a href="#covariance-1459"><span class="linenos">1459</span></a><span class="sd"> $$\sum_{i,j}v_i\Gamma_{ij}(0)v_j=\frac{1}{N}\sum_{s=1}^N\sum_{i,j}v_i\delta_i^s\delta_j^s v_j=\frac{1}{N}\sum_{s=1}^N\sum_{i}|v_i\delta_i^s|^2\geq 0\,,$$ for every $v\in\mathbb{R}^M$, while such an identity does not hold for larger windows/lags.</span>
|
||||
</span><span id="covariance-1460"><a href="#covariance-1460"><span class="linenos">1460</span></a><span class="sd"> For observables defined on a single ensemble our approximation is equivalent to assuming that the integrated autocorrelation time of an off-diagonal element is equal to the geometric mean of the integrated autocorrelation times of the corresponding diagonal elements.</span>
|
||||
</span><span id="covariance-1461"><a href="#covariance-1461"><span class="linenos">1461</span></a><span class="sd"> $$\tau_{\mathrm{int}, ij}=\sqrt{\tau_{\mathrm{int}, i}\times \tau_{\mathrm{int}, j}}$$</span>
|
||||
</span><span id="covariance-1462"><a href="#covariance-1462"><span class="linenos">1462</span></a><span class="sd"> This construction ensures that the estimated covariance matrix is positive semi-definite (up to numerical rounding errors).</span>
|
||||
</span><span id="covariance-1463"><a href="#covariance-1463"><span class="linenos">1463</span></a><span class="sd"> '''</span>
|
||||
</span><span id="covariance-1464"><a href="#covariance-1464"><span class="linenos">1464</span></a>
|
||||
</span><span id="covariance-1465"><a href="#covariance-1465"><span class="linenos">1465</span></a> <span class="n">length</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">obs</span><span class="p">)</span>
|
||||
</span><span id="covariance-1466"><a href="#covariance-1466"><span class="linenos">1466</span></a>
|
||||
</span><span id="covariance-1467"><a href="#covariance-1467"><span class="linenos">1467</span></a> <span class="n">max_samples</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">([</span><span class="n">o</span><span class="o">.</span><span class="n">N</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">obs</span><span class="p">])</span>
|
||||
</span><span id="covariance-1468"><a href="#covariance-1468"><span class="linenos">1468</span></a> <span class="k">if</span> <span class="n">max_samples</span> <span class="o"><=</span> <span class="n">length</span> <span class="ow">and</span> <span class="ow">not</span> <span class="p">[</span><span class="n">item</span> <span class="k">for</span> <span class="n">sublist</span> <span class="ow">in</span> <span class="p">[</span><span class="n">o</span><span class="o">.</span><span class="n">cov_names</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">obs</span><span class="p">]</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">sublist</span><span class="p">]:</span>
|
||||
</span><span id="covariance-1469"><a href="#covariance-1469"><span class="linenos">1469</span></a> <span class="n">warnings</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="sa">f</span><span class="s2">"The dimension of the covariance matrix (</span><span class="si">{</span><span class="n">length</span><span class="si">}</span><span class="s2">) is larger or equal to the number of samples (</span><span class="si">{</span><span class="n">max_samples</span><span class="si">}</span><span class="s2">). This will result in a rank deficient matrix."</span><span class="p">,</span> <span class="ne">RuntimeWarning</span><span class="p">)</span>
|
||||
</span><span id="covariance-1470"><a href="#covariance-1470"><span class="linenos">1470</span></a>
|
||||
</span><span id="covariance-1471"><a href="#covariance-1471"><span class="linenos">1471</span></a> <span class="n">cov</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">((</span><span class="n">length</span><span class="p">,</span> <span class="n">length</span><span class="p">))</span>
|
||||
</span><span id="covariance-1472"><a href="#covariance-1472"><span class="linenos">1472</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">length</span><span class="p">):</span>
|
||||
</span><span id="covariance-1473"><a href="#covariance-1473"><span class="linenos">1473</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">i</span><span class="p">,</span> <span class="n">length</span><span class="p">):</span>
|
||||
</span><span id="covariance-1474"><a href="#covariance-1474"><span class="linenos">1474</span></a> <span class="n">cov</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">_covariance_element</span><span class="p">(</span><span class="n">obs</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">obs</span><span class="p">[</span><span class="n">j</span><span class="p">])</span>
|
||||
</span><span id="covariance-1475"><a href="#covariance-1475"><span class="linenos">1475</span></a> <span class="n">cov</span> <span class="o">=</span> <span class="n">cov</span> <span class="o">+</span> <span class="n">cov</span><span class="o">.</span><span class="n">T</span> <span class="o">-</span> <span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">cov</span><span class="p">))</span>
|
||||
</span><span id="covariance-1476"><a href="#covariance-1476"><span class="linenos">1476</span></a>
|
||||
</span><span id="covariance-1477"><a href="#covariance-1477"><span class="linenos">1477</span></a> <span class="n">corr</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="mi">1</span> <span class="o">/</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">cov</span><span class="p">)))</span> <span class="o">@</span> <span class="n">cov</span> <span class="o">@</span> <span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="mi">1</span> <span class="o">/</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">cov</span><span class="p">)))</span>
|
||||
</span><span id="covariance-1478"><a href="#covariance-1478"><span class="linenos">1478</span></a>
|
||||
</span><span id="covariance-1479"><a href="#covariance-1479"><span class="linenos">1479</span></a> <span class="k">if</span> <span class="n">visualize</span><span class="p">:</span>
|
||||
</span><span id="covariance-1480"><a href="#covariance-1480"><span class="linenos">1480</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">matshow</span><span class="p">(</span><span class="n">corr</span><span class="p">,</span> <span class="n">vmin</span><span class="o">=-</span><span class="mi">1</span><span class="p">,</span> <span class="n">vmax</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
|
||||
</span><span id="covariance-1481"><a href="#covariance-1481"><span class="linenos">1481</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">set_cmap</span><span class="p">(</span><span class="s1">'RdBu'</span><span class="p">)</span>
|
||||
</span><span id="covariance-1482"><a href="#covariance-1482"><span class="linenos">1482</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">colorbar</span><span class="p">()</span>
|
||||
</span><span id="covariance-1483"><a href="#covariance-1483"><span class="linenos">1483</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">draw</span><span class="p">()</span>
|
||||
</span><span id="covariance-1484"><a href="#covariance-1484"><span class="linenos">1484</span></a>
|
||||
</span><span id="covariance-1485"><a href="#covariance-1485"><span class="linenos">1485</span></a> <span class="k">if</span> <span class="n">correlation</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span>
|
||||
</span><span id="covariance-1486"><a href="#covariance-1486"><span class="linenos">1486</span></a> <span class="k">return</span> <span class="n">corr</span>
|
||||
</span><span id="covariance-1479"><a href="#covariance-1479"><span class="linenos">1479</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">smooth</span><span class="p">,</span> <span class="nb">int</span><span class="p">):</span>
|
||||
</span><span id="covariance-1480"><a href="#covariance-1480"><span class="linenos">1480</span></a> <span class="n">corr</span> <span class="o">=</span> <span class="n">_smooth_eigenvalues</span><span class="p">(</span><span class="n">corr</span><span class="p">,</span> <span class="n">smooth</span><span class="p">)</span>
|
||||
</span><span id="covariance-1481"><a href="#covariance-1481"><span class="linenos">1481</span></a>
|
||||
</span><span id="covariance-1482"><a href="#covariance-1482"><span class="linenos">1482</span></a> <span class="k">if</span> <span class="n">visualize</span><span class="p">:</span>
|
||||
</span><span id="covariance-1483"><a href="#covariance-1483"><span class="linenos">1483</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">matshow</span><span class="p">(</span><span class="n">corr</span><span class="p">,</span> <span class="n">vmin</span><span class="o">=-</span><span class="mi">1</span><span class="p">,</span> <span class="n">vmax</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
|
||||
</span><span id="covariance-1484"><a href="#covariance-1484"><span class="linenos">1484</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">set_cmap</span><span class="p">(</span><span class="s1">'RdBu'</span><span class="p">)</span>
|
||||
</span><span id="covariance-1485"><a href="#covariance-1485"><span class="linenos">1485</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">colorbar</span><span class="p">()</span>
|
||||
</span><span id="covariance-1486"><a href="#covariance-1486"><span class="linenos">1486</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">draw</span><span class="p">()</span>
|
||||
</span><span id="covariance-1487"><a href="#covariance-1487"><span class="linenos">1487</span></a>
|
||||
</span><span id="covariance-1488"><a href="#covariance-1488"><span class="linenos">1488</span></a> <span class="n">errors</span> <span class="o">=</span> <span class="p">[</span><span class="n">o</span><span class="o">.</span><span class="n">dvalue</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">obs</span><span class="p">]</span>
|
||||
</span><span id="covariance-1489"><a href="#covariance-1489"><span class="linenos">1489</span></a> <span class="n">cov</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">errors</span><span class="p">)</span> <span class="o">@</span> <span class="n">corr</span> <span class="o">@</span> <span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">errors</span><span class="p">)</span>
|
||||
</span><span id="covariance-1488"><a href="#covariance-1488"><span class="linenos">1488</span></a> <span class="k">if</span> <span class="n">correlation</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span>
|
||||
</span><span id="covariance-1489"><a href="#covariance-1489"><span class="linenos">1489</span></a> <span class="k">return</span> <span class="n">corr</span>
|
||||
</span><span id="covariance-1490"><a href="#covariance-1490"><span class="linenos">1490</span></a>
|
||||
</span><span id="covariance-1491"><a href="#covariance-1491"><span class="linenos">1491</span></a> <span class="n">eigenvalues</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">eigh</span><span class="p">(</span><span class="n">cov</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
|
||||
</span><span id="covariance-1492"><a href="#covariance-1492"><span class="linenos">1492</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">np</span><span class="o">.</span><span class="n">all</span><span class="p">(</span><span class="n">eigenvalues</span> <span class="o">>=</span> <span class="mi">0</span><span class="p">):</span>
|
||||
</span><span id="covariance-1493"><a href="#covariance-1493"><span class="linenos">1493</span></a> <span class="n">warnings</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="s2">"Covariance matrix is not positive semi-definite (Eigenvalues: "</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">eigenvalues</span><span class="p">)</span> <span class="o">+</span> <span class="s2">")"</span><span class="p">,</span> <span class="ne">RuntimeWarning</span><span class="p">)</span>
|
||||
</span><span id="covariance-1494"><a href="#covariance-1494"><span class="linenos">1494</span></a>
|
||||
</span><span id="covariance-1495"><a href="#covariance-1495"><span class="linenos">1495</span></a> <span class="k">return</span> <span class="n">cov</span>
|
||||
</span><span id="covariance-1491"><a href="#covariance-1491"><span class="linenos">1491</span></a> <span class="n">errors</span> <span class="o">=</span> <span class="p">[</span><span class="n">o</span><span class="o">.</span><span class="n">dvalue</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">obs</span><span class="p">]</span>
|
||||
</span><span id="covariance-1492"><a href="#covariance-1492"><span class="linenos">1492</span></a> <span class="n">cov</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">errors</span><span class="p">)</span> <span class="o">@</span> <span class="n">corr</span> <span class="o">@</span> <span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">errors</span><span class="p">)</span>
|
||||
</span><span id="covariance-1493"><a href="#covariance-1493"><span class="linenos">1493</span></a>
|
||||
</span><span id="covariance-1494"><a href="#covariance-1494"><span class="linenos">1494</span></a> <span class="n">eigenvalues</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">eigh</span><span class="p">(</span><span class="n">cov</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
|
||||
</span><span id="covariance-1495"><a href="#covariance-1495"><span class="linenos">1495</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">np</span><span class="o">.</span><span class="n">all</span><span class="p">(</span><span class="n">eigenvalues</span> <span class="o">>=</span> <span class="mi">0</span><span class="p">):</span>
|
||||
</span><span id="covariance-1496"><a href="#covariance-1496"><span class="linenos">1496</span></a> <span class="n">warnings</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="s2">"Covariance matrix is not positive semi-definite (Eigenvalues: "</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">eigenvalues</span><span class="p">)</span> <span class="o">+</span> <span class="s2">")"</span><span class="p">,</span> <span class="ne">RuntimeWarning</span><span class="p">)</span>
|
||||
</span><span id="covariance-1497"><a href="#covariance-1497"><span class="linenos">1497</span></a>
|
||||
</span><span id="covariance-1498"><a href="#covariance-1498"><span class="linenos">1498</span></a> <span class="k">return</span> <span class="n">cov</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
<div class="docstring"><p>Calculates the error covariance matrix of a set of observables.</p>
|
||||
|
||||
<p>WARNING: This function should be used with care, especially for observables with support on multiple
|
||||
ensembles with differing autocorrelations. See the notes below for details.</p>
|
||||
|
||||
<p>The gamma method has to be applied first to all observables.</p>
|
||||
|
||||
<h6 id="parameters">Parameters</h6>
|
||||
|
@ -4685,24 +4694,24 @@ This construction ensures that the estimated covariance matrix is positive semi-
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#import_jackknife"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="import_jackknife-1575"><a href="#import_jackknife-1575"><span class="linenos">1575</span></a><span class="k">def</span> <span class="nf">import_jackknife</span><span class="p">(</span><span class="n">jacks</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">idl</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
</span><span id="import_jackknife-1576"><a href="#import_jackknife-1576"><span class="linenos">1576</span></a> <span class="sd">"""Imports jackknife samples and returns an Obs</span>
|
||||
</span><span id="import_jackknife-1577"><a href="#import_jackknife-1577"><span class="linenos">1577</span></a>
|
||||
</span><span id="import_jackknife-1578"><a href="#import_jackknife-1578"><span class="linenos">1578</span></a><span class="sd"> Parameters</span>
|
||||
</span><span id="import_jackknife-1579"><a href="#import_jackknife-1579"><span class="linenos">1579</span></a><span class="sd"> ----------</span>
|
||||
</span><span id="import_jackknife-1580"><a href="#import_jackknife-1580"><span class="linenos">1580</span></a><span class="sd"> jacks : numpy.ndarray</span>
|
||||
</span><span id="import_jackknife-1581"><a href="#import_jackknife-1581"><span class="linenos">1581</span></a><span class="sd"> numpy array containing the mean value as zeroth entry and</span>
|
||||
</span><span id="import_jackknife-1582"><a href="#import_jackknife-1582"><span class="linenos">1582</span></a><span class="sd"> the N jackknife samples as first to Nth entry.</span>
|
||||
</span><span id="import_jackknife-1583"><a href="#import_jackknife-1583"><span class="linenos">1583</span></a><span class="sd"> name : str</span>
|
||||
</span><span id="import_jackknife-1584"><a href="#import_jackknife-1584"><span class="linenos">1584</span></a><span class="sd"> name of the ensemble the samples are defined on.</span>
|
||||
</span><span id="import_jackknife-1585"><a href="#import_jackknife-1585"><span class="linenos">1585</span></a><span class="sd"> """</span>
|
||||
</span><span id="import_jackknife-1586"><a href="#import_jackknife-1586"><span class="linenos">1586</span></a> <span class="n">length</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">jacks</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span>
|
||||
</span><span id="import_jackknife-1587"><a href="#import_jackknife-1587"><span class="linenos">1587</span></a> <span class="n">prj</span> <span class="o">=</span> <span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">ones</span><span class="p">((</span><span class="n">length</span><span class="p">,</span> <span class="n">length</span><span class="p">))</span> <span class="o">-</span> <span class="p">(</span><span class="n">length</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">identity</span><span class="p">(</span><span class="n">length</span><span class="p">))</span>
|
||||
</span><span id="import_jackknife-1588"><a href="#import_jackknife-1588"><span class="linenos">1588</span></a> <span class="n">samples</span> <span class="o">=</span> <span class="n">jacks</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span> <span class="o">@</span> <span class="n">prj</span>
|
||||
</span><span id="import_jackknife-1589"><a href="#import_jackknife-1589"><span class="linenos">1589</span></a> <span class="n">mean</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">samples</span><span class="p">)</span>
|
||||
</span><span id="import_jackknife-1590"><a href="#import_jackknife-1590"><span class="linenos">1590</span></a> <span class="n">new_obs</span> <span class="o">=</span> <span class="n">Obs</span><span class="p">([</span><span class="n">samples</span> <span class="o">-</span> <span class="n">mean</span><span class="p">],</span> <span class="p">[</span><span class="n">name</span><span class="p">],</span> <span class="n">idl</span><span class="o">=</span><span class="n">idl</span><span class="p">,</span> <span class="n">means</span><span class="o">=</span><span class="p">[</span><span class="n">mean</span><span class="p">])</span>
|
||||
</span><span id="import_jackknife-1591"><a href="#import_jackknife-1591"><span class="linenos">1591</span></a> <span class="n">new_obs</span><span class="o">.</span><span class="n">_value</span> <span class="o">=</span> <span class="n">jacks</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
</span><span id="import_jackknife-1592"><a href="#import_jackknife-1592"><span class="linenos">1592</span></a> <span class="k">return</span> <span class="n">new_obs</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="import_jackknife-1578"><a href="#import_jackknife-1578"><span class="linenos">1578</span></a><span class="k">def</span> <span class="nf">import_jackknife</span><span class="p">(</span><span class="n">jacks</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">idl</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
</span><span id="import_jackknife-1579"><a href="#import_jackknife-1579"><span class="linenos">1579</span></a> <span class="sd">"""Imports jackknife samples and returns an Obs</span>
|
||||
</span><span id="import_jackknife-1580"><a href="#import_jackknife-1580"><span class="linenos">1580</span></a>
|
||||
</span><span id="import_jackknife-1581"><a href="#import_jackknife-1581"><span class="linenos">1581</span></a><span class="sd"> Parameters</span>
|
||||
</span><span id="import_jackknife-1582"><a href="#import_jackknife-1582"><span class="linenos">1582</span></a><span class="sd"> ----------</span>
|
||||
</span><span id="import_jackknife-1583"><a href="#import_jackknife-1583"><span class="linenos">1583</span></a><span class="sd"> jacks : numpy.ndarray</span>
|
||||
</span><span id="import_jackknife-1584"><a href="#import_jackknife-1584"><span class="linenos">1584</span></a><span class="sd"> numpy array containing the mean value as zeroth entry and</span>
|
||||
</span><span id="import_jackknife-1585"><a href="#import_jackknife-1585"><span class="linenos">1585</span></a><span class="sd"> the N jackknife samples as first to Nth entry.</span>
|
||||
</span><span id="import_jackknife-1586"><a href="#import_jackknife-1586"><span class="linenos">1586</span></a><span class="sd"> name : str</span>
|
||||
</span><span id="import_jackknife-1587"><a href="#import_jackknife-1587"><span class="linenos">1587</span></a><span class="sd"> name of the ensemble the samples are defined on.</span>
|
||||
</span><span id="import_jackknife-1588"><a href="#import_jackknife-1588"><span class="linenos">1588</span></a><span class="sd"> """</span>
|
||||
</span><span id="import_jackknife-1589"><a href="#import_jackknife-1589"><span class="linenos">1589</span></a> <span class="n">length</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">jacks</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span>
|
||||
</span><span id="import_jackknife-1590"><a href="#import_jackknife-1590"><span class="linenos">1590</span></a> <span class="n">prj</span> <span class="o">=</span> <span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">ones</span><span class="p">((</span><span class="n">length</span><span class="p">,</span> <span class="n">length</span><span class="p">))</span> <span class="o">-</span> <span class="p">(</span><span class="n">length</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">identity</span><span class="p">(</span><span class="n">length</span><span class="p">))</span>
|
||||
</span><span id="import_jackknife-1591"><a href="#import_jackknife-1591"><span class="linenos">1591</span></a> <span class="n">samples</span> <span class="o">=</span> <span class="n">jacks</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span> <span class="o">@</span> <span class="n">prj</span>
|
||||
</span><span id="import_jackknife-1592"><a href="#import_jackknife-1592"><span class="linenos">1592</span></a> <span class="n">mean</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">samples</span><span class="p">)</span>
|
||||
</span><span id="import_jackknife-1593"><a href="#import_jackknife-1593"><span class="linenos">1593</span></a> <span class="n">new_obs</span> <span class="o">=</span> <span class="n">Obs</span><span class="p">([</span><span class="n">samples</span> <span class="o">-</span> <span class="n">mean</span><span class="p">],</span> <span class="p">[</span><span class="n">name</span><span class="p">],</span> <span class="n">idl</span><span class="o">=</span><span class="n">idl</span><span class="p">,</span> <span class="n">means</span><span class="o">=</span><span class="p">[</span><span class="n">mean</span><span class="p">])</span>
|
||||
</span><span id="import_jackknife-1594"><a href="#import_jackknife-1594"><span class="linenos">1594</span></a> <span class="n">new_obs</span><span class="o">.</span><span class="n">_value</span> <span class="o">=</span> <span class="n">jacks</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
</span><span id="import_jackknife-1595"><a href="#import_jackknife-1595"><span class="linenos">1595</span></a> <span class="k">return</span> <span class="n">new_obs</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -4732,35 +4741,35 @@ name of the ensemble the samples are defined on.</li>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#merge_obs"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="merge_obs-1595"><a href="#merge_obs-1595"><span class="linenos">1595</span></a><span class="k">def</span> <span class="nf">merge_obs</span><span class="p">(</span><span class="n">list_of_obs</span><span class="p">):</span>
|
||||
</span><span id="merge_obs-1596"><a href="#merge_obs-1596"><span class="linenos">1596</span></a> <span class="sd">"""Combine all observables in list_of_obs into one new observable</span>
|
||||
</span><span id="merge_obs-1597"><a href="#merge_obs-1597"><span class="linenos">1597</span></a>
|
||||
</span><span id="merge_obs-1598"><a href="#merge_obs-1598"><span class="linenos">1598</span></a><span class="sd"> Parameters</span>
|
||||
</span><span id="merge_obs-1599"><a href="#merge_obs-1599"><span class="linenos">1599</span></a><span class="sd"> ----------</span>
|
||||
</span><span id="merge_obs-1600"><a href="#merge_obs-1600"><span class="linenos">1600</span></a><span class="sd"> list_of_obs : list</span>
|
||||
</span><span id="merge_obs-1601"><a href="#merge_obs-1601"><span class="linenos">1601</span></a><span class="sd"> list of the Obs object to be combined</span>
|
||||
</span><span id="merge_obs-1602"><a href="#merge_obs-1602"><span class="linenos">1602</span></a>
|
||||
</span><span id="merge_obs-1603"><a href="#merge_obs-1603"><span class="linenos">1603</span></a><span class="sd"> Notes</span>
|
||||
</span><span id="merge_obs-1604"><a href="#merge_obs-1604"><span class="linenos">1604</span></a><span class="sd"> -----</span>
|
||||
</span><span id="merge_obs-1605"><a href="#merge_obs-1605"><span class="linenos">1605</span></a><span class="sd"> It is not possible to combine obs which are based on the same replicum</span>
|
||||
</span><span id="merge_obs-1606"><a href="#merge_obs-1606"><span class="linenos">1606</span></a><span class="sd"> """</span>
|
||||
</span><span id="merge_obs-1607"><a href="#merge_obs-1607"><span class="linenos">1607</span></a> <span class="n">replist</span> <span class="o">=</span> <span class="p">[</span><span class="n">item</span> <span class="k">for</span> <span class="n">obs</span> <span class="ow">in</span> <span class="n">list_of_obs</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">obs</span><span class="o">.</span><span class="n">names</span><span class="p">]</span>
|
||||
</span><span id="merge_obs-1608"><a href="#merge_obs-1608"><span class="linenos">1608</span></a> <span class="k">if</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">replist</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">replist</span><span class="p">)))</span> <span class="ow">is</span> <span class="kc">False</span><span class="p">:</span>
|
||||
</span><span id="merge_obs-1609"><a href="#merge_obs-1609"><span class="linenos">1609</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">'list_of_obs contains duplicate replica: </span><span class="si">%s</span><span class="s1">'</span> <span class="o">%</span> <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">replist</span><span class="p">)))</span>
|
||||
</span><span id="merge_obs-1610"><a href="#merge_obs-1610"><span class="linenos">1610</span></a> <span class="k">if</span> <span class="nb">any</span><span class="p">([</span><span class="nb">len</span><span class="p">(</span><span class="n">o</span><span class="o">.</span><span class="n">cov_names</span><span class="p">)</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">list_of_obs</span><span class="p">]):</span>
|
||||
</span><span id="merge_obs-1611"><a href="#merge_obs-1611"><span class="linenos">1611</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">'Not possible to merge data that contains covobs!'</span><span class="p">)</span>
|
||||
</span><span id="merge_obs-1612"><a href="#merge_obs-1612"><span class="linenos">1612</span></a> <span class="n">new_dict</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
</span><span id="merge_obs-1613"><a href="#merge_obs-1613"><span class="linenos">1613</span></a> <span class="n">idl_dict</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
</span><span id="merge_obs-1614"><a href="#merge_obs-1614"><span class="linenos">1614</span></a> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">list_of_obs</span><span class="p">:</span>
|
||||
</span><span id="merge_obs-1615"><a href="#merge_obs-1615"><span class="linenos">1615</span></a> <span class="n">new_dict</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="n">key</span><span class="p">:</span> <span class="n">o</span><span class="o">.</span><span class="n">deltas</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="o">+</span> <span class="n">o</span><span class="o">.</span><span class="n">r_values</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
|
||||
</span><span id="merge_obs-1616"><a href="#merge_obs-1616"><span class="linenos">1616</span></a> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="nb">set</span><span class="p">(</span><span class="n">o</span><span class="o">.</span><span class="n">deltas</span><span class="p">)</span> <span class="o">|</span> <span class="nb">set</span><span class="p">(</span><span class="n">o</span><span class="o">.</span><span class="n">r_values</span><span class="p">)})</span>
|
||||
</span><span id="merge_obs-1617"><a href="#merge_obs-1617"><span class="linenos">1617</span></a> <span class="n">idl_dict</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="n">key</span><span class="p">:</span> <span class="n">o</span><span class="o">.</span><span class="n">idl</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="nb">set</span><span class="p">(</span><span class="n">o</span><span class="o">.</span><span class="n">deltas</span><span class="p">)})</span>
|
||||
</span><span id="merge_obs-1618"><a href="#merge_obs-1618"><span class="linenos">1618</span></a>
|
||||
</span><span id="merge_obs-1619"><a href="#merge_obs-1619"><span class="linenos">1619</span></a> <span class="n">names</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">new_dict</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span>
|
||||
</span><span id="merge_obs-1620"><a href="#merge_obs-1620"><span class="linenos">1620</span></a> <span class="n">o</span> <span class="o">=</span> <span class="n">Obs</span><span class="p">([</span><span class="n">new_dict</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">names</span><span class="p">],</span> <span class="n">names</span><span class="p">,</span> <span class="n">idl</span><span class="o">=</span><span class="p">[</span><span class="n">idl_dict</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">names</span><span class="p">])</span>
|
||||
</span><span id="merge_obs-1621"><a href="#merge_obs-1621"><span class="linenos">1621</span></a> <span class="n">o</span><span class="o">.</span><span class="n">is_merged</span> <span class="o">=</span> <span class="p">{</span><span class="n">name</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">any</span><span class="p">([</span><span class="n">oi</span><span class="o">.</span><span class="n">is_merged</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> <span class="k">for</span> <span class="n">oi</span> <span class="ow">in</span> <span class="n">list_of_obs</span><span class="p">])</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">o</span><span class="o">.</span><span class="n">names</span><span class="p">}</span>
|
||||
</span><span id="merge_obs-1622"><a href="#merge_obs-1622"><span class="linenos">1622</span></a> <span class="n">o</span><span class="o">.</span><span class="n">reweighted</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">([</span><span class="n">oi</span><span class="o">.</span><span class="n">reweighted</span> <span class="k">for</span> <span class="n">oi</span> <span class="ow">in</span> <span class="n">list_of_obs</span><span class="p">])</span>
|
||||
</span><span id="merge_obs-1623"><a href="#merge_obs-1623"><span class="linenos">1623</span></a> <span class="k">return</span> <span class="n">o</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="merge_obs-1598"><a href="#merge_obs-1598"><span class="linenos">1598</span></a><span class="k">def</span> <span class="nf">merge_obs</span><span class="p">(</span><span class="n">list_of_obs</span><span class="p">):</span>
|
||||
</span><span id="merge_obs-1599"><a href="#merge_obs-1599"><span class="linenos">1599</span></a> <span class="sd">"""Combine all observables in list_of_obs into one new observable</span>
|
||||
</span><span id="merge_obs-1600"><a href="#merge_obs-1600"><span class="linenos">1600</span></a>
|
||||
</span><span id="merge_obs-1601"><a href="#merge_obs-1601"><span class="linenos">1601</span></a><span class="sd"> Parameters</span>
|
||||
</span><span id="merge_obs-1602"><a href="#merge_obs-1602"><span class="linenos">1602</span></a><span class="sd"> ----------</span>
|
||||
</span><span id="merge_obs-1603"><a href="#merge_obs-1603"><span class="linenos">1603</span></a><span class="sd"> list_of_obs : list</span>
|
||||
</span><span id="merge_obs-1604"><a href="#merge_obs-1604"><span class="linenos">1604</span></a><span class="sd"> list of the Obs object to be combined</span>
|
||||
</span><span id="merge_obs-1605"><a href="#merge_obs-1605"><span class="linenos">1605</span></a>
|
||||
</span><span id="merge_obs-1606"><a href="#merge_obs-1606"><span class="linenos">1606</span></a><span class="sd"> Notes</span>
|
||||
</span><span id="merge_obs-1607"><a href="#merge_obs-1607"><span class="linenos">1607</span></a><span class="sd"> -----</span>
|
||||
</span><span id="merge_obs-1608"><a href="#merge_obs-1608"><span class="linenos">1608</span></a><span class="sd"> It is not possible to combine obs which are based on the same replicum</span>
|
||||
</span><span id="merge_obs-1609"><a href="#merge_obs-1609"><span class="linenos">1609</span></a><span class="sd"> """</span>
|
||||
</span><span id="merge_obs-1610"><a href="#merge_obs-1610"><span class="linenos">1610</span></a> <span class="n">replist</span> <span class="o">=</span> <span class="p">[</span><span class="n">item</span> <span class="k">for</span> <span class="n">obs</span> <span class="ow">in</span> <span class="n">list_of_obs</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">obs</span><span class="o">.</span><span class="n">names</span><span class="p">]</span>
|
||||
</span><span id="merge_obs-1611"><a href="#merge_obs-1611"><span class="linenos">1611</span></a> <span class="k">if</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">replist</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">replist</span><span class="p">)))</span> <span class="ow">is</span> <span class="kc">False</span><span class="p">:</span>
|
||||
</span><span id="merge_obs-1612"><a href="#merge_obs-1612"><span class="linenos">1612</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">'list_of_obs contains duplicate replica: </span><span class="si">%s</span><span class="s1">'</span> <span class="o">%</span> <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">replist</span><span class="p">)))</span>
|
||||
</span><span id="merge_obs-1613"><a href="#merge_obs-1613"><span class="linenos">1613</span></a> <span class="k">if</span> <span class="nb">any</span><span class="p">([</span><span class="nb">len</span><span class="p">(</span><span class="n">o</span><span class="o">.</span><span class="n">cov_names</span><span class="p">)</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">list_of_obs</span><span class="p">]):</span>
|
||||
</span><span id="merge_obs-1614"><a href="#merge_obs-1614"><span class="linenos">1614</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">'Not possible to merge data that contains covobs!'</span><span class="p">)</span>
|
||||
</span><span id="merge_obs-1615"><a href="#merge_obs-1615"><span class="linenos">1615</span></a> <span class="n">new_dict</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
</span><span id="merge_obs-1616"><a href="#merge_obs-1616"><span class="linenos">1616</span></a> <span class="n">idl_dict</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
</span><span id="merge_obs-1617"><a href="#merge_obs-1617"><span class="linenos">1617</span></a> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">list_of_obs</span><span class="p">:</span>
|
||||
</span><span id="merge_obs-1618"><a href="#merge_obs-1618"><span class="linenos">1618</span></a> <span class="n">new_dict</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="n">key</span><span class="p">:</span> <span class="n">o</span><span class="o">.</span><span class="n">deltas</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="o">+</span> <span class="n">o</span><span class="o">.</span><span class="n">r_values</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
|
||||
</span><span id="merge_obs-1619"><a href="#merge_obs-1619"><span class="linenos">1619</span></a> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="nb">set</span><span class="p">(</span><span class="n">o</span><span class="o">.</span><span class="n">deltas</span><span class="p">)</span> <span class="o">|</span> <span class="nb">set</span><span class="p">(</span><span class="n">o</span><span class="o">.</span><span class="n">r_values</span><span class="p">)})</span>
|
||||
</span><span id="merge_obs-1620"><a href="#merge_obs-1620"><span class="linenos">1620</span></a> <span class="n">idl_dict</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="n">key</span><span class="p">:</span> <span class="n">o</span><span class="o">.</span><span class="n">idl</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="nb">set</span><span class="p">(</span><span class="n">o</span><span class="o">.</span><span class="n">deltas</span><span class="p">)})</span>
|
||||
</span><span id="merge_obs-1621"><a href="#merge_obs-1621"><span class="linenos">1621</span></a>
|
||||
</span><span id="merge_obs-1622"><a href="#merge_obs-1622"><span class="linenos">1622</span></a> <span class="n">names</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">new_dict</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span>
|
||||
</span><span id="merge_obs-1623"><a href="#merge_obs-1623"><span class="linenos">1623</span></a> <span class="n">o</span> <span class="o">=</span> <span class="n">Obs</span><span class="p">([</span><span class="n">new_dict</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">names</span><span class="p">],</span> <span class="n">names</span><span class="p">,</span> <span class="n">idl</span><span class="o">=</span><span class="p">[</span><span class="n">idl_dict</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">names</span><span class="p">])</span>
|
||||
</span><span id="merge_obs-1624"><a href="#merge_obs-1624"><span class="linenos">1624</span></a> <span class="n">o</span><span class="o">.</span><span class="n">is_merged</span> <span class="o">=</span> <span class="p">{</span><span class="n">name</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">any</span><span class="p">([</span><span class="n">oi</span><span class="o">.</span><span class="n">is_merged</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> <span class="k">for</span> <span class="n">oi</span> <span class="ow">in</span> <span class="n">list_of_obs</span><span class="p">])</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">o</span><span class="o">.</span><span class="n">names</span><span class="p">}</span>
|
||||
</span><span id="merge_obs-1625"><a href="#merge_obs-1625"><span class="linenos">1625</span></a> <span class="n">o</span><span class="o">.</span><span class="n">reweighted</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">([</span><span class="n">oi</span><span class="o">.</span><span class="n">reweighted</span> <span class="k">for</span> <span class="n">oi</span> <span class="ow">in</span> <span class="n">list_of_obs</span><span class="p">])</span>
|
||||
</span><span id="merge_obs-1626"><a href="#merge_obs-1626"><span class="linenos">1626</span></a> <span class="k">return</span> <span class="n">o</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -4791,47 +4800,47 @@ list of the Obs object to be combined</li>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#cov_Obs"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="cov_Obs-1626"><a href="#cov_Obs-1626"><span class="linenos">1626</span></a><span class="k">def</span> <span class="nf">cov_Obs</span><span class="p">(</span><span class="n">means</span><span class="p">,</span> <span class="n">cov</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">grad</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
</span><span id="cov_Obs-1627"><a href="#cov_Obs-1627"><span class="linenos">1627</span></a> <span class="sd">"""Create an Obs based on mean(s) and a covariance matrix</span>
|
||||
</span><span id="cov_Obs-1628"><a href="#cov_Obs-1628"><span class="linenos">1628</span></a>
|
||||
</span><span id="cov_Obs-1629"><a href="#cov_Obs-1629"><span class="linenos">1629</span></a><span class="sd"> Parameters</span>
|
||||
</span><span id="cov_Obs-1630"><a href="#cov_Obs-1630"><span class="linenos">1630</span></a><span class="sd"> ----------</span>
|
||||
</span><span id="cov_Obs-1631"><a href="#cov_Obs-1631"><span class="linenos">1631</span></a><span class="sd"> mean : list of floats or float</span>
|
||||
</span><span id="cov_Obs-1632"><a href="#cov_Obs-1632"><span class="linenos">1632</span></a><span class="sd"> N mean value(s) of the new Obs</span>
|
||||
</span><span id="cov_Obs-1633"><a href="#cov_Obs-1633"><span class="linenos">1633</span></a><span class="sd"> cov : list or array</span>
|
||||
</span><span id="cov_Obs-1634"><a href="#cov_Obs-1634"><span class="linenos">1634</span></a><span class="sd"> 2d (NxN) Covariance matrix, 1d diagonal entries or 0d covariance</span>
|
||||
</span><span id="cov_Obs-1635"><a href="#cov_Obs-1635"><span class="linenos">1635</span></a><span class="sd"> name : str</span>
|
||||
</span><span id="cov_Obs-1636"><a href="#cov_Obs-1636"><span class="linenos">1636</span></a><span class="sd"> identifier for the covariance matrix</span>
|
||||
</span><span id="cov_Obs-1637"><a href="#cov_Obs-1637"><span class="linenos">1637</span></a><span class="sd"> grad : list or array</span>
|
||||
</span><span id="cov_Obs-1638"><a href="#cov_Obs-1638"><span class="linenos">1638</span></a><span class="sd"> Gradient of the Covobs wrt. the means belonging to cov.</span>
|
||||
</span><span id="cov_Obs-1639"><a href="#cov_Obs-1639"><span class="linenos">1639</span></a><span class="sd"> """</span>
|
||||
</span><span id="cov_Obs-1640"><a href="#cov_Obs-1640"><span class="linenos">1640</span></a>
|
||||
</span><span id="cov_Obs-1641"><a href="#cov_Obs-1641"><span class="linenos">1641</span></a> <span class="k">def</span> <span class="nf">covobs_to_obs</span><span class="p">(</span><span class="n">co</span><span class="p">):</span>
|
||||
</span><span id="cov_Obs-1642"><a href="#cov_Obs-1642"><span class="linenos">1642</span></a> <span class="sd">"""Make an Obs out of a Covobs</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="cov_Obs-1629"><a href="#cov_Obs-1629"><span class="linenos">1629</span></a><span class="k">def</span> <span class="nf">cov_Obs</span><span class="p">(</span><span class="n">means</span><span class="p">,</span> <span class="n">cov</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">grad</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
</span><span id="cov_Obs-1630"><a href="#cov_Obs-1630"><span class="linenos">1630</span></a> <span class="sd">"""Create an Obs based on mean(s) and a covariance matrix</span>
|
||||
</span><span id="cov_Obs-1631"><a href="#cov_Obs-1631"><span class="linenos">1631</span></a>
|
||||
</span><span id="cov_Obs-1632"><a href="#cov_Obs-1632"><span class="linenos">1632</span></a><span class="sd"> Parameters</span>
|
||||
</span><span id="cov_Obs-1633"><a href="#cov_Obs-1633"><span class="linenos">1633</span></a><span class="sd"> ----------</span>
|
||||
</span><span id="cov_Obs-1634"><a href="#cov_Obs-1634"><span class="linenos">1634</span></a><span class="sd"> mean : list of floats or float</span>
|
||||
</span><span id="cov_Obs-1635"><a href="#cov_Obs-1635"><span class="linenos">1635</span></a><span class="sd"> N mean value(s) of the new Obs</span>
|
||||
</span><span id="cov_Obs-1636"><a href="#cov_Obs-1636"><span class="linenos">1636</span></a><span class="sd"> cov : list or array</span>
|
||||
</span><span id="cov_Obs-1637"><a href="#cov_Obs-1637"><span class="linenos">1637</span></a><span class="sd"> 2d (NxN) Covariance matrix, 1d diagonal entries or 0d covariance</span>
|
||||
</span><span id="cov_Obs-1638"><a href="#cov_Obs-1638"><span class="linenos">1638</span></a><span class="sd"> name : str</span>
|
||||
</span><span id="cov_Obs-1639"><a href="#cov_Obs-1639"><span class="linenos">1639</span></a><span class="sd"> identifier for the covariance matrix</span>
|
||||
</span><span id="cov_Obs-1640"><a href="#cov_Obs-1640"><span class="linenos">1640</span></a><span class="sd"> grad : list or array</span>
|
||||
</span><span id="cov_Obs-1641"><a href="#cov_Obs-1641"><span class="linenos">1641</span></a><span class="sd"> Gradient of the Covobs wrt. the means belonging to cov.</span>
|
||||
</span><span id="cov_Obs-1642"><a href="#cov_Obs-1642"><span class="linenos">1642</span></a><span class="sd"> """</span>
|
||||
</span><span id="cov_Obs-1643"><a href="#cov_Obs-1643"><span class="linenos">1643</span></a>
|
||||
</span><span id="cov_Obs-1644"><a href="#cov_Obs-1644"><span class="linenos">1644</span></a><span class="sd"> Parameters</span>
|
||||
</span><span id="cov_Obs-1645"><a href="#cov_Obs-1645"><span class="linenos">1645</span></a><span class="sd"> ----------</span>
|
||||
</span><span id="cov_Obs-1646"><a href="#cov_Obs-1646"><span class="linenos">1646</span></a><span class="sd"> co : Covobs</span>
|
||||
</span><span id="cov_Obs-1647"><a href="#cov_Obs-1647"><span class="linenos">1647</span></a><span class="sd"> Covobs to be embedded into the Obs</span>
|
||||
</span><span id="cov_Obs-1648"><a href="#cov_Obs-1648"><span class="linenos">1648</span></a><span class="sd"> """</span>
|
||||
</span><span id="cov_Obs-1649"><a href="#cov_Obs-1649"><span class="linenos">1649</span></a> <span class="n">o</span> <span class="o">=</span> <span class="n">Obs</span><span class="p">([],</span> <span class="p">[],</span> <span class="n">means</span><span class="o">=</span><span class="p">[])</span>
|
||||
</span><span id="cov_Obs-1650"><a href="#cov_Obs-1650"><span class="linenos">1650</span></a> <span class="n">o</span><span class="o">.</span><span class="n">_value</span> <span class="o">=</span> <span class="n">co</span><span class="o">.</span><span class="n">value</span>
|
||||
</span><span id="cov_Obs-1651"><a href="#cov_Obs-1651"><span class="linenos">1651</span></a> <span class="n">o</span><span class="o">.</span><span class="n">names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">co</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
</span><span id="cov_Obs-1652"><a href="#cov_Obs-1652"><span class="linenos">1652</span></a> <span class="n">o</span><span class="o">.</span><span class="n">_covobs</span><span class="p">[</span><span class="n">co</span><span class="o">.</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">co</span>
|
||||
</span><span id="cov_Obs-1653"><a href="#cov_Obs-1653"><span class="linenos">1653</span></a> <span class="n">o</span><span class="o">.</span><span class="n">_dvalue</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">co</span><span class="o">.</span><span class="n">errsq</span><span class="p">())</span>
|
||||
</span><span id="cov_Obs-1654"><a href="#cov_Obs-1654"><span class="linenos">1654</span></a> <span class="k">return</span> <span class="n">o</span>
|
||||
</span><span id="cov_Obs-1655"><a href="#cov_Obs-1655"><span class="linenos">1655</span></a>
|
||||
</span><span id="cov_Obs-1656"><a href="#cov_Obs-1656"><span class="linenos">1656</span></a> <span class="n">ol</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
</span><span id="cov_Obs-1657"><a href="#cov_Obs-1657"><span class="linenos">1657</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">means</span><span class="p">,</span> <span class="p">(</span><span class="nb">float</span><span class="p">,</span> <span class="nb">int</span><span class="p">)):</span>
|
||||
</span><span id="cov_Obs-1658"><a href="#cov_Obs-1658"><span class="linenos">1658</span></a> <span class="n">means</span> <span class="o">=</span> <span class="p">[</span><span class="n">means</span><span class="p">]</span>
|
||||
</span><span id="cov_Obs-1659"><a href="#cov_Obs-1659"><span class="linenos">1659</span></a>
|
||||
</span><span id="cov_Obs-1660"><a href="#cov_Obs-1660"><span class="linenos">1660</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="nb">len</span><span class="p">(</span><span class="n">means</span><span class="p">)):</span>
|
||||
</span><span id="cov_Obs-1661"><a href="#cov_Obs-1661"><span class="linenos">1661</span></a> <span class="n">ol</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">covobs_to_obs</span><span class="p">(</span><span class="n">Covobs</span><span class="p">(</span><span class="n">means</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">cov</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">pos</span><span class="o">=</span><span class="n">i</span><span class="p">,</span> <span class="n">grad</span><span class="o">=</span><span class="n">grad</span><span class="p">)))</span>
|
||||
</span><span id="cov_Obs-1662"><a href="#cov_Obs-1662"><span class="linenos">1662</span></a> <span class="k">if</span> <span class="n">ol</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">covobs</span><span class="p">[</span><span class="n">name</span><span class="p">]</span><span class="o">.</span><span class="n">N</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">means</span><span class="p">):</span>
|
||||
</span><span id="cov_Obs-1663"><a href="#cov_Obs-1663"><span class="linenos">1663</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">'You have to provide </span><span class="si">%d</span><span class="s1"> mean values!'</span> <span class="o">%</span> <span class="p">(</span><span class="n">ol</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">N</span><span class="p">))</span>
|
||||
</span><span id="cov_Obs-1664"><a href="#cov_Obs-1664"><span class="linenos">1664</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">ol</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
|
||||
</span><span id="cov_Obs-1665"><a href="#cov_Obs-1665"><span class="linenos">1665</span></a> <span class="k">return</span> <span class="n">ol</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
</span><span id="cov_Obs-1666"><a href="#cov_Obs-1666"><span class="linenos">1666</span></a> <span class="k">return</span> <span class="n">ol</span>
|
||||
</span><span id="cov_Obs-1644"><a href="#cov_Obs-1644"><span class="linenos">1644</span></a> <span class="k">def</span> <span class="nf">covobs_to_obs</span><span class="p">(</span><span class="n">co</span><span class="p">):</span>
|
||||
</span><span id="cov_Obs-1645"><a href="#cov_Obs-1645"><span class="linenos">1645</span></a> <span class="sd">"""Make an Obs out of a Covobs</span>
|
||||
</span><span id="cov_Obs-1646"><a href="#cov_Obs-1646"><span class="linenos">1646</span></a>
|
||||
</span><span id="cov_Obs-1647"><a href="#cov_Obs-1647"><span class="linenos">1647</span></a><span class="sd"> Parameters</span>
|
||||
</span><span id="cov_Obs-1648"><a href="#cov_Obs-1648"><span class="linenos">1648</span></a><span class="sd"> ----------</span>
|
||||
</span><span id="cov_Obs-1649"><a href="#cov_Obs-1649"><span class="linenos">1649</span></a><span class="sd"> co : Covobs</span>
|
||||
</span><span id="cov_Obs-1650"><a href="#cov_Obs-1650"><span class="linenos">1650</span></a><span class="sd"> Covobs to be embedded into the Obs</span>
|
||||
</span><span id="cov_Obs-1651"><a href="#cov_Obs-1651"><span class="linenos">1651</span></a><span class="sd"> """</span>
|
||||
</span><span id="cov_Obs-1652"><a href="#cov_Obs-1652"><span class="linenos">1652</span></a> <span class="n">o</span> <span class="o">=</span> <span class="n">Obs</span><span class="p">([],</span> <span class="p">[],</span> <span class="n">means</span><span class="o">=</span><span class="p">[])</span>
|
||||
</span><span id="cov_Obs-1653"><a href="#cov_Obs-1653"><span class="linenos">1653</span></a> <span class="n">o</span><span class="o">.</span><span class="n">_value</span> <span class="o">=</span> <span class="n">co</span><span class="o">.</span><span class="n">value</span>
|
||||
</span><span id="cov_Obs-1654"><a href="#cov_Obs-1654"><span class="linenos">1654</span></a> <span class="n">o</span><span class="o">.</span><span class="n">names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">co</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
</span><span id="cov_Obs-1655"><a href="#cov_Obs-1655"><span class="linenos">1655</span></a> <span class="n">o</span><span class="o">.</span><span class="n">_covobs</span><span class="p">[</span><span class="n">co</span><span class="o">.</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">co</span>
|
||||
</span><span id="cov_Obs-1656"><a href="#cov_Obs-1656"><span class="linenos">1656</span></a> <span class="n">o</span><span class="o">.</span><span class="n">_dvalue</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">co</span><span class="o">.</span><span class="n">errsq</span><span class="p">())</span>
|
||||
</span><span id="cov_Obs-1657"><a href="#cov_Obs-1657"><span class="linenos">1657</span></a> <span class="k">return</span> <span class="n">o</span>
|
||||
</span><span id="cov_Obs-1658"><a href="#cov_Obs-1658"><span class="linenos">1658</span></a>
|
||||
</span><span id="cov_Obs-1659"><a href="#cov_Obs-1659"><span class="linenos">1659</span></a> <span class="n">ol</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
</span><span id="cov_Obs-1660"><a href="#cov_Obs-1660"><span class="linenos">1660</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">means</span><span class="p">,</span> <span class="p">(</span><span class="nb">float</span><span class="p">,</span> <span class="nb">int</span><span class="p">)):</span>
|
||||
</span><span id="cov_Obs-1661"><a href="#cov_Obs-1661"><span class="linenos">1661</span></a> <span class="n">means</span> <span class="o">=</span> <span class="p">[</span><span class="n">means</span><span class="p">]</span>
|
||||
</span><span id="cov_Obs-1662"><a href="#cov_Obs-1662"><span class="linenos">1662</span></a>
|
||||
</span><span id="cov_Obs-1663"><a href="#cov_Obs-1663"><span class="linenos">1663</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="nb">len</span><span class="p">(</span><span class="n">means</span><span class="p">)):</span>
|
||||
</span><span id="cov_Obs-1664"><a href="#cov_Obs-1664"><span class="linenos">1664</span></a> <span class="n">ol</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">covobs_to_obs</span><span class="p">(</span><span class="n">Covobs</span><span class="p">(</span><span class="n">means</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">cov</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">pos</span><span class="o">=</span><span class="n">i</span><span class="p">,</span> <span class="n">grad</span><span class="o">=</span><span class="n">grad</span><span class="p">)))</span>
|
||||
</span><span id="cov_Obs-1665"><a href="#cov_Obs-1665"><span class="linenos">1665</span></a> <span class="k">if</span> <span class="n">ol</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">covobs</span><span class="p">[</span><span class="n">name</span><span class="p">]</span><span class="o">.</span><span class="n">N</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">means</span><span class="p">):</span>
|
||||
</span><span id="cov_Obs-1666"><a href="#cov_Obs-1666"><span class="linenos">1666</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">'You have to provide </span><span class="si">%d</span><span class="s1"> mean values!'</span> <span class="o">%</span> <span class="p">(</span><span class="n">ol</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">N</span><span class="p">))</span>
|
||||
</span><span id="cov_Obs-1667"><a href="#cov_Obs-1667"><span class="linenos">1667</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">ol</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
|
||||
</span><span id="cov_Obs-1668"><a href="#cov_Obs-1668"><span class="linenos">1668</span></a> <span class="k">return</span> <span class="n">ol</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
</span><span id="cov_Obs-1669"><a href="#cov_Obs-1669"><span class="linenos">1669</span></a> <span class="k">return</span> <span class="n">ol</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
|
File diff suppressed because one or more lines are too long
Loading…
Add table
Add a link
Reference in a new issue