The 0.0.5 release of `jaxspec` is out ! Many code refactoring and internal cleaning is happening, but there are also new features, including a direct fit method for your spectral models.
New features
- `jaxspec.fit` module now includes `BayesianFitter` and `MinimizationFitter` classes to perform either MCMC or direct minimization to find the best set of parameters. Note that `MinimizationFitter` is faster but more likely to fall in local minima.
- Both `BayesianFitter` and `MinimizationFitter` can fit the same model using multiple `ObsConfiguration` at once to obtain stronger constraints. Either pass a `list[ObsConfiguration]` or a `dict[str, ObsConfiguration]` to achieve this.
- Fit results are now plotable with any unit you want! `FitResult.plot_ppc` haw two new kwargs : `x_unit` and `y_type`. `x_unit` argument can be any unit of length, frequency, or energy and the plot will adapt. `y_type` can be any of "counts", "countrate", "photon_flux", "photon_flux_density" and will plot the equivalent curve.
- `fakeit` and `fakeit_for_multiple_parameters` can specify `sparsify_matrix = True` for large RMF.
- `jaxspec.util.abundances` now contains two tables. `abundance_table` contains the most used abundance tables in astrophysics, and `element_table` contains various data about elements, imported from the `mendeleev`package.
- `jaxspec` is now tested against the [HEACIT dataset](https://github.com/HEACIT/curated-test-data) to ensure that it is performant at reading the many types of instrument and observation files produced by the OGIP standard.
Breaking changes
- `ChainResult` is renamed to `FitResult`
- `ChainResult.chain` is renamed to `FitResult.to_chain`
- `ChainResult.sample` has been split to `FitResult.samples_haiku` for a two level dictionary of posterior samples, e.g. `samples['powerlaw_1']['alpha']`, and to `FitResult.samples_flat` for a one level dictionary of posterior samples, e.g. `samples['powerlaw_1_alpha']`.
- `BayesianModel` is renamed to `BayesianFitter`.
- `Instrument.from_ogip_file` now takes arf_path as a kwarg since some instruments use a single .rmf file to carry both the redistribution matrix and effective area. `Instrument.from_ogip_file("data/PN.rmf","data/PN.arf")` should be changed to `Instrument.from_ogip_file("data/PN.rmf", arf_path="data/PN.arf")`. Even if the first syntax should work, be carefull to check that you did not intervert .arf and .rmf.