Giter VIP home page Giter VIP logo

pspec_likelihood's Introduction

pspec_likelihood

A small but powerful interface to generate theoretical likelihoods from ``UVPSpec`` objects.

pre-commit.ci status

Full Documentation

Read the docs.

Features

  • Ingests data output from hera_pspec: power spectra, covariance matrices and window functions.
  • Agnostic to theory code (i.e. run 21cmFAST or ARES or any other model)
  • Outputs a log-likelihood to be used in parameter inference, but is sampler agnostic.

Installation

Clone/download the repo and pip install ., or pip install git+git://github.com/hera-team/pspec_likelihood.

If developing:

git clone https://github.com/hera-team/pspec_likelihood
cd pspec_likelihood
pip install -e .[dev]
pre-commit install

Quickstart

Import like this:

from pspec_likelihood import DataModelInterface, Gaussian

To construct a likelihood, you first need to construct the DataModelInterface, for which you will specify the data, its covariance, a window function, and a model both for the theory and the systematics. This class contains all the methods required to compute the model/systematics and transform it consistently to data-space.

Secondly, you need to construct a PSpecLikelihood, via one of its concrete sub-classes. Examples of such subclasses are Gaussian and GaussianLinearSystematics. The reason these are their own class, instead of being part of the DataModelInterface, is for the sake of modularity and extensibility. This allows different actual likelihoods to be computed given the data, and new likelihoods to be implemented with ease. The basic requirement of a PSpecLikelihood subclass is that it must implement the loglike(theory_params, sys_params) method, which goes and computes the actual log-likelihood given a set of parameters. It has access to the DataModelInterface object through its model attribute. So, eg.:

likelihood = Gaussian(
    model = DataModelInterface(...)
)

likelihood.loglike(theory_params, sys_params)

Versioning

From v0.1.0, pspec_likelihood will be using strict semantic versioning, such that increases in the major version have potential API breaking changes, minor versions introduce new features, and patch versions fix bugs and other non-breaking internal changes.

If your package depends on pspec_likelihood, set the dependent version like this:

pspec_likelihood>=0.1

pspec_likelihood's People

Contributors

aewallwi avatar pagano-michael avatar pre-commit-ci[bot] avatar stefan-heimersheim avatar steven-murray avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.