Description
I have started to review friedrich
with the aim of integrating it into linfa
.
I imagine the integration using a "shim" crate in the linfa
repository, named linfa-gaussian-processes
, which re-exports all or part of friedrich
's public API. This ensures that linfa
is in control of naming conventions, interfaces and whatever is required to give the overall linfa
ecosystem an homogeneous feeling as well as allowing you to retain ownership of friedrich
and evolving it as you see fit.
The alternative would be to move friedrich
inside linfa
as linfa-guassian-processes
, but that's a much more substantial step hence I don't think that's what we want to go for (at least for now).
In terms of requirements, apart from some minor improvements here and there that I should be able to submit as PRs against friedrich
over the Christmas holidays, I'd like to understand the following:
- What was the rationale behind the choice of
nalgebra
overndarray
?
I'd like to standardize onndarray
, at least in the initial phase, to avoid having overly generic interfaces (e.g. inputs and outputs generic parameters).
Is it because you neededndarray-linalg
and that requires a non-Rust dependency? - I have found that there are few tests across the repository, either testing units of functionality or the overall algorithm. What are your thoughts on this?
- Benchmarks: have you compared how your implementation fares against another reference implementation, both in terms of performance and correctness?