mirror of
https://github.com/fjosw/pyerrors.git
synced 2025-05-15 12:03:42 +02:00
Documentation updated
This commit is contained in:
parent
324200cb8e
commit
6aaffbad36
2 changed files with 27 additions and 102 deletions
|
@ -226,8 +226,6 @@
|
||||||
<span class="sd"> correlated_fit : bool</span>
|
<span class="sd"> correlated_fit : bool</span>
|
||||||
<span class="sd"> If true, use the full correlation matrix in the definition of the chisquare</span>
|
<span class="sd"> If true, use the full correlation matrix in the definition of the chisquare</span>
|
||||||
<span class="sd"> (only works for prior==None and when no method is given, at the moment).</span>
|
<span class="sd"> (only works for prior==None and when no method is given, at the moment).</span>
|
||||||
<span class="sd"> const_par : list, optional</span>
|
|
||||||
<span class="sd"> List of N Obs that are used to constrain the last N fit parameters of func.</span>
|
|
||||||
<span class="sd"> '''</span>
|
<span class="sd"> '''</span>
|
||||||
<span class="k">if</span> <span class="n">priors</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
<span class="k">if</span> <span class="n">priors</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||||
<span class="k">return</span> <span class="n">_prior_fit</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">priors</span><span class="p">,</span> <span class="n">silent</span><span class="o">=</span><span class="n">silent</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
<span class="k">return</span> <span class="n">_prior_fit</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">priors</span><span class="p">,</span> <span class="n">silent</span><span class="o">=</span><span class="n">silent</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||||
|
@ -273,8 +271,6 @@
|
||||||
<span class="sd"> corrected by effects caused by correlated input data.</span>
|
<span class="sd"> corrected by effects caused by correlated input data.</span>
|
||||||
<span class="sd"> This can take a while as the full correlation matrix</span>
|
<span class="sd"> This can take a while as the full correlation matrix</span>
|
||||||
<span class="sd"> has to be calculated (default False).</span>
|
<span class="sd"> has to be calculated (default False).</span>
|
||||||
<span class="sd"> const_par : list, optional</span>
|
|
||||||
<span class="sd"> List of N Obs that are used to constrain the last N fit parameters of func.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Based on the orthogonal distance regression module of scipy</span>
|
<span class="sd"> Based on the orthogonal distance regression module of scipy</span>
|
||||||
<span class="sd"> '''</span>
|
<span class="sd"> '''</span>
|
||||||
|
@ -290,17 +286,6 @@
|
||||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">callable</span><span class="p">(</span><span class="n">func</span><span class="p">):</span>
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">callable</span><span class="p">(</span><span class="n">func</span><span class="p">):</span>
|
||||||
<span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s1">'func has to be a function.'</span><span class="p">)</span>
|
<span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s1">'func has to be a function.'</span><span class="p">)</span>
|
||||||
|
|
||||||
<span class="n">func_aug</span> <span class="o">=</span> <span class="n">func</span>
|
|
||||||
<span class="k">if</span> <span class="s1">'const_par'</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
|
|
||||||
<span class="n">const_par</span> <span class="o">=</span> <span class="n">kwargs</span><span class="p">[</span><span class="s1">'const_par'</span><span class="p">]</span>
|
|
||||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">const_par</span><span class="p">,</span> <span class="n">Obs</span><span class="p">):</span>
|
|
||||||
<span class="n">const_par</span> <span class="o">=</span> <span class="p">[</span><span class="n">const_par</span><span class="p">]</span>
|
|
||||||
|
|
||||||
<span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span>
|
|
||||||
<span class="k">return</span> <span class="n">func_aug</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">((</span><span class="n">p</span><span class="p">,</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">const_par</span><span class="p">])),</span> <span class="n">x</span><span class="p">)</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="n">const_par</span> <span class="o">=</span> <span class="p">[]</span>
|
|
||||||
|
|
||||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">25</span><span class="p">):</span>
|
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">25</span><span class="p">):</span>
|
||||||
<span class="k">try</span><span class="p">:</span>
|
<span class="k">try</span><span class="p">:</span>
|
||||||
<span class="n">func</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">i</span><span class="p">),</span> <span class="n">x</span><span class="o">.</span><span class="n">T</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
<span class="n">func</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">i</span><span class="p">),</span> <span class="n">x</span><span class="o">.</span><span class="n">T</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||||
|
@ -312,8 +297,6 @@
|
||||||
<span class="n">n_parms</span> <span class="o">=</span> <span class="n">i</span>
|
<span class="n">n_parms</span> <span class="o">=</span> <span class="n">i</span>
|
||||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">silent</span><span class="p">:</span>
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">silent</span><span class="p">:</span>
|
||||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'Fit with'</span><span class="p">,</span> <span class="n">n_parms</span><span class="p">,</span> <span class="s1">'parameter'</span> <span class="o">+</span> <span class="s1">'s'</span> <span class="o">*</span> <span class="p">(</span><span class="n">n_parms</span> <span class="o">></span> <span class="mi">1</span><span class="p">))</span>
|
<span class="nb">print</span><span class="p">(</span><span class="s1">'Fit with'</span><span class="p">,</span> <span class="n">n_parms</span><span class="p">,</span> <span class="s1">'parameter'</span> <span class="o">+</span> <span class="s1">'s'</span> <span class="o">*</span> <span class="p">(</span><span class="n">n_parms</span> <span class="o">></span> <span class="mi">1</span><span class="p">))</span>
|
||||||
<span class="k">if</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">const_par</span><span class="p">)</span> <span class="o">></span> <span class="mi">0</span><span class="p">):</span>
|
|
||||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'and </span><span class="si">%d</span><span class="s1"> constrained parameter</span><span class="si">%s</span><span class="s1">'</span> <span class="o">%</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">const_par</span><span class="p">),</span> <span class="s1">'s'</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">const_par</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span> <span class="k">else</span> <span class="s1">''</span><span class="p">),</span> <span class="n">const_par</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">x_f</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">vectorize</span><span class="p">(</span><span class="k">lambda</span> <span class="n">o</span><span class="p">:</span> <span class="n">o</span><span class="o">.</span><span class="n">value</span><span class="p">)(</span><span class="n">x</span><span class="p">)</span>
|
<span class="n">x_f</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">vectorize</span><span class="p">(</span><span class="k">lambda</span> <span class="n">o</span><span class="p">:</span> <span class="n">o</span><span class="o">.</span><span class="n">value</span><span class="p">)(</span><span class="n">x</span><span class="p">)</span>
|
||||||
<span class="n">dx_f</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">vectorize</span><span class="p">(</span><span class="k">lambda</span> <span class="n">o</span><span class="p">:</span> <span class="n">o</span><span class="o">.</span><span class="n">dvalue</span><span class="p">)(</span><span class="n">x</span><span class="p">)</span>
|
<span class="n">dx_f</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">vectorize</span><span class="p">(</span><span class="k">lambda</span> <span class="n">o</span><span class="p">:</span> <span class="n">o</span><span class="o">.</span><span class="n">dvalue</span><span class="p">)(</span><span class="n">x</span><span class="p">)</span>
|
||||||
|
@ -356,18 +339,12 @@
|
||||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">'The minimization procedure did not converge.'</span><span class="p">)</span>
|
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">'The minimization procedure did not converge.'</span><span class="p">)</span>
|
||||||
|
|
||||||
<span class="n">m</span> <span class="o">=</span> <span class="n">x_f</span><span class="o">.</span><span class="n">size</span>
|
<span class="n">m</span> <span class="o">=</span> <span class="n">x_f</span><span class="o">.</span><span class="n">size</span>
|
||||||
<span class="n">n_parms_aug</span> <span class="o">=</span> <span class="n">n_parms</span> <span class="o">+</span> <span class="nb">len</span><span class="p">(</span><span class="n">const_par</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">def</span> <span class="nf">odr_chisquare</span><span class="p">(</span><span class="n">p</span><span class="p">):</span>
|
<span class="k">def</span> <span class="nf">odr_chisquare</span><span class="p">(</span><span class="n">p</span><span class="p">):</span>
|
||||||
<span class="n">model</span> <span class="o">=</span> <span class="n">func</span><span class="p">(</span><span class="n">p</span><span class="p">[:</span><span class="n">n_parms</span><span class="p">],</span> <span class="n">p</span><span class="p">[</span><span class="n">n_parms</span><span class="p">:]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">x_shape</span><span class="p">))</span>
|
<span class="n">model</span> <span class="o">=</span> <span class="n">func</span><span class="p">(</span><span class="n">p</span><span class="p">[:</span><span class="n">n_parms</span><span class="p">],</span> <span class="n">p</span><span class="p">[</span><span class="n">n_parms</span><span class="p">:]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">x_shape</span><span class="p">))</span>
|
||||||
<span class="n">chisq</span> <span class="o">=</span> <span class="n">anp</span><span class="o">.</span><span class="n">sum</span><span class="p">(((</span><span class="n">y_f</span> <span class="o">-</span> <span class="n">model</span><span class="p">)</span> <span class="o">/</span> <span class="n">dy_f</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span> <span class="o">+</span> <span class="n">anp</span><span class="o">.</span><span class="n">sum</span><span class="p">(((</span><span class="n">x_f</span> <span class="o">-</span> <span class="n">p</span><span class="p">[</span><span class="n">n_parms</span><span class="p">:]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">x_shape</span><span class="p">))</span> <span class="o">/</span> <span class="n">dx_f</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span>
|
<span class="n">chisq</span> <span class="o">=</span> <span class="n">anp</span><span class="o">.</span><span class="n">sum</span><span class="p">(((</span><span class="n">y_f</span> <span class="o">-</span> <span class="n">model</span><span class="p">)</span> <span class="o">/</span> <span class="n">dy_f</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span> <span class="o">+</span> <span class="n">anp</span><span class="o">.</span><span class="n">sum</span><span class="p">(((</span><span class="n">x_f</span> <span class="o">-</span> <span class="n">p</span><span class="p">[</span><span class="n">n_parms</span><span class="p">:]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">x_shape</span><span class="p">))</span> <span class="o">/</span> <span class="n">dx_f</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span>
|
||||||
<span class="k">return</span> <span class="n">chisq</span>
|
<span class="k">return</span> <span class="n">chisq</span>
|
||||||
|
|
||||||
<span class="k">def</span> <span class="nf">odr_chisquare_aug</span><span class="p">(</span><span class="n">p</span><span class="p">):</span>
|
|
||||||
<span class="n">model</span> <span class="o">=</span> <span class="n">func_aug</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">((</span><span class="n">p</span><span class="p">[:</span><span class="n">n_parms_aug</span><span class="p">],</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">const_par</span><span class="p">])),</span> <span class="n">p</span><span class="p">[</span><span class="n">n_parms_aug</span><span class="p">:]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">x_shape</span><span class="p">))</span>
|
|
||||||
<span class="n">chisq</span> <span class="o">=</span> <span class="n">anp</span><span class="o">.</span><span class="n">sum</span><span class="p">(((</span><span class="n">y_f</span> <span class="o">-</span> <span class="n">model</span><span class="p">)</span> <span class="o">/</span> <span class="n">dy_f</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span> <span class="o">+</span> <span class="n">anp</span><span class="o">.</span><span class="n">sum</span><span class="p">(((</span><span class="n">x_f</span> <span class="o">-</span> <span class="n">p</span><span class="p">[</span><span class="n">n_parms_aug</span><span class="p">:]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">x_shape</span><span class="p">))</span> <span class="o">/</span> <span class="n">dx_f</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="n">chisq</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'expected_chisquare'</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span>
|
<span class="k">if</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'expected_chisquare'</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span>
|
||||||
<span class="n">W</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="mi">1</span> <span class="o">/</span> <span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">((</span><span class="n">dy_f</span><span class="o">.</span><span class="n">ravel</span><span class="p">(),</span> <span class="n">dx_f</span><span class="o">.</span><span class="n">ravel</span><span class="p">()))))</span>
|
<span class="n">W</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="mi">1</span> <span class="o">/</span> <span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">((</span><span class="n">dy_f</span><span class="o">.</span><span class="n">ravel</span><span class="p">(),</span> <span class="n">dx_f</span><span class="o">.</span><span class="n">ravel</span><span class="p">()))))</span>
|
||||||
|
|
||||||
|
@ -394,32 +371,32 @@
|
||||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'chisquare/expected_chisquare:'</span><span class="p">,</span>
|
<span class="nb">print</span><span class="p">(</span><span class="s1">'chisquare/expected_chisquare:'</span><span class="p">,</span>
|
||||||
<span class="n">output</span><span class="o">.</span><span class="n">chisquare_by_expected_chisquare</span><span class="p">)</span>
|
<span class="n">output</span><span class="o">.</span><span class="n">chisquare_by_expected_chisquare</span><span class="p">)</span>
|
||||||
|
|
||||||
<span class="n">fitp</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">((</span><span class="n">out</span><span class="o">.</span><span class="n">beta</span><span class="p">,</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">const_par</span><span class="p">]))</span>
|
<span class="n">fitp</span> <span class="o">=</span> <span class="n">out</span><span class="o">.</span><span class="n">beta</span>
|
||||||
<span class="n">hess_inv</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linalg</span><span class="o">.</span><span class="n">pinv</span><span class="p">(</span><span class="n">jacobian</span><span class="p">(</span><span class="n">jacobian</span><span class="p">(</span><span class="n">odr_chisquare_aug</span><span class="p">))(</span><span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">((</span><span class="n">fitp</span><span class="p">,</span> <span class="n">out</span><span class="o">.</span><span class="n">xplus</span><span class="o">.</span><span class="n">ravel</span><span class="p">()))))</span>
|
<span class="n">hess_inv</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linalg</span><span class="o">.</span><span class="n">pinv</span><span class="p">(</span><span class="n">jacobian</span><span class="p">(</span><span class="n">jacobian</span><span class="p">(</span><span class="n">odr_chisquare</span><span class="p">))(</span><span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">((</span><span class="n">fitp</span><span class="p">,</span> <span class="n">out</span><span class="o">.</span><span class="n">xplus</span><span class="o">.</span><span class="n">ravel</span><span class="p">()))))</span>
|
||||||
|
|
||||||
<span class="k">def</span> <span class="nf">odr_chisquare_compact_x</span><span class="p">(</span><span class="n">d</span><span class="p">):</span>
|
<span class="k">def</span> <span class="nf">odr_chisquare_compact_x</span><span class="p">(</span><span class="n">d</span><span class="p">):</span>
|
||||||
<span class="n">model</span> <span class="o">=</span> <span class="n">func_aug</span><span class="p">(</span><span class="n">d</span><span class="p">[:</span><span class="n">n_parms_aug</span><span class="p">],</span> <span class="n">d</span><span class="p">[</span><span class="n">n_parms_aug</span><span class="p">:</span><span class="n">n_parms_aug</span> <span class="o">+</span> <span class="n">m</span><span class="p">]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">x_shape</span><span class="p">))</span>
|
<span class="n">model</span> <span class="o">=</span> <span class="n">func</span><span class="p">(</span><span class="n">d</span><span class="p">[:</span><span class="n">n_parms</span><span class="p">],</span> <span class="n">d</span><span class="p">[</span><span class="n">n_parms</span><span class="p">:</span><span class="n">n_parms</span> <span class="o">+</span> <span class="n">m</span><span class="p">]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">x_shape</span><span class="p">))</span>
|
||||||
<span class="n">chisq</span> <span class="o">=</span> <span class="n">anp</span><span class="o">.</span><span class="n">sum</span><span class="p">(((</span><span class="n">y_f</span> <span class="o">-</span> <span class="n">model</span><span class="p">)</span> <span class="o">/</span> <span class="n">dy_f</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span> <span class="o">+</span> <span class="n">anp</span><span class="o">.</span><span class="n">sum</span><span class="p">(((</span><span class="n">d</span><span class="p">[</span><span class="n">n_parms_aug</span> <span class="o">+</span> <span class="n">m</span><span class="p">:]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">x_shape</span><span class="p">)</span> <span class="o">-</span> <span class="n">d</span><span class="p">[</span><span class="n">n_parms_aug</span><span class="p">:</span><span class="n">n_parms_aug</span> <span class="o">+</span> <span class="n">m</span><span class="p">]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">x_shape</span><span class="p">))</span> <span class="o">/</span> <span class="n">dx_f</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span>
|
<span class="n">chisq</span> <span class="o">=</span> <span class="n">anp</span><span class="o">.</span><span class="n">sum</span><span class="p">(((</span><span class="n">y_f</span> <span class="o">-</span> <span class="n">model</span><span class="p">)</span> <span class="o">/</span> <span class="n">dy_f</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span> <span class="o">+</span> <span class="n">anp</span><span class="o">.</span><span class="n">sum</span><span class="p">(((</span><span class="n">d</span><span class="p">[</span><span class="n">n_parms</span> <span class="o">+</span> <span class="n">m</span><span class="p">:]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">x_shape</span><span class="p">)</span> <span class="o">-</span> <span class="n">d</span><span class="p">[</span><span class="n">n_parms</span><span class="p">:</span><span class="n">n_parms</span> <span class="o">+</span> <span class="n">m</span><span class="p">]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">x_shape</span><span class="p">))</span> <span class="o">/</span> <span class="n">dx_f</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span>
|
||||||
<span class="k">return</span> <span class="n">chisq</span>
|
<span class="k">return</span> <span class="n">chisq</span>
|
||||||
|
|
||||||
<span class="n">jac_jac_x</span> <span class="o">=</span> <span class="n">jacobian</span><span class="p">(</span><span class="n">jacobian</span><span class="p">(</span><span class="n">odr_chisquare_compact_x</span><span class="p">))(</span><span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">((</span><span class="n">fitp</span><span class="p">,</span> <span class="n">out</span><span class="o">.</span><span class="n">xplus</span><span class="o">.</span><span class="n">ravel</span><span class="p">(),</span> <span class="n">x_f</span><span class="o">.</span><span class="n">ravel</span><span class="p">())))</span>
|
<span class="n">jac_jac_x</span> <span class="o">=</span> <span class="n">jacobian</span><span class="p">(</span><span class="n">jacobian</span><span class="p">(</span><span class="n">odr_chisquare_compact_x</span><span class="p">))(</span><span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">((</span><span class="n">fitp</span><span class="p">,</span> <span class="n">out</span><span class="o">.</span><span class="n">xplus</span><span class="o">.</span><span class="n">ravel</span><span class="p">(),</span> <span class="n">x_f</span><span class="o">.</span><span class="n">ravel</span><span class="p">())))</span>
|
||||||
|
|
||||||
<span class="n">deriv_x</span> <span class="o">=</span> <span class="o">-</span><span class="n">hess_inv</span> <span class="o">@</span> <span class="n">jac_jac_x</span><span class="p">[:</span><span class="n">n_parms_aug</span> <span class="o">+</span> <span class="n">m</span><span class="p">,</span> <span class="n">n_parms_aug</span> <span class="o">+</span> <span class="n">m</span><span class="p">:]</span>
|
<span class="n">deriv_x</span> <span class="o">=</span> <span class="o">-</span><span class="n">hess_inv</span> <span class="o">@</span> <span class="n">jac_jac_x</span><span class="p">[:</span><span class="n">n_parms</span> <span class="o">+</span> <span class="n">m</span><span class="p">,</span> <span class="n">n_parms</span> <span class="o">+</span> <span class="n">m</span><span class="p">:]</span>
|
||||||
|
|
||||||
<span class="k">def</span> <span class="nf">odr_chisquare_compact_y</span><span class="p">(</span><span class="n">d</span><span class="p">):</span>
|
<span class="k">def</span> <span class="nf">odr_chisquare_compact_y</span><span class="p">(</span><span class="n">d</span><span class="p">):</span>
|
||||||
<span class="n">model</span> <span class="o">=</span> <span class="n">func_aug</span><span class="p">(</span><span class="n">d</span><span class="p">[:</span><span class="n">n_parms_aug</span><span class="p">],</span> <span class="n">d</span><span class="p">[</span><span class="n">n_parms_aug</span><span class="p">:</span><span class="n">n_parms_aug</span> <span class="o">+</span> <span class="n">m</span><span class="p">]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">x_shape</span><span class="p">))</span>
|
<span class="n">model</span> <span class="o">=</span> <span class="n">func</span><span class="p">(</span><span class="n">d</span><span class="p">[:</span><span class="n">n_parms</span><span class="p">],</span> <span class="n">d</span><span class="p">[</span><span class="n">n_parms</span><span class="p">:</span><span class="n">n_parms</span> <span class="o">+</span> <span class="n">m</span><span class="p">]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">x_shape</span><span class="p">))</span>
|
||||||
<span class="n">chisq</span> <span class="o">=</span> <span class="n">anp</span><span class="o">.</span><span class="n">sum</span><span class="p">(((</span><span class="n">d</span><span class="p">[</span><span class="n">n_parms_aug</span> <span class="o">+</span> <span class="n">m</span><span class="p">:]</span> <span class="o">-</span> <span class="n">model</span><span class="p">)</span> <span class="o">/</span> <span class="n">dy_f</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span> <span class="o">+</span> <span class="n">anp</span><span class="o">.</span><span class="n">sum</span><span class="p">(((</span><span class="n">x_f</span> <span class="o">-</span> <span class="n">d</span><span class="p">[</span><span class="n">n_parms_aug</span><span class="p">:</span><span class="n">n_parms_aug</span> <span class="o">+</span> <span class="n">m</span><span class="p">]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">x_shape</span><span class="p">))</span> <span class="o">/</span> <span class="n">dx_f</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span>
|
<span class="n">chisq</span> <span class="o">=</span> <span class="n">anp</span><span class="o">.</span><span class="n">sum</span><span class="p">(((</span><span class="n">d</span><span class="p">[</span><span class="n">n_parms</span> <span class="o">+</span> <span class="n">m</span><span class="p">:]</span> <span class="o">-</span> <span class="n">model</span><span class="p">)</span> <span class="o">/</span> <span class="n">dy_f</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span> <span class="o">+</span> <span class="n">anp</span><span class="o">.</span><span class="n">sum</span><span class="p">(((</span><span class="n">x_f</span> <span class="o">-</span> <span class="n">d</span><span class="p">[</span><span class="n">n_parms</span><span class="p">:</span><span class="n">n_parms</span> <span class="o">+</span> <span class="n">m</span><span class="p">]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">x_shape</span><span class="p">))</span> <span class="o">/</span> <span class="n">dx_f</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span>
|
||||||
<span class="k">return</span> <span class="n">chisq</span>
|
<span class="k">return</span> <span class="n">chisq</span>
|
||||||
|
|
||||||
<span class="n">jac_jac_y</span> <span class="o">=</span> <span class="n">jacobian</span><span class="p">(</span><span class="n">jacobian</span><span class="p">(</span><span class="n">odr_chisquare_compact_y</span><span class="p">))(</span><span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">((</span><span class="n">fitp</span><span class="p">,</span> <span class="n">out</span><span class="o">.</span><span class="n">xplus</span><span class="o">.</span><span class="n">ravel</span><span class="p">(),</span> <span class="n">y_f</span><span class="p">)))</span>
|
<span class="n">jac_jac_y</span> <span class="o">=</span> <span class="n">jacobian</span><span class="p">(</span><span class="n">jacobian</span><span class="p">(</span><span class="n">odr_chisquare_compact_y</span><span class="p">))(</span><span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">((</span><span class="n">fitp</span><span class="p">,</span> <span class="n">out</span><span class="o">.</span><span class="n">xplus</span><span class="o">.</span><span class="n">ravel</span><span class="p">(),</span> <span class="n">y_f</span><span class="p">)))</span>
|
||||||
|
|
||||||
<span class="n">deriv_y</span> <span class="o">=</span> <span class="o">-</span><span class="n">hess_inv</span> <span class="o">@</span> <span class="n">jac_jac_y</span><span class="p">[:</span><span class="n">n_parms_aug</span> <span class="o">+</span> <span class="n">m</span><span class="p">,</span> <span class="n">n_parms_aug</span> <span class="o">+</span> <span class="n">m</span><span class="p">:]</span>
|
<span class="n">deriv_y</span> <span class="o">=</span> <span class="o">-</span><span class="n">hess_inv</span> <span class="o">@</span> <span class="n">jac_jac_y</span><span class="p">[:</span><span class="n">n_parms</span> <span class="o">+</span> <span class="n">m</span><span class="p">,</span> <span class="n">n_parms</span> <span class="o">+</span> <span class="n">m</span><span class="p">:]</span>
|
||||||
|
|
||||||
<span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
|
<span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
|
||||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n_parms</span><span class="p">):</span>
|
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n_parms</span><span class="p">):</span>
|
||||||
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">my_var</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="p">(</span><span class="n">my_var</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="n">np</span><span class="o">.</span><span class="n">finfo</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">float64</span><span class="p">)</span><span class="o">.</span><span class="n">eps</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="n">x</span><span class="o">.</span><span class="n">ravel</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">value</span> <span class="o">+</span> <span class="n">np</span><span class="o">.</span><span class="n">finfo</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">float64</span><span class="p">)</span><span class="o">.</span><span class="n">eps</span><span class="p">)</span> <span class="o">*</span> <span class="n">out</span><span class="o">.</span><span class="n">beta</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="nb">list</span><span class="p">(</span><span class="n">x</span><span class="o">.</span><span class="n">ravel</span><span class="p">())</span> <span class="o">+</span> <span class="nb">list</span><span class="p">(</span><span class="n">y</span><span class="p">),</span> <span class="n">man_grad</span><span class="o">=</span><span class="nb">list</span><span class="p">(</span><span class="n">deriv_x</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> <span class="o">+</span> <span class="nb">list</span><span class="p">(</span><span class="n">deriv_y</span><span class="p">[</span><span class="n">i</span><span class="p">])))</span>
|
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">my_var</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="p">(</span><span class="n">my_var</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="n">np</span><span class="o">.</span><span class="n">finfo</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">float64</span><span class="p">)</span><span class="o">.</span><span class="n">eps</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="n">x</span><span class="o">.</span><span class="n">ravel</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">value</span> <span class="o">+</span> <span class="n">np</span><span class="o">.</span><span class="n">finfo</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">float64</span><span class="p">)</span><span class="o">.</span><span class="n">eps</span><span class="p">)</span> <span class="o">*</span> <span class="n">out</span><span class="o">.</span><span class="n">beta</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="nb">list</span><span class="p">(</span><span class="n">x</span><span class="o">.</span><span class="n">ravel</span><span class="p">())</span> <span class="o">+</span> <span class="nb">list</span><span class="p">(</span><span class="n">y</span><span class="p">),</span> <span class="n">man_grad</span><span class="o">=</span><span class="nb">list</span><span class="p">(</span><span class="n">deriv_x</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> <span class="o">+</span> <span class="nb">list</span><span class="p">(</span><span class="n">deriv_y</span><span class="p">[</span><span class="n">i</span><span class="p">])))</span>
|
||||||
|
|
||||||
<span class="n">output</span><span class="o">.</span><span class="n">fit_parameters</span> <span class="o">=</span> <span class="n">result</span> <span class="o">+</span> <span class="n">const_par</span>
|
<span class="n">output</span><span class="o">.</span><span class="n">fit_parameters</span> <span class="o">=</span> <span class="n">result</span>
|
||||||
|
|
||||||
<span class="n">output</span><span class="o">.</span><span class="n">odr_chisquare</span> <span class="o">=</span> <span class="n">odr_chisquare</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">((</span><span class="n">out</span><span class="o">.</span><span class="n">beta</span><span class="p">,</span> <span class="n">out</span><span class="o">.</span><span class="n">xplus</span><span class="o">.</span><span class="n">ravel</span><span class="p">())))</span>
|
<span class="n">output</span><span class="o">.</span><span class="n">odr_chisquare</span> <span class="o">=</span> <span class="n">odr_chisquare</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">((</span><span class="n">out</span><span class="o">.</span><span class="n">beta</span><span class="p">,</span> <span class="n">out</span><span class="o">.</span><span class="n">xplus</span><span class="o">.</span><span class="n">ravel</span><span class="p">())))</span>
|
||||||
<span class="n">output</span><span class="o">.</span><span class="n">dof</span> <span class="o">=</span> <span class="n">x</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="n">n_parms</span>
|
<span class="n">output</span><span class="o">.</span><span class="n">dof</span> <span class="o">=</span> <span class="n">x</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="n">n_parms</span>
|
||||||
|
@ -573,17 +550,6 @@
|
||||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">callable</span><span class="p">(</span><span class="n">func</span><span class="p">):</span>
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">callable</span><span class="p">(</span><span class="n">func</span><span class="p">):</span>
|
||||||
<span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s1">'func has to be a function.'</span><span class="p">)</span>
|
<span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s1">'func has to be a function.'</span><span class="p">)</span>
|
||||||
|
|
||||||
<span class="n">func_aug</span> <span class="o">=</span> <span class="n">func</span>
|
|
||||||
<span class="k">if</span> <span class="s1">'const_par'</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
|
|
||||||
<span class="n">const_par</span> <span class="o">=</span> <span class="n">kwargs</span><span class="p">[</span><span class="s1">'const_par'</span><span class="p">]</span>
|
|
||||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">const_par</span><span class="p">,</span> <span class="n">Obs</span><span class="p">):</span>
|
|
||||||
<span class="n">const_par</span> <span class="o">=</span> <span class="p">[</span><span class="n">const_par</span><span class="p">]</span>
|
|
||||||
|
|
||||||
<span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span>
|
|
||||||
<span class="k">return</span> <span class="n">func_aug</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">((</span><span class="n">p</span><span class="p">,</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">const_par</span><span class="p">])),</span> <span class="n">x</span><span class="p">)</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="n">const_par</span> <span class="o">=</span> <span class="p">[]</span>
|
|
||||||
|
|
||||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">25</span><span class="p">):</span>
|
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">25</span><span class="p">):</span>
|
||||||
<span class="k">try</span><span class="p">:</span>
|
<span class="k">try</span><span class="p">:</span>
|
||||||
<span class="n">func</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">i</span><span class="p">),</span> <span class="n">x</span><span class="o">.</span><span class="n">T</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
<span class="n">func</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">i</span><span class="p">),</span> <span class="n">x</span><span class="o">.</span><span class="n">T</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||||
|
@ -596,8 +562,6 @@
|
||||||
|
|
||||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">silent</span><span class="p">:</span>
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">silent</span><span class="p">:</span>
|
||||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'Fit with'</span><span class="p">,</span> <span class="n">n_parms</span><span class="p">,</span> <span class="s1">'parameter'</span> <span class="o">+</span> <span class="s1">'s'</span> <span class="o">*</span> <span class="p">(</span><span class="n">n_parms</span> <span class="o">></span> <span class="mi">1</span><span class="p">))</span>
|
<span class="nb">print</span><span class="p">(</span><span class="s1">'Fit with'</span><span class="p">,</span> <span class="n">n_parms</span><span class="p">,</span> <span class="s1">'parameter'</span> <span class="o">+</span> <span class="s1">'s'</span> <span class="o">*</span> <span class="p">(</span><span class="n">n_parms</span> <span class="o">></span> <span class="mi">1</span><span class="p">))</span>
|
||||||
<span class="k">if</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">const_par</span><span class="p">)</span> <span class="o">></span> <span class="mi">0</span><span class="p">):</span>
|
|
||||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'and </span><span class="si">%d</span><span class="s1"> constrained parameter</span><span class="si">%s</span><span class="s1">'</span> <span class="o">%</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">const_par</span><span class="p">),</span> <span class="s1">'s'</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">const_par</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span> <span class="k">else</span> <span class="s1">''</span><span class="p">),</span> <span class="n">const_par</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">y_f</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">y</span><span class="p">]</span>
|
<span class="n">y_f</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">y</span><span class="p">]</span>
|
||||||
<span class="n">dy_f</span> <span class="o">=</span> <span class="p">[</span><span class="n">o</span><span class="o">.</span><span class="n">dvalue</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">y</span><span class="p">]</span>
|
<span class="n">dy_f</span> <span class="o">=</span> <span class="p">[</span><span class="n">o</span><span class="o">.</span><span class="n">dvalue</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">y</span><span class="p">]</span>
|
||||||
|
@ -630,23 +594,12 @@
|
||||||
<span class="n">model</span> <span class="o">=</span> <span class="n">func</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">x</span><span class="p">)</span>
|
<span class="n">model</span> <span class="o">=</span> <span class="n">func</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">x</span><span class="p">)</span>
|
||||||
<span class="n">chisq</span> <span class="o">=</span> <span class="n">anp</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">anp</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">chol_inv</span><span class="p">,</span> <span class="p">(</span><span class="n">y_f</span> <span class="o">-</span> <span class="n">model</span><span class="p">))</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span>
|
<span class="n">chisq</span> <span class="o">=</span> <span class="n">anp</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">anp</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">chol_inv</span><span class="p">,</span> <span class="p">(</span><span class="n">y_f</span> <span class="o">-</span> <span class="n">model</span><span class="p">))</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span>
|
||||||
<span class="k">return</span> <span class="n">chisq</span>
|
<span class="k">return</span> <span class="n">chisq</span>
|
||||||
|
|
||||||
<span class="k">def</span> <span class="nf">chisqfunc_aug</span><span class="p">(</span><span class="n">p</span><span class="p">):</span>
|
|
||||||
<span class="n">model</span> <span class="o">=</span> <span class="n">func_aug</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">((</span><span class="n">p</span><span class="p">,</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">const_par</span><span class="p">])),</span> <span class="n">x</span><span class="p">)</span>
|
|
||||||
<span class="n">chisq</span> <span class="o">=</span> <span class="n">anp</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">anp</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">chol_inv</span><span class="p">,</span> <span class="p">(</span><span class="n">y_f</span> <span class="o">-</span> <span class="n">model</span><span class="p">))</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="n">chisq</span>
|
|
||||||
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
<span class="k">else</span><span class="p">:</span>
|
||||||
<span class="k">def</span> <span class="nf">chisqfunc</span><span class="p">(</span><span class="n">p</span><span class="p">):</span>
|
<span class="k">def</span> <span class="nf">chisqfunc</span><span class="p">(</span><span class="n">p</span><span class="p">):</span>
|
||||||
<span class="n">model</span> <span class="o">=</span> <span class="n">func</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">x</span><span class="p">)</span>
|
<span class="n">model</span> <span class="o">=</span> <span class="n">func</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">x</span><span class="p">)</span>
|
||||||
<span class="n">chisq</span> <span class="o">=</span> <span class="n">anp</span><span class="o">.</span><span class="n">sum</span><span class="p">(((</span><span class="n">y_f</span> <span class="o">-</span> <span class="n">model</span><span class="p">)</span> <span class="o">/</span> <span class="n">dy_f</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span>
|
<span class="n">chisq</span> <span class="o">=</span> <span class="n">anp</span><span class="o">.</span><span class="n">sum</span><span class="p">(((</span><span class="n">y_f</span> <span class="o">-</span> <span class="n">model</span><span class="p">)</span> <span class="o">/</span> <span class="n">dy_f</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span>
|
||||||
<span class="k">return</span> <span class="n">chisq</span>
|
<span class="k">return</span> <span class="n">chisq</span>
|
||||||
|
|
||||||
<span class="k">def</span> <span class="nf">chisqfunc_aug</span><span class="p">(</span><span class="n">p</span><span class="p">):</span>
|
|
||||||
<span class="n">model</span> <span class="o">=</span> <span class="n">func_aug</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">((</span><span class="n">p</span><span class="p">,</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">const_par</span><span class="p">])),</span> <span class="n">x</span><span class="p">)</span>
|
|
||||||
<span class="n">chisq</span> <span class="o">=</span> <span class="n">anp</span><span class="o">.</span><span class="n">sum</span><span class="p">(((</span><span class="n">y_f</span> <span class="o">-</span> <span class="n">model</span><span class="p">)</span> <span class="o">/</span> <span class="n">dy_f</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="n">chisq</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="s1">'method'</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
|
<span class="k">if</span> <span class="s1">'method'</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
|
||||||
<span class="n">output</span><span class="o">.</span><span class="n">method</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">'method'</span><span class="p">)</span>
|
<span class="n">output</span><span class="o">.</span><span class="n">method</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">'method'</span><span class="p">)</span>
|
||||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">silent</span><span class="p">:</span>
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">silent</span><span class="p">:</span>
|
||||||
|
@ -709,31 +662,30 @@
|
||||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'chisquare/expected_chisquare:'</span><span class="p">,</span>
|
<span class="nb">print</span><span class="p">(</span><span class="s1">'chisquare/expected_chisquare:'</span><span class="p">,</span>
|
||||||
<span class="n">output</span><span class="o">.</span><span class="n">chisquare_by_expected_chisquare</span><span class="p">)</span>
|
<span class="n">output</span><span class="o">.</span><span class="n">chisquare_by_expected_chisquare</span><span class="p">)</span>
|
||||||
|
|
||||||
<span class="n">fitp</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">((</span><span class="n">fit_result</span><span class="o">.</span><span class="n">x</span><span class="p">,</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">const_par</span><span class="p">]))</span>
|
<span class="n">fitp</span> <span class="o">=</span> <span class="n">fit_result</span><span class="o">.</span><span class="n">x</span>
|
||||||
<span class="n">hess_inv</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linalg</span><span class="o">.</span><span class="n">pinv</span><span class="p">(</span><span class="n">jacobian</span><span class="p">(</span><span class="n">jacobian</span><span class="p">(</span><span class="n">chisqfunc_aug</span><span class="p">))(</span><span class="n">fitp</span><span class="p">))</span>
|
<span class="n">hess_inv</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linalg</span><span class="o">.</span><span class="n">pinv</span><span class="p">(</span><span class="n">jacobian</span><span class="p">(</span><span class="n">jacobian</span><span class="p">(</span><span class="n">chisqfunc</span><span class="p">))(</span><span class="n">fitp</span><span class="p">))</span>
|
||||||
|
|
||||||
<span class="n">n_parms_aug</span> <span class="o">=</span> <span class="n">n_parms</span> <span class="o">+</span> <span class="nb">len</span><span class="p">(</span><span class="n">const_par</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'correlated_fit'</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span>
|
<span class="k">if</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'correlated_fit'</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span>
|
||||||
<span class="k">def</span> <span class="nf">chisqfunc_compact</span><span class="p">(</span><span class="n">d</span><span class="p">):</span>
|
<span class="k">def</span> <span class="nf">chisqfunc_compact</span><span class="p">(</span><span class="n">d</span><span class="p">):</span>
|
||||||
<span class="n">model</span> <span class="o">=</span> <span class="n">func_aug</span><span class="p">(</span><span class="n">d</span><span class="p">[:</span><span class="n">n_parms_aug</span><span class="p">],</span> <span class="n">x</span><span class="p">)</span>
|
<span class="n">model</span> <span class="o">=</span> <span class="n">func</span><span class="p">(</span><span class="n">d</span><span class="p">[:</span><span class="n">n_parms</span><span class="p">],</span> <span class="n">x</span><span class="p">)</span>
|
||||||
<span class="n">chisq</span> <span class="o">=</span> <span class="n">anp</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">anp</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">chol_inv</span><span class="p">,</span> <span class="p">(</span><span class="n">d</span><span class="p">[</span><span class="n">n_parms_aug</span><span class="p">:]</span> <span class="o">-</span> <span class="n">model</span><span class="p">))</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span>
|
<span class="n">chisq</span> <span class="o">=</span> <span class="n">anp</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">anp</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">chol_inv</span><span class="p">,</span> <span class="p">(</span><span class="n">d</span><span class="p">[</span><span class="n">n_parms</span><span class="p">:]</span> <span class="o">-</span> <span class="n">model</span><span class="p">))</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span>
|
||||||
<span class="k">return</span> <span class="n">chisq</span>
|
<span class="k">return</span> <span class="n">chisq</span>
|
||||||
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
<span class="k">else</span><span class="p">:</span>
|
||||||
<span class="k">def</span> <span class="nf">chisqfunc_compact</span><span class="p">(</span><span class="n">d</span><span class="p">):</span>
|
<span class="k">def</span> <span class="nf">chisqfunc_compact</span><span class="p">(</span><span class="n">d</span><span class="p">):</span>
|
||||||
<span class="n">model</span> <span class="o">=</span> <span class="n">func_aug</span><span class="p">(</span><span class="n">d</span><span class="p">[:</span><span class="n">n_parms_aug</span><span class="p">],</span> <span class="n">x</span><span class="p">)</span>
|
<span class="n">model</span> <span class="o">=</span> <span class="n">func</span><span class="p">(</span><span class="n">d</span><span class="p">[:</span><span class="n">n_parms</span><span class="p">],</span> <span class="n">x</span><span class="p">)</span>
|
||||||
<span class="n">chisq</span> <span class="o">=</span> <span class="n">anp</span><span class="o">.</span><span class="n">sum</span><span class="p">(((</span><span class="n">d</span><span class="p">[</span><span class="n">n_parms_aug</span><span class="p">:]</span> <span class="o">-</span> <span class="n">model</span><span class="p">)</span> <span class="o">/</span> <span class="n">dy_f</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span>
|
<span class="n">chisq</span> <span class="o">=</span> <span class="n">anp</span><span class="o">.</span><span class="n">sum</span><span class="p">(((</span><span class="n">d</span><span class="p">[</span><span class="n">n_parms</span><span class="p">:]</span> <span class="o">-</span> <span class="n">model</span><span class="p">)</span> <span class="o">/</span> <span class="n">dy_f</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span>
|
||||||
<span class="k">return</span> <span class="n">chisq</span>
|
<span class="k">return</span> <span class="n">chisq</span>
|
||||||
|
|
||||||
<span class="n">jac_jac</span> <span class="o">=</span> <span class="n">jacobian</span><span class="p">(</span><span class="n">jacobian</span><span class="p">(</span><span class="n">chisqfunc_compact</span><span class="p">))(</span><span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">((</span><span class="n">fitp</span><span class="p">,</span> <span class="n">y_f</span><span class="p">)))</span>
|
<span class="n">jac_jac</span> <span class="o">=</span> <span class="n">jacobian</span><span class="p">(</span><span class="n">jacobian</span><span class="p">(</span><span class="n">chisqfunc_compact</span><span class="p">))(</span><span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">((</span><span class="n">fitp</span><span class="p">,</span> <span class="n">y_f</span><span class="p">)))</span>
|
||||||
|
|
||||||
<span class="n">deriv</span> <span class="o">=</span> <span class="o">-</span><span class="n">hess_inv</span> <span class="o">@</span> <span class="n">jac_jac</span><span class="p">[:</span><span class="n">n_parms_aug</span><span class="p">,</span> <span class="n">n_parms_aug</span><span class="p">:]</span>
|
<span class="n">deriv</span> <span class="o">=</span> <span class="o">-</span><span class="n">hess_inv</span> <span class="o">@</span> <span class="n">jac_jac</span><span class="p">[:</span><span class="n">n_parms</span><span class="p">,</span> <span class="n">n_parms</span><span class="p">:]</span>
|
||||||
|
|
||||||
<span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
|
<span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
|
||||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n_parms</span><span class="p">):</span>
|
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n_parms</span><span class="p">):</span>
|
||||||
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</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="o">+</span> <span class="n">np</span><span class="o">.</span><span class="n">finfo</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">float64</span><span class="p">)</span><span class="o">.</span><span class="n">eps</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="n">y</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">value</span> <span class="o">+</span> <span class="n">np</span><span class="o">.</span><span class="n">finfo</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">float64</span><span class="p">)</span><span class="o">.</span><span class="n">eps</span><span class="p">)</span> <span class="o">*</span> <span class="n">fit_result</span><span class="o">.</span><span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="nb">list</span><span class="p">(</span><span class="n">y</span><span class="p">),</span> <span class="n">man_grad</span><span class="o">=</span><span class="nb">list</span><span class="p">(</span><span class="n">deriv</span><span class="p">[</span><span class="n">i</span><span class="p">])))</span>
|
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</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="o">+</span> <span class="n">np</span><span class="o">.</span><span class="n">finfo</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">float64</span><span class="p">)</span><span class="o">.</span><span class="n">eps</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="n">y</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">value</span> <span class="o">+</span> <span class="n">np</span><span class="o">.</span><span class="n">finfo</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">float64</span><span class="p">)</span><span class="o">.</span><span class="n">eps</span><span class="p">)</span> <span class="o">*</span> <span class="n">fit_result</span><span class="o">.</span><span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="nb">list</span><span class="p">(</span><span class="n">y</span><span class="p">),</span> <span class="n">man_grad</span><span class="o">=</span><span class="nb">list</span><span class="p">(</span><span class="n">deriv</span><span class="p">[</span><span class="n">i</span><span class="p">])))</span>
|
||||||
|
|
||||||
<span class="n">output</span><span class="o">.</span><span class="n">fit_parameters</span> <span class="o">=</span> <span class="n">result</span> <span class="o">+</span> <span class="n">const_par</span>
|
<span class="n">output</span><span class="o">.</span><span class="n">fit_parameters</span> <span class="o">=</span> <span class="n">result</span>
|
||||||
|
|
||||||
<span class="n">output</span><span class="o">.</span><span class="n">chisquare</span> <span class="o">=</span> <span class="n">chisqfunc</span><span class="p">(</span><span class="n">fit_result</span><span class="o">.</span><span class="n">x</span><span class="p">)</span>
|
<span class="n">output</span><span class="o">.</span><span class="n">chisquare</span> <span class="o">=</span> <span class="n">chisqfunc</span><span class="p">(</span><span class="n">fit_result</span><span class="o">.</span><span class="n">x</span><span class="p">)</span>
|
||||||
<span class="n">output</span><span class="o">.</span><span class="n">dof</span> <span class="o">=</span> <span class="n">x</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="n">n_parms</span>
|
<span class="n">output</span><span class="o">.</span><span class="n">dof</span> <span class="o">=</span> <span class="n">x</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="n">n_parms</span>
|
||||||
|
@ -1088,8 +1040,6 @@ also accessible via indices.</li>
|
||||||
<span class="sd"> correlated_fit : bool</span>
|
<span class="sd"> correlated_fit : bool</span>
|
||||||
<span class="sd"> If true, use the full correlation matrix in the definition of the chisquare</span>
|
<span class="sd"> If true, use the full correlation matrix in the definition of the chisquare</span>
|
||||||
<span class="sd"> (only works for prior==None and when no method is given, at the moment).</span>
|
<span class="sd"> (only works for prior==None and when no method is given, at the moment).</span>
|
||||||
<span class="sd"> const_par : list, optional</span>
|
|
||||||
<span class="sd"> List of N Obs that are used to constrain the last N fit parameters of func.</span>
|
|
||||||
<span class="sd"> '''</span>
|
<span class="sd"> '''</span>
|
||||||
<span class="k">if</span> <span class="n">priors</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
<span class="k">if</span> <span class="n">priors</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||||
<span class="k">return</span> <span class="n">_prior_fit</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">priors</span><span class="p">,</span> <span class="n">silent</span><span class="o">=</span><span class="n">silent</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
<span class="k">return</span> <span class="n">_prior_fit</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">priors</span><span class="p">,</span> <span class="n">silent</span><span class="o">=</span><span class="n">silent</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||||
|
@ -1151,8 +1101,6 @@ has to be calculated (default False).</li>
|
||||||
<li><strong>correlated_fit</strong> (bool):
|
<li><strong>correlated_fit</strong> (bool):
|
||||||
If true, use the full correlation matrix in the definition of the chisquare
|
If true, use the full correlation matrix in the definition of the chisquare
|
||||||
(only works for prior==None and when no method is given, at the moment).</li>
|
(only works for prior==None and when no method is given, at the moment).</li>
|
||||||
<li><strong>const_par</strong> (list, optional):
|
|
||||||
List of N Obs that are used to constrain the last N fit parameters of func.</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -1206,8 +1154,6 @@ List of N Obs that are used to constrain the last N fit parameters of func.</li>
|
||||||
<span class="sd"> corrected by effects caused by correlated input data.</span>
|
<span class="sd"> corrected by effects caused by correlated input data.</span>
|
||||||
<span class="sd"> This can take a while as the full correlation matrix</span>
|
<span class="sd"> This can take a while as the full correlation matrix</span>
|
||||||
<span class="sd"> has to be calculated (default False).</span>
|
<span class="sd"> has to be calculated (default False).</span>
|
||||||
<span class="sd"> const_par : list, optional</span>
|
|
||||||
<span class="sd"> List of N Obs that are used to constrain the last N fit parameters of func.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Based on the orthogonal distance regression module of scipy</span>
|
<span class="sd"> Based on the orthogonal distance regression module of scipy</span>
|
||||||
<span class="sd"> '''</span>
|
<span class="sd"> '''</span>
|
||||||
|
@ -1223,17 +1169,6 @@ List of N Obs that are used to constrain the last N fit parameters of func.</li>
|
||||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">callable</span><span class="p">(</span><span class="n">func</span><span class="p">):</span>
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">callable</span><span class="p">(</span><span class="n">func</span><span class="p">):</span>
|
||||||
<span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s1">'func has to be a function.'</span><span class="p">)</span>
|
<span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s1">'func has to be a function.'</span><span class="p">)</span>
|
||||||
|
|
||||||
<span class="n">func_aug</span> <span class="o">=</span> <span class="n">func</span>
|
|
||||||
<span class="k">if</span> <span class="s1">'const_par'</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
|
|
||||||
<span class="n">const_par</span> <span class="o">=</span> <span class="n">kwargs</span><span class="p">[</span><span class="s1">'const_par'</span><span class="p">]</span>
|
|
||||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">const_par</span><span class="p">,</span> <span class="n">Obs</span><span class="p">):</span>
|
|
||||||
<span class="n">const_par</span> <span class="o">=</span> <span class="p">[</span><span class="n">const_par</span><span class="p">]</span>
|
|
||||||
|
|
||||||
<span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span>
|
|
||||||
<span class="k">return</span> <span class="n">func_aug</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">((</span><span class="n">p</span><span class="p">,</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">const_par</span><span class="p">])),</span> <span class="n">x</span><span class="p">)</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="n">const_par</span> <span class="o">=</span> <span class="p">[]</span>
|
|
||||||
|
|
||||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">25</span><span class="p">):</span>
|
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">25</span><span class="p">):</span>
|
||||||
<span class="k">try</span><span class="p">:</span>
|
<span class="k">try</span><span class="p">:</span>
|
||||||
<span class="n">func</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">i</span><span class="p">),</span> <span class="n">x</span><span class="o">.</span><span class="n">T</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
<span class="n">func</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">i</span><span class="p">),</span> <span class="n">x</span><span class="o">.</span><span class="n">T</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||||
|
@ -1245,8 +1180,6 @@ List of N Obs that are used to constrain the last N fit parameters of func.</li>
|
||||||
<span class="n">n_parms</span> <span class="o">=</span> <span class="n">i</span>
|
<span class="n">n_parms</span> <span class="o">=</span> <span class="n">i</span>
|
||||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">silent</span><span class="p">:</span>
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">silent</span><span class="p">:</span>
|
||||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'Fit with'</span><span class="p">,</span> <span class="n">n_parms</span><span class="p">,</span> <span class="s1">'parameter'</span> <span class="o">+</span> <span class="s1">'s'</span> <span class="o">*</span> <span class="p">(</span><span class="n">n_parms</span> <span class="o">></span> <span class="mi">1</span><span class="p">))</span>
|
<span class="nb">print</span><span class="p">(</span><span class="s1">'Fit with'</span><span class="p">,</span> <span class="n">n_parms</span><span class="p">,</span> <span class="s1">'parameter'</span> <span class="o">+</span> <span class="s1">'s'</span> <span class="o">*</span> <span class="p">(</span><span class="n">n_parms</span> <span class="o">></span> <span class="mi">1</span><span class="p">))</span>
|
||||||
<span class="k">if</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">const_par</span><span class="p">)</span> <span class="o">></span> <span class="mi">0</span><span class="p">):</span>
|
|
||||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'and </span><span class="si">%d</span><span class="s1"> constrained parameter</span><span class="si">%s</span><span class="s1">'</span> <span class="o">%</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">const_par</span><span class="p">),</span> <span class="s1">'s'</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">const_par</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span> <span class="k">else</span> <span class="s1">''</span><span class="p">),</span> <span class="n">const_par</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">x_f</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">vectorize</span><span class="p">(</span><span class="k">lambda</span> <span class="n">o</span><span class="p">:</span> <span class="n">o</span><span class="o">.</span><span class="n">value</span><span class="p">)(</span><span class="n">x</span><span class="p">)</span>
|
<span class="n">x_f</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">vectorize</span><span class="p">(</span><span class="k">lambda</span> <span class="n">o</span><span class="p">:</span> <span class="n">o</span><span class="o">.</span><span class="n">value</span><span class="p">)(</span><span class="n">x</span><span class="p">)</span>
|
||||||
<span class="n">dx_f</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">vectorize</span><span class="p">(</span><span class="k">lambda</span> <span class="n">o</span><span class="p">:</span> <span class="n">o</span><span class="o">.</span><span class="n">dvalue</span><span class="p">)(</span><span class="n">x</span><span class="p">)</span>
|
<span class="n">dx_f</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">vectorize</span><span class="p">(</span><span class="k">lambda</span> <span class="n">o</span><span class="p">:</span> <span class="n">o</span><span class="o">.</span><span class="n">dvalue</span><span class="p">)(</span><span class="n">x</span><span class="p">)</span>
|
||||||
|
@ -1289,18 +1222,12 @@ List of N Obs that are used to constrain the last N fit parameters of func.</li>
|
||||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">'The minimization procedure did not converge.'</span><span class="p">)</span>
|
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">'The minimization procedure did not converge.'</span><span class="p">)</span>
|
||||||
|
|
||||||
<span class="n">m</span> <span class="o">=</span> <span class="n">x_f</span><span class="o">.</span><span class="n">size</span>
|
<span class="n">m</span> <span class="o">=</span> <span class="n">x_f</span><span class="o">.</span><span class="n">size</span>
|
||||||
<span class="n">n_parms_aug</span> <span class="o">=</span> <span class="n">n_parms</span> <span class="o">+</span> <span class="nb">len</span><span class="p">(</span><span class="n">const_par</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">def</span> <span class="nf">odr_chisquare</span><span class="p">(</span><span class="n">p</span><span class="p">):</span>
|
<span class="k">def</span> <span class="nf">odr_chisquare</span><span class="p">(</span><span class="n">p</span><span class="p">):</span>
|
||||||
<span class="n">model</span> <span class="o">=</span> <span class="n">func</span><span class="p">(</span><span class="n">p</span><span class="p">[:</span><span class="n">n_parms</span><span class="p">],</span> <span class="n">p</span><span class="p">[</span><span class="n">n_parms</span><span class="p">:]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">x_shape</span><span class="p">))</span>
|
<span class="n">model</span> <span class="o">=</span> <span class="n">func</span><span class="p">(</span><span class="n">p</span><span class="p">[:</span><span class="n">n_parms</span><span class="p">],</span> <span class="n">p</span><span class="p">[</span><span class="n">n_parms</span><span class="p">:]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">x_shape</span><span class="p">))</span>
|
||||||
<span class="n">chisq</span> <span class="o">=</span> <span class="n">anp</span><span class="o">.</span><span class="n">sum</span><span class="p">(((</span><span class="n">y_f</span> <span class="o">-</span> <span class="n">model</span><span class="p">)</span> <span class="o">/</span> <span class="n">dy_f</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span> <span class="o">+</span> <span class="n">anp</span><span class="o">.</span><span class="n">sum</span><span class="p">(((</span><span class="n">x_f</span> <span class="o">-</span> <span class="n">p</span><span class="p">[</span><span class="n">n_parms</span><span class="p">:]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">x_shape</span><span class="p">))</span> <span class="o">/</span> <span class="n">dx_f</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span>
|
<span class="n">chisq</span> <span class="o">=</span> <span class="n">anp</span><span class="o">.</span><span class="n">sum</span><span class="p">(((</span><span class="n">y_f</span> <span class="o">-</span> <span class="n">model</span><span class="p">)</span> <span class="o">/</span> <span class="n">dy_f</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span> <span class="o">+</span> <span class="n">anp</span><span class="o">.</span><span class="n">sum</span><span class="p">(((</span><span class="n">x_f</span> <span class="o">-</span> <span class="n">p</span><span class="p">[</span><span class="n">n_parms</span><span class="p">:]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">x_shape</span><span class="p">))</span> <span class="o">/</span> <span class="n">dx_f</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span>
|
||||||
<span class="k">return</span> <span class="n">chisq</span>
|
<span class="k">return</span> <span class="n">chisq</span>
|
||||||
|
|
||||||
<span class="k">def</span> <span class="nf">odr_chisquare_aug</span><span class="p">(</span><span class="n">p</span><span class="p">):</span>
|
|
||||||
<span class="n">model</span> <span class="o">=</span> <span class="n">func_aug</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">((</span><span class="n">p</span><span class="p">[:</span><span class="n">n_parms_aug</span><span class="p">],</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">const_par</span><span class="p">])),</span> <span class="n">p</span><span class="p">[</span><span class="n">n_parms_aug</span><span class="p">:]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">x_shape</span><span class="p">))</span>
|
|
||||||
<span class="n">chisq</span> <span class="o">=</span> <span class="n">anp</span><span class="o">.</span><span class="n">sum</span><span class="p">(((</span><span class="n">y_f</span> <span class="o">-</span> <span class="n">model</span><span class="p">)</span> <span class="o">/</span> <span class="n">dy_f</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span> <span class="o">+</span> <span class="n">anp</span><span class="o">.</span><span class="n">sum</span><span class="p">(((</span><span class="n">x_f</span> <span class="o">-</span> <span class="n">p</span><span class="p">[</span><span class="n">n_parms_aug</span><span class="p">:]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">x_shape</span><span class="p">))</span> <span class="o">/</span> <span class="n">dx_f</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="n">chisq</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'expected_chisquare'</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span>
|
<span class="k">if</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'expected_chisquare'</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span>
|
||||||
<span class="n">W</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="mi">1</span> <span class="o">/</span> <span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">((</span><span class="n">dy_f</span><span class="o">.</span><span class="n">ravel</span><span class="p">(),</span> <span class="n">dx_f</span><span class="o">.</span><span class="n">ravel</span><span class="p">()))))</span>
|
<span class="n">W</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="mi">1</span> <span class="o">/</span> <span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">((</span><span class="n">dy_f</span><span class="o">.</span><span class="n">ravel</span><span class="p">(),</span> <span class="n">dx_f</span><span class="o">.</span><span class="n">ravel</span><span class="p">()))))</span>
|
||||||
|
|
||||||
|
@ -1327,32 +1254,32 @@ List of N Obs that are used to constrain the last N fit parameters of func.</li>
|
||||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'chisquare/expected_chisquare:'</span><span class="p">,</span>
|
<span class="nb">print</span><span class="p">(</span><span class="s1">'chisquare/expected_chisquare:'</span><span class="p">,</span>
|
||||||
<span class="n">output</span><span class="o">.</span><span class="n">chisquare_by_expected_chisquare</span><span class="p">)</span>
|
<span class="n">output</span><span class="o">.</span><span class="n">chisquare_by_expected_chisquare</span><span class="p">)</span>
|
||||||
|
|
||||||
<span class="n">fitp</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">((</span><span class="n">out</span><span class="o">.</span><span class="n">beta</span><span class="p">,</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">const_par</span><span class="p">]))</span>
|
<span class="n">fitp</span> <span class="o">=</span> <span class="n">out</span><span class="o">.</span><span class="n">beta</span>
|
||||||
<span class="n">hess_inv</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linalg</span><span class="o">.</span><span class="n">pinv</span><span class="p">(</span><span class="n">jacobian</span><span class="p">(</span><span class="n">jacobian</span><span class="p">(</span><span class="n">odr_chisquare_aug</span><span class="p">))(</span><span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">((</span><span class="n">fitp</span><span class="p">,</span> <span class="n">out</span><span class="o">.</span><span class="n">xplus</span><span class="o">.</span><span class="n">ravel</span><span class="p">()))))</span>
|
<span class="n">hess_inv</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linalg</span><span class="o">.</span><span class="n">pinv</span><span class="p">(</span><span class="n">jacobian</span><span class="p">(</span><span class="n">jacobian</span><span class="p">(</span><span class="n">odr_chisquare</span><span class="p">))(</span><span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">((</span><span class="n">fitp</span><span class="p">,</span> <span class="n">out</span><span class="o">.</span><span class="n">xplus</span><span class="o">.</span><span class="n">ravel</span><span class="p">()))))</span>
|
||||||
|
|
||||||
<span class="k">def</span> <span class="nf">odr_chisquare_compact_x</span><span class="p">(</span><span class="n">d</span><span class="p">):</span>
|
<span class="k">def</span> <span class="nf">odr_chisquare_compact_x</span><span class="p">(</span><span class="n">d</span><span class="p">):</span>
|
||||||
<span class="n">model</span> <span class="o">=</span> <span class="n">func_aug</span><span class="p">(</span><span class="n">d</span><span class="p">[:</span><span class="n">n_parms_aug</span><span class="p">],</span> <span class="n">d</span><span class="p">[</span><span class="n">n_parms_aug</span><span class="p">:</span><span class="n">n_parms_aug</span> <span class="o">+</span> <span class="n">m</span><span class="p">]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">x_shape</span><span class="p">))</span>
|
<span class="n">model</span> <span class="o">=</span> <span class="n">func</span><span class="p">(</span><span class="n">d</span><span class="p">[:</span><span class="n">n_parms</span><span class="p">],</span> <span class="n">d</span><span class="p">[</span><span class="n">n_parms</span><span class="p">:</span><span class="n">n_parms</span> <span class="o">+</span> <span class="n">m</span><span class="p">]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">x_shape</span><span class="p">))</span>
|
||||||
<span class="n">chisq</span> <span class="o">=</span> <span class="n">anp</span><span class="o">.</span><span class="n">sum</span><span class="p">(((</span><span class="n">y_f</span> <span class="o">-</span> <span class="n">model</span><span class="p">)</span> <span class="o">/</span> <span class="n">dy_f</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span> <span class="o">+</span> <span class="n">anp</span><span class="o">.</span><span class="n">sum</span><span class="p">(((</span><span class="n">d</span><span class="p">[</span><span class="n">n_parms_aug</span> <span class="o">+</span> <span class="n">m</span><span class="p">:]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">x_shape</span><span class="p">)</span> <span class="o">-</span> <span class="n">d</span><span class="p">[</span><span class="n">n_parms_aug</span><span class="p">:</span><span class="n">n_parms_aug</span> <span class="o">+</span> <span class="n">m</span><span class="p">]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">x_shape</span><span class="p">))</span> <span class="o">/</span> <span class="n">dx_f</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span>
|
<span class="n">chisq</span> <span class="o">=</span> <span class="n">anp</span><span class="o">.</span><span class="n">sum</span><span class="p">(((</span><span class="n">y_f</span> <span class="o">-</span> <span class="n">model</span><span class="p">)</span> <span class="o">/</span> <span class="n">dy_f</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span> <span class="o">+</span> <span class="n">anp</span><span class="o">.</span><span class="n">sum</span><span class="p">(((</span><span class="n">d</span><span class="p">[</span><span class="n">n_parms</span> <span class="o">+</span> <span class="n">m</span><span class="p">:]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">x_shape</span><span class="p">)</span> <span class="o">-</span> <span class="n">d</span><span class="p">[</span><span class="n">n_parms</span><span class="p">:</span><span class="n">n_parms</span> <span class="o">+</span> <span class="n">m</span><span class="p">]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">x_shape</span><span class="p">))</span> <span class="o">/</span> <span class="n">dx_f</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span>
|
||||||
<span class="k">return</span> <span class="n">chisq</span>
|
<span class="k">return</span> <span class="n">chisq</span>
|
||||||
|
|
||||||
<span class="n">jac_jac_x</span> <span class="o">=</span> <span class="n">jacobian</span><span class="p">(</span><span class="n">jacobian</span><span class="p">(</span><span class="n">odr_chisquare_compact_x</span><span class="p">))(</span><span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">((</span><span class="n">fitp</span><span class="p">,</span> <span class="n">out</span><span class="o">.</span><span class="n">xplus</span><span class="o">.</span><span class="n">ravel</span><span class="p">(),</span> <span class="n">x_f</span><span class="o">.</span><span class="n">ravel</span><span class="p">())))</span>
|
<span class="n">jac_jac_x</span> <span class="o">=</span> <span class="n">jacobian</span><span class="p">(</span><span class="n">jacobian</span><span class="p">(</span><span class="n">odr_chisquare_compact_x</span><span class="p">))(</span><span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">((</span><span class="n">fitp</span><span class="p">,</span> <span class="n">out</span><span class="o">.</span><span class="n">xplus</span><span class="o">.</span><span class="n">ravel</span><span class="p">(),</span> <span class="n">x_f</span><span class="o">.</span><span class="n">ravel</span><span class="p">())))</span>
|
||||||
|
|
||||||
<span class="n">deriv_x</span> <span class="o">=</span> <span class="o">-</span><span class="n">hess_inv</span> <span class="o">@</span> <span class="n">jac_jac_x</span><span class="p">[:</span><span class="n">n_parms_aug</span> <span class="o">+</span> <span class="n">m</span><span class="p">,</span> <span class="n">n_parms_aug</span> <span class="o">+</span> <span class="n">m</span><span class="p">:]</span>
|
<span class="n">deriv_x</span> <span class="o">=</span> <span class="o">-</span><span class="n">hess_inv</span> <span class="o">@</span> <span class="n">jac_jac_x</span><span class="p">[:</span><span class="n">n_parms</span> <span class="o">+</span> <span class="n">m</span><span class="p">,</span> <span class="n">n_parms</span> <span class="o">+</span> <span class="n">m</span><span class="p">:]</span>
|
||||||
|
|
||||||
<span class="k">def</span> <span class="nf">odr_chisquare_compact_y</span><span class="p">(</span><span class="n">d</span><span class="p">):</span>
|
<span class="k">def</span> <span class="nf">odr_chisquare_compact_y</span><span class="p">(</span><span class="n">d</span><span class="p">):</span>
|
||||||
<span class="n">model</span> <span class="o">=</span> <span class="n">func_aug</span><span class="p">(</span><span class="n">d</span><span class="p">[:</span><span class="n">n_parms_aug</span><span class="p">],</span> <span class="n">d</span><span class="p">[</span><span class="n">n_parms_aug</span><span class="p">:</span><span class="n">n_parms_aug</span> <span class="o">+</span> <span class="n">m</span><span class="p">]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">x_shape</span><span class="p">))</span>
|
<span class="n">model</span> <span class="o">=</span> <span class="n">func</span><span class="p">(</span><span class="n">d</span><span class="p">[:</span><span class="n">n_parms</span><span class="p">],</span> <span class="n">d</span><span class="p">[</span><span class="n">n_parms</span><span class="p">:</span><span class="n">n_parms</span> <span class="o">+</span> <span class="n">m</span><span class="p">]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">x_shape</span><span class="p">))</span>
|
||||||
<span class="n">chisq</span> <span class="o">=</span> <span class="n">anp</span><span class="o">.</span><span class="n">sum</span><span class="p">(((</span><span class="n">d</span><span class="p">[</span><span class="n">n_parms_aug</span> <span class="o">+</span> <span class="n">m</span><span class="p">:]</span> <span class="o">-</span> <span class="n">model</span><span class="p">)</span> <span class="o">/</span> <span class="n">dy_f</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span> <span class="o">+</span> <span class="n">anp</span><span class="o">.</span><span class="n">sum</span><span class="p">(((</span><span class="n">x_f</span> <span class="o">-</span> <span class="n">d</span><span class="p">[</span><span class="n">n_parms_aug</span><span class="p">:</span><span class="n">n_parms_aug</span> <span class="o">+</span> <span class="n">m</span><span class="p">]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">x_shape</span><span class="p">))</span> <span class="o">/</span> <span class="n">dx_f</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span>
|
<span class="n">chisq</span> <span class="o">=</span> <span class="n">anp</span><span class="o">.</span><span class="n">sum</span><span class="p">(((</span><span class="n">d</span><span class="p">[</span><span class="n">n_parms</span> <span class="o">+</span> <span class="n">m</span><span class="p">:]</span> <span class="o">-</span> <span class="n">model</span><span class="p">)</span> <span class="o">/</span> <span class="n">dy_f</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span> <span class="o">+</span> <span class="n">anp</span><span class="o">.</span><span class="n">sum</span><span class="p">(((</span><span class="n">x_f</span> <span class="o">-</span> <span class="n">d</span><span class="p">[</span><span class="n">n_parms</span><span class="p">:</span><span class="n">n_parms</span> <span class="o">+</span> <span class="n">m</span><span class="p">]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">x_shape</span><span class="p">))</span> <span class="o">/</span> <span class="n">dx_f</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span>
|
||||||
<span class="k">return</span> <span class="n">chisq</span>
|
<span class="k">return</span> <span class="n">chisq</span>
|
||||||
|
|
||||||
<span class="n">jac_jac_y</span> <span class="o">=</span> <span class="n">jacobian</span><span class="p">(</span><span class="n">jacobian</span><span class="p">(</span><span class="n">odr_chisquare_compact_y</span><span class="p">))(</span><span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">((</span><span class="n">fitp</span><span class="p">,</span> <span class="n">out</span><span class="o">.</span><span class="n">xplus</span><span class="o">.</span><span class="n">ravel</span><span class="p">(),</span> <span class="n">y_f</span><span class="p">)))</span>
|
<span class="n">jac_jac_y</span> <span class="o">=</span> <span class="n">jacobian</span><span class="p">(</span><span class="n">jacobian</span><span class="p">(</span><span class="n">odr_chisquare_compact_y</span><span class="p">))(</span><span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">((</span><span class="n">fitp</span><span class="p">,</span> <span class="n">out</span><span class="o">.</span><span class="n">xplus</span><span class="o">.</span><span class="n">ravel</span><span class="p">(),</span> <span class="n">y_f</span><span class="p">)))</span>
|
||||||
|
|
||||||
<span class="n">deriv_y</span> <span class="o">=</span> <span class="o">-</span><span class="n">hess_inv</span> <span class="o">@</span> <span class="n">jac_jac_y</span><span class="p">[:</span><span class="n">n_parms_aug</span> <span class="o">+</span> <span class="n">m</span><span class="p">,</span> <span class="n">n_parms_aug</span> <span class="o">+</span> <span class="n">m</span><span class="p">:]</span>
|
<span class="n">deriv_y</span> <span class="o">=</span> <span class="o">-</span><span class="n">hess_inv</span> <span class="o">@</span> <span class="n">jac_jac_y</span><span class="p">[:</span><span class="n">n_parms</span> <span class="o">+</span> <span class="n">m</span><span class="p">,</span> <span class="n">n_parms</span> <span class="o">+</span> <span class="n">m</span><span class="p">:]</span>
|
||||||
|
|
||||||
<span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
|
<span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
|
||||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n_parms</span><span class="p">):</span>
|
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n_parms</span><span class="p">):</span>
|
||||||
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">my_var</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="p">(</span><span class="n">my_var</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="n">np</span><span class="o">.</span><span class="n">finfo</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">float64</span><span class="p">)</span><span class="o">.</span><span class="n">eps</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="n">x</span><span class="o">.</span><span class="n">ravel</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">value</span> <span class="o">+</span> <span class="n">np</span><span class="o">.</span><span class="n">finfo</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">float64</span><span class="p">)</span><span class="o">.</span><span class="n">eps</span><span class="p">)</span> <span class="o">*</span> <span class="n">out</span><span class="o">.</span><span class="n">beta</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="nb">list</span><span class="p">(</span><span class="n">x</span><span class="o">.</span><span class="n">ravel</span><span class="p">())</span> <span class="o">+</span> <span class="nb">list</span><span class="p">(</span><span class="n">y</span><span class="p">),</span> <span class="n">man_grad</span><span class="o">=</span><span class="nb">list</span><span class="p">(</span><span class="n">deriv_x</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> <span class="o">+</span> <span class="nb">list</span><span class="p">(</span><span class="n">deriv_y</span><span class="p">[</span><span class="n">i</span><span class="p">])))</span>
|
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">my_var</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="p">(</span><span class="n">my_var</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="n">np</span><span class="o">.</span><span class="n">finfo</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">float64</span><span class="p">)</span><span class="o">.</span><span class="n">eps</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="n">x</span><span class="o">.</span><span class="n">ravel</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">value</span> <span class="o">+</span> <span class="n">np</span><span class="o">.</span><span class="n">finfo</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">float64</span><span class="p">)</span><span class="o">.</span><span class="n">eps</span><span class="p">)</span> <span class="o">*</span> <span class="n">out</span><span class="o">.</span><span class="n">beta</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="nb">list</span><span class="p">(</span><span class="n">x</span><span class="o">.</span><span class="n">ravel</span><span class="p">())</span> <span class="o">+</span> <span class="nb">list</span><span class="p">(</span><span class="n">y</span><span class="p">),</span> <span class="n">man_grad</span><span class="o">=</span><span class="nb">list</span><span class="p">(</span><span class="n">deriv_x</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> <span class="o">+</span> <span class="nb">list</span><span class="p">(</span><span class="n">deriv_y</span><span class="p">[</span><span class="n">i</span><span class="p">])))</span>
|
||||||
|
|
||||||
<span class="n">output</span><span class="o">.</span><span class="n">fit_parameters</span> <span class="o">=</span> <span class="n">result</span> <span class="o">+</span> <span class="n">const_par</span>
|
<span class="n">output</span><span class="o">.</span><span class="n">fit_parameters</span> <span class="o">=</span> <span class="n">result</span>
|
||||||
|
|
||||||
<span class="n">output</span><span class="o">.</span><span class="n">odr_chisquare</span> <span class="o">=</span> <span class="n">odr_chisquare</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">((</span><span class="n">out</span><span class="o">.</span><span class="n">beta</span><span class="p">,</span> <span class="n">out</span><span class="o">.</span><span class="n">xplus</span><span class="o">.</span><span class="n">ravel</span><span class="p">())))</span>
|
<span class="n">output</span><span class="o">.</span><span class="n">odr_chisquare</span> <span class="o">=</span> <span class="n">odr_chisquare</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">((</span><span class="n">out</span><span class="o">.</span><span class="n">beta</span><span class="p">,</span> <span class="n">out</span><span class="o">.</span><span class="n">xplus</span><span class="o">.</span><span class="n">ravel</span><span class="p">())))</span>
|
||||||
<span class="n">output</span><span class="o">.</span><span class="n">dof</span> <span class="o">=</span> <span class="n">x</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="n">n_parms</span>
|
<span class="n">output</span><span class="o">.</span><span class="n">dof</span> <span class="o">=</span> <span class="n">x</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="n">n_parms</span>
|
||||||
|
@ -1399,8 +1326,6 @@ If true prints the expected chisquare which is
|
||||||
corrected by effects caused by correlated input data.
|
corrected by effects caused by correlated input data.
|
||||||
This can take a while as the full correlation matrix
|
This can take a while as the full correlation matrix
|
||||||
has to be calculated (default False).</li>
|
has to be calculated (default False).</li>
|
||||||
<li><strong>const_par</strong> (list, optional):
|
|
||||||
List of N Obs that are used to constrain the last N fit parameters of func.</li>
|
|
||||||
<li><strong>Based on the orthogonal distance regression module of scipy</strong></li>
|
<li><strong>Based on the orthogonal distance regression module of scipy</strong></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
File diff suppressed because one or more lines are too long
Loading…
Add table
Add a link
Reference in a new issue