MailRuChamps / raic-2020

GNU General Public License v3.0
26 stars 27 forks source link

The python package should be properly modularized #89

Closed KOLANICH closed 3 years ago

KOLANICH commented 3 years ago

i.e. it should be possible to install it with pip and keep solutions in separate repos.

brunneng commented 3 years ago

No, the idea is that you should be able to modify model classes as you want, this will be not possible with that you proposed.

KOLANICH commented 3 years ago

you should be able to modify model classes as you want

  1. I still will be able to modify them any way I want by installing the package, won't I?
  2. I think that a user shouldn't modify the interface classes. The logic related to AI is condensed in a single file, and this file is pretty standalone from the rest of classes. The rest of classes just do interfacing to the server and provide some abstractions to interface to the AI. And I clearly don't want to modify them, I want them to be shipped in the state so good that I won't have to modify them. And of course, I think they must be largerly redesigned. I mean that for doing math everyone will have to use numpy. I mean all the numerical ecosystem of python, be it scipy, pywt, opencv, statmodels, scikit-learn, various black-box optimizers (a shameless plug: I have a lib wrapping some black-box optimizers called UniOpt), autograd, tensorflow, pytorch, xgboost, pandas - all of these are centered around the types provided by numpy and all the stuff written in python and dealing with distributions and linalg uses scipy. So IMHO for python mirroring API of the interfaces of other languages are unneeded, python is a bit special since we have a de-facto standard, if your python interface is not centered numpy, every user will have to reinvent a wheel just to implement the interface it is convenient to interact from the rest of the ecosystem. So, vectors should be just numpy arrays, and lists of vectors should be matrices.
kuviman commented 3 years ago

There is a lot of options of how to implement the package, we give you an opportunity to do as you wish and just provide some default