Giter Site home page Giter Site logo

sammosummo / charlie2 Goto Github PK

View Code? Open in Web Editor NEW
7.0 4.0 3.0 14.87 MB

Open-source neurocognitive test battery written in Python

License: MIT License

Python 99.93% Batchfile 0.07%
neuroscience-methods psychology-experiments python pyqt neuroscience python36 pyqt5 psychophysics psychology cognitive-neuroscience

charlie2's Introduction

Charlie2

Version: 2.1
Author: Samuel R. Mathias
Contact: [email protected]
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:

  1. Download and install Miniconda for your platform from here: https://repo.continuum.io/miniconda/

  2. Create a new conda environment called Charlie2 and activate it.

  3. Run these commands:

    conda update conda
    conda install pip pyqt pandas
    pip install google-api-python-client oauth2client
    
  4. Download Charlie2: https://github.com/sammosummo/Charlie2/archive/master.zip

  5. cd to the directory you saved Charlie2 and run python main.py.

Change history

2.1: Fixed some bugs which caused crashes during test timeouts.

charlie2's People

Contributors

sammosummo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

charlie2's Issues

Improve backup

Backing up takes a long time because each file is replaced on the remote server. Should instead check whether the local and remote files are identical.

Backup terribleness

On Windows (all windows or just this one computer?), backup creates a NEW folder on the remote server each time.

Add beeps

Add a beep to let the experimenter know when a task/condition is over.

Add debugger shortcuts

We can quickly test whether the app is running through a debugger using if gettrace() is not None. Add this to all scripts in order to speed up debugging.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.