User interface with ui

  • Dual interface: command line interface (CLI) and graphical user interface (GUI)

  • Generated with default values automatically from Experiment and Analysis classes

  • Extra information for participant information (following PsychoPy convention)

  • Run parameters for choosing other parameters
    • No output (--noOutput, --n)
    • Automatic running (--autorun 100 at 100x speed)
    • Debug (--debug)
  • Basic syntax:

    python <main project file name> <experiment or analysis name> <function to call> --<parameter1> <value1> ...,
    

    e.g.:

    python run.py exp run --subjID test --debug --n
    

Initialization procedure

The Control class first initializes all classes that it can find with their default parameters. Then these default parameters are updated using the arguments that you chose in the GUI or passed in the CLI.

Consider, for example, our demo script (demos/scripts/main.py). Suppose in the GUI you choose “Main exp.” and the ‘exp’ tab, where enter ‘subjid’ as ‘test’ and select ‘debug’ and ‘no_output’ options (or call run.py main exp run --subjid test --debug --n). Control will first import scripts.main and initialize the ‘exp’ class (i.e., Confsup()). The resulting initialized class will contain the default values for the info and rp parameters (check the Experiment to see the defaults), meaning that if you could access info['subjid'], its value would be confsup_ (the default for the ‘exp’ class).

Next, the values that you provided are inserted in these parameters. So now info['subjid'] = 'test', and rp['debug'] = True.

Finally, the ‘exp’ class is initialized again by passing info and rp parameters to it. This is the reason why all classes that inherit from Experiment should access both info and rp even if you are only going to use their default values. For other classes that do not inherit from Experiment, this is not required.

Input field types

Input field type is chosen based on the default parameter value:

  • bool: wx.CheckBox (e.g., used for no_output)
  • int: wx.SpinCtrl (e.g., used for autorun)
  • tuple: wx.Choice (e.g., used for runtype)
  • otherwise: wx.TextCtrl (e.g., used for subjid)