psifr


Namepsifr JSON
Version 0.9.0 PyPI version JSON
download
home_page
SummaryPsifr: Analysis and visualization of free recall data
upload_time2023-06-05 23:14:33
maintainer
docs_urlNone
author
requires_python>=3.8
licenseGPL-3.0-or-later
keywords psychology memory free recall
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Psifr
[![PyPI version](https://badge.fury.io/py/psifr.svg)](https://badge.fury.io/py/psifr)
[![Documentation Status](https://readthedocs.org/projects/psifr/badge/?version=latest)](https://psifr.readthedocs.io/en/latest/?badge=latest)
[![Pytest](https://github.com/mortonne/psifr/actions/workflows/pytest.yml/badge.svg)](https://github.com/mortonne/psifr/actions/workflows/pytest.yml)
[![codecov](https://codecov.io/gh/mortonne/psifr/branch/master/graph/badge.svg)](https://codecov.io/gh/mortonne/psifr)
[![status](https://joss.theoj.org/papers/712d4452e465229d61d0e281d3d6f299/status.svg)](https://joss.theoj.org/papers/712d4452e465229d61d0e281d3d6f299)
[![DOI](https://zenodo.org/badge/248593723.svg)](https://zenodo.org/badge/latestdoi/248593723)

Advanced analysis and visualization of free recall data in Python.

Features:
* A large library of advanced analyses, tested against published benchmarks
* Flexible analysis customization and plotting
* Tools for exploratory analysis of large datasets
* Extensive automated testing to ensure analysis correctness
* Based around a simple and flexible table-based data format
* Comprehensive [documentation](https://psifr.readthedocs.io/en/stable/api/overview.html) and [user guide](https://psifr.readthedocs.io/en/stable/guide/overview.html)

The name Psifr is pronounced "cipher". It's taken from Psi, in reference to the field of psychology, and FR for free recall.

<div align="center">
  <div style="max-width:500px; margin:0 20px;">
    <img src="https://github.com/mortonne/psifr/blob/master/images/raster.png" alt="free recall visualization" width="500px">
    <div style="text-align:left; padding:10px 0;">
      Raster plot showing each recall in a free recall experiment. Color indicates serial position; yellow items were presented late in the list, while purple items were presented at the beginning. Magenta squares indicate intrusions of items that were not presented during the study list.
    </div>
  </div>
</div>

## Installation

You can install the latest stable version of Psifr using pip:

```bash
pip install psifr
```

You can also install the development version directly from the code
repository on GitHub:

```bash
pip install git+https://github.com/mortonne/psifr
```

## Quickstart

To plot a serial position curve for a sample dataset:

```python
from psifr import fr
df = fr.sample_data('Morton2013')
data = fr.merge_free_recall(df)
recall = fr.spc(data)
g = fr.plot_spc(recall)
```

See the [user guide](https://psifr.readthedocs.io/en/latest/guide/overview.html) for detailed documentation on importing and analyzing free recall datasets.

Also see the Jupyter notebooks for more analysis examples:
* [Recall performance](https://github.com/mortonne/psifr-notebooks/blob/master/demo_recall.ipynb)
* [Temporal clustering](https://github.com/mortonne/psifr-notebooks/blob/master/demo_lag_crp.ipynb)

## Importing data

Generally the best way to get your data into shape for analysis in Psifr is to create a CSV (or TSV) file with one row for each event in the experiment, including study events (i.e., item presentations) and all recall attempts (including repeats and intrusions).
See [importing data](https://psifr.readthedocs.io/en/latest/guide/import.html) for details.

A number of archival free recall datasets are available in the Matlab-based EMBAM format.
Data archives for a number of studies are available from the [UPenn](https://memory.psych.upenn.edu/Data_Archive) and [Vanderbilt](https://memory.psy.vanderbilt.edu/w/index.php/Publications) memory labs.
If you have data in [EMBAM](https://github.com/vucml/EMBAM) format, use `matlab/frdata2table.m` to convert your data struct to a table with standard format.
Then use the Matlab function `writetable` to write a CSV file which can then be read into Python for analysis.

## Citation

If you use Psifr, please cite the paper:

Morton, N. W., (2020). 
Psifr: Analysis and visualization of free recall data. 
Journal of Open Source Software, 5(54), 2669, https://doi.org/10.21105/joss.02669

## Publications using Psifr

Hong, B., Barense, M. D., Pace-Tonna, C. A. & Mack, M. L. (2022). 
Emphasizing associations from encoding affects free recall at retrieval. 
Proceedings of the Annual Meeting of the Cognitive Science Society 453–460.
https://escholarship.org/uc/item/2gw1s36q

## Related projects

### EMBAM
Analyses supported by Psifr are based on analyses implemented in the Matlab toolbox [EMBAM](https://github.com/vucml/EMBAM).

### pybeh
[pybeh](https://github.com/pennmem/pybeh) is a direct Python port of EMBAM that supports a wide range of analyses.

### Quail
[Quail](https://github.com/ContextLab/quail) runs automatic scoring of free recall data, supports calculation and plotting of some common free recall measures, and has tools for measuring the "memory fingerprint" of individuals.

## Contributing to Psifr

Contributions are welcome to suggest new features, add documentation, and identify bugs. See the [contributing guidelines](.github/CONTRIBUTING.md) for an overview. 

            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "psifr",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "",
    "keywords": "psychology,memory,free recall",
    "author": "",
    "author_email": "Neal W Morton <mortonne@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/fc/35/0fce1dcc822a90f398889dae0f0c196bd403d6fb9726726bec4f6d9911c0/psifr-0.9.0.tar.gz",
    "platform": null,
    "description": "# Psifr\n[![PyPI version](https://badge.fury.io/py/psifr.svg)](https://badge.fury.io/py/psifr)\n[![Documentation Status](https://readthedocs.org/projects/psifr/badge/?version=latest)](https://psifr.readthedocs.io/en/latest/?badge=latest)\n[![Pytest](https://github.com/mortonne/psifr/actions/workflows/pytest.yml/badge.svg)](https://github.com/mortonne/psifr/actions/workflows/pytest.yml)\n[![codecov](https://codecov.io/gh/mortonne/psifr/branch/master/graph/badge.svg)](https://codecov.io/gh/mortonne/psifr)\n[![status](https://joss.theoj.org/papers/712d4452e465229d61d0e281d3d6f299/status.svg)](https://joss.theoj.org/papers/712d4452e465229d61d0e281d3d6f299)\n[![DOI](https://zenodo.org/badge/248593723.svg)](https://zenodo.org/badge/latestdoi/248593723)\n\nAdvanced analysis and visualization of free recall data in Python.\n\nFeatures:\n* A large library of advanced analyses, tested against published benchmarks\n* Flexible analysis customization and plotting\n* Tools for exploratory analysis of large datasets\n* Extensive automated testing to ensure analysis correctness\n* Based around a simple and flexible table-based data format\n* Comprehensive [documentation](https://psifr.readthedocs.io/en/stable/api/overview.html) and [user guide](https://psifr.readthedocs.io/en/stable/guide/overview.html)\n\nThe name Psifr is pronounced \"cipher\". It's taken from Psi, in reference to the field of psychology, and FR for free recall.\n\n<div align=\"center\">\n  <div style=\"max-width:500px; margin:0 20px;\">\n    <img src=\"https://github.com/mortonne/psifr/blob/master/images/raster.png\" alt=\"free recall visualization\" width=\"500px\">\n    <div style=\"text-align:left; padding:10px 0;\">\n      Raster plot showing each recall in a free recall experiment. Color indicates serial position; yellow items were presented late in the list, while purple items were presented at the beginning. Magenta squares indicate intrusions of items that were not presented during the study list.\n    </div>\n  </div>\n</div>\n\n## Installation\n\nYou can install the latest stable version of Psifr using pip:\n\n```bash\npip install psifr\n```\n\nYou can also install the development version directly from the code\nrepository on GitHub:\n\n```bash\npip install git+https://github.com/mortonne/psifr\n```\n\n## Quickstart\n\nTo plot a serial position curve for a sample dataset:\n\n```python\nfrom psifr import fr\ndf = fr.sample_data('Morton2013')\ndata = fr.merge_free_recall(df)\nrecall = fr.spc(data)\ng = fr.plot_spc(recall)\n```\n\nSee the [user guide](https://psifr.readthedocs.io/en/latest/guide/overview.html) for detailed documentation on importing and analyzing free recall datasets.\n\nAlso see the Jupyter notebooks for more analysis examples:\n* [Recall performance](https://github.com/mortonne/psifr-notebooks/blob/master/demo_recall.ipynb)\n* [Temporal clustering](https://github.com/mortonne/psifr-notebooks/blob/master/demo_lag_crp.ipynb)\n\n## Importing data\n\nGenerally the best way to get your data into shape for analysis in Psifr is to create a CSV (or TSV) file with one row for each event in the experiment, including study events (i.e., item presentations) and all recall attempts (including repeats and intrusions).\nSee [importing data](https://psifr.readthedocs.io/en/latest/guide/import.html) for details.\n\nA number of archival free recall datasets are available in the Matlab-based EMBAM format.\nData archives for a number of studies are available from the [UPenn](https://memory.psych.upenn.edu/Data_Archive) and [Vanderbilt](https://memory.psy.vanderbilt.edu/w/index.php/Publications) memory labs.\nIf you have data in [EMBAM](https://github.com/vucml/EMBAM) format, use `matlab/frdata2table.m` to convert your data struct to a table with standard format.\nThen use the Matlab function `writetable` to write a CSV file which can then be read into Python for analysis.\n\n## Citation\n\nIf you use Psifr, please cite the paper:\n\nMorton, N. W., (2020). \nPsifr: Analysis and visualization of free recall data. \nJournal of Open Source Software, 5(54), 2669, https://doi.org/10.21105/joss.02669\n\n## Publications using Psifr\n\nHong, B., Barense, M. D., Pace-Tonna, C. A. & Mack, M. L. (2022). \nEmphasizing associations from encoding affects free recall at retrieval. \nProceedings of the Annual Meeting of the Cognitive Science Society 453\u2013460.\nhttps://escholarship.org/uc/item/2gw1s36q\n\n## Related projects\n\n### EMBAM\nAnalyses supported by Psifr are based on analyses implemented in the Matlab toolbox [EMBAM](https://github.com/vucml/EMBAM).\n\n### pybeh\n[pybeh](https://github.com/pennmem/pybeh) is a direct Python port of EMBAM that supports a wide range of analyses.\n\n### Quail\n[Quail](https://github.com/ContextLab/quail) runs automatic scoring of free recall data, supports calculation and plotting of some common free recall measures, and has tools for measuring the \"memory fingerprint\" of individuals.\n\n## Contributing to Psifr\n\nContributions are welcome to suggest new features, add documentation, and identify bugs. See the [contributing guidelines](.github/CONTRIBUTING.md) for an overview. \n",
    "bugtrack_url": null,
    "license": "GPL-3.0-or-later",
    "summary": "Psifr: Analysis and visualization of free recall data",
    "version": "0.9.0",
    "project_urls": null,
    "split_keywords": [
        "psychology",
        "memory",
        "free recall"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "dba88d05079fbc37c931089de319180cd3f51dc56df801caeae058964d3c9489",
                "md5": "e37f5aa47602c40dc8d0af5448946cc7",
                "sha256": "942f6f961adb5b61debd9829b686f1d2775b288ef1c48c969a8e89a0aa455ac2"
            },
            "downloads": -1,
            "filename": "psifr-0.9.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "e37f5aa47602c40dc8d0af5448946cc7",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 5255188,
            "upload_time": "2023-06-05T23:14:31",
            "upload_time_iso_8601": "2023-06-05T23:14:31.434433Z",
            "url": "https://files.pythonhosted.org/packages/db/a8/8d05079fbc37c931089de319180cd3f51dc56df801caeae058964d3c9489/psifr-0.9.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fc350fce1dcc822a90f398889dae0f0c196bd403d6fb9726726bec4f6d9911c0",
                "md5": "96a8530efa9d4f4b9508ab6073a769f5",
                "sha256": "2128e1f5fc2ad63eacd1088967028837137d226b7a342e601b7acf60a73a62cc"
            },
            "downloads": -1,
            "filename": "psifr-0.9.0.tar.gz",
            "has_sig": false,
            "md5_digest": "96a8530efa9d4f4b9508ab6073a769f5",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 5251790,
            "upload_time": "2023-06-05T23:14:33",
            "upload_time_iso_8601": "2023-06-05T23:14:33.627288Z",
            "url": "https://files.pythonhosted.org/packages/fc/35/0fce1dcc822a90f398889dae0f0c196bd403d6fb9726726bec4f6d9911c0/psifr-0.9.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-06-05 23:14:33",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "psifr"
}
        
Elapsed time: 0.07501s