Quail

Quail: A Python toolbox for analyzing and plotting free recall data - Published in JOSS (2017)

https://github.com/contextlab/quail

Science Score: 95.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 8 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org, zenodo.org
  • Committers with academic emails
    3 of 10 committers (30.0%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

memory psychology-experiments python-toolbox speech-to-text

Scientific Fields

Engineering Computer Science - 40% confidence
Last synced: 6 months ago · JSON representation

Repository

A python toolbox for analyzing and plotting free recall data

Basic Info
Statistics
  • Stars: 22
  • Watchers: 6
  • Forks: 10
  • Open Issues: 31
  • Releases: 8
Topics
memory psychology-experiments python-toolbox speech-to-text
Created about 9 years ago · Last pushed over 2 years ago
Metadata Files
Readme License

README.md

DOI JOSS

Quail logo

Overview

Quail is a Python package that facilitates analyses of behavioral data from memory experiments. (The current focus is on free recall experiments.) Key features include: - Serial position curves (probability of recalling items presented at each presentation position) - Probability of Nth recall curves (probability of recalling items at each presentation position as the Nth recall in the recall sequence) - Lag-Conditional Response Probability curves (probability of transitioning between items in the recall sequence, as a function of their relative presentation positions) - Clustering metrics (e.g. single-number summaries of how often participants transition from recalling a word to another related word, where "related" can be user-defined.) - Many nice plotting functions - Convenience functions for loading in data - Automatically parse speech data (audio files) using wrappers for the Google Cloud Speech to Text API

The intended user of this toolbox is a memory researcher who seeks an easy way to analyze and visualize data from free recall psychology experiments.

The toolbox name is inspired by Douglas Quail, the main character from the Philip K. Dick short story We Can Remember It for You Wholesale (the inspiration for the film Total Recall).

Try it!

Check out our repo of Jupyter notebooks.

Installation

To install quail in the recommended way, run:

pip install quail

This will install quail with basic functionality. To install with speech decoding dependencies (Note: you will still need to install ffmpeg manually on your computer since it is not pip installable. For instructions, see here):

pip install quail[speech-decoding]

For CDL users, you can install speech decoding and efficient learning capabilities like this:

pip install quail[speech-decoding, efficient-learning]

To install directly from this repo (not recommended, but you'll get the "bleeding edge" version of the code):

git clone https://github.com/ContextLab/quail.git

Then, navigate to the folder and type:

pip install -e .

(this assumes you have pip installed on your system)

This will work on clean systems, but if you encounter issues you may need to run:

sudo pip install --upgrade --ignore-installed -e .

Requirements

  • python>=3.6
  • pandas>=0.18.0
  • seaborn>=0.7.1
  • matplotlib>=1.5.1
  • scipy>=0.17.1
  • numpy>=1.10.4
  • future
  • pytest (for development)

If installing from github (instead of pip), you must also install the requirements: pip install -r requirements.txt

Documentation

Check out our readthedocs: here.

We also have a repo with example notebooks from the paper here.

Citing

Please cite as:

Heusser AC, Fitzpatrick PC, Field CE, Ziman K, Manning JR (2017) Quail: A Python toolbox for analyzing and plotting free recall data. The Journal of Open Source Software, 2(18) https://doi.org/10.21105%2Fjoss.00424

Here is a bibtex formatted reference:

@ARTICLE {HeusEtal2017b, doi = {10.21105/joss.00424}, url = {https://doi.org/10.21105%2Fjoss.00424}, year = 2017, publisher = {The Open Journal}, volume = {2}, number = {18}, author = {Andrew C. Heusser and Paxton C. Fitzpatrick and Campbell E. Field and Kirsten Ziman and Jeremy R. Manning}, title = {Quail: A Python toolbox for analyzing and plotting free recall data}, journal = {The Journal of Open Source Software} }

Contributing

(Some text borrowed from Matplotlib contributing guide.)

Submitting a bug report

If you are reporting a bug, please do your best to include the following:

  1. A short, top-level summary of the bug. In most cases, this should be 1-2 sentences.
  2. A short, self-contained code snippet to reproduce the bug, ideally allowing a simple copy and paste to reproduce. Please do your best to reduce the code snippet to the minimum required.
  3. The actual outcome of the code snippet
  4. The expected outcome of the code snippet

Contributing code

The preferred way to contribute to quail is to fork the main repository on GitHub, then submit a pull request.

  • If your pull request addresses an issue, please use the title to describe the issue and mention the issue number in the pull request description to ensure a link is created to the original issue.

  • All public methods should be documented on our readthedocs API page.

  • Each high-level plotting function should have a simple example in the examples folder. This should be as simple as possible to demonstrate the method.

  • Changes (both new features and bugfixes) should be tested using pytest. Add tests for your new feature to the tests/ repo folder.

Support

If you have a question, comment or concern about the software, please post a question to Stack Overflow, or send us an email at contextualdynamics@gmail.com.

Testing

Build Status

To test quail, install pytest (pip install pytest) and run pytest in the quail folder

Examples

See here for more examples.

Create an egg!

Eggs are the fundamental data structure in quail. They are comprised of lists of presented words, lists of recalled words, and a few other optional components.

``` import quail

presented words

presented_words = [['cat', 'bat', 'hat', 'goat'],['zoo', 'animal', 'zebra', 'horse']]

recalled words

recalled_words = [['bat', 'cat', 'goat', 'hat'],['animal', 'horse', 'zoo']]

create egg

egg = quail.Egg(pres=presentedwords, rec=recalledwords)

```

Analyze some data

```

load data

egg = quail.loadexampledata()

analysis

analyzed_data = quail.analyze(egg, analysis='accuracy', listgroup=['average']*8) ```

Plot Accuracy

analyzed_data = quail.analyze(egg, analysis='accuracy', listgroup=['average']*8) ax = quail.plot(analyzed_data, title='Recall Accuracy') Plot Accuracy

Plot Serial Position Curve

analyzed_data = quail.analyze(egg, analysis='spc', listgroup=['average']*8) ax = quail.plot(analyzed_data, title='Serial Position Curve') Plot SPC

Plot Probability of First Recall

analyzed_data = quail.analyze(egg, analysis='pfr', listgroup=['average']*8) ax = quail.plot(analyzed_data, title='Probability of First Recall') Plot PFR

Plot Lag-CRP

analyzed_data = quail.analyze(egg, analysis='lagcrp', listgroup=['average']*8) ax = quail.plot(analyzed_data, title='Lag-CRP') Plot Lag-CRP

Plot Memory Fingerprint

analyzed_data = quail.analyze(egg, analysis='fingerprint', listgroup=['average']*8) ax = quail.plot(analyzed_data, title='Memory Fingerprint') Plot Fingerprint

Owner

  • Name: Contextual Dynamics Laboratory
  • Login: ContextLab
  • Kind: organization
  • Email: contextualdynamics@gmail.com
  • Location: Hanover, NH

Contextual Dynamics Laboratory at Dartmouth College

JOSS Publication

Quail: A Python toolbox for analyzing and plotting free recall data
Published
October 06, 2017
Volume 2, Issue 18, Page 424
Authors
Andrew C. Heusser ORCID
Department of Psychological and Brain Sciences, Dartmouth College
Paxton C. Fitzpatrick ORCID
Department of Psychological and Brain Sciences, Dartmouth College
Campbell E. Field ORCID
Department of Psychological and Brain Sciences, Dartmouth College
Kirsten Ziman ORCID
Department of Psychological and Brain Sciences, Dartmouth College
Jeremy R. Manning ORCID
Department of Psychological and Brain Sciences, Dartmouth College
Editor
Christopher R. Madan ORCID
Tags
memory free recall python visualization

GitHub Events

Total
  • Watch event: 1
  • Fork event: 1
Last Year
  • Watch event: 1
  • Fork event: 1

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 443
  • Total Committers: 10
  • Avg Commits per committer: 44.3
  • Development Distribution Score (DDS): 0.253
Past Year
  • Commits: 0
  • Committers: 0
  • Avg Commits per committer: 0.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
andrewheusser a****r@g****m 331
paxtonfitzpatrick p****9@d****u 38
Jeremy Manning j****g 34
Kirsten Ziman k****n@k****u 22
Student S****t@e****u 6
Kirsten k****n@g****m 5
Andrew Heusser a****r@A****l 3
Paxton Fitzpatrick p****k@c****t 2
Kirsten Ziman k****n@K****l 1
Kirsten Ziman 1

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 79
  • Total pull requests: 21
  • Average time to close issues: 3 months
  • Average time to close pull requests: 18 days
  • Total issue authors: 10
  • Total pull request authors: 3
  • Average comments per issue: 2.33
  • Average comments per pull request: 2.1
  • Merged pull requests: 20
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • andrewheusser (41)
  • jeremymanning (18)
  • RichardLitt (9)
  • paxtonfitzpatrick (3)
  • KirstensGitHub (2)
  • jamalw (2)
  • EmilyWhitaker (1)
  • ryankirkpatrick57 (1)
  • crwilcox (1)
  • jwparks (1)
Pull Request Authors
  • andrewheusser (13)
  • paxtonfitzpatrick (7)
  • KirstensGitHub (1)
Top Labels
Issue Labels
enhancement (20) future release (16) bug (6) help wanted (3) high priority (2) low priority (1) question (1)
Pull Request Labels
awesome (1)

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 58 last-month
  • Total docker downloads: 279
  • Total dependent packages: 0
  • Total dependent repositories: 1
  • Total versions: 8
  • Total maintainers: 1
pypi.org: quail

A python toolbox for analyzing and plotting free recall data

  • Versions: 8
  • Dependent Packages: 0
  • Dependent Repositories: 1
  • Downloads: 58 Last month
  • Docker Downloads: 279
Rankings
Docker downloads count: 2.1%
Dependent packages count: 9.9%
Forks count: 10.9%
Average: 12.8%
Stargazers count: 13.9%
Downloads: 18.1%
Dependent repos count: 21.8%
Maintainers (1)
Last synced: 6 months ago

Dependencies

docs/doc_requirements.txt pypi
  • dill *
  • future *
  • google-cloud >=0.32.0,<0.34.0
  • jupyter_client *
  • matplotlib >=1.5.1
  • multiprocessing *
  • nbsphinx *
  • numpy >=1.10.4
  • numpydoc *
  • pandas ==0.18.1
  • pathos *
  • pydub *
  • requests *
  • scipy >=0.17.1
  • seaborn >=0.7.1
  • sphinx ==1.5.5
  • sphinx-gallery *
  • sphinx_bootstrap_theme ==0.4.13
  • sqlalchemy *
requirements.txt pypi
  • deepdish *
  • future *
  • joblib *
  • matplotlib >=1.5.1
  • numpy >=1.10.4
  • pandas >=0.24.0
  • scipy >=0.17.1
  • seaborn >=0.9.0
  • six *
setup.py pypi