Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Changes - from version >= 1.x

* [experimental] LSA-method Ordinary Kriging tests and experiments
* [enhancement] Users can set negative predictions to zero in Area-to-Area, Area-to-Point, and Centroid-based Poisson Kriging

* [docs] Added block-to-block distance equation, and corrected semivariance equation in functions docstrings

2025-12-26
----------
Expand Down
Binary file modified docs/build/doctrees/api/core/pipelines.doctree
Binary file not shown.
Binary file modified docs/build/doctrees/api/distance/distance.doctree
Binary file not shown.
Binary file modified docs/build/doctrees/api/kriging/block_kriging.doctree
Binary file not shown.
Binary file modified docs/build/doctrees/api/semivariogram/experimental.doctree
Binary file not shown.
Binary file modified docs/build/doctrees/environment.pickle
Binary file not shown.

Large diffs are not rendered by default.

27 changes: 24 additions & 3 deletions docs/build/html/_modules/pyinterpolate/distance/block.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>pyinterpolate.distance.block &#8212; pyinterpolate 1.1.0 documentation</title>
<title>pyinterpolate.distance.block &#8212; pyinterpolate 1.2.0 documentation</title>



Expand Down Expand Up @@ -38,7 +38,7 @@
<link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" />
<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" />

<script src="../../../_static/documentation_options.js?v=fc837d61"></script>
<script src="../../../_static/documentation_options.js?v=6efca38a"></script>
<script src="../../../_static/doctools.js?v=9bcbadda"></script>
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../../../_static/clipboard.min.js?v=a7894cd8"></script>
Expand Down Expand Up @@ -111,7 +111,7 @@



<p class="title logo__title">pyinterpolate 1.1.0 documentation</p>
<p class="title logo__title">pyinterpolate 1.2.0 documentation</p>

</a></div>

Expand Down Expand Up @@ -639,6 +639,27 @@ <h1>Source code for pyinterpolate.distance.block</h1><div class="highlight"><pre
<span class="sd"> AttributeError</span>
<span class="sd"> Blocks are provided as DataFrame but column names were not given.</span>

<span class="sd"> Notes</span>
<span class="sd"> -----</span>
<span class="sd"> The weighted distance between blocks is derived from the equation 3 given</span>
<span class="sd"> in publication [1] from References.</span>

<span class="sd"> .. math:: d(v_{a}, v_{b})=\frac{1}{\sum_{s=1}^{P_{a}} \sum_{s&#39;=1}^{P_{b}} n(u_{s}) n(u_{s&#39;})} * \sum_{s=1}^{P_{a}} \sum_{s&#39;=1}^{P_{b}} n(u_{s})n(u_{s&#39;})||u_{s}-u_{s&#39;}||</span>

<span class="sd"> where:</span>
<span class="sd"> * :math:`P_{a}` and :math:`P_{b}`: number of points :math:`u_{s}`</span>
<span class="sd"> and :math:`u_{s&#39;}` used to discretize the two units :math:`v_{a}`</span>
<span class="sd"> and :math:`v_{b}`</span>
<span class="sd"> * :math:`n(u_{s})` and :math:`n(u_{s&#39;})` - population size in</span>
<span class="sd"> the cells :math:`u_{s}` and :math:`u_{s&#39;}`</span>

<span class="sd"> References</span>
<span class="sd"> ----------</span>
<span class="sd"> .. [1] Goovaerts, P. Kriging and Semivariogram Deconvolution in the</span>
<span class="sd"> Presence of Irregular Geographical Units.</span>
<span class="sd"> Math Geosci 40, 101–128 (2008).</span>
<span class="sd"> https://doi.org/10.1007/s11004-007-9129-1</span>

<span class="sd"> Examples</span>
<span class="sd"> --------</span>
<span class="sd"> &gt;&gt;&gt; import os</span>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>pyinterpolate.kriging.block.area_to_area_poisson_kriging &#8212; pyinterpolate 1.1.0 documentation</title>
<title>pyinterpolate.kriging.block.area_to_area_poisson_kriging &#8212; pyinterpolate 1.2.0 documentation</title>



Expand Down Expand Up @@ -38,7 +38,7 @@
<link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" />
<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" />

<script src="../../../../_static/documentation_options.js?v=fc837d61"></script>
<script src="../../../../_static/documentation_options.js?v=6efca38a"></script>
<script src="../../../../_static/doctools.js?v=9bcbadda"></script>
<script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../../../../_static/clipboard.min.js?v=a7894cd8"></script>
Expand Down Expand Up @@ -111,7 +111,7 @@



<p class="title logo__title">pyinterpolate 1.1.0 documentation</p>
<p class="title logo__title">pyinterpolate 1.2.0 documentation</p>

</a></div>

Expand Down Expand Up @@ -450,7 +450,8 @@ <h1>Source code for pyinterpolate.kriging.block.area_to_area_poisson_kriging</h1
<span class="n">number_of_neighbors</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span>
<span class="n">neighbors_range</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<span class="n">raise_when_negative_prediction</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
<span class="n">raise_when_negative_error</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span><span class="p">:</span>
<span class="n">raise_when_negative_error</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
<span class="n">negative_prediction_to_zero</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span><span class="p">:</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Function predicts areal value in an unknown location based on</span>
<span class="sd"> the area-to-area Poisson Kriging</span>
Expand Down Expand Up @@ -480,6 +481,9 @@ <h1>Source code for pyinterpolate.kriging.block.area_to_area_poisson_kriging</h1
<span class="sd"> raise_when_negative_error : bool, default=True</span>
<span class="sd"> Raise error when prediction error is negative.</span>

<span class="sd"> negative_prediction_to_zero : bool, default=False</span>
<span class="sd"> While prediction is negative, then set it to 0.</span>

<span class="sd"> Returns</span>
<span class="sd"> -------</span>
<span class="sd"> results : Dict</span>
Expand Down Expand Up @@ -639,6 +643,8 @@ <h1>Source code for pyinterpolate.kriging.block.area_to_area_poisson_kriging</h1
<span class="sa">f</span><span class="s1">&#39;not be lower than 0. Check your sampling &#39;</span>
<span class="sa">f</span><span class="s1">&#39;grid, samples, number of neighbors or &#39;</span>
<span class="sa">f</span><span class="s1">&#39;semivariogram model type.&#39;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">negative_prediction_to_zero</span><span class="p">:</span>
<span class="n">zhat</span> <span class="o">=</span> <span class="mi">0</span>

<span class="n">sigmasq</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">matmul</span><span class="p">(</span><span class="n">w</span><span class="o">.</span><span class="n">T</span><span class="p">,</span> <span class="n">covars</span><span class="p">)</span>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>pyinterpolate.kriging.block.area_to_point_poisson_kriging &#8212; pyinterpolate 1.1.0 documentation</title>
<title>pyinterpolate.kriging.block.area_to_point_poisson_kriging &#8212; pyinterpolate 1.2.0 documentation</title>



Expand Down Expand Up @@ -38,7 +38,7 @@
<link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" />
<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" />

<script src="../../../../_static/documentation_options.js?v=fc837d61"></script>
<script src="../../../../_static/documentation_options.js?v=6efca38a"></script>
<script src="../../../../_static/doctools.js?v=9bcbadda"></script>
<script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../../../../_static/clipboard.min.js?v=a7894cd8"></script>
Expand Down Expand Up @@ -111,7 +111,7 @@



<p class="title logo__title">pyinterpolate 1.1.0 documentation</p>
<p class="title logo__title">pyinterpolate 1.2.0 documentation</p>

</a></div>

Expand Down Expand Up @@ -437,8 +437,10 @@ <h1>Source code for pyinterpolate.kriging.block.area_to_point_poisson_kriging</h
<span class="kn">from</span> <span class="nn">pyinterpolate.kriging.block.weights</span> <span class="kn">import</span> <span class="n">pk_weights_array</span>
<span class="kn">from</span> <span class="nn">pyinterpolate.semivariogram.deconvolution.block_to_block_semivariance</span> <span class="kn">import</span> \
<span class="n">weighted_avg_point_support_semivariances</span>
<span class="kn">from</span> <span class="nn">pyinterpolate.semivariogram.theoretical.classes.theoretical_variogram</span> <span class="kn">import</span> <span class="n">TheoreticalVariogram</span>
<span class="kn">from</span> <span class="nn">pyinterpolate.transform.select_poisson_kriging_data</span> <span class="kn">import</span> <span class="n">select_poisson_kriging_data</span>
<span class="kn">from</span> <span class="nn">pyinterpolate.semivariogram.theoretical.classes.theoretical_variogram</span> <span class="kn">import</span> \
<span class="n">TheoreticalVariogram</span>
<span class="kn">from</span> <span class="nn">pyinterpolate.transform.select_poisson_kriging_data</span> <span class="kn">import</span> \
<span class="n">select_poisson_kriging_data</span>
<span class="kn">from</span> <span class="nn">pyinterpolate.transform.statistical</span> <span class="kn">import</span> <span class="n">sem_to_cov</span>
<span class="kn">from</span> <span class="nn">pyinterpolate.transform.transform</span> <span class="kn">import</span> <span class="n">add_ones</span>

Expand All @@ -452,7 +454,8 @@ <h1>Source code for pyinterpolate.kriging.block.area_to_point_poisson_kriging</h
<span class="n">neighbors_range</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<span class="n">raise_when_negative_prediction</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
<span class="n">raise_when_negative_error</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
<span class="n">err_to_nan</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
<span class="n">err_to_nan</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
<span class="n">negative_prediction_to_zero</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Function predicts point-support value in the unknown location based on</span>
<span class="sd"> the area-to-point Poisson Kriging</span>
Expand Down Expand Up @@ -486,6 +489,9 @@ <h1>Source code for pyinterpolate.kriging.block.area_to_point_poisson_kriging</h
<span class="sd"> When point interpolation returns ``ValueError`` then set prediction</span>
<span class="sd"> or variance error to ``NaN``.</span>

<span class="sd"> negative_prediction_to_zero : bool, default=False</span>
<span class="sd"> While prediction is negative, then set it to 0.</span>

<span class="sd"> Returns</span>
<span class="sd"> -------</span>
<span class="sd"> results : Dict[numpy array]</span>
Expand Down Expand Up @@ -687,16 +693,21 @@ <h1>Source code for pyinterpolate.kriging.block.area_to_point_poisson_kriging</h

<span class="k">if</span> <span class="n">zhat</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">:</span>
<span class="k">if</span> <span class="n">raise_when_negative_prediction</span><span class="p">:</span>
<span class="k">if</span> <span class="n">err_to_nan</span><span class="p">:</span>
<span class="n">predicted_points</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
<span class="p">[</span><span class="n">upoint</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">upoint</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">np</span><span class="o">.</span><span class="n">nan</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">nan</span><span class="p">]</span>
<span class="p">)</span>
<span class="k">continue</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s1">&#39;Predicted value is </span><span class="si">{</span><span class="n">zhat</span><span class="si">}</span><span class="s1"> and it &#39;</span>
<span class="sa">f</span><span class="s1">&#39;should not be lower than 0. Check your &#39;</span>
<span class="sa">f</span><span class="s1">&#39;sampling grid, samples, number of &#39;</span>
<span class="sa">f</span><span class="s1">&#39;neighbors or semivariogram model type.&#39;</span><span class="p">)</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s1">&#39;Predicted value is </span><span class="si">{</span><span class="n">zhat</span><span class="si">}</span><span class="s1"> and it &#39;</span>
<span class="sa">f</span><span class="s1">&#39;should not be lower than 0. Check your &#39;</span>
<span class="sa">f</span><span class="s1">&#39;sampling grid, samples, number of &#39;</span>
<span class="sa">f</span><span class="s1">&#39;neighbors or semivariogram model type.&#39;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">err_to_nan</span><span class="p">:</span>
<span class="n">predicted_points</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
<span class="p">[</span><span class="n">upoint</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">upoint</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">np</span><span class="o">.</span><span class="n">nan</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">nan</span><span class="p">]</span>
<span class="p">)</span>
<span class="k">continue</span>

<span class="k">if</span> <span class="n">negative_prediction_to_zero</span><span class="p">:</span>
<span class="n">predicted_points</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
<span class="p">[</span><span class="n">upoint</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">upoint</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="mi">0</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">nan</span><span class="p">]</span>
<span class="p">)</span>
<span class="k">continue</span>

<span class="n">point_pop</span> <span class="o">=</span> <span class="n">upoint</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span>
<span class="n">zhat</span> <span class="o">=</span> <span class="p">(</span><span class="n">zhat</span> <span class="o">*</span> <span class="n">point_pop</span><span class="p">)</span> <span class="o">/</span> <span class="n">tot_unknown_value</span>
Expand All @@ -708,17 +719,16 @@ <h1>Source code for pyinterpolate.kriging.block.area_to_point_poisson_kriging</h

<span class="k">if</span> <span class="n">sigmasq</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">:</span>
<span class="k">if</span> <span class="n">raise_when_negative_error</span><span class="p">:</span>
<span class="k">if</span> <span class="n">err_to_nan</span><span class="p">:</span>
<span class="n">predicted_points</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
<span class="p">[</span><span class="n">upoint</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">upoint</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">zhat</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">nan</span><span class="p">]</span>
<span class="p">)</span>
<span class="k">continue</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s1">&#39;Predicted error value is </span><span class="si">{</span><span class="n">sigmasq</span><span class="si">}</span><span class="s1"> and &#39;</span>
<span class="sa">f</span><span class="s1">&#39;it should not be lower than 0. &#39;</span>
<span class="sa">f</span><span class="s1">&#39;Check your sampling grid, samples, &#39;</span>
<span class="sa">f</span><span class="s1">&#39;number of neighbors or semivariogram &#39;</span>
<span class="sa">f</span><span class="s1">&#39;model type.&#39;</span><span class="p">)</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s1">&#39;Predicted error value is </span><span class="si">{</span><span class="n">sigmasq</span><span class="si">}</span><span class="s1"> and &#39;</span>
<span class="sa">f</span><span class="s1">&#39;it should not be lower than 0. &#39;</span>
<span class="sa">f</span><span class="s1">&#39;Check your sampling grid, samples, &#39;</span>
<span class="sa">f</span><span class="s1">&#39;number of neighbors or semivariogram &#39;</span>
<span class="sa">f</span><span class="s1">&#39;model type.&#39;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">err_to_nan</span><span class="p">:</span>
<span class="n">predicted_points</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
<span class="p">[</span><span class="n">upoint</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">upoint</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">zhat</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">nan</span><span class="p">]</span>
<span class="p">)</span>
<span class="k">continue</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">sigma</span> <span class="o">=</span> <span class="mi">0</span>
<span class="k">else</span><span class="p">:</span>
Expand Down
Loading