Charlie2
Open-source neurocognitive test battery written in Python
Install / Use
/learn @sammosummo/Charlie2README
Charlie2
:Version: 2.1 :Author: Samuel R. Mathias :Contact: samuel.mathias@yale.edu :Github: http://github.com/sammosummo/Charlie2/ :License: MIT
Introduction
Charlie2 is a free, open-source, cross-platform neurocognitive test battery written in Python, with a focus on extendability. It will be used to collect data for one of our lab projects, but may be used freely by others.
What does it do?
Like its predecessor, Charlie2 runs neurocognitive tests. There are currently 9 tests in
the battery, taking ~30 minutes to complete per proband. Each test has a docstring with
citations; have a look in the charlie2/tests folder to see what is available.
Notable features
-
Since Charlie2 is written in Python, it is cross-platform. I have had success running it on various platforms, from tablets running Windows 10 to Raspberry Pis.
-
Charlie2 works especially well on touchscreen devices.
-
Charlie2 has a GUI which allows the user to store/view proband metadata (e.g., their age, sex, and miscellaneous notes made before or after testing), run tests individually or in pre-defined batches, and back up data to a remote storage server such as Google Drive.
-
Modifying or adding new tests to Charlie2 is quick, easy and Pythonic.
-
Data are recorded after each trial. This means that you have access to trial-specific data rather than just the summary data. It also means that the tests are resumable; that is, the progress of each proband is retained. This prevents a proband from performing a test twice, and allows them to pick up where they left off, if a test gets interrupted.
-
Summary statistics are automatically computed after a proband completes a test. All of the data (summary and trial-specific) are stored within various formats, including human-readable csv files and Python pickles.
What's changed
Charlie2 has an entirely new code base. Below are the most significant changes.
-
Charlie2 is written in/for Python 3.6 or greater. It does not work with Python 2, and probably won't work with earlier versions of Python 3.
-
Rather than relying on command-line arguments, Charlie2 is GUI-based.
-
Most of the heavy lifting is done by PyQt5, not pygame, which is no longer a dependency.
-
Questionnaires have been completely removed.
What (still) doesn't work
-
Charlie2 is not stand-alone.
-
Charlie2 is not currently a regular Python package, so isn't installable via
pip. This probably won't ever happen.
Installation and usage
Charlie is simply a collection of Python scripts. All functionality is accessed from a
PyQt5 application which is launched via main.py. If this is not enough information for
you, I recommend performing the following steps:
-
Download and install Miniconda for your platform from here: https://repo.continuum.io/miniconda/
-
Create a new conda environment called
Charlie2andactivateit. -
Run these commands: :: conda update conda conda install pip pyqt pandas pip install google-api-python-client oauth2client
-
Download Charlie2: https://github.com/sammosummo/Charlie2/archive/master.zip
-
cdto the directory you saved Charlie2 and runpython main.py.
Change history
2.1: Fixed some bugs which caused crashes during test timeouts.
Related Skills
node-connect
333.3kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
claude-opus-4-5-migration
82.0kMigrate prompts and code from Claude Sonnet 4.0, Sonnet 4.5, or Opus 4.1 to Opus 4.5
frontend-design
82.0kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
model-usage
333.3kUse CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.
