Skip to content

Commit 6b8ac4f

Browse files
committed
clean up before release
1 parent 91f809b commit 6b8ac4f

File tree

1 file changed

+8
-46
lines changed

1 file changed

+8
-46
lines changed

src/numericalnim/rbf.nim

Lines changed: 8 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,6 @@ iterator neighbours*[T](grid: RbfGrid[T], k: int, searchLevels: int = 1): int =
4040
break loopBody
4141
elif (k div step) mod grid.gridSize == grid.gridSize - level and x >= level:
4242
break loopBody
43-
#[ if ((k div step) mod grid.gridSize == 0 and x == -1) or ((k div step) mod grid.gridSize == 1 and x == -2):
44-
break loopBody
45-
elif (k div step) mod grid.gridSize == grid.gridSize - 1 and x == 1:
46-
break loopBody
47-
else: ]#
4843
kNeigh += x * step
4944
if kNeigh >= 0 and kNeigh < grid.gridSize ^ grid.gridDim:
5045
yield kNeigh
@@ -149,11 +144,17 @@ proc scalePoint*(x: Tensor[float], limits: tuple[upper: Tensor[float], lower: Te
149144
(x -. lower) /. (upper - lower)
150145

151146
proc newRbf*[T](points: Tensor[float], values: Tensor[T], gridSize: int = 0, rbfFunc: RbfFunc = compactRbfFunc, epsilon: float = 1): RbfType[T] =
147+
## Construct a Radial basis function interpolator using Partition of Unity.
148+
## points: The positions of the data points. Shape: (nPoints, nDims)
149+
## values: The values at the points. Can be multivalued. Shape: (nPoints, nValues)
150+
## gridSize: The number of cells along each dimension. Setting it to the default 0 will automatically choose a value based on the number of points.
151+
## rbfFunc: The RBF function that accepts shape parameter. Default is a C^2 compactly supported function.
152+
## epsilon: shape parameter. Default 1.
152153
assert points.shape[0] == values.shape[0]
153154
assert points.shape.len == 2 and values.shape.len == 2
154155
let upperLimit = max(points, 0)
155156
let lowerLimit = min(points, 0)
156-
let limits = (upper: upperLimit, lower: lowerLimit) # move this buff to scalePoint
157+
let limits = (upper: upperLimit, lower: lowerLimit)
157158
let scaledPoints = points.scalePoint(limits)
158159
let dataGrid = newRbfGrid(scaledPoints, values, gridSize)
159160
let patchPoints = dataGrid.constructMeshedPatches()
@@ -190,7 +191,7 @@ proc eval*[T](rbf: RbfType[T], x: Tensor[float]): Tensor[T] =
190191
result[row, _] = result[row, _] + ci * val
191192
result[row, _] = result[row, _] / c
192193
else:
193-
result[row, _] = T(Nan) # allow to pass default value to newRbfPU?
194+
result[row, _] = T(Nan) # allow to pass default value to newRbf?
194195

195196
proc evalAlt*[T](rbf: RbfType[T], x: Tensor[float]): Tensor[T] =
196197
assert x.shape.len == 2
@@ -217,42 +218,3 @@ proc evalAlt*[T](rbf: RbfType[T], x: Tensor[float]): Tensor[T] =
217218

218219
result /.= c
219220
result[not isSet, _] = T(NaN)
220-
221-
when isMainModule:
222-
let x1 = @[@[0.01, 0.01, 0.01], @[1.0, 1.0, 0.0], @[1.0, 2.0, 4.0]].toTensor
223-
let x2 = @[@[0.0, 0.0, 1.0], @[1.0, 1.0, 2.0], @[1.0, 2.0, 3.0]].toTensor
224-
#echo distanceMatrix(x1, x1)
225-
let values = @[0.1, 1.0, 2.0].toTensor.unsqueeze(1)
226-
#echo newRbf(x1, values, epsilon=10)
227-
228-
import benchy
229-
230-
var pos = randomTensor(100000, 3, 1.0)
231-
pos[0, _] = [[1.0, 1.0, 1.0]]
232-
pos[1, _] = [[0.0, 0.0, 0.0]]
233-
let vals = randomTensor(100000, 1, 1.0)
234-
let evalPos = randomTensor(100000, 3, 0.9)
235-
#let rb = newRbf(pos, vals)
236-
#let rbPU = newRbfPu(pos, vals)
237-
#timeIt "RbfPU eval":
238-
# keep rbPU.eval(evalPos)
239-
#timeIt "Rbf eval":
240-
# keep rb.eval(evalPos)
241-
242-
#let rbfPu = newRbfPu(x1, values, 3)
243-
#echo rbfPu.grid.values[1, 0]
244-
#echo rbfPu.eval(x1[[2, 1, 0], _])
245-
246-
#echo rbfPu.eval(sqrt x1)
247-
echo "----------------"
248-
for y in countdown(4, 0):
249-
var row = ""
250-
for x in 0 .. 4:
251-
row &= $(x*5 + y) & "\t"
252-
echo row
253-
254-
let xGrid = [[0.1, 0.1], [0.2, 0.3], [0.9, 0.9], [0.4, 0.4]].toTensor
255-
let valuesGrid = @[0, 1, 9, 5].toTensor.reshape(4, 1)
256-
let grid = newRbfGrid(xGrid, valuesGrid, 5)
257-
#echo grid
258-
echo grid.neighbours(7, 1).toSeq

0 commit comments

Comments
 (0)