Language Specification
Experiment
Defines an entire experiment and contains the following elements:
<participant-validator>: defines the rule for valid participant/session IDs.<experimental-setup>or<experimental-setup-variants>: defines the research equipment used in the protocol and assigns them to procedures in the protocol.<protocol>: defines the protocol for the experiment. This protocol consists of a procedure (procedures).<post-actions>: defines actions that should be executed when a session is completed.
Elements
| Name | Use | Description |
|---|---|---|
optional |
A participant validator can guard against invalid participant/session IDs. Participant/session IDs are validated with regular expressions. This tutorial RegexLearn teaches how to write regular expressions. When writing regular expressions, it is beneficial to procedure them with a suitable tool regex101. |
|
optional |
Defines the experimental setup for the experiment, which consists of defining and configuring the required research devices and assigning these to procedures in the protocol. |
|
optional |
Defines possible experimental setups for the protocol. |
|
required |
This element defines the protocol for the experiment. The main part of the protocol definition is the definition of the procedures (experimental procedures) performed in the experimental sessions. The procedure definitions must be performed for all protocols and are supported by optional elements. This protocol contains the following elements:
The order of these elements is significant and must be defined in the order given above. |
|
|
optional |
The |
TextValidator
A text validator can guard against invalid text input. Text is validated with regular expressions. This tutorial, RegexLearn, teaches how to write regular expressions. When writing regular expressions, it is beneficial to procedure them with a suitable tool regex101.
Attributes
| Name | Use | Description |
|---|---|---|
regex |
required |
The regular expression that are used to validate the text [ string ]. |
advice |
required |
An advice on how to write a correct text input [ string ]. |
ExperimentalSetup
The devices element lists the devices required for the experiment and specifies their configuration, whereas the device-mapping assigns these devices to the instruments required for each procedure.
All devices that a protocol requires are listed in the devices element as nested elements. These elements assign an ID that is used to identify the device when mapped to the Instruments required by procedures in the device-mapping element, and they also configure the devices for the experiment.
The devices elements specify and configure the research devices used in the experiment, but it does not configure which devices are used in the procedures in the protocol. Each procedure will require a set of Instruments to perform the experimental procedures. Each device that is assigned to an Instrument Name, required by a procedure, must implement the required Instrument for that name. Assigning a device that does not implement the required Instrument will result in an error that will prevent the experiment from being run by the LabBench interpreter.
Each mapping of a device to an Instrument is done with a device-assignment element, where the device-id is the id of the device from the devices element, instrument-name is the name of the Instrument from procedure, and procedure-type is the type of procedure that requires the Instrument.
Attributes
| Name | Use | Description |
|---|---|---|
id |
optional |
Identifier of the experimental setup [ string ]. |
name |
optional |
Name of the experimental setup that will be used to identify it in LabBench [ string ]. |
Elements
| Name | Use | Description |
|---|---|---|
|
optional |
The |
|
optional |
The |
LIOSetup
LabBench I/O
The LabBench I/O device serves as a central hub for experiments requiring precise coordination of stimulation, participant responses, and external equipment. It supports flexible experimental designs by integrating digital and analogue signaling for stimulus generation and response collection.
Common experimental applications include:
- Precise Event Synchronization and Triggering: The device generates and routes digital triggers to synchronise experimental events with external systems such as EEG, EMG, motion capture, eye tracking, or imaging equipment. Trigger logic and voltage levels are adjustable to meet the requirements of various hardware platforms.
- Electrical and Sensory Stimulation Control: Computer-controlled interfaces with external stimulators allow precise timing of electrical or sensory stimuli in psychophysical, nociceptive, or neurophysiological paradigms.
- Reaction Time and Behavioral Response Tasks: The device collects button presses and response pad inputs for tasks, measuring reaction times and behavioural responses.
- Psychophysical ratings: The device supports psychophysical rating scales for real-time reporting of subjective experiences, such as pain intensity, discomfort, or perceptual magnitude, during stimulation or after discrete events.
- Externally Triggered and Closed-Loop Paradigms: The device detects auditory or visual events to trigger experimental actions, enabling closed-loop designs in which stimulation or task flow depends on the detected signals or participant behaviour.
Overall, the LabBench I/O device supports complex, multimodal experimental protocols that require precise timing and flexible configuration of stimulation, responses, and external recordings. It is well-suited for advanced psychophysics, systems neuroscience, and human neurophysiology studies.
Attributes
| Name | Use | Description |
|---|---|---|
default-analogue-output |
optional |
Voltage output on the STIMULATOR A when the device is idle [ double ]. This voltage must be between -10V and 10V. |
id |
required |
Identification of the device, which is used to identify the device when it is assigned to procedures in the protocol. |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Defines how digital trigger signals generated on the INTERFACE port are electrically and logically configured, specifying whether triggers use positive or negative logic and which voltage levels are driven on the high and low bytes, allowing the LabBench I/O device to be matched to the electrical requirements of connected external equipment. |
|
optional |
Defines the external electrical stimulator controlled via the LabBench I/O device, specifying which stimulator hardware is connected and its initial current–voltage conversion setting, enabling LabBench to generate precisely timed and parameterized electrical stimulation as part of the experimental protocol. |
|
optional |
Defines the set of participant response and event-detection devices connected to the LabBench I/O device, including trigger detectors, buttons, response pads, and rating scales. Up to two devices can be defined, corresponding to the two available response ports on the device. Devices are assigned to response ports in the order they are defined within this element: the first device is connected to response port 1 and the second to response port 2. As a consequence, it is possible to occupy only response port 1 without using response port 2, but not the other way around. |
LIOTriggerSetup
Defines how digital trigger signals generated on the INTERFACE port are electrically and logically configured, specifying whether triggers use positive or negative logic and which voltage levels are driven on the high and low bytes, allowing the LabBench I/O device to be matched to the electrical requirements of connected external equipment.
Attributes
| Name | Use | Description |
|---|---|---|
logic-system |
required |
Specifies the logic convention used when generating digital triggers with the INTERFACE port. In positive logic, a high voltage represents the active or true state, whereas in negative logic, a low voltage represents the active or true state and the interpretation of high and low is inverted. |
low-byte-voltage-level |
required |
Voltage level for the low-order byte. |
high-byte-voltage-level |
required |
Voltage level for the high-order byte. |
LIOGeneratorSetup
Defines the external electrical stimulator controlled via the LabBench I/O device, specifying which stimulator hardware is connected and its initial current–voltage conversion setting, enabling LabBench to generate precisely timed and parameterized electrical stimulation as part of the experimental protocol.
Elements
| Name | Use | Description |
|---|---|---|
1 |
This definition requires that exactly one item be provided and that it be chosen from a fixed set of mutually exclusive alternatives. Only one alternative may appear, and all other alternatives must be absent. No alternative is mandatory on its own, but the choice as a whole is required, meaning the container is invalid unless exactly one of the allowed options is specified. |
DS5
The Digitimer DS5 is a constant-current electrical stimulator widely used in neuroscience and psychophysics research to deliver precisely controlled electrical pulses to peripheral nerves or tissues, supporting reproducible stimulation across a wide range of experimental protocols.
Attributes
| Name | Use | Description |
|---|---|---|
name |
optional |
Name of the equipment that will be used to identify it to the operator in the LabBench Runner. |
transconductance |
optional |
Initial transconductance of the stimulator. This can be changed during runtime in LabBech Runner. |
NoxiSTIM
The NoxiSTIM is an isolated, current-controlled electrical stimulator developed for research use.
Attributes
| Name | Use | Description |
|---|---|---|
name |
optional |
Name of the equipment that will be used to identify it to the operator in the LabBench Runner. |
transconductance |
optional |
Initial transconductance of the stimulator. This can be changed during runtime in LabBech Runner. |
LIOResponseDeviceSetup
Defines the set of participant response and event-detection devices connected to the LabBench I/O device, including trigger detectors, buttons, response pads, and rating scales.
Up to two devices can be defined, corresponding to the two available response ports on the device.
Devices are assigned to response ports in the order they are defined within this element: the first device is connected to response port 1 and the second to response port 2. As a consequence, it is possible to occupy only response port 1 without using response port 2, but not the other way around.
Elements
| Name | Use | Description |
|---|---|---|
|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
ButtonSetup
The LabBench BUTTON is a simple single-button response device used to collect discrete participant responses such as responses in yes/no response task. (e.g., for threshold estimation in perception threshold tracking).
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identification of the response device [ string ]. This |
timing-source |
optional |
Timing or trigger source:
|
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
ButtonMap
A button configuration for the device. Each button configuration is activated based on the experimental-setup-id of the currently selected procedure in the protocol.
Attributes
| Name | Use | Description |
|---|---|---|
experimental-setup-id |
optional |
The experimental-setup-id that will activate the button configuration [ string ]. If this attribute is omitted, the button configuration will default to the device’s configuration, which will be activated if no configuration is found for the currently active experimental-setup-id. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
ButtonAssignment
Assign a button function to a physical button on the device. Procedures and devices that use this device as their controller-device will need a specific set of button functions to operate.
Attributes
| Name | Use | Description |
|---|---|---|
code |
required |
The code that identifies the physical button on the device [ int ]. |
button |
required |
The button function to assign to the physical button on the device. |
label |
required |
A descriptive label that will be used in LabBench Designer to explain the function of the button [ string ]. |
VisualAnalogScaleSetup
A visual analogue scale (VAS) represents a ratio scale along which observers report the perceived magnitude of a subjective sensation. A ratio scale means that responses are defined on a continuum, with a true zero corresponding to the absence of the perceptual quantity, and equal distances along the scale correspond to equal increments in perceived magnitude. As a consequence, ratios between values are interpretable (e.g., a response at 60 can be meaningfully understood as twice the perceived intensity of a response at 30, under the assumptions of the scale).
The scale is defined by a modality and the lower and upper anchors of the perceptual dimension. The lower anchor denotes the null intensity of the sensation, while the upper anchor denotes the maximum subjectively imaginable intensity for that modality. The scale is also defined by its physical length, typically 10cm.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identification of the response device [ string ]. This |
sample-period |
optional |
|
timing-source |
optional |
Timing or trigger source:
|
length |
optional |
Physical length of the scale in centimeters [ double ]. |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Definition of the scale modality and its lower and upper anchors of the perceptual dimension. The lower anchor denotes the null intensity of the sensation, while the upper anchor denotes the maximum subjectively imaginable intensity for that modality. |
|
|
optional |
The |
AnchorDefinitions
Definition of the scale modality and its lower and upper anchors of the perceptual dimension. The lower anchor denotes the null intensity of the sensation, while the upper anchor denotes the maximum subjectively imaginable intensity for that modality.
Elements
| Name | Use | Description |
|---|---|---|
required |
The modality of the scale such as pain, itch, pleasentness, nausia, etc. |
|
required |
Definition of the top anchor for the scale. |
|
required |
Definition of the bottom anchor for the scale. |
Anchor
Definition of a modality or anchor.
Attributes
| Name | Use | Description |
|---|---|---|
text |
required |
Text describing the element [ string ]. This text will be used if no localization |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
LocalizedText
Localization of the text, if a localized language is selected then that text will be used instead of the text defined in the text attribute.
Attributes
| Name | Use | Description |
|---|---|---|
language |
required |
Language code, which must be defined in one of the |
text |
required |
Localized text to use for the language [ string ]. |
AudioTriggerDetectorSetup
Defines an audio trigger detector (LabBench ATG) that monitors an incoming audio signal and generates a precise trigger event when the signal exceeds a defined threshold. The arming period specifies a refractory interval after each detection to prevent repeated triggering from the same sound event, while the timing source determines how detected events are timestamped.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identification of the response device [ string ]. This |
arming-period |
optional |
Refractory interval in milliseconds after each detection to prevent repeated triggering from the same event [ int ]. |
timing-source |
optional |
Timing or trigger source:
|
VisualTriggerDetectorSetup
Defines a visual trigger detector (LabBench VTG) that uses a photosensor to detect visual fiducials embedded in on-screen stimuli and generates precise trigger events when these fiducials are displayed. The arming period specifies a refractory interval to avoid multiple detections of the same visual event, while the timing source controls how detections are timestamped.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identification of the response device [ string ]. This |
arming-period |
optional |
Refractory interval in milliseconds after each detection to prevent repeated triggering from the same event [ int ]. |
timing-source |
optional |
Timing or trigger source:
|
ResponsePadSetup
The LabBench PAD is a configurable multi-button response device used for collecting discrete participant responses during experiments.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identification of the response device [ string ]. This |
type |
optional |
Type of response pad |
timing-source |
optional |
Timing or trigger source:
|
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
CPARSetup
Nocitch CPAR
The Nocitech CPAR is a computer-controlled cuff pressure algometer that delivers precise, reproducible pressure stimulation for neuroscience research. It generates customisable piecewise-linear pressure waveforms with accurate temporal control, supporting advanced psychophysical protocols. The device enables automated cuff pressure algometry protocols that are not feasible with manual devices.
Possible protocols:
- Cuff Pressure Pain Detection and Tolerance Thresholds: Automatically measures the pressure at which a participant first perceives pain (pain detection threshold) and when pain becomes intolerable (pain tolerance threshold).
- Temporal Summation (TS): Applies repeated, identical pressure stimuli to assess increases in perceived pain over time, reflecting central facilitatory pain mechanisms (often referred to as “wind-up”).
- Spatial Summation: Uses multiple cuffs or varied stimulation areas to study how pain perception changes with the spatial extent of stimulation.
- Conditioned Pain Modulation (CPM): Implements a “pain-inhibits-pain” paradigm, where a conditioning stimulus at one site alters the pain response at another.
These protocols are commonly used in quantitative sensory testing (QST) to investigate peripheral and central sensitisation mechanisms in both healthy and clinical populations.
Attributes
| Name | Use | Description |
|---|---|---|
compressor-mode |
optional |
Control mode for the compressor; AUTO: The compressor will refill automatically after each procedure in the protocol, MANUAL: The compressor will only refill when the minimal working pressure has been reached:
|
id |
required |
Identification of the device, which is used to identify the device when it is assigned to procedures in the protocol. |
CPARPlusSetup
LabBench CPAR+
The LabBench CPAR+ is a computer-controlled cuff pressure algometer that delivers precise, reproducible pressure stimulation for neuroscience research. It generates customisable piecewise-linear pressure waveforms with accurate temporal control, supporting advanced psychophysical protocols. The device enables automated cuff pressure algometry protocols that are not feasible with manual devices.
Possible protocols:
- Cuff Pressure Pain Detection and Tolerance Thresholds: Automatically measures the pressure at which a participant first perceives pain (pain detection threshold) and when pain becomes intolerable (pain tolerance threshold).
- Temporal Summation (TS): Applies repeated, identical pressure stimuli to assess increases in perceived pain over time, reflecting central facilitatory pain mechanisms (often referred to as “wind-up”).
- Spatial Summation: Uses multiple cuffs or varied stimulation areas to study how pain perception changes with the spatial extent of stimulation.
- Conditioned Pain Modulation (CPM): Implements a “pain-inhibits-pain” paradigm, where a conditioning stimulus at one site alters the pain response at another.
These protocols are commonly used in quantitative sensory testing (QST) to investigate peripheral and central sensitisation mechanisms in both healthy and clinical populations.
The device synchronises with external recording and stimulation equipment via digital trigger inputs and outputs. It features two independently controllable cuff pressure channels and provides real-time pressure signals as analogue outputs. The CPAR+ requires an external air supply from standard compressors or compressed air bottles.
Attributes
| Name | Use | Description |
|---|---|---|
rating-scale |
optional |
Identification of an optional external rating scale to use with the LabBench CPAR+ [ string ]. If it is not specified or left blank the device will use the rating scale connected to its response port. |
id |
required |
Identification of the device, which is used to identify the device when it is assigned to procedures in the protocol. |
button |
optional |
Identification of an optional external button to use with the LabBench CPAR+ [ string ]. If it is not specified or left blank the device will use the rating scale connected to its response port. |
SoundSetup
Soundcard
Soundcards in LabBench enable precise generation of audio signals, making them suitable for a wide range of auditory, psychophysical, and neurophysiological experiments. By leveraging low-latency playback, multi-channel audio, and tight synchronisation with other LabBench devices, soundcards can be integrated into complex experimental protocols, including:
- Auditory Detection and Discrimination Thresholds Presentation of pure tones, noise, or complex sounds to determine hearing thresholds, just-noticeable differences (JNDs), and frequency or intensity discrimination performance.
- Psychophysical Scaling and Rating Experiments Delivery of controlled auditory stimuli while collecting subjective ratings (e.g. loudness, unpleasantness, or salience) using LabBench response devices or questionnaires.
- Temporal Processing and Auditory Timing Tasks Protocols investigating temporal resolution, gap detection, sensitivity to amplitude or frequency modulation, and rhythm perception all rely on accurate stimulus timing.
- Multisensory Integration Experiments Synchronization of auditory stimuli with visual, tactile, or nociceptive stimulation (e.g., LabBench CPAR+) to study cross-modal interactions and sensory integration mechanisms.
- Event-Related and Continuous Stimulation Paradigms Generation of discrete auditory events or continuous sound streams aligned with digital triggers for EEG, MEG, or other physiological recordings.
Soundcards are commonly used in auditory neuroscience and psychophysics, where precise control over stimulus timing, waveform shape, and synchronisation is critical for reproducible experimental designs.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identification of the device, which is used to identify the device when it is assigned to procedures in the protocol. |
JoystickSetup
Joystick
This
The device implements the Button, Joystick, and Trigger instruments. The Trigger instrument is a dummy implementation with no functionality, implemented by the device, so it can act as a procedure device for protocols that would otherwise require a LabBench I/O device, or be used to create protocols that can be used with both a Joystick and a LabBench I/O device.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identification of the device, which is used to identify the device when it is assigned to procedures in the protocol. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
TCSSetup
QSTLab TCS
The QSTLab Thermal Cutaneous Stimulator (TCS) is a portable, battery-powered device for controlled contact thermal stimulation in quantitative sensory testing and pain research, offering a 0–60 °C range with 0.1 °C precision and ramps up to 300 °C/sec, five independently settable stimulation zones, external computer control and triggers for EEG/ECG/MRI integration — ideal for automated QST protocols in LabBench.
Attributes
| Name | Use | Description |
|---|---|---|
minimal-temperature |
optional |
Minimal allowed temperature [ double ]. Must be zero or higher. |
id |
required |
Identification of the device, which is used to identify the device when it is assigned to procedures in the protocol. |
neutral-temperature |
required |
Neutral temperature [ double ]. |
maximal-temperature |
optional |
Maximal allowed temperature [ double ]. Must be 60C or lower. |
trigger-output |
optional |
Generate a trigger at the onset of stimuli [ bool ]. |
DisplaySetup
LabBench Display
This <display> device opens a fixed, always-on-top window on a monitor connected to the laboratory computer. Within an experiment,
this window supports multiple instruments based on the selected procedure. Each instrument defines the experiment-setup-id
that activates it, and each procedure specifies which experiment-setup-id will be used while it is selected.
Instruments that can be defined are:
- Image Display: Displays instructions when procedures are inactive and visual stimuli when active.
- Questionnaire: Displays questionnaires for participants to complete.
- Visual Analog Scale: Displays a ratio scale for participants to rate perceptions.
- Numerical Rating Scale: Displays an interval scale for participants to rate perceptions.
- Categorical Rating Scale: Displays an ordinal scale for participants to rate perceptions.
- Composite Scale: Displays a set of rating scales for participants to potentially rate multiple perceptions simultaneously.
Attributes
| Name | Use | Description |
|---|---|---|
normative-distance |
optional |
Normative distance for visual elements [ double:centimetres ]. This value is used with the monitor.distance to scale the elements so they have the same visual angle for the participant as if they where positioned at the normative distance. |
id |
required |
Identification of the device, which is used to identify the device when it is assigned to procedures in the protocol. |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Typography establishes the global typographic and colour standards for on-screen textual elements in questionnaires and rating scales. It defines default foreground, background, active, and inactive colours, as well as role-specific typography presets for titles, instructions, answers, scale modalities, anchors, and category labels across various question and scale types. |
|
|
optional |
The |
Typography
Typography establishes the global typographic and colour standards for on-screen textual elements in questionnaires and rating scales. It defines default foreground, background, active, and inactive colours, as well as role-specific typography presets for titles, instructions, answers, scale modalities, anchors, and category labels across various question and scale types.
Attributes
| Name | Use | Description |
|---|---|---|
background-colour |
optional |
Background colour [ Text (default: #FFFFFF) ]. |
foreground-colour |
optional |
Foreground colour [ Text (default: #000000) ]. |
active-colour |
optional |
Active colour [ Text (default: #FF0000) ]. |
inactive-colour |
optional |
Inactive colour [ Text (default: #161616) ]. |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Typography for question titles in questionnaires. |
|
optional |
Typography for question instructions in questionnaires. |
|
optional |
Typography for possible answers to boolean, list, and multiple-choice questions in questionnaires. |
|
optional |
Typography for categories in likert and dimensional likert questions in questionnaires. |
|
optional |
Typography for answers to numerical questions in questionnaires. |
|
optional |
Typography for answers to text questions in questionnaires. |
|
optional |
Typography for answers to time/date questions in questionnaires. |
|
optional |
Typography for scale modalities in numerical, categorical, and psychometric rating questions in questionnaires as well as for psychomeric rating scales. |
|
optional |
Typography for the top anchor in psychometric rating questions in questionnaires as well as for psychomeric rating scales. |
|
optional |
Typography for the bottom anchor in and psychometric rating questions in questionnaires as well as for psychomeric rating scales. |
|
optional |
Typography for the categories in categorical rating questions in questionnaires as well as for categorical rating scales. |
|
optional |
Typography for the categories in numerical rating questions in questionnaires as well as for numerical rating scales. |
ElementTypography
Typography of a screen element
Attributes
| Name | Use | Description |
|---|---|---|
size |
required |
Size of the font that is used for the element. |
border-thickness |
optional |
Border thickness of the element. |
style |
optional |
Style of the font, whether it is normal or in italic. |
weight |
optional |
Indicates the visual weight (degree of blackness or thickness of strokes) of the characters in the font. |
colour |
optional |
The colour of the element |
DisplayCategoricalScaleSetup
A categorical rating scale (CRS) represents an ordered set of discrete response categories used to report the perceived magnitude or quality of a subjective sensation. CRS scales are ordinal scales, meaning that the ordering of categories is meaningful, but neither the magnitude of differences between adjacent categories nor ratios between categories is defined or assumed to be equal. As a result, comparisons are limited to statements of greater-than or less-than (e.g., category C indicates more perceived intensity than category B), without any metric interpretation of spacing.
The scale is defined by a modality and a finite set of semantically labelled categories spanning the response range from minimal to maximal perceived intensity.
For its operation, its controller-device must implement a Button instrument with the following button-assignments:
increase: increase the rating on the scale.decrease: decrease the rating on the scale.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Device identification that will be used to identify the sub-device in device assignments [ string ]. |
experimental-setup-id |
required |
Identification of the experimental setup state where this device will be active [ string ]. |
controller-device |
required |
Identification of the device used to control this device [ string ]. |
Elements
| Name | Use | Description |
|---|---|---|
required |
Definition of the scale modality and its lower and upper anchors of the perceptual dimension. The lower anchor denotes the null intensity of the sensation, while the upper anchor denotes the maximum subjectively imaginable intensity for that modality. |
|
|
optional |
The |
DisplayNumericalScaleSetup
With a numerical rating scale (NRS), observers report the perceived magnitude of a subjective sensation by selecting a value from an ordered numeric set. In LabBench, an NRS is treated as an interval scale, meaning that equal numeric differences are intended to correspond to equal differences in perceived magnitude, but the zero point does not constitute a true absence of the perceptual quantity in a measurement-theoretic sense. Consequently, differences between values are interpretable, whereas ratios are not (e.g., the difference between ratings 6 and 8 is meaningful, but a rating of 8 cannot be interpreted as “twice” the intensity of a rating of 4).
The scale is defined by a modality and the lower and upper anchors of the perceptual dimension. The lower anchor denotes the null intensity of the sensation, while the upper anchor denotes the maximum subjectively imaginable intensity for that modality. The anchors serve as reference points for minimal and maximal perceived intensity, without implying a physically or perceptually absolute zero. Responses are restricted to discrete steps between a minum and maximum integer value.
For its operation, its controller-device must implement a Button instrument with the following button-assignments:
increase: increase the rating on the scale.decrease: decrease the rating on the scale.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Device identification that will be used to identify the sub-device in device assignments [ string ]. |
experimental-setup-id |
required |
Identification of the experimental setup state where this device will be active [ string ]. |
maximum |
required |
The maximal value for the scale [ int ]. |
minimum |
required |
The minimum value for the scale [ int ]. |
controller-device |
required |
Identification of the device used to control this device [ string ]. |
Elements
| Name | Use | Description |
|---|---|---|
required |
Definition of the scale modality and its lower and upper anchors of the perceptual dimension. The lower anchor denotes the null intensity of the sensation, while the upper anchor denotes the maximum subjectively imaginable intensity for that modality. |
DisplayVisualAnalogScaleSetup
A visual analogue scale (VAS) represents a ratio scale along which observers report the perceived magnitude of a subjective sensation. A ratio scale means that responses are defined on a continuum, with a true zero corresponding to the absence of the perceptual quantity, and equal distances along the scale correspond to equal increments in perceived magnitude. As a consequence, ratios between values are interpretable (e.g., a response at 60 can be meaningfully understood as twice the perceived intensity of a response at 30, under the assumptions of the scale).
The scale is defined by a modality and the lower and upper anchors of the perceptual dimension. The lower anchor denotes the null intensity of the sensation, while the upper anchor denotes the maximum subjectively imaginable intensity for that modality. The scale is also defined by its physical length, typically 10cm.
For its operation, its controller-device must implement a Button instrument with the following button-assignments:
increase: increase the rating on the scale.decrease: decrease the rating on the scale.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Device identification that will be used to identify the sub-device in device assignments [ string ]. |
experimental-setup-id |
required |
Identification of the experimental setup state where this device will be active [ string ]. |
length |
optional |
Physical length of the scale in centimetres [ double ]. |
controller-device |
required |
Identification of the device used to control this device [ string ]. |
Elements
| Name | Use | Description |
|---|---|---|
required |
Definition of the scale modality and its lower and upper anchors of the perceptual dimension. The lower anchor denotes the null intensity of the sensation, while the upper anchor denotes the maximum subjectively imaginable intensity for that modality. |
DisplayCompositeScaleSetup
A composite scale consists of one or more psychophysical rating scales, each of which can be a visual analog, numerical, or categorical scale. It is possible, but not recommended, to mix scales; the most common configuration is a single scale.
For its operation, it must be assigned a controller-device that must implement a Button instrument with
the following button-assignments:
increase: increase the rating on the currently active scale.decrease: decrease the rating on the current active scale.previous: activate the previous scale in the defined set of scales.next: activate the next scale in the defined set of scales.
If only one scale is defined, the previous and next buttons will have no effect.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Device identification that will be used to identify the sub-device in device assignments [ string ]. |
experimental-setup-id |
required |
Identification of the experimental setup state where this device will be active [ string ]. |
controller-device |
required |
Identification of the device used to control this device [ string ]. |
Elements
| Name | Use | Description |
|---|---|---|
|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
NestedVisualAnalogScaleSetup
A visual analogue scale (VAS) represents a ratio scale along which observers report the perceived magnitude of a subjective sensation. A ratio scale means that responses are defined on a continuum, with a true zero corresponding to the absence of the perceptual quantity, and equal distances along the scale correspond to equal increments in perceived magnitude. As a consequence, ratios between values are interpretable (e.g., a response at 60 can be meaningfully understood as twice the perceived intensity of a response at 30, under the assumptions of the scale).
The scale is defined by a modality and the lower and upper anchors of the perceptual dimension. The lower anchor denotes the null intensity of the sensation, while the upper anchor denotes the maximum subjectively imaginable intensity for that modality. The scale is also defined by its physical length, typically 10cm.
For its operation, its controller-device must implement a Button instrument with the following button-assignments:
increase: increase the rating on the scale.decrease: decrease the rating on the scale.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identification of the scale [ string ]. |
length |
optional |
Physical length of the scale in centimetres [ double ]. |
Elements
| Name | Use | Description |
|---|---|---|
required |
Definition of the scale modality and its lower and upper anchors of the perceptual dimension. The lower anchor denotes the null intensity of the sensation, while the upper anchor denotes the maximum subjectively imaginable intensity for that modality. |
NestedNumericalScaleSetup
With a numerical rating scale (NRS), observers report the perceived magnitude of a subjective sensation by selecting a value from an ordered numeric set. In LabBench, an NRS is treated as an interval scale, meaning that equal numeric differences are intended to correspond to equal differences in perceived magnitude, but the zero point does not constitute a true absence of the perceptual quantity in a measurement-theoretic sense. Consequently, differences between values are interpretable, whereas ratios are not (e.g., the difference between ratings 6 and 8 is meaningful, but a rating of 8 cannot be interpreted as “twice” the intensity of a rating of 4).
The scale is defined by a modality and the lower and upper anchors of the perceptual dimension. The lower anchor denotes the null intensity of the sensation, while the upper anchor denotes the maximum subjectively imaginable intensity for that modality. The anchors serve as reference points for minimal and maximal perceived intensity, without implying a physically or perceptually absolute zero. Responses are restricted to discrete steps between a minum and maximum integer value.
For its operation, its controller-device must implement a Button instrument with the following button-assignments:
increase: increase the rating on the scale.decrease: decrease the rating on the scale.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identification of the scale [ string ]. |
maximum |
required |
The maximal value for the scale [ int ]. |
minimum |
required |
The minimum value for the scale [ int ]. |
Elements
| Name | Use | Description |
|---|---|---|
required |
Definition of the scale modality and its lower and upper anchors of the perceptual dimension. The lower anchor denotes the null intensity of the sensation, while the upper anchor denotes the maximum subjectively imaginable intensity for that modality. |
NestedCategoricalScaleSetup
A categorical rating scale (CRS) represents an ordered set of discrete response categories used to report the perceived magnitude or quality of a subjective sensation. CRS scales are ordinal scales, meaning that the ordering of categories is meaningful, but neither the magnitude of differences between adjacent categories nor ratios between categories is defined or assumed to be equal. As a result, comparisons are limited to statements of greater-than or less-than (e.g., category C indicates more perceived intensity than category B), without any metric interpretation of spacing.
The scale is defined by a modality and a finite set of semantically labelled categories spanning the response range from minimal to maximal perceived intensity.
For its operation, its controller-device must implement a Button instrument with the following button-assignments:
increase: increase the rating on the scale.decrease: decrease the rating on the scale.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identification of the scale [ string ]. |
Elements
| Name | Use | Description |
|---|---|---|
required |
Definition of the scale modality and its lower and upper anchors of the perceptual dimension. The lower anchor denotes the null intensity of the sensation, while the upper anchor denotes the maximum subjectively imaginable intensity for that modality. |
|
|
optional |
The |
ImageSetup
An instrument that can be used for the display of images. This can be used either to display instructions to participants when procedures are inactive or to display visual stimuli for experimental procedures such as visually evoked potentials and behavioural procedures (Stroop, Flanker, Stop-Signal tasks, etc.).
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Device identification that will be used to identify the sub-device in device assignments [ string ]. |
experimental-setup-id |
required |
Identification of the experimental setup state where this device will be active [ string ]. |
background-colour |
optional |
Setting this attribute will override the background colour defined by in the typography element for the display. |
DisplayQuestionnaireSetup
Displays questionnaires for participants to complete, which can be used to ask the participants to provide answers to:
- Boolean Questions: binary questions answered with either a true or false statement.
- Numerical Questions: numbers provided by the participant but entered by the operator.
- Text Questions: verbal answers provided by the participant but entered by the operator.
- Likert Questions: A scale that captures how strongly someone agrees, disagrees, or feels about a statement using a fixed set of ordered response options.
- List Questions: A set of binary statements that each can be either true or false.
- Time Questions: a date and time provided by the participant, entered by the operator.
- Map Questions: a set of regions, such as a body map, where each region can be marked.
- Categorical Rating Questions: rating of a sensation on a categorical scale.
- Numerical Rating Questions: rating of a sensation on a numerical scale.
- Visual Rating Questions: rating of a sensation on a visual analog rating scale.
For the participants to fill out these questions, the controller-device must define the following buttons:
up,down: Is used by Boolean and Likert questions to set answers, and is used by List and Map questions to navigate between answers.left,right: Is used by Map questions to navigate between answers.increase,decrease: Is used by Map, List, Likert, and Rating questions to set answers.previous,next: used to navigate between questions.
If the controller-device also implements the Joystick instrument, this joystick can be used to move between selected areas in map questions.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Device identification that will be used to identify the sub-device in device assignments [ string ]. |
experimental-setup-id |
required |
Identification of the experimental setup state where this device will be active [ string ]. |
controller-device |
required |
Identification of the device used to control this device [ string ]. |
EVASSetup
QSTLab eVAS
Attributes
| Name | Use | Description |
|---|---|---|
initialize-rating-to-zero |
optional |
Reset the rating to zero when a procedure is started [ bool ]. |
id |
required |
Identification of the device, which is used to identify the device when it is assigned to procedures in the protocol. |
Elements
| Name | Use | Description |
|---|---|---|
optional |
A visual analogue scale (VAS) represents a ratio scale along which observers report the perceived magnitude of a subjective sensation. A ratio scale means that responses are defined on a continuum, with a true zero corresponding to the absence of the perceptual quantity, and equal distances along the scale correspond to equal increments in perceived magnitude. As a consequence, ratios between values are interpretable (e.g., a response at 60 can be meaningfully understood as twice the perceived intensity of a response at 30, under the assumptions of the scale). The scale is defined by a modality and the lower and upper anchors of the perceptual dimension. The lower anchor denotes the null intensity of the sensation, while the upper anchor denotes the maximum subjectively imaginable intensity for that modality. The scale is also defined by its physical length, typically 10cm. |
DeviceAssignment
Assignment of a device to an instrument required by one or more of the procedures in the protocol.
Attributes
| Name | Use | Description |
|---|---|---|
device-id |
required |
Identification of the device, this must be the ID of a device defined in the devices section of the experimental setup. |
procedure-id |
optional |
If specified the device will only be assigned to one procedure in the protocol with has this specified |
instrument-name |
required |
Instrument name that the procedures in the protocol has assigned to the instrument. |
ExperimentalSetupCollection
Defines possible experimental setups for the protocol.
Attributes
| Name | Use | Description |
|---|---|---|
default |
optional |
Identifier of the default experimental setup. This setup will be used when an experiment is installed remotely. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
Protocol
This element defines the protocol for the experiment. The main part of the protocol definition is the definition of the procedures (experimental procedures) performed in the experimental sessions. The procedure definitions must be performed for all protocols and are supported by optional elements.
This protocol contains the following elements:
<languages>: this optional element defines the languages/cultures for which the protocol is localized. If present, the startup wizard will display a page where the operator can select the language to use in the current experimental session.<sessions>: this optional element defines the sessions of the experiment. If present, the startup wizard will display a page where the operator can select the current session, and each procedure in the<procedures>element must define which session it belongs to. When the session is performed, the LabBench Runner will only display procedures for the current session.<properties>: this optional element defines properties of the protocol that modifies the execution of the procedures.<randomisations>: this optional element defines variables generated once a participant is created and exported with the recorded data. The primary use of these variables is randomization. However, they can be used for any variable that should be persisted in the data set.<defines>: this optional element defines variables that can have any type. Consequently, they can be used for complex variables not saved in the data set, such as Python classes created in backing scripts. They are created every time a session is started.<templates>: this optional element defines template variables and procedure templates that can be used to construct procedures at runtime in the<procedures>element.<procedures>: this mandatory element defines the procedures of the protocol. These can be directly defined in this element or constructed from procedure templates defined in the<templates>element.<assets>: this optional element defines external files that the procedures in the protocol can use.
The order of these elements is significant and must be defined in the order given above.
Elements
| Name | Use | Description |
|---|---|---|
optional |
The Consequently, this Use of language codes from the ISO 639 standard is recommended, as this standard guarantees that protocols can be combined. A list of ISO 639 language codes can be found at List of ISO 639 language codes |
|
optional |
Defines the list of individual experimental sessions scheduled for each participant in the study. Each In Python code the |
|
optional |
Defines protocol level properties. |
|
optional |
Defines persistent variables that are assigned once when a participant is enrolled in the study and remain constant across all sessions. These variables are used to for example represent participant-specific randomised factors such as treatment group assignment, stratification variables, or any random attributes that do not change over time. By defining them here, you ensure that these values are generated at participant creation and stay invariant throughout the entire experimental protocol. Use |
|
optional |
Definition of a variable that can be used in calculated parameters. |
|
optional |
This element defines template variables and procedure templates that can be used to programmatically generate the procedures in the protocol. Procedures can be generated with procedure constructors in the Constructors can be organised into |
|
optional |
The |
|
optional |
Files can be included in experiments in the form of assets within the The following assets can be included:
Within calculated parameters, assets can be referred to by the |
LanguageCollection
The <languages> element can localize protocols. When specified, it must contain a list of languages, which will be shown to the operator in the Startup wizard in LabBench Runner. The operator can then select one language, and its language code will be added to the definition as the variable Language.
Consequently, this Language variable can then be used in Python expressions and scripts to provide the correct translations of the text in the protocol. Protocol assets in the <assets> can also select different files based on the selected language code.
Use of language codes from the ISO 639 standard is recommended, as this standard guarantees that protocols can be combined. A list of ISO 639 language codes can be found at List of ISO 639 language codes
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
Language
Definition of a language.
Attributes
| Name | Use | Description |
|---|---|---|
code |
required |
This attribute is the language code (ISO 639) used to identify the language in the protocol [ string ]. |
name |
required |
This attribute is the name of that language that will be shown in the Startup Wizard [ string ]. |
SessionConfiguration
Defines the list of individual experimental sessions scheduled for each participant in the study.
Each <session> entry within this block should include a unique id and a descriptive name.
Use this tag to structure how data and procedures are grouped over time in your protocol. When
LabBench Runner is started, the operator will choose an active session in the Startup Wizard.
In Python code the id of the currently active session is available as context.ActiveSession.
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
SessionDefinition
Defines a single experimental session within the overall study timeline.
A session represents one scheduled visit or timepoint when a participant engages in specific tasks or procedures. Each session must have a unique id (used for referencing and tracking) and a human-readable name (used for display and documentation).
Sessions are the building blocks of longitudinal and multi-phase protocols, allowing researchers to organise data collection across multiple timepoints such as baseline, intervention, and follow-up. The order and content of sessions are often tied to the study design and are critical for analysis and reproducibility.
Attributes:
id: A short, unique identifier (e.g.,"SES01") this will be used to identify the session in the LabBench markup language and in included Python code.name: A descriptive human-readable name (e.g.,"Session 1"or"Pre-treatment Visit") this is the name that will be shown to the operator in the LabBench Runner startup wizard.
Example:
<session id="SES01" name="Session 1" />
Use one <session> element per visit to clearly define the structure of your experimental schedule.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
A unique identifier for the session, used for referencing within the protocol. |
name |
required |
A human-readable label for the session, used for display in the LabBench Runner Startup Wizard. |
ProtocolProperties
Defines protocol level properties.
Elements
| Name | Use | Description |
|---|---|---|
optional |
Specifies a procedure rerun policy for the protocol. When a procedure is completed its results will automatically be saved in the current session. However, if a procedure is rerun these results will be discarded and replaced with the new results from the procedure. When a procedure is rerun a warning dialog will be displayed, which can be customised by this rerun policy to display a custom message and to require that a reason is provided before the procedure can be restarted. |
|
optional |
Display a warning if the protocol is incomplete when the LabBench Runner is closed. |
|
optional |
Allow participants to be created during a session. The default is true. |
|
optional |
Display the list of existing participants during in-session selection or creation of a participant. The default is true. |
ProtocolRerunPolicy
Specifies a procedure rerun policy for the protocol. When a procedure is completed its results will automatically be saved in the current session. However, if a procedure is rerun these results will be discarded and replaced with the new results from the procedure. When a procedure is rerun a warning dialog will be displayed, which can be customised by this rerun policy to display a custom message and to require that a reason is provided before the procedure can be restarted.
Attributes
| Name | Use | Description |
|---|---|---|
message |
optional |
The message to be displayed to the operator [ dynamic string ]. The default value is ‘Rerunning the procedure will discard the current results.’. |
require-reason |
optional |
Force the operator to provide a reason for rerunning the procedure that is entered into the session log. |
force-warning |
optional |
Display the warning when a procedure that discards data is rerun. The default value is false. |
BooleanValue
bool
Attributes
| Name | Use | Description |
|---|---|---|
name |
optional |
Name of the variable [ string ]. |
value |
required |
Boolean value [ bool ]. |
PersistentVariableGenerator
Defines persistent variables that are assigned once when a participant is enrolled in the study and remain constant across all sessions.
These variables are used to for example represent participant-specific randomised factors such as treatment group assignment, stratification variables, or any random attributes that do not change over time. By defining them here, you ensure that these values are generated at participant creation and stay invariant throughout the entire experimental protocol.
Use <persistent-variables> to organise all participant-level variables critical for consistent data labelling and analysis. These variables are included in the exported data set.
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
IntegerListPersistentVariable
Defines a named set of integer values that can be used as fixed options or parameters within the experimental protocol.
This element uses a Python-style list ([1,2,3]) in the value attribute structured list syntax.
The name attribute assigns a variable name to the set, and the value attribute provides the list of integers.
Attributes:
name: A descriptive name for the integer set (e.g.,"Order") [ string ].value: A list of integers enclosed in square brackets and separated by commas (e.g.,"[1,2,3]") [ int = Calculated(context) ].
Examples:
Defined within the LabBench Markup Language:
<integers name="Order" value="[1,2,3]" />
Defined in a Python backing script:
<integers name="Order" value="func: Script.CreateOrder(context)" />
Within the LabBench Markup Language the created variable can be accessed by its name, and within a Python script it can be accessed as context.[Name].
Attributes
| Name | Use | Description |
|---|---|---|
name |
required |
|
value |
required |
IntegerPersistentVariable
Defines a single named integer value to be used as a fixed parameter in the experimental protocol.
The name attribute specifies the label for the value, and the value attribute holds the integer itself. This element is useful for defining constants such as counts, limits, or configuration parameters that apply across sessions or participants.
Attributes:
name: A descriptive name for the parameter (e.g.,"NumberOfSites") [ string ].value: A single integer value (e.g.,"4") [ int = Calculated(context) ].
Example:
Defined within the LabBench Markup Language:
<strings name="NumberOfSites" value="4" />
Defined in a Python backing script:
<integers name="NumberOfSites" value="func: Script.CreateNumberOfSites(context)" />
Within the LabBench Markup Language the created variable can be accessed by its name, and within a Python script it can be accessed as context.[Name].
Attributes
| Name | Use | Description |
|---|---|---|
name |
required |
|
value |
required |
StringListPersistentVariable
Defines a named set of string values to be used as fixed options or parameters within the experimental protocol.
This element uses a Python-style list (['Cowhage','Histamine']) in the value attribute. The name attribute specifies the label, and the value attribute provides a list of string options.
Attributes:
name: A descriptive name for the string set (e.g.,"Puritogens") [ string ].value: A list of strings enclosed in square brackets and separated by commas, with each string in single quotes (e.g.,['Cowhage','Histamine']).
Example:
Defined within the LabBench Markup Language:
<strings name="Puritogens" value="['Cowhage','Histamine']" /> [ string[] = Calculated(context) ].
Defined in a Python backing script:
<integers name="Order" value="func: Script.CreatePruritogens(context)" />
Within the LabBench Markup Language the created variable can be accessed by its name, and within a Python script it can be accessed as context.[Name].
Attributes
| Name | Use | Description |
|---|---|---|
name |
required |
|
value |
required |
StringPersistentVariable
Defines a single named string value to be used as a fixed parameter in the experimental protocol.
The name attribute assigns a label to the value, and the value attribute provides the string itself. This is useful for specifying constant text values such as site names, condition labels, or protocol settings that do not change during the study.
Attributes:
name: A descriptive name for the parameter (e.g.,"SiteName").value: A single string value (e.g.,"'Arm'"") [ string = Calculated(context) ].
Example:
Defined within the LabBench Markup Language:
<strings name="SiteName" value="'Arm'" />
Defined in a Python backing script:
<integers name="SiteName" value="func: Script.CreateSiteName(context)" />
Within the LabBench Markup Language the created variable can be accessed by its name, and within a Python script it can be accessed as context.[Name].
Attributes
| Name | Use | Description |
|---|---|---|
name |
required |
|
value |
required |
VariableCollection
Definition of a variable that can be used in calculated parameters.
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
StructVariable
Grouping of variables into structs.
Attributes
| Name | Use | Description |
|---|---|---|
name |
required |
Name of the variable [ string ]. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
Variable
Definition of a variable that can be used in calculated parameters.
Attributes
| Name | Use | Description |
|---|---|---|
name |
required |
Name of the variable [ string ]. |
value |
required |
The value of the variable [ Any = Calculated(context) ]. |
TemplateCollection
This element defines template variables and procedure templates that can be used to programmatically generate the procedures in the protocol. Procedures can be generated with procedure constructors in the <procedures> element. Using procedure templates to create procedures <procedures> element is called templating and can be seen as code-generating code. Constructors generate procedures at the place in the <procedures> element where the constructor is defined.
Constructors can be organised into <sequences> and generated by <foreach> loops. Both <sequences> and <foreach> elements make it possible to perform randomisation of the order in which the generated procedures appear in the protocol.
Elements
| Name | Use | Description |
|---|---|---|
optional |
The |
|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
|
optional |
Definition of variables that will be added to the protocol variables. |
|
optional |
This element defines the procedure templates from which procedure constructors can generate procedures. |
|
optional |
Definition of assets that will be added to the protocol assets. |
IncludeGenerator
The <include> element allows including templates from other protocols, enabling a repository of validated
template protocols that can be used to construct protocols. When a protocol is included, everything in
its <templates> element is included. If there are overlapping names between the items in the source and
destination protocols, this will result in an error that prevents inclusion.
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
IncludeSpecification
Inclusion of the content of the <templates> element in a source protocol in the present protocol.
Attributes
| Name | Use | Description |
|---|---|---|
protocol-id |
required |
The protocol identifier ( |
TemplateVariableCollection
Template variables are used to generate text and calculated parameter attributes in procedures.
List procedure variables can also be iterated over in <foreach> loops and thus generate
multiple procedures, each differing by an element in this list.
An example of the generated of a procedure ID from a template variable:
id="var: f'B05{p}'"
The keyword var: instructs the procedure constructor to generate the value of the id
programmatically from the Python expression in the code; the template variable is named p,
which comes from the following for each loop:
<foreach variable="p" in="procedures">
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
StringTemplateVariable
string
Attributes
| Name | Use | Description |
|---|---|---|
name |
required |
Name of the variable [ string ]. |
value |
required |
Value of the variable [ string ]. |
StringListTemplateVariable
string[]
Attributes
| Name | Use | Description |
|---|---|---|
name |
required |
Name of the variable [ string ]. |
value |
required |
Value of the variable [ string ]. List of strings are specified as strings seperated by semicolons |
StructTemplateVariable
struct
Attributes
| Name | Use | Description |
|---|---|---|
name |
required |
Name of the variable [ string ]. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
StructListTemplateVariable
struct[]
Attributes
| Name | Use | Description |
|---|---|---|
name |
required |
Name of the variable [ string ]. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
UnnamedStructTemplateVariable
struct
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
ProtocolVariableTemplates
Definition of variables that will be added to the protocol variables.
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
TemplateList
This element defines the procedure templates from which procedure constructors can generate procedures.
Elements
| Name | Use | Description |
|---|---|---|
|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
QuestionnaireTemplate
The questionnaire procedure allows either the operator or the participant to answer a set of questions. The questionnaire can consist of the following types of questions:
- Boolean Questions: questions that have mutually exclusive binary answer, which usually consists of answering a true or false statement, but can also consist of dichotomies such as child/adult.
- Numerical Questions: are questions that can be answered with numerical answers.
- Text Questions: are questions that can be answered with either free or validated text.
- Likert Questions: A scale that captures how strongly someone agrees, disagrees, or feels about a statement using a fixed set of ordered response options.
- List Questions: A set of binary statements that each can be either true or false.
- Time Questions: a date and time provided by the participant, entered by the operator.
- Map Questions: is answered by marking one or more regions, such as areas on a body map.
- Categorical Rating Questions: rating of a sensation on a categorical scale.
- Numerical Rating Questions: rating of a sensation on a numerical scale.
- Visual Rating Questions: rating of a sensation on a visual analog rating scale.
All questions are identified with an id and have a title and an instruction. If the questionnaire is to be
answered by the participant, a Questionnaire instrument must be assigned to the procedure in the experimental setup.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the template that must be unique within the protocol. This |
experimental-setup-id |
optional |
ID of the experimental setup configuration that will be selected when the procedure is performed. |
progress-format |
optional |
Controls the progress information that is provided by the procedure:
|
control |
optional |
Sets whether the questionnaire is filled out by the operator or the participant:
|
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
|
optional |
Defines the instruments involved in a procedure and specifies events that occur at the selection, start, completion, or abortion of the procedure. This element makes it possible to inject python code into a procedure that extends the base functionality that is provided by its LabBench implementation. |
|
optional |
Procedure properties can modify the selection and execution of procedures, data collection, and provide instructions to the operator and participants. |
|
|
optional |
The |
optional |
Place a condition on the inclusion of the procedure into a session. |
|
optional |
Definition of calculated parameters that are executed when the state of questions changes; this makes it possible to extend the functionality of the Questionnaire procedure with additional functionality implemented in Python. |
|
|
optional |
The |
|
optional |
The |
ProcedureEventsTemplate
Defines the instruments involved in a procedure and specifies events that occur at the selection, start, completion, or abortion of the procedure.
This element makes it possible to inject python code into a procedure that extends the base functionality that is provided by its LabBench implementation.
Attributes
| Name | Use | Description |
|---|---|---|
start |
optional |
Specifies code that will be executed when the procedure is started [ bool = Calculated(context) ]. If False is returned the procedure will be aborted. |
complete |
optional |
Specifies code that will be executed when the procedure is completed [ bool = Calculated(context) ]. If False is returned the procedure will be aborted. |
abort |
optional |
Specifies code that will be executed when the procedure is aborted [ bool = Calculated(context) ]. Please note this calculated attribute must always return True. |
selected |
optional |
Specifies code that will be executed when the procedure is selected regardsless of its state [ bool = Calculated(context) ]. Please note if a selected state is defined this will override the code provided in this attribute. |
selected-blocked |
optional |
Specifies code that will be executed when the procedure is selected and is in the blocked state [ bool = Calculated(context) ]. |
selected-ready |
optional |
Specifies code that will be executed when the procedure is selected and is in the ready state [ bool = Calculated(context) ]. |
selected-completed |
optional |
Specifies code that will be executed when the procedure is selected and is in the completed state [ bool = Calculated(context) ]. |
selected-excluded |
optional |
Specifies code that will be executed when the procedure is selected and is in the excluded state [ bool = Calculated(context) ]. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
DeviceDescriptionTemplate
@Schema.Core.Setup.DeviceDescription.md
Attributes
| Name | Use | Description |
|---|---|---|
name |
optional |
Instrument name of the instrument. There must be a device assignment with that instrument name of the correct instrument type. |
interface |
required |
Type of instrument. |
ProcedurePropertiesTemplate
Procedure properties can modify the selection and execution of procedures, data collection, and provide instructions to the operator and participants.
Elements
| Name | Use | Description |
|---|---|---|
optional |
Start the procedure when it is selected automatically when the previous procedure in the protocol has been completed. The procedure is only started automatically if the completion of a previous procedure selects the procedure. It is not started automatically if the operator manually selects the procedure. This procedure property can be used to speed up the execution of protocols. The default value of this procedure property is "false," meaning procedures will not be automatically started. |
|
optional |
This element controls whether the next procedure in the protocol will be automatically selected when the current procedure is completed. The default value is "true," meaning the next procedure will be automatically selected. |
|
optional |
This element places a time constraint on when the procedure can be started based on either the start time or completion time of another procedure in the protocol. The time constraint can impose a minimum (min attribute is specified) or maximum time (max attribute is specified) that must elapse before the procedure can be started or a time window (both min and max attributes are specified) within which the time can be started. |
|
optional |
This element specifies instructions for the operator when the procedure is not running. They will be shown in the procedure window instead of the procedure-specific user interface. |
|
optional |
This element specifies instructions for the participant. They will be shown on an ImageDisplay instrument that must be assigned to the procedure in a device assignment in the experimental setup. |
|
optional |
Link to another procedure within the protocol. |
|
optional |
Custom data that can be added to procedure results either in the experiment definition file (*.expx) or by Python code. |
TimeConstraintTemplate
This element places a time constraint on when the procedure can be started based on either the start time or completion time of another procedure in the protocol. The time constraint can impose a minimum (min attribute is specified) or maximum time (max attribute is specified) that must elapse before the procedure can be started or a time window (both min and max attributes are specified) within which the time can be started.
Attributes
| Name | Use | Description |
|---|---|---|
procedure-id |
required |
This attribute specifies the ID of the procedure to which the timing constraint is relative. |
min |
optional |
If this attribute is specified, it specifies the minimum time to pass before the procedure can be started. If the max attribute is also specified, the timing constraint is a time window in which the procedure can only be started within the minimum (min attribute) and maximum (max attribute) time values. |
max |
optional |
If this attribute is specified, it specifies the maximum time that the procedure can be started. If the min attribute is also specified, the timing constraint is a time window in which the procedure can only be started within the minimum (min attribute) and maximum (max attribute) time values. |
notification |
optional |
This attribute controls whether a beep should be sounded when the timing constraint is satisfied. |
time-reference |
optional |
This attribute specifies whether the timing constraint is relative to a procedure’s start or end (completion). |
ProcedureInstructionsTemplate
This element specifies instructions for the operator when the procedure is not running. They will be shown in the procedure window instead of the procedure-specific user interface.
Attributes
| Name | Use | Description |
|---|---|---|
start-instruction |
optional |
Tooltip for the start button [ dynamic string ]. If specified, this will override the default text. |
override-results |
optional |
This attribute controls whether instructions will be shown instead of procedure results in the procedure window for completed procedures. If set to true, instructions will be shown instead of the procedure results [ Boolean (true/false) ]. The default value is false. |
default |
optional |
Instructions that will be shown if instructions are not specified for the current procedure state [ IAsset = Calculated(context) ]. |
blocked |
optional |
Instructions that will be shown when the procedure is in its BLOCKED state. If this attribute is not specified, then the value of the default attribute will be shown instead [ IAsset = Calculated(context) ] |
ready |
optional |
Instructions that will be shown when the procedure is in its READY state. If this attribute is not specified, then the value of the default attribute will be shown instead [ IAsset = Calculated(context) ]. |
excluded |
optional |
Instructions that will be shown when the procedure is in its EXCLUDED state. If this attribute is not specified, then the value of the default attribute will be shown instead [ IAsset = Calculated(context) ]. |
completed |
optional |
Instructions that will be shown when the procedure is in its COMPLETED state. If this attribute is not specified, then the value of the default attribute will be shown instead [ IAsset = Calculated(context) ]. |
ParticipantInstructionsTemplate
This element specifies instructions for the participant. They will be shown on an ImageDisplay instrument that must be assigned to the procedure in a device assignment in the experimental setup.
Attributes
| Name | Use | Description |
|---|---|---|
experimental-setup-id |
required |
This attribute specifies the experimental setup ID that will activate the assigned ImageDisplay [ string ]. This ID can be different from the experimental setup ID for the procedure in general and will only be activated when the procedure is not running. |
default |
optional |
Instructions that will be shown if instructions are not specified for the current procedure state [ IAsset = Calculated(context) ]. |
blocked |
optional |
Instructions that will be shown when the procedure is in its BLOCKED state [ IAsset = Calculated(context) ]. If this attribute is not specified, then the value of the default attribute will be shown instead. |
ready |
optional |
Instructions that will be shown when the procedure is in its READY state [ IAsset = Calculated(context) ]. If this attribute is not specified, then the value of the default attribute will be shown instead. |
excluded |
optional |
Instructions that will be shown when the procedure is in its EXCLUDED state [ IAsset = Calculated(context) ]. If this attribute is not specified, then the value of the default attribute will be shown instead. |
completed |
optional |
Instructions that will be shown when the procedure is in its COMPLETED state [ IAsset = Calculated(context) ]. If this attribute is not specified, then the value of the default attribute will be shown instead. |
ProcedureLinkTemplate
Link to another procedure within the protocol.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identification ( |
ProcedureAnnotationsTemplate
Custom data that can be added to procedure results either in the experiment definition file (*.expx) or by Python code.
Elements
| Name | Use | Description |
|---|---|---|
|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
BooleanValueTemplate
bool
Attributes
| Name | Use | Description |
|---|---|---|
name |
optional |
Name of the variable [ string ]. |
value |
required |
BooleanListValueTemplate
bool[]
Attributes
| Name | Use | Description |
|---|---|---|
name |
optional |
Name of the variable [ string ]. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
NumberValueTemplate
double
Attributes
| Name | Use | Description |
|---|---|---|
name |
optional |
Name of the variable [ string ]. |
value |
required |
Value [ double ]. |
NumberListValueTemplate
double[]
Attributes
| Name | Use | Description |
|---|---|---|
name |
optional |
Name of the variable [ string ]. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
StringValueTemplate
string
Attributes
| Name | Use | Description |
|---|---|---|
name |
optional |
Name of the variable [ string ]. |
value |
required |
Value [ string ]. |
StringListValueTemplate
string[]
Attributes
| Name | Use | Description |
|---|---|---|
name |
optional |
Name of the variable [ string ]. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
IntegerValueTemplate
int
Attributes
| Name | Use | Description |
|---|---|---|
name |
optional |
Name of the variable [ string ]. |
value |
required |
Integer value [ int ]. |
IntegerListValueTemplate
int[]
Attributes
| Name | Use | Description |
|---|---|---|
name |
optional |
Name of the variable [ string ]. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
ProcedureDependencyTemplate
Calculated parameters and Python code may use results from previously completed procedures.
For example, a Stimulation sequence procedure may set the intensity (x="[ProcedureID].[ChannelID])of
the stimuli to thresholds determined in a completed Threshold Estimation procedure. However, if
the stimulation sequence procedure is started before the Threshold Estimation procedure has been completed,
the code above would result in a runtime error.
Consequently, it must be declared if the results of a procedure are used in another procedure. This declaration
is done with the <dependency> element within the <dependencies> element in the procedure definition.
These dependencies can be nonvirtual or virtual. If a procedure dependency is nonvirtual, rerunning the dependency will invalidate the dependent's results, meaning that after the dependency has completed, the dependent's results will be discarded. If a procedure dependency is virtual, it means it is a logical dependency that does not invalidate the results of the dependent. Consequently, in that case, the result of the dependent will not be discarded when the dependency is completed.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier ( |
virtual |
optional |
Is it a virtual dependency [ bool ]. |
ConditionTemplate
Makes it possible to exclude procedures based on the results of completed procedures.
Attributes
| Name | Use | Description |
|---|---|---|
expression |
required |
Condition on the execution of the procedure [ bool = Calculated(context) ]. If this calculated attribute is True the procedure will be included, otherwise it will be excluded. |
help |
required |
This attribute must provide an explanation for why a procedure has been excluded [ dynamic string ]. |
QuestionEventsTemplate
Definition of calculated parameters that are executed when the state of questions changes; this makes it possible to extend the functionality of the Questionnaire procedure with additional functionality implemented in Python.
Attributes
| Name | Use | Description |
|---|---|---|
start |
optional |
Called when a question is started [ bool = Calculated(context) ]. |
complete |
optional |
Called when a question is completed [ bool = Calculated(context) ]. |
changed |
optional |
Called when a the answer to a question is changed [ bool = Calculated(context) ]. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
AreaQuestionTemplate
The <map> question lets users select areas on an image, such as marking pain on a body map.
If the map question is answered by the operator, they selected/deselected areas by clicking
on the image in the LabBench Runner procedure window. If the participants answer the question,
they will use a Button instrument to navigate between areas and to select/deselct them.
When participants answer the question, the following button functions must be defined in the button configuration:
up,down,left,right: are used to navigate between areas.increaseanddecrease: are used to select/deselect areas.
If the assigned device also implements the Joystick instrument, joystick movement can be used to navigate between areas.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the question [ string ]. This identifier must be unique and is used to reference the answer in calculated parameters and in exported data. The answer can be referenced in calculated parameters as |
title |
optional |
The title of the question [ dynamic string ]. |
instruction |
optional |
An instruction to the operator or participant on how to answer the question [ dynamic string ]. |
condition |
optional |
Places a condition on whether the question is asked [ bool = Calculated(context) ]. If the calculated parameter returns True, the question is asked; otherwise, it is skipped. Consequently, this attribute can be used to omit questions based on answers to previous questions or on the results of other procedures in the protocol. |
image-map |
required |
An image that will provide the areas that can be selected [ image = Calculated(context) ]. Each area must be uniformly colored with a single color, and an |
overlay-image |
optional |
An overlay image that will be added on top of the processed area image [ image = Calculated(context) ]. Consequently, this image can be used to add information and a decal to the area image. For the areas to be visible, all pixels that do not provide information or a decal must be transparent. |
selected-colour |
required |
The colour of areas that the participant have selected, but which is currently not active [ string ]. The colour must be specified in hex in the form of #RRGGBB. |
active-selected-colour |
required |
The colour of areas that are selected and active [ string ]. The colour must be specified in hex in the form of #RRGGBB. Please not that the concept of active/inactive areas is only used when the questionnaire is answered by the participant. If the operator answers the questionnaire then this attribute has no effect. |
deselected-colour |
required |
The colour of areas that the participant has not selected and which are currently not active [ string ]. This colour is typically the same as the background colour of the image, meaning deselected/not active areas will not be colored. The colour must be specified in hex in the form of #RRGGBB. |
active-deselected-colour |
required |
The colour of areas that are active but not selected [ string ]. The colour must be specified in hex in the form of #RRGGBB. Please not that the concept of active/inactive areas is only used when the questionnaire is answered by the participant. If the operator answers the questionnaire then this attribute has no effect. |
selection-mode |
optional |
Area selection mode:
|
initial-active-area |
optional |
Sets which area is initially active [ string ]. This must be the ID of an |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
AreaTemplate
An area on the image can be selected or deselected. Each area has an id and a colour, which
matches the colour of the pixels in that area. The operator or participant will not see this
color, as it will be replaced by one of the following:
deselected-colour: an area that is neither selected nor active.selected-colour: an area that has been selected by the operator/participant but is not active.active-deselected-colour: an area has not been selected and is active.active-selected-colour: an area has been selected and is active.
The concept of an active/inactive area is relevant only when the participant completes the questionnaire. In that mode, it is the area currently in focus, and pressing the increase/decrease button selects/deselects the area, respectively.
When the participant answers the questionnaire, each area must also set up navigation to adjacent areas, specifying which area will be made active when the up, down, left, or right button is pressed. For each area, at least one button must be defined so the participant can’t get trapped and can't navigate away from the area.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identification of the area [ string ]. This |
colour |
required |
The colour that defines the area on the image [ string ]. Must be specified as a hex value #RRGGBB. |
up |
optional |
Which area should be activated when the |
down |
optional |
Which area should be activated when the |
left |
optional |
Which area should be activated when the |
right |
optional |
Which area should be activated when the |
TextQuestionTemplate
The <text> question allows the participant or operator to provide a verbal free-form
answer to a statement. The answer is in text that can be validated with a regular expression.
If the participant answers the question, the answer must be given verbally to the operator, who then enters it into the questionnaire. The operator's entered value will be displayed to the participant so they can confirm it is correct.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the question [ string ]. This identifier must be unique and is used to reference the answer in calculated parameters and in exported data. The answer can be referenced in calculated parameters as |
title |
optional |
The title of the question [ dynamic string ]. |
instruction |
optional |
An instruction to the operator or participant on how to answer the question [ dynamic string ]. |
condition |
optional |
Places a condition on whether the question is asked [ bool = Calculated(context) ]. If the calculated parameter returns True, the question is asked; otherwise, it is skipped. Consequently, this attribute can be used to omit questions based on answers to previous questions or on the results of other procedures in the protocol. |
maximal-length |
optional |
Maximal length of the answer [ int = Calculated(context) ]. |
Elements
| Name | Use | Description |
|---|---|---|
optional |
A text validator can guard against invalid text input. Text is validated with regular expressions. This tutorial, RegexLearn, teaches how to write regular expressions. When writing regular expressions, it is beneficial to procedure them with a suitable tool regex101. |
TextValidatorTemplate
A text validator can guard against invalid text input. Text is validated with regular expressions. This tutorial, RegexLearn, teaches how to write regular expressions. When writing regular expressions, it is beneficial to procedure them with a suitable tool regex101.
Attributes
| Name | Use | Description |
|---|---|---|
regex |
required |
The regular expression that are used to validate the text [ string ]. |
advice |
required |
An advice on how to write a correct text input [ string ]. |
BooleanQuestionTemplate
The <boolean> question asks a statement that can either be true or false. If the participant
answers the question, the answer is selected with the up and down buttons.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the question [ string ]. This identifier must be unique and is used to reference the answer in calculated parameters and in exported data. The answer can be referenced in calculated parameters as |
title |
optional |
The title of the question [ dynamic string ]. |
instruction |
optional |
An instruction to the operator or participant on how to answer the question [ dynamic string ]. |
condition |
optional |
Places a condition on whether the question is asked [ bool = Calculated(context) ]. If the calculated parameter returns True, the question is asked; otherwise, it is skipped. Consequently, this attribute can be used to omit questions based on answers to previous questions or on the results of other procedures in the protocol. |
true-label |
optional |
Description of the true option [ dynamic string ]. |
false-label |
optional |
Description of the false option [ dynamic string ]. |
NumericalQuestionTemplate
The <numeric> question allows the participant or operator to provide a numerical
answer to a statement. The answer can be validated to be within a given range.
If the participant answers the question, the answer must be given verbally to the operator, who then enters it into the questionnaire. The operator's entered value will be displayed to the participant so they can confirm it is correct.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the question [ string ]. This identifier must be unique and is used to reference the answer in calculated parameters and in exported data. The answer can be referenced in calculated parameters as |
title |
optional |
The title of the question [ dynamic string ]. |
instruction |
optional |
An instruction to the operator or participant on how to answer the question [ dynamic string ]. |
condition |
optional |
Places a condition on whether the question is asked [ bool = Calculated(context) ]. If the calculated parameter returns True, the question is asked; otherwise, it is skipped. Consequently, this attribute can be used to omit questions based on answers to previous questions or on the results of other procedures in the protocol. |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Validation that a number is within a given range. |
NumberValidatorTemplate
Validation that a number is within a given range.
Attributes
| Name | Use | Description |
|---|---|---|
max |
required |
Maximal value for the number [ double ]. |
max-included |
optional |
Is the maximum included in the allowed range [ bool ]. |
min |
required |
Minimum value for the number [ double ]. |
min-included |
optional |
Is the minimum included in the allowed range [ bool ]. |
LikertQuestionTemplate
The <likert> question enables participants or operators to indicate their level of agreement,
endorsement, or frequency using a Likert scale. A Likert scale is a symmetrically ordered set
of response categories, from which a single option may be selected.
In LabBench, Likert scales are presented vertically. This vertical orientation allows for
longer, more descriptive labels for response categories than horizontally displayed categorical
rating scales. Participants select their response using the up and down button.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the question [ string ]. This identifier must be unique and is used to reference the answer in calculated parameters and in exported data. The answer can be referenced in calculated parameters as |
title |
optional |
The title of the question [ dynamic string ]. |
instruction |
optional |
An instruction to the operator or participant on how to answer the question [ dynamic string ]. |
condition |
optional |
Places a condition on whether the question is asked [ bool = Calculated(context) ]. If the calculated parameter returns True, the question is asked; otherwise, it is skipped. Consequently, this attribute can be used to omit questions based on answers to previous questions or on the results of other procedures in the protocol. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
LikertChoiceTemplate
Definition of a response category on the Likert scale. Each response category is quantified by an integer value that corresponds to the Likert scale score if that category is selected.
Attributes
| Name | Use | Description |
|---|---|---|
value |
required |
Likert scale score if that category is selected [ int ]. |
label |
required |
Description of the category [ dynamic string ]. |
DimensionalLikertQuestionTemplate
The <dimensional-likert> question enables participants or operators to indicate their level of
agreement, endorsement, or frequency using multiple Likert scales. A Likert scale is a symmetrically
ordered set of response categories, from which a single option may be selected.
In LabBench, each Likert scale is presented horizontally. Participants select which Likert scale is
active using the up and down buttons, and perform their rating with the increase and decrease buttons.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the question [ string ]. This identifier must be unique and is used to reference the answer in calculated parameters and in exported data. The answer can be referenced in calculated parameters as |
title |
optional |
The title of the question [ dynamic string ]. |
instruction |
optional |
An instruction to the operator or participant on how to answer the question [ dynamic string ]. |
condition |
optional |
Places a condition on whether the question is asked [ bool = Calculated(context) ]. If the calculated parameter returns True, the question is asked; otherwise, it is skipped. Consequently, this attribute can be used to omit questions based on answers to previous questions or on the results of other procedures in the protocol. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
LikertDimensionTemplate
An individual Likert scale on the multi-dimensional Likert scale question.
Attributes
| Name | Use | Description |
|---|---|---|
name |
required |
Description of the Likert scale [ dynamic string ]. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
BooleanListQuestionTemplate
The <list> question allows the participant or operator to provide answers to a set of statements,
each of which can be true or false.
If the participant answers the question, the down and up buttons will navigate between questions,
and pressing increase/decrease will set the answer to true/false, respectively.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the question [ string ]. This identifier must be unique and is used to reference the answer in calculated parameters and in exported data. The answer can be referenced in calculated parameters as |
title |
optional |
The title of the question [ dynamic string ]. |
instruction |
optional |
An instruction to the operator or participant on how to answer the question [ dynamic string ]. |
condition |
optional |
Places a condition on whether the question is asked [ bool = Calculated(context) ]. If the calculated parameter returns True, the question is asked; otherwise, it is skipped. Consequently, this attribute can be used to omit questions based on answers to previous questions or on the results of other procedures in the protocol. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
BooleanListItemTemplate
A statement that can either be true or false.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
LabBench.Core.Procedures.Meta.Survey.Questions.BooleanListItem.ID |
question |
required |
A statement that the participant or operator can answer is either true or false [ dynamic string ]. |
DateTimeQuestionTemplate
The <time> question allows the participant or operator to provide answers to a question
when something occurred. The answer is in the form of a date and time.
If the participant answers the question, the answer must be given verbally to the operator, who then enters it into the questionnaire. The operator's entered value will be displayed to the participant so they can confirm it is correct.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the question [ string ]. This identifier must be unique and is used to reference the answer in calculated parameters and in exported data. The answer can be referenced in calculated parameters as |
title |
optional |
The title of the question [ dynamic string ]. |
instruction |
optional |
An instruction to the operator or participant on how to answer the question [ dynamic string ]. |
condition |
optional |
Places a condition on whether the question is asked [ bool = Calculated(context) ]. If the calculated parameter returns True, the question is asked; otherwise, it is skipped. Consequently, this attribute can be used to omit questions based on answers to previous questions or on the results of other procedures in the protocol. |
VisualAnalogScaleQuestionTemplate
The <visual-analogue-scale> question asks the participant or operator to rate a sensation
on a visual analog rating scale. If the participant answers the question, the rating is
increased/decreased by pressing the increase/decrease buttons, respectively.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the question [ string ]. This identifier must be unique and is used to reference the answer in calculated parameters and in exported data. The answer can be referenced in calculated parameters as |
title |
optional |
The title of the question [ dynamic string ]. |
instruction |
optional |
An instruction to the operator or participant on how to answer the question [ dynamic string ]. |
condition |
optional |
Places a condition on whether the question is asked [ bool = Calculated(context) ]. If the calculated parameter returns True, the question is asked; otherwise, it is skipped. Consequently, this attribute can be used to omit questions based on answers to previous questions or on the results of other procedures in the protocol. |
top-anchor |
required |
Top anchor for the scale [ dynamic string ]. |
bottom-anchor |
required |
Bottom anchor for the scale [ dynamic string ]. |
length |
optional |
Physical length of the scale in centimetres [ double ]. |
active-colour |
required |
Colour for the active part of the scale [ string ]. The string must encode a valid RGB colour value, either in hex as #RRGGBB or as a rgb(RRR,GGG,BBB). For the rgb() notation the colours are in base 10. |
inactive-colour |
required |
Colour for the inactive part of the scale [ string ]. The string must encode a valid RGB colour value, either in hex as #RRGGBB or as a rgb(RRR,GGG,BBB). For the rgb() notation the colours are in base 10. |
NumericalScaleQuestionTemplate
The <numerical-scale> question asks the participant or operator to rate a sensation
on a numerical rating scale. If the participant answers the question, the rating is
increased/decreased by pressing the increase/decrease buttons, respectively.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the question [ string ]. This identifier must be unique and is used to reference the answer in calculated parameters and in exported data. The answer can be referenced in calculated parameters as |
title |
optional |
The title of the question [ dynamic string ]. |
instruction |
optional |
An instruction to the operator or participant on how to answer the question [ dynamic string ]. |
condition |
optional |
Places a condition on whether the question is asked [ bool = Calculated(context) ]. If the calculated parameter returns True, the question is asked; otherwise, it is skipped. Consequently, this attribute can be used to omit questions based on answers to previous questions or on the results of other procedures in the protocol. |
top-anchor |
required |
Top anchor for the scale [ dynamic string ]. |
bottom-anchor |
required |
Bottom anchor for the scale [ dynamic string ]. |
maximum |
required |
The maximal value for the scale [ int ]. |
minimum |
required |
The minimum value for the scale [ int ]. |
active-colour |
required |
Colour for the active part of the scale [ string ]. The string must encode a valid RGB colour value, either in hex as #RRGGBB or as a rgb(RRR,GGG,BBB). For the rgb() notation the colours are in base 10. |
inactive-colour |
required |
Colour for the inactive part of the scale [ string ]. The string must encode a valid RGB colour value, either in hex as #RRGGBB or as a rgb(RRR,GGG,BBB). For the rgb() notation the colours are in base 10. |
CategoricalScaleQuestionTemplate
The <categorical-scale> question asks the participant or operator to rate a sensation
on a categorical rating scale. If the participant answers the question, the rating is
increased/decreased by pressing the increase/decrease buttons, respectively.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the question [ string ]. This identifier must be unique and is used to reference the answer in calculated parameters and in exported data. The answer can be referenced in calculated parameters as |
title |
optional |
The title of the question [ dynamic string ]. |
instruction |
optional |
An instruction to the operator or participant on how to answer the question [ dynamic string ]. |
condition |
optional |
Places a condition on whether the question is asked [ bool = Calculated(context) ]. If the calculated parameter returns True, the question is asked; otherwise, it is skipped. Consequently, this attribute can be used to omit questions based on answers to previous questions or on the results of other procedures in the protocol. |
top-anchor |
required |
Top anchor for the scale [ dynamic string ]. |
bottom-anchor |
required |
Bottom anchor for the scale [ dynamic string ]. |
active-colour |
required |
Colour for the active part of the scale [ string ]. The string must encode a valid RGB colour value, either in hex as #RRGGBB or as a rgb(RRR,GGG,BBB). For the rgb() notation the colours are in base 10. |
inactive-colour |
required |
Colour for the inactive part of the scale [ string ]. The string must encode a valid RGB colour value, either in hex as #RRGGBB or as a rgb(RRR,GGG,BBB). For the rgb() notation the colours are in base 10. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
CategoryTemplate
Category definition.
Attributes
| Name | Use | Description |
|---|---|---|
value |
required |
Description that will be displayed to the participant [ dynamic string ]. |
AreaQuestionConstructor
Construction of questions from templates
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identification of the constructed question [ string ]. This can be a |
template |
required |
Identifier ( |
title |
optional |
Title of the constructed question [ string ]. This can be a |
instruction |
optional |
Instruction of the constructed question [ string ]. This can be a |
condition |
optional |
Condition of the constructed question [ string ]. This can be a |
selection-mode |
optional |
Area selection mode:
|
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
TextQuestionConstructor
Construction of questions from templates
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identification of the constructed question [ string ]. This can be a |
template |
required |
Identifier ( |
title |
optional |
Title of the constructed question [ string ]. This can be a |
instruction |
optional |
Instruction of the constructed question [ string ]. This can be a |
condition |
optional |
Condition of the constructed question [ string ]. This can be a |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
BooleanQuestionConstructor
Construction of questions from templates
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identification of the constructed question [ string ]. This can be a |
template |
required |
Identifier ( |
title |
optional |
Title of the constructed question [ string ]. This can be a |
instruction |
optional |
Instruction of the constructed question [ string ]. This can be a |
condition |
optional |
Condition of the constructed question [ string ]. This can be a |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
NumericalQuestionConstructor
Construction of questions from templates
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identification of the constructed question [ string ]. This can be a |
template |
required |
Identifier ( |
title |
optional |
Title of the constructed question [ string ]. This can be a |
instruction |
optional |
Instruction of the constructed question [ string ]. This can be a |
condition |
optional |
Condition of the constructed question [ string ]. This can be a |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
LikertQuestionConstructor
Construction of questions from templates
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identification of the constructed question [ string ]. This can be a |
template |
required |
Identifier ( |
title |
optional |
Title of the constructed question [ string ]. This can be a |
instruction |
optional |
Instruction of the constructed question [ string ]. This can be a |
condition |
optional |
Condition of the constructed question [ string ]. This can be a |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
DimensionalLikertQuestionConstructor
Construction of questions from templates
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identification of the constructed question [ string ]. This can be a |
template |
required |
Identifier ( |
title |
optional |
Title of the constructed question [ string ]. This can be a |
instruction |
optional |
Instruction of the constructed question [ string ]. This can be a |
condition |
optional |
Condition of the constructed question [ string ]. This can be a |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
BooleanListQuestionConstructor
Construction of questions from templates
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identification of the constructed question [ string ]. This can be a |
template |
required |
Identifier ( |
title |
optional |
Title of the constructed question [ string ]. This can be a |
instruction |
optional |
Instruction of the constructed question [ string ]. This can be a |
condition |
optional |
Condition of the constructed question [ string ]. This can be a |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
DateTimeQuestionConstructor
Construction of questions from templates
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identification of the constructed question [ string ]. This can be a |
template |
required |
Identifier ( |
title |
optional |
Title of the constructed question [ string ]. This can be a |
instruction |
optional |
Instruction of the constructed question [ string ]. This can be a |
condition |
optional |
Condition of the constructed question [ string ]. This can be a |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
VisualAnalogScaleQuestionConstructor
Construction of questions from templates
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identification of the constructed question [ string ]. This can be a |
template |
required |
Identifier ( |
title |
optional |
Title of the constructed question [ string ]. This can be a |
instruction |
optional |
Instruction of the constructed question [ string ]. This can be a |
condition |
optional |
Condition of the constructed question [ string ]. This can be a |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
NumericalScaleQuestionConstructor
Construction of questions from templates
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identification of the constructed question [ string ]. This can be a |
template |
required |
Identifier ( |
title |
optional |
Title of the constructed question [ string ]. This can be a |
instruction |
optional |
Instruction of the constructed question [ string ]. This can be a |
condition |
optional |
Condition of the constructed question [ string ]. This can be a |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
CategoricalScaleQuestionConstructor
Construction of questions from templates
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identification of the constructed question [ string ]. This can be a |
template |
required |
Identifier ( |
title |
optional |
Title of the constructed question [ string ]. This can be a |
instruction |
optional |
Instruction of the constructed question [ string ]. This can be a |
condition |
optional |
Condition of the constructed question [ string ]. This can be a |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
QuestionConstructorForeach
Use a foreach loop with a template variable list to generate questions from templates programmatically.
Attributes
| Name | Use | Description |
|---|---|---|
variable |
required |
Variable name [ string ]. The |
in |
required |
Name of the template variable list to iterate over [ string ]. The attribute is named |
Elements
| Name | Use | Description |
|---|---|---|
|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
SequentialProcedureTemplate
The sequential procedure makes it possible to use state machines to implement experimental procedures. Unlike most other procedures, it has no base functionality that can be configured in the LabBench Language; instead, its functionality must be implemented by a Python script that is called from its procedure events and state events.
In most cases, you will have access to instruments from the Python script to implement the intended experimental procedure. This access is provided by declaring the instruments in the <procedure-events> element. The instruments declared that they will be available for both the procedure events and state events.
The states in the state machine are defined in the <states> element, which also makes it possible to define which Python functions are called for the enter, leave, and update state events.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the template that must be unique within the protocol. This |
experimental-setup-id |
optional |
ID of the experimental setup configuration that will be selected when the procedure is performed. |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
|
optional |
Defines the instruments involved in a procedure and specifies events that occur at the selection, start, completion, or abortion of the procedure. This element makes it possible to inject python code into a procedure that extends the base functionality that is provided by its LabBench implementation. |
|
optional |
Procedure properties can modify the selection and execution of procedures, data collection, and provide instructions to the operator and participants. |
|
|
optional |
The |
optional |
Place a condition on the inclusion of the procedure into a session. |
|
1 |
This definition requires that exactly one item be provided and that it be chosen from a fixed set of mutually exclusive alternatives. Only one alternative may appear, and all other alternatives must be absent. No alternative is mandatory on its own, but the choice as a whole is required, meaning the container is invalid unless exactly one of the allowed options is specified. |
|
required |
Definition of the states in the state machine. The following state events define the functionality of these states:
In the ProcedureContext
|
DeterministicRateParameter
A determistic rate of procedure execution with a fixed period.
Attributes
| Name | Use | Description |
|---|---|---|
value |
optional |
Period of the procedure execution [ int = Calculated(tc) ]. |
UniformlyDistributedRateParameter
Active procedures are updated at regular intervals. This element defines an update interval
that is randomly uniformly distributed between min and max.
Attributes
| Name | Use | Description |
|---|---|---|
min |
optional |
Minimum value for the update period [ double ]. |
max |
optional |
Maximal value for the update period [ double ]. |
SequentialProcedureStateCollectionTemplate
Definition of the states in the state machine. The following state events define the functionality of these states:
enter: a calculated attribute, that is executed when the state is entered.leave: a calculated attribute, that is executed when the state is left.update: a calculated attribute that is executed periodically. This attribute must return a string that controls whether the state machine will; "*") stay in the current state, State ID) go to the state with StateID, "abort") abort the procedure, "complete") complete the procedure.
In the ProcedureContext context, both procedure events and state events have access to a context.CurrentState object that provides:
CurrentState.ID: The State ID of the currently active state [ string(readonly)].CurrentState.RunningTime: The running time in milliseconds of the currently active state [ int(readonly) ].CurrentState.Name: Name of the currently active state [ string(readonly) ].CurrentState.Status: A text that will be shown to the operator in the procedure window. Can be set by the events to provide information to the operator.CurrentState.SetPlotter(lambda x, y): Events can set a Python function that must generate an image that will be shown to the operator in the procedure window.
Attributes
| Name | Use | Description |
|---|---|---|
enter |
optional |
Specifies code that will be executed when a state is entered [ bool = Calculated(context) ]. If False is returned, the procedure will be aborted. |
leave |
optional |
Specifies code that will be executed when a state is left [ bool = Calculated(context) ]. If False is returned, the procedure will be aborted. |
update |
required |
Specifies code that will be executed periodically while the procedure is active [ string = Calculated(context) ]. If text returned will control the next active state. How often the code is executed is controlled by the update rate of the procedure. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
SequentialProcedureStateTemplate
Definition of a procedure state.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
ID of the procedure state. Must be unique, and not one of the reserved keywords for state or procedure transitions. These keywoards are, *, abort, and complete. |
name |
optional |
This optional attribute specifies a human readable name for the procedure state. If it is not specified the ID of the procedure state will be used instead. |
experimental-setup-id |
optional |
This optional attribute, specifies the ID of the experimental setup that will be active will the procedure state is active. If none is specified the experimental setup for the procedure will be used instead. |
StimulationSequenceProcedureTemplate
The <stimulation-sequence> procedure generates stimulus sequences for evoked potentials, behavioural tasks,
or similar procedures. Construct the sequence by creating a stimulus pattern to control timing and a
stimulus set to define which stimuli are delivered.
The stimulation pattern <stimulation-pattern>is constructed from a composition of sequences, which
can be deterministic or random. However, to use this procedure, the stimulation pattern (number of stimuli
and randomisation) is generated when the procedure starts. Consequently, it is not possible to change the
stimulation pattern while the procedure is running, so it cannot depend on participant performance during
the procedure. Use the <sequential> procedure if the stimulation pattern depends on the participant, as that
procedure is more versatile but also more complex to implement than this stimulation sequence procedure.
The stimulation pattern is first generated, yielding a set of temporal stimulation slots that can be
filled with stimuli; which stimuli are inserted into these stimulation slots is defined by the stimulus
set <stimuli>. The stimuli set defines a set of stimuli and controls their randomisation. To fill
the stimulation pattern, a batch of stimuli is first generated by the stimulus set. This batch of
stimuli are inserted into the stimulation slots until all have been allocated, then a new batch is
generated. This process is repeated until all stimulation slots have been allocated a stimulus.
The procedure delivers stimuli via the stimulation component, which, by default, uses the Stimulator
and TriggerGenerator instruments to deliver stimuli and triggers, respectively. If more complex
or multimodal stimuli are required, a <stimulation-scripts> can be defined to generate the
stimuli/triggers from a Python script. When generations are done from a Python script, any visual,
auditory or physical stimuli, and combinations thereof, that are possible with LabBench can be generated.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the template that must be unique within the protocol. This |
experimental-setup-id |
optional |
ID of the experimental setup configuration that will be selected when the procedure is performed. |
stimulus-update-rate |
optional |
Update rate for stimulus generation [ int = Calculated(context) ]. |
trigger-update-rate |
optional |
Update rate for trigger generation [ int = Calculated(context) ]. If not defined, the stimulus generation update rate will be used. |
response-collection |
optional |
Type of response collection that will be performed:
|
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
|
optional |
Defines the instruments involved in a procedure and specifies events that occur at the selection, start, completion, or abortion of the procedure. This element makes it possible to inject python code into a procedure that extends the base functionality that is provided by its LabBench implementation. |
|
optional |
Procedure properties can modify the selection and execution of procedures, data collection, and provide instructions to the operator and participants. |
|
|
optional |
The |
optional |
Place a condition on the inclusion of the procedure into a session. |
|
optional |
Configuration of procedurecomponents, which includes configuration of the stimulation, trigger, and sampling components that are used by the procedure. |
|
optional |
Custom stimulation where the stimulation is implemented with calculated parameters that can either be a single-line Python statement or, more commonly, by calling a Python function in a script. |
|
required |
The The stimulation pattern is generated from a composition of two types of sequences:
The time of a sequence is relative to the starting time of its parent sequence. If a sequence is root, meaning it has no parent, it is relative to time zero. For calcuated parameters the following variables will be in scope:
|
|
required |
The The procedure supports randomisation of stimulation order based on the For calculated stimulus parameters and scripted stimulation, the stimulus |
ComponentConfiguration
Configuration of procedurecomponents, which includes configuration of the stimulation, trigger, and sampling components that are used by the procedure.
Elements
| Name | Use | Description |
|---|---|---|
optional |
Configuration of the stimulation start trigger |
|
optional |
Configuration of the trigger generation start trigger |
StimulationConfiguration
Configuration of the stimulation start trigger
Attributes
| Name | Use | Description |
|---|---|---|
trigger-source |
optional |
Timing or trigger source:
|
TriggerConfiguration
Configuration of the trigger generation start trigger
Attributes
| Name | Use | Description |
|---|---|---|
trigger-source |
optional |
Timing or trigger source:
|
ScriptedStimulationTemplate
Custom stimulation where the stimulation is implemented with calculated parameters that can either be a single-line Python statement or, more commonly, by calling a Python function in a script.
Attributes
| Name | Use | Description |
|---|---|---|
initialize |
optional |
Calculated parameter that will be called when the procedure is started [ bool = Calculated(ts) ]. If False is returned, the procedure will be aborted; otherwise, it will be started. |
stimulate |
required |
Calculated parameter that is called for each stimulation and which must implement the stimulation [ bool = Calculated(ts, x) ]. If False is returned, the procedure will be aborted. |
stimulus-description |
optional |
Description of the stimulus. |
stimulus-unit |
optional |
Unit for the stimulation modulity. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
StimulationPatternTemplate
The <stimulation-pattern> element determines when stimuli are delivered. The pattern generates a
set of time slots, each of which is either filled with stimuli from the <stimuli> set or with a pause.
The stimulation pattern is generated from a composition of two types of sequences:
<sequence>: a sequence with deterministic parameters.<uniformly-distributed-sequence>: a random sequence with an period that is uniformly distrubed between a minimum and maximal period.
The time of a sequence is relative to the starting time of its parent sequence. If a sequence is root, meaning it has no parent, it is relative to time zero.
For calcuated parameters the following variables will be in scope:
NumberOfStimuli: Number of stimuli that will be generated by the<stimuli>element each time a new batch of stimuli is required.
Attributes
| Name | Use | Description |
|---|---|---|
time-base |
optional |
Timebase for enclosing elements:
|
Elements
| Name | Use | Description |
|---|---|---|
1 |
This definition requires that exactly one item be provided and that it be chosen from a fixed set of mutually exclusive alternatives. Only one alternative may appear, and all other alternatives must be absent. No alternative is mandatory on its own, but the choice as a whole is required, meaning the container is invalid unless exactly one of the allowed options is specified. |
DeterministicSequenceTemplate
Generate a deterministic sequence based on these parameters:
Iterations: indicates how many times to repeat the process for generating individual time slots. Each iteration produces one time slot inserted at a time according to the sequence attributes. If the 'Iterations' attribute is omitted, it defaults to 1.Tperiod: The period by which the sequence is repeated, meaning the time between the time slots that are generated by the sequence. If this attribute is omitted, the period will be automatically calculated based on the duration of the sequences it contains.Toffset: Time offset from the start of the sequence until insertion of the first time slot. Consequently, this attribute will offset all timeslots within the sequence.stimulate: Fill the time slot with a stimulus.pause: Insert a pause into the time slot.
Attributes
| Name | Use | Description |
|---|---|---|
iterations |
optional |
Number of sequence iterations [ double = Calculated(context) ]. For each sequence iteration, one time slot is generated. |
stimulate |
optional |
Fill time slots with stimuli from the |
pause |
optional |
Fill time slots with pauses [ bool ]. Please note that this attribute will overrule the |
Tperiod |
optional |
Period by which time slots are generated [ double = Calculated(context) ]. |
Toffset |
optional |
Time offset by which all generated time slots are delayed [ double = Calculated(context) ]. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
UniformlyDistributedSequenceTemplate
Generate a uniformly distributed sequence based on these parameters:
Iterations: indicates how many times to repeat the process for generating individual time slots. Each iteration produces one time slot inserted at a time according to the sequence attributes. If the 'Iterations' attribute is omitted, it defaults to 1.maxTperiod: The maximal period by which the sequence is repeated, meaning the time between the time slots that are generated by the sequence. If this attribute is omitted, the period will be automatically calculated based on the duration of the sequences it contains. The period is uniformly distributed between minTperiod and maxTperiod.minTperiod: The minimal period by which the sequence is repeated, meaning the time between the time slots that are generated by the sequence. If this attribute is omitted, the period will be automatically calculated based on the duration of the sequences it contains. The period is uniformly distributed between minTperiod and maxTperiod.Toffset: Time offset from the start of the sequence until insertion of the first time slot. Consequently, this attribute will offset all timeslots within the sequence.stimulate: Fill the time slot with a stimulus.pause: Insert a pause into the time slot.
Attributes
| Name | Use | Description |
|---|---|---|
iterations |
optional |
Number of sequence iterations [ double = Calculated(context) ]. For each sequence iteration, one time slot is generated. |
stimulate |
optional |
Fill time slots with stimuli from the |
pause |
optional |
Fill time slots with pauses [ bool ]. Please note that this attribute will overrule the |
maxTperiod |
required |
Minimal value for the period [ double = Calculated(context) ]. The period is uniformly distributed between minTperiod and maxTperiod. |
minTperiod |
required |
Maximal value for the period [ double = Calculated(context) ]. The period is uniformly distributed between minTperiod and maxTperiod. |
Toffset |
optional |
Time offset by which all generated time slots are delayed [ double = Calculated(context) ]. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
StimulusSetTemplate
The <stimuli> defines a set of stimuli. These will be inserted into the time slots generated
by the <stimulation-pattern>. The set consists of a series of <stimulus> elements. Each
element may produce multiple stimuli based on its count attribute.
The procedure supports randomisation of stimulation order based on the order attribute (round-robin,
random, block-random, latin-squares, generated). Ensure that the number of stimulation
time slots generated by the stimulation pattern is exactly divisible by the NumberOfStimuli
in this element. Otherwise, any extra stimulation time slots that do not fit into a complete cycle
defined by NumberOfStimuli will not be delivered.
For calculated stimulus parameters and scripted stimulation, the stimulus id will be available
as in the StimulusName variable. The currently active block is available in the BlockNumber variable.
Attributes
| Name | Use | Description |
|---|---|---|
order |
optional |
Method for generating a batch of stimuli from the stimulus set:
|
generator |
optional |
Order by which the stimuli in a batch are reorganised when the order attribute is set to Consequently, the |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
StimulusDeclarationConstructor
Definition of a stimulus in the stimulus set.
Attributes
| Name | Use | Description |
|---|---|---|
name |
required |
Name that will be used to identify the stimulus in results, calculated parameters, and Python scripts [ string ]. |
count |
optional |
Number of stimuli that will be generated from this stimulus declaration [ int = Calculated(context) ]. |
intensity |
optional |
Intensity ( |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Specifies a set of triggers to be generated. These triggers will all be generated with a given duration ( A trigger may generate a trigger on multiple digital outputs. Each output is specified with a nested |
|
optional |
Definition of a stimulus. |
TriggerDefinitionTemplate
Specifies a set of triggers to be generated. These triggers will all be generated with a given
duration (duration) and delay (Tdelay). The delay is relative to the start time of its parent
trigger sequence; if it has no parent trigger sequence, it is relative to time zero.
A trigger may generate a trigger on multiple digital outputs. Each output is specified with a nested
<code> element.
Elements
| Name | Use | Description |
|---|---|---|
1 |
This definition requires that exactly one item be provided and that it be chosen from a fixed set of mutually exclusive alternatives. Only one alternative may appear, and all other alternatives must be absent. No alternative is mandatory on its own, but the choice as a whole is required, meaning the container is invalid unless exactly one of the allowed options is specified. |
TriggerSpecificationTemplate
Specifies a set of triggers to be generated. These triggers will all be generated with a given
duration (duration) and delay (Tdelay). The delay is relative to the start time of its parent
trigger sequence; if it has no parent trigger sequence, it is relative to time zero.
A trigger may generate a trigger on multiple digital outputs. Each output is specified with a nested
<code> element.
Attributes
| Name | Use | Description |
|---|---|---|
Tdelay |
optional |
Trigger delay relative to the starting time of its parent sequence [ double = Calculated(context) ]. |
duration |
required |
Trigger duration [ double = Calculated(context) ]. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
TriggerCodeTemplate
Trigger definitions that are defined by output and value. The output controls
where the trigger is generated, and the value controls which trigger code is
generated. The value attribute is optional and is default set to one (1).
Attributes
| Name | Use | Description |
|---|---|---|
output |
required |
Controls where a trigger will be delivered and what types of triggers can be generated:
Please note that the logic convention (positive/negative) applies only to the |
value |
optional |
Trigger code to be generated [ int = Calculated(context) ]. |
RepeatedTriggerSequenceTemplate
Repetition of enclosed triggers.
Attributes
| Name | Use | Description |
|---|---|---|
Tdelay |
optional |
The delay that the enclosed trigger sequence is delayed with before it is repeated |
Tperiod |
required |
The period by which the enclosed triggers are repeated [ double = Calculated(context) ]. |
N |
optional |
The number of times the enclosed triggers are repeated [ int = Calculated(context) ]. |
Elements
| Name | Use | Description |
|---|---|---|
1 |
This definition requires that exactly one item be provided and that it be chosen from a fixed set of mutually exclusive alternatives. Only one alternative may appear, and all other alternatives must be absent. No alternative is mandatory on its own, but the choice as a whole is required, meaning the container is invalid unless exactly one of the allowed options is specified. |
CombinedTriggerSequenceTemplate
Generation of triggers from a composition of triggers and trigger sequences. The triggers of each enclosing trigger or trigger sequence will be merged together in time.
This will fail if the enclosed triggers or trigger sequences contain incompatible triggers, meaning that two or more distinct trigger codes are to be generated simultaneously on the same trigger output.
Attributes
| Name | Use | Description |
|---|---|---|
Tdelay |
optional |
Delay that all enclosed triggers are delayed with [ double = Calculated(context) ]. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
StimulusDefinitionTemplate
Definition of a stimulus.
Elements
| Name | Use | Description |
|---|---|---|
|
1 |
This definition requires that exactly one item be provided and that it be chosen from a fixed set of mutually exclusive alternatives. Only one alternative may appear, and all other alternatives must be absent. No alternative is mandatory on its own, but the choice as a whole is required, meaning the container is invalid unless exactly one of the allowed options is specified. |
PulseTemplate
Rectangular stimulus.
Attributes
| Name | Use | Description |
|---|---|---|
Is |
required |
Stimulus intensity (Is) [ double = Calculated(context, x)]. |
Ts |
required |
Duration of the stimulus in milliseconds [ double = Calculated(context, x) ]. |
Tdelay |
optional |
Delay of the stimulus in miliseconds [ double = Calculated(context, x) ] |
RampTemplate
A linearly increasing stimulus.
Attributes
| Name | Use | Description |
|---|---|---|
Is |
required |
Stimulus intensity (Is) is the change in the intensity at the end of the ramp from the stimulus offset (Ioffset) [ double = Calculated(context, x)]. |
Ioffset |
optional |
Stimulus intensity offset (Ioffset) is the value that all stimulus intensities during the stimulus are offset with [ double = Calculated(context, x)]. |
Ts |
required |
Duration of the stimulus in milliseconds [ double = Calculated(context, x) ]. |
Tdelay |
optional |
Delay of the stimulus in miliseconds [ double = Calculated(context, x) ] |
SineTemplate
Sinusoidal stimulus.
Attributes
| Name | Use | Description |
|---|---|---|
Is |
required |
Stimulus intensity [ double = Calculated(context, x) ]. |
Ts |
required |
Stimulus duration in milliseconds [ double = Calculated(context, x) ]. |
Tdelay |
optional |
Delay in milliseconds of the stimulus relative to its parent stimulus [ double = Calculated(context, x) ]. |
Frequency |
required |
Frequency of the sinusoidal stimulus [ double = Calculated(context, x) ]. |
ArbitraryTemplate
An arbitrary stimulus that is defined by a mathematical expression.
Attributes
| Name | Use | Description |
|---|---|---|
Ts |
required |
Duration of the stimulus in milliseconds [ double = Calculated(context, x) ]. |
Tdelay |
optional |
Delay of the stimulus in miliseconds [ double = Calculated(context, x) ] |
expression |
required |
A mathematical expression that defines the stimulus. The expression must be a single-line Python statement that returns a double. In the scope of this expression are the current time (t) in milliseconds, a free parameter (x), a set of mathematical functions, and the results and definitions of the current protocol. |
CombinedStimulusTemplate
A combined stimulus is the summation of a set of individual stimuli. The stimulus duration and delays of each stimulus in the set are relative to the combined stimulus's starting time.
Elements
| Name | Use | Description |
|---|---|---|
|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
RepeatedStimulusTemplate
Repeats an enclosed stimulus.
Attributes
| Name | Use | Description |
|---|---|---|
Tdelay |
optional |
Delay in milliseconds of the repeated stimulus relative to its parent stimulus [ double = Calculated(context, x) ]. |
Tperiod |
required |
Period in milliseconds that the enclosed stimulus is repeated [ double = Calculated(context, x) ]. |
N |
optional |
Number of times the enclosed stimulus is repeated [ int = Calculated(context, x) ]. |
Elements
| Name | Use | Description |
|---|---|---|
|
1 |
This definition requires that exactly one item be provided and that it be chosen from a fixed set of mutually exclusive alternatives. Only one alternative may appear, and all other alternatives must be absent. No alternative is mandatory on its own, but the choice as a whole is required, meaning the container is invalid unless exactly one of the allowed options is specified. |
WindowTemplate
Window that gets multiplied on its enclosing stimuli.
Attributes
| Name | Use | Description |
|---|---|---|
window |
required |
Type of window that the enclosing stimulus is windowed with. |
parameter |
optional |
Parameter if any of the window function. |
Elements
| Name | Use | Description |
|---|---|---|
1 |
This definition requires that exactly one item be provided and that it be chosen from a fixed set of mutually exclusive alternatives. Only one alternative may appear, and all other alternatives must be absent. No alternative is mandatory on its own, but the choice as a whole is required, meaning the container is invalid unless exactly one of the allowed options is specified. |
MultipleOutputStimulusTemplate
Represent a stimulus that spand over multiple stimulation outputs.
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
AnalogOutputTemplate
An analogue output channel in a multiple output stimulus.
Attributes
| Name | Use | Description |
|---|---|---|
channel |
required |
Number of the output channel. The stimulation device determines the meaning of this number. |
Elements
| Name | Use | Description |
|---|---|---|
|
1 |
This definition requires that exactly one item be provided and that it be chosen from a fixed set of mutually exclusive alternatives. Only one alternative may appear, and all other alternatives must be absent. No alternative is mandatory on its own, but the choice as a whole is required, meaning the container is invalid unless exactly one of the allowed options is specified. |
LinearSegmentsStimulusTemplate
A stimulus created from piecewise linear segments.
Attributes
| Name | Use | Description |
|---|---|---|
baseline |
required |
The baseline for the stimulus [ double = Calculated(context, x) ]. This baseline is the stimulus intensity outside the linear segments, and the starting value for the linear segments. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
SegmentTemplate
Definition of a segment of a piecewise-linear stimulus. The segment is defined by its duration and intensity at its end. Its starting intensity is defined by the end intensity of the previous segment or by the baseline intensity of the piecewise-linear stimulus.
Attributes
| Name | Use | Description |
|---|---|---|
duration |
required |
Duration of the segment in milliseconds [ double = Calculated(context, x) ]. |
value |
required |
End intensity of the segment [ double = Calculated(ts, x) ]. |
StimulusDeclarationConstructorForeach
Use a foreach loop with a template variable list to generate stimulus declarations from templates programmatically.
Example: Generate stimuli for a duration procedure using a foreach loop:
<stimuli>
<foreach variable="duration" in="Durations">
<stimulus name="var: f'S{duration}'">
<stimulus>
<pulse Is="x" Ts="var: f'{duration}'" />
</stimulus>
</stimulus>
</foreach>
</stimuli>
When the template is used, the Durations list template variable is defined as in this example:
<stimulation-sequence-constructor id="T01" name="SR-Curve" template="SR">
<variables>
<strings name="Durations" value="50;100;200;400" />
</variables>
</stimulation-sequence-constructor>
Attributes
| Name | Use | Description |
|---|---|---|
variable |
required |
Variable name [ string ]. The |
in |
required |
Name of the template variable list to iterate over [ string ]. The attribute is named |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
AlgometryStimulusResponseProcedureTemplate
Stimulus-response procedures determine the psychophysical rating (VAS Rating) to a linearly increasing pressure stimulus. From this stimulus-response curve, several psychophysical parameters can be determined:
- PDT: The Pain Detection Threshold,
- PTL: The Pain Tolerance Limit, and
- PTT: The Pain Tolerance Threshold (PTT).
The determined parameters depend on the procedure configuration and the participant's instructions.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the template that must be unique within the protocol. This |
experimental-setup-id |
optional |
ID of the experimental setup configuration that will be selected when the procedure is performed. |
second-cuff |
optional |
Inflate the second cuff together with the primary cuff [ bool ]. If this attribute is set to true, the value of the primary cuff parameter is irrelevant. Placing the two cuffs adjacent to each other can be used to study spatial summation. |
pressure-limit |
optional |
This attribute is the maximum pressure the device will deliver before it aborts the procedure [ double = Calculated(context) ]. The maximal pressure for the device is 100kPa. |
conditioning-time |
optional |
This attribute is the time from the procedure’s start until the pressure starts to increase linearly [ double = Calculated(context) ]. |
delta-pressure |
optional |
This attribute is the rate of increase [kPa/s] of the applied pressure [ double = Calculated(context) ]. |
vas-pdt |
optional |
The VAS score is interpreted as the Pain Detection Threshold (PDT) [ double = Calculated(context) ]. This attribute should be set to at least 0.1cm to allow for a small deadband in the button on the VAS meter, which is required so as not to risk that noise will accidentally trigger an early determination of the PDT. It can be set to higher than 0.1cm to allow for non-painful stimulations to be rated by the participant. |
stop-mode |
required |
Stop mode for the procedure (stop-on-maximal-rating or stop-when-button-pressed). This attribute determines whether the VAS scale has two (2) or three anchor points (3). When set to stop-on-maximal-rating the VAS scale has two anchor points (pain detection threshold (PDT), pain tolerance threshold (PTT)). When set to stop-when-button-pressed the VAS scale has three anchor points (pain detection threshold (PDT), pain tolerance limit (PTL), pain tolerance threshold (PTT)). |
primary-cuff |
required |
Determines which cuff (1 or 2) will be used for the pressure stimulation [ int = Calculated(context) ]. |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
|
optional |
Defines the instruments involved in a procedure and specifies events that occur at the selection, start, completion, or abortion of the procedure. This element makes it possible to inject python code into a procedure that extends the base functionality that is provided by its LabBench implementation. |
|
optional |
Procedure properties can modify the selection and execution of procedures, data collection, and provide instructions to the operator and participants. |
|
|
optional |
The |
optional |
Place a condition on the inclusion of the procedure into a session. |
AlgometryConditionedPainProcedureTemplate
With the conditioned pain modulation procedure, one cuff applies static pressure while the other determines a stimulus-response curve. The stimulus-response curve determines the psychophysical rating (VAS Rating) to a linearly increasing pressure stimulus.
From this stimulus-response curve, several psychophysical parameters can be determined:
- Pain Detection Threshold (PDT),
- Pain Tolerance Limit (PTL),
- Pain Tolerance Threshold (PTT).
The determined parameters depend on the procedure configuration and the participant's instructions.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the template that must be unique within the protocol. This |
experimental-setup-id |
optional |
ID of the experimental setup configuration that will be selected when the procedure is performed. |
conditional-pressure |
required |
This attribute is the pressure that will be applied with the conditioning cuff [ double = Calculated(context) ]. |
delta-conditional-pressure |
optional |
This attribute is the rate of increase [kPa/s] of the applied conditioning pressure [ double = Calculated(context) ]. |
conditioning-time |
optional |
This attribute is the time from the procedure’s start until the pressure starts to increase linearly [ double = Calculated(context) ]. |
pressure-limit |
optional |
This attribute is the maximum pressure the device will deliver before it aborts the procedure [ double = Calculated(context) ]. The maximal pressure for the device is 100kPa. |
delta-pressure |
optional |
This attribute is the rate of increase [kPa/s] of the applied pressure [ y = Calculated(context) ]. |
vas-pdt |
optional |
The VAS score is interpreted as the Pain Detection Threshold (PDT) [ double = Calculated(context) ]. This attribute should be set to at least 0.1cm to allow for a small deadband in the button on the VAS meter, which is required so as not to risk that noise will accidentally trigger an early determination of the PDT. It can be set to higher than 0.1cm to allow for non-painful stimulations to be rated by the participant. |
stop-mode |
required |
Stop mode for the procedure (stop-on-maximal-rating or stop-when-button-pressed). This attribute determines whether the VAS scale has two (2) or three anchor points (3). When set to stop-on-maximal-rating the VAS scale has two anchor points (pain detection threshold (PDT), pain tolerance threshold (PTT)). When set to stop-when-button-pressed the VAS scale has three anchor points (pain detection threshold (PDT), pain tolerance limit (PTL), pain tolerance threshold (PTT)). |
primary-cuff |
required |
Determines which cuff (1 or 2) will be used for the pressure stimulation [ double = Calculated(context) ]. |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
|
optional |
Defines the instruments involved in a procedure and specifies events that occur at the selection, start, completion, or abortion of the procedure. This element makes it possible to inject python code into a procedure that extends the base functionality that is provided by its LabBench implementation. |
|
optional |
Procedure properties can modify the selection and execution of procedures, data collection, and provide instructions to the operator and participants. |
|
|
optional |
The |
optional |
Place a condition on the inclusion of the procedure into a session. |
AlgometryTemporalSummationProcedureTemplate
The temporal summation procedure applies a series of rectangular pressure stimuli to one or both cuffs. The participant is asked to rate the pain sensation of these stimuli on the VAS meter as soon as possible after the cessation of a pressure stimulus. The VAS rating for a stimulus is recorded just before the next stimulus is given or would have been given if it had not been the last stimulus in the series.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the template that must be unique within the protocol. This |
experimental-setup-id |
optional |
ID of the experimental setup configuration that will be selected when the procedure is performed. |
no-of-stimuli |
optional |
This attribute is the number of pressure stimuli applied during the procedure [ int = Calculated(context) ]. |
t-on |
optional |
This attribute is the duration of the rectangular stimuli [ double = Calculated(context) ]. |
t-off |
optional |
This attribute is the pause between the stimuli in the series [ double = Calculated(context) ]. |
pressure-stimulate |
optional |
This attribute is the pressure that will be applied during the rectangular pressure stimuli [ double = Calculated(context) ]. |
pressure-static |
optional |
This attribute is the pressure that will be applied in between the pressure stimuli [ double = Calculated(context) ]. This value is included as a slight static pressure between the stimuli can prevent the cuff from shifting during the procedure. |
second-cuff |
optional |
Inflate the second cuff together with the primary cuff [ bool ]. If this attribute is set to true, the value of the primary cuff parameter is irrelevant. Placing the two cuffs adjacent to each other can be used to study spatial summation. |
primary-cuff |
optional |
Determines which cuff (1 or 2) will be used for the pressure stimulation [ int = Calculated(context) ]. |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
|
optional |
Defines the instruments involved in a procedure and specifies events that occur at the selection, start, completion, or abortion of the procedure. This element makes it possible to inject python code into a procedure that extends the base functionality that is provided by its LabBench implementation. |
|
optional |
Procedure properties can modify the selection and execution of procedures, data collection, and provide instructions to the operator and participants. |
|
|
optional |
The |
optional |
Place a condition on the inclusion of the procedure into a session. |
AlgometryStaticTemporalSummationProcedureTemplate
The static temporal summation applies a constant pressure for a specified duration instead of a series of stimuli to determine the temporal summation of pressure stimulation.
During this pressure stimulation and for a period after the procedure, the participant's VAS score will be recorded as the result of the procedure.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the template that must be unique within the protocol. This |
experimental-setup-id |
optional |
ID of the experimental setup configuration that will be selected when the procedure is performed. |
pressure-stimulate |
optional |
This attribute is the pressure that is applied during the static pressure stimulation [ double = Calculated(context) ]. |
stimulus-duration |
optional |
This attribute is the duration [s] of the constant pressure stimulation [ double = Calculated(context) ]. |
tail-duration |
optional |
This attribute is the duration after the cessation of the pressure stimulation in which the VAS score is recorded [ double = Calculated(context) ]. |
second-cuff |
optional |
Inflate the second cuff together with the primary cuff [ bool ]. If this attribute is set to true, the value of the primary cuff parameter is irrelevant. Placing the two cuffs adjacent to each other can be used to study spatial summation. |
primary-cuff |
optional |
Determines which cuff (1 or 2) will be used for the pressure stimulation [ int = Calculated(context) ]. |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
|
optional |
Defines the instruments involved in a procedure and specifies events that occur at the selection, start, completion, or abortion of the procedure. This element makes it possible to inject python code into a procedure that extends the base functionality that is provided by its LabBench implementation. |
|
optional |
Procedure properties can modify the selection and execution of procedures, data collection, and provide instructions to the operator and participants. |
|
|
optional |
The |
optional |
Place a condition on the inclusion of the procedure into a session. |
AlgometryStimulusRatingProcedureTemplate
The stimulus rating procedure provides a way to determine the Pain Detection Threshold (PDT), the Pain Tolerance Threshold (PTT), or both with an attached button.
The procedure is executed in the same way as the stimulus-response procedure and is defined by the same parameters, with the exception that it does not have a stop-mode parameter but instead has a measurement parameter.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the template that must be unique within the protocol. This |
experimental-setup-id |
optional |
ID of the experimental setup configuration that will be selected when the procedure is performed. |
second-cuff |
optional |
Inflate the second cuff together with the primary cuff [ bool ]. If this attribute is set to true, the value of the primary cuff parameter is irrelevant. Placing the two cuffs adjacent to each other can be used to study spatial summation. |
pressure-limit |
optional |
This attribute is the maximum pressure the device will deliver before it aborts the procedure [ double = Calculated(context) ]. The maximal pressure for the device is 100kPa. |
conditioning-time |
optional |
This attribute is the time from the procedure’s start until the pressure starts to increase linearly [ double = Calculated(context) ]. |
delta-pressure |
optional |
This attribute is the rate of increase [kPa/s] of the applied pressure [ double = Calculated(context) ]. |
primary-cuff |
required |
Determines which cuff (1 or 2) will be used for the pressure stimulation [ int = Calculated(context) ]. |
measurement |
required |
Determine the Pain Detection Threshold (PDT), Pain Tolerance Threshold (PTT), or both. If the PDT or PTT is to be determined, the participant must press the button when the threshold is reached. If both the PDT and PTT are to be determined, the participant must press the button when the PDT is reached and release it when the PTT is reached. |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
|
optional |
Defines the instruments involved in a procedure and specifies events that occur at the selection, start, completion, or abortion of the procedure. This element makes it possible to inject python code into a procedure that extends the base functionality that is provided by its LabBench implementation. |
|
optional |
Procedure properties can modify the selection and execution of procedures, data collection, and provide instructions to the operator and participants. |
|
|
optional |
The |
optional |
Place a condition on the inclusion of the procedure into a session. |
AlgometryConditionedPainRatingProcedureTemplate
The conditioned pain modulation rating procedure is analogous to the conditioned pain modulation procedure that uses a button instead of the VAS to determine pain detection threshold (PDT), pain tolerance threshold (PTT), or both.
The same parameters define the procedure as the conditioned pain modulation procedure, with the addition of the measurement parameter that defines how the button is used to determine PDT, PTT, or both.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the template that must be unique within the protocol. This |
experimental-setup-id |
optional |
ID of the experimental setup configuration that will be selected when the procedure is performed. |
conditional-pressure |
required |
This attribute is the pressure that will be applied with the conditioning cuff [ double = Calculated(context) ]. |
delta-conditional-pressure |
optional |
This attribute is the rate of increase [kPa/s] of the conditioning pressure [ double = Calculated(context) ]. |
conditioning-time |
optional |
This attribute is the time from the procedure’s start until the pressure starts to increase linearly [ double = Calculated(context) ]. |
pressure-limit |
optional |
This attribute is the maximum pressure the device will deliver before it aborts the procedure. The maximal pressure for the device is 100kPa. |
delta-pressure |
optional |
This attribute is the rate of increase [kPa/s] of the applied pressure [ double = Calculated(context) ]. |
primary-cuff |
required |
Determines which cuff (1 or 2) will be used for the pressure stimulation [ double = Calculated(context) ]. |
measurement |
required |
Determine the Pain Detection Threshold (PDT), Pain Tolerance Threshold (PTT), or both. If the PDT or PTT is to be determined, the participant must press the button when the threshold is reached. If both the PDT and PTT are to be determined, the participant must press the button when the PDT is reached and release it when the PTT is reached. |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
|
optional |
Defines the instruments involved in a procedure and specifies events that occur at the selection, start, completion, or abortion of the procedure. This element makes it possible to inject python code into a procedure that extends the base functionality that is provided by its LabBench implementation. |
|
optional |
Procedure properties can modify the selection and execution of procedures, data collection, and provide instructions to the operator and participants. |
|
|
optional |
The |
optional |
Place a condition on the inclusion of the procedure into a session. |
AlgometryArbitraryTemporalSummationProcedureTemplate
The arbitrary temporal summation procedure applies a series of rectangular pressure stimuli to one or both cuffs.
The participant is asked to rate the pain sensation of these stimuli on the VAS meter as soon as possible after the cessation of a pressure stimulus.
The VAS rating for a stimulus is recorded just before the next stimulus is given or would have been given if it had not been the last stimulus in the series. The arbitrary temporal summation procedure makes it possible to specify each stimulus in the series individually, and thus, each stimulus can have a different intensity and duration.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the template that must be unique within the protocol. This |
experimental-setup-id |
optional |
ID of the experimental setup configuration that will be selected when the procedure is performed. |
pressure-static |
optional |
This attribute is the pressure that will be applied in between the pressure stimuli [ double = Calculated(context) ]. This value is included as a slight static pressure between the stimuli can prevent the cuff from shifting during the procedure. |
second-cuff |
optional |
Inflate together with the primary cuff [ bool ]. If this attribute is set to true, the value of the primary cuff parameter is irrelevant. Placing the two cuffs adjacent to each other can be used to study spatial summation. |
primary-cuff |
required |
Determines which cuff [1 or 2] that will be used for the pressure stimulation [ int = Calculated(context) ]. |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
|
optional |
Defines the instruments involved in a procedure and specifies events that occur at the selection, start, completion, or abortion of the procedure. This element makes it possible to inject python code into a procedure that extends the base functionality that is provided by its LabBench implementation. |
|
optional |
Procedure properties can modify the selection and execution of procedures, data collection, and provide instructions to the operator and participants. |
|
|
optional |
The |
optional |
Place a condition on the inclusion of the procedure into a session. |
|
|
optional |
The |
TemporalSummationStimulusTemplate
Specification of a pressure stimulus in the series of pressure stimuli.
Attributes
| Name | Use | Description |
|---|---|---|
pressure |
required |
Stimulation pressure [ double = Calculated(context) ]. |
t-on |
required |
Duration of the stimulus [ double = Calculated(context) ] |
t-off |
required |
Pause between stimulations [ double = Calculated(context) ] |
ThresholdEstimationProcedureTemplate
The threshold estimation procedure is used to estimate thresholds/psychometric functions when LabBench controls the stimulus generation automatically. Estimation of these thresholds/psychometric functions consists of three parts: the stimulus modality, response task, and estimation algorithm:
- Stimulus modality: the type of stimulus, such as tactile, thermal, pressure, or electrical, presented to the participant and for which a threshold/psychometric function is estimated.
- Response task: the perception task that the participant is asked to perform when the stimulus is presented. The outcome of this task is either true: the participant performed the task correctly, or false: the the participant failed to perform the task correctly.
- Estimation algorithm: the adaptive algorithm by which the threshold/psychometric function is estimated. This algorithm uses the outcome of the response task (correct/incorrect) to update the estimate of the threshold or psychometric function for each stimulus presentation.
The thresholds or psychometric functions are estimated for an independent variable (x). An increase in x is assumed to increase the probability that the participant will correctly perform the response task. If there is an inverted relationship, the independent variable (x) inversion must be performed in the stimulus specification.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the template that must be unique within the protocol. This |
experimental-setup-id |
optional |
ID of the experimental setup configuration that will be selected when the procedure is performed. |
stimulus-update-rate |
required |
Update rate for stimulus generation [ int = Calculated(context) ]. |
trigger-update-rate |
optional |
Update rate for trigger generation [ int = Calculated(context) ]. If not defined, the stimulus generation update rate will be used. |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
|
optional |
Defines the instruments involved in a procedure and specifies events that occur at the selection, start, completion, or abortion of the procedure. This element makes it possible to inject python code into a procedure that extends the base functionality that is provided by its LabBench implementation. |
|
optional |
Procedure properties can modify the selection and execution of procedures, data collection, and provide instructions to the operator and participants. |
|
|
optional |
The |
optional |
Place a condition on the inclusion of the procedure into a session. |
|
1 |
This definition requires that exactly one item be provided and that it be chosen from a fixed set of mutually exclusive alternatives. Only one alternative may appear, and all other alternatives must be absent. No alternative is mandatory on its own, but the choice as a whole is required, meaning the container is invalid unless exactly one of the allowed options is specified. |
|
optional |
Configuration of procedurecomponents, which includes configuration of the stimulation, trigger, and sampling components that are used by the procedure. |
|
|
1 |
This definition requires that exactly one item be provided and that it be chosen from a fixed set of mutually exclusive alternatives. Only one alternative may appear, and all other alternatives must be absent. No alternative is mandatory on its own, but the choice as a whole is required, meaning the container is invalid unless exactly one of the allowed options is specified. |
optional |
Custom stimulation where the stimulation is implemented with calculated parameters that can either be a single-line Python statement or, more commonly, by calling a Python function in a script. |
|
optional |
A stimulus channel estimates the threshold or psychometric function of a single stimulus. This threshold or psychometric function is estimated with a dedicated estimation method (Psi-method, Up/Down method, and similar) that maintains its own state for the channel but uses the same response task to determine the relationship between a stimulus parameter (x) and the probabilistic behavioural response of the participants (i.e., whether they can perform the response task correctly). Once a threshold or psychometric function has been estimated, the result can be accessed by calculated parameters as |
|
|
optional |
The |
ManualYesNoResponseTemplate
In a Manual Yes/No response task, the experimenter asks the participant after each stimulation whether they felt the stimulus. This response is then entered into the algorithm manually by the experimenter. Consequently, the procedure will wait indefinitely until the participant has answered the experimenter.
Attributes
| Name | Use | Description |
|---|---|---|
instruction |
required |
Question that the experimenter must ask the participant that the participant must answer with either a Yes or No response [ string ]. |
YesNoResponseTemplate
In a Yes/No response task, the participant is asked to press the button each time a stimulus is felt. This response is timed, meaning that if the participant does not press the button before the next stimulus is given, then it will be assumed that the stimulus was not felt.
ForcedYesNoResponseTemplate
In the forced yes/no task, the stimulus is first presented to the participant, along with a cue that prompts the participant to attend to it.
Then a probe image is presented to the participant, with instructions to answer Yes or No to a stimulus quality; for example, if one or two stimuli could be felt, the participant presses one button for Yes and another for No. The task will wait indefinitely until the participant has answered the question.
This task is usually used for stimuli that are always felt but whose quality changes with increasing intensity. Examples of such stimuli are two-point stimuli or stimuli used to determine a just noticeable difference.
Attributes
| Name | Use | Description |
|---|---|---|
probe |
required |
Image that will be used to probe the participant for an answer to the Yes/No question [ Image = Calculated(context) ]. |
cue |
required |
Image that will be used to cue the participant to pay attention to the stimulus [ Image = Calculated(context) ]. |
display-duration |
optional |
The duration in milliseconds that the cue will be displayed to the participant [ int ]. |
display-interval |
optional |
The duration in milliseconds between the display of the cue and the display of the prompt [ int ]. The display-interval value must be greater than the display-duration value. |
pause |
optional |
The delay in milliseconds between when the participant answered the question and the next stimulus is presented [ int ]. |
yes-button |
required |
Button that the participant will use to indicate a Yes answer to the question [ Button ]. |
no-button |
required |
Button that the participant will use to indicate a No answer to the question [ Button ]. |
ManualIntervalResponseTemplate
In the Manual Interval Rating Task, the participant is asked to rate the stimuli's sensations on an interval rating scale by the experimenter. The participant provides this rating verbally, which the experimenter then manually enters into the algorithm. The response task will wait indefinitely until the experimenter has entered the participant's rating into the algorithm. If the participant rate exceeds the target, the response task is successful and returns True; otherwise, it returns False.
The Manual Interval Categorical Rating task is an example of a response task that enables determining the stimulus intensity required to evoke a supramaximal response, rather than determining the intensity required to evoke a threshold response, such as a perception or pain threshold.
Attributes
| Name | Use | Description |
|---|---|---|
instruction |
optional |
Question that the experimenter must ask to prompt the participant to rate the sensation on the interval rating scale [ string ]. |
target |
required |
Target rating for the response task [ int = Calculated(context) ]. |
minimum |
optional |
Minimum rating on the interval rating scale [ int ]. Default is 0. |
maximum |
optional |
Maximal rating on the interval rating scale [ int ]. Default is 10. |
IntervalResponseTemplate
In the Interval Rating Task, the participant is asked to rate the stimuli's sensations on an interval rating scale. If the participant rate exceeds the target, the response task is successful and returns True; otherwise, it returns False.
The Interval Rating task is an example of a response task that enables determining the stimulus intensity required to evoke a supramaximal response, rather than determining the intensity required to evoke a threshold response, such as a perception or pain threshold.
Attributes
| Name | Use | Description |
|---|---|---|
target |
required |
Target rating for the response task [ int = Calculated(context) ]. |
ManualCategoricalResponseTemplate
@Schema.Core.Procedures.Psychophysics.ThresholdEstimation.ResponseTasks.ManualCategoricalResponse.md
Attributes
| Name | Use | Description |
|---|---|---|
instruction |
optional |
Question that the experimenter must ask to prompt the participant to rate the sensation on the categorial rating scale [ string ]. |
target |
required |
Target rating for the response task [ int = Calculated(context) ]. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
ManualCategoryTemplate
In the Manual Categorial Rating Task, the participant is asked to rate the stimuli's sensations on a categorial rating scale by the experimenter. The participant provides this rating verbally, which the experimenter then manually enters into the algorithm. The response task will wait indefinitely until the experimenter has entered the participant 's rating into the algorithm. If the participant rate exceeds the target, the response task is successful and returns True; otherwise, it returns False.
The Manual Categorical Rating task is an example of a response task that enables determining the stimulus intensity required to evoke a supramaximal response, rather than determining the intensity required to evoke a threshold response, such as a perception or pain threshold.
Attributes
| Name | Use | Description |
|---|---|---|
text |
required |
Description of the category [ string. ] |
CategoricalResponseTemplate
In the Categorial Rating Task, the participant is asked to rate the stimuli's sensations on a categorial rating scale. If the participant rate exceeds the target, the response task is successful and returns True; otherwise, it returns False.
The Categorical Rating task is an example of a response task that enables determining the stimulus intensity required to evoke a supramaximal response, in contrast to determining the intensity required to evoke a threshold response, such as a perception or pain threshold.
Attributes
| Name | Use | Description |
|---|---|---|
target |
required |
Target rating for the response task [ int = Calculated(context) ]. |
RatioResponseTemplate
In the Ratio Rating Task, the participant is asked to rate the stimuli's sensations on a ratio rating scale/visual analogue scale. If the participant rate exceeds the target, the response task is successful and returns True; otherwise, it returns False.
The Ratio Rating task is an example of a response task that enables determining the stimulus intensity required to evoke a supramaximal response, rather than determining the intensity required to evoke a threshold response, such as a perception or pain threshold.
Attributes
| Name | Use | Description |
|---|---|---|
target |
required |
Target rating for the response task [ int = Calculated(context) ]. |
IntervalForcedChoiceResponseTemplate
In an interval forced choice response task, the participant is presented with N time intervals in which the stimulus is given in one of them. The participant is asked to select the interval at which the stimulus was felt. If the participant can feel the stimulus, they will select the correct interval; if they cannot, they will have a 1/N chance to select the correct interval.
Attributes
| Name | Use | Description |
|---|---|---|
probe |
required |
Image that will be used to probe the participant for an answer to which stimulus interval the stimulus was presented when the cue was shown[ Image = Calculated(context) ]. |
display-duration |
optional |
The duration in milliseconds that the cue will be displayed to the participant [ int ]. |
display-interval |
optional |
The duration in milliseconds between the display of cues or the prompt [ int ]. The display-interval value must be greater than the display-duration value. |
pause |
optional |
The delay in milliseconds between when the participant answered the question and the next stimulus is presented [ int ]. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
StimulusInterval
Configuration of a stimulus interval. Stimuli will be generated for each stimulus interval in the order they are defined; when the stimulus is generated, the cue for that stimulus interval will be shown to the participant.
For each trial, one stimulus interval will be randomly selected as the one in which the stimulus is to be present. For that interval, the stimulus intensity (x) will be set to the current intensity determined by the estimation algorithm; for all other intervals, the stimulus intensity (x) will be set to Imin for the stimulus channel.
For calculated parameters, the currently active stimulus interval and selected stimulus interval are also available as the StimulusInterval and SelectedStimulusInterval parameters, respectively. These parameters contain the stimulus interval IDs.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
ID of the stimulus interval [ string ]. |
image |
required |
Cue to be shown to participant in the stimulus interval [ Image = Calculated(context) ]. |
button |
required |
Button that the participant will use to indicate that the stimulus was present in the stimulus interval. |
AlternativeForcedChoiceResponseTemplate
In an alternative forced choice response task, the participant is presented with one stimulus randomly selected from a set of N stimulus alternatives. Once the stimulus is complete, the participant will be asked to choose the given stimulus from the set of stimulus alternatives. If the participant can feel the stimulus, they will select the correct one; if they cannot, they will have a 1/N chance to select the correct stimulus.
Attributes
| Name | Use | Description |
|---|---|---|
probe |
required |
Image that will be used to probe the participant for an answer to which stimulus alternative was presented when the cue was shown[ Image = Calculated(context) ]. |
cue |
required |
Image that will be used to cue the participant to pay attention to the stimulus [ Image = Calculated(context) ]. |
display-duration |
optional |
The duration in milliseconds that the cue will be displayed to the participant [ int ]. |
display-interval |
optional |
The duration in milliseconds between the display of the cue and the display of the prompt [ int ]. The display-interval value must be greater than the display-duration value. |
pause |
optional |
The delay in milliseconds between when the participant answered the question and the next stimulus is presented [ int ]. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
StimulusAlternativeTemplate
Configuration of a stimulus alternative where each is a different variant of the stimulus. For example, in a procedure that determines the just noticeable difference between three audible tones, there will be three different stimulus alternatives, for which either the first, middle, or last tone will be of a different intensity than the other tones.
For each trial, one stimulus alternative will be selected at random and presented to the participant. The selected one is available to calculated parameters in the StimulusAlternative parameter, whose value is the id attribute of the selected stimulus alternative.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Unique ID of the stimulus alternative [ string ]. |
button |
required |
Button that the participant will use to indicate if they felt this specific stimulus alternative. |
StimulusChannelTemplate
A stimulus channel estimates the threshold or psychometric function of a single stimulus. This threshold or psychometric function is estimated with a dedicated estimation method (Psi-method, Up/Down method, and similar) that maintains its own state for the channel but uses the same response task to determine the relationship between a stimulus parameter (x) and the probabilistic behavioural response of the participants (i.e., whether they can perform the response task correctly).
Once a threshold or psychometric function has been estimated, the result can be accessed by calculated parameters as [ProcedureID].[ChannelID].
Attributes
| Name | Use | Description |
|---|---|---|
Imin |
optional |
Minimal stimulus intensity for the channel [ double = Calculated(context) ]. |
Imax |
required |
Maximal stimulus intensity for the channel [ double = Calculated(context) ]. |
confidence-level |
optional |
Confidence level when plotting estimated parameters for psychometric functions (alpha, beta, etc) [ double = Calculated(context) ]. |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Catch trials are intermittent trials in which the stimulus is presented at an unequivocally subthreshold level, allowing the experimenter to verify attention. By comparing responses on these impossible trials to their known correct outcomes, catch trials provide direct empirical estimates of guess rates, helping distinguish genuine perceptual limits from non-sensory errors. |
|
1 |
This definition requires that exactly one item be provided and that it be chosen from a fixed set of mutually exclusive alternatives. Only one alternative may appear, and all other alternatives must be absent. No alternative is mandatory on its own, but the choice as a whole is required, meaning the container is invalid unless exactly one of the allowed options is specified. |
CatchTrialsTemplate
Catch trials are predefined control trials incorporated into an experimental protocol. These trials present either a stimulus with a known or obvious outcome or no stimulus, and serve to evaluate participant attention, task comprehension, and response compliance. Catch trials do not contribute to the primary experimental measurements.
Attributes
| Name | Use | Description |
|---|---|---|
order |
required |
Randomisation of the catch trial:
|
interval |
required |
The interval, block-size, or probability with which the catch trial is generated [ int ]. |
PsiAlgorithmTemplate
This method implements the Psi method of Kontsevich & Tyler (1999). The Psi method is a Bayesian adaptive procedure that maintains a full joint posterior distribution over the threshold and slope of the psychometric function, while holding the guess and lapse rates fixed.
On each trial, the algorithm evaluates a set of candidate stimulus intensities and, for each one, computes the expected reduction in entropy of the current posterior if that stimulus were presented. It then selects the stimulus level that maximizes expected information gain, presents it to the observer, records the binary response, and updates the posterior via Bayes� rule.
This iterative cycle - predict information gain => choose optimal stimulus => observe response => update posterior - allows the method to rapidly converge on precise estimates of threshold and slope with high efficiency compared to traditional staircases or other adaptive schemes.
Attributes
| Name | Use | Description |
|---|---|---|
number-of-trials |
required |
Number of trials that are performed with the algorithm [ int = Calculated(context) ]. |
Elements
| Name | Use | Description |
|---|---|---|
required |
The psychometric function that links stimulus intensity to the probability of a correct or “yes” response, providing a quantitative model of perceptual sensitivity. |
|
required |
The beta range specifies the set of slope values considered in the posterior distribution, constraining the possible steepnesses of the psychometric function that the algorithm can infer. |
|
required |
The alpha range defines the set of threshold values over which the algorithm computes and updates its posterior, effectively bounding the possible thresholds it can estimate. |
|
required |
The intensity range defines the allowable stimulus levels the algorithm can choose from on each trial when selecting the next, most informative stimulus. |
PsychometricFunction
Psychometric function.
Attributes
| Name | Use | Description |
|---|---|---|
alpha |
optional |
The alpha parameter of a psychometric function specifies its threshold, the stimulus intensity at which performance reaches a chosen criterion probability (i.e. 50% correct) [ double ]. |
beta |
optional |
The beta parameter of a psychometric function determines its slope, describing how rapidly response probability increases with stimulus intensity around the threshold [ double ]. |
lambda |
optional |
The lambda parameter of a psychometric function specifies the lapse rate, accounting for stimulus-independent errors by setting an upper performance bound below 100% [ double ]. |
gamma |
optional |
The gamma parameter of a psychometric function specifies the guess rate, representing the lower asymptote of performance due to chance-level responding. |
ArrayGeneratorTemplate
Generation of arrays.
Attributes
| Name | Use | Description |
|---|---|---|
type |
required |
Algorithm to use for the generation of values:
|
n |
optional |
Number of samples to generate [ double = Calculated(context) ]. Value will be rounded down to nearest integer. |
x0 |
optional |
Starting value for the generated values [ double = Calculated(context) ]. |
x1 |
optional |
End value for the generated values [ double = Calculated(context) ]. |
base |
optional |
Base value for logspace generated values [ double = Calculated(context) ]. |
value |
optional |
Value for array generated values [ double[] = Calculated(context) ]. |
UpDownAlgorithmTemplate
The up/down, also known as the staircase method, is an adaptive method that estimates a psychophysical threshold by increasing the intensity until the participant performs the response task correctly, then reversing the direction of intensity change and decreasing it until the participant fails to perform the response task correctly.
This pattern of increasing/decreasing the intensity until the participant either succeeds or fails the response task is repeated a set number of times. When complete, the algorithm finds the threshold as the average intensity at which the intensity change reversed, due to a change from failing (increasing threshold) to succeeding (decreasing threshold). The algorithm can be configured to either initially increase or decrease the intensity with the initial-direction attribute.
The step size of the intensity change can either be absolute or relative. If it is absolute, the step size is in the same unit as the intensity and changes the intensity by a fixed amount. If it is relative, its intensity changes by a given fraction of its current value. The step size can also be adaptive: initially higher to approach the threshold quickly, then decreasing with each reversal of the intensity change until a given maximal reduction is reached. When the step size is adaptive, the average will be weighted by the inverse of the step sizes.
Attributes
| Name | Use | Description |
|---|---|---|
reversal-rule |
optional |
The number of times the participants must either succeed or fail for the intensity change to change direction [int = Calculated(context)]. This attribute is used for both upward and downward directions unless either the |
up-rule |
optional |
The number of times the participants must succeed when the intensity is increased upward for the intensity change to change direction [int = Calculated(context)]. The default value for this attribute is one (1). |
down-rule |
optional |
The number of times the participants must fail when the intensity is decreased upward for the intensity change to change direction [int = Calculated(context)]. The default value for this attribute is one (1). |
step-size |
optional |
Will be used as the initial step size in both the up and down directions, unless the step-size-up or step-size-down is defined [double = Calculated(context)]. Default value is 0.1. |
step-size-up |
optional |
Will be used as the initial step size in the upward direction [double = Calculated(context)]. If it is undefined, the step-size attribute will be used instead as the initial step size for the up direction. |
step-size-down |
optional |
Will be used as the initial step size in the downward direction [double = Calculated(context)]. If it is undefined, the step-size attribute will be used instead as the initial step size for the downward direction. |
step-size-reduction |
optional |
Used to configure adaptive step sizes [ double = Calculated(context) ]. The step size after a reversal will be |
max-step-size-reduction |
optional |
The maximum by which step sizes will be reduced when adaptive step sizes are enabled by setting the |
step-size-type |
optional |
Type of step size: absolute, the step size is added or subtracted to the current intensity, or relative, the step size is relative to the current intensity. |
stop-rule |
required |
Number of reversals required before the algorithm is completed [ int = Calculated(context) ]. |
skip-rule |
optional |
The number of initial reversals that are skipped when calculating the threshold as the average of the intensity at the reversals [ int = Calculated(context) ]. Consequently, if this |
start-intensity |
required |
Initial intensity for the algorithm [ double = Calculated(context) ]. |
initial-direction |
optional |
Initial direction for the intensity change. |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Psychometric function. |
DiscreteUpDownAlgorithmTemplate
The up/down method, also known as the staircase method, is an adaptive method that estimates a psychophysical threshold by increasing the intensity until the participant performs the response task correctly, then reversing the direction of intensity change and decreasing it until the participant fails to perform the response task correctly. This discrete version of the method <discrete-up-down-method> is different from the continuous version of the method <up-down-method> in that stimulus intensities can only take on values from a discrete set of values instead of from a continuum of values between the minimum and maximum intensity values.
This pattern of increasing/decreasing the intensity until the participant either succeeds or fails the response task is repeated a set number of times. When complete, the algorithm finds the threshold as the average intensity at which the intensity change reverses, from failing (increasing threshold) to succeeding (decreasing threshold). The algorithm can be configured to either initially increase or decrease the intensity with the initial-direction attribute.
The index of the currently selected intensity is available to calculated parameters as the IntensityIndex variable.
Attributes
| Name | Use | Description |
|---|---|---|
stop-rule |
required |
Number of reversals required before the algorithm is completed [ int = Calculated(context) ]. |
initial-intensity |
required |
This attribute is used to select the initial intensity from the set of allowed intensities (‘intensities’) [ double = Calculated(context) ]. The initial intensity will be selected as the intensity in the set of allowed intensities closest to the value of this initial intensity attribute. If this attribute is not defined, the initial intensity will be set based on the initial direction. If the initial direction is upward, the smallest allowed intensity will be used; otherwise, the largest allowed intensity will be used. |
intensities |
required |
The discrete set of allowed stimulus intensities in the form of an array of doubles [ double[] = Calculated(context) ]. These values must be ordered from the smallest to the largest and must be within the bounds of the Imin and Imax attributes for the stimulus channel. |
initial-direction |
optional |
Initial direction for the intensity change. |
initial-step-size |
optional |
Sets the initial step size [ int = Calculated(context) ]. The initial step size can be set to a value larger than one (1) to initially rapidly approach the threshold. Once a reversal has occurred, the step size will be set to one (1). |
skip-rule |
optional |
The number of initial reversals that are skipped when calculating the threshold as the average of the intensity at the reversals [ int = Calculated(context) ]. Consequently, if this |
StimulusChannelConstructor
A stimulus channel estimates the threshold or psychometric function of a single stimulus. This threshold or psychometric function is estimated with a dedicated estimation method (Psi-method, Up/Down method, and similar) that maintains its own state for the channel but uses the same response task to determine the relationship between a stimulus parameter (x) and the probabilistic behavioural response of the participants (i.e., whether they can perform the response task correctly).
Once a threshold or psychometric function has been estimated, the result can be accessed by calculated parameters as [ProcedureID].[ChannelID].
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Unique ID of the stimulus channel [ string ]. |
name |
required |
Name of the channel [ string ]. |
Imin |
optional |
Minimal stimulus intensity for the channel [ double = Calculated(context) ]. |
Imax |
optional |
Maximal stimulus intensity for the channel [ double = Calculated(context) ]. |
confidence-level |
optional |
Confidence level when plotting estimated parameters for psychometric functions (alpha, beta, etc) [ double = Calculated(context) ]. |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Catch trials are intermittent trials in which the stimulus is presented at an unequivocally subthreshold level, allowing the experimenter to verify attention. By comparing responses on these impossible trials to their known correct outcomes, catch trials provide direct empirical estimates of guess rates, helping distinguish genuine perceptual limits from non-sensory errors. |
|
1 |
This definition requires that exactly one item be provided and that it be chosen from a fixed set of mutually exclusive alternatives. Only one alternative may appear, and all other alternatives must be absent. No alternative is mandatory on its own, but the choice as a whole is required, meaning the container is invalid unless exactly one of the allowed options is specified. |
|
optional |
Specifies a set of triggers to be generated. These triggers will all be generated with a given duration ( A trigger may generate a trigger on multiple digital outputs. Each output is specified with a nested |
|
optional |
Definition of a stimulus. |
StimulusChannelConstructorForeach
Use a foreach loop with a template variable list to generate stimulation channels from templates programmatically.
Attributes
| Name | Use | Description |
|---|---|---|
variable |
required |
Variable name [ string ]. The |
in |
required |
Name of the template variable list to iterate over [ string ]. The attribute is named |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
ColdPressorProcedureTemplate
The Cold Pressor procedure is a standardized experimental pain paradigm in which a participant immerses a hand or forearm in cold water to determine pain detection (PDT) and tolerance thresholds (PTT). The thresholds are measured as the time to pain onset and the time to pain tolerance.
The procedure can be configured to measure PDT, PTT, or both. When a single threshold is measured, time measurement is started with a button press when the hand is placed in the cold water and stopped with a second button press when the hand is withdrawn from the water. When both thresholds are measured, the second button press marks the PDT, and the third button press marks the PTT when the hand is withdrawn from the water.
While the procedure is designed for the Cold Pressor procedure, it can be used for any task for which detection and tolerance thresholds can be quantified by the time the participant experiences them. All instructions and descriptive texts can be customised to adapt the procedure for other tasks.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the template that must be unique within the protocol. This |
experimental-setup-id |
optional |
ID of the experimental setup configuration that will be selected when the procedure is performed. |
control |
optional |
Configuration of who marks the events with a press of a button: the operator or the participant. |
measurement |
required |
This attribute controls how the procedure interprets button presses and can be used to determine the PDT, PTT, or both:
For all measurements the first button press markes the start of the task. |
time-limit |
required |
Time limit for the procedure in seconds [ double = Calculated(context) ]. If the end event has been marked within this time limit, the procedure will end automatically, and the participant will be marked as a non-responder. |
button |
required |
Configuration of the button used to mark events during the procedure. |
ready-instruction |
optional |
Instructions to be used when the procedure is ready to run [ dynamic procedure ]. The default text for this instruction is "Procedure is ready to run". |
completed-instruction |
optional |
The default text for this instruction is "Procedure is completed". |
pending-instruction |
optional |
Instructions to be used when the procedure is running and waiting for the first event to be marked [ dynamic string ]. For the cold-pressor procedure, the first event is when the participant’s hand is placed in the water. The default text for this instruction is "Press the button when the hand is placed in the water". |
pain-instruction |
optional |
Instructions to be used when determining the pain detection threshold (PDT) [ dynamic string ]. This instruction applies to PDT and BOTH measurements. The default text for this instruction is "Press the button when pain is felt". |
completion-instruction |
optional |
Instructions to be used for the final event [ dynamic string ]. For the cold-pressor procedure, this event is the withdrawal of the hand from the water. The default text for this instruction is "Press the button when the hand is withdrawn from the water". |
pdt-label |
optional |
Label to be used for the PDT measurement [ dynamic string ]. The default value is cold pain detection threshold (CPD). |
ptt-label |
optional |
Label to be used for the PTT measurement [ dynamic string ]. The default value is cold pain tolerance threshold (CPT) |
non-responder-label |
optional |
Description of non-responders [ dynamic string ]. |
responder-label |
optional |
Description of responders [ dynamic string ]. |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
|
optional |
Defines the instruments involved in a procedure and specifies events that occur at the selection, start, completion, or abortion of the procedure. This element makes it possible to inject python code into a procedure that extends the base functionality that is provided by its LabBench implementation. |
|
optional |
Procedure properties can modify the selection and execution of procedures, data collection, and provide instructions to the operator and participants. |
|
|
optional |
The |
optional |
Place a condition on the inclusion of the procedure into a session. |
ManualThresholdEstimationProcedureTemplate
The manual threshold estimation procedure is used to estimate thresholds/psychometric functions when LabBench cannot control the stimulus, and instead, the experimenter must manually apply the stimulus to the participant. Estimation of these thresholds/psychometric functions consists of two parts: response task and estimation algorithm:
- Response task: the perception task that the participant is asked to perform when the stimulus is presented. The outcome of this task is either correct: the participant perceived the stimulus correctly, or incorrect: the stimulus intensity was too low, and the participant failed to perceive the stimulus correctly.
- Estimation algorithm: the adaptive algorithm by which the threshold/psychometric function is estimated. This algorithm uses the outcome of the response task (correct/incorrect) to update the estimate of the threshold or psychometric function for each stimulus presentation.
The stimulus is defined by the nature of the questions asked in the response task. The thresholds or psychometric functions are estimated for an independent variable (x). An increase in x is assumed to increase the probability that the participant will correctly perform the response task.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the template that must be unique within the protocol. This |
experimental-setup-id |
optional |
ID of the experimental setup configuration that will be selected when the procedure is performed. |
stimulus-unit |
required |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
|
optional |
Defines the instruments involved in a procedure and specifies events that occur at the selection, start, completion, or abortion of the procedure. This element makes it possible to inject python code into a procedure that extends the base functionality that is provided by its LabBench implementation. |
|
optional |
Procedure properties can modify the selection and execution of procedures, data collection, and provide instructions to the operator and participants. |
|
|
optional |
The |
optional |
Place a condition on the inclusion of the procedure into a session. |
|
optional |
The procedure instructs the experimenter which stimulus intensity to apply to the participant for each iteration of the estimation. For specific mechanical stimulators, there can be an offset between the scale that the experimenter uses to set the stimulus intensity and the actual intensity given by the stimulator to the participant. For example, when a custom-made two-point discriminator is made from a caliper, there might be a constant offset between the distance indicated on the caliper scale and the distance between the tips of the custom-made prongs attached to the caliper. The intensity-transformation allows the intensity displayed to the experimenter to be linearly transformed before it is shown to the experimenter, meaning that the experimenter will not need to apply this transformation mentally while following the procedure’s instructions. |
|
optional |
A catch trial is a trial in which no stimulus or the equivalent of no stimulus is presented.It is included to estimate the participant’s baseline tendency to respond positively without a stimulus. |
|
1 |
This definition requires that exactly one item be provided and that it be chosen from a fixed set of mutually exclusive alternatives. Only one alternative may appear, and all other alternatives must be absent. No alternative is mandatory on its own, but the choice as a whole is required, meaning the container is invalid unless exactly one of the allowed options is specified. |
|
|
1 |
This definition requires that exactly one item be provided and that it be chosen from a fixed set of mutually exclusive alternatives. Only one alternative may appear, and all other alternatives must be absent. No alternative is mandatory on its own, but the choice as a whole is required, meaning the container is invalid unless exactly one of the allowed options is specified. |
Transform
The procedure instructs the experimenter which stimulus intensity to apply to the participant for each iteration of the estimation.
For specific mechanical stimulators, there can be an offset between the scale that the experimenter uses to set the stimulus intensity and the actual intensity given by the stimulator to the participant. For example, when a custom-made two-point discriminator is made from a caliper, there might be a constant offset between the distance indicated on the caliper scale and the distance between the tips of the custom-made prongs attached to the caliper.
The intensity-transformation allows the intensity displayed to the experimenter to be linearly transformed before it is shown to the experimenter, meaning that the experimenter will not need to apply this transformation mentally while following the procedure's instructions.
Attributes
| Name | Use | Description |
|---|---|---|
a |
optional |
Slope (a) for the linear intensity transformation (y = ax + b) [ double ]. |
b |
optional |
Offset (b) for the linear intensity transformation (y = ax + b) [ double ]. |
ManualCatchTrialsTemplate
A catch trial is a trial in which no stimulus or the equivalent of no stimulus is presented.It is included to estimate the participant's baseline tendency to respond positively without a stimulus.
Attributes
| Name | Use | Description |
|---|---|---|
order |
required |
Randomisation of the catch trial:
|
interval |
required |
The interval, block-size, or probability with which the catch trial is generated [ int ]. |
image |
optional |
The image that is used to instruct the operator to perform a catch trial [ image = Calculated(context) ] |
instruction |
optional |
The instruction used to inform the operator to perform a catch trial [ dynamic string ] |
ManualPsiAlgorithmTemplate
The Psi Method, developed by Lenny Kontsevich and Christopher Tyler (1999), is a Bayesian adaptive psychometric procedure used to estimate perception thresholds and the shape of the psychometric function (like slope, lapse rate, etc.). It is more advanced than up/down staircases and offers greater efficiency and precision. The algorithm aims to estimate the full psychometric function for the perception of a stimulus instead of only determining a threshold. At each trial in the algorithm, a posterior probability distribution is maintained for the unknown parameters of the psychometric function (alpha, beta).
At each trial, the method will:
- The posterior probability distributions for correct and incorrect results are calculated based on Bayes's Theorem from the a priori probability distribution (the posterior probability distribution from the previous step in the algorithm).
- Determine the optimal stimulus intensity that reveals the most information on the unknown parameters of the psychometric function. This optimal procedure intensity is determined by minimizing the entropy based on Shannon entropy (H) calculated from the posterior probability distributions that will result from both a correct and incorrect response.
- The response task (Yes/No, One Interval Forced Choice, or Two Interval Forced Choice) procedures the optimal stimulus intensity.
- Depending on the participant's response to the response task, the posterior probability distribution for either the correct or incorrect response is selected as the a priori probability distribution for the next step in the algorithm.
Consequently, the algorithm will iteratively update its information on the most probable psychometric function. The algorithm is set to perform a fixed set of steps; thus, the execution time is known and fixed, in contrast to the Up/Down algorithm, whose execution time depends on the participant's responses.
Attributes
| Name | Use | Description |
|---|---|---|
intensities |
required |
Stimulation intensities [ double[] = Calculated(context) ]. |
intensity-labels |
optional |
When specified, labels provided by this attribute will be displayed instead of intensities [ string[] = Calculated(context) ]. The list of labels specified must have the same length as the list of intensities. |
number-of-trials |
required |
Number of stimuli that will be presented to the participant [ int = Calculated(context) ]. |
Elements
| Name | Use | Description |
|---|---|---|
|
1 |
This definition requires that exactly one item be provided and that it be chosen from a fixed set of mutually exclusive alternatives. Only one alternative may appear, and all other alternatives must be absent. No alternative is mandatory on its own, but the choice as a whole is required, meaning the container is invalid unless exactly one of the allowed options is specified. |
required |
Range of beta parameters. |
|
required |
Range of alpha parameters. |
Gumbel
Gumbel Psychometric Function
Attributes
| Name | Use | Description |
|---|---|---|
alpha |
optional |
The alpha parameter of a psychometric function specifies its threshold, the stimulus intensity at which performance reaches a chosen criterion probability (i.e. 50% correct) [ double ]. |
beta |
optional |
The beta parameter of a psychometric function determines its slope, describing how rapidly response probability increases with stimulus intensity around the threshold [ double ]. |
lambda |
optional |
The lambda parameter of a psychometric function specifies the lapse rate, accounting for stimulus-independent errors by setting an upper performance bound below 100% [ double ]. |
gamma |
optional |
The gamma parameter of a psychometric function specifies the guess rate, representing the lower asymptote of performance due to chance-level responding. |
HyperbolicSecant
Hyperbolic Secant Psychometric Function
Attributes
| Name | Use | Description |
|---|---|---|
alpha |
optional |
The alpha parameter of a psychometric function specifies its threshold, the stimulus intensity at which performance reaches a chosen criterion probability (i.e. 50% correct) [ double ]. |
beta |
optional |
The beta parameter of a psychometric function determines its slope, describing how rapidly response probability increases with stimulus intensity around the threshold [ double ]. |
lambda |
optional |
The lambda parameter of a psychometric function specifies the lapse rate, accounting for stimulus-independent errors by setting an upper performance bound below 100% [ double ]. |
gamma |
optional |
The gamma parameter of a psychometric function specifies the guess rate, representing the lower asymptote of performance due to chance-level responding. |
Logistic
Logistic Psychometric Function
Attributes
| Name | Use | Description |
|---|---|---|
alpha |
optional |
The alpha parameter of a psychometric function specifies its threshold, the stimulus intensity at which performance reaches a chosen criterion probability (i.e. 50% correct) [ double ]. |
beta |
optional |
The beta parameter of a psychometric function determines its slope, describing how rapidly response probability increases with stimulus intensity around the threshold [ double ]. |
lambda |
optional |
The lambda parameter of a psychometric function specifies the lapse rate, accounting for stimulus-independent errors by setting an upper performance bound below 100% [ double ]. |
gamma |
optional |
The gamma parameter of a psychometric function specifies the guess rate, representing the lower asymptote of performance due to chance-level responding. |
LogQuick
Log-Quick Psychometric Function
Attributes
| Name | Use | Description |
|---|---|---|
alpha |
optional |
The alpha parameter of a psychometric function specifies its threshold, the stimulus intensity at which performance reaches a chosen criterion probability (i.e. 50% correct) [ double ]. |
beta |
optional |
The beta parameter of a psychometric function determines its slope, describing how rapidly response probability increases with stimulus intensity around the threshold [ double ]. |
lambda |
optional |
The lambda parameter of a psychometric function specifies the lapse rate, accounting for stimulus-independent errors by setting an upper performance bound below 100% [ double ]. |
gamma |
optional |
The gamma parameter of a psychometric function specifies the guess rate, representing the lower asymptote of performance due to chance-level responding. |
Normal
Normal Psychometric Function
Attributes
| Name | Use | Description |
|---|---|---|
alpha |
optional |
The alpha parameter of a psychometric function specifies its threshold, the stimulus intensity at which performance reaches a chosen criterion probability (i.e. 50% correct) [ double ]. |
beta |
optional |
The beta parameter of a psychometric function determines its slope, describing how rapidly response probability increases with stimulus intensity around the threshold [ double ]. |
lambda |
optional |
The lambda parameter of a psychometric function specifies the lapse rate, accounting for stimulus-independent errors by setting an upper performance bound below 100% [ double ]. |
gamma |
optional |
The gamma parameter of a psychometric function specifies the guess rate, representing the lower asymptote of performance due to chance-level responding. |
Quick
Quick Psychometric Function
Attributes
| Name | Use | Description |
|---|---|---|
alpha |
optional |
The alpha parameter of a psychometric function specifies its threshold, the stimulus intensity at which performance reaches a chosen criterion probability (i.e. 50% correct) [ double ]. |
beta |
optional |
The beta parameter of a psychometric function determines its slope, describing how rapidly response probability increases with stimulus intensity around the threshold [ double ]. |
lambda |
optional |
The lambda parameter of a psychometric function specifies the lapse rate, accounting for stimulus-independent errors by setting an upper performance bound below 100% [ double ]. |
gamma |
optional |
The gamma parameter of a psychometric function specifies the guess rate, representing the lower asymptote of performance due to chance-level responding. |
Weibull
Weibull Psychometric Function
Attributes
| Name | Use | Description |
|---|---|---|
alpha |
optional |
The alpha parameter of a psychometric function specifies its threshold, the stimulus intensity at which performance reaches a chosen criterion probability (i.e. 50% correct) [ double ]. |
beta |
optional |
The beta parameter of a psychometric function determines its slope, describing how rapidly response probability increases with stimulus intensity around the threshold [ double ]. |
lambda |
optional |
The lambda parameter of a psychometric function specifies the lapse rate, accounting for stimulus-independent errors by setting an upper performance bound below 100% [ double ]. |
gamma |
optional |
The gamma parameter of a psychometric function specifies the guess rate, representing the lower asymptote of performance due to chance-level responding. |
ManualUpDownAlgorithmTemplate
The up/down algorithm, also known as the staircase method, is an adaptive method for estimating psychophysical minimal intensity (threshold) at which a participant perceives a stimulus with 50% reliability. The algorithm adjusts the intensity based on the participant's response; if the response is correct, the intensity is decreased (the stimulus becomes harder to perceive); if it is incorrect, the intensity is increased (the stimulus becomes easier to perceive).
The algorithm will initially either increase (initial-direction="increasing") or decrease (initial-direction="decreasing") the intensity from the lowest or highest possible intensity, respectively. It will continue to do so until the participant answers correctly or incorrectly, depending on the direction of intensity change, after which the direction of intensity change is reversed. At each reversal, the intensity is stored, and the threshold is calculated as the average of these intensities where the direction of intensity change was reversed.
Attributes
| Name | Use | Description |
|---|---|---|
intensities |
required |
Stimulation intensities [ double[] = Calculated(context) ]. |
intensity-labels |
optional |
When specified, labels provided by this attribute will be displayed instead of intensities [ string[] = Calculated(context) ]. The list of labels specified must have the same length as the list of intensities. |
stop-rule |
required |
Number of intensity revarsel that must occur before the algorithm terminated [ int = Calculated(context) ]. |
initial-direction |
optional |
Initial direction of the intensity change [ increasing or decreasing ]. If not specified it is set to increasing. |
initial-step-size |
optional |
Initial step size [ int = Calculated(context) ]. Once a intensity reversal have occured the step size will be set to one (1). |
skip-rule |
optional |
Number of initial intensity reversal that will be discarded in the threshold calculation [ int = Calculated(context) ]. If not specified this attribute is set to zero. |
ManualYesNoTaskTemplate
A Yes/No response task can be performed when the stimulus can elicit a positive response (Yes) or negative response (No). It is performed by asking the participant a question. For example, for a two-point discrimination procedure, "How many points did you feel touching the skin?" to which the participant can answer either "One" or "Two". In this example, if the participant answers Two, they correctly perceive the stimulus by answering positively.
Attributes
| Name | Use | Description |
|---|---|---|
question |
required |
The question about the stimulus that the participants is required to answer [ dynamic string ]. |
task-illustration-image |
required |
The image that is used to illustrate the stimulation task for the operator [ image = Calculated(context) ] |
positive-answer |
required |
The expected answer for positive responses [ dynamic string ]. |
negative-answer |
required |
The expected answer for negative responses [ dynamic string ]. |
ManualTwoIntervalForcedChoiceTaskTemplate
In a two-interval forced-choice task, the stimulus is presented in one of two time intervals. The participant is then asked to answer in which time interval the stimulus was presented. If the intensity makes it possible for the participant to perceive the stimulus, they will choose the correct interval. However, if the intensity is too low to be perceived, the participant will be forced to answer and will thus have a 50% chance of answering correctly. Consequently, the two-interval forced choice task is usually used with the Psi-Method, which can estimate psychometric functions for which the guess rate (gamma) is 50%.
Attributes
| Name | Use | Description |
|---|---|---|
question |
required |
The question about the stimulus that the participants is required to answer [ dynamic string ]. |
no-stimulus-image |
required |
Image used to illustrate an interval where no stimulus should be presented [ image = Calculated(context) ]. |
stimulus-image |
required |
Image used to illustrate an interval where a stimulus should be presented [ image = Calculated(context) ]. |
interval-a |
required |
Name of interval A [ dynamic string ]. |
interval-b |
required |
Name of interval B [ dynamic string ]. |
ManualOneIntervalForcedChoiceTaskTemplate
In a one-interval forced-choice task, the participant is asked to choose between two alternatives based on the stimulus presented. If the intensity makes it possible for the participant to perceive the stimulus, they will choose the correct alternative. However, if the intensity is too low to be perceived, the participant will be forced to answer and will thus have a 50% chance of answering correctly. Consequently, the one-interval forced choice task is usually used with the Psi-Method, which can estimate psychometric functions for which the guess rate (gamma) is 50%.
Attributes
| Name | Use | Description |
|---|---|---|
question |
required |
The question about the stimulus that the participants is required to answer [ dynamic string ]. |
alternative-a-image |
required |
Image used to demonstrate alternative A to the operator [ image = Calculated(context) ]. |
alternative-b-image |
required |
Image used to demonstrate alternative B to the operator [ image = Calculated(context) ]. |
alternative-a |
required |
Expected response when the participant can perceive alternative A [ dynamic string ]. |
alternative-b |
required |
Expected response when the participant can perceive alternative B [ dynamic string ]. |
ResponseRecordingProcedureTemplate
The response recording procedure allows for the collection of psychophysiological ratings over a specified time period or until the experimenter indicates a particular event. During this process, ratings can be recorded while also capturing a set of signals and/or marking events with predefined markers.
To function, the procedure must be assigned a Scales instrument in the device-mapping element of the experimental setup. The number and types of psychophysical ratings that are collected by the procedure are defined by the psychophysical rating scales that are defined in the Scales instrument.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the template that must be unique within the protocol. This |
experimental-setup-id |
optional |
ID of the experimental setup configuration that will be selected when the procedure is performed. |
duration |
required |
Sample duration for the response recoding [ double = Calculated(context) ]. |
sample-rate |
required |
Sample rate for the response recording [ double = Calculated (context) ]. This sample rate is used both for the psychophysical responses and the defined signals if any. |
response-weight |
optional |
Weight given to the psychophysical ratings in the user interface [ int ]. Default value is 1. |
signal-weight |
optional |
Weight given to the recorded signals in the user interface [ int ]. Default value is 0. |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
|
optional |
Defines the instruments involved in a procedure and specifies events that occur at the selection, start, completion, or abortion of the procedure. This element makes it possible to inject python code into a procedure that extends the base functionality that is provided by its LabBench implementation. |
|
optional |
Procedure properties can modify the selection and execution of procedures, data collection, and provide instructions to the operator and participants. |
|
|
optional |
The |
optional |
Place a condition on the inclusion of the procedure into a session. |
|
optional |
Used to define the markers that an experimenter can use to mark events while the procedure is running. Events could be events such as a pain detection or a pain tolerance threshold. Events are organised into event groups, where only one event group can be active at any time. When the experimenter marks an event, then the marker can be configured to activate another event group. Consequently, this can be used to define the sequential logical flow of events, such as enforcing that a pain detection threshold is always before a pain tolerance threshold. When the procedure is started, the first defined event group will be active. |
|
optional |
Defines the signals that will be sampled simultaneously with the collection of psychophysiological ratings and the script that will be called for each recording time to sample the signals. |
EventMarkerCollectionTemplate
Used to define the markers that an experimenter can use to mark events while the procedure is running. Events could be events such as a pain detection or a pain tolerance threshold. Events are organised into event groups, where only one event group can be active at any time. When the experimenter marks an event, then the marker can be configured to activate another event group. Consequently, this can be used to define the sequential logical flow of events, such as enforcing that a pain detection threshold is always before a pain tolerance threshold. When the procedure is started, the first defined event group will be active.
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
EventMarkerGroupTemplate
Defines a group of events that are active simultaneously.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Unique identifier for the event group [ string ]. This identifier is used by event markers to identity the next active event group. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
EventMarkerTemplate
Defines a marker for an event.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Unique identifier for the event marker [ string ]. |
name |
optional |
Name of the event [ dynamic string ]. If not specified the ID of the event will be used as its name. |
complete |
optional |
Complete the procedure when the event is marked [ Boolean ]. Default value is false. |
next-group |
optional |
Event group to activate when the event is marked [ string ]. This must be an ID of an event group, if no next-group is specified the currently active event group will remain active. |
SignalGroupCollectionTemplate
Defines the signals that will be sampled simultaneously with the collection of psychophysiological ratings and the script that will be called for each recording time to sample the signals.
Attributes
| Name | Use | Description |
|---|---|---|
sample |
required |
This attribute specifies the script that will be used to sample the signals [ [double] = Calculated(context) ]. The script must return a list of the same length as the number of defined signals and in the same order. |
min |
required |
Global minimum value for the sampled signals [ double = Calculated(context) ]. |
max |
required |
Global maximum value for the sampled signals [ double = Calculated(context) ]. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
SignalDeclarationTemplate
Definition of a signal that will be sampled in the sample script that is defined as an attribute on the <signals> element. This sample script must return a list of values with the same length as the number of signals defined in the signals element.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the signal [ string ]. This identifier must be unique for all the defined signals. |
name |
required |
Name for the signal [ dynamic string ]. If no name is provided the ID of the signal will be used as its name. |
type |
optional |
Type of signal that is sampled. |
unit |
optional |
Unit of signal that is sampled [ string ]. |
StimulusPresentationProcedureTemplate
The Stimulus Presentation procedure allows a participant to become familiar with a stimulus and to rate its sensation on a psychophysical rating scale.
The procedure can also be used to manually find thresholds, as the last tested intensity is available
in the calculated parameter [ProcedureID].Intensity upon completion.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the template that must be unique within the protocol. This |
experimental-setup-id |
optional |
ID of the experimental setup configuration that will be selected when the procedure is performed. |
stimulus-update-rate |
required |
The update rate for the generated stimuli [ int = Calculated(context) ]. This update rate must be supported by the device that will deliver the stimuli. |
trigger-update-rate |
optional |
The update rate for the generated triggers [ int = Calculated(context) ]. This update rate must be supported by the device that will deliver the stimuli, and if it is unspecified, the stimulus update rate will be used as the update rate for the trigger generation. |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
|
optional |
Defines the instruments involved in a procedure and specifies events that occur at the selection, start, completion, or abortion of the procedure. This element makes it possible to inject python code into a procedure that extends the base functionality that is provided by its LabBench implementation. |
|
optional |
Procedure properties can modify the selection and execution of procedures, data collection, and provide instructions to the operator and participants. |
|
|
optional |
The |
optional |
Place a condition on the inclusion of the procedure into a session. |
|
optional |
Configuration of procedurecomponents, which includes configuration of the stimulation, trigger, and sampling components that are used by the procedure. |
|
required |
Specification of the intensities for the stimuli that the experimenter can choose during a session. |
|
optional |
This element defines the response engine used by a procedure to collect behavioural or rating-based responses from the participant. The response engine supports multiple response modalities, including:
If no response collection mode is specified, the response engine is disabled and no response device is required for the procedure. |
|
optional |
Trigger generation. |
|
optional |
Stimulation configuration that can either be delivered with a Stimulator instrument, or with any combination of instruments when the ` |
ResponseEngineTemplate
This element defines the response engine used by a procedure to collect behavioural or rating-based responses from the participant.
The response engine supports multiple response modalities, including:
- Binary responses (yes/no, button presses)
- Numerical ratings (interval scales)
- Ratio ratings (continuous scales)
- Categorical ratings (ordinal scales)
If no response collection mode is specified, the response engine is disabled and no response device is required for the procedure.
Attributes
| Name | Use | Description |
|---|---|---|
response-collection |
optional |
Type of response collection that will be performed:
|
TriggerEngineTemplate
Trigger generation.
Attributes
| Name | Use | Description |
|---|---|---|
start-triggger |
optional |
Timing or trigger source:
|
Elements
| Name | Use | Description |
|---|---|---|
1 |
This definition requires that exactly one item be provided and that it be chosen from a fixed set of mutually exclusive alternatives. Only one alternative may appear, and all other alternatives must be absent. No alternative is mandatory on its own, but the choice as a whole is required, meaning the container is invalid unless exactly one of the allowed options is specified. |
StimulationEngineTemplate
Stimulation configuration that can either be delivered with a Stimulator instrument, or with
any combination of instruments when the `
Attributes
| Name | Use | Description |
|---|---|---|
start-trigger |
optional |
Timing or trigger source:
|
Elements
| Name | Use | Description |
|---|---|---|
optional |
Custom stimulation where the stimulation is implemented with calculated parameters that can either be a single-line Python statement or, more commonly, by calling a Python function in a script. |
|
optional |
Definition of a stimulus. |
ThermalRatedStimulationProcedureTemplate
The Thermal Rated Stimulation procedure allows a thermal stimulus to be delivered to a participant while simultaneously recording the participant's psychophysical rating of the sensation.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the template that must be unique within the protocol. This |
experimental-setup-id |
optional |
ID of the experimental setup configuration that will be selected when the procedure is performed. |
response-collection |
optional |
Type of response collection that will be performed:
|
sample-times |
optional |
Must return a list of the times the participant’s response should be sampled [ double[] = Calculated(context) ]. This attribute is only used if the |
intensity |
required |
Intensity ( |
minimal-display-temperature |
optional |
Used for displaying the thermal stimulus; it is the lower bound for the stimulation temperature [ double = Calculated(context) ]. |
maximal-display-temperature |
optional |
Used for displaying the thermal stimulus; it is the upper bound for the stimulation temperature [ double = Calculated(context) ]. |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
|
optional |
Defines the instruments involved in a procedure and specifies events that occur at the selection, start, completion, or abortion of the procedure. This element makes it possible to inject python code into a procedure that extends the base functionality that is provided by its LabBench implementation. |
|
optional |
Procedure properties can modify the selection and execution of procedures, data collection, and provide instructions to the operator and participants. |
|
|
optional |
The |
optional |
Place a condition on the inclusion of the procedure into a session. |
|
optional |
Definition of a stimulus. |
ThermalThresholdEstimationProcedureTemplate
The Thermal Threshold Estimation Procedure determines cold and heat thresholds by decreasing/increasing the temperature until the participants press a button. The temperature at the time of the button press is taken as the temperature threshold.
This procedure can be repeated a set number of times, and the threshold is taken as an average of the repeated threshold measurements.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the template that must be unique within the protocol. This |
experimental-setup-id |
optional |
ID of the experimental setup configuration that will be selected when the procedure is performed. |
threshold-type |
required |
Configuration of the thermal threshold to be determined. |
stimulation-rate |
required |
The rate of temperature change for the determination of thresholds [ double = Calculated(context) ]. |
maximal-temperature |
required |
Maximal temperature for the thermal stimulus [ double = Calculated(context) ]. Please note that this temperature is higher than the |
return-rate |
required |
Rate by which the temperature is returned to the neutral temperature once the threshold has been reached [ double = Calculated(context) ]. |
initial-stimulation-delay |
required |
Delay from start of the procedure in seconds to the start of the first threshold determination [ double = Calculated(context) ]. |
stimulation-interval |
required |
Interval between threshold determinations in seconds [ double = Calculated(context) ]. |
repetitions |
required |
Number of times the threshold is determined [ int = Calculated(context) ]. |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
|
optional |
Defines the instruments involved in a procedure and specifies events that occur at the selection, start, completion, or abortion of the procedure. This element makes it possible to inject python code into a procedure that extends the base functionality that is provided by its LabBench implementation. |
|
optional |
Procedure properties can modify the selection and execution of procedures, data collection, and provide instructions to the operator and participants. |
|
|
optional |
The |
optional |
Place a condition on the inclusion of the procedure into a session. |
ProtocolAssetTemplates
Definition of assets that will be added to the protocol assets.
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
Asset
File that is included in the Experiment Definition File and which can be referred to by its id.
Attributes
| Name | Use | Description |
|---|---|---|
id |
optional |
Identification of the file asset [ string ]. If this attribute is not set, the |
file |
required |
File to include [ string ]. If the |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Localisation of the file asset when multiple languages are defined in a |
|
optional |
Zip files can be a convenient way to bundle content, such as images for visual stimuli, without requiring each file to be declared as an individual However, many workflows for creating visual stimuli, such as File aliases provide a mechanism for renaming zip file entries without manually or scriptually renaming the files after they are created using their chosen image generation workflow. When a file is looked up in a zip file asset, the lookup mechanism will first check if there is an alias for the given |
AssetLocalizer
Localisation of the file asset when multiple languages are defined in a <languages> element in the protocol.
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
AssetLocalized
Files can be localized, meaning that if multiple languages are defined in the <languages> element
in the protocol, different files can be used depending on the selected language when a session starts.
When an asset is loaded, it first checks whether there is a localized file for the active language code.
If a localized file is found, then that file will be used instead of the file specified by the file
attribute on the <file-asset> element.
Attributes
| Name | Use | Description |
|---|---|---|
code |
required |
This attribute is the language code (ISO 639) for which the asset is localized [ string ]. |
file |
required |
File to use for the localization [ string ]. |
AliasManager
Zip files can be a convenient way to bundle content, such as images for visual stimuli, without requiring each file to be declared as an individual <file-asset>. Once included files within the archive can be accessed with the dot notation [AssetID].[FileNameWithoutExtension].
However, many workflows for creating visual stimuli, such as Open Office Impress → PDF → pandoc → png files, result in non-semantic filenames such as slide-1, slide-2, etc.
File aliases provide a mechanism for renaming zip file entries without manually or scriptually renaming the files after they are created using their chosen image generation workflow. When a file is looked up in a zip file asset, the lookup mechanism will first check if there is an alias for the given id of the asset. If there is, then the id will be replaced internally in the file asset manager by its alias. Consequently, it will then be possible to refer to a zip file entry as ParticipantInstructions instead of a non-semantic name such as slide-3.
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
Alias
Definition of an alias for a file name used within zip archives.
Attributes
| Name | Use | Description |
|---|---|---|
replace |
required |
Name of the file within the zip archive [ string ]. The filename must be without its extension and path. |
with |
required |
Alias to replace the filename with one that can be used in the rest of the protocol [ string ]. |
ProcedureCollection
The <procedures> element defines the procedures of the protocol. These can be directly defined in this element or constructed from procedure templates defined in the <templates> element.
Elements
QuestionnaireProcedure
The questionnaire procedure allows either the operator or the participant to answer a set of questions. The questionnaire can consist of the following types of questions:
- Boolean Questions: questions that have mutually exclusive binary answer, which usually consists of answering a true or false statement, but can also consist of dichotomies such as child/adult.
- Numerical Questions: are questions that can be answered with numerical answers.
- Text Questions: are questions that can be answered with either free or validated text.
- Likert Questions: A scale that captures how strongly someone agrees, disagrees, or feels about a statement using a fixed set of ordered response options.
- List Questions: A set of binary statements that each can be either true or false.
- Time Questions: a date and time provided by the participant, entered by the operator.
- Map Questions: is answered by marking one or more regions, such as areas on a body map.
- Categorical Rating Questions: rating of a sensation on a categorical scale.
- Numerical Rating Questions: rating of a sensation on a numerical scale.
- Visual Rating Questions: rating of a sensation on a visual analog rating scale.
All questions are identified with an id and have a title and an instruction. If the questionnaire is to be
answered by the participant, a Questionnaire instrument must be assigned to the procedure in the experimental setup.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the procedure that must be unique within the protocol, and which must be a valid variable name. |
name |
required |
Name of the procedure that is shown to the operator in LabBench Runner. |
session |
optional |
ID of the session that the procedure belongs to. This parameter must only be used if sessions are defined for the protocol. If sessions are defined then the operator will choose the active session when the protocol is initialized by LabBench Runner. LabBench Runner will then only show procedures belonging to the current active session. |
experimental-setup-id |
optional |
ID of the experimental setup configuration that will be selected when the procedure is performed. |
progress-format |
optional |
Controls the progress information that is provided by the procedure:
|
control |
optional |
Sets whether the questionnaire is filled out by the operator or the participant:
|
Elements
| Name | Use | Description |
|---|---|---|
optional |
Defines the instruments involved in a procedure and specifies events that occur at the selection, start, completion, or abortion of the procedure. This element makes it possible to inject python code into a procedure that extends the base functionality that is provided by its LabBench implementation. |
|
optional |
Procedure properties can modify the selection and execution of procedures, data collection, and provide instructions to the operator and participants. |
|
|
optional |
The |
optional |
Place a condition on the inclusion of the procedure into a session. |
|
optional |
Definition of calculated parameters that are executed when the state of questions changes; this makes it possible to extend the functionality of the Questionnaire procedure with additional functionality implemented in Python. |
|
|
optional |
The |
ProcedureEvents
Defines the instruments involved in a procedure and specifies events that occur at the selection, start, completion, or abortion of the procedure.
This element makes it possible to inject python code into a procedure that extends the base functionality that is provided by its LabBench implementation.
Attributes
| Name | Use | Description |
|---|---|---|
start |
optional |
Specifies code that will be executed when the procedure is started [ bool = Calculated(context) ]. If False is returned the procedure will be aborted. |
complete |
optional |
Specifies code that will be executed when the procedure is completed [ bool = Calculated(context) ]. If False is returned the procedure will be aborted. |
abort |
optional |
Specifies code that will be executed when the procedure is aborted [ bool = Calculated(context) ]. Please note this calculated attribute must always return True. |
selected |
optional |
Specifies code that will be executed when the procedure is selected regardsless of its state [ bool = Calculated(context) ]. Please note if a selected state is defined this will override the code provided in this attribute. |
selected-blocked |
optional |
Specifies code that will be executed when the procedure is selected and is in the blocked state [ bool = Calculated(context) ]. |
selected-ready |
optional |
Specifies code that will be executed when the procedure is selected and is in the ready state [ bool = Calculated(context) ]. |
selected-completed |
optional |
Specifies code that will be executed when the procedure is selected and is in the completed state [ bool = Calculated(context) ]. |
selected-excluded |
optional |
Specifies code that will be executed when the procedure is selected and is in the excluded state [ bool = Calculated(context) ]. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
DeviceDescription
Defines an instrument that is made available to the procedure or embedded python code, such as a Stimulator, Button, or RatioScale.
The name attribute identifies the instrument for referencing elsewhere in the code, while the interface attribute specifies the type of the instrument to be made available.
Attributes:
name: An optional escriptive name for the instrument (e.g.,"ImageDisplay") [ string ]. If no name is specified the name will be inferred from its interface type, by removing the-from interface type and making it Camel Case (i.e.image-displaybecomesImageDisplay)interface: The insturment type to be provided (e.g.,"image-display").
Attributes
| Name | Use | Description |
|---|---|---|
name |
optional |
Instrument name of the instrument. There must be a device assignment with that instrument name of the correct instrument type. |
interface |
required |
The insturment type to be provided (e.g., |
ProcedureProperties
Procedure properties can modify the selection and execution of procedures, data collection, and provide instructions to the operator and participants.
Elements
| Name | Use | Description |
|---|---|---|
optional |
Start the procedure when it is selected automatically when the previous procedure in the protocol has been completed. The procedure is only started automatically if the completion of a previous procedure selects the procedure. It is not started automatically if the operator manually selects the procedure. This procedure property can be used to speed up the execution of protocols. The default value of this procedure property is "false," meaning procedures will not be automatically started. |
|
optional |
This element controls whether the next procedure in the protocol will be automatically selected when the current procedure is completed. The default value is "true," meaning the next procedure will be automatically selected. |
|
optional |
This element places a time constraint on when the procedure can be started based on either the start time or completion time of another procedure in the protocol. The time constraint can impose a minimum (min attribute is specified) or maximum time (max attribute is specified) that must elapse before the procedure can be started or a time window (both min and max attributes are specified) within which the time can be started. |
|
optional |
This element specifies instructions for the operator when the procedure is not running. They will be shown in the procedure window instead of the procedure-specific user interface. |
|
optional |
This element specifies instructions for the participant. They will be shown on an ImageDisplay instrument that must be assigned to the procedure in a device assignment in the experimental setup. |
|
optional |
This attribute specifies the ID of the procedure that will be selected when the procedure is completed [ dynamic string ]. |
|
optional |
Custom data that can be added to procedure results either in the experiment definition file (*.expx) or by Python code. |
TimeConstraint
This element places a time constraint on when the procedure can be started based on either the start time or completion time of another procedure in the protocol. The time constraint can impose a minimum (min attribute is specified) or maximum time (max attribute is specified) that must elapse before the procedure can be started or a time window (both min and max attributes are specified) within which the time can be started.
Attributes
| Name | Use | Description |
|---|---|---|
procedure-id |
required |
This attribute specifies the ID of the procedure to which the timing constraint is relative. |
min |
optional |
If this attribute is specified, it specifies the minimum time to pass before the procedure can be started. If the max attribute is also specified, the timing constraint is a time window in which the procedure can only be started within the minimum (min attribute) and maximum (max attribute) time values. |
max |
optional |
If this attribute is specified, it specifies the maximum time that the procedure can be started. If the min attribute is also specified, the timing constraint is a time window in which the procedure can only be started within the minimum (min attribute) and maximum (max attribute) time values. |
notification |
optional |
This attribute controls whether a beep should be sounded when the timing constraint is satisfied. |
time-reference |
optional |
This attribute specifies whether the timing constraint is relative to a procedure’s start or end (completion). |
ProcedureInstructions
This element specifies instructions for the operator when the procedure is not running. They will be shown in the procedure window instead of the procedure-specific user interface.
Attributes
| Name | Use | Description |
|---|---|---|
start-instruction |
optional |
Tooltip for the start button [ dynamic string ]. If specified, this will override the default text. |
override-results |
optional |
This attribute controls whether instructions will be shown instead of procedure results in the procedure window for completed procedures. If set to true, instructions will be shown instead of the procedure results [ Boolean (true/false) ]. The default value is false. |
default |
optional |
Instructions that will be shown if instructions are not specified for the current procedure state [ IAsset = Calculated(context) ]. |
blocked |
optional |
Instructions that will be shown when the procedure is in its BLOCKED state. If this attribute is not specified, then the value of the default attribute will be shown instead [ IAsset = Calculated(context) ] |
ready |
optional |
Instructions that will be shown when the procedure is in its READY state. If this attribute is not specified, then the value of the default attribute will be shown instead [ IAsset = Calculated(context) ]. |
excluded |
optional |
Instructions that will be shown when the procedure is in its EXCLUDED state. If this attribute is not specified, then the value of the default attribute will be shown instead [ IAsset = Calculated(context) ]. |
completed |
optional |
Instructions that will be shown when the procedure is in its COMPLETED state. If this attribute is not specified, then the value of the default attribute will be shown instead [ IAsset = Calculated(context) ]. |
ParticipantInstructions
This element specifies instructions for the participant. They will be shown on an ImageDisplay instrument that must be assigned to the procedure in a device assignment in the experimental setup.
Attributes
| Name | Use | Description |
|---|---|---|
experimental-setup-id |
required |
This attribute specifies the experimental setup ID that will activate the assigned ImageDisplay [ string ]. This ID can be different from the experimental setup ID for the procedure in general and will only be activated when the procedure is not running. |
default |
optional |
Instructions that will be shown if instructions are not specified for the current procedure state [ IAsset = Calculated(context) ]. |
blocked |
optional |
Instructions that will be shown when the procedure is in its BLOCKED state [ IAsset = Calculated(context) ]. If this attribute is not specified, then the value of the default attribute will be shown instead. |
ready |
optional |
Instructions that will be shown when the procedure is in its READY state [ IAsset = Calculated(context) ]. If this attribute is not specified, then the value of the default attribute will be shown instead. |
excluded |
optional |
Instructions that will be shown when the procedure is in its EXCLUDED state [ IAsset = Calculated(context) ]. If this attribute is not specified, then the value of the default attribute will be shown instead. |
completed |
optional |
Instructions that will be shown when the procedure is in its COMPLETED state [ IAsset = Calculated(context) ]. If this attribute is not specified, then the value of the default attribute will be shown instead. |
ProcedureLink
Link to another procedure within the protocol.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identification ( |
ProcedureAnnotations
Custom data that can be added to procedure results either in the experiment definition file (*.expx) or by Python code.
Elements
| Name | Use | Description |
|---|---|---|
|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
BooleanListValue
bool[]
Attributes
| Name | Use | Description |
|---|---|---|
name |
optional |
Name of the variable [ string ]. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
NumberValue
double
Attributes
| Name | Use | Description |
|---|---|---|
name |
optional |
Name of the variable [ string ]. |
value |
required |
Value [ double ]. |
NumberListValue
double[]
Attributes
| Name | Use | Description |
|---|---|---|
name |
optional |
Name of the variable [ string ]. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
StringValue
string
Attributes
| Name | Use | Description |
|---|---|---|
name |
optional |
Name of the variable [ string ]. |
value |
required |
Value [ string ]. |
StringListValue
string[]
Attributes
| Name | Use | Description |
|---|---|---|
name |
optional |
Name of the variable [ string ]. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
IntegerValue
int
Attributes
| Name | Use | Description |
|---|---|---|
name |
optional |
Name of the variable [ string ]. |
value |
required |
Integer value [ int ]. |
IntegerListValue
int[]
Attributes
| Name | Use | Description |
|---|---|---|
name |
optional |
Name of the variable [ string ]. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
ProcedureDependency
Calculated parameters and Python code may use results from previously completed procedures.
For example, a Stimulation sequence procedure may set the intensity (x="[ProcedureID].[ChannelID])of
the stimuli to thresholds determined in a completed Threshold Estimation procedure. However, if
the stimulation sequence procedure is started before the Threshold Estimation procedure has been completed,
the code above would result in a runtime error.
Consequently, it must be declared if the results of a procedure are used in another procedure. This declaration
is done with the <dependency> element within the <dependencies> element in the procedure definition.
These dependencies can be nonvirtual or virtual. If a procedure dependency is nonvirtual, rerunning the dependency will invalidate the dependent's results, meaning that after the dependency has completed, the dependent's results will be discarded. If a procedure dependency is virtual, it means it is a logical dependency that does not invalidate the results of the dependent. Consequently, in that case, the result of the dependent will not be discarded when the dependency is completed.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier ( |
virtual |
optional |
Is it a virtual dependency [ bool ]. |
Condition
Makes it possible to exclude procedures based on the results of completed procedures.
Attributes
| Name | Use | Description |
|---|---|---|
expression |
required |
Condition on the execution of the procedure [ bool = Calculated(context) ]. If this calculated attribute is True the procedure will be included, otherwise it will be excluded. |
help |
required |
This attribute must provide an explanation for why a procedure has been excluded [ dynamic string ]. |
QuestionEvents
Definition of calculated parameters that are executed when the state of questions changes; this makes it possible to extend the functionality of the Questionnaire procedure with additional functionality implemented in Python.
Attributes
| Name | Use | Description |
|---|---|---|
start |
optional |
Called when a question is started [ bool = Calculated(context) ]. |
complete |
optional |
Called when a question is completed [ bool = Calculated(context) ]. |
changed |
optional |
Called when a the answer to a question is changed [ bool = Calculated(context) ]. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
AreaQuestion
The <map> question lets users select areas on an image, such as marking pain on a body map.
If the map question is answered by the operator, they selected/deselected areas by clicking
on the image in the LabBench Runner procedure window. If the participants answer the question,
they will use a Button instrument to navigate between areas and to select/deselct them.
When participants answer the question, the following button functions must be defined in the button configuration:
up,down,left,right: are used to navigate between areas.increaseanddecrease: are used to select/deselect areas.
If the assigned device also implements the Joystick instrument, joystick movement can be used to navigate between areas.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the question [ string ]. This identifier must be unique and is used to reference the answer in calculated parameters and in exported data. The answer can be referenced in calculated parameters as |
title |
optional |
The title of the question [ dynamic string ]. |
instruction |
optional |
An instruction to the operator or participant on how to answer the question [ dynamic string ]. |
condition |
optional |
Places a condition on whether the question is asked [ bool = Calculated(context) ]. If the calculated parameter returns True, the question is asked; otherwise, it is skipped. Consequently, this attribute can be used to omit questions based on answers to previous questions or on the results of other procedures in the protocol. |
image-map |
optional |
An image that will provide the areas that can be selected [ image = Calculated(context) ]. Each area must be uniformly colored with a single color, and an |
overlay-image |
optional |
An overlay image that will be added on top of the processed area image [ image = Calculated(context) ]. Consequently, this image can be used to add information and a decal to the area image. For the areas to be visible, all pixels that do not provide information or a decal must be transparent. |
selected-colour |
optional |
The colour of areas that the participant have selected, but which is currently not active [ string ]. The colour must be specified in hex in the form of #RRGGBB. |
deselected-colour |
optional |
The colour of areas that the participant has not selected and which are currently not active [ string ]. This colour is typically the same as the background colour of the image, meaning deselected/not active areas will not be colored. The colour must be specified in hex in the form of #RRGGBB. |
active-selected-colour |
optional |
The colour of areas that are selected and active [ string ]. The colour must be specified in hex in the form of #RRGGBB. Please not that the concept of active/inactive areas is only used when the questionnaire is answered by the participant. If the operator answers the questionnaire then this attribute has no effect. |
active-deselected-colour |
optional |
The colour of areas that are active but not selected [ string ]. The colour must be specified in hex in the form of #RRGGBB. Please not that the concept of active/inactive areas is only used when the questionnaire is answered by the participant. If the operator answers the questionnaire then this attribute has no effect. |
selection-mode |
optional |
Area selection mode:
|
initial-active-area |
optional |
Sets which area is initially active [ string ]. This must be the ID of an |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
Area
An area on the image can be selected or deselected. Each area has an id and a colour, which
matches the colour of the pixels in that area. The operator or participant will not see this
color, as it will be replaced by one of the following:
deselected-colour: an area that is neither selected nor active.selected-colour: an area that has been selected by the operator/participant but is not active.active-deselected-colour: an area has not been selected and is active.active-selected-colour: an area has been selected and is active.
The concept of an active/inactive area is relevant only when the participant completes the questionnaire. In that mode, it is the area currently in focus, and pressing the increase/decrease button selects/deselects the area, respectively.
When the participant answers the questionnaire, each area must also set up navigation to adjacent areas, specifying which area will be made active when the up, down, left, or right button is pressed. For each area, at least one button must be defined so the participant can’t get trapped and can't navigate away from the area.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identification of the area [ string ]. This |
colour |
required |
The colour that defines the area on the image [ string ]. Must be specified as a hex value #RRGGBB. |
up |
optional |
Which area should be activated when the |
down |
optional |
Which area should be activated when the |
left |
optional |
Which area should be activated when the |
right |
optional |
Which area should be activated when the |
TextQuestion
The <text> question allows the participant or operator to provide a verbal free-form
answer to a statement. The answer is in text that can be validated with a regular expression.
If the participant answers the question, the answer must be given verbally to the operator, who then enters it into the questionnaire. The operator's entered value will be displayed to the participant so they can confirm it is correct.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the question [ string ]. This identifier must be unique and is used to reference the answer in calculated parameters and in exported data. The answer can be referenced in calculated parameters as |
title |
optional |
The title of the question [ dynamic string ]. |
instruction |
optional |
An instruction to the operator or participant on how to answer the question [ dynamic string ]. |
condition |
optional |
Places a condition on whether the question is asked [ bool = Calculated(context) ]. If the calculated parameter returns True, the question is asked; otherwise, it is skipped. Consequently, this attribute can be used to omit questions based on answers to previous questions or on the results of other procedures in the protocol. |
maximal-length |
optional |
Maximal length of the answer [ int = Calculated(context) ]. |
Elements
| Name | Use | Description |
|---|---|---|
optional |
A text validator can guard against invalid text input. Text is validated with regular expressions. This tutorial, RegexLearn, teaches how to write regular expressions. When writing regular expressions, it is beneficial to procedure them with a suitable tool regex101. |
BooleanQuestion
The <boolean> question asks a statement that can either be true or false. If the participant
answers the question, the answer is selected with the up and down buttons.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the question [ string ]. This identifier must be unique and is used to reference the answer in calculated parameters and in exported data. The answer can be referenced in calculated parameters as |
title |
optional |
The title of the question [ dynamic string ]. |
instruction |
optional |
An instruction to the operator or participant on how to answer the question [ dynamic string ]. |
condition |
optional |
Places a condition on whether the question is asked [ bool = Calculated(context) ]. If the calculated parameter returns True, the question is asked; otherwise, it is skipped. Consequently, this attribute can be used to omit questions based on answers to previous questions or on the results of other procedures in the protocol. |
true-label |
required |
Description of the true option [ dynamic string ]. |
false-label |
required |
Description of the false option [ dynamic string ]. |
NumericalQuestion
The <numeric> question allows the participant or operator to provide a numerical
answer to a statement. The answer can be validated to be within a given range.
If the participant answers the question, the answer must be given verbally to the operator, who then enters it into the questionnaire. The operator's entered value will be displayed to the participant so they can confirm it is correct.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the question [ string ]. This identifier must be unique and is used to reference the answer in calculated parameters and in exported data. The answer can be referenced in calculated parameters as |
title |
optional |
The title of the question [ dynamic string ]. |
instruction |
optional |
An instruction to the operator or participant on how to answer the question [ dynamic string ]. |
condition |
optional |
Places a condition on whether the question is asked [ bool = Calculated(context) ]. If the calculated parameter returns True, the question is asked; otherwise, it is skipped. Consequently, this attribute can be used to omit questions based on answers to previous questions or on the results of other procedures in the protocol. |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Validation that a number is within a given range. |
NumberValidator
Validation that a number is within a given range.
Attributes
| Name | Use | Description |
|---|---|---|
max |
optional |
Maximal value for the number [ double ]. |
max-included |
optional |
Is the maximum included in the allowed range [ bool ]. |
min |
optional |
Minimum value for the number [ double ]. |
min-included |
optional |
Is the minimum included in the allowed range [ bool ]. |
LikertQuestion
The <likert> question enables participants or operators to indicate their level of agreement,
endorsement, or frequency using a Likert scale. A Likert scale is a symmetrically ordered set
of response categories, from which a single option may be selected.
In LabBench, Likert scales are presented vertically. This vertical orientation allows for
longer, more descriptive labels for response categories than horizontally displayed categorical
rating scales. Participants select their response using the up and down button.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the question [ string ]. This identifier must be unique and is used to reference the answer in calculated parameters and in exported data. The answer can be referenced in calculated parameters as |
title |
optional |
The title of the question [ dynamic string ]. |
instruction |
optional |
An instruction to the operator or participant on how to answer the question [ dynamic string ]. |
condition |
optional |
Places a condition on whether the question is asked [ bool = Calculated(context) ]. If the calculated parameter returns True, the question is asked; otherwise, it is skipped. Consequently, this attribute can be used to omit questions based on answers to previous questions or on the results of other procedures in the protocol. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
LikertChoice
Definition of a response category on the Likert scale. Each response category is quantified by an integer value that corresponds to the Likert scale score if that category is selected.
Attributes
| Name | Use | Description |
|---|---|---|
value |
required |
Likert scale score if that category is selected [ int ]. |
label |
required |
Description of the category [ dynamic string ]. |
DimensionalLikertQuestion
The <dimensional-likert> question enables participants or operators to indicate their level of
agreement, endorsement, or frequency using multiple Likert scales. A Likert scale is a symmetrically
ordered set of response categories, from which a single option may be selected.
In LabBench, each Likert scale is presented horizontally. Participants select which Likert scale is
active using the up and down buttons, and perform their rating with the increase and decrease buttons.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the question [ string ]. This identifier must be unique and is used to reference the answer in calculated parameters and in exported data. The answer can be referenced in calculated parameters as |
title |
optional |
The title of the question [ dynamic string ]. |
instruction |
optional |
An instruction to the operator or participant on how to answer the question [ dynamic string ]. |
condition |
optional |
Places a condition on whether the question is asked [ bool = Calculated(context) ]. If the calculated parameter returns True, the question is asked; otherwise, it is skipped. Consequently, this attribute can be used to omit questions based on answers to previous questions or on the results of other procedures in the protocol. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
LikertDimension
An individual Likert scale on the multi-dimensional Likert scale question.
Attributes
| Name | Use | Description |
|---|---|---|
name |
required |
Description of the Likert scale [ dynamic string ]. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
BooleanListQuestion
The <list> question allows the participant or operator to provide answers to a set of statements,
each of which can be true or false.
If the participant answers the question, the down and up buttons will navigate between questions,
and pressing increase/decrease will set the answer to true/false, respectively.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the question [ string ]. This identifier must be unique and is used to reference the answer in calculated parameters and in exported data. The answer can be referenced in calculated parameters as |
title |
optional |
The title of the question [ dynamic string ]. |
instruction |
optional |
An instruction to the operator or participant on how to answer the question [ dynamic string ]. |
condition |
optional |
Places a condition on whether the question is asked [ bool = Calculated(context) ]. If the calculated parameter returns True, the question is asked; otherwise, it is skipped. Consequently, this attribute can be used to omit questions based on answers to previous questions or on the results of other procedures in the protocol. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
BooleanListItem
A statement that can either be true or false.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identification of the statement [ string ]. This |
question |
required |
A statement that the participant or operator can answer is either true or false [ dynamic string ]. |
DateTimeQuestion
The <time> question allows the participant or operator to provide answers to a question
when something occurred. The answer is in the form of a date and time.
If the participant answers the question, the answer must be given verbally to the operator, who then enters it into the questionnaire. The operator's entered value will be displayed to the participant so they can confirm it is correct.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the question [ string ]. This identifier must be unique and is used to reference the answer in calculated parameters and in exported data. The answer can be referenced in calculated parameters as |
title |
optional |
The title of the question [ dynamic string ]. |
instruction |
optional |
An instruction to the operator or participant on how to answer the question [ dynamic string ]. |
condition |
optional |
Places a condition on whether the question is asked [ bool = Calculated(context) ]. If the calculated parameter returns True, the question is asked; otherwise, it is skipped. Consequently, this attribute can be used to omit questions based on answers to previous questions or on the results of other procedures in the protocol. |
VisualAnalogScaleQuestion
The <visual-analogue-scale> question asks the participant or operator to rate a sensation
on a visual analog rating scale. If the participant answers the question, the rating is
increased/decreased by pressing the increase/decrease buttons, respectively.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the question [ string ]. This identifier must be unique and is used to reference the answer in calculated parameters and in exported data. The answer can be referenced in calculated parameters as |
title |
optional |
The title of the question [ dynamic string ]. |
instruction |
optional |
An instruction to the operator or participant on how to answer the question [ dynamic string ]. |
condition |
optional |
Places a condition on whether the question is asked [ bool = Calculated(context) ]. If the calculated parameter returns True, the question is asked; otherwise, it is skipped. Consequently, this attribute can be used to omit questions based on answers to previous questions or on the results of other procedures in the protocol. |
top-anchor |
required |
Top anchor for the scale [ dynamic string ]. |
bottom-anchor |
required |
Bottom anchor for the scale [ dynamic string ]. |
length |
optional |
Physical length of the scale in centimetres [ double ]. |
active-colour |
required |
Colour for the active part of the scale [ string ]. The string must encode a valid RGB colour value, either in hex as #RRGGBB or as a rgb(RRR,GGG,BBB). For the rgb() notation the colours are in base 10. |
inactive-colour |
required |
Colour for the inactive part of the scale [ string ]. The string must encode a valid RGB colour value, either in hex as #RRGGBB or as a rgb(RRR,GGG,BBB). For the rgb() notation the colours are in base 10. |
NumericalScaleQuestion
The <numerical-scale> question asks the participant or operator to rate a sensation
on a numerical rating scale. If the participant answers the question, the rating is
increased/decreased by pressing the increase/decrease buttons, respectively.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the question [ string ]. This identifier must be unique and is used to reference the answer in calculated parameters and in exported data. The answer can be referenced in calculated parameters as |
title |
optional |
The title of the question [ dynamic string ]. |
instruction |
optional |
An instruction to the operator or participant on how to answer the question [ dynamic string ]. |
condition |
optional |
Places a condition on whether the question is asked [ bool = Calculated(context) ]. If the calculated parameter returns True, the question is asked; otherwise, it is skipped. Consequently, this attribute can be used to omit questions based on answers to previous questions or on the results of other procedures in the protocol. |
top-anchor |
required |
Top anchor for the scale [ dynamic string ]. |
bottom-anchor |
required |
Bottom anchor for the scale [ dynamic string ]. |
maximum |
required |
The maximal value for the scale [ int ]. |
minimum |
required |
The minimum value for the scale [ int ]. |
active-colour |
required |
Colour for the active part of the scale [ string ]. The string must encode a valid RGB colour value, either in hex as #RRGGBB or as a rgb(RRR,GGG,BBB). For the rgb() notation the colours are in base 10. |
inactive-colour |
required |
Colour for the inactive part of the scale [ string ]. The string must encode a valid RGB colour value, either in hex as #RRGGBB or as a rgb(RRR,GGG,BBB). For the rgb() notation the colours are in base 10. |
CategoricalScaleQuestion
The <categorical-scale> question asks the participant or operator to rate a sensation
on a categorical rating scale. If the participant answers the question, the rating is
increased/decreased by pressing the increase/decrease buttons, respectively.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the question [ string ]. This identifier must be unique and is used to reference the answer in calculated parameters and in exported data. The answer can be referenced in calculated parameters as |
title |
optional |
The title of the question [ dynamic string ]. |
instruction |
optional |
An instruction to the operator or participant on how to answer the question [ dynamic string ]. |
condition |
optional |
Places a condition on whether the question is asked [ bool = Calculated(context) ]. If the calculated parameter returns True, the question is asked; otherwise, it is skipped. Consequently, this attribute can be used to omit questions based on answers to previous questions or on the results of other procedures in the protocol. |
top-anchor |
required |
Top anchor for the scale [ dynamic string ]. |
bottom-anchor |
required |
Bottom anchor for the scale [ dynamic string ]. |
active-colour |
required |
Colour for the active part of the scale [ string ]. The string must encode a valid RGB colour value, either in hex as #RRGGBB or as a rgb(RRR,GGG,BBB). For the rgb() notation the colours are in base 10. |
inactive-colour |
required |
Colour for the inactive part of the scale [ string ]. The string must encode a valid RGB colour value, either in hex as #RRGGBB or as a rgb(RRR,GGG,BBB). For the rgb() notation the colours are in base 10. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
Category
Category definition.
Attributes
| Name | Use | Description |
|---|---|---|
value |
required |
Description that will be displayed to the participant [ dynamic string ]. |
StimulationSequenceProcedure
The <stimulation-sequence> procedure generates stimulus sequences for evoked potentials, behavioural tasks,
or similar procedures. Construct the sequence by creating a stimulus pattern to control timing and a
stimulus set to define which stimuli are delivered.
The stimulation pattern <stimulation-pattern>is constructed from a composition of sequences, which
can be deterministic or random. However, to use this procedure, the stimulation pattern (number of stimuli
and randomisation) is generated when the procedure starts. Consequently, it is not possible to change the
stimulation pattern while the procedure is running, so it cannot depend on participant performance during
the procedure. Use the <sequential> procedure if the stimulation pattern depends on the participant, as that
procedure is more versatile but also more complex to implement than this stimulation sequence procedure.
The stimulation pattern is first generated, yielding a set of temporal stimulation slots that can be
filled with stimuli; which stimuli are inserted into these stimulation slots is defined by the stimulus
set <stimuli>. The stimuli set defines a set of stimuli and controls their randomisation. To fill
the stimulation pattern, a batch of stimuli is first generated by the stimulus set. This batch of
stimuli are inserted into the stimulation slots until all have been allocated, then a new batch is
generated. This process is repeated until all stimulation slots have been allocated a stimulus.
The procedure delivers stimuli via the stimulation component, which, by default, uses the Stimulator
and TriggerGenerator instruments to deliver stimuli and triggers, respectively. If more complex
or multimodal stimuli are required, a <stimulation-scripts> can be defined to generate the
stimuli/triggers from a Python script. When generations are done from a Python script, any visual,
auditory or physical stimuli, and combinations thereof, that are possible with LabBench can be generated.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the procedure that must be unique within the protocol, and which must be a valid variable name. |
name |
required |
Name of the procedure that is shown to the operator in LabBench Runner. |
session |
optional |
ID of the session that the procedure belongs to. This parameter must only be used if sessions are defined for the protocol. If sessions are defined then the operator will choose the active session when the protocol is initialized by LabBench Runner. LabBench Runner will then only show procedures belonging to the current active session. |
experimental-setup-id |
optional |
ID of the experimental setup configuration that will be selected when the procedure is performed. |
stimulus-update-rate |
optional |
Update rate for stimulus generation [ int = Calculated(context) ]. |
trigger-update-rate |
optional |
Update rate for trigger generation [ int = Calculated(context) ]. If not defined, the stimulus generation update rate will be used. |
response-collection |
optional |
Type of response collection that will be performed:
|
Elements
| Name | Use | Description |
|---|---|---|
optional |
Defines the instruments involved in a procedure and specifies events that occur at the selection, start, completion, or abortion of the procedure. This element makes it possible to inject python code into a procedure that extends the base functionality that is provided by its LabBench implementation. |
|
optional |
Procedure properties can modify the selection and execution of procedures, data collection, and provide instructions to the operator and participants. |
|
|
optional |
The |
optional |
Place a condition on the inclusion of the procedure into a session. |
|
optional |
Configuration of procedurecomponents, which includes configuration of the stimulation, trigger, and sampling components that are used by the procedure. |
|
optional |
Custom stimulation where the stimulation is implemented with calculated parameters that can either be a single-line Python statement or, more commonly, by calling a Python function in a script. |
|
required |
The The stimulation pattern is generated from a composition of two types of sequences:
The time of a sequence is relative to the starting time of its parent sequence. If a sequence is root, meaning it has no parent, it is relative to time zero. For calcuated parameters the following variables will be in scope:
|
|
required |
The The procedure supports randomisation of stimulation order based on the For calculated stimulus parameters and scripted stimulation, the stimulus |
ScriptedStimulation
Custom stimulation where the stimulation is implemented with calculated parameters that can either be a single-line Python statement or, more commonly, by calling a Python function in a script.
Attributes
| Name | Use | Description |
|---|---|---|
initialize |
optional |
Calculated parameter that will be called when the procedure is started [ bool = Calculated(ts) ]. If False is returned, the procedure will be aborted; otherwise, it will be started. |
stimulate |
required |
Calculated parameter that is called for each stimulation and which must implement the stimulation [ bool = Calculated(ts, x) ]. If False is returned, the procedure will be aborted. |
stimulus-description |
optional |
Description of the stimulus. |
stimulus-unit |
optional |
Unit for the stimulation modulity. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
StimulationPattern
The <stimulation-pattern> element determines when stimuli are delivered. The pattern generates a
set of time slots, each of which is either filled with stimuli from the <stimuli> set or with a pause.
The stimulation pattern is generated from a composition of two types of sequences:
<sequence>: a sequence with deterministic parameters.<uniformly-distributed-sequence>: a random sequence with an period that is uniformly distrubed between a minimum and maximal period.
The time of a sequence is relative to the starting time of its parent sequence. If a sequence is root, meaning it has no parent, it is relative to time zero.
For calcuated parameters the following variables will be in scope:
NumberOfStimuli: Number of stimuli that will be generated by the<stimuli>element each time a new batch of stimuli is required.
Attributes
| Name | Use | Description |
|---|---|---|
time-base |
optional |
Timebase for enclosing elements:
|
Elements
| Name | Use | Description |
|---|---|---|
1 |
This definition requires that exactly one item be provided and that it be chosen from a fixed set of mutually exclusive alternatives. Only one alternative may appear, and all other alternatives must be absent. No alternative is mandatory on its own, but the choice as a whole is required, meaning the container is invalid unless exactly one of the allowed options is specified. |
DeterministicSequence
Generate a deterministic sequence based on these parameters:
Iterations: indicates how many times to repeat the process for generating individual time slots. Each iteration produces one time slot inserted at a time according to the sequence attributes. If the 'Iterations' attribute is omitted, it defaults to 1.Tperiod: The period by which the sequence is repeated, meaning the time between the time slots that are generated by the sequence. If this attribute is omitted, the period will be automatically calculated based on the duration of the sequences it contains.Toffset: Time offset from the start of the sequence until insertion of the first time slot. Consequently, this attribute will offset all timeslots within the sequence.stimulate: Fill the time slot with a stimulus.pause: Insert a pause into the time slot.
Attributes
| Name | Use | Description |
|---|---|---|
iterations |
optional |
Number of sequence iterations [ double = Calculated(context) ]. For each sequence iteration, one time slot is generated. |
stimulate |
optional |
Fill time slots with stimuli from the |
pause |
optional |
Fill time slots with pauses [ bool ]. Please note that this attribute will overrule the |
Tperiod |
optional |
Period by which time slots are generated [ double = Calculated(context) ]. |
Toffset |
optional |
Time offset by which all generated time slots are delayed [ double = Calculated(context) ]. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
UniformlyDistributedSequence
Generate a uniformly distributed sequence based on these parameters:
Iterations: indicates how many times to repeat the process for generating individual time slots. Each iteration produces one time slot inserted at a time according to the sequence attributes. If the 'Iterations' attribute is omitted, it defaults to 1.maxTperiod: The maximal period by which the sequence is repeated, meaning the time between the time slots that are generated by the sequence. If this attribute is omitted, the period will be automatically calculated based on the duration of the sequences it contains. The period is uniformly distributed between minTperiod and maxTperiod.minTperiod: The minimal period by which the sequence is repeated, meaning the time between the time slots that are generated by the sequence. If this attribute is omitted, the period will be automatically calculated based on the duration of the sequences it contains. The period is uniformly distributed between minTperiod and maxTperiod.Toffset: Time offset from the start of the sequence until insertion of the first time slot. Consequently, this attribute will offset all timeslots within the sequence.stimulate: Fill the time slot with a stimulus.pause: Insert a pause into the time slot.
Attributes
| Name | Use | Description |
|---|---|---|
iterations |
optional |
Number of sequence iterations [ double = Calculated(context) ]. For each sequence iteration, one time slot is generated. |
stimulate |
optional |
Fill time slots with stimuli from the |
pause |
optional |
Fill time slots with pauses [ bool ]. Please note that this attribute will overrule the |
maxTperiod |
required |
Minimal value for the period [ double = Calculated(context) ]. The period is uniformly distributed between minTperiod and maxTperiod. |
minTperiod |
required |
Maximal value for the period [ double = Calculated(context) ]. The period is uniformly distributed between minTperiod and maxTperiod. |
Toffset |
optional |
Time offset by which all generated time slots are delayed [ double = Calculated(context) ]. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
StimulusSet
The <stimuli> defines a set of stimuli. These will be inserted into the time slots generated
by the <stimulation-pattern>. The set consists of a series of <stimulus> elements. Each
element may produce multiple stimuli based on its count attribute.
The procedure supports randomisation of stimulation order based on the order attribute (round-robin,
random, block-random, latin-squares, generated). Ensure that the number of stimulation
time slots generated by the stimulation pattern is exactly divisible by the NumberOfStimuli
in this element. Otherwise, any extra stimulation time slots that do not fit into a complete cycle
defined by NumberOfStimuli will not be delivered.
For calculated stimulus parameters and scripted stimulation, the stimulus id will be available
as in the StimulusName variable. The currently active block is available in the BlockNumber variable.
Attributes
| Name | Use | Description |
|---|---|---|
order |
optional |
Method for generating a batch of stimuli from the stimulus set:
|
generator |
optional |
Order by which the stimuli in a batch are reorganised when the order attribute is set to Consequently, the |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
StimulusDeclaration
Definition of a stimulus in the stimulus set.
Attributes
| Name | Use | Description |
|---|---|---|
name |
required |
Name that will be used to identify the stimulus in results, calculated parameters, and Python scripts [ string ]. |
count |
optional |
Number of stimuli that will be generated from this stimulus declaration [ int = Calculated(context) ]. |
intensity |
optional |
Intensity ( |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Specifies a set of triggers to be generated. These triggers will all be generated with a given duration ( A trigger may generate a trigger on multiple digital outputs. Each output is specified with a nested |
|
optional |
Definition of a stimulus. |
TriggerDefinition
Specifies a set of triggers to be generated. These triggers will all be generated with a given
duration (duration) and delay (Tdelay). The delay is relative to the start time of its parent
trigger sequence; if it has no parent trigger sequence, it is relative to time zero.
A trigger may generate a trigger on multiple digital outputs. Each output is specified with a nested
<code> element.
Elements
| Name | Use | Description |
|---|---|---|
1 |
This definition requires that exactly one item be provided and that it be chosen from a fixed set of mutually exclusive alternatives. Only one alternative may appear, and all other alternatives must be absent. No alternative is mandatory on its own, but the choice as a whole is required, meaning the container is invalid unless exactly one of the allowed options is specified. |
TriggerSpecification
Specifies a set of triggers to be generated. These triggers will all be generated with a given
duration (duration) and delay (Tdelay). The delay is relative to the start time of its parent
trigger sequence; if it has no parent trigger sequence, it is relative to time zero.
A trigger may generate a trigger on multiple digital outputs. Each output is specified with a nested
<code> element.
Attributes
| Name | Use | Description |
|---|---|---|
Tdelay |
optional |
Trigger delay relative to the starting time of its parent sequence [ double = Calculated(context) ]. |
duration |
required |
Trigger duration [ double = Calculated(context) ]. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
TriggerCode
Trigger definitions that are defined by output and value. The output controls
where the trigger is generated, and the value controls which trigger code is
generated. The value attribute is optional and is default set to one (1).
Attributes
| Name | Use | Description |
|---|---|---|
output |
required |
Controls where a trigger will be delivered and what types of triggers can be generated:
Please note that the logic convention (positive/negative) applies only to the |
value |
optional |
Trigger code to be generated [ int = Calculated(context) ]. |
RepeatedTriggerSequence
Repetition of enclosed triggers.
Attributes
| Name | Use | Description |
|---|---|---|
Tdelay |
optional |
The delay that the enclosed trigger sequence is delayed with before it is repeated |
Tperiod |
required |
The period by which the enclosed triggers are repeated [ double = Calculated(context) ]. |
N |
optional |
The number of times the enclosed triggers are repeated [ int = Calculated(context) ]. |
Elements
| Name | Use | Description |
|---|---|---|
1 |
This definition requires that exactly one item be provided and that it be chosen from a fixed set of mutually exclusive alternatives. Only one alternative may appear, and all other alternatives must be absent. No alternative is mandatory on its own, but the choice as a whole is required, meaning the container is invalid unless exactly one of the allowed options is specified. |
CombinedTriggerSequence
Generation of triggers from a composition of triggers and trigger sequences. The triggers of each enclosing trigger or trigger sequence will be merged together in time.
This will fail if the enclosed triggers or trigger sequences contain incompatible triggers, meaning that two or more distinct trigger codes are to be generated simultaneously on the same trigger output.
Attributes
| Name | Use | Description |
|---|---|---|
Tdelay |
optional |
Delay that all enclosed triggers are delayed with [ double = Calculated(context) ]. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
StimulusDefinition
Definition of a stimulus.
Elements
| Name | Use | Description |
|---|---|---|
|
1 |
This definition requires that exactly one item be provided and that it be chosen from a fixed set of mutually exclusive alternatives. Only one alternative may appear, and all other alternatives must be absent. No alternative is mandatory on its own, but the choice as a whole is required, meaning the container is invalid unless exactly one of the allowed options is specified. |
Pulse
Rectangular stimulus.
Attributes
| Name | Use | Description |
|---|---|---|
Is |
required |
Stimulus intensity (Is) [ double = Calculated(context, x)]. |
Ts |
required |
Duration of the stimulus in milliseconds [ double = Calculated(context, x) ]. |
Tdelay |
optional |
Delay of the stimulus in miliseconds [ double = Calculated(context, x) ] |
Ramp
A linearly increasing stimulus.
Attributes
| Name | Use | Description |
|---|---|---|
Is |
required |
Stimulus intensity (Is) is the change in the intensity at the end of the ramp from the stimulus offset (Ioffset) [ double = Calculated(context, x)]. |
Ioffset |
optional |
Stimulus intensity offset (Ioffset) is the value that all stimulus intensities during the stimulus are offset with [ double = Calculated(context, x)]. |
Ts |
required |
Duration of the stimulus in milliseconds [ double = Calculated(context, x) ]. |
Tdelay |
optional |
Delay of the stimulus in miliseconds [ double = Calculated(context, x) ] |
Sine
Sinusoidal stimulus.
Attributes
| Name | Use | Description |
|---|---|---|
Is |
required |
Stimulus intensity [ double = Calculated(context, x) ]. |
Ts |
required |
Stimulus duration in milliseconds [ double = Calculated(context, x) ]. |
Tdelay |
optional |
Delay in milliseconds of the stimulus relative to its parent stimulus [ double = Calculated(context, x) ]. |
Frequency |
required |
Frequency of the sinusoidal stimulus [ double = Calculated(context, x) ]. |
Arbitrary
An arbitrary stimulus that is defined by a mathematical expression.
Attributes
| Name | Use | Description |
|---|---|---|
Ts |
required |
Duration of the stimulus in milliseconds [ double = Calculated(context, x) ]. |
Tdelay |
optional |
Delay of the stimulus in miliseconds [ double = Calculated(context, x) ] |
expression |
required |
A mathematical expression that defines the stimulus. The expression must be a single-line Python statement that returns a double. In the scope of this expression are the current time (t) in milliseconds, a free parameter (x), a set of mathematical functions, and the results and definitions of the current protocol. |
CombinedStimulus
A combined stimulus is the summation of a set of individual stimuli. The stimulus duration and delays of each stimulus in the set are relative to the combined stimulus's starting time.
Elements
| Name | Use | Description |
|---|---|---|
|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
RepeatedStimulus
Repeats an enclosed stimulus.
Attributes
| Name | Use | Description |
|---|---|---|
Tdelay |
optional |
Delay in milliseconds of the repeated stimulus relative to its parent stimulus [ double = Calculated(context, x) ]. |
Tperiod |
required |
Period in milliseconds that the enclosed stimulus is repeated [ double = Calculated(context, x) ]. |
N |
optional |
Number of times the enclosed stimulus is repeated [ int = Calculated(context, x) ]. |
Elements
| Name | Use | Description |
|---|---|---|
|
1 |
This definition requires that exactly one item be provided and that it be chosen from a fixed set of mutually exclusive alternatives. Only one alternative may appear, and all other alternatives must be absent. No alternative is mandatory on its own, but the choice as a whole is required, meaning the container is invalid unless exactly one of the allowed options is specified. |
Window
Window that gets multiplied on its enclosing stimuli.
Attributes
| Name | Use | Description |
|---|---|---|
window |
required |
Type of window that the enclosing stimulus is windowed with. |
parameter |
optional |
Parameter if any of the window function. |
Elements
| Name | Use | Description |
|---|---|---|
1 |
This definition requires that exactly one item be provided and that it be chosen from a fixed set of mutually exclusive alternatives. Only one alternative may appear, and all other alternatives must be absent. No alternative is mandatory on its own, but the choice as a whole is required, meaning the container is invalid unless exactly one of the allowed options is specified. |
MultipleOutputStimulus
Represent a stimulus that spand over multiple stimulation outputs.
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
AnalogOutput
An analogue output channel in a multiple output stimulus.
Attributes
| Name | Use | Description |
|---|---|---|
channel |
required |
Number of the output channel. The stimulation device determines the meaning of this number. |
Elements
| Name | Use | Description |
|---|---|---|
|
1 |
This definition requires that exactly one item be provided and that it be chosen from a fixed set of mutually exclusive alternatives. Only one alternative may appear, and all other alternatives must be absent. No alternative is mandatory on its own, but the choice as a whole is required, meaning the container is invalid unless exactly one of the allowed options is specified. |
LinearSegmentsStimulus
A stimulus created from piecewise linear segments.
Attributes
| Name | Use | Description |
|---|---|---|
baseline |
required |
The baseline for the stimulus [ double = Calculated(context, x) ]. This baseline is the stimulus intensity outside the linear segments, and the starting value for the linear segments. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
Segment
Definition of a segment of a piecewise-linear stimulus. The segment is defined by its duration and intensity at its end. Its starting intensity is defined by the end intensity of the previous segment or by the baseline intensity of the piecewise-linear stimulus.
Attributes
| Name | Use | Description |
|---|---|---|
duration |
required |
Duration of the segment in milliseconds [ double = Calculated(context, x) ]. |
value |
required |
End intensity of the segment [ double = Calculated(ts, x) ]. |
SequentialProcedure
The sequential procedure makes it possible to use state machines to implement experimental procedures. Unlike most other procedures, it has no base functionality that can be configured in the LabBench Language; instead, its functionality must be implemented by a Python script that is called from its procedure events and state events.
In most cases, you will have access to instruments from the Python script to implement the intended experimental procedure. This access is provided by declaring the instruments in the <procedure-events> element. The instruments declared that they will be available for both the procedure events and state events.
The states in the state machine are defined in the <states> element, which also makes it possible to define which Python functions are called for the enter, leave, and update state events.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the procedure that must be unique within the protocol, and which must be a valid variable name. |
name |
required |
Name of the procedure that is shown to the operator in LabBench Runner. |
session |
optional |
ID of the session that the procedure belongs to. This parameter must only be used if sessions are defined for the protocol. If sessions are defined then the operator will choose the active session when the protocol is initialized by LabBench Runner. LabBench Runner will then only show procedures belonging to the current active session. |
experimental-setup-id |
optional |
ID of the experimental setup configuration that will be selected when the procedure is performed. |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Defines the instruments involved in a procedure and specifies events that occur at the selection, start, completion, or abortion of the procedure. This element makes it possible to inject python code into a procedure that extends the base functionality that is provided by its LabBench implementation. |
|
optional |
Procedure properties can modify the selection and execution of procedures, data collection, and provide instructions to the operator and participants. |
|
|
optional |
The |
optional |
Place a condition on the inclusion of the procedure into a session. |
|
1 |
This definition requires that exactly one item be provided and that it be chosen from a fixed set of mutually exclusive alternatives. Only one alternative may appear, and all other alternatives must be absent. No alternative is mandatory on its own, but the choice as a whole is required, meaning the container is invalid unless exactly one of the allowed options is specified. |
|
required |
Definition of the states in the state machine. The following state events define the functionality of these states:
In the ProcedureContext
|
SequentialProcedureStateCollection
Definition of the states in the state machine. The following state events define the functionality of these states:
enter: a calculated attribute, that is executed when the state is entered.leave: a calculated attribute, that is executed when the state is left.update: a calculated attribute that is executed periodically. This attribute must return a string that controls whether the state machine will; "*") stay in the current state, State ID) go to the state with StateID, "abort") abort the procedure, "complete") complete the procedure.
In the ProcedureContext context, both procedure events and state events have access to a context.CurrentState object that provides:
CurrentState.ID: The State ID of the currently active state [ string(readonly)].CurrentState.RunningTime: The running time in milliseconds of the currently active state [ int(readonly) ].CurrentState.Name: Name of the currently active state [ string(readonly) ].CurrentState.Status: A text that will be shown to the operator in the procedure window. Can be set by the events to provide information to the operator.CurrentState.SetPlotter(lambda x, y): Events can set a Python function that must generate an image that will be shown to the operator in the procedure window.
Attributes
| Name | Use | Description |
|---|---|---|
enter |
optional |
Specifies code that will be executed when a state is entered [ bool = Calculated(context) ]. If False is returned, the procedure will be aborted. |
leave |
optional |
Specifies code that will be executed when a state is left [ bool = Calculated(context) ]. If False is returned, the procedure will be aborted. |
update |
required |
Specifies code that will be executed periodically while the procedure is active [ string = Calculated(context) ]. If text returned will control the next active state. How often the code is executed is controlled by the update rate of the procedure. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
SequentialProcedureState
Definition of a procedure state.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
ID of the procedure state. Must be unique, and not one of the reserved keywords for state or procedure transitions. These keywoards are, *, abort, and complete. |
name |
optional |
This optional attribute specifies a human readable name for the procedure state. If it is not specified the ID of the procedure state will be used instead. |
experimental-setup-id |
optional |
This optional attribute, specifies the ID of the experimental setup that will be active will the procedure state is active. If none is specified the experimental setup for the procedure will be used instead. |
AlgometryStimulusResponseProcedure
Stimulus-response procedures determine the psychophysical rating (VAS Rating) to a linearly increasing pressure stimulus. From this stimulus-response curve, several psychophysical parameters can be determined:
- PDT: The Pain Detection Threshold,
- PTL: The Pain Tolerance Limit, and
- PTT: The Pain Tolerance Threshold (PTT).
The determined parameters depend on the procedure configuration and the participant's instructions.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the procedure that must be unique within the protocol, and which must be a valid variable name. |
name |
required |
Name of the procedure that is shown to the operator in LabBench Runner. |
session |
optional |
ID of the session that the procedure belongs to. This parameter must only be used if sessions are defined for the protocol. If sessions are defined then the operator will choose the active session when the protocol is initialized by LabBench Runner. LabBench Runner will then only show procedures belonging to the current active session. |
experimental-setup-id |
optional |
ID of the experimental setup configuration that will be selected when the procedure is performed. |
second-cuff |
optional |
Inflate the second cuff together with the primary cuff [ bool ]. If this attribute is set to true, the value of the primary cuff parameter is irrelevant. Placing the two cuffs adjacent to each other can be used to study spatial summation. |
pressure-limit |
optional |
This attribute is the maximum pressure the device will deliver before it aborts the procedure [ double = Calculated(context) ]. The maximal pressure for the device is 100kPa. |
conditioning-time |
optional |
This attribute is the time from the procedure’s start until the pressure starts to increase linearly [ double = Calculated(context) ]. |
delta-pressure |
optional |
This attribute is the rate of increase [kPa/s] of the applied pressure [ double = Calculated(context) ]. |
vas-pdt |
optional |
The VAS score is interpreted as the Pain Detection Threshold (PDT) [ double = Calculated(context) ]. This attribute should be set to at least 0.1cm to allow for a small deadband in the button on the VAS meter, which is required so as not to risk that noise will accidentally trigger an early determination of the PDT. It can be set to higher than 0.1cm to allow for non-painful stimulations to be rated by the participant. |
stop-mode |
required |
Stop mode for the procedure (stop-on-maximal-rating or stop-when-button-pressed). This attribute determines whether the VAS scale has two (2) or three anchor points (3). When set to stop-on-maximal-rating the VAS scale has two anchor points (pain detection threshold (PDT), pain tolerance threshold (PTT)). When set to stop-when-button-pressed the VAS scale has three anchor points (pain detection threshold (PDT), pain tolerance limit (PTL), pain tolerance threshold (PTT)). |
primary-cuff |
required |
Determines which cuff (1 or 2) will be used for the pressure stimulation [ int = Calculated(context) ]. |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Defines the instruments involved in a procedure and specifies events that occur at the selection, start, completion, or abortion of the procedure. This element makes it possible to inject python code into a procedure that extends the base functionality that is provided by its LabBench implementation. |
|
optional |
Procedure properties can modify the selection and execution of procedures, data collection, and provide instructions to the operator and participants. |
|
|
optional |
The |
optional |
Place a condition on the inclusion of the procedure into a session. |
AlgometryConditionedPainProcedure
With the conditioned pain modulation procedure, one cuff applies static pressure while the other determines a stimulus-response curve. The stimulus-response curve determines the psychophysical rating (VAS Rating) to a linearly increasing pressure stimulus.
From this stimulus-response curve, several psychophysical parameters can be determined:
- Pain Detection Threshold (PDT),
- Pain Tolerance Limit (PTL),
- Pain Tolerance Threshold (PTT).
The determined parameters depend on the procedure configuration and the participant's instructions.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the procedure that must be unique within the protocol, and which must be a valid variable name. |
name |
required |
Name of the procedure that is shown to the operator in LabBench Runner. |
session |
optional |
ID of the session that the procedure belongs to. This parameter must only be used if sessions are defined for the protocol. If sessions are defined then the operator will choose the active session when the protocol is initialized by LabBench Runner. LabBench Runner will then only show procedures belonging to the current active session. |
experimental-setup-id |
optional |
ID of the experimental setup configuration that will be selected when the procedure is performed. |
conditional-pressure |
required |
This attribute is the pressure that will be applied with the conditioning cuff [ double = Calculated(context) ]. |
delta-conditional-pressure |
optional |
This attribute is the rate of increase [kPa/s] of the applied conditioning pressure [ double = Calculated(context) ]. |
conditioning-time |
optional |
This attribute is the time from the procedure’s start until the pressure starts to increase linearly [ double = Calculated(context) ]. |
pressure-limit |
optional |
This attribute is the maximum pressure the device will deliver before it aborts the procedure [ double = Calculated(context) ]. The maximal pressure for the device is 100kPa. |
delta-pressure |
optional |
This attribute is the rate of increase [kPa/s] of the applied pressure [ y = Calculated(context) ]. |
vas-pdt |
optional |
The VAS score is interpreted as the Pain Detection Threshold (PDT) [ double = Calculated(context) ]. This attribute should be set to at least 0.1cm to allow for a small deadband in the button on the VAS meter, which is required so as not to risk that noise will accidentally trigger an early determination of the PDT. It can be set to higher than 0.1cm to allow for non-painful stimulations to be rated by the participant. |
stop-mode |
required |
Stop mode for the procedure (stop-on-maximal-rating or stop-when-button-pressed). This attribute determines whether the VAS scale has two (2) or three anchor points (3). When set to stop-on-maximal-rating the VAS scale has two anchor points (pain detection threshold (PDT), pain tolerance threshold (PTT)). When set to stop-when-button-pressed the VAS scale has three anchor points (pain detection threshold (PDT), pain tolerance limit (PTL), pain tolerance threshold (PTT)). |
primary-cuff |
required |
Determines which cuff (1 or 2) will be used for the pressure stimulation [ double = Calculated(context) ]. |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Defines the instruments involved in a procedure and specifies events that occur at the selection, start, completion, or abortion of the procedure. This element makes it possible to inject python code into a procedure that extends the base functionality that is provided by its LabBench implementation. |
|
optional |
Procedure properties can modify the selection and execution of procedures, data collection, and provide instructions to the operator and participants. |
|
|
optional |
The |
optional |
Place a condition on the inclusion of the procedure into a session. |
AlgometryTemporalSummationProcedure
The temporal summation procedure applies a series of rectangular pressure stimuli to one or both cuffs. The participant is asked to rate the pain sensation of these stimuli on the VAS meter as soon as possible after the cessation of a pressure stimulus. The VAS rating for a stimulus is recorded just before the next stimulus is given or would have been given if it had not been the last stimulus in the series.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the procedure that must be unique within the protocol, and which must be a valid variable name. |
name |
required |
Name of the procedure that is shown to the operator in LabBench Runner. |
session |
optional |
ID of the session that the procedure belongs to. This parameter must only be used if sessions are defined for the protocol. If sessions are defined then the operator will choose the active session when the protocol is initialized by LabBench Runner. LabBench Runner will then only show procedures belonging to the current active session. |
experimental-setup-id |
optional |
ID of the experimental setup configuration that will be selected when the procedure is performed. |
no-of-stimuli |
optional |
This attribute is the number of pressure stimuli applied during the procedure [ int = Calculated(context) ]. |
t-on |
optional |
This attribute is the duration of the rectangular stimuli [ double = Calculated(context) ]. |
t-off |
optional |
This attribute is the pause between the stimuli in the series [ double = Calculated(context) ]. |
pressure-stimulate |
optional |
This attribute is the pressure that will be applied during the rectangular pressure stimuli [ double = Calculated(context) ]. |
pressure-static |
optional |
This attribute is the pressure that will be applied in between the pressure stimuli [ double = Calculated(context) ]. This value is included as a slight static pressure between the stimuli can prevent the cuff from shifting during the procedure. |
second-cuff |
optional |
Inflate the second cuff together with the primary cuff [ bool ]. If this attribute is set to true, the value of the primary cuff parameter is irrelevant. Placing the two cuffs adjacent to each other can be used to study spatial summation. |
primary-cuff |
optional |
Determines which cuff (1 or 2) will be used for the pressure stimulation [ int = Calculated(context) ]. |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Defines the instruments involved in a procedure and specifies events that occur at the selection, start, completion, or abortion of the procedure. This element makes it possible to inject python code into a procedure that extends the base functionality that is provided by its LabBench implementation. |
|
optional |
Procedure properties can modify the selection and execution of procedures, data collection, and provide instructions to the operator and participants. |
|
|
optional |
The |
optional |
Place a condition on the inclusion of the procedure into a session. |
AlgometryStaticTemporalSummationProcedure
The static temporal summation applies a constant pressure for a specified duration instead of a series of stimuli to determine the temporal summation of pressure stimulation.
During this pressure stimulation and for a period after the procedure, the participant's VAS score will be recorded as the result of the procedure.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the procedure that must be unique within the protocol, and which must be a valid variable name. |
name |
required |
Name of the procedure that is shown to the operator in LabBench Runner. |
session |
optional |
ID of the session that the procedure belongs to. This parameter must only be used if sessions are defined for the protocol. If sessions are defined then the operator will choose the active session when the protocol is initialized by LabBench Runner. LabBench Runner will then only show procedures belonging to the current active session. |
experimental-setup-id |
optional |
ID of the experimental setup configuration that will be selected when the procedure is performed. |
pressure-stimulate |
optional |
This attribute is the pressure that is applied during the static pressure stimulation [ double = Calculated(context) ]. |
stimulus-duration |
optional |
This attribute is the duration [s] of the constant pressure stimulation [ double = Calculated(context) ]. |
tail-duration |
optional |
This attribute is the duration after the cessation of the pressure stimulation in which the VAS score is recorded [ double = Calculated(context) ]. |
second-cuff |
optional |
Inflate the second cuff together with the primary cuff [ bool ]. If this attribute is set to true, the value of the primary cuff parameter is irrelevant. Placing the two cuffs adjacent to each other can be used to study spatial summation. |
primary-cuff |
optional |
Determines which cuff (1 or 2) will be used for the pressure stimulation [ int = Calculated(context) ]. |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Defines the instruments involved in a procedure and specifies events that occur at the selection, start, completion, or abortion of the procedure. This element makes it possible to inject python code into a procedure that extends the base functionality that is provided by its LabBench implementation. |
|
optional |
Procedure properties can modify the selection and execution of procedures, data collection, and provide instructions to the operator and participants. |
|
|
optional |
The |
optional |
Place a condition on the inclusion of the procedure into a session. |
AlgometryStimulusRatingProcedure
The stimulus rating procedure provides a way to determine the Pain Detection Threshold (PDT), the Pain Tolerance Threshold (PTT), or both with an attached button.
The procedure is executed in the same way as the stimulus-response procedure and is defined by the same parameters, with the exception that it does not have a stop-mode parameter but instead has a measurement parameter.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the procedure that must be unique within the protocol, and which must be a valid variable name. |
name |
required |
Name of the procedure that is shown to the operator in LabBench Runner. |
session |
optional |
ID of the session that the procedure belongs to. This parameter must only be used if sessions are defined for the protocol. If sessions are defined then the operator will choose the active session when the protocol is initialized by LabBench Runner. LabBench Runner will then only show procedures belonging to the current active session. |
experimental-setup-id |
optional |
ID of the experimental setup configuration that will be selected when the procedure is performed. |
second-cuff |
optional |
Inflate the second cuff together with the primary cuff [ bool ]. If this attribute is set to true, the value of the primary cuff parameter is irrelevant. Placing the two cuffs adjacent to each other can be used to study spatial summation. |
pressure-limit |
optional |
This attribute is the maximum pressure the device will deliver before it aborts the procedure [ double = Calculated(context) ]. The maximal pressure for the device is 100kPa. |
conditioning-time |
optional |
This attribute is the time from the procedure’s start until the pressure starts to increase linearly [ double = Calculated(context) ]. |
delta-pressure |
optional |
This attribute is the rate of increase [kPa/s] of the applied pressure [ double = Calculated(context) ]. |
primary-cuff |
required |
Determines which cuff (1 or 2) will be used for the pressure stimulation [ int = Calculated(context) ]. |
measurement |
required |
Determine the Pain Detection Threshold (PDT), Pain Tolerance Threshold (PTT), or both. If the PDT or PTT is to be determined, the participant must press the button when the threshold is reached. If both the PDT and PTT are to be determined, the participant must press the button when the PDT is reached and release it when the PTT is reached. |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Defines the instruments involved in a procedure and specifies events that occur at the selection, start, completion, or abortion of the procedure. This element makes it possible to inject python code into a procedure that extends the base functionality that is provided by its LabBench implementation. |
|
optional |
Procedure properties can modify the selection and execution of procedures, data collection, and provide instructions to the operator and participants. |
|
|
optional |
The |
optional |
Place a condition on the inclusion of the procedure into a session. |
AlgometryConditionedPainRatingProcedure
The conditioned pain modulation rating procedure is analogous to the conditioned pain modulation procedure that uses a button instead of the VAS to determine pain detection threshold (PDT), pain tolerance threshold (PTT), or both.
The same parameters define the procedure as the conditioned pain modulation procedure, with the addition of the measurement parameter that defines how the button is used to determine PDT, PTT, or both.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the procedure that must be unique within the protocol, and which must be a valid variable name. |
name |
required |
Name of the procedure that is shown to the operator in LabBench Runner. |
session |
optional |
ID of the session that the procedure belongs to. This parameter must only be used if sessions are defined for the protocol. If sessions are defined then the operator will choose the active session when the protocol is initialized by LabBench Runner. LabBench Runner will then only show procedures belonging to the current active session. |
experimental-setup-id |
optional |
ID of the experimental setup configuration that will be selected when the procedure is performed. |
conditional-pressure |
required |
This attribute is the pressure that will be applied with the conditioning cuff [ double = Calculated(context) ]. |
delta-conditional-pressure |
optional |
This attribute is the rate of increase [kPa/s] of the conditioning pressure [ double = Calculated(context) ]. |
conditioning-time |
optional |
This attribute is the time from the procedure’s start until the pressure starts to increase linearly [ double = Calculated(context) ]. |
pressure-limit |
optional |
This attribute is the maximum pressure the device will deliver before it aborts the procedure. The maximal pressure for the device is 100kPa. |
delta-pressure |
optional |
This attribute is the rate of increase [kPa/s] of the applied pressure [ double = Calculated(context) ]. |
primary-cuff |
required |
Determines which cuff (1 or 2) will be used for the pressure stimulation [ double = Calculated(context) ]. |
measurement |
required |
Determine the Pain Detection Threshold (PDT), Pain Tolerance Threshold (PTT), or both. If the PDT or PTT is to be determined, the participant must press the button when the threshold is reached. If both the PDT and PTT are to be determined, the participant must press the button when the PDT is reached and release it when the PTT is reached. |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Defines the instruments involved in a procedure and specifies events that occur at the selection, start, completion, or abortion of the procedure. This element makes it possible to inject python code into a procedure that extends the base functionality that is provided by its LabBench implementation. |
|
optional |
Procedure properties can modify the selection and execution of procedures, data collection, and provide instructions to the operator and participants. |
|
|
optional |
The |
optional |
Place a condition on the inclusion of the procedure into a session. |
AlgometryArbitraryTemporalSummationProcedure
The arbitrary temporal summation procedure applies a series of rectangular pressure stimuli to one or both cuffs.
The participant is asked to rate the pain sensation of these stimuli on the VAS meter as soon as possible after the cessation of a pressure stimulus.
The VAS rating for a stimulus is recorded just before the next stimulus is given or would have been given if it had not been the last stimulus in the series. The arbitrary temporal summation procedure makes it possible to specify each stimulus in the series individually, and thus, each stimulus can have a different intensity and duration.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the procedure that must be unique within the protocol, and which must be a valid variable name. |
name |
required |
Name of the procedure that is shown to the operator in LabBench Runner. |
session |
optional |
ID of the session that the procedure belongs to. This parameter must only be used if sessions are defined for the protocol. If sessions are defined then the operator will choose the active session when the protocol is initialized by LabBench Runner. LabBench Runner will then only show procedures belonging to the current active session. |
experimental-setup-id |
optional |
ID of the experimental setup configuration that will be selected when the procedure is performed. |
pressure-static |
optional |
This attribute is the pressure that will be applied in between the pressure stimuli [ double = Calculated(context) ]. This value is included as a slight static pressure between the stimuli can prevent the cuff from shifting during the procedure. |
second-cuff |
optional |
Inflate together with the primary cuff [ bool ]. If this attribute is set to true, the value of the primary cuff parameter is irrelevant. Placing the two cuffs adjacent to each other can be used to study spatial summation. |
primary-cuff |
required |
Determines which cuff [1 or 2] that will be used for the pressure stimulation [ int = Calculated(context) ]. |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Defines the instruments involved in a procedure and specifies events that occur at the selection, start, completion, or abortion of the procedure. This element makes it possible to inject python code into a procedure that extends the base functionality that is provided by its LabBench implementation. |
|
optional |
Procedure properties can modify the selection and execution of procedures, data collection, and provide instructions to the operator and participants. |
|
|
optional |
The |
optional |
Place a condition on the inclusion of the procedure into a session. |
|
|
optional |
The |
TemporalSummationStimulus
Specification of a pressure stimulus in the series of pressure stimuli.
Attributes
| Name | Use | Description |
|---|---|---|
pressure |
required |
Stimulation pressure [ double = Calculated(context) ]. |
t-on |
required |
Duration of the stimulus [ double = Calculated(context) ] |
t-off |
required |
Pause between stimulations [ double = Calculated(context) ] |
ThresholdEstimationProcedure
The threshold estimation procedure is used to estimate thresholds/psychometric functions when LabBench controls the stimulus generation automatically. Estimation of these thresholds/psychometric functions consists of three parts: the stimulus modality, response task, and estimation algorithm:
- Stimulus modality: the type of stimulus, such as tactile, thermal, pressure, or electrical, presented to the participant and for which a threshold/psychometric function is estimated.
- Response task: the perception task that the participant is asked to perform when the stimulus is presented. The outcome of this task is either true: the participant performed the task correctly, or false: the the participant failed to perform the task correctly.
- Estimation algorithm: the adaptive algorithm by which the threshold/psychometric function is estimated. This algorithm uses the outcome of the response task (correct/incorrect) to update the estimate of the threshold or psychometric function for each stimulus presentation.
The thresholds or psychometric functions are estimated for an independent variable (x). An increase in x is assumed to increase the probability that the participant will correctly perform the response task. If there is an inverted relationship, the independent variable (x) inversion must be performed in the stimulus specification.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the procedure that must be unique within the protocol, and which must be a valid variable name. |
name |
required |
Name of the procedure that is shown to the operator in LabBench Runner. |
session |
optional |
ID of the session that the procedure belongs to. This parameter must only be used if sessions are defined for the protocol. If sessions are defined then the operator will choose the active session when the protocol is initialized by LabBench Runner. LabBench Runner will then only show procedures belonging to the current active session. |
experimental-setup-id |
optional |
ID of the experimental setup configuration that will be selected when the procedure is performed. |
stimulus-update-rate |
required |
Update rate for stimulus generation [ int = Calculated(context) ]. |
trigger-update-rate |
optional |
Update rate for trigger generation [ int = Calculated(context) ]. If not defined, the stimulus generation update rate will be used. |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Defines the instruments involved in a procedure and specifies events that occur at the selection, start, completion, or abortion of the procedure. This element makes it possible to inject python code into a procedure that extends the base functionality that is provided by its LabBench implementation. |
|
optional |
Procedure properties can modify the selection and execution of procedures, data collection, and provide instructions to the operator and participants. |
|
|
optional |
The |
optional |
Place a condition on the inclusion of the procedure into a session. |
|
1 |
This definition requires that exactly one item be provided and that it be chosen from a fixed set of mutually exclusive alternatives. Only one alternative may appear, and all other alternatives must be absent. No alternative is mandatory on its own, but the choice as a whole is required, meaning the container is invalid unless exactly one of the allowed options is specified. |
|
optional |
Configuration of procedurecomponents, which includes configuration of the stimulation, trigger, and sampling components that are used by the procedure. |
|
|
1 |
This definition requires that exactly one item be provided and that it be chosen from a fixed set of mutually exclusive alternatives. Only one alternative may appear, and all other alternatives must be absent. No alternative is mandatory on its own, but the choice as a whole is required, meaning the container is invalid unless exactly one of the allowed options is specified. |
optional |
Custom stimulation where the stimulation is implemented with calculated parameters that can either be a single-line Python statement or, more commonly, by calling a Python function in a script. |
|
|
optional |
The |
ManualYesNoResponse
In a Manual Yes/No response task, the experimenter asks the participant after each stimulation whether they felt the stimulus. This response is then entered into the algorithm manually by the experimenter. Consequently, the procedure will wait indefinitely until the participant has answered the experimenter.
Attributes
| Name | Use | Description |
|---|---|---|
instruction |
optional |
Question that the experimenter must ask the participant that the participant must answer with either a Yes or No response [ string ]. |
YesNoResponse
In a Yes/No response task, the participant is asked to press the button each time a stimulus is felt. This response is timed, meaning that if the participant does not press the button before the next stimulus is given, then it will be assumed that the stimulus was not felt.
ForcedYesNoResponse
In the forced yes/no task, the stimulus is first presented to the participant, along with a cue that prompts the participant to attend to it.
Then a probe image is presented to the participant, with instructions to answer Yes or No to a stimulus quality; for example, if one or two stimuli could be felt, the participant presses one button for Yes and another for No. The task will wait indefinitely until the participant has answered the question.
This task is usually used for stimuli that are always felt but whose quality changes with increasing intensity. Examples of such stimuli are two-point stimuli or stimuli used to determine a just noticeable difference.
Attributes
| Name | Use | Description |
|---|---|---|
probe |
required |
Image that will be used to probe the participant for an answer to the Yes/No question [ Image = Calculated(context) ]. |
cue |
required |
Image that will be used to cue the participant to pay attention to the stimulus [ Image = Calculated(context) ]. |
display-duration |
optional |
The duration in milliseconds that the cue will be displayed to the participant [ int ]. |
display-interval |
optional |
The duration in milliseconds between the display of the cue and the display of the prompt [ int ]. The display-interval value must be greater than the display-duration value. |
pause |
optional |
The delay in milliseconds between when the participant answered the question and the next stimulus is presented [ int ]. |
yes-button |
required |
Button that the participant will use to indicate a Yes answer to the question [ Button ]. |
no-button |
required |
Button that the participant will use to indicate a No answer to the question [ Button ]. |
ManualIntervalResponse
In the Manual Interval Rating Task, the participant is asked to rate the stimuli's sensations on an interval rating scale by the experimenter. The participant provides this rating verbally, which the experimenter then manually enters into the algorithm. The response task will wait indefinitely until the experimenter has entered the participant's rating into the algorithm. If the participant rate exceeds the target, the response task is successful and returns True; otherwise, it returns False.
The Manual Interval Categorical Rating task is an example of a response task that enables determining the stimulus intensity required to evoke a supramaximal response, rather than determining the intensity required to evoke a threshold response, such as a perception or pain threshold.
Attributes
| Name | Use | Description |
|---|---|---|
instruction |
optional |
Question that the experimenter must ask to prompt the participant to rate the sensation on the interval rating scale [ string ]. |
target |
required |
Target rating for the response task [ int = Calculated(context) ]. |
minimum |
optional |
Minimum rating on the interval rating scale [ int ]. Default is 0. |
maximum |
optional |
Maximal rating on the interval rating scale [ int ]. Default is 10. |
IntervalResponse
In the Interval Rating Task, the participant is asked to rate the stimuli's sensations on an interval rating scale. If the participant rate exceeds the target, the response task is successful and returns True; otherwise, it returns False.
The Interval Rating task is an example of a response task that enables determining the stimulus intensity required to evoke a supramaximal response, rather than determining the intensity required to evoke a threshold response, such as a perception or pain threshold.
Attributes
| Name | Use | Description |
|---|---|---|
target |
required |
Target rating for the response task [ int = Calculated(context) ]. |
ManualCategoricalResponse
@Schema.Core.Procedures.Psychophysics.ThresholdEstimation.ResponseTasks.ManualCategoricalResponse.md
Attributes
| Name | Use | Description |
|---|---|---|
instruction |
optional |
Question that the experimenter must ask to prompt the participant to rate the sensation on the categorical rating scale [ string ]. |
target |
required |
Target rating for the response task [ int = Calculated(context) ]. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
ManualCategory
In the Manual Categorial Rating Task, the participant is asked to rate the stimuli's sensations on a categorial rating scale by the experimenter. The participant provides this rating verbally, which the experimenter then manually enters into the algorithm. The response task will wait indefinitely until the experimenter has entered the participant 's rating into the algorithm. If the participant rate exceeds the target, the response task is successful and returns True; otherwise, it returns False.
The Manual Categorical Rating task is an example of a response task that enables determining the stimulus intensity required to evoke a supramaximal response, rather than determining the intensity required to evoke a threshold response, such as a perception or pain threshold.
Attributes
| Name | Use | Description |
|---|---|---|
text |
required |
Description of the category [ dynamic string ] |
CategoricalResponse
In the Categorial Rating Task, the participant is asked to rate the stimuli's sensations on a categorial rating scale. If the participant rate exceeds the target, the response task is successful and returns True; otherwise, it returns False.
The Categorical Rating task is an example of a response task that enables determining the stimulus intensity required to evoke a supramaximal response, in contrast to determining the intensity required to evoke a threshold response, such as a perception or pain threshold.
Attributes
| Name | Use | Description |
|---|---|---|
target |
required |
Target rating for the response task [ int = Calculated(context) ]. |
RatioResponse
In the Ratio Rating Task, the participant is asked to rate the stimuli's sensations on a ratio rating scale/visual analogue scale. If the participant rate exceeds the target, the response task is successful and returns True; otherwise, it returns False.
The Ratio Rating task is an example of a response task that enables determining the stimulus intensity required to evoke a supramaximal response, rather than determining the intensity required to evoke a threshold response, such as a perception or pain threshold.
Attributes
| Name | Use | Description |
|---|---|---|
target |
required |
Target rating for the response task [ double = Calculated(context) ]. |
IntervalForcedChoiceResponse
In an interval forced choice response task, the participant is presented with N time intervals in which the stimulus is given in one of them. The participant is asked to select the interval at which the stimulus was felt. If the participant can feel the stimulus, they will select the correct interval; if they cannot, they will have a 1/N chance to select the correct interval.
Attributes
| Name | Use | Description |
|---|---|---|
probe |
required |
Image that will be used to probe the participant for an answer to which stimulus interval the stimulus was presented when the cue was shown[ Image = Calculated(context) ]. |
display-duration |
optional |
The duration in milliseconds that the cue will be displayed to the participant [ int ]. |
display-interval |
optional |
The duration in milliseconds between the display of cues or the prompt [ int ]. The display-interval value must be greater than the display-duration value. |
pause |
optional |
The delay in milliseconds between when the participant answered the question and the next stimulus is presented [ int ]. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
AlternativeForcedChoiceResponse
In an alternative forced choice response task, the participant is presented with one stimulus randomly selected from a set of N stimulus alternatives. Once the stimulus is complete, the participant will be asked to choose the given stimulus from the set of stimulus alternatives. If the participant can feel the stimulus, they will select the correct one; if they cannot, they will have a 1/N chance to select the correct stimulus.
Attributes
| Name | Use | Description |
|---|---|---|
probe |
required |
Image that will be used to probe the participant for an answer to which stimulus alternative was presented when the cue was shown[ Image = Calculated(context) ]. |
cue |
required |
Image that will be used to cue the participant to pay attention to the stimulus [ Image = Calculated(context) ]. |
display-duration |
optional |
The duration in milliseconds that the cue will be displayed to the participant [ int ]. |
display-interval |
optional |
The duration in milliseconds between the display of the cue and the display of the prompt [ int ]. The display-interval value must be greater than the display-duration value. |
pause |
optional |
The delay in milliseconds between when the participant answered the question and the next stimulus is presented [ int ]. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
StimulusAlternative
Configuration of a stimulus alternative where each is a different variant of the stimulus. For example, in a procedure that determines the just noticeable difference between three audible tones, there will be three different stimulus alternatives, for which either the first, middle, or last tone will be of a different intensity than the other tones.
For each trial, one stimulus alternative will be selected at random and presented to the participant. The selected one is available to calculated parameters in the StimulusAlternative parameter, whose value is the id attribute of the selected stimulus alternative.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Unique ID of the stimulus alternative [ string ]. |
button |
required |
Button that the participant will use to indicate if they felt this specific stimulus alternative. |
StimulusChannel
A stimulus channel estimates the threshold or psychometric function of a single stimulus. This threshold or psychometric function is estimated with a dedicated estimation method (Psi-method, Up/Down method, and similar) that maintains its own state for the channel but uses the same response task to determine the relationship between a stimulus parameter (x) and the probabilistic behavioural response of the participants (i.e., whether they can perform the response task correctly).
Once a threshold or psychometric function has been estimated, the result can be accessed by calculated parameters as [ProcedureID].[ChannelID].
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Unique ID of the stimulus channel [ string ]. |
name |
required |
Name of the channel [ string ]. |
Imin |
optional |
Minimal stimulus intensity for the channel [ double = Calculated(context) ]. |
Imax |
optional |
Maximal stimulus intensity for the channel [ double = Calculated(context) ]. |
confidence-level |
optional |
Confidence level when plotting estimated parameters for psychometric functions (alpha, beta, etc) [ double = Calculated(context) ]. |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Catch trials are intermittent trials in which the stimulus is presented at an unequivocally subthreshold level, allowing the experimenter to verify attention. By comparing responses on these impossible trials to their known correct outcomes, catch trials provide direct empirical estimates of guess rates, helping distinguish genuine perceptual limits from non-sensory errors. |
|
1 |
This definition requires that exactly one item be provided and that it be chosen from a fixed set of mutually exclusive alternatives. Only one alternative may appear, and all other alternatives must be absent. No alternative is mandatory on its own, but the choice as a whole is required, meaning the container is invalid unless exactly one of the allowed options is specified. |
|
optional |
Specifies a set of triggers to be generated. These triggers will all be generated with a given duration ( A trigger may generate a trigger on multiple digital outputs. Each output is specified with a nested |
|
optional |
Definition of a stimulus. |
CatchTrials
Catch trials are predefined control trials incorporated into an experimental protocol. These trials present either a stimulus with a known or obvious outcome or no stimulus, and serve to evaluate participant attention, task comprehension, and response compliance. Catch trials do not contribute to the primary experimental measurements.
Attributes
| Name | Use | Description |
|---|---|---|
order |
required |
Randomisation of the catch trial:
|
interval |
required |
The interval, block-size, or probability with which the catch trial is generated [ int ]. |
PsiAlgorithm
This method implements the Psi method of Kontsevich & Tyler (1999). The Psi method is a Bayesian adaptive procedure that maintains a full joint posterior distribution over the threshold and slope of the psychometric function, while holding the guess and lapse rates fixed.
On each trial, the algorithm evaluates a set of candidate stimulus intensities and, for each one, computes the expected reduction in entropy of the current posterior if that stimulus were presented. It then selects the stimulus level that maximizes expected information gain, presents it to the observer, records the binary response, and updates the posterior via Bayes� rule.
This iterative cycle - predict information gain => choose optimal stimulus => observe response => update posterior - allows the method to rapidly converge on precise estimates of threshold and slope with high efficiency compared to traditional staircases or other adaptive schemes.
Attributes
| Name | Use | Description |
|---|---|---|
number-of-trials |
required |
Number of trials that are performed with the algorithm [ int = Calculated(context) ]. |
Elements
| Name | Use | Description |
|---|---|---|
required |
The psychometric function that links stimulus intensity to the probability of a correct or “yes” response, providing a quantitative model of perceptual sensitivity. |
|
required |
The beta range specifies the set of slope values considered in the posterior distribution, constraining the possible steepnesses of the psychometric function that the algorithm can infer. |
|
required |
The alpha range defines the set of threshold values over which the algorithm computes and updates its posterior, effectively bounding the possible thresholds it can estimate. |
|
required |
The intensity range defines the allowable stimulus levels the algorithm can choose from on each trial when selecting the next, most informative stimulus. |
ArrayGenerator
Generation of arrays.
Attributes
| Name | Use | Description |
|---|---|---|
type |
optional |
Algorithm to use for the generation of values:
|
n |
optional |
Number of samples to generate [ double = Calculated(context) ]. Value will be rounded down to nearest integer. |
x0 |
optional |
Starting value for the generated values [ double = Calculated(context) ]. |
x1 |
optional |
End value for the generated values [ double = Calculated(context) ]. |
base |
optional |
Base value for logspace generated values [ double = Calculated(context) ]. |
value |
optional |
Value for array generated values [ double[] = Calculated(context) ]. |
UpDownAlgorithm
The up/down, also known as the staircase method, is an adaptive method that estimates a psychophysical threshold by increasing the intensity until the participant performs the response task correctly, then reversing the direction of intensity change and decreasing it until the participant fails to perform the response task correctly.
This pattern of increasing/decreasing the intensity until the participant either succeeds or fails the response task is repeated a set number of times. When complete, the algorithm finds the threshold as the average intensity at which the intensity change reversed, due to a change from failing (increasing threshold) to succeeding (decreasing threshold). The algorithm can be configured to either initially increase or decrease the intensity with the initial-direction attribute.
The step size of the intensity change can either be absolute or relative. If it is absolute, the step size is in the same unit as the intensity and changes the intensity by a fixed amount. If it is relative, its intensity changes by a given fraction of its current value. The step size can also be adaptive: initially higher to approach the threshold quickly, then decreasing with each reversal of the intensity change until a given maximal reduction is reached. When the step size is adaptive, the average will be weighted by the inverse of the step sizes.
Attributes
| Name | Use | Description |
|---|---|---|
reversal-rule |
optional |
The number of times the participants must either succeed or fail for the intensity change to change direction [int = Calculated(context)]. This attribute is used for both upward and downward directions unless either the |
up-rule |
optional |
The number of times the participants must succeed when the intensity is increased upward for the intensity change to change direction [int = Calculated(context)]. The default value for this attribute is one (1). |
down-rule |
optional |
The number of times the participants must fail when the intensity is decreased upward for the intensity change to change direction [int = Calculated(context)]. The default value for this attribute is one (1). |
step-size |
optional |
Will be used as the initial step size in both the up and down directions, unless the step-size-up or step-size-down is defined [double = Calculated(context)]. Default value is 0.1. |
step-size-up |
optional |
Will be used as the initial step size in the upward direction [double = Calculated(context)]. If it is undefined, the step-size attribute will be used instead as the initial step size for the up direction. |
step-size-down |
optional |
Will be used as the initial step size in the downward direction [double = Calculated(context)]. If it is undefined, the step-size attribute will be used instead as the initial step size for the downward direction. |
step-size-reduction |
optional |
Used to configure adaptive step sizes [ double = Calculated(context) ]. The step size after a reversal will be |
max-step-size-reduction |
optional |
The maximum by which step sizes will be reduced when adaptive step sizes are enabled by setting the |
step-size-type |
optional |
Type of step size: absolute, the step size is added or subtracted to the current intensity, or relative, the step size is relative to the current intensity. |
stop-rule |
optional |
Number of reversals required before the algorithm is completed [ int = Calculated(context) ]. |
skip-rule |
optional |
The number of initial reversals that are skipped when calculating the threshold as the average of the intensity at the reversals [ int = Calculated(context) ]. Consequently, if this |
start-intensity |
required |
Initial intensity for the algorithm [ double = Calculated(context) ]. |
initial-direction |
optional |
Initial direction for the intensity change. |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Psychometric function. |
DiscreteUpDownAlgorithm
The up/down method, also known as the staircase method, is an adaptive method that estimates a psychophysical threshold by increasing the intensity until the participant performs the response task correctly, then reversing the direction of intensity change and decreasing it until the participant fails to perform the response task correctly. This discrete version of the method <discrete-up-down-method> is different from the continuous version of the method <up-down-method> in that stimulus intensities can only take on values from a discrete set of values instead of from a continuum of values between the minimum and maximum intensity values.
This pattern of increasing/decreasing the intensity until the participant either succeeds or fails the response task is repeated a set number of times. When complete, the algorithm finds the threshold as the average intensity at which the intensity change reverses, from failing (increasing threshold) to succeeding (decreasing threshold). The algorithm can be configured to either initially increase or decrease the intensity with the initial-direction attribute.
The index of the currently selected intensity is available to calculated parameters as the IntensityIndex variable.
Attributes
| Name | Use | Description |
|---|---|---|
stop-rule |
required |
Number of reversals required before the algorithm is completed [ int = Calculated(context) ]. |
initial-intensity |
required |
This attribute is used to select the initial intensity from the set of allowed intensities (‘intensities’) [ double = Calculated(context) ]. The initial intensity will be selected as the intensity in the set of allowed intensities closest to the value of this initial intensity attribute. If this attribute is not defined, the initial intensity will be set based on the initial direction. If the initial direction is upward, the smallest allowed intensity will be used; otherwise, the largest allowed intensity will be used. |
intensities |
required |
The discrete set of allowed stimulus intensities in the form of an array of doubles [ double[] = Calculated(context) ]. These values must be ordered from the smallest to the largest and must be within the bounds of the Imin and Imax attributes for the stimulus channel. |
initial-direction |
optional |
Initial direction for the intensity change. |
initial-step-size |
optional |
Sets the initial step size [ int = Calculated(context) ]. The initial step size can be set to a value larger than one (1) to initially rapidly approach the threshold. Once a reversal has occurred, the step size will be set to one (1). |
skip-rule |
optional |
The number of initial reversals that are skipped when calculating the threshold as the average of the intensity at the reversals [ int = Calculated(context) ]. Consequently, if this |
ColdPressorProcedure
The Cold Pressor procedure is a standardized experimental pain paradigm in which a participant immerses a hand or forearm in cold water to determine pain detection (PDT) and tolerance thresholds (PTT). The thresholds are measured as the time to pain onset and the time to pain tolerance.
The procedure can be configured to measure PDT, PTT, or both. When a single threshold is measured, time measurement is started with a button press when the hand is placed in the cold water and stopped with a second button press when the hand is withdrawn from the water. When both thresholds are measured, the second button press marks the PDT, and the third button press marks the PTT when the hand is withdrawn from the water.
While the procedure is designed for the Cold Pressor procedure, it can be used for any task for which detection and tolerance thresholds can be quantified by the time the participant experiences them. All instructions and descriptive texts can be customised to adapt the procedure for other tasks.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the procedure that must be unique within the protocol, and which must be a valid variable name. |
name |
required |
Name of the procedure that is shown to the operator in LabBench Runner. |
session |
optional |
ID of the session that the procedure belongs to. This parameter must only be used if sessions are defined for the protocol. If sessions are defined then the operator will choose the active session when the protocol is initialized by LabBench Runner. LabBench Runner will then only show procedures belonging to the current active session. |
experimental-setup-id |
optional |
ID of the experimental setup configuration that will be selected when the procedure is performed. |
control |
optional |
Configuration of who marks the events with a press of a button: the operator or the participant. |
measurement |
required |
This attribute controls how the procedure interprets button presses and can be used to determine the PDT, PTT, or both:
For all measurements the first button press markes the start of the task. |
time-limit |
required |
Time limit for the procedure in seconds [ double = Calculated(context) ]. If the end event has been marked within this time limit, the procedure will end automatically, and the participant will be marked as a non-responder. |
button |
required |
Configuration of the button used to mark events during the procedure. |
ready-instruction |
optional |
Instructions to be used when the procedure is ready to run [ dynamic procedure ]. The default text for this instruction is "Procedure is ready to run". |
completed-instruction |
optional |
The default text for this instruction is "Procedure is completed". |
pending-instruction |
optional |
Instructions to be used when the procedure is running and waiting for the first event to be marked [ dynamic string ]. For the cold-pressor procedure, the first event is when the participant’s hand is placed in the water. The default text for this instruction is "Press the button when the hand is placed in the water". |
pain-instruction |
optional |
Instructions to be used when determining the pain detection threshold (PDT) [ dynamic string ]. This instruction applies to PDT and BOTH measurements. The default text for this instruction is "Press the button when pain is felt". |
completion-instruction |
optional |
Instructions to be used for the final event [ dynamic string ]. For the cold-pressor procedure, this event is the withdrawal of the hand from the water. The default text for this instruction is "Press the button when the hand is withdrawn from the water". |
pdt-label |
optional |
Label to be used for the PDT measurement [ dynamic string ]. The default value is cold pain detection threshold (CPD). |
ptt-label |
optional |
Label to be used for the PTT measurement [ dynamic string ]. The default value is cold pain tolerance threshold (CPT) |
non-responder-label |
optional |
Description of non-responders [ dynamic string ]. |
responder-label |
optional |
Description of responders [ dynamic string ]. |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Defines the instruments involved in a procedure and specifies events that occur at the selection, start, completion, or abortion of the procedure. This element makes it possible to inject python code into a procedure that extends the base functionality that is provided by its LabBench implementation. |
|
optional |
Procedure properties can modify the selection and execution of procedures, data collection, and provide instructions to the operator and participants. |
|
|
optional |
The |
optional |
Place a condition on the inclusion of the procedure into a session. |
ManualThresholdEstimationProcedure
The manual threshold estimation procedure is used to estimate thresholds/psychometric functions when LabBench cannot control the stimulus, and instead, the experimenter must manually apply the stimulus to the participant. Estimation of these thresholds/psychometric functions consists of two parts: response task and estimation algorithm:
- Response task: the perception task that the participant is asked to perform when the stimulus is presented. The outcome of this task is either correct: the participant perceived the stimulus correctly, or incorrect: the stimulus intensity was too low, and the participant failed to perceive the stimulus correctly.
- Estimation algorithm: the adaptive algorithm by which the threshold/psychometric function is estimated. This algorithm uses the outcome of the response task (correct/incorrect) to update the estimate of the threshold or psychometric function for each stimulus presentation.
The stimulus is defined by the nature of the questions asked in the response task. The thresholds or psychometric functions are estimated for an independent variable (x). An increase in x is assumed to increase the probability that the participant will correctly perform the response task.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the procedure that must be unique within the protocol, and which must be a valid variable name. |
name |
required |
Name of the procedure that is shown to the operator in LabBench Runner. |
session |
optional |
ID of the session that the procedure belongs to. This parameter must only be used if sessions are defined for the protocol. If sessions are defined then the operator will choose the active session when the protocol is initialized by LabBench Runner. LabBench Runner will then only show procedures belonging to the current active session. |
experimental-setup-id |
optional |
ID of the experimental setup configuration that will be selected when the procedure is performed. |
stimulus-unit |
required |
Stimulus unit [ string ]. |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Defines the instruments involved in a procedure and specifies events that occur at the selection, start, completion, or abortion of the procedure. This element makes it possible to inject python code into a procedure that extends the base functionality that is provided by its LabBench implementation. |
|
optional |
Procedure properties can modify the selection and execution of procedures, data collection, and provide instructions to the operator and participants. |
|
|
optional |
The |
optional |
Place a condition on the inclusion of the procedure into a session. |
|
optional |
The procedure instructs the experimenter which stimulus intensity to apply to the participant for each iteration of the estimation. For specific mechanical stimulators, there can be an offset between the scale that the experimenter uses to set the stimulus intensity and the actual intensity given by the stimulator to the participant. For example, when a custom-made two-point discriminator is made from a caliper, there might be a constant offset between the distance indicated on the caliper scale and the distance between the tips of the custom-made prongs attached to the caliper. The intensity-transformation allows the intensity displayed to the experimenter to be linearly transformed before it is shown to the experimenter, meaning that the experimenter will not need to apply this transformation mentally while following the procedure’s instructions. |
|
optional |
A catch trial is a trial in which no stimulus or the equivalent of no stimulus is presented.It is included to estimate the participant’s baseline tendency to respond positively without a stimulus. |
|
1 |
This definition requires that exactly one item be provided and that it be chosen from a fixed set of mutually exclusive alternatives. Only one alternative may appear, and all other alternatives must be absent. No alternative is mandatory on its own, but the choice as a whole is required, meaning the container is invalid unless exactly one of the allowed options is specified. |
|
|
1 |
This definition requires that exactly one item be provided and that it be chosen from a fixed set of mutually exclusive alternatives. Only one alternative may appear, and all other alternatives must be absent. No alternative is mandatory on its own, but the choice as a whole is required, meaning the container is invalid unless exactly one of the allowed options is specified. |
ManualCatchTrials
A catch trial is a trial in which no stimulus or the equivalent of no stimulus is presented.It is included to estimate the participant's baseline tendency to respond positively without a stimulus.
Attributes
| Name | Use | Description |
|---|---|---|
order |
required |
Randomisation of the catch trial:
|
interval |
required |
The interval, block-size, or probability with which the catch trial is generated [ int ]. |
image |
optional |
The image that is used to instruct the operator to perform a catch trial [ image = Calculated(context) ] |
instruction |
optional |
The instruction used to inform the operator to perform a catch trial [ dynamic string ] |
ManualPsiAlgorithm
The Psi Method, developed by Lenny Kontsevich and Christopher Tyler (1999), is a Bayesian adaptive psychometric procedure used to estimate perception thresholds and the shape of the psychometric function (like slope, lapse rate, etc.). It is more advanced than up/down staircases and offers greater efficiency and precision. The algorithm aims to estimate the full psychometric function for the perception of a stimulus instead of only determining a threshold. At each trial in the algorithm, a posterior probability distribution is maintained for the unknown parameters of the psychometric function (alpha, beta).
At each trial, the method will:
- The posterior probability distributions for correct and incorrect results are calculated based on Bayes's Theorem from the a priori probability distribution (the posterior probability distribution from the previous step in the algorithm).
- Determine the optimal stimulus intensity that reveals the most information on the unknown parameters of the psychometric function. This optimal procedure intensity is determined by minimizing the entropy based on Shannon entropy (H) calculated from the posterior probability distributions that will result from both a correct and incorrect response.
- The response task (Yes/No, One Interval Forced Choice, or Two Interval Forced Choice) procedures the optimal stimulus intensity.
- Depending on the participant's response to the response task, the posterior probability distribution for either the correct or incorrect response is selected as the a priori probability distribution for the next step in the algorithm.
Consequently, the algorithm will iteratively update its information on the most probable psychometric function. The algorithm is set to perform a fixed set of steps; thus, the execution time is known and fixed, in contrast to the Up/Down algorithm, whose execution time depends on the participant's responses.
Attributes
| Name | Use | Description |
|---|---|---|
intensities |
required |
Stimulation intensities [ double[] = Calculated(context) ]. |
intensity-labels |
optional |
When specified, labels provided by this attribute will be displayed instead of intensities [ string[] = Calculated(context) ]. The list of labels specified must have the same length as the list of intensities. |
number-of-trials |
required |
Number of stimuli that will be presented to the participant [ int = Calculated(context) ]. |
Elements
| Name | Use | Description |
|---|---|---|
required |
Psychometric function. |
|
required |
Range of beta parameters. |
|
required |
Range of alpha parameters. |
ManualUpDownAlgorithm
The up/down algorithm, also known as the staircase method, is an adaptive method for estimating psychophysical minimal intensity (threshold) at which a participant perceives a stimulus with 50% reliability. The algorithm adjusts the intensity based on the participant's response; if the response is correct, the intensity is decreased (the stimulus becomes harder to perceive); if it is incorrect, the intensity is increased (the stimulus becomes easier to perceive).
The algorithm will initially either increase (initial-direction="increasing") or decrease (initial-direction="decreasing") the intensity from the lowest or highest possible intensity, respectively. It will continue to do so until the participant answers correctly or incorrectly, depending on the direction of intensity change, after which the direction of intensity change is reversed. At each reversal, the intensity is stored, and the threshold is calculated as the average of these intensities where the direction of intensity change was reversed.
Attributes
| Name | Use | Description |
|---|---|---|
intensities |
required |
Stimulation intensities [ double[] = Calculated(context) ]. |
intensity-labels |
optional |
When specified, labels provided by this attribute will be displayed instead of intensities [ string[] = Calculated(context) ]. The list of labels specified must have the same length as the list of intensities. |
stop-rule |
required |
Number of intensity revarsel that must occur before the algorithm terminated [ int = Calculated(context) ]. |
initial-direction |
optional |
Initial direction of the intensity change [ increasing or decreasing ]. If not specified it is set to increasing. |
initial-step-size |
optional |
Initial step size [ int = Calculated(context) ]. Once a intensity reversal have occured the step size will be set to one (1). |
skip-rule |
optional |
Number of initial intensity reversal that will be discarded in the threshold calculation [ int = Calculated(context) ]. If not specified this attribute is set to zero. |
ManualYesNoTask
A Yes/No response task can be performed when the stimulus can elicit a positive response (Yes) or negative response (No). It is performed by asking the participant a question. For example, for a two-point discrimination procedure, "How many points did you feel touching the skin?" to which the participant can answer either "One" or "Two". In this example, if the participant answers Two, they correctly perceive the stimulus by answering positively.
Attributes
| Name | Use | Description |
|---|---|---|
question |
required |
The question about the stimulus that the participants is required to answer [ dynamic string ]. |
task-illustration-image |
required |
The image that is used to illustrate the stimulation task for the operator [ image = Calculated(context) ] |
positive-answer |
required |
The expected answer for positive responses [ dynamic string ]. |
negative-answer |
required |
The expected answer for negative responses [ dynamic string ]. |
ManualTwoIntervalForcedChoiceTask
In a two-interval forced-choice task, the stimulus is presented in one of two time intervals. The participant is then asked to answer in which time interval the stimulus was presented. If the intensity makes it possible for the participant to perceive the stimulus, they will choose the correct interval. However, if the intensity is too low to be perceived, the participant will be forced to answer and will thus have a 50% chance of answering correctly. Consequently, the two-interval forced choice task is usually used with the Psi-Method, which can estimate psychometric functions for which the guess rate (gamma) is 50%.
Attributes
| Name | Use | Description |
|---|---|---|
question |
required |
The question about the stimulus that the participants is required to answer [ dynamic string ]. |
no-stimulus-image |
required |
Image used to illustrate an interval where no stimulus should be presented [ image = Calculated(context) ]. |
stimulus-image |
required |
Image used to illustrate an interval where a stimulus should be presented [ image = Calculated(context) ]. |
interval-a |
required |
Name of interval A [ dynamic string ]. |
interval-b |
required |
Name of interval B [ dynamic string ]. |
ManualOneIntervalForcedChoiceTask
In a one-interval forced-choice task, the participant is asked to choose between two alternatives based on the stimulus presented. If the intensity makes it possible for the participant to perceive the stimulus, they will choose the correct alternative. However, if the intensity is too low to be perceived, the participant will be forced to answer and will thus have a 50% chance of answering correctly. Consequently, the one-interval forced choice task is usually used with the Psi-Method, which can estimate psychometric functions for which the guess rate (gamma) is 50%.
Attributes
| Name | Use | Description |
|---|---|---|
question |
required |
The question about the stimulus that the participants is required to answer [ dynamic string ]. |
alternative-a-image |
required |
Image used to demonstrate alternative A to the operator [ byte[] = Calculated(context) ]. |
alternative-b-image |
required |
Image used to demonstrate alternative B to the operator [ byte[] = Calculated(context) ]. |
alternative-a |
required |
Expected response when the participant can perceive alternative A [ dynamic string ]. |
alternative-b |
required |
Expected response when the participant can perceive alternative B [ dynamic string ]. |
ResponseRecordingProcedure
The response recording procedure allows for the collection of psychophysiological ratings over a specified time period or until the experimenter indicates a particular event. During this process, ratings can be recorded while also capturing a set of signals and/or marking events with predefined markers.
To function, the procedure must be assigned a Scales instrument in the device-mapping element of the experimental setup. The number and types of psychophysical ratings that are collected by the procedure are defined by the psychophysical rating scales that are defined in the Scales instrument.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the procedure that must be unique within the protocol, and which must be a valid variable name. |
name |
required |
Name of the procedure that is shown to the operator in LabBench Runner. |
session |
optional |
ID of the session that the procedure belongs to. This parameter must only be used if sessions are defined for the protocol. If sessions are defined then the operator will choose the active session when the protocol is initialized by LabBench Runner. LabBench Runner will then only show procedures belonging to the current active session. |
experimental-setup-id |
optional |
ID of the experimental setup configuration that will be selected when the procedure is performed. |
duration |
required |
Sample duration for the response recoding [ double = Calculated(context) ]. |
sample-rate |
required |
Sample rate for the response recording [ double = Calculated (context) ]. This sample rate is used both for the psychophysical responses and the defined signals if any. |
response-weight |
optional |
Weight given to the psychophysical ratings in the user interface [ int ]. Default value is 1. |
signal-weight |
optional |
Weight given to the recorded signals in the user interface [ int ]. Default value is 0. |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Defines the instruments involved in a procedure and specifies events that occur at the selection, start, completion, or abortion of the procedure. This element makes it possible to inject python code into a procedure that extends the base functionality that is provided by its LabBench implementation. |
|
optional |
Procedure properties can modify the selection and execution of procedures, data collection, and provide instructions to the operator and participants. |
|
|
optional |
The |
optional |
Place a condition on the inclusion of the procedure into a session. |
|
optional |
Used to define the markers that an experimenter can use to mark events while the procedure is running. Events could be events such as a pain detection or a pain tolerance threshold. Events are organised into event groups, where only one event group can be active at any time. When the experimenter marks an event, then the marker can be configured to activate another event group. Consequently, this can be used to define the sequential logical flow of events, such as enforcing that a pain detection threshold is always before a pain tolerance threshold. When the procedure is started, the first defined event group will be active. |
|
optional |
Defines the signals that will be sampled simultaneously with the collection of psychophysiological ratings and the script that will be called for each recording time to sample the signals. |
EventMarkerCollection
Used to define the markers that an experimenter can use to mark events while the procedure is running. Events could be events such as a pain detection or a pain tolerance threshold. Events are organised into event groups, where only one event group can be active at any time. When the experimenter marks an event, then the marker can be configured to activate another event group. Consequently, this can be used to define the sequential logical flow of events, such as enforcing that a pain detection threshold is always before a pain tolerance threshold. When the procedure is started, the first defined event group will be active.
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
EventMarkerGroup
Defines a group of events that are active simultaneously.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Unique identifier for the event group [ string ]. This identifier is used by event markers to identity the next active event group. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
EventMarker
Defines a marker for an event.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Unique identifier for the event marker [ string ]. |
name |
optional |
Name of the event [ string ]. If not specified the ID of the event will be used as its name. |
complete |
optional |
Complete the procedure when the event is marked [ bool ]. Default value is false. |
next-group |
optional |
Event group to activate when the event is marked [ string ]. This must be an ID of an event group, if no next-group is specified the currently active event group will remain active. |
SignalGroupCollection
Defines the signals that will be sampled simultaneously with the collection of psychophysiological ratings and the script that will be called for each recording time to sample the signals.
Attributes
| Name | Use | Description |
|---|---|---|
sample |
required |
This attribute specifies the script that will be used to sample the signals [ [double] = Calculated(context) ]. The script must return a list of the same length as the number of defined signals and in the same order. |
min |
required |
Global minimum value for the sampled signals [ double = Calculated(context) ]. |
max |
required |
Global maximum value for the sampled signals [ double = Calculated(context) ]. |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
SignalDeclaration
Definition of a signal that will be sampled in the sample script that is defined as an attribute on the <signals> element. This sample script must return a list of values with the same length as the number of signals defined in the signals element.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the signal [ string ]. This identifier must be unique for all the defined signals. |
name |
optional |
Name for the signal [ dynamic string ]. If no name is provided the ID of the signal will be used as its name. |
type |
optional |
Type of signal that is sampled. |
unit |
optional |
Unit of signal that is sampled [ string ]. |
StimulusPresentationProcedure
The Stimulus Presentation procedure allows a participant to become familiar with a stimulus and to rate its sensation on a psychophysical rating scale.
The procedure can also be used to manually find thresholds, as the last tested intensity is available
in the calculated parameter [ProcedureID].Intensity upon completion.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the procedure that must be unique within the protocol, and which must be a valid variable name. |
name |
required |
Name of the procedure that is shown to the operator in LabBench Runner. |
session |
optional |
ID of the session that the procedure belongs to. This parameter must only be used if sessions are defined for the protocol. If sessions are defined then the operator will choose the active session when the protocol is initialized by LabBench Runner. LabBench Runner will then only show procedures belonging to the current active session. |
experimental-setup-id |
optional |
ID of the experimental setup configuration that will be selected when the procedure is performed. |
stimulus-update-rate |
required |
The update rate for the generated stimuli [ int = Calculated(context) ]. This update rate must be supported by the device that will deliver the stimuli. |
trigger-update-rate |
optional |
The update rate for the generated triggers [ int = Calculated(context) ]. This update rate must be supported by the device that will deliver the stimuli, and if it is unspecified, the stimulus update rate will be used as the update rate for the trigger generation. |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Defines the instruments involved in a procedure and specifies events that occur at the selection, start, completion, or abortion of the procedure. This element makes it possible to inject python code into a procedure that extends the base functionality that is provided by its LabBench implementation. |
|
optional |
Procedure properties can modify the selection and execution of procedures, data collection, and provide instructions to the operator and participants. |
|
|
optional |
The |
optional |
Place a condition on the inclusion of the procedure into a session. |
|
optional |
Configuration of procedurecomponents, which includes configuration of the stimulation, trigger, and sampling components that are used by the procedure. |
|
required |
Specification of the intensities for the stimuli that the experimenter can choose during a session. |
|
optional |
This element defines the response engine used by a procedure to collect behavioural or rating-based responses from the participant. The response engine supports multiple response modalities, including:
If no response collection mode is specified, the response engine is disabled and no response device is required for the procedure. |
|
optional |
Trigger generation. |
|
optional |
Stimulation configuration that can either be delivered with a Stimulator instrument, or with any combination of instruments when the ` |
ResponseEngine
This element defines the response engine used by a procedure to collect behavioural or rating-based responses from the participant.
The response engine supports multiple response modalities, including:
- Binary responses (yes/no, button presses)
- Numerical ratings (interval scales)
- Ratio ratings (continuous scales)
- Categorical ratings (ordinal scales)
If no response collection mode is specified, the response engine is disabled and no response device is required for the procedure.
Attributes
| Name | Use | Description |
|---|---|---|
response-collection |
optional |
Type of response collection that will be performed:
|
TriggerEngine
Trigger generation.
Attributes
| Name | Use | Description |
|---|---|---|
start-triggger |
optional |
Timing or trigger source:
|
Elements
| Name | Use | Description |
|---|---|---|
1 |
This definition requires that exactly one item be provided and that it be chosen from a fixed set of mutually exclusive alternatives. Only one alternative may appear, and all other alternatives must be absent. No alternative is mandatory on its own, but the choice as a whole is required, meaning the container is invalid unless exactly one of the allowed options is specified. |
StimulationEngine
Stimulation configuration that can either be delivered with a Stimulator instrument, or with
any combination of instruments when the `
Attributes
| Name | Use | Description |
|---|---|---|
start-trigger |
optional |
Timing or trigger source:
|
Elements
| Name | Use | Description |
|---|---|---|
optional |
Custom stimulation where the stimulation is implemented with calculated parameters that can either be a single-line Python statement or, more commonly, by calling a Python function in a script. |
|
optional |
Definition of a stimulus. |
ThermalRatedStimulationProcedure
The Thermal Rated Stimulation procedure allows a thermal stimulus to be delivered to a participant while simultaneously recording the participant's psychophysical rating of the sensation.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the procedure that must be unique within the protocol, and which must be a valid variable name. |
name |
required |
Name of the procedure that is shown to the operator in LabBench Runner. |
session |
optional |
ID of the session that the procedure belongs to. This parameter must only be used if sessions are defined for the protocol. If sessions are defined then the operator will choose the active session when the protocol is initialized by LabBench Runner. LabBench Runner will then only show procedures belonging to the current active session. |
experimental-setup-id |
optional |
ID of the experimental setup configuration that will be selected when the procedure is performed. |
response-collection |
optional |
Type of response collection that will be performed:
|
sample-times |
optional |
Must return a list of the times the participant’s response should be sampled [ double[] = Calculated(context) ]. This attribute is only used if the |
intensity |
required |
Intensity ( |
minimal-display-temperature |
optional |
Used for displaying the thermal stimulus; it is the lower bound for the stimulation temperature [ double = Calculated(context) ]. |
maximal-display-temperature |
optional |
Used for displaying the thermal stimulus; it is the upper bound for the stimulation temperature [ double = Calculated(context) ]. |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Defines the instruments involved in a procedure and specifies events that occur at the selection, start, completion, or abortion of the procedure. This element makes it possible to inject python code into a procedure that extends the base functionality that is provided by its LabBench implementation. |
|
optional |
Procedure properties can modify the selection and execution of procedures, data collection, and provide instructions to the operator and participants. |
|
|
optional |
The |
optional |
Place a condition on the inclusion of the procedure into a session. |
|
optional |
Definition of a stimulus. |
ThermalThresholdEstimationProcedure
The Thermal Threshold Estimation Procedure determines cold and heat thresholds by decreasing/increasing the temperature until the participants press a button. The temperature at the time of the button press is taken as the temperature threshold.
This procedure can be repeated a set number of times, and the threshold is taken as an average of the repeated threshold measurements.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identifier for the procedure that must be unique within the protocol, and which must be a valid variable name. |
name |
required |
Name of the procedure that is shown to the operator in LabBench Runner. |
session |
optional |
ID of the session that the procedure belongs to. This parameter must only be used if sessions are defined for the protocol. If sessions are defined then the operator will choose the active session when the protocol is initialized by LabBench Runner. LabBench Runner will then only show procedures belonging to the current active session. |
experimental-setup-id |
optional |
ID of the experimental setup configuration that will be selected when the procedure is performed. |
threshold-type |
required |
Configuration of the thermal threshold to be determined. |
stimulation-rate |
required |
The rate of temperature change for the determination of thresholds [ double = Calculated(context) ]. |
maximal-temperature |
required |
Maximal temperature for the thermal stimulus [ double = Calculated(context) ]. Please note that this temperature is higher than the |
return-rate |
optional |
Rate by which the temperature is returned to the neutral temperature once the threshold has been reached [ double = Calculated(context) ]. |
initial-stimulation-delay |
required |
Delay from start of the procedure in seconds to the start of the first threshold determination [ double = Calculated(context) ]. |
stimulation-interval |
required |
Interval between threshold determinations in seconds [ double = Calculated(context) ]. |
repetitions |
required |
Number of times the threshold is determined [ int = Calculated(context) ]. |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Defines the instruments involved in a procedure and specifies events that occur at the selection, start, completion, or abortion of the procedure. This element makes it possible to inject python code into a procedure that extends the base functionality that is provided by its LabBench implementation. |
|
optional |
Procedure properties can modify the selection and execution of procedures, data collection, and provide instructions to the operator and participants. |
|
|
optional |
The |
optional |
Place a condition on the inclusion of the procedure into a session. |
QuestionnaireConstructor
The questionnaire procedure allows either the operator or the participant to answer a set of questions. The questionnaire can consist of the following types of questions:
- Boolean Questions: questions that have mutually exclusive binary answer, which usually consists of answering a true or false statement, but can also consist of dichotomies such as child/adult.
- Numerical Questions: are questions that can be answered with numerical answers.
- Text Questions: are questions that can be answered with either free or validated text.
- Likert Questions: A scale that captures how strongly someone agrees, disagrees, or feels about a statement using a fixed set of ordered response options.
- List Questions: A set of binary statements that each can be either true or false.
- Time Questions: a date and time provided by the participant, entered by the operator.
- Map Questions: is answered by marking one or more regions, such as areas on a body map.
- Categorical Rating Questions: rating of a sensation on a categorical scale.
- Numerical Rating Questions: rating of a sensation on a numerical scale.
- Visual Rating Questions: rating of a sensation on a visual analog rating scale.
All questions are identified with an id and have a title and an instruction. If the questionnaire is to be
answered by the participant, a Questionnaire instrument must be assigned to the procedure in the experimental setup.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identification of the constructed procedure [ string ]. This can be a |
name |
required |
Name of the constructed procedure [ string ]. This can be a |
session |
optional |
Session of the constructed procedure [ string ]. This can be a |
template |
required |
Identifier ( |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
StimulationSequenceProcedureConstructor
The <stimulation-sequence> procedure generates stimulus sequences for evoked potentials, behavioural tasks,
or similar procedures. Construct the sequence by creating a stimulus pattern to control timing and a
stimulus set to define which stimuli are delivered.
The stimulation pattern <stimulation-pattern>is constructed from a composition of sequences, which
can be deterministic or random. However, to use this procedure, the stimulation pattern (number of stimuli
and randomisation) is generated when the procedure starts. Consequently, it is not possible to change the
stimulation pattern while the procedure is running, so it cannot depend on participant performance during
the procedure. Use the <sequential> procedure if the stimulation pattern depends on the participant, as that
procedure is more versatile but also more complex to implement than this stimulation sequence procedure.
The stimulation pattern is first generated, yielding a set of temporal stimulation slots that can be
filled with stimuli; which stimuli are inserted into these stimulation slots is defined by the stimulus
set <stimuli>. The stimuli set defines a set of stimuli and controls their randomisation. To fill
the stimulation pattern, a batch of stimuli is first generated by the stimulus set. This batch of
stimuli are inserted into the stimulation slots until all have been allocated, then a new batch is
generated. This process is repeated until all stimulation slots have been allocated a stimulus.
The procedure delivers stimuli via the stimulation component, which, by default, uses the Stimulator
and TriggerGenerator instruments to deliver stimuli and triggers, respectively. If more complex
or multimodal stimuli are required, a <stimulation-scripts> can be defined to generate the
stimuli/triggers from a Python script. When generations are done from a Python script, any visual,
auditory or physical stimuli, and combinations thereof, that are possible with LabBench can be generated.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identification of the constructed procedure [ string ]. This can be a |
name |
required |
Name of the constructed procedure [ string ]. This can be a |
session |
optional |
Session of the constructed procedure [ string ]. This can be a |
template |
required |
Identifier ( |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
SequentialProcedureConstructor
The sequential procedure makes it possible to use state machines to implement experimental procedures. Unlike most other procedures, it has no base functionality that can be configured in the LabBench Language; instead, its functionality must be implemented by a Python script that is called from its procedure events and state events.
In most cases, you will have access to instruments from the Python script to implement the intended experimental procedure. This access is provided by declaring the instruments in the <procedure-events> element. The instruments declared that they will be available for both the procedure events and state events.
The states in the state machine are defined in the <states> element, which also makes it possible to define which Python functions are called for the enter, leave, and update state events.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identification of the constructed procedure [ string ]. This can be a |
name |
required |
Name of the constructed procedure [ string ]. This can be a |
session |
optional |
Session of the constructed procedure [ string ]. This can be a |
template |
required |
Identifier ( |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
AlgometryStimulusResponseProcedureConstructor
Stimulus-response procedures determine the psychophysical rating (VAS Rating) to a linearly increasing pressure stimulus. From this stimulus-response curve, several psychophysical parameters can be determined:
- PDT: The Pain Detection Threshold,
- PTL: The Pain Tolerance Limit, and
- PTT: The Pain Tolerance Threshold (PTT).
The determined parameters depend on the procedure configuration and the participant's instructions.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identification of the constructed procedure [ string ]. This can be a |
name |
required |
Name of the constructed procedure [ string ]. This can be a |
session |
optional |
Session of the constructed procedure [ string ]. This can be a |
template |
required |
Identifier ( |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
AlgometryConditionedPainProcedureConstructor
With the conditioned pain modulation procedure, one cuff applies static pressure while the other determines a stimulus-response curve. The stimulus-response curve determines the psychophysical rating (VAS Rating) to a linearly increasing pressure stimulus.
From this stimulus-response curve, several psychophysical parameters can be determined:
- Pain Detection Threshold (PDT),
- Pain Tolerance Limit (PTL),
- Pain Tolerance Threshold (PTT).
The determined parameters depend on the procedure configuration and the participant's instructions.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identification of the constructed procedure [ string ]. This can be a |
name |
required |
Name of the constructed procedure [ string ]. This can be a |
session |
optional |
Session of the constructed procedure [ string ]. This can be a |
template |
required |
Identifier ( |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
AlgometryTemporalSummationProcedureConstructor
The temporal summation procedure applies a series of rectangular pressure stimuli to one or both cuffs. The participant is asked to rate the pain sensation of these stimuli on the VAS meter as soon as possible after the cessation of a pressure stimulus. The VAS rating for a stimulus is recorded just before the next stimulus is given or would have been given if it had not been the last stimulus in the series.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identification of the constructed procedure [ string ]. This can be a |
name |
required |
Name of the constructed procedure [ string ]. This can be a |
session |
optional |
Session of the constructed procedure [ string ]. This can be a |
template |
required |
Identifier ( |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
AlgometryStaticTemporalSummationProcedureConstructor
The static temporal summation applies a constant pressure for a specified duration instead of a series of stimuli to determine the temporal summation of pressure stimulation.
During this pressure stimulation and for a period after the procedure, the participant's VAS score will be recorded as the result of the procedure.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identification of the constructed procedure [ string ]. This can be a |
name |
required |
Name of the constructed procedure [ string ]. This can be a |
session |
optional |
Session of the constructed procedure [ string ]. This can be a |
template |
required |
Identifier ( |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
AlgometryStimulusRatingProcedureConstructor
The stimulus rating procedure provides a way to determine the Pain Detection Threshold (PDT), the Pain Tolerance Threshold (PTT), or both with an attached button.
The procedure is executed in the same way as the stimulus-response procedure and is defined by the same parameters, with the exception that it does not have a stop-mode parameter but instead has a measurement parameter.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identification of the constructed procedure [ string ]. This can be a |
name |
required |
Name of the constructed procedure [ string ]. This can be a |
session |
optional |
Session of the constructed procedure [ string ]. This can be a |
template |
required |
Identifier ( |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
AlgometryConditionedPainRatingProcedureConstructor
The conditioned pain modulation rating procedure is analogous to the conditioned pain modulation procedure that uses a button instead of the VAS to determine pain detection threshold (PDT), pain tolerance threshold (PTT), or both.
The same parameters define the procedure as the conditioned pain modulation procedure, with the addition of the measurement parameter that defines how the button is used to determine PDT, PTT, or both.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identification of the constructed procedure [ string ]. This can be a |
name |
required |
Name of the constructed procedure [ string ]. This can be a |
session |
optional |
Session of the constructed procedure [ string ]. This can be a |
template |
required |
Identifier ( |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
AlgometryArbitraryTemporalSummationProcedureConstructor
The arbitrary temporal summation procedure applies a series of rectangular pressure stimuli to one or both cuffs.
The participant is asked to rate the pain sensation of these stimuli on the VAS meter as soon as possible after the cessation of a pressure stimulus.
The VAS rating for a stimulus is recorded just before the next stimulus is given or would have been given if it had not been the last stimulus in the series. The arbitrary temporal summation procedure makes it possible to specify each stimulus in the series individually, and thus, each stimulus can have a different intensity and duration.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identification of the constructed procedure [ string ]. This can be a |
name |
required |
Name of the constructed procedure [ string ]. This can be a |
session |
optional |
Session of the constructed procedure [ string ]. This can be a |
template |
required |
Identifier ( |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
ThresholdEstimationProcedureConstructor
The threshold estimation procedure is used to estimate thresholds/psychometric functions when LabBench controls the stimulus generation automatically. Estimation of these thresholds/psychometric functions consists of three parts: the stimulus modality, response task, and estimation algorithm:
- Stimulus modality: the type of stimulus, such as tactile, thermal, pressure, or electrical, presented to the participant and for which a threshold/psychometric function is estimated.
- Response task: the perception task that the participant is asked to perform when the stimulus is presented. The outcome of this task is either true: the participant performed the task correctly, or false: the the participant failed to perform the task correctly.
- Estimation algorithm: the adaptive algorithm by which the threshold/psychometric function is estimated. This algorithm uses the outcome of the response task (correct/incorrect) to update the estimate of the threshold or psychometric function for each stimulus presentation.
The thresholds or psychometric functions are estimated for an independent variable (x). An increase in x is assumed to increase the probability that the participant will correctly perform the response task. If there is an inverted relationship, the independent variable (x) inversion must be performed in the stimulus specification.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identification of the constructed procedure [ string ]. This can be a |
name |
required |
Name of the constructed procedure [ string ]. This can be a |
session |
optional |
Session of the constructed procedure [ string ]. This can be a |
template |
required |
Identifier ( |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
ColdPressorProcedureConstructor
The Cold Pressor procedure is a standardized experimental pain paradigm in which a participant immerses a hand or forearm in cold water to determine pain detection (PDT) and tolerance thresholds (PTT). The thresholds are measured as the time to pain onset and the time to pain tolerance.
The procedure can be configured to measure PDT, PTT, or both. When a single threshold is measured, time measurement is started with a button press when the hand is placed in the cold water and stopped with a second button press when the hand is withdrawn from the water. When both thresholds are measured, the second button press marks the PDT, and the third button press marks the PTT when the hand is withdrawn from the water.
While the procedure is designed for the Cold Pressor procedure, it can be used for any task for which detection and tolerance thresholds can be quantified by the time the participant experiences them. All instructions and descriptive texts can be customised to adapt the procedure for other tasks.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identification of the constructed procedure [ string ]. This can be a |
name |
required |
Name of the constructed procedure [ string ]. This can be a |
session |
optional |
Session of the constructed procedure [ string ]. This can be a |
template |
required |
Identifier ( |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
ManualThresholdEstimationProcedureConstructor
The manual threshold estimation procedure is used to estimate thresholds/psychometric functions when LabBench cannot control the stimulus, and instead, the experimenter must manually apply the stimulus to the participant. Estimation of these thresholds/psychometric functions consists of two parts: response task and estimation algorithm:
- Response task: the perception task that the participant is asked to perform when the stimulus is presented. The outcome of this task is either correct: the participant perceived the stimulus correctly, or incorrect: the stimulus intensity was too low, and the participant failed to perceive the stimulus correctly.
- Estimation algorithm: the adaptive algorithm by which the threshold/psychometric function is estimated. This algorithm uses the outcome of the response task (correct/incorrect) to update the estimate of the threshold or psychometric function for each stimulus presentation.
The stimulus is defined by the nature of the questions asked in the response task. The thresholds or psychometric functions are estimated for an independent variable (x). An increase in x is assumed to increase the probability that the participant will correctly perform the response task.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identification of the constructed procedure [ string ]. This can be a |
name |
required |
Name of the constructed procedure [ string ]. This can be a |
session |
optional |
Session of the constructed procedure [ string ]. This can be a |
template |
required |
Identifier ( |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
ResponseRecordingProcedureConstructor
The response recording procedure allows for the collection of psychophysiological ratings over a specified time period or until the experimenter indicates a particular event. During this process, ratings can be recorded while also capturing a set of signals and/or marking events with predefined markers.
To function, the procedure must be assigned a Scales instrument in the device-mapping element of the experimental setup. The number and types of psychophysical ratings that are collected by the procedure are defined by the psychophysical rating scales that are defined in the Scales instrument.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identification of the constructed procedure [ string ]. This can be a |
name |
required |
Name of the constructed procedure [ string ]. This can be a |
session |
optional |
Session of the constructed procedure [ string ]. This can be a |
template |
required |
Identifier ( |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
StimulusPresentationProcedureConstructor
The Stimulus Presentation procedure allows a participant to become familiar with a stimulus and to rate its sensation on a psychophysical rating scale.
The procedure can also be used to manually find thresholds, as the last tested intensity is available
in the calculated parameter [ProcedureID].Intensity upon completion.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identification of the constructed procedure [ string ]. This can be a |
name |
required |
Name of the constructed procedure [ string ]. This can be a |
session |
optional |
Session of the constructed procedure [ string ]. This can be a |
template |
required |
Identifier ( |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
ThermalRatedStimulationProcedureConstructor
The Thermal Rated Stimulation procedure allows a thermal stimulus to be delivered to a participant while simultaneously recording the participant's psychophysical rating of the sensation.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identification of the constructed procedure [ string ]. This can be a |
name |
required |
Name of the constructed procedure [ string ]. This can be a |
session |
optional |
Session of the constructed procedure [ string ]. This can be a |
template |
required |
Identifier ( |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
ThermalThresholdEstimationProcedureConstructor
The Thermal Threshold Estimation Procedure determines cold and heat thresholds by decreasing/increasing the temperature until the participants press a button. The temperature at the time of the button press is taken as the temperature threshold.
This procedure can be repeated a set number of times, and the threshold is taken as an average of the repeated threshold measurements.
Attributes
| Name | Use | Description |
|---|---|---|
id |
required |
Identification of the constructed procedure [ string ]. This can be a |
name |
required |
Name of the constructed procedure [ string ]. This can be a |
session |
optional |
Session of the constructed procedure [ string ]. This can be a |
template |
required |
Identifier ( |
Elements
| Name | Use | Description |
|---|---|---|
optional |
Template variables are used to generate text and calculated parameter attributes in procedures. List procedure variables can also be iterated over in An example of the generated of a procedure ID from a template variable: The keyword |
ForeachConstructor
Loop through each element in a list template variable and generate procedures for each element in this list.
Attributes
| Name | Use | Description |
|---|---|---|
variable |
required |
Name of the variable used to hold the elements in the foreach loop [ string ]. |
in |
required |
Name of the list variable whose elements the foreach will loop through. This list variable must be defined in the variables element of the protocols templates element [ string ]. |
type |
optional |
The type of randomisation performed on the generated procedures:
|
offset |
optional |
This attribute is only used for Latin squares [ int = Calculated(context) ]. It is the offset/number of the row in the Latin square. If the offset is larger than the square, then the offset will be the modules with the square’s size. Typically, these offsets are calculated from the ParticipantNumber variable, which is the number of the participant in the data set. Basing the offset on the ParticipantNumber makes it possible to shift the latin-square row for each participant participating in the experiment. |
generator |
optional |
This attribute is only used for generated randomisations [ int[] = Calculated(context) ]. It must return an int array of length N, where N is the number of procedures to be randomised. |
Elements
SequenceConstructor
A sequence performs randomisation of the elements within the sequence.
Attributes
| Name | Use | Description |
|---|---|---|
type |
required |
The type of randomisation performed on the generated procedures:
|
offset |
optional |
This attribute is only used for Latin squares [ int = Calculated(context) ]. It is the offset/number of the row in the Latin square. If the offset is larger than the square, then the offset will be the modules with the square’s size. Typically, these offsets are calculated from the ParticipantNumber variable, which is the number of the participant in the data set. Basing the offset on the ParticipantNumber makes it possible to shift the latin-square row for each participant participating in the experiment. |
generator |
optional |
This attribute is only used for generated randomisations [ int[] = Calculated(context) ]. It must return an int array of length N, where N is the number of procedures to be randomised. |
Elements
IfConstructor
Enable conditional generation of procedures from procedure constructors.
Attributes
| Name | Use | Description |
|---|---|---|
condition |
required |
Condition for generating procedures [ bool = Calculated(context) ]. The enclosed procedure constructors are only executed if the condition is true. |
Elements
AssetManager
Files can be included in experiments in the form of assets within the <assets> element in the Experiment Definition File. This element consists of a set of <file-asset> that can be used in procedures and Python code.
The following assets can be included:
- .py: Python code
- .md: Markdown Files
- .txt: Text Files
- .rtf: Rich Text Format
- .png: Portable Network Graphics
- .zip: Zip files
- .json: Data files
- .wav: Sound files
- .csv: Comma Separated Values
- .svg: Scalable Vector Graphics
- .ttf: True Type Fonts
Within calculated parameters, assets can be referred to by the id with the following notation: Asset.[AssetID]. Files within zip archives can be further addressed as Asset.[AssetID].[Name of file without extension]. Please note that paths and extensions within zip files are not considered. Consequently, in a zip file, there must be only one file with a given name, regardless of its extension or location within the zip file.
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
CSVAction
Export of data to csv files.
Attributes
| Name | Use | Description |
|---|---|---|
name |
required |
Name of the post-session action that will be used to identify the action in LabBench [ string ]. |
location |
required |
Location in the file system where the outputs of the post-session action will be saved [ string ]. |
filename |
required |
Name of the file [ string = Calculated(context) ]. |
header |
optional |
Include header in the file [ bool ]. |
separator |
optional |
Separator to use for the csv file [ string ]. |
culture |
optional |
Culture strings follow the format: languagecode2-regioncode2. For example:
The languagecode2 is based on ISO 639-1, while regioncode2 is based on ISO 3166-1. Use of regioncode2 is optional. The default value is "en". |
Elements
| Name | Use | Description |
|---|---|---|
0 .. n |
This definition describes a container that can hold an ordered list of zero or more items, where each item represents exactly one choice from a fixed set of allowed alternatives. Each item in the list is optional and independent, and the list itself has no upper limit on the number of items it may contain. For each position in the list, only one of the permitted alternatives may be present, and no other kinds of items are allowed. The container may also be empty, meaning none of the alternatives are specified. |
CSVElement
Elements for the CSV file.
Attributes
| Name | Use | Description |
|---|---|---|
name |
required |
Name of the variable [ string ]. |
value |
required |
Value for the element [ object = Calculated(context) ]. |
default |
optional |
Value that will be inserted if the value calculation throws an error or if the element has been excluded with by its |
condition |
optional |
Calculate the value or exclude this element [ bool = Calculated(context) ]. This attribute makes it possible to exclude calculation of the value when procedures are not completed. |
ExportAction
Export of data to a single data file. Consequently, this post-session action enables the creation of a single data file for each participant participating in a study.
Attributes
| Name | Use | Description |
|---|---|---|
name |
required |
Name of the post-session action that will be used to identify the action in LabBench [ string ]. |
location |
required |
Location in the file system where the outputs of the post-session action will be saved [ string ]. |
filename |
required |
Name of the file [ string = Calculated(context) ]. |
format |
optional |
Specifies the format of the exported data:
|
ScriptAction
Execution of a calculated parameter as a post-session action. As calculated parameters can execute Python functions with the `func: [Python Script Asset].Function Name allows you to use this post-session action to implement custom post-session actions.
Attributes
| Name | Use | Description |
|---|---|---|
name |
required |
Name of the post-session action that will be used to identify the action in LabBench [ string ]. |
location |
required |
Location in the file system where the outputs of the post-session action will be saved [ string ]. |
script |
required |
Calculated parameter to execute as a post-session action [ bool = Calculated(context) ]. Must return true if it completed successfully, otherwise false. |
LogAction
Export of the experimental log for a participant to a pdf file.
Attributes
| Name | Use | Description |
|---|---|---|
name |
required |
Name of the post-session action that will be used to identify the action in LabBench [ string ]. |
location |
required |
Location in the file system where the outputs of the post-session action will be saved [ string ]. |
filename |
required |
Name of the file [ string = Calculated(context) ]. |
level |
optional |
Setting the log level, all log entries lower than this log level will be discarded. |
id |
optional |
Identifier that will be embedded in the header of all pages of the generated experimental log [ dynamic text ]. |
CopyAction
Copy a file from one directory (source) to another directory (location). The filename cannot be changed.
Attributes
| Name | Use | Description |
|---|---|---|
name |
required |
Name of the post-session action that will be used to identify the action in LabBench [ string ]. |
location |
required |
Location in the file system where the outputs of the post-session action will be saved [ string ]. |
source |
required |
Source directory for the file to be copied [ string ]. |
filename |
required |
Name of the file [ string = Calculated(context) ]. |
Termonology
Element names:
participant-validator, experimental-setup, experimental-setup-variants, protocol, export-to-csv, export-data, export-script, export-log, copy, lio, cpar, cpar-plus, sound, joystick, tcs, display, evas, device-assignment, trigger-setup, stimulators, response-devices, ds5, noxistim, button, visual-analogue-scale, audio-trigger, visual-trigger, response-pad, map, button-assignment, anchors, modality, top-anchor, bottom-anchor, localized-text, typography, categorical-scale, numerical-scale, composite-scale, image-display, questionnaire, title, instruction, answer, likert-category, numerical-answer, text-answer, time-answer, scale-modality, crs-category, nrs-category, category, languages, sessions, properties, persistent-variables, variables, templates, procedures, assets, language, session, rerun-policy, incomplete-protocol-warning, allow-in-session-participant-creation, in-session-display-of-participants, integers, integer, strings, string, struct, variable, includes, template-variables, protocol-variables, procedure-templates, include, structs, sequential, stimulation-sequence, algometry-stimulus-response, algometry-conditioned-pain-modulation, algometry-temporal-summation, algometry-static-temporal-summation, algometry-stimulus-rating, algometry-conditioned-pain-modulation-rating, algometry-arbitrary-temporal-summation, psychophysics-threshold-estimation, psychophysics-cold-pressor, psychophysics-manual-threshold-estimation, psychophysics-response-recording, psychophysics-stimulus-presentation, thermal-rated-stimulation, thermal-threshold-estimation, procedure-events, dependency, condition, question-events, text, boolean, numeric, likert, dimensional-likert, list, time, map-constructor, text-constructor, boolean-constructor, numeric-constructor, likert-constructor, dimensional-likert-constructor, list-constructor, time-constructor, visual-analogue-scale-constructor, numerical-scale-constructor, categorical-scale-constructor, foreach, instrument, auto-start, auto-advance, time-constraint, instructions, participant-instructions, next, annotations, bool, bools, number, numbers, area, validation, choice, dimension, item, update-rate-deterministic, update-rate-random, states, state, configuration, stimulation-scripts, stimulation-pattern, stimuli, stimulation-generation, trigger-generation, sequence, uniformly-distributed-sequence, stimulus, triggers, trigger, repeated-trigger, combined-triggers, code, combined-trigger, pulse, ramp, sine, arbitrary, combined, repeated, window, multiple-outputs, linear-segments, output, segment, manual-yes-no-task, yes-no-task, forced-yes-no-task, manual-interval-rating-task, interval-rating-task, manual-categorical-rating-task, categorical-rating-task, ratio-rating-task, interval-forced-choice-task, alternative-forced-choice-task, stimulus-channel-template, channel, interval, alternative, catch-trials, psi-method, up-down-method, discrete-up-down-method, quick, beta, alpha, intensity, intensity-transformation, psi-algorithm, up-down-algorithm, two-interval-forced-choice-task, one-interval-forced-choice-task, gumbel, hyperbolic-secant, logistics, log-quick, normal, weibull, events-makers, signals, group, marker, signal, responses, stimulation, scripts, file-asset, localisation, aliases, alias, questionnaire-constructor, stimulation-sequence-constructor, sequential-constructor, algometry-stimulus-response-constructor, algometry-conditioned-pain-modulation-constructor, algometry-temporal-summation-constructor, algometry-static-temporal-summation-constructor, algometry-stimulus-rating-constructor, algometry-conditioned-pain-modulation-rating-constructor, algometry-arbitrary-temporal-summation-constructor, psychophysics-threshold-estimation-constructor, psychophysics-cold-pressor-constructor, psychophysics-manual-threshold-estimation-constructor, psychophysics-response-recording-constructor, psychophysics-stimulus-presentation-constructor, thermal-rated-stimulation-constructor, thermal-threshold-estimation-constructor, if, sequential-contructor
Attribute names:
regex, advice, id, name, default-analogue-output, logic-system, low-byte-voltage-level, high-byte-voltage-level, transconductance, timing-source, experimental-setup-id, code, button, label, sample-period, length, text, language, arming-period, type, compressor-mode, rating-scale, minimal-temperature, neutral-temperature, maximal-temperature, trigger-output, normative-distance, background-colour, foreground-colour, active-colour, inactive-colour, size, border-thickness, style, weight, colour, controller-device, maximum, minimum, initialize-rating-to-zero, device-id, procedure-id, instrument-name, default, message, require-reason, force-warning, value, protocol-id, progress-format, control, start, complete, abort, selected, selected-blocked, selected-ready, selected-completed, selected-excluded, interface, min, max, notification, time-reference, start-instruction, override-results, blocked, ready, excluded, completed, virtual, expression, help, changed, title, instruction, condition, image-map, overlay-image, selected-colour, active-selected-colour, deselected-colour, active-deselected-colour, selection-mode, initial-active-area, up, down, left, right, maximal-length, true-label, false-label, max-included, min-included, question, top-anchor, bottom-anchor, template, variable, in, enter, leave, update, stimulus-update-rate, trigger-update-rate, response-collection, trigger-source, initialize, stimulate, stimulus-description, stimulus-unit, time-base, iterations, pause, Tperiod, Toffset, maxTperiod, minTperiod, order, generator, count, intensity, Tdelay, duration, output, N, Is, Ts, Ioffset, Frequency, window, parameter, channel, baseline, second-cuff, pressure-limit, conditioning-time, delta-pressure, vas-pdt, stop-mode, primary-cuff, conditional-pressure, delta-conditional-pressure, no-of-stimuli, t-on, t-off, pressure-stimulate, pressure-static, stimulus-duration, tail-duration, measurement, pressure, probe, cue, display-duration, display-interval, yes-button, no-button, target, image, Imin, Imax, confidence-level, interval, number-of-trials, alpha, beta, lambda, gamma, n, x0, x1, base, reversal-rule, up-rule, down-rule, step-size, step-size-up, step-size-down, step-size-reduction, max-step-size-reduction, step-size-type, stop-rule, skip-rule, start-intensity, initial-direction, initial-intensity, intensities, initial-step-size, time-limit, ready-instruction, completed-instruction, pending-instruction, pain-instruction, completion-instruction, pdt-label, ptt-label, non-responder-label, responder-label, a, b, intensity-labels, task-illustration-image, positive-answer, negative-answer, no-stimulus-image, stimulus-image, interval-a, interval-b, alternative-a-image, alternative-b-image, alternative-a, alternative-b, sample-rate, response-weight, signal-weight, next-group, sample, unit, start-triggger, start-trigger, sample-times, minimal-display-temperature, maximal-display-temperature, threshold-type, stimulation-rate, return-rate, initial-stimulation-delay, stimulation-interval, repetitions, file, replace, with, session, offset, location, filename, header, separator, culture, format, script, level, source
Enums
- AlgometerCompressorMode (auto,manual)
- AlgometerStopCriterionSpecification (stop-on-maximal-rating,stop-when-button-pressed)
- AreaSelectionMode (single,multiple,unspecified)
- ArrayAlgorithm (linspace,logspace,geomspace,array)
- ButtonID (button-none,button-01,button-02,button-03,button-04,button-05,button-06,button-07,button-08,up,down,left,right,decrease,increase,previous,next,clear)
- CatchTrialMode (deterministic,block-randomised,randomised)
- CPTControl (operator,participant)
- CPTMeasurement (pdt,ptt,both)
- DS5Transconductance (1mA_1V,2.5mA_1V,5mA_1V)
- ElementStyle (normal,italic)
- ElementWeight (thin,light,normal,medium,bold,extra-bold)
- ExportFormat (json,hdf5,matlab)
- InstrumentType (pressure-algometer,stimulator,image-display,button,ratio-scale,interval-scale,ordinal-scale,scales,sweep-sampler,trigger-generator,trigger-detector,sound-player,thermal-stimulator)
- LogicSystem (positive,negative)
- LogLevel (verbose,debug,information,warning,error,fatal)
- NoxiStimTransconductance (1mA_1V,10mA_1V)
- PainThresholdMeasurement (pdt,ptt,both)
- QuestionnaireControllerMode (unspecified,operator,participant)
- QuestionProgressFormat (none,percentage,index)
- ResponseCollectionMode (none,yes-no,ratio-rating,numerical-rating,categorical-rating)
- ResponsePadType (button-6-linear,button-4-linear,button-4-cross)
- SequenceType (latin-squares,random,deterministic,generated)
- Signal (voltage,current,temperature,force,impedance,applied-voltage,applied-current,distance,pressure,sound-itensity,generic)
- StepType (absolute,relative)
- StimulusSetOrder (round-robin,random,block-random,latin-squares,generated)
- ThermalThresholdType (cold-detection-threshold,heat-detection-threshold,cold-pain-threshold,heat-pain-threshold,cold-pain-tolerance-threshold,heat-pain-tolerance-threshold)
- TimeBase (microseconds,milliseconds,seconds)
- TimeReference (start,end)
- TriggerOutput (trigger-output,stimulator-trigger-output,trigger-interface)
- TriggerSource (none,internal,external,button,response-port01,response-port02,response-port03,response-port04)
- UpDownState (increasing,decreasing)
- VoltageLevel (unconnected,3.3V,5.0V)
- WindowType (bartlett,blackman,tukey)
Statistics
- Number of elements: 666
- Number of documented elements: 666
- Number of undocumented elements: 0
Undocumented elements
None