Skip to main content

A Python module for creating experiments, tasks and questionnaires.

Project description

<p><header><img src="https://github.com/neuropsychology/neuropsydia/blob/master/neuropsydia/files/logo/neuropsydia_banner.png" width="700" align="center" alt="neuropsydia python for research"></header></p>

A Python module for creating experiments, tasks and questionnaires.

---



|Name|neuropsydia|
|----------------|---|
|Latest Version|![](https://img.shields.io/badge/version-0.1.3-brightgreen.svg)|
|Documentation|[![](https://img.shields.io/badge/docs-latest-brightgreen.svg)](http://ecole-de-neuropsychologie.readthedocs.io/en/latest/CreatingExperiments/Neuropsydia.py/Documentation/API/)|
|Discussion|[![Join the chat at https://gitter.im/Neuropsydia-py/Lobby](https://badges.gitter.im/Neuropsydia-py/Lobby.svg)](https://gitter.im/Neuropsydia-py/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)|
|Authors|[![](https://img.shields.io/badge/CV-D._Makowski-purple.svg?colorB=9C27B0)](https://github.com/neuropsychology/Organization/blob/master/CVs/DominiqueMakowski.pdf) [![](https://img.shields.io/badge/CV-L._Dutriaux-purple.svg?colorB=9C27B0)](http://recherche.parisdescartes.fr/LaboratoireMemoireCognition_esl/Membres/Doctorants-Allocataires/Leo-Dutriaux)|
|Support|Windows 7, 8, 10|

---
# Installation
To get the latest stable version (`0.1.3`), run the following in the [command prompt](https://docs.python.org/3/installing/) (might take a few minutes):
```python
pip install https://github.com/neuropsychology/Neuropsydia.py/zipball/master
```
[//]: # "To get the latest development version (`0.1.3`), run the following in the command prompt (might take a few minutes):"
[//]: # "```python"
[//]: # "pip install https://github.com/neuropsychology/Neuropsydia.py/zipball/dev"
[//]: # "```"


**NOTE: We strongly recommend (for Windows users) the use of the [WinPython](https://winpython.github.io/) bundle, that will allow you to have a ready-to-go scientific and portable Python setup.**
<p align="left">
<a href="">
<img src="https://github.com/neuropsychology/Neuropsydia.py/blob/master/examples/Files/demo-installation.gif" height="500" alt="installation neuropsydia winpython pip">
</a>
</p>

To upgrade Neuropsydia, uninstall it and reinstall it :wink:.
```python
pip uninstall neuropsydia
```
---
# Contribute
- You need some help? You found a bug? You would like to request a new feature?
Just open an [issue](https://github.com/neuropsychology/Neuropsydia.py/issues) :relaxed:
- Want to add yourself a feature? Correct a bug? You're more than welcome to contribute!
Check [this page](http://ecole-de-neuropsychologie.readthedocs.io/en/latest/Contributing/Contribute/) to see how to submit your changes on github.
- If you make changes, do not forget to change the [API documentation](http://ecole-de-neuropsychologie.readthedocs.io/en/latest/CreatingExperiments/Neuropsydia.py/Documentation/API/) accordingly.

## Citation
You can cite Neuropsydia with the following:
```
Makowski, D. & Dutriaux, L. (2016). Neuropsydia: A Python Module for Creating Experiments, Tasks and Questionnaires.
Memory and Cognition Lab' Day, 01 November, Paris, France
```
*Note: The authors do not give any warranty. If this software causes your keyboard to blow up, your brain to liquefy, your toilet to clog or a zombie plague to leak, the authors CANNOT IN ANY WAY be held responsible.*

---
# Tutorials

Tutorials are currently under development. Check out [this page](http://ecole-de-neuropsychologie.readthedocs.io/en/latest/Contributing/Contribute/) to help us improve them.

- Novice
- [1.0 Getting Started](http://ecole-de-neuropsychologie.readthedocs.io/en/latest/CreatingExperiments/Neuropsydia.py/Tutorials/Novice/#part-10-getting-started)
- [1.1 Computerize a questionnaire](http://ecole-de-neuropsychologie.readthedocs.io/en/latest/CreatingExperiments/Neuropsydia.py/Tutorials/Novice/#part-11-computerize-a-questionnaire)
- [1.2 Complexify this questionnaire](http://ecole-de-neuropsychologie.readthedocs.io/en/latest/CreatingExperiments/Neuropsydia.py/Tutorials/Novice/#part-12-complexify-this-questionnaire)
- [1.3 Include info about the participant] (http://ecole-de-neuropsychologie.readthedocs.io/en/latest/CreatingExperiments/Neuropsydia.py/Tutorials/Novice/#part-13-include-info-about-the-participant)
- 1.4 The novice's trial
- Apprentice
- 2.0 Basics of Python programming
- [2.1 Structuring your Code] (http://ecole-de-neuropsychologie.readthedocs.io/en/latest/CreatingExperiments/Neuropsydia.py/Tutorials/Apprentice/#part-21-structuring-your-code)
- 2.1 Create a Stroop task
- 2.2 The apprentice's trial
- Companion
- 3.0 Create a more complex experiment
- 3.1 The companion's trial
- Master
- 4.0 Improve timing and precision
- 4.1 Data manipulation and analysis
- 4.2 The master's trial

---
# Example
## A Go/No-Go Task in 50 lines

<p align="left">
<a href="">
<img src="https://github.com/neuropsychology/Neuropsydia.py/blob/master/examples/Files/demo-gonogo.gif" height="500" alt="interactive scale psychology">
</a>
</p>

Try this!

```python
import neuropsydia as n # Load neuropsydia
import random # Import the random module
import pandas as pd # To manipulate and save the data
import numpy as np # To do some maths

n.start() # Start neuropsydia
n.instructions("Goal: Hit SPACE whenever a GREEN circle appears. \nWhen it is RED, don't press anything.") # Display instructions and break line with \n
n.newpage("grey") # Fill the screen
n.countdown() # Display countdown

# Initialize the data storage with a dictionary containing empty lists
data = {"Trial": [],
"Stimulus": [],
"ISI":[],
"RT":[],
"Response":[]}

for trial in range(5): # Iterate over the number of trials
stimulus = random.choice(["green", "red"]) # Select a stimulus type
ISI = random.randrange(start=500, stop=2000, step=500) # Select the inter-stimuli interval (ISI)

n.newpage("grey") # Fill the screen
n.write("+") # Fixation cross
n.refresh() # Diplay it on screen
n.time.wait(ISI) # Wait

n.circle(size=2, fill_color=stimulus) # Display the stimulus (filled with the color selected above)
n.refresh() # Diplay it on screen
response, RT = n.response(time_max=1500) # Wait until 1.5s and collect the response and its time

# Categorize the response
if response == "SPACE" and stimulus == "green":
response_type = "HIT" # Hit
if response != "SPACE" and stimulus == "green":
response_type = "MISS" # Miss
if response == "SPACE" and stimulus == "red":
response_type = "FA" # False Alarm
if response != "SPACE" and stimulus == "red":
response_type = "CR" # Correct Rejection

# Store data by appending each item to its list
data["Trial"].append(trial)
data["Stimulus"].append(stimulus)
data["ISI"].append(ISI)
data["RT"].append(RT)
data["Response"].append(response_type)

# Data saving
df = pd.DataFrame.from_dict(data) # Transform the data dictionary into a proper and savable dataframe
df.to_csv("data.csv") # Save it

# Quick analysis
RTs = df.query('Response=="HIT"')["RT"] # Select the Hits' RTs
print(np.mean(RTs), np.std(RTs)) # Print the mean and the standard deviation
print(len(df.query('Response=="FA"'))) # Print the number of intrusions (false alarms)

n.close() # Close neuropsydia
```

---
# Features



## Write, Ask and Display Images

- [x] Easily write, display images and interact with the user.
- [x] Detailed control over the timing and latency: preload images and display them exactly whenever you want.

<p align="left">
<a href="">
<img src="https://github.com/neuropsychology/Neuropsydia.py/blob/master/examples/Files/demo-writeaskimage.gif" height="500" alt="interactive scale psychology">
</a>
</p>
```python
import neuropsydia as n

n.start()

n.write("Welcome", style="title")
name = n.ask("What is your name?", y=5)
n.write("Ok, " + name + ", here is a super cool cat.", y=3)
n.image("cat.png", size=3, y=-3.5)
n.refresh()
n.time.wait(2000)

n.close()
```

---
## Scales and Questionnaires
- [x] Fully automated questionnaires.
- [x] Powerful scale creation.

<p align="left">
<a href="">
<img src="https://github.com/neuropsychology/Neuropsydia.py/blob/master/examples/Files/demo-scale.gif" height="500" alt="interactive scale psychology">
</a>
</p>

```python
import neuropsydia as n

n.start()
n.newpage()

n.scale(title="Is Python great?",
y=3.3,
anchors=["", ""],
style="blue",
analog=False,
edges=[1,5],
labels=["not at all", "not really", "maybe", "quite", "totally"],
labels_size=0.6
)

n.scale(title="How is neuropsydia?",
y=-3.3,
line_length=12,
edges=[0,100],
anchors=["atrocious", "brilliant"],
point_center=True,
separation_labels=["Bad","Good"],
style="purple",
show_result=True,
show_result_shape_line_color="blue"
)

n.close()
```

---
## Choices
- [x] Easily display clickable choices, useful in case of recognition tasks or so.

<p align="left">
<a href="">
<img src="https://github.com/neuropsychology/Neuropsydia.py/blob/master/examples/Files/demo-choice.gif" height="500" alt="interactive choice psychology remember guess know">
</a>
</p>

```python
import neuropsydia as n

n.start()

n.newpage()

response = n.choice(["Yes", "No"], y=5, title="Isn't it easy?")

response = n.choice(["Hell no", "Nope", "Dunno", "Sure"],
y=-5,
title="Am I better looking?",
height=-2,
boxes_edge_size=0,
boxes_background=["red", "amber", "teal", "blue"],
help_list=["means not at all", "means no", "means you don't know", "means yes"])

n.close()
```

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

neuropsydia-0.1.3.zip (4.0 MB view hashes)

Uploaded Source

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