You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Add a listing of interpolator types to the API documentation #224
There are numerous references to interpolator types in the documentation, but there is no authoritative reference on the range of options available. I finally found one by reading through the code. Ideally, the docs would also be a little more centralized in how they discuss the use cases and input parameters for each interpolation scheme.
Hi @davenquinn, thanks for the feedback. Generally all of the interpolator are for the same task.. except p2 which is experimental. The main difference is the support used for interpolation and as a result the speed of interpretation. FDI is a good choice to start. If you want to contribute to the docs feel free to open a PR.
Hello! I have some confusion regarding the interpolator, and I would appreciate your help in clarifying it. Before interpolation, the attribute values (lithology) in my dataset are discrete numbers ranging from 0 to 10. After interpolation, I tested the accuracy of my interpolation using the model.evaluate_model(xyz) method and found that the interpolated values range from -1 to 10, which includes an extra value of -1 that was not present before. This confuses me, and I suspect that it might be an issue with the interpolation method.
Is it possible to add constraints on the value range in interpolation methods like FDI? Additionally, can I use my own custom-defined interpolation algorithms, such as Kriging?
hi @EasonWangc, sorry for the delay replying I have been on leave for a few weeks. The loop interpolators are usually trying to interpolate a signed distance field so the values associated with each stratigraphic unit should be the distance from the base/top of the group to that contact. If you use discrete numbers you would need to treat these as interface constraints, which will then additionally require constraints for the gradient norm or unique value constraints.
Yes, you can define your own interpolator in LoopStructural... it is a bit clunky to do at the moment but if you were to build a class using the GeologicalInterpolator as a base and then implement all of the abstract methods it will be compatible with LoopStructural. To register this with LoopStructural you would need to add the interpolator with a string alias to the interpolator_string_map dictionary. The surfe interpolator might do what you need?
I am glad to receive your reply! I am not very proficient in using LoopStructural and do not quite understand how to implement interface constraints. Could you provide some example code or a more detailed explanation? I would greatly appreciate it.
Additionally, I am pleased to know that defining my own interpolator in LoopStructural is possible. I noticed that there is no Kriging interpolation method in LoopStructural; could you provide an example of how to add the Kriging method to LoopStructural?
I also noticed a warning after running my code: "Surfe is not installed, SurfeRBFInterpolator will not be available." I found that in your updates, it seems you have removed the surfepy import. How to deal with this problem?
In any case, thank you for your reply, and I look forward to hearing from you.
@EasonWangc if you want to implement Kriging, i suggest you look at the GeologicalInterpolator class and implement all of the required abstract methods.
Surfepy was disabled because there were some issues with building the library on newer python versions. It should work if you pip install surfepy as I have updated the build workflow.
Activity
lachlangrose commentedon Mar 6, 2025
Hi @davenquinn, thanks for the feedback. Generally all of the interpolator are for the same task.. except p2 which is experimental. The main difference is the support used for interpolation and as a result the speed of interpretation. FDI is a good choice to start. If you want to contribute to the docs feel free to open a PR.
EasonWangc commentedon Mar 11, 2025
Hello! I have some confusion regarding the interpolator, and I would appreciate your help in clarifying it. Before interpolation, the attribute values (lithology) in my dataset are discrete numbers ranging from 0 to 10. After interpolation, I tested the accuracy of my interpolation using the model.evaluate_model(xyz) method and found that the interpolated values range from -1 to 10, which includes an extra value of -1 that was not present before. This confuses me, and I suspect that it might be an issue with the interpolation method.
Is it possible to add constraints on the value range in interpolation methods like FDI? Additionally, can I use my own custom-defined interpolation algorithms, such as Kriging?
lachlangrose commentedon Mar 30, 2025
hi @EasonWangc, sorry for the delay replying I have been on leave for a few weeks. The loop interpolators are usually trying to interpolate a signed distance field so the values associated with each stratigraphic unit should be the distance from the base/top of the group to that contact. If you use discrete numbers you would need to treat these as interface constraints, which will then additionally require constraints for the gradient norm or unique value constraints.
Yes, you can define your own interpolator in LoopStructural... it is a bit clunky to do at the moment but if you were to build a class using the GeologicalInterpolator as a base and then implement all of the abstract methods it will be compatible with LoopStructural. To register this with LoopStructural you would need to add the interpolator with a string alias to the interpolator_string_map dictionary. The surfe interpolator might do what you need?
Cheers
EasonWangc commentedon Mar 31, 2025
I am glad to receive your reply! I am not very proficient in using LoopStructural and do not quite understand how to implement interface constraints. Could you provide some example code or a more detailed explanation? I would greatly appreciate it.
Additionally, I am pleased to know that defining my own interpolator in LoopStructural is possible. I noticed that there is no Kriging interpolation method in LoopStructural; could you provide an example of how to add the Kriging method to LoopStructural?
I also noticed a warning after running my code: "Surfe is not installed, SurfeRBFInterpolator will not be available." I found that in your updates, it seems you have removed the surfepy import. How to deal with this problem?
In any case, thank you for your reply, and I look forward to hearing from you.
lachlangrose commentedon Apr 30, 2025
@EasonWangc if you want to implement Kriging, i suggest you look at the
GeologicalInterpolatorclass and implement all of the required abstract methods.Surfepy was disabled because there were some issues with building the library on newer python versions. It should work if you
pip install surfepyas I have updated the build workflow.