Skip to main content

PyAutoFit: Classy Probabilistic Programming

Project Status: Active Python Versions PyPI Version Colab Tests Build Documentation Status JOSS

Installation Guide | readthedocs | Introduction on Colab | HowToFit

PyAutoFit is a Python based probabilistic programming language for model fitting and Bayesian inference of large datasets.

The basic PyAutoFit API allows us a user to quickly compose a probabilistic model and fit it to data via a log likelihood function, using a range of non-linear search algorithms (e.g. MCMC, nested sampling).

Users can then set up PyAutoFit scientific workflow, which enables streamlined modeling of small datasets with tools to scale up to large datasets.

PyAutoFit supports advanced statistical methods, most notably a big data framework for Bayesian hierarchical analysis.

Getting Started

The following links are useful for new starters:

Support

Support for installation issues, help with Fit modeling and using PyAutoFit is available by raising an issue on the GitHub issues page.

We also offer support on the PyAutoFit Slack channel, where we also provide the latest updates on PyAutoFit. Slack is invitation-only, so if you'd like to join send an email requesting an invite.

HowToFit

For users less familiar with Bayesian inference and scientific analysis you may wish to read through the HowToFits lectures. These teach you the basic principles of Bayesian inference, with the content pitched at undergraduate level and above.

The lectures are available in the standalone HowToFit repository.

API Overview

To illustrate the PyAutoFit API, we use an illustrative toy model of fitting a one-dimensional Gaussian to noisy 1D data. Here's the data (black) and the model (red) we'll fit:

We define our model, a 1D Gaussian by writing a Python class using the format below:

class Gaussian:

    def __init__(
        self,
        centre=0.0,        # <- PyAutoFit recognises these
        normalization=0.1, # <- constructor arguments are
        sigma=0.01,        # <- the Gaussian's parameters.
    ):
        self.centre = centre
        self.normalization = normalization
        self.sigma = sigma

    """
    An instance of the Gaussian class will be available during model fitting.

    This method will be used to fit the model to data and compute a likelihood.
    """

    def model_data_from(self, xvalues):

        transformed_xvalues = xvalues - self.centre

        return (self.normalization / (self.sigma * (2.0 * np.pi) ** 0.5)) * \
                np.exp(-0.5 * (transformed_xvalues / self.sigma) ** 2.0)

PyAutoFit recognises that this Gaussian may be treated as a model component whose parameters can be fitted for via a non-linear search like emcee.

To fit this Gaussian to the data we create an Analysis object, which gives PyAutoFit the data and a log_likelihood_function describing how to fit the data with the model:

class Analysis(af.Analysis):

    def __init__(self, data, noise_map):

        self.data = data
        self.noise_map = noise_map

    def log_likelihood_function(self, instance):

        """
        The 'instance' that comes into this method is an instance of the Gaussian class
        above, with the parameters set to values chosen by the non-linear search.
        """

        print("Gaussian Instance:")
        print("Centre = ", instance.centre)
        print("normalization = ", instance.normalization)
        print("Sigma = ", instance.sigma)

        """
        We fit the ``data`` with the Gaussian instance, using its
        "model_data_from" function to create the model data.
        """

        xvalues = np.arange(self.data.shape[0])

        model_data = instance.model_data_from(xvalues=xvalues)
        residual_map = self.data - model_data
        chi_squared_map = (residual_map / self.noise_map) ** 2.0
        log_likelihood = -0.5 * sum(chi_squared_map)

        return log_likelihood

We can now fit our model to the data using a non-linear search:

model = af.Model(Gaussian)

analysis = Analysis(data=data, noise_map=noise_map)

emcee = af.Emcee(nwalkers=50, nsteps=2000)

result = emcee.fit(model=model, analysis=analysis)

The result contains information on the model-fit, for example the parameter samples, maximum log likelihood model and marginalized probability density functions.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

autofit-2026.9.8.1.tar.gz (7.6 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

autofit-2026.9.8.1-py3-none-any.whl (7.7 MB view details)

Uploaded Python 3

File details

Details for the file autofit-2026.9.8.1.tar.gz.

File metadata

  • Download URL: autofit-2026.9.8.1.tar.gz
  • Upload date:
  • Size: 7.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.14

File hashes

Hashes for autofit-2026.9.8.1.tar.gz
Algorithm Hash digest
SHA256 639cc92dd2ce14e7d5eb87a05b8e5a1eadd744cd347f9d3c8a0c254a2543e46d
MD5 24288f74bfcb4710f782266f149035d1
BLAKE2b-256 b6133c8d9c5a9c2a4e6151695e37bc2bcb923451136a087537f76e80d30f4075

See more details on using hashes here.

File details

Details for the file autofit-2026.9.8.1-py3-none-any.whl.

File metadata

  • Download URL: autofit-2026.9.8.1-py3-none-any.whl
  • Upload date:
  • Size: 7.7 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.14

File hashes

Hashes for autofit-2026.9.8.1-py3-none-any.whl
Algorithm Hash digest
SHA256 219a2d6ea66b8969df45ac0c806aa3ed97bed99c522c6e0d961e1a5e1a16eece
MD5 d413d47962016a8be647336aae61fc6d
BLAKE2b-256 7ee27a12434ca5266fd471e6a13f8b8df677697937efee7c4f1456955bfbfb3c

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

2026.9.8.1 This release

2 files

2026.9.4.1

2 files

2026.8.29.1

2 files

2026.8.23.1

2 files

2026.8.22.1

2 files

2026.8.20.1

2 files

2026.8.17.1

2 files

2026.8.15.1

2 files

2026.8.14.1

2 files

2026.8.7.1

2 files

2026.8.4.1

2 files

2026.7.29.2

2 files

2026.7.29.1

2 files

2026.7.27.1

2 files

2026.7.25.2

2 files

2026.7.25.1

2 files

2026.7.23.1

2 files

2026.7.22.1

2 files

2026.7.19.1

2 files

2026.7.15.1

2 files

2026.7.9.1

2 files

2026.5.29.4

2 files

2026.5.21.1

2 files

2026.5.14.2

2 files

2026.5.8.2

2 files

2026.5.8.1

2 files

2026.5.1.4

2 files

2026.4.13.6

2 files

2026.4.13.5

2 files

2026.4.13.3

2 files

2026.4.5.3

2 files

2026.2.26.4

2 files

2026.2.26.3

2 files

2026.1.21.3

2 files

2025.12.21.1

2 files

2025.12.15.2

2 files

2025.12.15.1

2 files

2025.11.29.3

2 files

2025.11.18.1

2 files

2025.11.5.1

2 files

2025.10.21.1

2 files

2025.10.20.5

2 files

2025.10.20.4

2 files

2025.10.20.2

2 files

2025.10.20.1

2 files

2025.10.16.2

2 files

2025.10.16.1

2 files

2025.5.10.1

2 files

2025.5.9.48

2 files

2025.5.9.36

2 files

2025.5.9.29

2 files

2025.5.9.28

2 files

2025.5.9.11

2 files

2025.5.7.16

2 files

2025.1.18.7

2 files

2024.11.13.2

2 files

2024.11.6.1

2 files

2024.9.21.2

2 files

2024.9.21.1

2 files

2024.7.16.1

2 files

2024.5.16.0

2 files

2024.1.27.4

2 files

2023.10.23.3

2 files

2023.10.23.2

2 files

2023.9.18.4

2 files

2023.7.5.2

2 files

2023.6.18.3

2 files

2023.6.12.5

2 files

2023.6.12.4

2 files

2023.3.27.1

2 files

2023.3.21.5

2 files

2023.3.21.4

1 file

2023.3.21.3

2 files

2023.1.15.1

2 files

2022.11.26.11

2 files

2022.7.11.1

2 files

2022.7.10.1

2 files

2022.6.29.2

2 files

2022.6.29.1

2 files

2022.5.2.1

2 files

2022.3.30.1

2 files

2022.3.18.2

2 files

2022.2.14.1

2 files

2022.2.13.1

2 files

2021.10.14.1

2 files

2021.9.12.1

2 files

2021.8.12.1

2 files

2021.6.4.1

2 files

2021.6.2.1

2 files

0.77.1

2 files

0.77.0

2 files

0.76.0

2 files

0.75.0

2 files

0.74.0

2 files

0.73.1

2 files

0.73.0

2 files

0.72.2

2 files

0.72.1

2 files

0.72.0

2 files

0.71.5

2 files

0.71.4

2 files

0.71.3

2 files

0.71.2

2 files

0.71.1

1 file

0.71.0

2 files

0.70.4

2 files

0.70.3

2 files

0.70.2

2 files

0.70.1

2 files

0.70.0

2 files

0.69.6

2 files

0.69.5

2 files

0.69.4

2 files

0.69.3

2 files

0.69.2

2 files

0.69.1

2 files

0.69.0

2 files

0.68.0

2 files

0.67.11

2 files

0.67.10

2 files

0.67.9

2 files

0.67.8

2 files

0.67.7

2 files

0.67.6

2 files

0.67.5

2 files

0.67.4

2 files

0.67.3

2 files

0.67.2

2 files

0.67.1

2 files

0.67.0

2 files

0.65.0

2 files

0.64.3

2 files

0.64.2

2 files

0.64.1

2 files

0.64.0

2 files

0.62.2

2 files

0.62.1

2 files

0.62.0

1 file

0.61.5

2 files

0.61.4

2 files

0.61.3

2 files

0.61.2

2 files

0.60.2

2 files

0.60.1

2 files

0.59.7

2 files

0.59.6

2 files

0.59.5

2 files

0.59.4

2 files

0.59.3

2 files

0.59.2

2 files

0.59.1

2 files

0.59.0

2 files

0.58.0

2 files

0.57.2

2 files

0.57.1

2 files

0.57.0

2 files

0.56.0

2 files

0.55.1

1 file

0.55.0

2 files

0.54.0

2 files

0.53.0

2 files

0.52.2

2 files

0.52.1

2 files

0.52.0

2 files

0.51.1

2 files

0.51.0

2 files

0.50.5

2 files

0.50.4

2 files

0.50.3

2 files

0.50.2

2 files

0.50.1

2 files

0.50.0

2 files

0.49.1

2 files

0.49.0

2 files

0.48.1

2 files

0.48.0

2 files

0.47.0

2 files

0.46.2

2 files

0.46.1

2 files

0.46.0

2 files

0.45.4

2 files

0.45.3

2 files

0.45.2

2 files

0.45.1

2 files

0.45.0

2 files

0.44.2

2 files

0.44.1

2 files

0.44.0

2 files

0.33.9

2 files

0.33.8

2 files

0.33.7

2 files

0.33.6

2 files

0.33.5

2 files

0.33.4

2 files

0.33.3

2 files

0.33.2

2 files

0.33.1

2 files

0.33.0

2 files

0.32.1

2 files

0.32.0

2 files

0.31.4

2 files

0.31.3

2 files

0.31.2

2 files

0.31.1

2 files

0.31.0

2 files

0.30.5

2 files

0.30.4

2 files

0.30.3

2 files

0.30.2

2 files

0.30.1

2 files

0.30.0

2 files

0.29.5

2 files

0.29.4

2 files

0.29.3

2 files

0.29.2

2 files

0.29.1

2 files

0.29.0

2 files

0.28.3

2 files

0.28.2

2 files

0.28.1

2 files

0.28.0

2 files

0.27.4

2 files

0.27.3

2 files

0.27.2

2 files

0.27.1

2 files

0.27.0

2 files

0.26.6

2 files

0.26.5

2 files

0.26.4

2 files

0.26.3

2 files

0.26.2

2 files

0.26.1

2 files

0.26.0

2 files

0.25.5

2 files

0.25.4

2 files

0.25.3

2 files

0.25.2

2 files

0.25.1

2 files

0.25.0

2 files

0.24.4

2 files

0.24.3

2 files

0.24.2

2 files

0.24.1

2 files

0.24.0

2 files

0.23.13

2 files

0.23.12

2 files

0.23.11

2 files

0.23.10

2 files

0.23.9

2 files

0.23.8

2 files

0.23.7

2 files

0.23.6

2 files

0.23.5

2 files

0.23.4

2 files

0.23.3

2 files

0.23.2

2 files

0.23.1

2 files

0.23.0

2 files

0.22.6

2 files

0.22.5

2 files

0.22.4

2 files

0.22.3

2 files

0.22.2

2 files

0.22.1

2 files

0.22.0

2 files

0.21.0

2 files

0.20.1

2 files

0.20.0

2 files

0.19.2

2 files

0.19.1

2 files

0.19.0

2 files

0.18.9

2 files

0.18.8

2 files

0.18.7

2 files

0.18.6

2 files

0.18.5

2 files

0.18.4

2 files

0.18.3

2 files

0.18.2

2 files

0.18.1

2 files

0.18.0

2 files

0.17.5

2 files

0.17.4

2 files

0.17.3

2 files

0.17.2

2 files

0.17.1

2 files

0.17.0

2 files

0.16.1

2 files

0.16.0

2 files

0.15.3

2 files

0.15.2

2 files

0.15.1

2 files

0.15.0

2 files

0.14.0

2 files

0.13.0

2 files

0.12.0

2 files

0.11.2

2 files

0.11.1

2 files

0.11.0

2 files

0.10.1

2 files

0.10.0

2 files

0.9.1

2 files

0.9.0

2 files

0.8.10

2 files

0.8.9

2 files

0.8.8

2 files

0.8.7

2 files

0.8.6

2 files

0.8.5

2 files

0.8.4

2 files

0.8.3

2 files

0.8.2

2 files

0.8.1

2 files

0.8.0

2 files

0.7.11

2 files

0.7.10

2 files

0.7.9

2 files

0.7.8

2 files

0.7.7

2 files

0.7.6

2 files

0.7.5

2 files

0.7.4

2 files

0.7.3

2 files

0.7.2

2 files

0.7.1

2 files

0.7.0

2 files

0.6.2

2 files

0.6.1

2 files

0.6.0

2 files

0.5.8

2 files

0.5.7

2 files

0.5.6

2 files

0.5.4.0

2 files

0.5.3

2 files

0.5.2

2 files

0.5.1

2 files

0.5.0

2 files

0.4.6

2 files

0.4.5

2 files

0.4.4

2 files

0.4.3

2 files

0.4.2

2 files

0.4.0

2 files

0.3.2

2 files

0.3.1

2 files

0.3.0

2 files

0.2.1

2 files

0.2.0

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page