This release implements two major changes to **PyAutoCTI**:
**Nautilus:**
For the past ~3 years, model fitting has used the nested sampling algorithm Dynesty.
Recently, a new nested sampler, Nautilus (https://nautilus-sampler.readthedocs.io/en/stable/), was released, which uses machine-learning based techniques to improve sampling.
Extensive testing of modeling with Nautilus has revealed that it:
- Speeds up the fitting of simple models by ~x2 - x3.
- Speeds up the fitting of complex models by ~x3 - x5+.
- Is more robust and reliable (e.g less likely to infer a local maxima, can fit more complex lens models).
- Controlled predominantly by just one parameter `n_live`, so is simpler to use than `dynesty`.
- Parallelization using Python `multiprocessing` is more efficient than `dynesty` and now supports proper error handling.
`Nautilus` is therefore now the default modeler, with all workspace examples updated accordingly.
NOTE: `Nautilus` does not currently support on-the-fly output and to get the results of a lens model mid-fit a user can instead cancel the run (e.g. via Ctrl + C) and restart it, where the maximum likelihood model will be output.
**Results Output**
Result metadata was previously output as `.pickle` files, which were not human readable and depended on project imports, hurting backwards compatibility.
All metadata is now output as human readable `.json` files and dataset as .`fits` files, making it a lot more straight forward for a user to interpret how data is stored internally within **PyAutoCTI**:
![image](https://github.com/Jammy2211/PyAutoLens/assets/23455639/ffd454dc-47e1-42fb-8e2a-fa807c221247)
Here is an example of the `search.json` file:
![image](https://github.com/Jammy2211/PyAutoLens/assets/23455639/96015619-22fc-47a9-af3f-c050a7d5e267)
All internal functionality (e.g. the sqlite database) has been updated to use these files.
All workspace documentation has been updated accordingly.
**Other:**
- Update certain requirements (e.g. PyYAML) to mitigate installation issues (https://github.com/rhayes777/PyAutoConf/pull/41).
- Lots of quality-of-life improvements thoughout the code bases.