Skip to main content

Python implementation of the Learn As You Go algorithm described in arxiv:1506:01079 and arxiv:2004.11929.

https://badge.fury.io/py/layg.svg https://zenodo.org/badge/240627897.svg Documentation Status https://github.com/auckland-cosmo/LearnAsYouGoEmulator/workflows/pytest/badge.svg https://github.com/auckland-cosmo/LearnAsYouGoEmulator/workflows/doc/badge.svg https://github.com/auckland-cosmo/LearnAsYouGoEmulator/workflows/lints/badge.svg

The package defines a decorator that can be applied to functions to convert them to functions which learn outputs as they go and emulate the true function when expected errors are low. Two emulators are included: the k-nearest neighbors Monte Carlo accelerator described there, and a simple neural network.

The basic usage of the emulator code is something like this:

@emulate(CholeskyNnEmulator)
def loglike(x):
    """
    Your complex and expensive function here
    """
    return -np.dot(x,x)

This decorates the function loglike so that it is an instance of the Learner class. It can be used in the same way as the original function: just call it as loglike(x).

The __call__(x) method now hides some extra complexity: it uses the Learn As You Go emulation scheme. It learns both the output of loglike(x) and the difference between the emulated and the true values of loglike(x) so that it can make a prediction of future the error residuals. We then put a cutoff on the amount of error that one will allow for any local evaluation of the target function. Any call to the emulator that has a too-large error will be discarded and the actual function loglike(x) defined above will be evaluated instead.

The logic for generating training sets and returning a value from either the true function or the emulated function are contained in the Learner class. The Learner class relies on an emulator class to do the actual emulation.

You can define you own emulator. Define a class that inherits from BaseEmulator and define two methods on it: set_emul_func(self, x_train: np.ndarray, y_train: np.ndarray) and set_emul_error_func(self, x_train: np.ndarray, y_train: np.ndarray) that set functions for, respectively, self.emul_func and self.emul_error_func. An example of this definition is provided in examples/example_custom_emulator.py.

See readthedocs.org for more documentation.

Installation

pip

The package is available on pypi.org. Install it with

pip install layg

anaconda

If you use anaconda you can create an appropriate environment and install to your python path by running

conda env create --file environment.yml
conda activate layg
pip install -e .

from this directory.

Metadata

Release files for layg 0.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for layg 0.0.2
File Size Uploaded Provenance Actions
layg-0.0.2.tar.gz 17.3 kB Without provenance Details for layg-0.0.2.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for layg 0.0.2
File Interpreter ABI Platform Actions
layg-0.0.2-py3-none-any.whl Python 3 none any Details for layg-0.0.2-py3-none-any.whl

Total release size: 35.7 kB

Release files / layg-0.0.2.tar.gz

Download URL layg-0.0.2.tar.gz
Size 17.3 kB
Tags Source
SHA-256 checksum
How to use checksums
0f88131050045c709d5f7fc85d7663ec8243d241fe42cfeac0a8b88d59b67b29
BLAKE2b-256 checksum
How to use checksums
a2becd1483f1ce330cef0c8019fe355bcea0b5d325661c36003f8cdee5ca1db0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.8.8

Release files / layg-0.0.2-py3-none-any.whl

Download URL layg-0.0.2-py3-none-any.whl
Size 18.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3af59d27133bc37623a3cea4e05370fdc9377b087c128a54fc6c988dca26e43f
BLAKE2b-256 checksum
How to use checksums
15c96789e1e210451b35a2feb0dde99af2c34a2e2dd808fa61be719f039059c2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.8.8

Security for layg 0.0.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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