Skip to content

Commit 81c4333

Browse files
Merge pull request #468 from DataverseLabs/dev
Update to be on the same state as dev
2 parents 8c040f6 + f5c816a commit 81c4333

File tree

8 files changed

+79
-25
lines changed

8 files changed

+79
-25
lines changed

CHANGELOG.rst

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
Changes - from version >= 1.x
22
=============================
33

4+
2025-0
5+
------
6+
7+
**version 1.0.4**
8+
9+
* [enhancement] new parameter - `buffer` - has been added to `interpolate_raster` when `dimension` is set, it is float, by default equal to 0, must be equal or greater than 1. It creates buffer of size (buffer * step_size) around the interpolated grid.
10+
411
2025-07-17
512
----------
613

@@ -21,7 +28,7 @@ Changes - from version >= 1.x
2128
**version 1.0.1**
2229

2330
* [feature] `ordinary_kriging()` and `simple_kriging()` functions allow user to pass array-like object of coordinates as the `unknown_locations` parameter.
24-
* [enhacement] added `__repr__()` method to `TheoreticalVariogram` class.
31+
* [enhancement] added `__repr__()` method to `TheoreticalVariogram` class.
2532

2633

2734
Changes in transition between 0.x to 1.x
1.45 KB
Binary file not shown.
1.16 KB
Binary file not shown.

docs/build/html/_modules/pyinterpolate/viz/raster.html

Lines changed: 34 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<head>
88
<meta charset="utf-8" />
99
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
10-
<title>pyinterpolate.viz.raster &#8212; pyinterpolate 1.0.0 documentation</title>
10+
<title>pyinterpolate.viz.raster &#8212; pyinterpolate 1.0.3 documentation</title>
1111

1212

1313

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

41-
<script src="../../../_static/documentation_options.js?v=8d563738"></script>
41+
<script src="../../../_static/documentation_options.js?v=baaebd52"></script>
4242
<script src="../../../_static/doctools.js?v=9bcbadda"></script>
4343
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
4444
<script src="../../../_static/clipboard.min.js?v=a7894cd8"></script>
@@ -111,7 +111,7 @@
111111

112112

113113

114-
<p class="title logo__title">pyinterpolate 1.0.0 documentation</p>
114+
<p class="title logo__title">pyinterpolate 1.0.3 documentation</p>
115115

116116
</a></div>
117117

@@ -439,20 +439,24 @@ <h1>Source code for pyinterpolate.viz.raster</h1><div class="highlight"><pre>
439439
<span class="kn">from</span> <span class="nn">pyinterpolate.semivariogram.theoretical.theoretical</span> <span class="kn">import</span> <span class="n">TheoreticalVariogram</span>
440440

441441

442-
<span class="k">def</span> <span class="nf">set_dimensions</span><span class="p">(</span><span class="n">xs</span><span class="p">,</span> <span class="n">ys</span><span class="p">,</span> <span class="n">dmax</span><span class="p">):</span>
442+
<span class="k">def</span> <span class="nf">set_dimensions</span><span class="p">(</span><span class="n">xs</span><span class="p">,</span> <span class="n">ys</span><span class="p">,</span> <span class="n">dmax</span><span class="p">,</span> <span class="n">buffer</span><span class="o">=</span><span class="mf">0.0</span><span class="p">):</span>
443443
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
444444
<span class="sd"> Function sets dimensions of the output array.</span>
445445

446446
<span class="sd"> Parameters</span>
447447
<span class="sd"> ----------</span>
448448
<span class="sd"> xs : numpy array</span>
449-
<span class="sd"> X coordinates.</span>
449+
<span class="sd"> X coordinates.</span>
450450

451451
<span class="sd"> ys : numpy array</span>
452-
<span class="sd"> Y coordinates.</span>
452+
<span class="sd"> Y coordinates.</span>
453453

454454
<span class="sd"> dmax : int</span>
455-
<span class="sd"> How many points between max dimensions.</span>
455+
<span class="sd"> How many points between max dimensions.</span>
456+
457+
<span class="sd"> buffer : float, default = 0</span>
458+
<span class="sd"> Buffer around interpolated area. Must be equal or greater than one,</span>
459+
<span class="sd"> otherwise it is not created.</span>
456460

457461
<span class="sd"> Returns</span>
458462
<span class="sd"> -------</span>
@@ -471,12 +475,21 @@ <h1>Source code for pyinterpolate.viz.raster</h1><div class="highlight"><pre>
471475

472476
<span class="k">if</span> <span class="n">x_abs</span> <span class="o">&gt;</span> <span class="n">y_abs</span><span class="p">:</span>
473477
<span class="n">step</span> <span class="o">=</span> <span class="n">x_abs</span> <span class="o">/</span> <span class="n">dmax</span>
474-
<span class="n">x_dim_coords</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">xmin</span> <span class="o">+</span> <span class="n">step</span><span class="p">,</span> <span class="n">xmax</span> <span class="o">+</span> <span class="n">step</span><span class="p">,</span> <span class="n">step</span><span class="p">)</span>
475-
<span class="n">y_dim_coords</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">ymin</span> <span class="o">+</span> <span class="n">step</span><span class="p">,</span> <span class="n">ymax</span> <span class="o">+</span> <span class="n">step</span><span class="p">,</span> <span class="n">step</span><span class="p">)</span>
476478
<span class="k">else</span><span class="p">:</span>
477479
<span class="n">step</span> <span class="o">=</span> <span class="n">y_abs</span> <span class="o">/</span> <span class="n">dmax</span>
478-
<span class="n">y_dim_coords</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">ymin</span> <span class="o">+</span> <span class="n">step</span><span class="p">,</span> <span class="n">ymax</span> <span class="o">+</span> <span class="n">step</span><span class="p">,</span> <span class="n">step</span><span class="p">)</span>
479-
<span class="n">x_dim_coords</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">xmin</span> <span class="o">+</span> <span class="n">step</span><span class="p">,</span> <span class="n">xmax</span> <span class="o">+</span> <span class="n">step</span><span class="p">,</span> <span class="n">step</span><span class="p">)</span>
480+
481+
<span class="k">if</span> <span class="n">buffer</span> <span class="o">&gt;=</span> <span class="mi">1</span><span class="p">:</span>
482+
<span class="n">bb</span> <span class="o">=</span> <span class="n">buffer</span>
483+
<span class="k">else</span><span class="p">:</span>
484+
<span class="n">bb</span> <span class="o">=</span> <span class="mf">0.01</span>
485+
486+
<span class="n">initial_x_position</span> <span class="o">=</span> <span class="n">xmin</span> <span class="o">-</span> <span class="p">(</span><span class="n">bb</span> <span class="o">*</span> <span class="n">step</span><span class="p">)</span>
487+
<span class="n">initial_y_position</span> <span class="o">=</span> <span class="n">ymin</span> <span class="o">-</span> <span class="p">(</span><span class="n">bb</span> <span class="o">*</span> <span class="n">step</span><span class="p">)</span>
488+
<span class="n">end_x_position</span> <span class="o">=</span> <span class="n">xmax</span> <span class="o">+</span> <span class="p">(</span><span class="n">bb</span> <span class="o">*</span> <span class="n">step</span><span class="p">)</span>
489+
<span class="n">end_y_position</span> <span class="o">=</span> <span class="n">ymax</span> <span class="o">+</span> <span class="p">(</span><span class="n">bb</span> <span class="o">*</span> <span class="n">step</span><span class="p">)</span>
490+
491+
<span class="n">y_dim_coords</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">initial_y_position</span><span class="p">,</span> <span class="n">end_y_position</span><span class="p">,</span> <span class="n">step</span><span class="p">)</span>
492+
<span class="n">x_dim_coords</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">initial_x_position</span><span class="p">,</span> <span class="n">end_x_position</span><span class="p">,</span> <span class="n">step</span><span class="p">)</span>
480493

481494
<span class="c1"># y_dim_coords must be flipped</span>
482495
<span class="n">y_dim_coords</span> <span class="o">=</span> <span class="n">y_dim_coords</span><span class="p">[::</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
@@ -487,6 +500,7 @@ <h1>Source code for pyinterpolate.viz.raster</h1><div class="highlight"><pre>
487500
<a class="viewcode-back" href="../../../api/viz/raster.html#pyinterpolate.interpolate_raster">[docs]</a>
488501
<span class="k">def</span> <span class="nf">interpolate_raster</span><span class="p">(</span><span class="n">data</span><span class="p">,</span>
489502
<span class="n">dim</span><span class="o">=</span><span class="mi">1000</span><span class="p">,</span>
503+
<span class="n">buffer</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span>
490504
<span class="n">number_of_neighbors</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span>
491505
<span class="n">semivariogram_model</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
492506
<span class="n">direction</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
@@ -504,6 +518,11 @@ <h1>Source code for pyinterpolate.viz.raster</h1><div class="highlight"><pre>
504518
<span class="sd"> Number of pixels (points) of a larger dimension (it could be width</span>
505519
<span class="sd"> or height). Ratio is preserved.</span>
506520

521+
<span class="sd"> buffer : float, default = 0</span>
522+
<span class="sd"> Buffer around interpolated area. Must be equal or greater than one,</span>
523+
<span class="sd"> otherwise it is not created.</span>
524+
525+
507526
<span class="sd"> number_of_neighbors : int, default=16</span>
508527
<span class="sd"> Number of points used to interpolate data.</span>
509528

@@ -560,7 +579,10 @@ <h1>Source code for pyinterpolate.viz.raster</h1><div class="highlight"><pre>
560579
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span>
561580
<span class="n">data</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
562581

563-
<span class="n">x_coords</span><span class="p">,</span> <span class="n">y_coords</span><span class="p">,</span> <span class="n">props</span> <span class="o">=</span> <span class="n">set_dimensions</span><span class="p">(</span><span class="n">data</span><span class="p">[:,</span> <span class="mi">0</span><span class="p">],</span> <span class="n">data</span><span class="p">[:,</span> <span class="mi">1</span><span class="p">],</span> <span class="n">dim</span><span class="p">)</span>
582+
<span class="n">x_coords</span><span class="p">,</span> <span class="n">y_coords</span><span class="p">,</span> <span class="n">props</span> <span class="o">=</span> <span class="n">set_dimensions</span><span class="p">(</span><span class="n">data</span><span class="p">[:,</span> <span class="mi">0</span><span class="p">],</span>
583+
<span class="n">data</span><span class="p">[:,</span> <span class="mi">1</span><span class="p">],</span>
584+
<span class="n">dim</span><span class="p">,</span>
585+
<span class="n">buffer</span><span class="p">)</span>
564586

565587
<span class="c1"># Calculate semivariance if not provided</span>
566588

docs/build/html/api/viz/raster.html

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -455,7 +455,7 @@ <h1>Visualization<a class="headerlink" href="#visualization" title="Link to this
455455
<h2>Raster<a class="headerlink" href="#raster" title="Link to this heading">#</a></h2>
456456
<dl class="py function">
457457
<dt class="sig sig-object py">
458-
<span class="sig-prename descclassname"><span class="pre">pyinterpolate.</span></span><span class="sig-name descname"><span class="pre">interpolate_raster</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">data</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dim</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1000</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">number_of_neighbors</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">4</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">semivariogram_model</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">direction</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tolerance</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">allow_approx_solutions</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span></span></span><a class="reference internal" href="../../_modules/pyinterpolate/viz/raster.html#interpolate_raster"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
458+
<span class="sig-prename descclassname"><span class="pre">pyinterpolate.</span></span><span class="sig-name descname"><span class="pre">interpolate_raster</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">data</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dim</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1000</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">buffer</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0.0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">number_of_neighbors</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">4</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">semivariogram_model</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">direction</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tolerance</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">allow_approx_solutions</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span></span></span><a class="reference internal" href="../../_modules/pyinterpolate/viz/raster.html#interpolate_raster"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
459459
<dd><p>Function interpolates raster from data points using ordinary kriging.</p>
460460
<dl class="field-list">
461461
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
@@ -465,6 +465,9 @@ <h2>Raster<a class="headerlink" href="#raster" title="Link to this heading">#</a
465465
<dt><strong>dim</strong><span class="classifier">int</span></dt><dd><p>Number of pixels (points) of a larger dimension (it could be width
466466
or height). Ratio is preserved.</p>
467467
</dd>
468+
<dt><strong>buffer</strong><span class="classifier">float, default = 0</span></dt><dd><p>Buffer around interpolated area. Must be equal or greater than one,
469+
otherwise it is not created.</p>
470+
</dd>
468471
<dt><strong>number_of_neighbors</strong><span class="classifier">int, default=16</span></dt><dd><p>Number of points used to interpolate data.</p>
469472
</dd>
470473
<dt><strong>semivariogram_model</strong><span class="classifier">TheoreticalVariogram, default=None</span></dt><dd><p>Variogram model, if not provided then it is estimated from a given

docs/build/html/searchindex.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/pyinterpolate/viz/raster.py

Lines changed: 31 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,24 @@
1515
from pyinterpolate.semivariogram.theoretical.theoretical import TheoreticalVariogram
1616

1717

18-
def set_dimensions(xs, ys, dmax):
18+
def set_dimensions(xs, ys, dmax, buffer=0.0):
1919
"""
2020
Function sets dimensions of the output array.
2121
2222
Parameters
2323
----------
2424
xs : numpy array
25-
X coordinates.
25+
X coordinates.
2626
2727
ys : numpy array
28-
Y coordinates.
28+
Y coordinates.
2929
3030
dmax : int
31-
How many points between max dimensions.
31+
How many points between max dimensions.
32+
33+
buffer : float, default = 0
34+
Buffer around interpolated area. Must be equal or greater than one,
35+
otherwise it is not created.
3236
3337
Returns
3438
-------
@@ -47,12 +51,21 @@ def set_dimensions(xs, ys, dmax):
4751

4852
if x_abs > y_abs:
4953
step = x_abs / dmax
50-
x_dim_coords = np.arange(xmin + step, xmax + step, step)
51-
y_dim_coords = np.arange(ymin + step, ymax + step, step)
5254
else:
5355
step = y_abs / dmax
54-
y_dim_coords = np.arange(ymin + step, ymax + step, step)
55-
x_dim_coords = np.arange(xmin + step, xmax + step, step)
56+
57+
if buffer >= 1:
58+
bb = buffer
59+
else:
60+
bb = 0.01
61+
62+
initial_x_position = xmin - (bb * step)
63+
initial_y_position = ymin - (bb * step)
64+
end_x_position = xmax + (bb * step)
65+
end_y_position = ymax + (bb * step)
66+
67+
y_dim_coords = np.arange(initial_y_position, end_y_position, step)
68+
x_dim_coords = np.arange(initial_x_position, end_x_position, step)
5669

5770
# y_dim_coords must be flipped
5871
y_dim_coords = y_dim_coords[::-1]
@@ -61,6 +74,7 @@ def set_dimensions(xs, ys, dmax):
6174

6275
def interpolate_raster(data,
6376
dim=1000,
77+
buffer=0.0,
6478
number_of_neighbors=4,
6579
semivariogram_model=None,
6680
direction=None,
@@ -78,6 +92,11 @@ def interpolate_raster(data,
7892
Number of pixels (points) of a larger dimension (it could be width
7993
or height). Ratio is preserved.
8094
95+
buffer : float, default = 0
96+
Buffer around interpolated area. Must be equal or greater than one,
97+
otherwise it is not created.
98+
99+
81100
number_of_neighbors : int, default=16
82101
Number of points used to interpolate data.
83102
@@ -134,7 +153,10 @@ def interpolate_raster(data,
134153
if isinstance(data, list):
135154
data = np.array(data)
136155

137-
x_coords, y_coords, props = set_dimensions(data[:, 0], data[:, 1], dim)
156+
x_coords, y_coords, props = set_dimensions(data[:, 0],
157+
data[:, 1],
158+
dim,
159+
buffer)
138160

139161
# Calculate semivariance if not provided
140162

tests/test_viz/test_raster.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,4 @@ def test_interpolate_raster():
3636
assert isinstance(interpolated['result'], np.ndarray)
3737
assert isinstance(interpolated['error'], np.ndarray)
3838
assert isinstance(interpolated['params'], dict)
39-
assert interpolated['result'].shape == (50, 50)
39+
assert interpolated['result'].shape == (51, 51)

0 commit comments

Comments
 (0)