Let’s create a new project called myproject. It is best to base it on the demos provided with psychopy_ext, so copy the contents of the demos folder (where is it?) to myproject.
Observe the typical structure of a project:
myproject
|-main (data for the main experiment)
|-data/ (autogenerated when you run the experiment)
|-logs/ (autogenerated when you run the experiment)
|-scripts/ (this is where your scripts live)
|-__init__.py (empty)
|-main.py (main experiment)
|-twotasks.py (another experiment)
|-...
|-__init__.py (empty)
|-run.bat (shortcut for Windows users instead of run.py)
|-run.py (this is the one and only script you ever run)
Now find the run.py file, and run it (how?). You’ll see an app appear for the Demo Project:
Experiments belonging to this project are listed on the left, and options for each experiment are listed in tabs. You can choose various parameters how to run the experiment, such as entering the participant ID or determining if the experiment should run in full screen. Note that psychopy_ext generates these apps completely automatically by collecting information within your project. (For command-line ninjas, a powerful command-line interface is provided too.)
Let’s have a peak into the source code to see how it’s done.
The run.py file is simple – it only calls the app generator (or the command line interpreter). You need to provide details about experiments within your project:
from psychopy_ext import ui
__author__ = "Jonas Kubilius"
__version__ = "0.1"
exp_choices = [
ui.Choices('scripts.main', # path to the
name='Simple',
alias='main', # alias to call it from CLI
order=['exp','analysis']), # order of tabs in GUI
ui.Choices('scripts.twotasks', name='Two tasks')
]
When all is set, you call the graphic user interface (GUI) or the command-line interpreter (CLI):
ui.Control(exp_choices, title='Demo Project')
By default, a GUI as we saw above is opened, and you can then choose options how to run the experiment and an analysis. We will see where these options come from in the Create an experiment with exp section.
However, it may be faster to run your scripts using a CLI. To do so, you will have to enter options in the terminal (or the command line):
python run.py main exp run --subjid confsup_01 --no_output
Input structure:
All items with ‘–’ are optional.
Whether you use a GUI or a CLI, the result is that the relevant Python script (via a command line input) is called.
See the next part to learn how to setup defaults for your computer: Computer setup.