This PR replaces #40 (I wanted to change the source branch)
This PR implements equivariant partial differential operators (PDOs). It's ready to be merged from my side, though there are a few things we might want to discuss and perhaps change (see below).
Note on documentation:
When I try to compile the documentation with make github, I get the following warning:
WARNING: mathjax_config/mathjax2_config does not work for the current MathJax version, use mathjax3_config instead.
The custom LaTeX commands such as \R consequently don't work. But I assume that's just because I have different versions of the sphinx packages installed than you, @Gabri95. So I didn't look into it, let me know if you also have issues compiling the documentation.
Backward compatibility:
All interfaces that will typically be used by end-users are fully backward compatible. Code that relies on the internals of the basis expansion modules might be affected, though I think even that is unlikely.
Potential changes (to be discussed):
[ ] Refactor R2Conv and R2Diffop by moving common code into a new parent class: these two classes are almost identical and we could avoid a lot of code duplication that way
[ ] We could make Gaussian discretization the default (rather than finite differences). It performs better in my experience, but on the other hand, it requires an additional hyperparameter which might make the default user experience more complex
[ ] The equivariant PDO implementation requires two new packages: sympy and https://github.com/treverhines/RBF. The former is only needed for finite difference discretization (the current default) and the latter only for the other two discretizations. Currently, the RBF package is an optional dependency and sympy a required one. We could consider making sympy optional as well (for users who only need kernels). On the other hand, the R2Diffop class would then not work without optional installs.
This PR replaces #40 (I wanted to change the source branch)
This PR implements equivariant partial differential operators (PDOs). It's ready to be merged from my side, though there are a few things we might want to discuss and perhaps change (see below).
Note on documentation: When I try to compile the documentation with
make github
, I get the following warning:WARNING: mathjax_config/mathjax2_config does not work for the current MathJax version, use mathjax3_config instead
. The custom LaTeX commands such as\R
consequently don't work. But I assume that's just because I have different versions of the sphinx packages installed than you, @Gabri95. So I didn't look into it, let me know if you also have issues compiling the documentation.Backward compatibility: All interfaces that will typically be used by end-users are fully backward compatible. Code that relies on the internals of the basis expansion modules might be affected, though I think even that is unlikely.
Potential changes (to be discussed):
RefactorR2Conv
andR2Diffop
by moving common code into a new parent class: these two classes are almost identical and we could avoid a lot of code duplication that wayWe could make Gaussian discretization the default (rather than finite differences). It performs better in my experience, but on the other hand, it requires an additional hyperparameter which might make the default user experience more complexThe equivariant PDO implementation requires two new packages:sympy
and https://github.com/treverhines/RBF. The former is only needed for finite difference discretization (the current default) and the latter only for the other two discretizations. Currently, the RBF package is an optional dependency andsympy
a required one. We could consider makingsympy
optional as well (for users who only need kernels). On the other hand, theR2Diffop
class would then not work without optional installs.