June ends

The first coding has ended and I'm happy to say my pull request is nearly complete. I'm waiting for mentors to review the code, then I'll fix any remaining issues.

Here's a quick summary of the new code:

  • A new sub-module called jakob2019 was created as a part of colour.recovery.
  • The main interface is RGB_to_sd_Jakob2019, which turns colors (from any RGB space supported by Colour) to a spectral distribution.
  • A low-level interface, find_coefficients, can be used if only the model parameters are needed. It's where the entire optimization algorithm takes place.
  • It's also worth mentioning error_function, the function minimized during optimization. It also returns its own gradient (derivatives of the function value with respect to its inputs) to aid numerical algorithms. This required analytically differentiating all the intermediate steps.
  • The Jakob2019Interpolator class can be used to work with precomputed tables. It can read and write the article's authors' .coeff files and also generate new ones.
  • All functions and classes are documented.
  • Close to 100% test coverage. Unit tests still need some improvements.