I think Neanderthal should simply become a core.matrix implementation. There's nothing stopping that from working as far as I can see
Spark RDDs could also possibly be turned into core.matrix implementations, haven't tried it yet but it should work
@tnoda Rashinban looks great! I think it could also work well with core.matrix, at least in terms of interop with matrices / vectors etc. The main thing to do is ensure that arguments to functions get interpreted using the core.matrix API, i.e. you use functions like clojure.core.matrix/to-double-array to ensure that any core.matrix array can be used as an argument
See also this issue, which I think would be helpful (for performance at least) - https://github.com/mikera/core.matrix/issues/247
hi, tnoda. thank you for taking the effort to bring Rs abundance to Clojure. Personally, I would potentially use it for comparing my own data analysis/machine learning algorithms written in clojure with existing R options. So, not for the main stuff, but still VERY useful.
Having that in mind, I do not care whether you base it on core.matrix or not, although I have to admit it would be best for MY use cases if you support Neanderthal.
Neanderthal could be useful for you because its main implementation is based on direct byte buffers, which would enable you to transfer data from Clojure to R and vice versa without any copying.
Yeah, mike would also say that he does not see why core.matrix cannot adopt the same approach. Well, in that detail he is right. core.matrix is (probably) capable of having a direct byte buffer based implementation, but somehow, aftew a few years of exisence, it still does not, so you'd have to write it yourself.
There are also some things in core.matrix design that made it unsuitable for Neanderthal to be based on, but that is another discussion that we already had.
BTW, in Neanderthal, if you do not use the native BLAS operations, but only use the direct byte buffer as a data structure, you do not even have to have ATLAS installed on your machine (which is the only one pain point for inexperienced users currently). Everything will work out of the box.