Comments (2)
@bsmurphy Thanks for this idea!
The current situation (at least with ordinary kriging) is that to solve the linear kriging system we use,
- matrix inversion in
_exec_loop
(loop backend),_exec_vector
(vectorized backend) and_c_exec_loop
(C loop backend) .
- linalg.solve in
_exec_loop_moving_window
(loop + moving window backend) and_c_exec_loop_moving_window
(C loop backend + mooving window)
The linalg.solve uses a LU decomposition internally , so I guess the questions are,
- would it be faster to get rid of matrix inversion, and use LU decomposition instead?
- in the cases when
linalg.solve
is used repeatedly inside a loop could we precompute the LU decomposition outside of the loop and solve a simpler system in the loop?
Both sound interesting and would be worth exploring (strarting from the pure Python implementations that are easier to change). In any case we need benchmarks to see how it would impact performance and memory use (cf. PR #36) ..
from pykrige.
We should use the properties of the kriging matrix to optimize that.
The kriging equation can always be reformulated to use the covariance-matrix instead of the semi-variogram-matrix (as done now). Then, this part of the matrix is a symmetric and positive definite matrix (if we use a valid covariance model), which could be tackled by the Cholesky decomposition. The full inversion could then be computed by block matrix-inversion as stated here: #52 (comment)
from pykrige.
Related Issues (20)
- GSTools 1.4 requirement for PyKrige 1.7
- Bug: Problem with exact_values when ordinary kriging with backend = 'C' HOT 2
- search radius HOT 3
- Bug: pykrige.ok using deprecated function from SciPy 1.7.0 HOT 1
- Excessive memory use creating OrdinaryKriging object (even if not estimating variogram) HOT 1
- Memory Issue with Large Dataset
- How do you save a model once you fit it
- kr and ck are not imported in __init__.py HOT 1
- `x0` is infeasible.
- uk3d.execute prints statement of 'Executing Ordinary Kriging' HOT 1
- The result is very difference with arcmap, and result grid missing maximum value.
- Can variogram start at zero distance?
- Bug variogram_model parameter ? HOT 1
- zero-size array Erro in OrdinaryKriging HOT 1
- Questions about setting the search range for regular kriging
- Kriging with external drift for temperature interpolation using elevation... again
- regression and kriging, rk.py
- Attempt at using pyKrige.ok3d with xarray.apply_ufunc to reduce memory issues
- Variogram in Universal Kriging
- Cannot find reference 'OK' in 'pykrige.py | __init__.py' HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from pykrige.