-
Notifications
You must be signed in to change notification settings - Fork 17
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
User interface and better solvers for GAP fitting #305
base: master
Are you sure you want to change the base?
Conversation
(Gaussian Approximation Potentials)
and add a sensible default to baseline values in KRR class (in case we encounter species that weren't in the training set; this is better than failing with a KeyError)
(Update to version of CURFilter and FPSFilter from PR #265)
Get up to speed with the latest PRs (and eventually feat/gap_pred as well)
Account for name change and add capability to do FPS as well as CUR
(mainly useful for test runs on smaller machines)
I was initially intending this to work just by changing the working directory, since there are a few other files written that would be a pain to give the option to specify names for. But I think it's worth at least leaving the potential filename flexible.
And turn off computing gradients while sparsifying (they should be turned on again when computing the gradient kernel)
This reverts commit 2923afe.
This reverts commit 574fac1.
…r""" This reverts commit d1cc4d4.
This reverts commit f68c5a1.
A few comments/questions to this draft:
I guess many of these suggestions can be offloaded to the wishlist of the next PR too. |
One at a time:
Sure, although some of that was intended as diagnostic information or just to have a few "save points" in case the fit fails e.g. due to lack of time or memory. If you're referring specifically to this line:
It's read by the
Yes, I'll just go ahead and add that to the wish list.
I suppose so, though I don't quite see the use case - usually you'll want to fit on a dataset where everything is computed at the same level of theory, and usually that also means having all structures with the same type of data (e.g. all with forces or all without). In any case, I don't think it would be too hard to implement.
That may indeed be useful, but I think it'll have to wait for another PR.
Not really, but I don't see an easy way to automatically turn on atoms wrapping (which I think should be the default option tbh), so it was easier at the time to put in 5 lines of Python and just do it myself. For the non-periodic case we can use the
Yep, this was deliberately done for compatibility with the rest of librascal, and especially the representation parameters are very clear when stored in this format.
This would be part of the regularizer optimization, which might be better off in its own PR.
That was a mistake, development has been moved to its own branch. |
Includes some important bugfixes
Especially to get the updated sparsification utils and zundel notebook parameters for smoother automatic testing
Also swap labels to resolve #380
Stresses (i.e. cell gradients) are going to be tricky...
Also add a method to store features into lists of ASE Atoms, so that these can be used instead of rascal's internal AtomsLists Finally, selection methods now work with lists of ASE Atoms
… into feat/gaptools
(basically, this just removes kvec_generator.cc from compilation, because it was throwing mysterious bounds-checking errors for Eigen arrays. Will need to resolve properly once feat/reciprocal_space_soap is merged in)
- temporarily exclude kvec_generator from tests (kvec_generator.cc is currently incompatible with gcc11) - unpin jinja2 version, since older versions fail with latest markupsafe (pallets/markupsafe#304) and it is now compatible with latest nbsphinx (spatialaudio/nbsphinx#563)
Users can still specify it if they need it, but this is broken in multiple ways right now.
Apparently this was updated in skcosmo recently...
This was previously implemented but execution never reached there. This should therefore be considered an experimental feature until tests can be made.
Ok, this is almost ready for review -- it has all the functionality I was planning to add here, now just needs some testing. The main major change since the last time this was updated was to add a Kernel class that works with feature matrices explicitly, rather than rascal StructureManagers. This is of course less efficient than using the native rascal Kernel class, but it also means we can work with representations that aren't currently computed in librascal (like LODE). |
Also fix an outdated import and format code
This PR aims to improve the user interface of the potential-fitting step, starting with fitting of SOAP-GAP potentials. In particular, it provides an interface to automate many of the common tasks involved in GAP fitting, allowing non-interactive (batch-style) fitting based on a flexible Python interface and easing the transition from QUIP.
Edit 24.06.2021: Incorporate the RKHS solver from #354 - description below:
Implement an RKHS solver for the sparse GPR problem.
Solving the GPR problem using the "normal" equation is very ill-conditioned.
This implements an alternative solver that is much better behaved.
Might be good to also include different options in terms of using solve or lstsq,
let's see where this goes - however this already works.
Main changes:
train_gap_model
function (nowgaptools.fit_gap_simple()
):In progress or not yet implemented (wishlist):
(Probably for future PRs:)
Tasks before review:
formatted correctly (ask @max-veit if you need help with this task).
explain the feature and its usage in plain English
make lint
on the project, ensure it passesmake pretty-cpp
andmake pretty-python
, check that theauto-formatting is sensible
own branch