PyAutoFit: Classy Probabilistic Programming
PyAutoFit:
Nautilus
now outputs results on the fly: https://github.com/rhayes777/PyAutoFit/pull/961
PR: https://github.com/rhayes777/PyAutoFit/pull/994 Example: https://github.com/Jammy2211/autofit_workspace/blob/release/notebooks/cookbooks/analysis.ipynb
model.info
file displays complex models in a more concise and readable way: https://github.com/rhayes777/PyAutoFit/pull/1012
samples.csv
to save hard disk space: https://github.com/rhayes777/PyAutoFit/pull/979
search_internal
on hard-disk. simplifying source code internals: https://github.com/rhayes777/PyAutoFit/pull/938
numpy
, scipy
, scikit-learn
)..pickle
outputs to .json
/ .fits
/ .csv
.Samples
object much more efficient.nautilus
parallel fits sometimes crashed.nautilus
single CPU fits did not work.This release implements two major changes to PyAutoFit:
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 PyAutoFit:
Here is an example of the search.json
file:
All internal functionality (e.g. the sqlite database) has been updated to use these files.
All workspace documentation has been updated accordingly.
Nautilus
Recently, a new nested sampler, Nautilus (https://nautilus-sampler.readthedocs.io/en/stable/), was released, which uses machine-learning based techniques to improve sampling.
This release implements this.
Bug fixes for new MacOS parallelization.
No new features.
Analysis
objects to fit multipole datasets), for example better output paths for visualization, options to visualize before a fit and making combined figures across analyses:https://github.com/rhayes777/PyAutoFit/pull/715 https://github.com/rhayes777/PyAutoFit/pull/703 https://github.com/rhayes777/PyAutoFit/pull/701 https://github.com/rhayes777/PyAutoFit/pull/696
https://github.com/rhayes777/PyAutoFit/pull/708
https://github.com/rhayes777/PyAutoFit/pull/711
https://github.com/rhayes777/PyAutoFit/pull/712 https://github.com/rhayes777/PyAutoFit/pull/709
This is the latest version, which primarily brings in stability upgrades and fixes bugs.
Starting point API for starting an MCMC fit with walkers in certain positions or maximum likelihood estimator fit with a start point implemented (https://github.com/rhayes777/PyAutoFit/pull/562). The example tutorial script for this feature is not written yet.
Dynamic delta scaling in expectation propagation fits, which prevent over confident result due to error underestimation (https://github.com/rhayes777/PyAutoFit/pull/559). The example tutorial script for this feature is not written yet.
Faster generation of models by sampling better within the prior limits (https://github.com/rhayes777/PyAutoFit/pull/558).
analysis = sum(analysis_list)
analysis = analysis.with_free_parameters(
model.parameter,
)
x_list = [464, 658, 806]
m = af.UniformPrior(lower_limit=-0.1, upper_limit=0.1)
c = af.UniformPrior(lower_limit=-10.0, upper_limit=10.0)
analysis_list = []
for x, imaging in zip(x_list, imaging_list):
y = af.Add(af.Multiply(x, m), c)
analysis_list.append(
al.AnalysisImaging(dataset=imaging).with_model(
model.replacing(
{
model.gaussian.x: gaussian.x,
}
)
)
)