Skip to main content

Adaptive experimetation for psychophysics

Project description

AEPsych

AEPsych is a framework and library for adaptive experimetation in psychophysics and related domains.

Installation

AEPsych only supports python 3.10+. We recommend installing AEPsych under a virtual environment like Anaconda. Once you've created a virtual environment for AEPsych and activated it, you can install AEPsych using pip:

pip install aepsych

If you're a developer or want to use the latest features, you can install from GitHub using:

git clone https://github.com/facebookresearch/aepsych.git
cd aepsych
pip install -e .[dev]

Usage

See the code examples here.

The canonical way of using AEPsych is to launch it in server mode (you can run aepsych_server --help to see additional arguments):

aepsych_server --port 5555 --ip 0.0.0.0 --db mydatabase.db

The server accepts messages over a unix socket, and all messages are formatted using JSON. All messages have the following format:

{
     "type":<TYPE>,
     "message":<MESSAGE>,
}

There are five message types: setup, resume, ask, tell and exit (see aepsych/server/message_handlers for the full set of messages).

Setup

The setup message prepares the server for making suggestions and accepting data. The setup message can be formatted as either INI or a python dict (similar to JSON) format, and an example for psychometric threshold estimation is given in configs/single_lse_example.ini. It looks like this:

{
    "type":"setup",
    "message":{"config_str":<PASTED CONFIG STRING>}
}

After receiving a setup message, the server responds with a strategy index that can be used to resume this setup (for example, for interleaving multiple experiments).

Resume

The resume message tells the server to resume a strategy from earlier in the same run. It looks like this:

{
    "type":"resume",
    "message":{"strat_id":"0"}
}

After receiving a resume message, the server responds with the strategy index resumed.

Ask

The ask message queries the server for the next trial configuration. It looks like this:

{
    "type":"ask",
    "message":""
}

After receiving an ask message, the server responds with a configuration in JSON format, for example {"frequency":100, "intensity":0.8}

Tell

The tell message updates the server with the outcome for a trial configuration. Note that the tell does not need to match with a previously ask'd trial. For example, if you are interleaving AEPsych runs with a classical staircase, you can still feed AEPsych with the staircase data. A message looks like this:

{
    "type":"tell",
    "message":{
        "config":{
                "frequency":100,
                "intensity":0.8
            },
        "outcome":"1",
    }
}

Exit

The exit message tells the server to close the socket connection, write strats into the database and terminate current session. The message is:

{
    "type":"exit",
}

The server closes the connection.

Data export and visualization

The data is logged to a SQLite database on disk (by default, databases/default.db). The database has one table containing all experiment sessions that were run. Then, for each experiment there is a table containing all messages sent and received by the server, capable of supporting a full replay of the experiment from the server's perspective. This table can be summarized into a data frame output (docs forthcoming) and used to visualize data (docs forthcoming).

Contributing

See the CONTRIBUTING file for how to help out.

License

AEPsych licensed CC-BY-NC 4.0, as found in the LICENSE file.

Citing

The AEPsych paper is currently under review. In the meanwhile, you can cite our preprint:

Owen, L., Browder, J., Letham, B., Stocek, G., Tymms, C., & Shvartsman, M. (2021). Adaptive Nonparametric Psychophysics. http://arxiv.org/abs/2104.09549

Project details


Download files

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

Source Distribution

aepsych-0.4.4.tar.gz (149.9 kB view details)

Uploaded Source

Built Distribution

aepsych-0.4.4-py3-none-any.whl (221.2 kB view details)

Uploaded Python 3

File details

Details for the file aepsych-0.4.4.tar.gz.

File metadata

  • Download URL: aepsych-0.4.4.tar.gz
  • Upload date:
  • Size: 149.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for aepsych-0.4.4.tar.gz
Algorithm Hash digest
SHA256 c517bfe1493ea3b77e0ec326ebf31b294d7dbecef578d05a574226bcd7a95b1c
MD5 0df4874601881b67162087776f16977d
BLAKE2b-256 774306be00a8b2ce4ce9dd6e94269117bc2c66558b7329c4126151b78823b9b8

See more details on using hashes here.

Provenance

The following attestation bundles were made for aepsych-0.4.4.tar.gz:

Publisher: build-to-release.yml on facebookresearch/aepsych

Attestations:

File details

Details for the file aepsych-0.4.4-py3-none-any.whl.

File metadata

  • Download URL: aepsych-0.4.4-py3-none-any.whl
  • Upload date:
  • Size: 221.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for aepsych-0.4.4-py3-none-any.whl
Algorithm Hash digest
SHA256 5e964b611b98c52ae7543557dcb8c37ab7dd719bbdbf8ba4f72dd96f1711b6a2
MD5 2b1572e8105789b071a58df0887b265f
BLAKE2b-256 cb1c74a29b18326d6a99782bdd06adf782dec909ed03c42753cb687751f5c700

See more details on using hashes here.

Provenance

The following attestation bundles were made for aepsych-0.4.4-py3-none-any.whl:

Publisher: build-to-release.yml on facebookresearch/aepsych

Attestations:

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page