Documentation updated

This commit is contained in:
fjosw 2023-05-16 17:37:42 +00:00
parent ae5fbbee3c
commit bae76366b7
3 changed files with 2087 additions and 1785 deletions

View file

@ -83,180 +83,220 @@
</span><span id="L-2"><a href="#L-2"><span class="linenos"> 2</span></a><span class="kn">import</span> <span class="nn">fnmatch</span>
</span><span id="L-3"><a href="#L-3"><span class="linenos"> 3</span></a><span class="kn">import</span> <span class="nn">re</span>
</span><span id="L-4"><a href="#L-4"><span class="linenos"> 4</span></a><span class="kn">import</span> <span class="nn">struct</span>
</span><span id="L-5"><a href="#L-5"><span class="linenos"> 5</span></a><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span> <span class="c1"># Thinly-wrapped numpy</span>
</span><span id="L-6"><a href="#L-6"><span class="linenos"> 6</span></a><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
</span><span id="L-7"><a href="#L-7"><span class="linenos"> 7</span></a><span class="kn">from</span> <span class="nn">matplotlib</span> <span class="kn">import</span> <span class="n">gridspec</span>
</span><span id="L-8"><a href="#L-8"><span class="linenos"> 8</span></a><span class="kn">from</span> <span class="nn">..obs</span> <span class="kn">import</span> <span class="n">Obs</span>
</span><span id="L-9"><a href="#L-9"><span class="linenos"> 9</span></a><span class="kn">from</span> <span class="nn">..fits</span> <span class="kn">import</span> <span class="n">fit_lin</span>
</span><span id="L-10"><a href="#L-10"><span class="linenos"> 10</span></a>
</span><span id="L-5"><a href="#L-5"><span class="linenos"> 5</span></a><span class="kn">import</span> <span class="nn">warnings</span>
</span><span id="L-6"><a href="#L-6"><span class="linenos"> 6</span></a><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span> <span class="c1"># Thinly-wrapped numpy</span>
</span><span id="L-7"><a href="#L-7"><span class="linenos"> 7</span></a><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
</span><span id="L-8"><a href="#L-8"><span class="linenos"> 8</span></a><span class="kn">from</span> <span class="nn">matplotlib</span> <span class="kn">import</span> <span class="n">gridspec</span>
</span><span id="L-9"><a href="#L-9"><span class="linenos"> 9</span></a><span class="kn">from</span> <span class="nn">..obs</span> <span class="kn">import</span> <span class="n">Obs</span>
</span><span id="L-10"><a href="#L-10"><span class="linenos"> 10</span></a><span class="kn">from</span> <span class="nn">..fits</span> <span class="kn">import</span> <span class="n">fit_lin</span>
</span><span id="L-11"><a href="#L-11"><span class="linenos"> 11</span></a>
</span><span id="L-12"><a href="#L-12"><span class="linenos"> 12</span></a><span class="k">def</span> <span class="nf">fit_t0</span><span class="p">(</span><span class="n">t2E_dict</span><span class="p">,</span> <span class="n">fit_range</span><span class="p">,</span> <span class="n">plot_fit</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
</span><span id="L-13"><a href="#L-13"><span class="linenos"> 13</span></a> <span class="n">zero_crossing</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">argmax</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span>
</span><span id="L-14"><a href="#L-14"><span class="linenos"> 14</span></a> <span class="p">[</span><span class="n">o</span><span class="o">.</span><span class="n">value</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">t2E_dict</span><span class="o">.</span><span class="n">values</span><span class="p">()])</span> <span class="o">&gt;</span> <span class="mf">0.0</span><span class="p">)</span>
</span><span id="L-15"><a href="#L-15"><span class="linenos"> 15</span></a>
</span><span id="L-16"><a href="#L-16"><span class="linenos"> 16</span></a> <span class="n">x</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">t2E_dict</span><span class="o">.</span><span class="n">keys</span><span class="p">())[</span><span class="n">zero_crossing</span> <span class="o">-</span> <span class="n">fit_range</span><span class="p">:</span>
</span><span id="L-17"><a href="#L-17"><span class="linenos"> 17</span></a> <span class="n">zero_crossing</span> <span class="o">+</span> <span class="n">fit_range</span><span class="p">]</span>
</span><span id="L-18"><a href="#L-18"><span class="linenos"> 18</span></a> <span class="n">y</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">t2E_dict</span><span class="o">.</span><span class="n">values</span><span class="p">())[</span><span class="n">zero_crossing</span> <span class="o">-</span> <span class="n">fit_range</span><span class="p">:</span>
</span><span id="L-19"><a href="#L-19"><span class="linenos"> 19</span></a> <span class="n">zero_crossing</span> <span class="o">+</span> <span class="n">fit_range</span><span class="p">]</span>
</span><span id="L-20"><a href="#L-20"><span class="linenos"> 20</span></a> <span class="p">[</span><span class="n">o</span><span class="o">.</span><span class="n">gamma_method</span><span class="p">()</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">y</span><span class="p">]</span>
</span><span id="L-21"><a href="#L-21"><span class="linenos"> 21</span></a>
</span><span id="L-22"><a href="#L-22"><span class="linenos"> 22</span></a> <span class="n">fit_result</span> <span class="o">=</span> <span class="n">fit_lin</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
</span><span id="L-12"><a href="#L-12"><span class="linenos"> 12</span></a>
</span><span id="L-13"><a href="#L-13"><span class="linenos"> 13</span></a><span class="k">def</span> <span class="nf">fit_t0</span><span class="p">(</span><span class="n">t2E_dict</span><span class="p">,</span> <span class="n">fit_range</span><span class="p">,</span> <span class="n">plot_fit</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">observable</span><span class="o">=</span><span class="s1">&#39;t0&#39;</span><span class="p">):</span>
</span><span id="L-14"><a href="#L-14"><span class="linenos"> 14</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Compute the root of (flow-based) data based on a dictionary that contains</span>
</span><span id="L-15"><a href="#L-15"><span class="linenos"> 15</span></a><span class="sd"> the necessary information in key-value pairs a la (flow time: observable at flow time).</span>
</span><span id="L-16"><a href="#L-16"><span class="linenos"> 16</span></a>
</span><span id="L-17"><a href="#L-17"><span class="linenos"> 17</span></a><span class="sd"> It is assumed that the data is monotonically increasing and passes zero from below.</span>
</span><span id="L-18"><a href="#L-18"><span class="linenos"> 18</span></a><span class="sd"> No exception is thrown if this is not the case (several roots, no monotonic increase).</span>
</span><span id="L-19"><a href="#L-19"><span class="linenos"> 19</span></a><span class="sd"> An exception is thrown if no root can be found in the data.</span>
</span><span id="L-20"><a href="#L-20"><span class="linenos"> 20</span></a>
</span><span id="L-21"><a href="#L-21"><span class="linenos"> 21</span></a><span class="sd"> A linear fit in the vicinity of the root is performed to exctract the root from the</span>
</span><span id="L-22"><a href="#L-22"><span class="linenos"> 22</span></a><span class="sd"> two fit parameters.</span>
</span><span id="L-23"><a href="#L-23"><span class="linenos"> 23</span></a>
</span><span id="L-24"><a href="#L-24"><span class="linenos"> 24</span></a> <span class="k">if</span> <span class="n">plot_fit</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span>
</span><span id="L-25"><a href="#L-25"><span class="linenos"> 25</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span>
</span><span id="L-26"><a href="#L-26"><span class="linenos"> 26</span></a> <span class="n">gs</span> <span class="o">=</span> <span class="n">gridspec</span><span class="o">.</span><span class="n">GridSpec</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">height_ratios</span><span class="o">=</span><span class="p">[</span><span class="mi">3</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="n">wspace</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">hspace</span><span class="o">=</span><span class="mf">0.0</span><span class="p">)</span>
</span><span id="L-27"><a href="#L-27"><span class="linenos"> 27</span></a> <span class="n">ax0</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplot</span><span class="p">(</span><span class="n">gs</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
</span><span id="L-28"><a href="#L-28"><span class="linenos"> 28</span></a> <span class="n">xmore</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">t2E_dict</span><span class="o">.</span><span class="n">keys</span><span class="p">())[</span><span class="n">zero_crossing</span> <span class="o">-</span> <span class="n">fit_range</span> <span class="o">-</span> <span class="mi">2</span><span class="p">:</span> <span class="n">zero_crossing</span> <span class="o">+</span> <span class="n">fit_range</span> <span class="o">+</span> <span class="mi">2</span><span class="p">]</span>
</span><span id="L-29"><a href="#L-29"><span class="linenos"> 29</span></a> <span class="n">ymore</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">t2E_dict</span><span class="o">.</span><span class="n">values</span><span class="p">())[</span><span class="n">zero_crossing</span> <span class="o">-</span> <span class="n">fit_range</span> <span class="o">-</span> <span class="mi">2</span><span class="p">:</span> <span class="n">zero_crossing</span> <span class="o">+</span> <span class="n">fit_range</span> <span class="o">+</span> <span class="mi">2</span><span class="p">]</span>
</span><span id="L-30"><a href="#L-30"><span class="linenos"> 30</span></a> <span class="p">[</span><span class="n">o</span><span class="o">.</span><span class="n">gamma_method</span><span class="p">()</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">ymore</span><span class="p">]</span>
</span><span id="L-31"><a href="#L-31"><span class="linenos"> 31</span></a> <span class="n">ax0</span><span class="o">.</span><span class="n">errorbar</span><span class="p">(</span><span class="n">xmore</span><span class="p">,</span> <span class="p">[</span><span class="n">yi</span><span class="o">.</span><span class="n">value</span> <span class="k">for</span> <span class="n">yi</span> <span class="ow">in</span> <span class="n">ymore</span><span class="p">],</span> <span class="n">yerr</span><span class="o">=</span><span class="p">[</span><span class="n">yi</span><span class="o">.</span><span class="n">dvalue</span> <span class="k">for</span> <span class="n">yi</span> <span class="ow">in</span> <span class="n">ymore</span><span class="p">],</span> <span class="n">fmt</span><span class="o">=</span><span class="s1">&#39;x&#39;</span><span class="p">)</span>
</span><span id="L-32"><a href="#L-32"><span class="linenos"> 32</span></a> <span class="n">xplot</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">x</span><span class="p">),</span> <span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">x</span><span class="p">))</span>
</span><span id="L-33"><a href="#L-33"><span class="linenos"> 33</span></a> <span class="n">yplot</span> <span class="o">=</span> <span class="p">[</span><span class="n">fit_result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="n">fit_result</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">*</span> <span class="n">xi</span> <span class="k">for</span> <span class="n">xi</span> <span class="ow">in</span> <span class="n">xplot</span><span class="p">]</span>
</span><span id="L-34"><a href="#L-34"><span class="linenos"> 34</span></a> <span class="p">[</span><span class="n">yi</span><span class="o">.</span><span class="n">gamma_method</span><span class="p">()</span> <span class="k">for</span> <span class="n">yi</span> <span class="ow">in</span> <span class="n">yplot</span><span class="p">]</span>
</span><span id="L-35"><a href="#L-35"><span class="linenos"> 35</span></a> <span class="n">ax0</span><span class="o">.</span><span class="n">fill_between</span><span class="p">(</span><span class="n">xplot</span><span class="p">,</span> <span class="n">y1</span><span class="o">=</span><span class="p">[</span><span class="n">yi</span><span class="o">.</span><span class="n">value</span> <span class="o">-</span> <span class="n">yi</span><span class="o">.</span><span class="n">dvalue</span> <span class="k">for</span> <span class="n">yi</span> <span class="ow">in</span> <span class="n">yplot</span><span class="p">],</span> <span class="n">y2</span><span class="o">=</span><span class="p">[</span><span class="n">yi</span><span class="o">.</span><span class="n">value</span> <span class="o">+</span> <span class="n">yi</span><span class="o">.</span><span class="n">dvalue</span> <span class="k">for</span> <span class="n">yi</span> <span class="ow">in</span> <span class="n">yplot</span><span class="p">])</span>
</span><span id="L-36"><a href="#L-36"><span class="linenos"> 36</span></a> <span class="n">retval</span> <span class="o">=</span> <span class="p">(</span><span class="o">-</span><span class="n">fit_result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">/</span> <span class="n">fit_result</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
</span><span id="L-37"><a href="#L-37"><span class="linenos"> 37</span></a> <span class="n">retval</span><span class="o">.</span><span class="n">gamma_method</span><span class="p">()</span>
</span><span id="L-38"><a href="#L-38"><span class="linenos"> 38</span></a> <span class="n">ylim</span> <span class="o">=</span> <span class="n">ax0</span><span class="o">.</span><span class="n">get_ylim</span><span class="p">()</span>
</span><span id="L-39"><a href="#L-39"><span class="linenos"> 39</span></a> <span class="n">ax0</span><span class="o">.</span><span class="n">fill_betweenx</span><span class="p">(</span><span class="n">ylim</span><span class="p">,</span> <span class="n">x1</span><span class="o">=</span><span class="n">retval</span><span class="o">.</span><span class="n">value</span> <span class="o">-</span> <span class="n">retval</span><span class="o">.</span><span class="n">dvalue</span><span class="p">,</span> <span class="n">x2</span><span class="o">=</span><span class="n">retval</span><span class="o">.</span><span class="n">value</span> <span class="o">+</span> <span class="n">retval</span><span class="o">.</span><span class="n">dvalue</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s1">&#39;gray&#39;</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.4</span><span class="p">)</span>
</span><span id="L-40"><a href="#L-40"><span class="linenos"> 40</span></a> <span class="n">ax0</span><span class="o">.</span><span class="n">set_ylim</span><span class="p">(</span><span class="n">ylim</span><span class="p">)</span>
</span><span id="L-41"><a href="#L-41"><span class="linenos"> 41</span></a> <span class="n">ax0</span><span class="o">.</span><span class="n">set_ylabel</span><span class="p">(</span><span class="sa">r</span><span class="s1">&#39;$t^2 \langle E(t) \rangle - 0.3 $&#39;</span><span class="p">)</span>
</span><span id="L-42"><a href="#L-42"><span class="linenos"> 42</span></a> <span class="n">xlim</span> <span class="o">=</span> <span class="n">ax0</span><span class="o">.</span><span class="n">get_xlim</span><span class="p">()</span>
</span><span id="L-24"><a href="#L-24"><span class="linenos"> 24</span></a><span class="sd"> Parameters</span>
</span><span id="L-25"><a href="#L-25"><span class="linenos"> 25</span></a><span class="sd"> ----------</span>
</span><span id="L-26"><a href="#L-26"><span class="linenos"> 26</span></a><span class="sd"> t2E_dict : dict</span>
</span><span id="L-27"><a href="#L-27"><span class="linenos"> 27</span></a><span class="sd"> Dictionary with pairs of (flow time: observable at flow time) where the flow times</span>
</span><span id="L-28"><a href="#L-28"><span class="linenos"> 28</span></a><span class="sd"> are of type float and the observables of type Obs.</span>
</span><span id="L-29"><a href="#L-29"><span class="linenos"> 29</span></a><span class="sd"> fit_range : int</span>
</span><span id="L-30"><a href="#L-30"><span class="linenos"> 30</span></a><span class="sd"> Number of data points left and right of the zero</span>
</span><span id="L-31"><a href="#L-31"><span class="linenos"> 31</span></a><span class="sd"> crossing to be included in the linear fit.</span>
</span><span id="L-32"><a href="#L-32"><span class="linenos"> 32</span></a><span class="sd"> plot_fit : bool</span>
</span><span id="L-33"><a href="#L-33"><span class="linenos"> 33</span></a><span class="sd"> If true, the fit for the extraction of t0 is shown together with the data. (Default: False)</span>
</span><span id="L-34"><a href="#L-34"><span class="linenos"> 34</span></a><span class="sd"> observable: str</span>
</span><span id="L-35"><a href="#L-35"><span class="linenos"> 35</span></a><span class="sd"> Keyword to identify the observable to print the correct ylabel (if plot_fit is True)</span>
</span><span id="L-36"><a href="#L-36"><span class="linenos"> 36</span></a><span class="sd"> for the observables &#39;t0&#39; and &#39;w0&#39;. No y label is printed otherwise. (Default: &#39;t0&#39;)</span>
</span><span id="L-37"><a href="#L-37"><span class="linenos"> 37</span></a>
</span><span id="L-38"><a href="#L-38"><span class="linenos"> 38</span></a><span class="sd"> Returns</span>
</span><span id="L-39"><a href="#L-39"><span class="linenos"> 39</span></a><span class="sd"> -------</span>
</span><span id="L-40"><a href="#L-40"><span class="linenos"> 40</span></a><span class="sd"> root : Obs</span>
</span><span id="L-41"><a href="#L-41"><span class="linenos"> 41</span></a><span class="sd"> The root of the data series.</span>
</span><span id="L-42"><a href="#L-42"><span class="linenos"> 42</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-43"><a href="#L-43"><span class="linenos"> 43</span></a>
</span><span id="L-44"><a href="#L-44"><span class="linenos"> 44</span></a> <span class="n">fit_res</span> <span class="o">=</span> <span class="p">[</span><span class="n">fit_result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="n">fit_result</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">*</span> <span class="n">xi</span> <span class="k">for</span> <span class="n">xi</span> <span class="ow">in</span> <span class="n">x</span><span class="p">]</span>
</span><span id="L-45"><a href="#L-45"><span class="linenos"> 45</span></a> <span class="n">residuals</span> <span class="o">=</span> <span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">([</span><span class="n">o</span><span class="o">.</span><span class="n">value</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">y</span><span class="p">])</span> <span class="o">-</span> <span class="p">[</span><span class="n">o</span><span class="o">.</span><span class="n">value</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">fit_res</span><span class="p">])</span> <span class="o">/</span> <span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">([</span><span class="n">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">y</span><span class="p">])</span>
</span><span id="L-46"><a href="#L-46"><span class="linenos"> 46</span></a> <span class="n">ax1</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplot</span><span class="p">(</span><span class="n">gs</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
</span><span id="L-47"><a href="#L-47"><span class="linenos"> 47</span></a> <span class="n">ax1</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">residuals</span><span class="p">,</span> <span class="s1">&#39;ko&#39;</span><span class="p">,</span> <span class="n">ls</span><span class="o">=</span><span class="s1">&#39;none&#39;</span><span class="p">,</span> <span class="n">markersize</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span>
</span><span id="L-48"><a href="#L-48"><span class="linenos"> 48</span></a> <span class="n">ax1</span><span class="o">.</span><span class="n">tick_params</span><span class="p">(</span><span class="n">direction</span><span class="o">=</span><span class="s1">&#39;out&#39;</span><span class="p">)</span>
</span><span id="L-49"><a href="#L-49"><span class="linenos"> 49</span></a> <span class="n">ax1</span><span class="o">.</span><span class="n">tick_params</span><span class="p">(</span><span class="n">axis</span><span class="o">=</span><span class="s2">&quot;x&quot;</span><span class="p">,</span> <span class="n">bottom</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">top</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">labelbottom</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span><span id="L-50"><a href="#L-50"><span class="linenos"> 50</span></a> <span class="n">ax1</span><span class="o">.</span><span class="n">axhline</span><span class="p">(</span><span class="n">y</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">ls</span><span class="o">=</span><span class="s1">&#39;--&#39;</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s1">&#39;k&#39;</span><span class="p">)</span>
</span><span id="L-51"><a href="#L-51"><span class="linenos"> 51</span></a> <span class="n">ax1</span><span class="o">.</span><span class="n">fill_between</span><span class="p">(</span><span class="n">xlim</span><span class="p">,</span> <span class="o">-</span><span class="mf">1.0</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.1</span><span class="p">,</span> <span class="n">facecolor</span><span class="o">=</span><span class="s1">&#39;k&#39;</span><span class="p">)</span>
</span><span id="L-52"><a href="#L-52"><span class="linenos"> 52</span></a> <span class="n">ax1</span><span class="o">.</span><span class="n">set_xlim</span><span class="p">(</span><span class="n">xlim</span><span class="p">)</span>
</span><span id="L-53"><a href="#L-53"><span class="linenos"> 53</span></a> <span class="n">ax1</span><span class="o">.</span><span class="n">set_ylabel</span><span class="p">(</span><span class="s1">&#39;Residuals&#39;</span><span class="p">)</span>
</span><span id="L-54"><a href="#L-54"><span class="linenos"> 54</span></a> <span class="n">ax1</span><span class="o">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="sa">r</span><span class="s1">&#39;$t/a^2$&#39;</span><span class="p">)</span>
</span><span id="L-44"><a href="#L-44"><span class="linenos"> 44</span></a> <span class="n">zero_crossing</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">argmax</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span>
</span><span id="L-45"><a href="#L-45"><span class="linenos"> 45</span></a> <span class="p">[</span><span class="n">o</span><span class="o">.</span><span class="n">value</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">t2E_dict</span><span class="o">.</span><span class="n">values</span><span class="p">()])</span> <span class="o">&gt;</span> <span class="mf">0.0</span><span class="p">)</span>
</span><span id="L-46"><a href="#L-46"><span class="linenos"> 46</span></a>
</span><span id="L-47"><a href="#L-47"><span class="linenos"> 47</span></a> <span class="k">if</span> <span class="n">zero_crossing</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
</span><span id="L-48"><a href="#L-48"><span class="linenos"> 48</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;Desired flow time not in data&#39;</span><span class="p">)</span>
</span><span id="L-49"><a href="#L-49"><span class="linenos"> 49</span></a>
</span><span id="L-50"><a href="#L-50"><span class="linenos"> 50</span></a> <span class="n">x</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">t2E_dict</span><span class="o">.</span><span class="n">keys</span><span class="p">())[</span><span class="n">zero_crossing</span> <span class="o">-</span> <span class="n">fit_range</span><span class="p">:</span>
</span><span id="L-51"><a href="#L-51"><span class="linenos"> 51</span></a> <span class="n">zero_crossing</span> <span class="o">+</span> <span class="n">fit_range</span><span class="p">]</span>
</span><span id="L-52"><a href="#L-52"><span class="linenos"> 52</span></a> <span class="n">y</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">t2E_dict</span><span class="o">.</span><span class="n">values</span><span class="p">())[</span><span class="n">zero_crossing</span> <span class="o">-</span> <span class="n">fit_range</span><span class="p">:</span>
</span><span id="L-53"><a href="#L-53"><span class="linenos"> 53</span></a> <span class="n">zero_crossing</span> <span class="o">+</span> <span class="n">fit_range</span><span class="p">]</span>
</span><span id="L-54"><a href="#L-54"><span class="linenos"> 54</span></a> <span class="p">[</span><span class="n">o</span><span class="o">.</span><span class="n">gamma_method</span><span class="p">()</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">y</span><span class="p">]</span>
</span><span id="L-55"><a href="#L-55"><span class="linenos"> 55</span></a>
</span><span id="L-56"><a href="#L-56"><span class="linenos"> 56</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">draw</span><span class="p">()</span>
</span><span id="L-57"><a href="#L-57"><span class="linenos"> 57</span></a> <span class="k">return</span> <span class="o">-</span><span class="n">fit_result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">/</span> <span class="n">fit_result</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
</span><span id="L-56"><a href="#L-56"><span class="linenos"> 56</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">fit_range</span><span class="p">:</span>
</span><span id="L-57"><a href="#L-57"><span class="linenos"> 57</span></a> <span class="n">warnings</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="s1">&#39;Fit range smaller than expected! Fitting from </span><span class="si">%1.2e</span><span class="s1"> to </span><span class="si">%1.2e</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">x</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]))</span>
</span><span id="L-58"><a href="#L-58"><span class="linenos"> 58</span></a>
</span><span id="L-59"><a href="#L-59"><span class="linenos"> 59</span></a>
</span><span id="L-60"><a href="#L-60"><span class="linenos"> 60</span></a><span class="k">def</span> <span class="nf">read_pbp</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">prefix</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="L-61"><a href="#L-61"><span class="linenos"> 61</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Read pbp format from given folder structure.</span>
</span><span id="L-62"><a href="#L-62"><span class="linenos"> 62</span></a>
</span><span id="L-63"><a href="#L-63"><span class="linenos"> 63</span></a><span class="sd"> Parameters</span>
</span><span id="L-64"><a href="#L-64"><span class="linenos"> 64</span></a><span class="sd"> ----------</span>
</span><span id="L-65"><a href="#L-65"><span class="linenos"> 65</span></a><span class="sd"> r_start : list</span>
</span><span id="L-66"><a href="#L-66"><span class="linenos"> 66</span></a><span class="sd"> list which contains the first config to be read for each replicum</span>
</span><span id="L-67"><a href="#L-67"><span class="linenos"> 67</span></a><span class="sd"> r_stop : list</span>
</span><span id="L-68"><a href="#L-68"><span class="linenos"> 68</span></a><span class="sd"> list which contains the last config to be read for each replicum</span>
</span><span id="L-69"><a href="#L-69"><span class="linenos"> 69</span></a>
</span><span id="L-70"><a href="#L-70"><span class="linenos"> 70</span></a><span class="sd"> Returns</span>
</span><span id="L-71"><a href="#L-71"><span class="linenos"> 71</span></a><span class="sd"> -------</span>
</span><span id="L-72"><a href="#L-72"><span class="linenos"> 72</span></a><span class="sd"> result : list[Obs]</span>
</span><span id="L-73"><a href="#L-73"><span class="linenos"> 73</span></a><span class="sd"> list of observables read</span>
</span><span id="L-74"><a href="#L-74"><span class="linenos"> 74</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-75"><a href="#L-75"><span class="linenos"> 75</span></a>
</span><span id="L-76"><a href="#L-76"><span class="linenos"> 76</span></a> <span class="n">ls</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="L-77"><a href="#L-77"><span class="linenos"> 77</span></a> <span class="k">for</span> <span class="p">(</span><span class="n">dirpath</span><span class="p">,</span> <span class="n">dirnames</span><span class="p">,</span> <span class="n">filenames</span><span class="p">)</span> <span class="ow">in</span> <span class="n">os</span><span class="o">.</span><span class="n">walk</span><span class="p">(</span><span class="n">path</span><span class="p">):</span>
</span><span id="L-78"><a href="#L-78"><span class="linenos"> 78</span></a> <span class="n">ls</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">filenames</span><span class="p">)</span>
</span><span id="L-79"><a href="#L-79"><span class="linenos"> 79</span></a> <span class="k">break</span>
</span><span id="L-80"><a href="#L-80"><span class="linenos"> 80</span></a>
</span><span id="L-81"><a href="#L-81"><span class="linenos"> 81</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">ls</span><span class="p">:</span>
</span><span id="L-82"><a href="#L-82"><span class="linenos"> 82</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;Error, directory not found&#39;</span><span class="p">)</span>
</span><span id="L-59"><a href="#L-59"><span class="linenos"> 59</span></a> <span class="n">fit_result</span> <span class="o">=</span> <span class="n">fit_lin</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
</span><span id="L-60"><a href="#L-60"><span class="linenos"> 60</span></a>
</span><span id="L-61"><a href="#L-61"><span class="linenos"> 61</span></a> <span class="k">if</span> <span class="n">plot_fit</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span>
</span><span id="L-62"><a href="#L-62"><span class="linenos"> 62</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span>
</span><span id="L-63"><a href="#L-63"><span class="linenos"> 63</span></a> <span class="n">gs</span> <span class="o">=</span> <span class="n">gridspec</span><span class="o">.</span><span class="n">GridSpec</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">height_ratios</span><span class="o">=</span><span class="p">[</span><span class="mi">3</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="n">wspace</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">hspace</span><span class="o">=</span><span class="mf">0.0</span><span class="p">)</span>
</span><span id="L-64"><a href="#L-64"><span class="linenos"> 64</span></a> <span class="n">ax0</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplot</span><span class="p">(</span><span class="n">gs</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
</span><span id="L-65"><a href="#L-65"><span class="linenos"> 65</span></a> <span class="n">xmore</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">t2E_dict</span><span class="o">.</span><span class="n">keys</span><span class="p">())[</span><span class="n">zero_crossing</span> <span class="o">-</span> <span class="n">fit_range</span> <span class="o">-</span> <span class="mi">2</span><span class="p">:</span> <span class="n">zero_crossing</span> <span class="o">+</span> <span class="n">fit_range</span> <span class="o">+</span> <span class="mi">2</span><span class="p">]</span>
</span><span id="L-66"><a href="#L-66"><span class="linenos"> 66</span></a> <span class="n">ymore</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">t2E_dict</span><span class="o">.</span><span class="n">values</span><span class="p">())[</span><span class="n">zero_crossing</span> <span class="o">-</span> <span class="n">fit_range</span> <span class="o">-</span> <span class="mi">2</span><span class="p">:</span> <span class="n">zero_crossing</span> <span class="o">+</span> <span class="n">fit_range</span> <span class="o">+</span> <span class="mi">2</span><span class="p">]</span>
</span><span id="L-67"><a href="#L-67"><span class="linenos"> 67</span></a> <span class="p">[</span><span class="n">o</span><span class="o">.</span><span class="n">gamma_method</span><span class="p">()</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">ymore</span><span class="p">]</span>
</span><span id="L-68"><a href="#L-68"><span class="linenos"> 68</span></a> <span class="n">ax0</span><span class="o">.</span><span class="n">errorbar</span><span class="p">(</span><span class="n">xmore</span><span class="p">,</span> <span class="p">[</span><span class="n">yi</span><span class="o">.</span><span class="n">value</span> <span class="k">for</span> <span class="n">yi</span> <span class="ow">in</span> <span class="n">ymore</span><span class="p">],</span> <span class="n">yerr</span><span class="o">=</span><span class="p">[</span><span class="n">yi</span><span class="o">.</span><span class="n">dvalue</span> <span class="k">for</span> <span class="n">yi</span> <span class="ow">in</span> <span class="n">ymore</span><span class="p">],</span> <span class="n">fmt</span><span class="o">=</span><span class="s1">&#39;x&#39;</span><span class="p">)</span>
</span><span id="L-69"><a href="#L-69"><span class="linenos"> 69</span></a> <span class="n">xplot</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">x</span><span class="p">),</span> <span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">x</span><span class="p">))</span>
</span><span id="L-70"><a href="#L-70"><span class="linenos"> 70</span></a> <span class="n">yplot</span> <span class="o">=</span> <span class="p">[</span><span class="n">fit_result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="n">fit_result</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">*</span> <span class="n">xi</span> <span class="k">for</span> <span class="n">xi</span> <span class="ow">in</span> <span class="n">xplot</span><span class="p">]</span>
</span><span id="L-71"><a href="#L-71"><span class="linenos"> 71</span></a> <span class="p">[</span><span class="n">yi</span><span class="o">.</span><span class="n">gamma_method</span><span class="p">()</span> <span class="k">for</span> <span class="n">yi</span> <span class="ow">in</span> <span class="n">yplot</span><span class="p">]</span>
</span><span id="L-72"><a href="#L-72"><span class="linenos"> 72</span></a> <span class="n">ax0</span><span class="o">.</span><span class="n">fill_between</span><span class="p">(</span><span class="n">xplot</span><span class="p">,</span> <span class="n">y1</span><span class="o">=</span><span class="p">[</span><span class="n">yi</span><span class="o">.</span><span class="n">value</span> <span class="o">-</span> <span class="n">yi</span><span class="o">.</span><span class="n">dvalue</span> <span class="k">for</span> <span class="n">yi</span> <span class="ow">in</span> <span class="n">yplot</span><span class="p">],</span> <span class="n">y2</span><span class="o">=</span><span class="p">[</span><span class="n">yi</span><span class="o">.</span><span class="n">value</span> <span class="o">+</span> <span class="n">yi</span><span class="o">.</span><span class="n">dvalue</span> <span class="k">for</span> <span class="n">yi</span> <span class="ow">in</span> <span class="n">yplot</span><span class="p">])</span>
</span><span id="L-73"><a href="#L-73"><span class="linenos"> 73</span></a> <span class="n">retval</span> <span class="o">=</span> <span class="p">(</span><span class="o">-</span><span class="n">fit_result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">/</span> <span class="n">fit_result</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
</span><span id="L-74"><a href="#L-74"><span class="linenos"> 74</span></a> <span class="n">retval</span><span class="o">.</span><span class="n">gamma_method</span><span class="p">()</span>
</span><span id="L-75"><a href="#L-75"><span class="linenos"> 75</span></a> <span class="n">ylim</span> <span class="o">=</span> <span class="n">ax0</span><span class="o">.</span><span class="n">get_ylim</span><span class="p">()</span>
</span><span id="L-76"><a href="#L-76"><span class="linenos"> 76</span></a> <span class="n">ax0</span><span class="o">.</span><span class="n">fill_betweenx</span><span class="p">(</span><span class="n">ylim</span><span class="p">,</span> <span class="n">x1</span><span class="o">=</span><span class="n">retval</span><span class="o">.</span><span class="n">value</span> <span class="o">-</span> <span class="n">retval</span><span class="o">.</span><span class="n">dvalue</span><span class="p">,</span> <span class="n">x2</span><span class="o">=</span><span class="n">retval</span><span class="o">.</span><span class="n">value</span> <span class="o">+</span> <span class="n">retval</span><span class="o">.</span><span class="n">dvalue</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s1">&#39;gray&#39;</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.4</span><span class="p">)</span>
</span><span id="L-77"><a href="#L-77"><span class="linenos"> 77</span></a> <span class="n">ax0</span><span class="o">.</span><span class="n">set_ylim</span><span class="p">(</span><span class="n">ylim</span><span class="p">)</span>
</span><span id="L-78"><a href="#L-78"><span class="linenos"> 78</span></a> <span class="k">if</span> <span class="n">observable</span> <span class="o">==</span> <span class="s1">&#39;t0&#39;</span><span class="p">:</span>
</span><span id="L-79"><a href="#L-79"><span class="linenos"> 79</span></a> <span class="n">ax0</span><span class="o">.</span><span class="n">set_ylabel</span><span class="p">(</span><span class="sa">r</span><span class="s1">&#39;$t^2 \langle E(t) \rangle - 0.3 $&#39;</span><span class="p">)</span>
</span><span id="L-80"><a href="#L-80"><span class="linenos"> 80</span></a> <span class="k">elif</span> <span class="n">observable</span> <span class="o">==</span> <span class="s1">&#39;w0&#39;</span><span class="p">:</span>
</span><span id="L-81"><a href="#L-81"><span class="linenos"> 81</span></a> <span class="n">ax0</span><span class="o">.</span><span class="n">set_ylabel</span><span class="p">(</span><span class="sa">r</span><span class="s1">&#39;$t d(t^2 \langle E(t) \rangle)/dt - 0.3 $&#39;</span><span class="p">)</span>
</span><span id="L-82"><a href="#L-82"><span class="linenos"> 82</span></a> <span class="n">xlim</span> <span class="o">=</span> <span class="n">ax0</span><span class="o">.</span><span class="n">get_xlim</span><span class="p">()</span>
</span><span id="L-83"><a href="#L-83"><span class="linenos"> 83</span></a>
</span><span id="L-84"><a href="#L-84"><span class="linenos"> 84</span></a> <span class="c1"># Exclude files with different names</span>
</span><span id="L-85"><a href="#L-85"><span class="linenos"> 85</span></a> <span class="k">for</span> <span class="n">exc</span> <span class="ow">in</span> <span class="n">ls</span><span class="p">:</span>
</span><span id="L-86"><a href="#L-86"><span class="linenos"> 86</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">fnmatch</span><span class="o">.</span><span class="n">fnmatch</span><span class="p">(</span><span class="n">exc</span><span class="p">,</span> <span class="n">prefix</span> <span class="o">+</span> <span class="s1">&#39;*.dat&#39;</span><span class="p">):</span>
</span><span id="L-87"><a href="#L-87"><span class="linenos"> 87</span></a> <span class="n">ls</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">ls</span><span class="p">)</span> <span class="o">-</span> <span class="nb">set</span><span class="p">([</span><span class="n">exc</span><span class="p">]))</span>
</span><span id="L-88"><a href="#L-88"><span class="linenos"> 88</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">ls</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="L-89"><a href="#L-89"><span class="linenos"> 89</span></a> <span class="n">ls</span><span class="o">.</span><span class="n">sort</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="nb">int</span><span class="p">(</span><span class="n">re</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="sa">r</span><span class="s1">&#39;\d+&#39;</span><span class="p">,</span> <span class="n">x</span><span class="p">[</span><span class="nb">len</span><span class="p">(</span><span class="n">prefix</span><span class="p">):])[</span><span class="mi">0</span><span class="p">]))</span>
</span><span id="L-90"><a href="#L-90"><span class="linenos"> 90</span></a> <span class="n">replica</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">ls</span><span class="p">)</span>
</span><span id="L-91"><a href="#L-91"><span class="linenos"> 91</span></a>
</span><span id="L-92"><a href="#L-92"><span class="linenos"> 92</span></a> <span class="k">if</span> <span class="s1">&#39;r_start&#39;</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
</span><span id="L-93"><a href="#L-93"><span class="linenos"> 93</span></a> <span class="n">r_start</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;r_start&#39;</span><span class="p">)</span>
</span><span id="L-94"><a href="#L-94"><span class="linenos"> 94</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">r_start</span><span class="p">)</span> <span class="o">!=</span> <span class="n">replica</span><span class="p">:</span>
</span><span id="L-95"><a href="#L-95"><span class="linenos"> 95</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;r_start does not match number of replicas&#39;</span><span class="p">)</span>
</span><span id="L-96"><a href="#L-96"><span class="linenos"> 96</span></a> <span class="c1"># Adjust Configuration numbering to python index</span>
</span><span id="L-97"><a href="#L-97"><span class="linenos"> 97</span></a> <span class="n">r_start</span> <span class="o">=</span> <span class="p">[</span><span class="n">o</span> <span class="o">-</span> <span class="mi">1</span> <span class="k">if</span> <span class="n">o</span> <span class="k">else</span> <span class="kc">None</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">r_start</span><span class="p">]</span>
</span><span id="L-98"><a href="#L-98"><span class="linenos"> 98</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-99"><a href="#L-99"><span class="linenos"> 99</span></a> <span class="n">r_start</span> <span class="o">=</span> <span class="p">[</span><span class="kc">None</span><span class="p">]</span> <span class="o">*</span> <span class="n">replica</span>
</span><span id="L-100"><a href="#L-100"><span class="linenos">100</span></a>
</span><span id="L-101"><a href="#L-101"><span class="linenos">101</span></a> <span class="k">if</span> <span class="s1">&#39;r_stop&#39;</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
</span><span id="L-102"><a href="#L-102"><span class="linenos">102</span></a> <span class="n">r_stop</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;r_stop&#39;</span><span class="p">)</span>
</span><span id="L-103"><a href="#L-103"><span class="linenos">103</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">r_stop</span><span class="p">)</span> <span class="o">!=</span> <span class="n">replica</span><span class="p">:</span>
</span><span id="L-104"><a href="#L-104"><span class="linenos">104</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;r_stop does not match number of replicas&#39;</span><span class="p">)</span>
</span><span id="L-105"><a href="#L-105"><span class="linenos">105</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-106"><a href="#L-106"><span class="linenos">106</span></a> <span class="n">r_stop</span> <span class="o">=</span> <span class="p">[</span><span class="kc">None</span><span class="p">]</span> <span class="o">*</span> <span class="n">replica</span>
</span><span id="L-107"><a href="#L-107"><span class="linenos">107</span></a>
</span><span id="L-108"><a href="#L-108"><span class="linenos">108</span></a> <span class="nb">print</span><span class="p">(</span><span class="sa">r</span><span class="s1">&#39;Read &lt;bar</span><span class="si">{psi}</span><span class="s1">\psi&gt; from&#39;</span><span class="p">,</span> <span class="n">prefix</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> <span class="s1">&#39;,&#39;</span><span class="p">,</span> <span class="n">replica</span><span class="p">,</span> <span class="s1">&#39;replica&#39;</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="p">)</span>
</span><span id="L-84"><a href="#L-84"><span class="linenos"> 84</span></a> <span class="n">fit_res</span> <span class="o">=</span> <span class="p">[</span><span class="n">fit_result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="n">fit_result</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">*</span> <span class="n">xi</span> <span class="k">for</span> <span class="n">xi</span> <span class="ow">in</span> <span class="n">x</span><span class="p">]</span>
</span><span id="L-85"><a href="#L-85"><span class="linenos"> 85</span></a> <span class="n">residuals</span> <span class="o">=</span> <span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">([</span><span class="n">o</span><span class="o">.</span><span class="n">value</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">y</span><span class="p">])</span> <span class="o">-</span> <span class="p">[</span><span class="n">o</span><span class="o">.</span><span class="n">value</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">fit_res</span><span class="p">])</span> <span class="o">/</span> <span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">([</span><span class="n">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">y</span><span class="p">])</span>
</span><span id="L-86"><a href="#L-86"><span class="linenos"> 86</span></a> <span class="n">ax1</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplot</span><span class="p">(</span><span class="n">gs</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
</span><span id="L-87"><a href="#L-87"><span class="linenos"> 87</span></a> <span class="n">ax1</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">residuals</span><span class="p">,</span> <span class="s1">&#39;ko&#39;</span><span class="p">,</span> <span class="n">ls</span><span class="o">=</span><span class="s1">&#39;none&#39;</span><span class="p">,</span> <span class="n">markersize</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span>
</span><span id="L-88"><a href="#L-88"><span class="linenos"> 88</span></a> <span class="n">ax1</span><span class="o">.</span><span class="n">tick_params</span><span class="p">(</span><span class="n">direction</span><span class="o">=</span><span class="s1">&#39;out&#39;</span><span class="p">)</span>
</span><span id="L-89"><a href="#L-89"><span class="linenos"> 89</span></a> <span class="n">ax1</span><span class="o">.</span><span class="n">tick_params</span><span class="p">(</span><span class="n">axis</span><span class="o">=</span><span class="s2">&quot;x&quot;</span><span class="p">,</span> <span class="n">bottom</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">top</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">labelbottom</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span><span id="L-90"><a href="#L-90"><span class="linenos"> 90</span></a> <span class="n">ax1</span><span class="o">.</span><span class="n">axhline</span><span class="p">(</span><span class="n">y</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">ls</span><span class="o">=</span><span class="s1">&#39;--&#39;</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s1">&#39;k&#39;</span><span class="p">)</span>
</span><span id="L-91"><a href="#L-91"><span class="linenos"> 91</span></a> <span class="n">ax1</span><span class="o">.</span><span class="n">fill_between</span><span class="p">(</span><span class="n">xlim</span><span class="p">,</span> <span class="o">-</span><span class="mf">1.0</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.1</span><span class="p">,</span> <span class="n">facecolor</span><span class="o">=</span><span class="s1">&#39;k&#39;</span><span class="p">)</span>
</span><span id="L-92"><a href="#L-92"><span class="linenos"> 92</span></a> <span class="n">ax1</span><span class="o">.</span><span class="n">set_xlim</span><span class="p">(</span><span class="n">xlim</span><span class="p">)</span>
</span><span id="L-93"><a href="#L-93"><span class="linenos"> 93</span></a> <span class="n">ax1</span><span class="o">.</span><span class="n">set_ylabel</span><span class="p">(</span><span class="s1">&#39;Residuals&#39;</span><span class="p">)</span>
</span><span id="L-94"><a href="#L-94"><span class="linenos"> 94</span></a> <span class="n">ax1</span><span class="o">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="sa">r</span><span class="s1">&#39;$t/a^2$&#39;</span><span class="p">)</span>
</span><span id="L-95"><a href="#L-95"><span class="linenos"> 95</span></a>
</span><span id="L-96"><a href="#L-96"><span class="linenos"> 96</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">draw</span><span class="p">()</span>
</span><span id="L-97"><a href="#L-97"><span class="linenos"> 97</span></a> <span class="k">return</span> <span class="o">-</span><span class="n">fit_result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">/</span> <span class="n">fit_result</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
</span><span id="L-98"><a href="#L-98"><span class="linenos"> 98</span></a>
</span><span id="L-99"><a href="#L-99"><span class="linenos"> 99</span></a>
</span><span id="L-100"><a href="#L-100"><span class="linenos">100</span></a><span class="k">def</span> <span class="nf">read_pbp</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">prefix</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="L-101"><a href="#L-101"><span class="linenos">101</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Read pbp format from given folder structure.</span>
</span><span id="L-102"><a href="#L-102"><span class="linenos">102</span></a>
</span><span id="L-103"><a href="#L-103"><span class="linenos">103</span></a><span class="sd"> Parameters</span>
</span><span id="L-104"><a href="#L-104"><span class="linenos">104</span></a><span class="sd"> ----------</span>
</span><span id="L-105"><a href="#L-105"><span class="linenos">105</span></a><span class="sd"> r_start : list</span>
</span><span id="L-106"><a href="#L-106"><span class="linenos">106</span></a><span class="sd"> list which contains the first config to be read for each replicum</span>
</span><span id="L-107"><a href="#L-107"><span class="linenos">107</span></a><span class="sd"> r_stop : list</span>
</span><span id="L-108"><a href="#L-108"><span class="linenos">108</span></a><span class="sd"> list which contains the last config to be read for each replicum</span>
</span><span id="L-109"><a href="#L-109"><span class="linenos">109</span></a>
</span><span id="L-110"><a href="#L-110"><span class="linenos">110</span></a> <span class="n">print_err</span> <span class="o">=</span> <span class="mi">0</span>
</span><span id="L-111"><a href="#L-111"><span class="linenos">111</span></a> <span class="k">if</span> <span class="s1">&#39;print_err&#39;</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
</span><span id="L-112"><a href="#L-112"><span class="linenos">112</span></a> <span class="n">print_err</span> <span class="o">=</span> <span class="mi">1</span>
</span><span id="L-113"><a href="#L-113"><span class="linenos">113</span></a> <span class="nb">print</span><span class="p">()</span>
</span><span id="L-114"><a href="#L-114"><span class="linenos">114</span></a>
</span><span id="L-115"><a href="#L-115"><span class="linenos">115</span></a> <span class="n">deltas</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="L-116"><a href="#L-116"><span class="linenos">116</span></a>
</span><span id="L-117"><a href="#L-117"><span class="linenos">117</span></a> <span class="k">for</span> <span class="n">rep</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">replica</span><span class="p">):</span>
</span><span id="L-118"><a href="#L-118"><span class="linenos">118</span></a> <span class="n">tmp_array</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="L-119"><a href="#L-119"><span class="linenos">119</span></a> <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">path</span> <span class="o">+</span> <span class="s1">&#39;/&#39;</span> <span class="o">+</span> <span class="n">ls</span><span class="p">[</span><span class="n">rep</span><span class="p">],</span> <span class="s1">&#39;rb&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">fp</span><span class="p">:</span>
</span><span id="L-110"><a href="#L-110"><span class="linenos">110</span></a><span class="sd"> Returns</span>
</span><span id="L-111"><a href="#L-111"><span class="linenos">111</span></a><span class="sd"> -------</span>
</span><span id="L-112"><a href="#L-112"><span class="linenos">112</span></a><span class="sd"> result : list[Obs]</span>
</span><span id="L-113"><a href="#L-113"><span class="linenos">113</span></a><span class="sd"> list of observables read</span>
</span><span id="L-114"><a href="#L-114"><span class="linenos">114</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-115"><a href="#L-115"><span class="linenos">115</span></a>
</span><span id="L-116"><a href="#L-116"><span class="linenos">116</span></a> <span class="n">ls</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="L-117"><a href="#L-117"><span class="linenos">117</span></a> <span class="k">for</span> <span class="p">(</span><span class="n">dirpath</span><span class="p">,</span> <span class="n">dirnames</span><span class="p">,</span> <span class="n">filenames</span><span class="p">)</span> <span class="ow">in</span> <span class="n">os</span><span class="o">.</span><span class="n">walk</span><span class="p">(</span><span class="n">path</span><span class="p">):</span>
</span><span id="L-118"><a href="#L-118"><span class="linenos">118</span></a> <span class="n">ls</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">filenames</span><span class="p">)</span>
</span><span id="L-119"><a href="#L-119"><span class="linenos">119</span></a> <span class="k">break</span>
</span><span id="L-120"><a href="#L-120"><span class="linenos">120</span></a>
</span><span id="L-121"><a href="#L-121"><span class="linenos">121</span></a> <span class="n">t</span> <span class="o">=</span> <span class="n">fp</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span> <span class="c1"># number of reweighting factors</span>
</span><span id="L-122"><a href="#L-122"><span class="linenos">122</span></a> <span class="k">if</span> <span class="n">rep</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
</span><span id="L-123"><a href="#L-123"><span class="linenos">123</span></a> <span class="n">nrw</span> <span class="o">=</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;i&#39;</span><span class="p">,</span> <span class="n">t</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
</span><span id="L-124"><a href="#L-124"><span class="linenos">124</span></a> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">nrw</span><span class="p">):</span>
</span><span id="L-125"><a href="#L-125"><span class="linenos">125</span></a> <span class="n">deltas</span><span class="o">.</span><span class="n">append</span><span class="p">([])</span>
</span><span id="L-126"><a href="#L-126"><span class="linenos">126</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-127"><a href="#L-127"><span class="linenos">127</span></a> <span class="k">if</span> <span class="n">nrw</span> <span class="o">!=</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;i&#39;</span><span class="p">,</span> <span class="n">t</span><span class="p">)[</span><span class="mi">0</span><span class="p">]:</span>
</span><span id="L-128"><a href="#L-128"><span class="linenos">128</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;Error: different number of factors for replicum&#39;</span><span class="p">,</span> <span class="n">rep</span><span class="p">)</span>
</span><span id="L-129"><a href="#L-129"><span class="linenos">129</span></a>
</span><span id="L-130"><a href="#L-130"><span class="linenos">130</span></a> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">nrw</span><span class="p">):</span>
</span><span id="L-131"><a href="#L-131"><span class="linenos">131</span></a> <span class="n">tmp_array</span><span class="o">.</span><span class="n">append</span><span class="p">([])</span>
</span><span id="L-132"><a href="#L-132"><span class="linenos">132</span></a>
</span><span id="L-133"><a href="#L-133"><span class="linenos">133</span></a> <span class="c1"># This block is necessary for openQCD1.6 ms1 files</span>
</span><span id="L-134"><a href="#L-134"><span class="linenos">134</span></a> <span class="n">nfct</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="L-135"><a href="#L-135"><span class="linenos">135</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">nrw</span><span class="p">):</span>
</span><span id="L-136"><a href="#L-136"><span class="linenos">136</span></a> <span class="n">t</span> <span class="o">=</span> <span class="n">fp</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span>
</span><span id="L-137"><a href="#L-137"><span class="linenos">137</span></a> <span class="n">nfct</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;i&#39;</span><span class="p">,</span> <span class="n">t</span><span class="p">)[</span><span class="mi">0</span><span class="p">])</span>
</span><span id="L-138"><a href="#L-138"><span class="linenos">138</span></a> <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;nfct: &#39;</span><span class="p">,</span> <span class="n">nfct</span><span class="p">)</span> <span class="c1"># Hasenbusch factor, 1 for rat reweighting</span>
</span><span id="L-139"><a href="#L-139"><span class="linenos">139</span></a>
</span><span id="L-140"><a href="#L-140"><span class="linenos">140</span></a> <span class="n">nsrc</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="L-141"><a href="#L-141"><span class="linenos">141</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">nrw</span><span class="p">):</span>
</span><span id="L-142"><a href="#L-142"><span class="linenos">142</span></a> <span class="n">t</span> <span class="o">=</span> <span class="n">fp</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span>
</span><span id="L-143"><a href="#L-143"><span class="linenos">143</span></a> <span class="n">nsrc</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;i&#39;</span><span class="p">,</span> <span class="n">t</span><span class="p">)[</span><span class="mi">0</span><span class="p">])</span>
</span><span id="L-144"><a href="#L-144"><span class="linenos">144</span></a>
</span><span id="L-145"><a href="#L-145"><span class="linenos">145</span></a> <span class="c1"># body</span>
</span><span id="L-146"><a href="#L-146"><span class="linenos">146</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
</span><span id="L-147"><a href="#L-147"><span class="linenos">147</span></a> <span class="n">t</span> <span class="o">=</span> <span class="n">fp</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span>
</span><span id="L-148"><a href="#L-148"><span class="linenos">148</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">t</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">4</span><span class="p">:</span>
</span><span id="L-149"><a href="#L-149"><span class="linenos">149</span></a> <span class="k">break</span>
</span><span id="L-150"><a href="#L-150"><span class="linenos">150</span></a> <span class="k">if</span> <span class="n">print_err</span><span class="p">:</span>
</span><span id="L-151"><a href="#L-151"><span class="linenos">151</span></a> <span class="n">config_no</span> <span class="o">=</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;i&#39;</span><span class="p">,</span> <span class="n">t</span><span class="p">)</span>
</span><span id="L-152"><a href="#L-152"><span class="linenos">152</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">nrw</span><span class="p">):</span>
</span><span id="L-153"><a href="#L-153"><span class="linenos">153</span></a> <span class="n">tmp_nfct</span> <span class="o">=</span> <span class="mf">1.0</span>
</span><span id="L-154"><a href="#L-154"><span class="linenos">154</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">nfct</span><span class="p">[</span><span class="n">i</span><span class="p">]):</span>
</span><span id="L-155"><a href="#L-155"><span class="linenos">155</span></a> <span class="n">t</span> <span class="o">=</span> <span class="n">fp</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">8</span> <span class="o">*</span> <span class="n">nsrc</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
</span><span id="L-156"><a href="#L-156"><span class="linenos">156</span></a> <span class="n">t</span> <span class="o">=</span> <span class="n">fp</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">8</span> <span class="o">*</span> <span class="n">nsrc</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
</span><span id="L-157"><a href="#L-157"><span class="linenos">157</span></a> <span class="n">tmp_rw</span> <span class="o">=</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;d&#39;</span> <span class="o">*</span> <span class="n">nsrc</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">t</span><span class="p">)</span>
</span><span id="L-158"><a href="#L-158"><span class="linenos">158</span></a> <span class="n">tmp_nfct</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">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">tmp_rw</span><span class="p">))</span>
</span><span id="L-159"><a href="#L-159"><span class="linenos">159</span></a> <span class="k">if</span> <span class="n">print_err</span><span class="p">:</span>
</span><span id="L-160"><a href="#L-160"><span class="linenos">160</span></a> <span class="nb">print</span><span class="p">(</span><span class="n">config_no</span><span class="p">,</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">tmp_rw</span><span class="p">)),</span> <span class="n">np</span><span class="o">.</span><span class="n">std</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">tmp_rw</span><span class="p">)))</span>
</span><span id="L-161"><a href="#L-161"><span class="linenos">161</span></a> <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Sources:&#39;</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">tmp_rw</span><span class="p">))</span>
</span><span id="L-162"><a href="#L-162"><span class="linenos">162</span></a> <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Partial factor:&#39;</span><span class="p">,</span> <span class="n">tmp_nfct</span><span class="p">)</span>
</span><span id="L-163"><a href="#L-163"><span class="linenos">163</span></a> <span class="n">tmp_array</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">tmp_nfct</span><span class="p">)</span>
</span><span id="L-164"><a href="#L-164"><span class="linenos">164</span></a>
</span><span id="L-165"><a href="#L-165"><span class="linenos">165</span></a> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">nrw</span><span class="p">):</span>
</span><span id="L-166"><a href="#L-166"><span class="linenos">166</span></a> <span class="n">deltas</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">tmp_array</span><span class="p">[</span><span class="n">k</span><span class="p">][</span><span class="n">r_start</span><span class="p">[</span><span class="n">rep</span><span class="p">]:</span><span class="n">r_stop</span><span class="p">[</span><span class="n">rep</span><span class="p">]])</span>
</span><span id="L-167"><a href="#L-167"><span class="linenos">167</span></a>
</span><span id="L-168"><a href="#L-168"><span class="linenos">168</span></a> <span class="n">rep_names</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="L-169"><a href="#L-169"><span class="linenos">169</span></a> <span class="k">for</span> <span class="n">entry</span> <span class="ow">in</span> <span class="n">ls</span><span class="p">:</span>
</span><span id="L-170"><a href="#L-170"><span class="linenos">170</span></a> <span class="n">truncated_entry</span> <span class="o">=</span> <span class="n">entry</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;.&#39;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
</span><span id="L-171"><a href="#L-171"><span class="linenos">171</span></a> <span class="n">idx</span> <span class="o">=</span> <span class="n">truncated_entry</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="s1">&#39;r&#39;</span><span class="p">)</span>
</span><span id="L-172"><a href="#L-172"><span class="linenos">172</span></a> <span class="n">rep_names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">truncated_entry</span><span class="p">[:</span><span class="n">idx</span><span class="p">]</span> <span class="o">+</span> <span class="s1">&#39;|&#39;</span> <span class="o">+</span> <span class="n">truncated_entry</span><span class="p">[</span><span class="n">idx</span><span class="p">:])</span>
</span><span id="L-173"><a href="#L-173"><span class="linenos">173</span></a> <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;,&#39;</span><span class="p">,</span> <span class="n">nrw</span><span class="p">,</span> <span class="sa">r</span><span class="s1">&#39;&lt;bar</span><span class="si">{psi}</span><span class="s1">\psi&gt; with&#39;</span><span class="p">,</span> <span class="n">nsrc</span><span class="p">,</span> <span class="s1">&#39;sources&#39;</span><span class="p">)</span>
</span><span id="L-174"><a href="#L-174"><span class="linenos">174</span></a> <span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="L-175"><a href="#L-175"><span class="linenos">175</span></a> <span class="k">for</span> <span class="n">t</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">nrw</span><span class="p">):</span>
</span><span id="L-176"><a href="#L-176"><span class="linenos">176</span></a> <span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Obs</span><span class="p">(</span><span class="n">deltas</span><span class="p">[</span><span class="n">t</span><span class="p">],</span> <span class="n">rep_names</span><span class="p">))</span>
</span><span id="L-177"><a href="#L-177"><span class="linenos">177</span></a>
</span><span id="L-178"><a href="#L-178"><span class="linenos">178</span></a> <span class="k">return</span> <span class="n">result</span>
</span><span id="L-121"><a href="#L-121"><span class="linenos">121</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">ls</span><span class="p">:</span>
</span><span id="L-122"><a href="#L-122"><span class="linenos">122</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;Error, directory not found&#39;</span><span class="p">)</span>
</span><span id="L-123"><a href="#L-123"><span class="linenos">123</span></a>
</span><span id="L-124"><a href="#L-124"><span class="linenos">124</span></a> <span class="c1"># Exclude files with different names</span>
</span><span id="L-125"><a href="#L-125"><span class="linenos">125</span></a> <span class="k">for</span> <span class="n">exc</span> <span class="ow">in</span> <span class="n">ls</span><span class="p">:</span>
</span><span id="L-126"><a href="#L-126"><span class="linenos">126</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">fnmatch</span><span class="o">.</span><span class="n">fnmatch</span><span class="p">(</span><span class="n">exc</span><span class="p">,</span> <span class="n">prefix</span> <span class="o">+</span> <span class="s1">&#39;*.dat&#39;</span><span class="p">):</span>
</span><span id="L-127"><a href="#L-127"><span class="linenos">127</span></a> <span class="n">ls</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">ls</span><span class="p">)</span> <span class="o">-</span> <span class="nb">set</span><span class="p">([</span><span class="n">exc</span><span class="p">]))</span>
</span><span id="L-128"><a href="#L-128"><span class="linenos">128</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">ls</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="L-129"><a href="#L-129"><span class="linenos">129</span></a> <span class="n">ls</span><span class="o">.</span><span class="n">sort</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="nb">int</span><span class="p">(</span><span class="n">re</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="sa">r</span><span class="s1">&#39;\d+&#39;</span><span class="p">,</span> <span class="n">x</span><span class="p">[</span><span class="nb">len</span><span class="p">(</span><span class="n">prefix</span><span class="p">):])[</span><span class="mi">0</span><span class="p">]))</span>
</span><span id="L-130"><a href="#L-130"><span class="linenos">130</span></a> <span class="n">replica</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">ls</span><span class="p">)</span>
</span><span id="L-131"><a href="#L-131"><span class="linenos">131</span></a>
</span><span id="L-132"><a href="#L-132"><span class="linenos">132</span></a> <span class="k">if</span> <span class="s1">&#39;r_start&#39;</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
</span><span id="L-133"><a href="#L-133"><span class="linenos">133</span></a> <span class="n">r_start</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;r_start&#39;</span><span class="p">)</span>
</span><span id="L-134"><a href="#L-134"><span class="linenos">134</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">r_start</span><span class="p">)</span> <span class="o">!=</span> <span class="n">replica</span><span class="p">:</span>
</span><span id="L-135"><a href="#L-135"><span class="linenos">135</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;r_start does not match number of replicas&#39;</span><span class="p">)</span>
</span><span id="L-136"><a href="#L-136"><span class="linenos">136</span></a> <span class="c1"># Adjust Configuration numbering to python index</span>
</span><span id="L-137"><a href="#L-137"><span class="linenos">137</span></a> <span class="n">r_start</span> <span class="o">=</span> <span class="p">[</span><span class="n">o</span> <span class="o">-</span> <span class="mi">1</span> <span class="k">if</span> <span class="n">o</span> <span class="k">else</span> <span class="kc">None</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">r_start</span><span class="p">]</span>
</span><span id="L-138"><a href="#L-138"><span class="linenos">138</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-139"><a href="#L-139"><span class="linenos">139</span></a> <span class="n">r_start</span> <span class="o">=</span> <span class="p">[</span><span class="kc">None</span><span class="p">]</span> <span class="o">*</span> <span class="n">replica</span>
</span><span id="L-140"><a href="#L-140"><span class="linenos">140</span></a>
</span><span id="L-141"><a href="#L-141"><span class="linenos">141</span></a> <span class="k">if</span> <span class="s1">&#39;r_stop&#39;</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
</span><span id="L-142"><a href="#L-142"><span class="linenos">142</span></a> <span class="n">r_stop</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;r_stop&#39;</span><span class="p">)</span>
</span><span id="L-143"><a href="#L-143"><span class="linenos">143</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">r_stop</span><span class="p">)</span> <span class="o">!=</span> <span class="n">replica</span><span class="p">:</span>
</span><span id="L-144"><a href="#L-144"><span class="linenos">144</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;r_stop does not match number of replicas&#39;</span><span class="p">)</span>
</span><span id="L-145"><a href="#L-145"><span class="linenos">145</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-146"><a href="#L-146"><span class="linenos">146</span></a> <span class="n">r_stop</span> <span class="o">=</span> <span class="p">[</span><span class="kc">None</span><span class="p">]</span> <span class="o">*</span> <span class="n">replica</span>
</span><span id="L-147"><a href="#L-147"><span class="linenos">147</span></a>
</span><span id="L-148"><a href="#L-148"><span class="linenos">148</span></a> <span class="nb">print</span><span class="p">(</span><span class="sa">r</span><span class="s1">&#39;Read &lt;bar</span><span class="si">{psi}</span><span class="s1">\psi&gt; from&#39;</span><span class="p">,</span> <span class="n">prefix</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> <span class="s1">&#39;,&#39;</span><span class="p">,</span> <span class="n">replica</span><span class="p">,</span> <span class="s1">&#39;replica&#39;</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="p">)</span>
</span><span id="L-149"><a href="#L-149"><span class="linenos">149</span></a>
</span><span id="L-150"><a href="#L-150"><span class="linenos">150</span></a> <span class="n">print_err</span> <span class="o">=</span> <span class="mi">0</span>
</span><span id="L-151"><a href="#L-151"><span class="linenos">151</span></a> <span class="k">if</span> <span class="s1">&#39;print_err&#39;</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
</span><span id="L-152"><a href="#L-152"><span class="linenos">152</span></a> <span class="n">print_err</span> <span class="o">=</span> <span class="mi">1</span>
</span><span id="L-153"><a href="#L-153"><span class="linenos">153</span></a> <span class="nb">print</span><span class="p">()</span>
</span><span id="L-154"><a href="#L-154"><span class="linenos">154</span></a>
</span><span id="L-155"><a href="#L-155"><span class="linenos">155</span></a> <span class="n">deltas</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="L-156"><a href="#L-156"><span class="linenos">156</span></a>
</span><span id="L-157"><a href="#L-157"><span class="linenos">157</span></a> <span class="k">for</span> <span class="n">rep</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">replica</span><span class="p">):</span>
</span><span id="L-158"><a href="#L-158"><span class="linenos">158</span></a> <span class="n">tmp_array</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="L-159"><a href="#L-159"><span class="linenos">159</span></a> <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">path</span> <span class="o">+</span> <span class="s1">&#39;/&#39;</span> <span class="o">+</span> <span class="n">ls</span><span class="p">[</span><span class="n">rep</span><span class="p">],</span> <span class="s1">&#39;rb&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">fp</span><span class="p">:</span>
</span><span id="L-160"><a href="#L-160"><span class="linenos">160</span></a>
</span><span id="L-161"><a href="#L-161"><span class="linenos">161</span></a> <span class="n">t</span> <span class="o">=</span> <span class="n">fp</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span> <span class="c1"># number of reweighting factors</span>
</span><span id="L-162"><a href="#L-162"><span class="linenos">162</span></a> <span class="k">if</span> <span class="n">rep</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
</span><span id="L-163"><a href="#L-163"><span class="linenos">163</span></a> <span class="n">nrw</span> <span class="o">=</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;i&#39;</span><span class="p">,</span> <span class="n">t</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
</span><span id="L-164"><a href="#L-164"><span class="linenos">164</span></a> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">nrw</span><span class="p">):</span>
</span><span id="L-165"><a href="#L-165"><span class="linenos">165</span></a> <span class="n">deltas</span><span class="o">.</span><span class="n">append</span><span class="p">([])</span>
</span><span id="L-166"><a href="#L-166"><span class="linenos">166</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-167"><a href="#L-167"><span class="linenos">167</span></a> <span class="k">if</span> <span class="n">nrw</span> <span class="o">!=</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;i&#39;</span><span class="p">,</span> <span class="n">t</span><span class="p">)[</span><span class="mi">0</span><span class="p">]:</span>
</span><span id="L-168"><a href="#L-168"><span class="linenos">168</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;Error: different number of factors for replicum&#39;</span><span class="p">,</span> <span class="n">rep</span><span class="p">)</span>
</span><span id="L-169"><a href="#L-169"><span class="linenos">169</span></a>
</span><span id="L-170"><a href="#L-170"><span class="linenos">170</span></a> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">nrw</span><span class="p">):</span>
</span><span id="L-171"><a href="#L-171"><span class="linenos">171</span></a> <span class="n">tmp_array</span><span class="o">.</span><span class="n">append</span><span class="p">([])</span>
</span><span id="L-172"><a href="#L-172"><span class="linenos">172</span></a>
</span><span id="L-173"><a href="#L-173"><span class="linenos">173</span></a> <span class="c1"># This block is necessary for openQCD1.6 ms1 files</span>
</span><span id="L-174"><a href="#L-174"><span class="linenos">174</span></a> <span class="n">nfct</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="L-175"><a href="#L-175"><span class="linenos">175</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">nrw</span><span class="p">):</span>
</span><span id="L-176"><a href="#L-176"><span class="linenos">176</span></a> <span class="n">t</span> <span class="o">=</span> <span class="n">fp</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span>
</span><span id="L-177"><a href="#L-177"><span class="linenos">177</span></a> <span class="n">nfct</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;i&#39;</span><span class="p">,</span> <span class="n">t</span><span class="p">)[</span><span class="mi">0</span><span class="p">])</span>
</span><span id="L-178"><a href="#L-178"><span class="linenos">178</span></a> <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;nfct: &#39;</span><span class="p">,</span> <span class="n">nfct</span><span class="p">)</span> <span class="c1"># Hasenbusch factor, 1 for rat reweighting</span>
</span><span id="L-179"><a href="#L-179"><span class="linenos">179</span></a>
</span><span id="L-180"><a href="#L-180"><span class="linenos">180</span></a> <span class="n">nsrc</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="L-181"><a href="#L-181"><span class="linenos">181</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">nrw</span><span class="p">):</span>
</span><span id="L-182"><a href="#L-182"><span class="linenos">182</span></a> <span class="n">t</span> <span class="o">=</span> <span class="n">fp</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span>
</span><span id="L-183"><a href="#L-183"><span class="linenos">183</span></a> <span class="n">nsrc</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;i&#39;</span><span class="p">,</span> <span class="n">t</span><span class="p">)[</span><span class="mi">0</span><span class="p">])</span>
</span><span id="L-184"><a href="#L-184"><span class="linenos">184</span></a>
</span><span id="L-185"><a href="#L-185"><span class="linenos">185</span></a> <span class="c1"># body</span>
</span><span id="L-186"><a href="#L-186"><span class="linenos">186</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
</span><span id="L-187"><a href="#L-187"><span class="linenos">187</span></a> <span class="n">t</span> <span class="o">=</span> <span class="n">fp</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span>
</span><span id="L-188"><a href="#L-188"><span class="linenos">188</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">t</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">4</span><span class="p">:</span>
</span><span id="L-189"><a href="#L-189"><span class="linenos">189</span></a> <span class="k">break</span>
</span><span id="L-190"><a href="#L-190"><span class="linenos">190</span></a> <span class="k">if</span> <span class="n">print_err</span><span class="p">:</span>
</span><span id="L-191"><a href="#L-191"><span class="linenos">191</span></a> <span class="n">config_no</span> <span class="o">=</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;i&#39;</span><span class="p">,</span> <span class="n">t</span><span class="p">)</span>
</span><span id="L-192"><a href="#L-192"><span class="linenos">192</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">nrw</span><span class="p">):</span>
</span><span id="L-193"><a href="#L-193"><span class="linenos">193</span></a> <span class="n">tmp_nfct</span> <span class="o">=</span> <span class="mf">1.0</span>
</span><span id="L-194"><a href="#L-194"><span class="linenos">194</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">nfct</span><span class="p">[</span><span class="n">i</span><span class="p">]):</span>
</span><span id="L-195"><a href="#L-195"><span class="linenos">195</span></a> <span class="n">t</span> <span class="o">=</span> <span class="n">fp</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">8</span> <span class="o">*</span> <span class="n">nsrc</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
</span><span id="L-196"><a href="#L-196"><span class="linenos">196</span></a> <span class="n">t</span> <span class="o">=</span> <span class="n">fp</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">8</span> <span class="o">*</span> <span class="n">nsrc</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
</span><span id="L-197"><a href="#L-197"><span class="linenos">197</span></a> <span class="n">tmp_rw</span> <span class="o">=</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;d&#39;</span> <span class="o">*</span> <span class="n">nsrc</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">t</span><span class="p">)</span>
</span><span id="L-198"><a href="#L-198"><span class="linenos">198</span></a> <span class="n">tmp_nfct</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">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">tmp_rw</span><span class="p">))</span>
</span><span id="L-199"><a href="#L-199"><span class="linenos">199</span></a> <span class="k">if</span> <span class="n">print_err</span><span class="p">:</span>
</span><span id="L-200"><a href="#L-200"><span class="linenos">200</span></a> <span class="nb">print</span><span class="p">(</span><span class="n">config_no</span><span class="p">,</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">tmp_rw</span><span class="p">)),</span> <span class="n">np</span><span class="o">.</span><span class="n">std</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">tmp_rw</span><span class="p">)))</span>
</span><span id="L-201"><a href="#L-201"><span class="linenos">201</span></a> <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Sources:&#39;</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">tmp_rw</span><span class="p">))</span>
</span><span id="L-202"><a href="#L-202"><span class="linenos">202</span></a> <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Partial factor:&#39;</span><span class="p">,</span> <span class="n">tmp_nfct</span><span class="p">)</span>
</span><span id="L-203"><a href="#L-203"><span class="linenos">203</span></a> <span class="n">tmp_array</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">tmp_nfct</span><span class="p">)</span>
</span><span id="L-204"><a href="#L-204"><span class="linenos">204</span></a>
</span><span id="L-205"><a href="#L-205"><span class="linenos">205</span></a> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">nrw</span><span class="p">):</span>
</span><span id="L-206"><a href="#L-206"><span class="linenos">206</span></a> <span class="n">deltas</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">tmp_array</span><span class="p">[</span><span class="n">k</span><span class="p">][</span><span class="n">r_start</span><span class="p">[</span><span class="n">rep</span><span class="p">]:</span><span class="n">r_stop</span><span class="p">[</span><span class="n">rep</span><span class="p">]])</span>
</span><span id="L-207"><a href="#L-207"><span class="linenos">207</span></a>
</span><span id="L-208"><a href="#L-208"><span class="linenos">208</span></a> <span class="n">rep_names</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="L-209"><a href="#L-209"><span class="linenos">209</span></a> <span class="k">for</span> <span class="n">entry</span> <span class="ow">in</span> <span class="n">ls</span><span class="p">:</span>
</span><span id="L-210"><a href="#L-210"><span class="linenos">210</span></a> <span class="n">truncated_entry</span> <span class="o">=</span> <span class="n">entry</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;.&#39;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
</span><span id="L-211"><a href="#L-211"><span class="linenos">211</span></a> <span class="n">idx</span> <span class="o">=</span> <span class="n">truncated_entry</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="s1">&#39;r&#39;</span><span class="p">)</span>
</span><span id="L-212"><a href="#L-212"><span class="linenos">212</span></a> <span class="n">rep_names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">truncated_entry</span><span class="p">[:</span><span class="n">idx</span><span class="p">]</span> <span class="o">+</span> <span class="s1">&#39;|&#39;</span> <span class="o">+</span> <span class="n">truncated_entry</span><span class="p">[</span><span class="n">idx</span><span class="p">:])</span>
</span><span id="L-213"><a href="#L-213"><span class="linenos">213</span></a> <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;,&#39;</span><span class="p">,</span> <span class="n">nrw</span><span class="p">,</span> <span class="sa">r</span><span class="s1">&#39;&lt;bar</span><span class="si">{psi}</span><span class="s1">\psi&gt; with&#39;</span><span class="p">,</span> <span class="n">nsrc</span><span class="p">,</span> <span class="s1">&#39;sources&#39;</span><span class="p">)</span>
</span><span id="L-214"><a href="#L-214"><span class="linenos">214</span></a> <span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="L-215"><a href="#L-215"><span class="linenos">215</span></a> <span class="k">for</span> <span class="n">t</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">nrw</span><span class="p">):</span>
</span><span id="L-216"><a href="#L-216"><span class="linenos">216</span></a> <span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Obs</span><span class="p">(</span><span class="n">deltas</span><span class="p">[</span><span class="n">t</span><span class="p">],</span> <span class="n">rep_names</span><span class="p">))</span>
</span><span id="L-217"><a href="#L-217"><span class="linenos">217</span></a>
</span><span id="L-218"><a href="#L-218"><span class="linenos">218</span></a> <span class="k">return</span> <span class="n">result</span>
</span></pre></div>
@ -266,62 +306,134 @@
<div class="attr function">
<span class="def">def</span>
<span class="name">fit_t0</span><span class="signature pdoc-code condensed">(<span class="param"><span class="n">t2E_dict</span>, </span><span class="param"><span class="n">fit_range</span>, </span><span class="param"><span class="n">plot_fit</span><span class="o">=</span><span class="kc">False</span></span><span class="return-annotation">):</span></span>
<span class="name">fit_t0</span><span class="signature pdoc-code condensed">(<span class="param"><span class="n">t2E_dict</span>, </span><span class="param"><span class="n">fit_range</span>, </span><span class="param"><span class="n">plot_fit</span><span class="o">=</span><span class="kc">False</span>, </span><span class="param"><span class="n">observable</span><span class="o">=</span><span class="s1">&#39;t0&#39;</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="fit_t0-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#fit_t0"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="fit_t0-13"><a href="#fit_t0-13"><span class="linenos">13</span></a><span class="k">def</span> <span class="nf">fit_t0</span><span class="p">(</span><span class="n">t2E_dict</span><span class="p">,</span> <span class="n">fit_range</span><span class="p">,</span> <span class="n">plot_fit</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
</span><span id="fit_t0-14"><a href="#fit_t0-14"><span class="linenos">14</span></a> <span class="n">zero_crossing</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">argmax</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span>
</span><span id="fit_t0-15"><a href="#fit_t0-15"><span class="linenos">15</span></a> <span class="p">[</span><span class="n">o</span><span class="o">.</span><span class="n">value</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">t2E_dict</span><span class="o">.</span><span class="n">values</span><span class="p">()])</span> <span class="o">&gt;</span> <span class="mf">0.0</span><span class="p">)</span>
</span><span id="fit_t0-16"><a href="#fit_t0-16"><span class="linenos">16</span></a>
</span><span id="fit_t0-17"><a href="#fit_t0-17"><span class="linenos">17</span></a> <span class="n">x</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">t2E_dict</span><span class="o">.</span><span class="n">keys</span><span class="p">())[</span><span class="n">zero_crossing</span> <span class="o">-</span> <span class="n">fit_range</span><span class="p">:</span>
</span><span id="fit_t0-18"><a href="#fit_t0-18"><span class="linenos">18</span></a> <span class="n">zero_crossing</span> <span class="o">+</span> <span class="n">fit_range</span><span class="p">]</span>
</span><span id="fit_t0-19"><a href="#fit_t0-19"><span class="linenos">19</span></a> <span class="n">y</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">t2E_dict</span><span class="o">.</span><span class="n">values</span><span class="p">())[</span><span class="n">zero_crossing</span> <span class="o">-</span> <span class="n">fit_range</span><span class="p">:</span>
</span><span id="fit_t0-20"><a href="#fit_t0-20"><span class="linenos">20</span></a> <span class="n">zero_crossing</span> <span class="o">+</span> <span class="n">fit_range</span><span class="p">]</span>
</span><span id="fit_t0-21"><a href="#fit_t0-21"><span class="linenos">21</span></a> <span class="p">[</span><span class="n">o</span><span class="o">.</span><span class="n">gamma_method</span><span class="p">()</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">y</span><span class="p">]</span>
</span><span id="fit_t0-22"><a href="#fit_t0-22"><span class="linenos">22</span></a>
</span><span id="fit_t0-23"><a href="#fit_t0-23"><span class="linenos">23</span></a> <span class="n">fit_result</span> <span class="o">=</span> <span class="n">fit_lin</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
<div class="pdoc-code codehilite"><pre><span></span><span id="fit_t0-14"><a href="#fit_t0-14"><span class="linenos">14</span></a><span class="k">def</span> <span class="nf">fit_t0</span><span class="p">(</span><span class="n">t2E_dict</span><span class="p">,</span> <span class="n">fit_range</span><span class="p">,</span> <span class="n">plot_fit</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">observable</span><span class="o">=</span><span class="s1">&#39;t0&#39;</span><span class="p">):</span>
</span><span id="fit_t0-15"><a href="#fit_t0-15"><span class="linenos">15</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Compute the root of (flow-based) data based on a dictionary that contains</span>
</span><span id="fit_t0-16"><a href="#fit_t0-16"><span class="linenos">16</span></a><span class="sd"> the necessary information in key-value pairs a la (flow time: observable at flow time).</span>
</span><span id="fit_t0-17"><a href="#fit_t0-17"><span class="linenos">17</span></a>
</span><span id="fit_t0-18"><a href="#fit_t0-18"><span class="linenos">18</span></a><span class="sd"> It is assumed that the data is monotonically increasing and passes zero from below.</span>
</span><span id="fit_t0-19"><a href="#fit_t0-19"><span class="linenos">19</span></a><span class="sd"> No exception is thrown if this is not the case (several roots, no monotonic increase).</span>
</span><span id="fit_t0-20"><a href="#fit_t0-20"><span class="linenos">20</span></a><span class="sd"> An exception is thrown if no root can be found in the data.</span>
</span><span id="fit_t0-21"><a href="#fit_t0-21"><span class="linenos">21</span></a>
</span><span id="fit_t0-22"><a href="#fit_t0-22"><span class="linenos">22</span></a><span class="sd"> A linear fit in the vicinity of the root is performed to exctract the root from the</span>
</span><span id="fit_t0-23"><a href="#fit_t0-23"><span class="linenos">23</span></a><span class="sd"> two fit parameters.</span>
</span><span id="fit_t0-24"><a href="#fit_t0-24"><span class="linenos">24</span></a>
</span><span id="fit_t0-25"><a href="#fit_t0-25"><span class="linenos">25</span></a> <span class="k">if</span> <span class="n">plot_fit</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span>
</span><span id="fit_t0-26"><a href="#fit_t0-26"><span class="linenos">26</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span>
</span><span id="fit_t0-27"><a href="#fit_t0-27"><span class="linenos">27</span></a> <span class="n">gs</span> <span class="o">=</span> <span class="n">gridspec</span><span class="o">.</span><span class="n">GridSpec</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">height_ratios</span><span class="o">=</span><span class="p">[</span><span class="mi">3</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="n">wspace</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">hspace</span><span class="o">=</span><span class="mf">0.0</span><span class="p">)</span>
</span><span id="fit_t0-28"><a href="#fit_t0-28"><span class="linenos">28</span></a> <span class="n">ax0</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplot</span><span class="p">(</span><span class="n">gs</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
</span><span id="fit_t0-29"><a href="#fit_t0-29"><span class="linenos">29</span></a> <span class="n">xmore</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">t2E_dict</span><span class="o">.</span><span class="n">keys</span><span class="p">())[</span><span class="n">zero_crossing</span> <span class="o">-</span> <span class="n">fit_range</span> <span class="o">-</span> <span class="mi">2</span><span class="p">:</span> <span class="n">zero_crossing</span> <span class="o">+</span> <span class="n">fit_range</span> <span class="o">+</span> <span class="mi">2</span><span class="p">]</span>
</span><span id="fit_t0-30"><a href="#fit_t0-30"><span class="linenos">30</span></a> <span class="n">ymore</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">t2E_dict</span><span class="o">.</span><span class="n">values</span><span class="p">())[</span><span class="n">zero_crossing</span> <span class="o">-</span> <span class="n">fit_range</span> <span class="o">-</span> <span class="mi">2</span><span class="p">:</span> <span class="n">zero_crossing</span> <span class="o">+</span> <span class="n">fit_range</span> <span class="o">+</span> <span class="mi">2</span><span class="p">]</span>
</span><span id="fit_t0-31"><a href="#fit_t0-31"><span class="linenos">31</span></a> <span class="p">[</span><span class="n">o</span><span class="o">.</span><span class="n">gamma_method</span><span class="p">()</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">ymore</span><span class="p">]</span>
</span><span id="fit_t0-32"><a href="#fit_t0-32"><span class="linenos">32</span></a> <span class="n">ax0</span><span class="o">.</span><span class="n">errorbar</span><span class="p">(</span><span class="n">xmore</span><span class="p">,</span> <span class="p">[</span><span class="n">yi</span><span class="o">.</span><span class="n">value</span> <span class="k">for</span> <span class="n">yi</span> <span class="ow">in</span> <span class="n">ymore</span><span class="p">],</span> <span class="n">yerr</span><span class="o">=</span><span class="p">[</span><span class="n">yi</span><span class="o">.</span><span class="n">dvalue</span> <span class="k">for</span> <span class="n">yi</span> <span class="ow">in</span> <span class="n">ymore</span><span class="p">],</span> <span class="n">fmt</span><span class="o">=</span><span class="s1">&#39;x&#39;</span><span class="p">)</span>
</span><span id="fit_t0-33"><a href="#fit_t0-33"><span class="linenos">33</span></a> <span class="n">xplot</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">x</span><span class="p">),</span> <span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">x</span><span class="p">))</span>
</span><span id="fit_t0-34"><a href="#fit_t0-34"><span class="linenos">34</span></a> <span class="n">yplot</span> <span class="o">=</span> <span class="p">[</span><span class="n">fit_result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="n">fit_result</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">*</span> <span class="n">xi</span> <span class="k">for</span> <span class="n">xi</span> <span class="ow">in</span> <span class="n">xplot</span><span class="p">]</span>
</span><span id="fit_t0-35"><a href="#fit_t0-35"><span class="linenos">35</span></a> <span class="p">[</span><span class="n">yi</span><span class="o">.</span><span class="n">gamma_method</span><span class="p">()</span> <span class="k">for</span> <span class="n">yi</span> <span class="ow">in</span> <span class="n">yplot</span><span class="p">]</span>
</span><span id="fit_t0-36"><a href="#fit_t0-36"><span class="linenos">36</span></a> <span class="n">ax0</span><span class="o">.</span><span class="n">fill_between</span><span class="p">(</span><span class="n">xplot</span><span class="p">,</span> <span class="n">y1</span><span class="o">=</span><span class="p">[</span><span class="n">yi</span><span class="o">.</span><span class="n">value</span> <span class="o">-</span> <span class="n">yi</span><span class="o">.</span><span class="n">dvalue</span> <span class="k">for</span> <span class="n">yi</span> <span class="ow">in</span> <span class="n">yplot</span><span class="p">],</span> <span class="n">y2</span><span class="o">=</span><span class="p">[</span><span class="n">yi</span><span class="o">.</span><span class="n">value</span> <span class="o">+</span> <span class="n">yi</span><span class="o">.</span><span class="n">dvalue</span> <span class="k">for</span> <span class="n">yi</span> <span class="ow">in</span> <span class="n">yplot</span><span class="p">])</span>
</span><span id="fit_t0-37"><a href="#fit_t0-37"><span class="linenos">37</span></a> <span class="n">retval</span> <span class="o">=</span> <span class="p">(</span><span class="o">-</span><span class="n">fit_result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">/</span> <span class="n">fit_result</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
</span><span id="fit_t0-38"><a href="#fit_t0-38"><span class="linenos">38</span></a> <span class="n">retval</span><span class="o">.</span><span class="n">gamma_method</span><span class="p">()</span>
</span><span id="fit_t0-39"><a href="#fit_t0-39"><span class="linenos">39</span></a> <span class="n">ylim</span> <span class="o">=</span> <span class="n">ax0</span><span class="o">.</span><span class="n">get_ylim</span><span class="p">()</span>
</span><span id="fit_t0-40"><a href="#fit_t0-40"><span class="linenos">40</span></a> <span class="n">ax0</span><span class="o">.</span><span class="n">fill_betweenx</span><span class="p">(</span><span class="n">ylim</span><span class="p">,</span> <span class="n">x1</span><span class="o">=</span><span class="n">retval</span><span class="o">.</span><span class="n">value</span> <span class="o">-</span> <span class="n">retval</span><span class="o">.</span><span class="n">dvalue</span><span class="p">,</span> <span class="n">x2</span><span class="o">=</span><span class="n">retval</span><span class="o">.</span><span class="n">value</span> <span class="o">+</span> <span class="n">retval</span><span class="o">.</span><span class="n">dvalue</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s1">&#39;gray&#39;</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.4</span><span class="p">)</span>
</span><span id="fit_t0-41"><a href="#fit_t0-41"><span class="linenos">41</span></a> <span class="n">ax0</span><span class="o">.</span><span class="n">set_ylim</span><span class="p">(</span><span class="n">ylim</span><span class="p">)</span>
</span><span id="fit_t0-42"><a href="#fit_t0-42"><span class="linenos">42</span></a> <span class="n">ax0</span><span class="o">.</span><span class="n">set_ylabel</span><span class="p">(</span><span class="sa">r</span><span class="s1">&#39;$t^2 \langle E(t) \rangle - 0.3 $&#39;</span><span class="p">)</span>
</span><span id="fit_t0-43"><a href="#fit_t0-43"><span class="linenos">43</span></a> <span class="n">xlim</span> <span class="o">=</span> <span class="n">ax0</span><span class="o">.</span><span class="n">get_xlim</span><span class="p">()</span>
</span><span id="fit_t0-25"><a href="#fit_t0-25"><span class="linenos">25</span></a><span class="sd"> Parameters</span>
</span><span id="fit_t0-26"><a href="#fit_t0-26"><span class="linenos">26</span></a><span class="sd"> ----------</span>
</span><span id="fit_t0-27"><a href="#fit_t0-27"><span class="linenos">27</span></a><span class="sd"> t2E_dict : dict</span>
</span><span id="fit_t0-28"><a href="#fit_t0-28"><span class="linenos">28</span></a><span class="sd"> Dictionary with pairs of (flow time: observable at flow time) where the flow times</span>
</span><span id="fit_t0-29"><a href="#fit_t0-29"><span class="linenos">29</span></a><span class="sd"> are of type float and the observables of type Obs.</span>
</span><span id="fit_t0-30"><a href="#fit_t0-30"><span class="linenos">30</span></a><span class="sd"> fit_range : int</span>
</span><span id="fit_t0-31"><a href="#fit_t0-31"><span class="linenos">31</span></a><span class="sd"> Number of data points left and right of the zero</span>
</span><span id="fit_t0-32"><a href="#fit_t0-32"><span class="linenos">32</span></a><span class="sd"> crossing to be included in the linear fit.</span>
</span><span id="fit_t0-33"><a href="#fit_t0-33"><span class="linenos">33</span></a><span class="sd"> plot_fit : bool</span>
</span><span id="fit_t0-34"><a href="#fit_t0-34"><span class="linenos">34</span></a><span class="sd"> If true, the fit for the extraction of t0 is shown together with the data. (Default: False)</span>
</span><span id="fit_t0-35"><a href="#fit_t0-35"><span class="linenos">35</span></a><span class="sd"> observable: str</span>
</span><span id="fit_t0-36"><a href="#fit_t0-36"><span class="linenos">36</span></a><span class="sd"> Keyword to identify the observable to print the correct ylabel (if plot_fit is True)</span>
</span><span id="fit_t0-37"><a href="#fit_t0-37"><span class="linenos">37</span></a><span class="sd"> for the observables &#39;t0&#39; and &#39;w0&#39;. No y label is printed otherwise. (Default: &#39;t0&#39;)</span>
</span><span id="fit_t0-38"><a href="#fit_t0-38"><span class="linenos">38</span></a>
</span><span id="fit_t0-39"><a href="#fit_t0-39"><span class="linenos">39</span></a><span class="sd"> Returns</span>
</span><span id="fit_t0-40"><a href="#fit_t0-40"><span class="linenos">40</span></a><span class="sd"> -------</span>
</span><span id="fit_t0-41"><a href="#fit_t0-41"><span class="linenos">41</span></a><span class="sd"> root : Obs</span>
</span><span id="fit_t0-42"><a href="#fit_t0-42"><span class="linenos">42</span></a><span class="sd"> The root of the data series.</span>
</span><span id="fit_t0-43"><a href="#fit_t0-43"><span class="linenos">43</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="fit_t0-44"><a href="#fit_t0-44"><span class="linenos">44</span></a>
</span><span id="fit_t0-45"><a href="#fit_t0-45"><span class="linenos">45</span></a> <span class="n">fit_res</span> <span class="o">=</span> <span class="p">[</span><span class="n">fit_result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="n">fit_result</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">*</span> <span class="n">xi</span> <span class="k">for</span> <span class="n">xi</span> <span class="ow">in</span> <span class="n">x</span><span class="p">]</span>
</span><span id="fit_t0-46"><a href="#fit_t0-46"><span class="linenos">46</span></a> <span class="n">residuals</span> <span class="o">=</span> <span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">([</span><span class="n">o</span><span class="o">.</span><span class="n">value</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">y</span><span class="p">])</span> <span class="o">-</span> <span class="p">[</span><span class="n">o</span><span class="o">.</span><span class="n">value</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">fit_res</span><span class="p">])</span> <span class="o">/</span> <span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">([</span><span class="n">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">y</span><span class="p">])</span>
</span><span id="fit_t0-47"><a href="#fit_t0-47"><span class="linenos">47</span></a> <span class="n">ax1</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplot</span><span class="p">(</span><span class="n">gs</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
</span><span id="fit_t0-48"><a href="#fit_t0-48"><span class="linenos">48</span></a> <span class="n">ax1</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">residuals</span><span class="p">,</span> <span class="s1">&#39;ko&#39;</span><span class="p">,</span> <span class="n">ls</span><span class="o">=</span><span class="s1">&#39;none&#39;</span><span class="p">,</span> <span class="n">markersize</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span>
</span><span id="fit_t0-49"><a href="#fit_t0-49"><span class="linenos">49</span></a> <span class="n">ax1</span><span class="o">.</span><span class="n">tick_params</span><span class="p">(</span><span class="n">direction</span><span class="o">=</span><span class="s1">&#39;out&#39;</span><span class="p">)</span>
</span><span id="fit_t0-50"><a href="#fit_t0-50"><span class="linenos">50</span></a> <span class="n">ax1</span><span class="o">.</span><span class="n">tick_params</span><span class="p">(</span><span class="n">axis</span><span class="o">=</span><span class="s2">&quot;x&quot;</span><span class="p">,</span> <span class="n">bottom</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">top</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">labelbottom</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span><span id="fit_t0-51"><a href="#fit_t0-51"><span class="linenos">51</span></a> <span class="n">ax1</span><span class="o">.</span><span class="n">axhline</span><span class="p">(</span><span class="n">y</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">ls</span><span class="o">=</span><span class="s1">&#39;--&#39;</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s1">&#39;k&#39;</span><span class="p">)</span>
</span><span id="fit_t0-52"><a href="#fit_t0-52"><span class="linenos">52</span></a> <span class="n">ax1</span><span class="o">.</span><span class="n">fill_between</span><span class="p">(</span><span class="n">xlim</span><span class="p">,</span> <span class="o">-</span><span class="mf">1.0</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.1</span><span class="p">,</span> <span class="n">facecolor</span><span class="o">=</span><span class="s1">&#39;k&#39;</span><span class="p">)</span>
</span><span id="fit_t0-53"><a href="#fit_t0-53"><span class="linenos">53</span></a> <span class="n">ax1</span><span class="o">.</span><span class="n">set_xlim</span><span class="p">(</span><span class="n">xlim</span><span class="p">)</span>
</span><span id="fit_t0-54"><a href="#fit_t0-54"><span class="linenos">54</span></a> <span class="n">ax1</span><span class="o">.</span><span class="n">set_ylabel</span><span class="p">(</span><span class="s1">&#39;Residuals&#39;</span><span class="p">)</span>
</span><span id="fit_t0-55"><a href="#fit_t0-55"><span class="linenos">55</span></a> <span class="n">ax1</span><span class="o">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="sa">r</span><span class="s1">&#39;$t/a^2$&#39;</span><span class="p">)</span>
</span><span id="fit_t0-45"><a href="#fit_t0-45"><span class="linenos">45</span></a> <span class="n">zero_crossing</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">argmax</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span>
</span><span id="fit_t0-46"><a href="#fit_t0-46"><span class="linenos">46</span></a> <span class="p">[</span><span class="n">o</span><span class="o">.</span><span class="n">value</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">t2E_dict</span><span class="o">.</span><span class="n">values</span><span class="p">()])</span> <span class="o">&gt;</span> <span class="mf">0.0</span><span class="p">)</span>
</span><span id="fit_t0-47"><a href="#fit_t0-47"><span class="linenos">47</span></a>
</span><span id="fit_t0-48"><a href="#fit_t0-48"><span class="linenos">48</span></a> <span class="k">if</span> <span class="n">zero_crossing</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
</span><span id="fit_t0-49"><a href="#fit_t0-49"><span class="linenos">49</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;Desired flow time not in data&#39;</span><span class="p">)</span>
</span><span id="fit_t0-50"><a href="#fit_t0-50"><span class="linenos">50</span></a>
</span><span id="fit_t0-51"><a href="#fit_t0-51"><span class="linenos">51</span></a> <span class="n">x</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">t2E_dict</span><span class="o">.</span><span class="n">keys</span><span class="p">())[</span><span class="n">zero_crossing</span> <span class="o">-</span> <span class="n">fit_range</span><span class="p">:</span>
</span><span id="fit_t0-52"><a href="#fit_t0-52"><span class="linenos">52</span></a> <span class="n">zero_crossing</span> <span class="o">+</span> <span class="n">fit_range</span><span class="p">]</span>
</span><span id="fit_t0-53"><a href="#fit_t0-53"><span class="linenos">53</span></a> <span class="n">y</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">t2E_dict</span><span class="o">.</span><span class="n">values</span><span class="p">())[</span><span class="n">zero_crossing</span> <span class="o">-</span> <span class="n">fit_range</span><span class="p">:</span>
</span><span id="fit_t0-54"><a href="#fit_t0-54"><span class="linenos">54</span></a> <span class="n">zero_crossing</span> <span class="o">+</span> <span class="n">fit_range</span><span class="p">]</span>
</span><span id="fit_t0-55"><a href="#fit_t0-55"><span class="linenos">55</span></a> <span class="p">[</span><span class="n">o</span><span class="o">.</span><span class="n">gamma_method</span><span class="p">()</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">y</span><span class="p">]</span>
</span><span id="fit_t0-56"><a href="#fit_t0-56"><span class="linenos">56</span></a>
</span><span id="fit_t0-57"><a href="#fit_t0-57"><span class="linenos">57</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">draw</span><span class="p">()</span>
</span><span id="fit_t0-58"><a href="#fit_t0-58"><span class="linenos">58</span></a> <span class="k">return</span> <span class="o">-</span><span class="n">fit_result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">/</span> <span class="n">fit_result</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
</span><span id="fit_t0-57"><a href="#fit_t0-57"><span class="linenos">57</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">fit_range</span><span class="p">:</span>
</span><span id="fit_t0-58"><a href="#fit_t0-58"><span class="linenos">58</span></a> <span class="n">warnings</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="s1">&#39;Fit range smaller than expected! Fitting from </span><span class="si">%1.2e</span><span class="s1"> to </span><span class="si">%1.2e</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">x</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]))</span>
</span><span id="fit_t0-59"><a href="#fit_t0-59"><span class="linenos">59</span></a>
</span><span id="fit_t0-60"><a href="#fit_t0-60"><span class="linenos">60</span></a> <span class="n">fit_result</span> <span class="o">=</span> <span class="n">fit_lin</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
</span><span id="fit_t0-61"><a href="#fit_t0-61"><span class="linenos">61</span></a>
</span><span id="fit_t0-62"><a href="#fit_t0-62"><span class="linenos">62</span></a> <span class="k">if</span> <span class="n">plot_fit</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span>
</span><span id="fit_t0-63"><a href="#fit_t0-63"><span class="linenos">63</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span>
</span><span id="fit_t0-64"><a href="#fit_t0-64"><span class="linenos">64</span></a> <span class="n">gs</span> <span class="o">=</span> <span class="n">gridspec</span><span class="o">.</span><span class="n">GridSpec</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">height_ratios</span><span class="o">=</span><span class="p">[</span><span class="mi">3</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="n">wspace</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">hspace</span><span class="o">=</span><span class="mf">0.0</span><span class="p">)</span>
</span><span id="fit_t0-65"><a href="#fit_t0-65"><span class="linenos">65</span></a> <span class="n">ax0</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplot</span><span class="p">(</span><span class="n">gs</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
</span><span id="fit_t0-66"><a href="#fit_t0-66"><span class="linenos">66</span></a> <span class="n">xmore</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">t2E_dict</span><span class="o">.</span><span class="n">keys</span><span class="p">())[</span><span class="n">zero_crossing</span> <span class="o">-</span> <span class="n">fit_range</span> <span class="o">-</span> <span class="mi">2</span><span class="p">:</span> <span class="n">zero_crossing</span> <span class="o">+</span> <span class="n">fit_range</span> <span class="o">+</span> <span class="mi">2</span><span class="p">]</span>
</span><span id="fit_t0-67"><a href="#fit_t0-67"><span class="linenos">67</span></a> <span class="n">ymore</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">t2E_dict</span><span class="o">.</span><span class="n">values</span><span class="p">())[</span><span class="n">zero_crossing</span> <span class="o">-</span> <span class="n">fit_range</span> <span class="o">-</span> <span class="mi">2</span><span class="p">:</span> <span class="n">zero_crossing</span> <span class="o">+</span> <span class="n">fit_range</span> <span class="o">+</span> <span class="mi">2</span><span class="p">]</span>
</span><span id="fit_t0-68"><a href="#fit_t0-68"><span class="linenos">68</span></a> <span class="p">[</span><span class="n">o</span><span class="o">.</span><span class="n">gamma_method</span><span class="p">()</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">ymore</span><span class="p">]</span>
</span><span id="fit_t0-69"><a href="#fit_t0-69"><span class="linenos">69</span></a> <span class="n">ax0</span><span class="o">.</span><span class="n">errorbar</span><span class="p">(</span><span class="n">xmore</span><span class="p">,</span> <span class="p">[</span><span class="n">yi</span><span class="o">.</span><span class="n">value</span> <span class="k">for</span> <span class="n">yi</span> <span class="ow">in</span> <span class="n">ymore</span><span class="p">],</span> <span class="n">yerr</span><span class="o">=</span><span class="p">[</span><span class="n">yi</span><span class="o">.</span><span class="n">dvalue</span> <span class="k">for</span> <span class="n">yi</span> <span class="ow">in</span> <span class="n">ymore</span><span class="p">],</span> <span class="n">fmt</span><span class="o">=</span><span class="s1">&#39;x&#39;</span><span class="p">)</span>
</span><span id="fit_t0-70"><a href="#fit_t0-70"><span class="linenos">70</span></a> <span class="n">xplot</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">x</span><span class="p">),</span> <span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">x</span><span class="p">))</span>
</span><span id="fit_t0-71"><a href="#fit_t0-71"><span class="linenos">71</span></a> <span class="n">yplot</span> <span class="o">=</span> <span class="p">[</span><span class="n">fit_result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="n">fit_result</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">*</span> <span class="n">xi</span> <span class="k">for</span> <span class="n">xi</span> <span class="ow">in</span> <span class="n">xplot</span><span class="p">]</span>
</span><span id="fit_t0-72"><a href="#fit_t0-72"><span class="linenos">72</span></a> <span class="p">[</span><span class="n">yi</span><span class="o">.</span><span class="n">gamma_method</span><span class="p">()</span> <span class="k">for</span> <span class="n">yi</span> <span class="ow">in</span> <span class="n">yplot</span><span class="p">]</span>
</span><span id="fit_t0-73"><a href="#fit_t0-73"><span class="linenos">73</span></a> <span class="n">ax0</span><span class="o">.</span><span class="n">fill_between</span><span class="p">(</span><span class="n">xplot</span><span class="p">,</span> <span class="n">y1</span><span class="o">=</span><span class="p">[</span><span class="n">yi</span><span class="o">.</span><span class="n">value</span> <span class="o">-</span> <span class="n">yi</span><span class="o">.</span><span class="n">dvalue</span> <span class="k">for</span> <span class="n">yi</span> <span class="ow">in</span> <span class="n">yplot</span><span class="p">],</span> <span class="n">y2</span><span class="o">=</span><span class="p">[</span><span class="n">yi</span><span class="o">.</span><span class="n">value</span> <span class="o">+</span> <span class="n">yi</span><span class="o">.</span><span class="n">dvalue</span> <span class="k">for</span> <span class="n">yi</span> <span class="ow">in</span> <span class="n">yplot</span><span class="p">])</span>
</span><span id="fit_t0-74"><a href="#fit_t0-74"><span class="linenos">74</span></a> <span class="n">retval</span> <span class="o">=</span> <span class="p">(</span><span class="o">-</span><span class="n">fit_result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">/</span> <span class="n">fit_result</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
</span><span id="fit_t0-75"><a href="#fit_t0-75"><span class="linenos">75</span></a> <span class="n">retval</span><span class="o">.</span><span class="n">gamma_method</span><span class="p">()</span>
</span><span id="fit_t0-76"><a href="#fit_t0-76"><span class="linenos">76</span></a> <span class="n">ylim</span> <span class="o">=</span> <span class="n">ax0</span><span class="o">.</span><span class="n">get_ylim</span><span class="p">()</span>
</span><span id="fit_t0-77"><a href="#fit_t0-77"><span class="linenos">77</span></a> <span class="n">ax0</span><span class="o">.</span><span class="n">fill_betweenx</span><span class="p">(</span><span class="n">ylim</span><span class="p">,</span> <span class="n">x1</span><span class="o">=</span><span class="n">retval</span><span class="o">.</span><span class="n">value</span> <span class="o">-</span> <span class="n">retval</span><span class="o">.</span><span class="n">dvalue</span><span class="p">,</span> <span class="n">x2</span><span class="o">=</span><span class="n">retval</span><span class="o">.</span><span class="n">value</span> <span class="o">+</span> <span class="n">retval</span><span class="o">.</span><span class="n">dvalue</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s1">&#39;gray&#39;</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.4</span><span class="p">)</span>
</span><span id="fit_t0-78"><a href="#fit_t0-78"><span class="linenos">78</span></a> <span class="n">ax0</span><span class="o">.</span><span class="n">set_ylim</span><span class="p">(</span><span class="n">ylim</span><span class="p">)</span>
</span><span id="fit_t0-79"><a href="#fit_t0-79"><span class="linenos">79</span></a> <span class="k">if</span> <span class="n">observable</span> <span class="o">==</span> <span class="s1">&#39;t0&#39;</span><span class="p">:</span>
</span><span id="fit_t0-80"><a href="#fit_t0-80"><span class="linenos">80</span></a> <span class="n">ax0</span><span class="o">.</span><span class="n">set_ylabel</span><span class="p">(</span><span class="sa">r</span><span class="s1">&#39;$t^2 \langle E(t) \rangle - 0.3 $&#39;</span><span class="p">)</span>
</span><span id="fit_t0-81"><a href="#fit_t0-81"><span class="linenos">81</span></a> <span class="k">elif</span> <span class="n">observable</span> <span class="o">==</span> <span class="s1">&#39;w0&#39;</span><span class="p">:</span>
</span><span id="fit_t0-82"><a href="#fit_t0-82"><span class="linenos">82</span></a> <span class="n">ax0</span><span class="o">.</span><span class="n">set_ylabel</span><span class="p">(</span><span class="sa">r</span><span class="s1">&#39;$t d(t^2 \langle E(t) \rangle)/dt - 0.3 $&#39;</span><span class="p">)</span>
</span><span id="fit_t0-83"><a href="#fit_t0-83"><span class="linenos">83</span></a> <span class="n">xlim</span> <span class="o">=</span> <span class="n">ax0</span><span class="o">.</span><span class="n">get_xlim</span><span class="p">()</span>
</span><span id="fit_t0-84"><a href="#fit_t0-84"><span class="linenos">84</span></a>
</span><span id="fit_t0-85"><a href="#fit_t0-85"><span class="linenos">85</span></a> <span class="n">fit_res</span> <span class="o">=</span> <span class="p">[</span><span class="n">fit_result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="n">fit_result</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">*</span> <span class="n">xi</span> <span class="k">for</span> <span class="n">xi</span> <span class="ow">in</span> <span class="n">x</span><span class="p">]</span>
</span><span id="fit_t0-86"><a href="#fit_t0-86"><span class="linenos">86</span></a> <span class="n">residuals</span> <span class="o">=</span> <span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">([</span><span class="n">o</span><span class="o">.</span><span class="n">value</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">y</span><span class="p">])</span> <span class="o">-</span> <span class="p">[</span><span class="n">o</span><span class="o">.</span><span class="n">value</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">fit_res</span><span class="p">])</span> <span class="o">/</span> <span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">([</span><span class="n">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">y</span><span class="p">])</span>
</span><span id="fit_t0-87"><a href="#fit_t0-87"><span class="linenos">87</span></a> <span class="n">ax1</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplot</span><span class="p">(</span><span class="n">gs</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
</span><span id="fit_t0-88"><a href="#fit_t0-88"><span class="linenos">88</span></a> <span class="n">ax1</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">residuals</span><span class="p">,</span> <span class="s1">&#39;ko&#39;</span><span class="p">,</span> <span class="n">ls</span><span class="o">=</span><span class="s1">&#39;none&#39;</span><span class="p">,</span> <span class="n">markersize</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span>
</span><span id="fit_t0-89"><a href="#fit_t0-89"><span class="linenos">89</span></a> <span class="n">ax1</span><span class="o">.</span><span class="n">tick_params</span><span class="p">(</span><span class="n">direction</span><span class="o">=</span><span class="s1">&#39;out&#39;</span><span class="p">)</span>
</span><span id="fit_t0-90"><a href="#fit_t0-90"><span class="linenos">90</span></a> <span class="n">ax1</span><span class="o">.</span><span class="n">tick_params</span><span class="p">(</span><span class="n">axis</span><span class="o">=</span><span class="s2">&quot;x&quot;</span><span class="p">,</span> <span class="n">bottom</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">top</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">labelbottom</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span><span id="fit_t0-91"><a href="#fit_t0-91"><span class="linenos">91</span></a> <span class="n">ax1</span><span class="o">.</span><span class="n">axhline</span><span class="p">(</span><span class="n">y</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">ls</span><span class="o">=</span><span class="s1">&#39;--&#39;</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s1">&#39;k&#39;</span><span class="p">)</span>
</span><span id="fit_t0-92"><a href="#fit_t0-92"><span class="linenos">92</span></a> <span class="n">ax1</span><span class="o">.</span><span class="n">fill_between</span><span class="p">(</span><span class="n">xlim</span><span class="p">,</span> <span class="o">-</span><span class="mf">1.0</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.1</span><span class="p">,</span> <span class="n">facecolor</span><span class="o">=</span><span class="s1">&#39;k&#39;</span><span class="p">)</span>
</span><span id="fit_t0-93"><a href="#fit_t0-93"><span class="linenos">93</span></a> <span class="n">ax1</span><span class="o">.</span><span class="n">set_xlim</span><span class="p">(</span><span class="n">xlim</span><span class="p">)</span>
</span><span id="fit_t0-94"><a href="#fit_t0-94"><span class="linenos">94</span></a> <span class="n">ax1</span><span class="o">.</span><span class="n">set_ylabel</span><span class="p">(</span><span class="s1">&#39;Residuals&#39;</span><span class="p">)</span>
</span><span id="fit_t0-95"><a href="#fit_t0-95"><span class="linenos">95</span></a> <span class="n">ax1</span><span class="o">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="sa">r</span><span class="s1">&#39;$t/a^2$&#39;</span><span class="p">)</span>
</span><span id="fit_t0-96"><a href="#fit_t0-96"><span class="linenos">96</span></a>
</span><span id="fit_t0-97"><a href="#fit_t0-97"><span class="linenos">97</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">draw</span><span class="p">()</span>
</span><span id="fit_t0-98"><a href="#fit_t0-98"><span class="linenos">98</span></a> <span class="k">return</span> <span class="o">-</span><span class="n">fit_result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">/</span> <span class="n">fit_result</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
</span></pre></div>
<div class="docstring"><p>Compute the root of (flow-based) data based on a dictionary that contains
the necessary information in key-value pairs a la (flow time: observable at flow time).</p>
<p>It is assumed that the data is monotonically increasing and passes zero from below.
No exception is thrown if this is not the case (several roots, no monotonic increase).
An exception is thrown if no root can be found in the data.</p>
<p>A linear fit in the vicinity of the root is performed to exctract the root from the
two fit parameters.</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>t2E_dict</strong> (dict):
Dictionary with pairs of (flow time: observable at flow time) where the flow times
are of type float and the observables of type Obs.</li>
<li><strong>fit_range</strong> (int):
Number of data points left and right of the zero
crossing to be included in the linear fit.</li>
<li><strong>plot_fit</strong> (bool):
If true, the fit for the extraction of t0 is shown together with the data. (Default: False)</li>
<li><strong>observable</strong> (str):
Keyword to identify the observable to print the correct ylabel (if plot_fit is True)
for the observables 't0' and 'w0'. No y label is printed otherwise. (Default: 't0')</li>
</ul>
<h6 id="returns">Returns</h6>
<ul>
<li><strong>root</strong> (Obs):
The root of the data series.</li>
</ul>
</div>
</section>
<section id="read_pbp">
@ -335,125 +447,125 @@
</div>
<a class="headerlink" href="#read_pbp"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="read_pbp-61"><a href="#read_pbp-61"><span class="linenos"> 61</span></a><span class="k">def</span> <span class="nf">read_pbp</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">prefix</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="read_pbp-62"><a href="#read_pbp-62"><span class="linenos"> 62</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Read pbp format from given folder structure.</span>
</span><span id="read_pbp-63"><a href="#read_pbp-63"><span class="linenos"> 63</span></a>
</span><span id="read_pbp-64"><a href="#read_pbp-64"><span class="linenos"> 64</span></a><span class="sd"> Parameters</span>
</span><span id="read_pbp-65"><a href="#read_pbp-65"><span class="linenos"> 65</span></a><span class="sd"> ----------</span>
</span><span id="read_pbp-66"><a href="#read_pbp-66"><span class="linenos"> 66</span></a><span class="sd"> r_start : list</span>
</span><span id="read_pbp-67"><a href="#read_pbp-67"><span class="linenos"> 67</span></a><span class="sd"> list which contains the first config to be read for each replicum</span>
</span><span id="read_pbp-68"><a href="#read_pbp-68"><span class="linenos"> 68</span></a><span class="sd"> r_stop : list</span>
</span><span id="read_pbp-69"><a href="#read_pbp-69"><span class="linenos"> 69</span></a><span class="sd"> list which contains the last config to be read for each replicum</span>
</span><span id="read_pbp-70"><a href="#read_pbp-70"><span class="linenos"> 70</span></a>
</span><span id="read_pbp-71"><a href="#read_pbp-71"><span class="linenos"> 71</span></a><span class="sd"> Returns</span>
</span><span id="read_pbp-72"><a href="#read_pbp-72"><span class="linenos"> 72</span></a><span class="sd"> -------</span>
</span><span id="read_pbp-73"><a href="#read_pbp-73"><span class="linenos"> 73</span></a><span class="sd"> result : list[Obs]</span>
</span><span id="read_pbp-74"><a href="#read_pbp-74"><span class="linenos"> 74</span></a><span class="sd"> list of observables read</span>
</span><span id="read_pbp-75"><a href="#read_pbp-75"><span class="linenos"> 75</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="read_pbp-76"><a href="#read_pbp-76"><span class="linenos"> 76</span></a>
</span><span id="read_pbp-77"><a href="#read_pbp-77"><span class="linenos"> 77</span></a> <span class="n">ls</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="read_pbp-78"><a href="#read_pbp-78"><span class="linenos"> 78</span></a> <span class="k">for</span> <span class="p">(</span><span class="n">dirpath</span><span class="p">,</span> <span class="n">dirnames</span><span class="p">,</span> <span class="n">filenames</span><span class="p">)</span> <span class="ow">in</span> <span class="n">os</span><span class="o">.</span><span class="n">walk</span><span class="p">(</span><span class="n">path</span><span class="p">):</span>
</span><span id="read_pbp-79"><a href="#read_pbp-79"><span class="linenos"> 79</span></a> <span class="n">ls</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">filenames</span><span class="p">)</span>
</span><span id="read_pbp-80"><a href="#read_pbp-80"><span class="linenos"> 80</span></a> <span class="k">break</span>
</span><span id="read_pbp-81"><a href="#read_pbp-81"><span class="linenos"> 81</span></a>
</span><span id="read_pbp-82"><a href="#read_pbp-82"><span class="linenos"> 82</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">ls</span><span class="p">:</span>
</span><span id="read_pbp-83"><a href="#read_pbp-83"><span class="linenos"> 83</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;Error, directory not found&#39;</span><span class="p">)</span>
</span><span id="read_pbp-84"><a href="#read_pbp-84"><span class="linenos"> 84</span></a>
</span><span id="read_pbp-85"><a href="#read_pbp-85"><span class="linenos"> 85</span></a> <span class="c1"># Exclude files with different names</span>
</span><span id="read_pbp-86"><a href="#read_pbp-86"><span class="linenos"> 86</span></a> <span class="k">for</span> <span class="n">exc</span> <span class="ow">in</span> <span class="n">ls</span><span class="p">:</span>
</span><span id="read_pbp-87"><a href="#read_pbp-87"><span class="linenos"> 87</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">fnmatch</span><span class="o">.</span><span class="n">fnmatch</span><span class="p">(</span><span class="n">exc</span><span class="p">,</span> <span class="n">prefix</span> <span class="o">+</span> <span class="s1">&#39;*.dat&#39;</span><span class="p">):</span>
</span><span id="read_pbp-88"><a href="#read_pbp-88"><span class="linenos"> 88</span></a> <span class="n">ls</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">ls</span><span class="p">)</span> <span class="o">-</span> <span class="nb">set</span><span class="p">([</span><span class="n">exc</span><span class="p">]))</span>
</span><span id="read_pbp-89"><a href="#read_pbp-89"><span class="linenos"> 89</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">ls</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="read_pbp-90"><a href="#read_pbp-90"><span class="linenos"> 90</span></a> <span class="n">ls</span><span class="o">.</span><span class="n">sort</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="nb">int</span><span class="p">(</span><span class="n">re</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="sa">r</span><span class="s1">&#39;\d+&#39;</span><span class="p">,</span> <span class="n">x</span><span class="p">[</span><span class="nb">len</span><span class="p">(</span><span class="n">prefix</span><span class="p">):])[</span><span class="mi">0</span><span class="p">]))</span>
</span><span id="read_pbp-91"><a href="#read_pbp-91"><span class="linenos"> 91</span></a> <span class="n">replica</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">ls</span><span class="p">)</span>
</span><span id="read_pbp-92"><a href="#read_pbp-92"><span class="linenos"> 92</span></a>
</span><span id="read_pbp-93"><a href="#read_pbp-93"><span class="linenos"> 93</span></a> <span class="k">if</span> <span class="s1">&#39;r_start&#39;</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
</span><span id="read_pbp-94"><a href="#read_pbp-94"><span class="linenos"> 94</span></a> <span class="n">r_start</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;r_start&#39;</span><span class="p">)</span>
</span><span id="read_pbp-95"><a href="#read_pbp-95"><span class="linenos"> 95</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">r_start</span><span class="p">)</span> <span class="o">!=</span> <span class="n">replica</span><span class="p">:</span>
</span><span id="read_pbp-96"><a href="#read_pbp-96"><span class="linenos"> 96</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;r_start does not match number of replicas&#39;</span><span class="p">)</span>
</span><span id="read_pbp-97"><a href="#read_pbp-97"><span class="linenos"> 97</span></a> <span class="c1"># Adjust Configuration numbering to python index</span>
</span><span id="read_pbp-98"><a href="#read_pbp-98"><span class="linenos"> 98</span></a> <span class="n">r_start</span> <span class="o">=</span> <span class="p">[</span><span class="n">o</span> <span class="o">-</span> <span class="mi">1</span> <span class="k">if</span> <span class="n">o</span> <span class="k">else</span> <span class="kc">None</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">r_start</span><span class="p">]</span>
</span><span id="read_pbp-99"><a href="#read_pbp-99"><span class="linenos"> 99</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="read_pbp-100"><a href="#read_pbp-100"><span class="linenos">100</span></a> <span class="n">r_start</span> <span class="o">=</span> <span class="p">[</span><span class="kc">None</span><span class="p">]</span> <span class="o">*</span> <span class="n">replica</span>
</span><span id="read_pbp-101"><a href="#read_pbp-101"><span class="linenos">101</span></a>
</span><span id="read_pbp-102"><a href="#read_pbp-102"><span class="linenos">102</span></a> <span class="k">if</span> <span class="s1">&#39;r_stop&#39;</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
</span><span id="read_pbp-103"><a href="#read_pbp-103"><span class="linenos">103</span></a> <span class="n">r_stop</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;r_stop&#39;</span><span class="p">)</span>
</span><span id="read_pbp-104"><a href="#read_pbp-104"><span class="linenos">104</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">r_stop</span><span class="p">)</span> <span class="o">!=</span> <span class="n">replica</span><span class="p">:</span>
</span><span id="read_pbp-105"><a href="#read_pbp-105"><span class="linenos">105</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;r_stop does not match number of replicas&#39;</span><span class="p">)</span>
</span><span id="read_pbp-106"><a href="#read_pbp-106"><span class="linenos">106</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="read_pbp-107"><a href="#read_pbp-107"><span class="linenos">107</span></a> <span class="n">r_stop</span> <span class="o">=</span> <span class="p">[</span><span class="kc">None</span><span class="p">]</span> <span class="o">*</span> <span class="n">replica</span>
</span><span id="read_pbp-108"><a href="#read_pbp-108"><span class="linenos">108</span></a>
</span><span id="read_pbp-109"><a href="#read_pbp-109"><span class="linenos">109</span></a> <span class="nb">print</span><span class="p">(</span><span class="sa">r</span><span class="s1">&#39;Read &lt;bar</span><span class="si">{psi}</span><span class="s1">\psi&gt; from&#39;</span><span class="p">,</span> <span class="n">prefix</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> <span class="s1">&#39;,&#39;</span><span class="p">,</span> <span class="n">replica</span><span class="p">,</span> <span class="s1">&#39;replica&#39;</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="p">)</span>
<div class="pdoc-code codehilite"><pre><span></span><span id="read_pbp-101"><a href="#read_pbp-101"><span class="linenos">101</span></a><span class="k">def</span> <span class="nf">read_pbp</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">prefix</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="read_pbp-102"><a href="#read_pbp-102"><span class="linenos">102</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Read pbp format from given folder structure.</span>
</span><span id="read_pbp-103"><a href="#read_pbp-103"><span class="linenos">103</span></a>
</span><span id="read_pbp-104"><a href="#read_pbp-104"><span class="linenos">104</span></a><span class="sd"> Parameters</span>
</span><span id="read_pbp-105"><a href="#read_pbp-105"><span class="linenos">105</span></a><span class="sd"> ----------</span>
</span><span id="read_pbp-106"><a href="#read_pbp-106"><span class="linenos">106</span></a><span class="sd"> r_start : list</span>
</span><span id="read_pbp-107"><a href="#read_pbp-107"><span class="linenos">107</span></a><span class="sd"> list which contains the first config to be read for each replicum</span>
</span><span id="read_pbp-108"><a href="#read_pbp-108"><span class="linenos">108</span></a><span class="sd"> r_stop : list</span>
</span><span id="read_pbp-109"><a href="#read_pbp-109"><span class="linenos">109</span></a><span class="sd"> list which contains the last config to be read for each replicum</span>
</span><span id="read_pbp-110"><a href="#read_pbp-110"><span class="linenos">110</span></a>
</span><span id="read_pbp-111"><a href="#read_pbp-111"><span class="linenos">111</span></a> <span class="n">print_err</span> <span class="o">=</span> <span class="mi">0</span>
</span><span id="read_pbp-112"><a href="#read_pbp-112"><span class="linenos">112</span></a> <span class="k">if</span> <span class="s1">&#39;print_err&#39;</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
</span><span id="read_pbp-113"><a href="#read_pbp-113"><span class="linenos">113</span></a> <span class="n">print_err</span> <span class="o">=</span> <span class="mi">1</span>
</span><span id="read_pbp-114"><a href="#read_pbp-114"><span class="linenos">114</span></a> <span class="nb">print</span><span class="p">()</span>
</span><span id="read_pbp-115"><a href="#read_pbp-115"><span class="linenos">115</span></a>
</span><span id="read_pbp-116"><a href="#read_pbp-116"><span class="linenos">116</span></a> <span class="n">deltas</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="read_pbp-117"><a href="#read_pbp-117"><span class="linenos">117</span></a>
</span><span id="read_pbp-118"><a href="#read_pbp-118"><span class="linenos">118</span></a> <span class="k">for</span> <span class="n">rep</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">replica</span><span class="p">):</span>
</span><span id="read_pbp-119"><a href="#read_pbp-119"><span class="linenos">119</span></a> <span class="n">tmp_array</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="read_pbp-120"><a href="#read_pbp-120"><span class="linenos">120</span></a> <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">path</span> <span class="o">+</span> <span class="s1">&#39;/&#39;</span> <span class="o">+</span> <span class="n">ls</span><span class="p">[</span><span class="n">rep</span><span class="p">],</span> <span class="s1">&#39;rb&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">fp</span><span class="p">:</span>
</span><span id="read_pbp-111"><a href="#read_pbp-111"><span class="linenos">111</span></a><span class="sd"> Returns</span>
</span><span id="read_pbp-112"><a href="#read_pbp-112"><span class="linenos">112</span></a><span class="sd"> -------</span>
</span><span id="read_pbp-113"><a href="#read_pbp-113"><span class="linenos">113</span></a><span class="sd"> result : list[Obs]</span>
</span><span id="read_pbp-114"><a href="#read_pbp-114"><span class="linenos">114</span></a><span class="sd"> list of observables read</span>
</span><span id="read_pbp-115"><a href="#read_pbp-115"><span class="linenos">115</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="read_pbp-116"><a href="#read_pbp-116"><span class="linenos">116</span></a>
</span><span id="read_pbp-117"><a href="#read_pbp-117"><span class="linenos">117</span></a> <span class="n">ls</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="read_pbp-118"><a href="#read_pbp-118"><span class="linenos">118</span></a> <span class="k">for</span> <span class="p">(</span><span class="n">dirpath</span><span class="p">,</span> <span class="n">dirnames</span><span class="p">,</span> <span class="n">filenames</span><span class="p">)</span> <span class="ow">in</span> <span class="n">os</span><span class="o">.</span><span class="n">walk</span><span class="p">(</span><span class="n">path</span><span class="p">):</span>
</span><span id="read_pbp-119"><a href="#read_pbp-119"><span class="linenos">119</span></a> <span class="n">ls</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">filenames</span><span class="p">)</span>
</span><span id="read_pbp-120"><a href="#read_pbp-120"><span class="linenos">120</span></a> <span class="k">break</span>
</span><span id="read_pbp-121"><a href="#read_pbp-121"><span class="linenos">121</span></a>
</span><span id="read_pbp-122"><a href="#read_pbp-122"><span class="linenos">122</span></a> <span class="n">t</span> <span class="o">=</span> <span class="n">fp</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span> <span class="c1"># number of reweighting factors</span>
</span><span id="read_pbp-123"><a href="#read_pbp-123"><span class="linenos">123</span></a> <span class="k">if</span> <span class="n">rep</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
</span><span id="read_pbp-124"><a href="#read_pbp-124"><span class="linenos">124</span></a> <span class="n">nrw</span> <span class="o">=</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;i&#39;</span><span class="p">,</span> <span class="n">t</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
</span><span id="read_pbp-125"><a href="#read_pbp-125"><span class="linenos">125</span></a> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">nrw</span><span class="p">):</span>
</span><span id="read_pbp-126"><a href="#read_pbp-126"><span class="linenos">126</span></a> <span class="n">deltas</span><span class="o">.</span><span class="n">append</span><span class="p">([])</span>
</span><span id="read_pbp-127"><a href="#read_pbp-127"><span class="linenos">127</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="read_pbp-128"><a href="#read_pbp-128"><span class="linenos">128</span></a> <span class="k">if</span> <span class="n">nrw</span> <span class="o">!=</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;i&#39;</span><span class="p">,</span> <span class="n">t</span><span class="p">)[</span><span class="mi">0</span><span class="p">]:</span>
</span><span id="read_pbp-129"><a href="#read_pbp-129"><span class="linenos">129</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;Error: different number of factors for replicum&#39;</span><span class="p">,</span> <span class="n">rep</span><span class="p">)</span>
</span><span id="read_pbp-130"><a href="#read_pbp-130"><span class="linenos">130</span></a>
</span><span id="read_pbp-131"><a href="#read_pbp-131"><span class="linenos">131</span></a> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">nrw</span><span class="p">):</span>
</span><span id="read_pbp-132"><a href="#read_pbp-132"><span class="linenos">132</span></a> <span class="n">tmp_array</span><span class="o">.</span><span class="n">append</span><span class="p">([])</span>
</span><span id="read_pbp-133"><a href="#read_pbp-133"><span class="linenos">133</span></a>
</span><span id="read_pbp-134"><a href="#read_pbp-134"><span class="linenos">134</span></a> <span class="c1"># This block is necessary for openQCD1.6 ms1 files</span>
</span><span id="read_pbp-135"><a href="#read_pbp-135"><span class="linenos">135</span></a> <span class="n">nfct</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="read_pbp-136"><a href="#read_pbp-136"><span class="linenos">136</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">nrw</span><span class="p">):</span>
</span><span id="read_pbp-137"><a href="#read_pbp-137"><span class="linenos">137</span></a> <span class="n">t</span> <span class="o">=</span> <span class="n">fp</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span>
</span><span id="read_pbp-138"><a href="#read_pbp-138"><span class="linenos">138</span></a> <span class="n">nfct</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;i&#39;</span><span class="p">,</span> <span class="n">t</span><span class="p">)[</span><span class="mi">0</span><span class="p">])</span>
</span><span id="read_pbp-139"><a href="#read_pbp-139"><span class="linenos">139</span></a> <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;nfct: &#39;</span><span class="p">,</span> <span class="n">nfct</span><span class="p">)</span> <span class="c1"># Hasenbusch factor, 1 for rat reweighting</span>
</span><span id="read_pbp-140"><a href="#read_pbp-140"><span class="linenos">140</span></a>
</span><span id="read_pbp-141"><a href="#read_pbp-141"><span class="linenos">141</span></a> <span class="n">nsrc</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="read_pbp-142"><a href="#read_pbp-142"><span class="linenos">142</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">nrw</span><span class="p">):</span>
</span><span id="read_pbp-143"><a href="#read_pbp-143"><span class="linenos">143</span></a> <span class="n">t</span> <span class="o">=</span> <span class="n">fp</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span>
</span><span id="read_pbp-144"><a href="#read_pbp-144"><span class="linenos">144</span></a> <span class="n">nsrc</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;i&#39;</span><span class="p">,</span> <span class="n">t</span><span class="p">)[</span><span class="mi">0</span><span class="p">])</span>
</span><span id="read_pbp-145"><a href="#read_pbp-145"><span class="linenos">145</span></a>
</span><span id="read_pbp-146"><a href="#read_pbp-146"><span class="linenos">146</span></a> <span class="c1"># body</span>
</span><span id="read_pbp-147"><a href="#read_pbp-147"><span class="linenos">147</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
</span><span id="read_pbp-148"><a href="#read_pbp-148"><span class="linenos">148</span></a> <span class="n">t</span> <span class="o">=</span> <span class="n">fp</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span>
</span><span id="read_pbp-149"><a href="#read_pbp-149"><span class="linenos">149</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">t</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">4</span><span class="p">:</span>
</span><span id="read_pbp-150"><a href="#read_pbp-150"><span class="linenos">150</span></a> <span class="k">break</span>
</span><span id="read_pbp-151"><a href="#read_pbp-151"><span class="linenos">151</span></a> <span class="k">if</span> <span class="n">print_err</span><span class="p">:</span>
</span><span id="read_pbp-152"><a href="#read_pbp-152"><span class="linenos">152</span></a> <span class="n">config_no</span> <span class="o">=</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;i&#39;</span><span class="p">,</span> <span class="n">t</span><span class="p">)</span>
</span><span id="read_pbp-153"><a href="#read_pbp-153"><span class="linenos">153</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">nrw</span><span class="p">):</span>
</span><span id="read_pbp-154"><a href="#read_pbp-154"><span class="linenos">154</span></a> <span class="n">tmp_nfct</span> <span class="o">=</span> <span class="mf">1.0</span>
</span><span id="read_pbp-155"><a href="#read_pbp-155"><span class="linenos">155</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">nfct</span><span class="p">[</span><span class="n">i</span><span class="p">]):</span>
</span><span id="read_pbp-156"><a href="#read_pbp-156"><span class="linenos">156</span></a> <span class="n">t</span> <span class="o">=</span> <span class="n">fp</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">8</span> <span class="o">*</span> <span class="n">nsrc</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
</span><span id="read_pbp-157"><a href="#read_pbp-157"><span class="linenos">157</span></a> <span class="n">t</span> <span class="o">=</span> <span class="n">fp</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">8</span> <span class="o">*</span> <span class="n">nsrc</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
</span><span id="read_pbp-158"><a href="#read_pbp-158"><span class="linenos">158</span></a> <span class="n">tmp_rw</span> <span class="o">=</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;d&#39;</span> <span class="o">*</span> <span class="n">nsrc</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">t</span><span class="p">)</span>
</span><span id="read_pbp-159"><a href="#read_pbp-159"><span class="linenos">159</span></a> <span class="n">tmp_nfct</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">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">tmp_rw</span><span class="p">))</span>
</span><span id="read_pbp-160"><a href="#read_pbp-160"><span class="linenos">160</span></a> <span class="k">if</span> <span class="n">print_err</span><span class="p">:</span>
</span><span id="read_pbp-161"><a href="#read_pbp-161"><span class="linenos">161</span></a> <span class="nb">print</span><span class="p">(</span><span class="n">config_no</span><span class="p">,</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">tmp_rw</span><span class="p">)),</span> <span class="n">np</span><span class="o">.</span><span class="n">std</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">tmp_rw</span><span class="p">)))</span>
</span><span id="read_pbp-162"><a href="#read_pbp-162"><span class="linenos">162</span></a> <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Sources:&#39;</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">tmp_rw</span><span class="p">))</span>
</span><span id="read_pbp-163"><a href="#read_pbp-163"><span class="linenos">163</span></a> <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Partial factor:&#39;</span><span class="p">,</span> <span class="n">tmp_nfct</span><span class="p">)</span>
</span><span id="read_pbp-164"><a href="#read_pbp-164"><span class="linenos">164</span></a> <span class="n">tmp_array</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">tmp_nfct</span><span class="p">)</span>
</span><span id="read_pbp-165"><a href="#read_pbp-165"><span class="linenos">165</span></a>
</span><span id="read_pbp-166"><a href="#read_pbp-166"><span class="linenos">166</span></a> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">nrw</span><span class="p">):</span>
</span><span id="read_pbp-167"><a href="#read_pbp-167"><span class="linenos">167</span></a> <span class="n">deltas</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">tmp_array</span><span class="p">[</span><span class="n">k</span><span class="p">][</span><span class="n">r_start</span><span class="p">[</span><span class="n">rep</span><span class="p">]:</span><span class="n">r_stop</span><span class="p">[</span><span class="n">rep</span><span class="p">]])</span>
</span><span id="read_pbp-168"><a href="#read_pbp-168"><span class="linenos">168</span></a>
</span><span id="read_pbp-169"><a href="#read_pbp-169"><span class="linenos">169</span></a> <span class="n">rep_names</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="read_pbp-170"><a href="#read_pbp-170"><span class="linenos">170</span></a> <span class="k">for</span> <span class="n">entry</span> <span class="ow">in</span> <span class="n">ls</span><span class="p">:</span>
</span><span id="read_pbp-171"><a href="#read_pbp-171"><span class="linenos">171</span></a> <span class="n">truncated_entry</span> <span class="o">=</span> <span class="n">entry</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;.&#39;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
</span><span id="read_pbp-172"><a href="#read_pbp-172"><span class="linenos">172</span></a> <span class="n">idx</span> <span class="o">=</span> <span class="n">truncated_entry</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="s1">&#39;r&#39;</span><span class="p">)</span>
</span><span id="read_pbp-173"><a href="#read_pbp-173"><span class="linenos">173</span></a> <span class="n">rep_names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">truncated_entry</span><span class="p">[:</span><span class="n">idx</span><span class="p">]</span> <span class="o">+</span> <span class="s1">&#39;|&#39;</span> <span class="o">+</span> <span class="n">truncated_entry</span><span class="p">[</span><span class="n">idx</span><span class="p">:])</span>
</span><span id="read_pbp-174"><a href="#read_pbp-174"><span class="linenos">174</span></a> <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;,&#39;</span><span class="p">,</span> <span class="n">nrw</span><span class="p">,</span> <span class="sa">r</span><span class="s1">&#39;&lt;bar</span><span class="si">{psi}</span><span class="s1">\psi&gt; with&#39;</span><span class="p">,</span> <span class="n">nsrc</span><span class="p">,</span> <span class="s1">&#39;sources&#39;</span><span class="p">)</span>
</span><span id="read_pbp-175"><a href="#read_pbp-175"><span class="linenos">175</span></a> <span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="read_pbp-176"><a href="#read_pbp-176"><span class="linenos">176</span></a> <span class="k">for</span> <span class="n">t</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">nrw</span><span class="p">):</span>
</span><span id="read_pbp-177"><a href="#read_pbp-177"><span class="linenos">177</span></a> <span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Obs</span><span class="p">(</span><span class="n">deltas</span><span class="p">[</span><span class="n">t</span><span class="p">],</span> <span class="n">rep_names</span><span class="p">))</span>
</span><span id="read_pbp-178"><a href="#read_pbp-178"><span class="linenos">178</span></a>
</span><span id="read_pbp-179"><a href="#read_pbp-179"><span class="linenos">179</span></a> <span class="k">return</span> <span class="n">result</span>
</span><span id="read_pbp-122"><a href="#read_pbp-122"><span class="linenos">122</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">ls</span><span class="p">:</span>
</span><span id="read_pbp-123"><a href="#read_pbp-123"><span class="linenos">123</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;Error, directory not found&#39;</span><span class="p">)</span>
</span><span id="read_pbp-124"><a href="#read_pbp-124"><span class="linenos">124</span></a>
</span><span id="read_pbp-125"><a href="#read_pbp-125"><span class="linenos">125</span></a> <span class="c1"># Exclude files with different names</span>
</span><span id="read_pbp-126"><a href="#read_pbp-126"><span class="linenos">126</span></a> <span class="k">for</span> <span class="n">exc</span> <span class="ow">in</span> <span class="n">ls</span><span class="p">:</span>
</span><span id="read_pbp-127"><a href="#read_pbp-127"><span class="linenos">127</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">fnmatch</span><span class="o">.</span><span class="n">fnmatch</span><span class="p">(</span><span class="n">exc</span><span class="p">,</span> <span class="n">prefix</span> <span class="o">+</span> <span class="s1">&#39;*.dat&#39;</span><span class="p">):</span>
</span><span id="read_pbp-128"><a href="#read_pbp-128"><span class="linenos">128</span></a> <span class="n">ls</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">ls</span><span class="p">)</span> <span class="o">-</span> <span class="nb">set</span><span class="p">([</span><span class="n">exc</span><span class="p">]))</span>
</span><span id="read_pbp-129"><a href="#read_pbp-129"><span class="linenos">129</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">ls</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="read_pbp-130"><a href="#read_pbp-130"><span class="linenos">130</span></a> <span class="n">ls</span><span class="o">.</span><span class="n">sort</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="nb">int</span><span class="p">(</span><span class="n">re</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="sa">r</span><span class="s1">&#39;\d+&#39;</span><span class="p">,</span> <span class="n">x</span><span class="p">[</span><span class="nb">len</span><span class="p">(</span><span class="n">prefix</span><span class="p">):])[</span><span class="mi">0</span><span class="p">]))</span>
</span><span id="read_pbp-131"><a href="#read_pbp-131"><span class="linenos">131</span></a> <span class="n">replica</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">ls</span><span class="p">)</span>
</span><span id="read_pbp-132"><a href="#read_pbp-132"><span class="linenos">132</span></a>
</span><span id="read_pbp-133"><a href="#read_pbp-133"><span class="linenos">133</span></a> <span class="k">if</span> <span class="s1">&#39;r_start&#39;</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
</span><span id="read_pbp-134"><a href="#read_pbp-134"><span class="linenos">134</span></a> <span class="n">r_start</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;r_start&#39;</span><span class="p">)</span>
</span><span id="read_pbp-135"><a href="#read_pbp-135"><span class="linenos">135</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">r_start</span><span class="p">)</span> <span class="o">!=</span> <span class="n">replica</span><span class="p">:</span>
</span><span id="read_pbp-136"><a href="#read_pbp-136"><span class="linenos">136</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;r_start does not match number of replicas&#39;</span><span class="p">)</span>
</span><span id="read_pbp-137"><a href="#read_pbp-137"><span class="linenos">137</span></a> <span class="c1"># Adjust Configuration numbering to python index</span>
</span><span id="read_pbp-138"><a href="#read_pbp-138"><span class="linenos">138</span></a> <span class="n">r_start</span> <span class="o">=</span> <span class="p">[</span><span class="n">o</span> <span class="o">-</span> <span class="mi">1</span> <span class="k">if</span> <span class="n">o</span> <span class="k">else</span> <span class="kc">None</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">r_start</span><span class="p">]</span>
</span><span id="read_pbp-139"><a href="#read_pbp-139"><span class="linenos">139</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="read_pbp-140"><a href="#read_pbp-140"><span class="linenos">140</span></a> <span class="n">r_start</span> <span class="o">=</span> <span class="p">[</span><span class="kc">None</span><span class="p">]</span> <span class="o">*</span> <span class="n">replica</span>
</span><span id="read_pbp-141"><a href="#read_pbp-141"><span class="linenos">141</span></a>
</span><span id="read_pbp-142"><a href="#read_pbp-142"><span class="linenos">142</span></a> <span class="k">if</span> <span class="s1">&#39;r_stop&#39;</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
</span><span id="read_pbp-143"><a href="#read_pbp-143"><span class="linenos">143</span></a> <span class="n">r_stop</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;r_stop&#39;</span><span class="p">)</span>
</span><span id="read_pbp-144"><a href="#read_pbp-144"><span class="linenos">144</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">r_stop</span><span class="p">)</span> <span class="o">!=</span> <span class="n">replica</span><span class="p">:</span>
</span><span id="read_pbp-145"><a href="#read_pbp-145"><span class="linenos">145</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;r_stop does not match number of replicas&#39;</span><span class="p">)</span>
</span><span id="read_pbp-146"><a href="#read_pbp-146"><span class="linenos">146</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="read_pbp-147"><a href="#read_pbp-147"><span class="linenos">147</span></a> <span class="n">r_stop</span> <span class="o">=</span> <span class="p">[</span><span class="kc">None</span><span class="p">]</span> <span class="o">*</span> <span class="n">replica</span>
</span><span id="read_pbp-148"><a href="#read_pbp-148"><span class="linenos">148</span></a>
</span><span id="read_pbp-149"><a href="#read_pbp-149"><span class="linenos">149</span></a> <span class="nb">print</span><span class="p">(</span><span class="sa">r</span><span class="s1">&#39;Read &lt;bar</span><span class="si">{psi}</span><span class="s1">\psi&gt; from&#39;</span><span class="p">,</span> <span class="n">prefix</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> <span class="s1">&#39;,&#39;</span><span class="p">,</span> <span class="n">replica</span><span class="p">,</span> <span class="s1">&#39;replica&#39;</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="p">)</span>
</span><span id="read_pbp-150"><a href="#read_pbp-150"><span class="linenos">150</span></a>
</span><span id="read_pbp-151"><a href="#read_pbp-151"><span class="linenos">151</span></a> <span class="n">print_err</span> <span class="o">=</span> <span class="mi">0</span>
</span><span id="read_pbp-152"><a href="#read_pbp-152"><span class="linenos">152</span></a> <span class="k">if</span> <span class="s1">&#39;print_err&#39;</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
</span><span id="read_pbp-153"><a href="#read_pbp-153"><span class="linenos">153</span></a> <span class="n">print_err</span> <span class="o">=</span> <span class="mi">1</span>
</span><span id="read_pbp-154"><a href="#read_pbp-154"><span class="linenos">154</span></a> <span class="nb">print</span><span class="p">()</span>
</span><span id="read_pbp-155"><a href="#read_pbp-155"><span class="linenos">155</span></a>
</span><span id="read_pbp-156"><a href="#read_pbp-156"><span class="linenos">156</span></a> <span class="n">deltas</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="read_pbp-157"><a href="#read_pbp-157"><span class="linenos">157</span></a>
</span><span id="read_pbp-158"><a href="#read_pbp-158"><span class="linenos">158</span></a> <span class="k">for</span> <span class="n">rep</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">replica</span><span class="p">):</span>
</span><span id="read_pbp-159"><a href="#read_pbp-159"><span class="linenos">159</span></a> <span class="n">tmp_array</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="read_pbp-160"><a href="#read_pbp-160"><span class="linenos">160</span></a> <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">path</span> <span class="o">+</span> <span class="s1">&#39;/&#39;</span> <span class="o">+</span> <span class="n">ls</span><span class="p">[</span><span class="n">rep</span><span class="p">],</span> <span class="s1">&#39;rb&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">fp</span><span class="p">:</span>
</span><span id="read_pbp-161"><a href="#read_pbp-161"><span class="linenos">161</span></a>
</span><span id="read_pbp-162"><a href="#read_pbp-162"><span class="linenos">162</span></a> <span class="n">t</span> <span class="o">=</span> <span class="n">fp</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span> <span class="c1"># number of reweighting factors</span>
</span><span id="read_pbp-163"><a href="#read_pbp-163"><span class="linenos">163</span></a> <span class="k">if</span> <span class="n">rep</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
</span><span id="read_pbp-164"><a href="#read_pbp-164"><span class="linenos">164</span></a> <span class="n">nrw</span> <span class="o">=</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;i&#39;</span><span class="p">,</span> <span class="n">t</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
</span><span id="read_pbp-165"><a href="#read_pbp-165"><span class="linenos">165</span></a> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">nrw</span><span class="p">):</span>
</span><span id="read_pbp-166"><a href="#read_pbp-166"><span class="linenos">166</span></a> <span class="n">deltas</span><span class="o">.</span><span class="n">append</span><span class="p">([])</span>
</span><span id="read_pbp-167"><a href="#read_pbp-167"><span class="linenos">167</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="read_pbp-168"><a href="#read_pbp-168"><span class="linenos">168</span></a> <span class="k">if</span> <span class="n">nrw</span> <span class="o">!=</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;i&#39;</span><span class="p">,</span> <span class="n">t</span><span class="p">)[</span><span class="mi">0</span><span class="p">]:</span>
</span><span id="read_pbp-169"><a href="#read_pbp-169"><span class="linenos">169</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;Error: different number of factors for replicum&#39;</span><span class="p">,</span> <span class="n">rep</span><span class="p">)</span>
</span><span id="read_pbp-170"><a href="#read_pbp-170"><span class="linenos">170</span></a>
</span><span id="read_pbp-171"><a href="#read_pbp-171"><span class="linenos">171</span></a> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">nrw</span><span class="p">):</span>
</span><span id="read_pbp-172"><a href="#read_pbp-172"><span class="linenos">172</span></a> <span class="n">tmp_array</span><span class="o">.</span><span class="n">append</span><span class="p">([])</span>
</span><span id="read_pbp-173"><a href="#read_pbp-173"><span class="linenos">173</span></a>
</span><span id="read_pbp-174"><a href="#read_pbp-174"><span class="linenos">174</span></a> <span class="c1"># This block is necessary for openQCD1.6 ms1 files</span>
</span><span id="read_pbp-175"><a href="#read_pbp-175"><span class="linenos">175</span></a> <span class="n">nfct</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="read_pbp-176"><a href="#read_pbp-176"><span class="linenos">176</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">nrw</span><span class="p">):</span>
</span><span id="read_pbp-177"><a href="#read_pbp-177"><span class="linenos">177</span></a> <span class="n">t</span> <span class="o">=</span> <span class="n">fp</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span>
</span><span id="read_pbp-178"><a href="#read_pbp-178"><span class="linenos">178</span></a> <span class="n">nfct</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;i&#39;</span><span class="p">,</span> <span class="n">t</span><span class="p">)[</span><span class="mi">0</span><span class="p">])</span>
</span><span id="read_pbp-179"><a href="#read_pbp-179"><span class="linenos">179</span></a> <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;nfct: &#39;</span><span class="p">,</span> <span class="n">nfct</span><span class="p">)</span> <span class="c1"># Hasenbusch factor, 1 for rat reweighting</span>
</span><span id="read_pbp-180"><a href="#read_pbp-180"><span class="linenos">180</span></a>
</span><span id="read_pbp-181"><a href="#read_pbp-181"><span class="linenos">181</span></a> <span class="n">nsrc</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="read_pbp-182"><a href="#read_pbp-182"><span class="linenos">182</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">nrw</span><span class="p">):</span>
</span><span id="read_pbp-183"><a href="#read_pbp-183"><span class="linenos">183</span></a> <span class="n">t</span> <span class="o">=</span> <span class="n">fp</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span>
</span><span id="read_pbp-184"><a href="#read_pbp-184"><span class="linenos">184</span></a> <span class="n">nsrc</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;i&#39;</span><span class="p">,</span> <span class="n">t</span><span class="p">)[</span><span class="mi">0</span><span class="p">])</span>
</span><span id="read_pbp-185"><a href="#read_pbp-185"><span class="linenos">185</span></a>
</span><span id="read_pbp-186"><a href="#read_pbp-186"><span class="linenos">186</span></a> <span class="c1"># body</span>
</span><span id="read_pbp-187"><a href="#read_pbp-187"><span class="linenos">187</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
</span><span id="read_pbp-188"><a href="#read_pbp-188"><span class="linenos">188</span></a> <span class="n">t</span> <span class="o">=</span> <span class="n">fp</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span>
</span><span id="read_pbp-189"><a href="#read_pbp-189"><span class="linenos">189</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">t</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">4</span><span class="p">:</span>
</span><span id="read_pbp-190"><a href="#read_pbp-190"><span class="linenos">190</span></a> <span class="k">break</span>
</span><span id="read_pbp-191"><a href="#read_pbp-191"><span class="linenos">191</span></a> <span class="k">if</span> <span class="n">print_err</span><span class="p">:</span>
</span><span id="read_pbp-192"><a href="#read_pbp-192"><span class="linenos">192</span></a> <span class="n">config_no</span> <span class="o">=</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;i&#39;</span><span class="p">,</span> <span class="n">t</span><span class="p">)</span>
</span><span id="read_pbp-193"><a href="#read_pbp-193"><span class="linenos">193</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">nrw</span><span class="p">):</span>
</span><span id="read_pbp-194"><a href="#read_pbp-194"><span class="linenos">194</span></a> <span class="n">tmp_nfct</span> <span class="o">=</span> <span class="mf">1.0</span>
</span><span id="read_pbp-195"><a href="#read_pbp-195"><span class="linenos">195</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">nfct</span><span class="p">[</span><span class="n">i</span><span class="p">]):</span>
</span><span id="read_pbp-196"><a href="#read_pbp-196"><span class="linenos">196</span></a> <span class="n">t</span> <span class="o">=</span> <span class="n">fp</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">8</span> <span class="o">*</span> <span class="n">nsrc</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
</span><span id="read_pbp-197"><a href="#read_pbp-197"><span class="linenos">197</span></a> <span class="n">t</span> <span class="o">=</span> <span class="n">fp</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">8</span> <span class="o">*</span> <span class="n">nsrc</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
</span><span id="read_pbp-198"><a href="#read_pbp-198"><span class="linenos">198</span></a> <span class="n">tmp_rw</span> <span class="o">=</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;d&#39;</span> <span class="o">*</span> <span class="n">nsrc</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">t</span><span class="p">)</span>
</span><span id="read_pbp-199"><a href="#read_pbp-199"><span class="linenos">199</span></a> <span class="n">tmp_nfct</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">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">tmp_rw</span><span class="p">))</span>
</span><span id="read_pbp-200"><a href="#read_pbp-200"><span class="linenos">200</span></a> <span class="k">if</span> <span class="n">print_err</span><span class="p">:</span>
</span><span id="read_pbp-201"><a href="#read_pbp-201"><span class="linenos">201</span></a> <span class="nb">print</span><span class="p">(</span><span class="n">config_no</span><span class="p">,</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">tmp_rw</span><span class="p">)),</span> <span class="n">np</span><span class="o">.</span><span class="n">std</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">tmp_rw</span><span class="p">)))</span>
</span><span id="read_pbp-202"><a href="#read_pbp-202"><span class="linenos">202</span></a> <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Sources:&#39;</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">tmp_rw</span><span class="p">))</span>
</span><span id="read_pbp-203"><a href="#read_pbp-203"><span class="linenos">203</span></a> <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Partial factor:&#39;</span><span class="p">,</span> <span class="n">tmp_nfct</span><span class="p">)</span>
</span><span id="read_pbp-204"><a href="#read_pbp-204"><span class="linenos">204</span></a> <span class="n">tmp_array</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">tmp_nfct</span><span class="p">)</span>
</span><span id="read_pbp-205"><a href="#read_pbp-205"><span class="linenos">205</span></a>
</span><span id="read_pbp-206"><a href="#read_pbp-206"><span class="linenos">206</span></a> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">nrw</span><span class="p">):</span>
</span><span id="read_pbp-207"><a href="#read_pbp-207"><span class="linenos">207</span></a> <span class="n">deltas</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">tmp_array</span><span class="p">[</span><span class="n">k</span><span class="p">][</span><span class="n">r_start</span><span class="p">[</span><span class="n">rep</span><span class="p">]:</span><span class="n">r_stop</span><span class="p">[</span><span class="n">rep</span><span class="p">]])</span>
</span><span id="read_pbp-208"><a href="#read_pbp-208"><span class="linenos">208</span></a>
</span><span id="read_pbp-209"><a href="#read_pbp-209"><span class="linenos">209</span></a> <span class="n">rep_names</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="read_pbp-210"><a href="#read_pbp-210"><span class="linenos">210</span></a> <span class="k">for</span> <span class="n">entry</span> <span class="ow">in</span> <span class="n">ls</span><span class="p">:</span>
</span><span id="read_pbp-211"><a href="#read_pbp-211"><span class="linenos">211</span></a> <span class="n">truncated_entry</span> <span class="o">=</span> <span class="n">entry</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;.&#39;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
</span><span id="read_pbp-212"><a href="#read_pbp-212"><span class="linenos">212</span></a> <span class="n">idx</span> <span class="o">=</span> <span class="n">truncated_entry</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="s1">&#39;r&#39;</span><span class="p">)</span>
</span><span id="read_pbp-213"><a href="#read_pbp-213"><span class="linenos">213</span></a> <span class="n">rep_names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">truncated_entry</span><span class="p">[:</span><span class="n">idx</span><span class="p">]</span> <span class="o">+</span> <span class="s1">&#39;|&#39;</span> <span class="o">+</span> <span class="n">truncated_entry</span><span class="p">[</span><span class="n">idx</span><span class="p">:])</span>
</span><span id="read_pbp-214"><a href="#read_pbp-214"><span class="linenos">214</span></a> <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;,&#39;</span><span class="p">,</span> <span class="n">nrw</span><span class="p">,</span> <span class="sa">r</span><span class="s1">&#39;&lt;bar</span><span class="si">{psi}</span><span class="s1">\psi&gt; with&#39;</span><span class="p">,</span> <span class="n">nsrc</span><span class="p">,</span> <span class="s1">&#39;sources&#39;</span><span class="p">)</span>
</span><span id="read_pbp-215"><a href="#read_pbp-215"><span class="linenos">215</span></a> <span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="read_pbp-216"><a href="#read_pbp-216"><span class="linenos">216</span></a> <span class="k">for</span> <span class="n">t</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">nrw</span><span class="p">):</span>
</span><span id="read_pbp-217"><a href="#read_pbp-217"><span class="linenos">217</span></a> <span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Obs</span><span class="p">(</span><span class="n">deltas</span><span class="p">[</span><span class="n">t</span><span class="p">],</span> <span class="n">rep_names</span><span class="p">))</span>
</span><span id="read_pbp-218"><a href="#read_pbp-218"><span class="linenos">218</span></a>
</span><span id="read_pbp-219"><a href="#read_pbp-219"><span class="linenos">219</span></a> <span class="k">return</span> <span class="n">result</span>
</span></pre></div>

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long