ICSM / pgmuvi

Python gaussian processes for inference on multi-wavelength light curves
https://pgmuvi.readthedocs.io
GNU General Public License v3.0
12 stars 6 forks source link

lightcurve class is incomplete #4

Closed pscicluna closed 1 year ago

pscicluna commented 1 year ago

The main point of user interaction should be the Lightcurve class, which a user would feed their data to and collect results from. However, at present it can only handle initialising with some data and a little bit of pre-processing, not actually doing any fits or post-processing.

Some relevant code has been prototyped in test_script.py, which needs to be translated into a more rational form inside Lightcurve. Some of those prototypes also need to be generalised (e.g. they assume a single-band lightcurve but need to work for multi-band one).

Things to be done (which may require separate issues, and are not necessarily in any order):

  1. complete the fit() method. This would be where some optimiser is used to find the best hyperparameters for the lightcurve, which translates into a description of the PSD and hence what the set of strongest periods are for the lightcurve (including wavelength information). For now, this can do maximum-likelihood optimisation.
  2. Add a Bayesian routine using pyro's NUTS implementation for MCMC. This could be part of fit() or a separate sample() method. This requires a way to specify hyperpriors for the GP.
  3. Parse the results of fitting/sampling to produce meaningful output. This includes results tables and figures each with their own methods. This needs to account for the fact that the inputs are rescaled to make them easier to fit.
pscicluna commented 1 year ago

I think this is now functionally complete. Any further feature requests can be brought up in new issues.