From 431a96824d5fad665fbf968f8280f22e2b3e3f88 Mon Sep 17 00:00:00 2001 From: Kay Robbins <1189050+VisLab@users.noreply.github.com> Date: Fri, 13 Sep 2024 08:32:33 -0500 Subject: [PATCH] Updated tests and descriptions of duration handling (#620) * Updated test versions to 8.3.0 and clarified conditions for TAG_INVALID * Merged NODE_NAME_EMPTY into TAG_INVALID * Corrected additional NODE_NAME_EMPTY_LINKS * Lower the schema version on two tests back * Made hed_error_codes.json only contain codes with json files * Add hedID validation tests * Updated some of invalid characters * Updated the JSON tests to have all fields * Updated tests to include warning and alt_code in non-schema tests * Updated the tests with additional alt-codes * Definition may have no inner group * Minor update in appendix B errors * Minor changes to tests * Corrected a typo in the specification * Correction to curly brace test * Modified the test for definition with no group --------- Co-authored-by: IanCa --- .codespellrc | 6 +- .gitignore | 1 - docs/source/02_Terminology.md | 374 +- docs/source/03_HED_formats.md | 36 +- docs/source/05_Advanced_annotation.md | 4 + docs/source/Appendix_A.md | 7 +- docs/source/Appendix_B.md | 32 +- hedwiki/{ => deprecated}/HED7.2.0.mediawiki | 2628 +-- hedwiki/{ => deprecated}/HED7.3.0.mediawiki | 2624 +-- hedxml/{ => deprecated}/HED7.2.0.xml | 0 tests/hed_error_codes.json | 22 +- tests/javascript_tests.json | 12466 ++++++++++++ tests/json_tests/CHARACTER_INVALID.json | 164 +- tests/json_tests/COMMA_MISSING.json | 8 +- tests/json_tests/DEFINITION_INVALID.json | 62 +- tests/json_tests/DEF_EXPAND_INVALID.json | 24 +- tests/json_tests/DEF_INVALID.json | 12 +- tests/json_tests/ELEMENT_DEPRECATED.json | 195 +- tests/json_tests/NODE_NAME_EMPTY.json | 198 - tests/json_tests/PARENTHESES_MISMATCH.json | 8 +- tests/json_tests/PLACEHOLDER_INVALID.json | 16 +- tests/json_tests/REQUIRED_TAG_MISSING.json | 24 +- ...SCHEMA_ATTRIBUTE_VALUE_INVALID_HED_ID.json | 146 + tests/json_tests/SIDECAR_BRACES_INVALID.json | 1312 +- tests/json_tests/SIDECAR_INVALID.json | 134 +- tests/json_tests/SIDECAR_KEY_MISSING.json | 5 +- tests/json_tests/STYLE_WARNING.json | 3 +- tests/json_tests/TAG_EMPTY.json | 12 +- tests/json_tests/TAG_EXPRESSION_REPEATED.json | 4 +- tests/json_tests/TAG_EXTENDED.json | 3 +- tests/json_tests/TAG_EXTENSION_INVALID.json | 8 +- tests/json_tests/TAG_GROUP_ERROR.json | 18 +- tests/json_tests/TAG_INVALID.json | 293 +- .../TAG_NAMESPACE_PREFIX_INVALID.json | 8 +- tests/json_tests/TAG_NOT_UNIQUE.json | 4 +- tests/json_tests/TAG_REQUIRES_CHILD.json | 4 +- tests/json_tests/TEMPORAL_TAG_ERROR.json | 2194 +-- .../json_tests/TEMPORAL_TAG_ERROR_DELAY.json | 2059 +- tests/json_tests/TILDES_UNSUPPORTED.json | 4 +- tests/json_tests/UNITS_INVALID.json | 8 +- tests/json_tests/UNITS_MISSING.json | 18 +- tests/json_tests/VALUE_INVALID.json | 246 +- tests/json_tests/VERSION_DEPRECATED.json | 1 + tests/python_tests.json | 15693 ++++++++++++++++ tests/run_consolidate_tests.py | 38 + tests/test_summarize_testdata.py | 23 +- 46 files changed, 34713 insertions(+), 6436 deletions(-) rename hedwiki/{ => deprecated}/HED7.2.0.mediawiki (98%) rename hedwiki/{ => deprecated}/HED7.3.0.mediawiki (98%) rename hedxml/{ => deprecated}/HED7.2.0.xml (100%) create mode 100644 tests/javascript_tests.json delete mode 100644 tests/json_tests/NODE_NAME_EMPTY.json create mode 100644 tests/json_tests/SCHEMA_ATTRIBUTE_VALUE_INVALID_HED_ID.json create mode 100644 tests/python_tests.json create mode 100644 tests/run_consolidate_tests.py diff --git a/.codespellrc b/.codespellrc index 67493a7a..fa903eb1 100644 --- a/.codespellrc +++ b/.codespellrc @@ -1,3 +1,3 @@ -[codespell] -skip = .git,*.pdf,*.svg,deprecated,*.xml,*.mediawiki,*.omn -ignore-words-list = covert,hed +[codespell] +skip = .git,*.pdf,*.svg,deprecated,*.xml,*.mediawiki,*.omn +ignore-words-list = covert,hed,recuse diff --git a/.gitignore b/.gitignore index 3c0cbc10..38d441e2 100644 --- a/.gitignore +++ b/.gitignore @@ -84,7 +84,6 @@ instance/ # Sphinx documentation docs/_build/ -docs/_build/ # PyBuilder .pybuilder/ diff --git a/docs/source/02_Terminology.md b/docs/source/02_Terminology.md index 435da887..f0ef79d4 100644 --- a/docs/source/02_Terminology.md +++ b/docs/source/02_Terminology.md @@ -1,188 +1,186 @@ -# 2. HED terminology - -The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", -"RECOMMENDED", "MAY", and "OPTIONAL" in this specification are to be interpreted as described in -[[RFC2119](https://www.ietf.org/rfc/rfc2119.txt)]. - -This specification uses a list of terms and abbreviations whose meaning is clarified here. -Note: We here hyphenate multi-word terms as they appear in HED strings themselves; in plain text -usage they may not need to be hyphenated. Starred variables [*] correspond to actual HED tags. - -## 2.1 Definitions - -### Agent [*] - -A person or thing, living or virtual, that produces (or appears to participants to be ready and -capable of producing) specified effects. Agents include the study participants from whom data is -collected. Virtual agents may be human or other actors in virtual-reality or augmented-reality -paradigms or on-screen in video or cartoon presentations (e.g., an actor interacting with the -recorded participant in a social neuroscience experiment, or a dog or robot active in a live -action or animated video). - -### Condition-variable [*] - -An aspect of the experiment that is set or manipulated during the experiment to observe an effect -or to manage bias. Condition variables are sometimes called independent variables. - -### Control-variable [*] - -An aspect of the experiment that is fixed throughout the study and usually is explicitly -controlled. - -### Dataset - -A set of neuroimaging and behavioral data acquired for a purpose of a particular study. -A dataset consists of data recordings acquired from one or more subjects, possibly from -multiple sessions and sensor modalities. A dataset is often referred to as a study. - -### Event [*] - -Something that happens during the recording or that may be perceived by a participant -as happening, to which a time of occurrence (most typically onset or offset) can be -identified. Something expected by a participant to happen at a certain time that -does not happen can also be a meaningful recording event. The nature of other events -may be known only to the experimenter or to the experiment control application -(e.g., undisclosed condition changes in task parameters). - -### Event-context [*] - -Circumstances forming or contributing to the setting in which an event occurs that -are relevant to its interpretation, assessment, and consequences. - -### Event marker - -A time point relative to the experimental timeline that can be associated with an -annotation. Often such a marker indicates a transition point for some underlying event process. - -### Event-stream [*] - -A named sequence of events such as all the events that are face stimuli or all of -the events that are participant responses. - -### Experiment-participant [*] - -A living agent, particularly a human from whom data is acquired during an experiment, -though in some paradigms other human participants may also play roles. - -### Experimental-trial [*] -A contiguous data period that is considered a unit used to observe or measure something, -typically a data period including an expected event sequence that is repeated many times -during the experiment (possibly with variations). Example: a repeating sequence of stimulus -presentation, participant response action, and sensory feedback delivery events in a -sensory judgment task. - -### HED schema [*] -A formal specification of the vocabulary and rules of a particular version of HED for -use in annotation, validation, and analysis. A HED schema is given in XML (`.xml`) format. -The top-level versioned HED schema is used for all HED event annotations. Named and -versioned HED library schema may be used as well to make use of descriptive terms used -by a particular research community. (For example, an experiment on comprehension of -connected speech might annotate events using a grammatical vocabulary contained in a -linguistics HED schema library.) - -### HED string - -A comma-separated list of HED tags and/or tag-groups. - -### HED tag - -A valid path along one branch of a HED vocabulary hierarchy. A valid long-form HED tag -is a slash-separated path following the schema tree hierarchy from its root to a term -along some branch. Any suffix of a valid long-form HED tag is a valid short-form HED tag. -No white space is allowed within terms themselves. For example, the long form of the -HED tag specifying an experiment participant is: `Property/Agent-property/Agent-task-role/Experiment-participant`. -Valid short-form tags are `Experiment-participant`, `Agent-task-role/Experiment-participant`, -and `Agent-property/Agent-task-role/Experiment-participant`. HED tools should treat -long-form and short-form tags interchangeably. - -### Indicator-variable [*] - -An aspect of the experiment or task that is measured or calculated for analysis. -Indicator variables, sometimes called dependent variables, can be data features -that are calculated from measurements rather than aspects that are directly measured. - -### Parameter [*] - -An experiment-specific item, often a specific behavioral or computer measure, that -is useful in documenting the analysis or assisting downstream analysis. - -### Recording [*] - -A continuous recording of data from an instrument in a single session without -repositioning the recording sensors. - -### Tag-group - -One or more valid, comma-separated HED tags enclosed in parentheses to indicate -that these tags belong together. Tag-groups may contain arbitrary nestings of other -tags and tag-groups. - -### Task [*] - -A set of structured activities performed by the participant that are integrally -related to the purpose of the experiment. Tasks often include observations and responses to -sensory presentations as well as specified actions in response to presented situations. - -### Temporal scope - -The time interval between the start and end of an event process. -Often the start time is annotated with the `Onset` tag, -and the end time is annotated with the `Offset` tag. -Since in practical terms the time is measured in discrete samples, -the temporal scope includes the start time sample -but does not include the end time sample. - -### Time-block [*] - -A contiguous portion of the data recording during which some aspect of the experiment -is fixed or noted. - -## 2.2 Character sets and restrictions - -Starting with HED standard schema versions 8.3.0 and above, HED will allow UTF-8 characters in various settings. -The types of characters referred to in this specification are: - -| Name | Description | -| ---- | ----------- | -| `ascii` | utf-8 codes 0 to 127 (single byte) | -| `nonascii` | utf-8 codes greater than 128 (multi-byte) | -| `printable` | ASCII 32 <= code < 127 | -| `lowercase` | ASCII characters a-z | -| `uppercase` | ASCII characters A-Z | -| `letters` | `lowercase` and/or `uppercase` | -| `text` | `printable` and/or `nonascii` excluding comma, square brackets, and curly braces.| -| `digits` | 0-9 | -| `tab` | ASCII code 09 | -| `newline` | ASCII code 10 (linefeed) | -| `blank` | ASCII code 32 | -| `exclamation` | ASCII code 33 | -| `double-quote` | ASCII code 34 | -| `number-sign` | ASCII code 35 | -| `dollar` | ASCII code 36 | -| `percent-sign` | ASCII code 37 | -| `ampersand` | ASCII code 38 | -| `single-quote` | ASCII code 39 | -| `left-paren` | ASCII code 40 | -| `right-paren` | ASCII code 41 | -| `asterisk` | ASCII code 42 | -| `plus` | ASCII code 43 | -| `comma` | ASCII code 44 | -| `hyphen` | ASCII code 45 | -| `period` | ASCII code 46 | -| `slash` | ASCII code 47 | -| `colon` | ASCII code 58 | -| `semicolon` | ASCII code 59 | -| `less-than` | ASCII code 60 | -| `equals` | ASCII code 61 | -| `greater-than` | ASCII code 62 | -| `question-mark` | ASCII code 63 | -| `at-sign` | ASCII code 64 | -| `backslash` | ASCII code 92 | -| `caret` | ASCII code 94 | -| `underscore` | ASCII code 95 | -| `verical-bar` | ASCII code 124 | -| `tilde` | ASCII code 126 | -| `alphanumeric` | `letters` and/or `digits` | -| `name` | `alphanumeric`, `hyphen`, `period`, `underscore`, `nonascii` | - - +# 2. HED terminology + +The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", +"RECOMMENDED", "MAY", and "OPTIONAL" in this specification are to be interpreted as described in +[[RFC2119](https://www.ietf.org/rfc/rfc2119.txt)]. + +This specification uses a list of terms and abbreviations whose meaning is clarified here. +Note: We here hyphenate multi-word terms as they appear in HED strings themselves; in plain text +usage they may not need to be hyphenated. Starred variables [*] correspond to actual HED tags. + +## 2.1 Definitions + +### Agent [*] + +A person or thing, living or virtual, that produces (or appears to participants to be ready and +capable of producing) specified effects. Agents include the study participants from whom data is +collected. Virtual agents may be human or other actors in virtual-reality or augmented-reality +paradigms or on-screen in video or cartoon presentations (e.g., an actor interacting with the +recorded participant in a social neuroscience experiment, or a dog or robot active in a live +action or animated video). + +### Condition-variable [*] + +An aspect of the experiment that is set or manipulated during the experiment to observe an effect +or to manage bias. Condition variables are sometimes called independent variables. + +### Control-variable [*] + +An aspect of the experiment that is fixed throughout the study and usually is explicitly +controlled. + +### Dataset + +A set of neuroimaging and behavioral data acquired for a purpose of a particular study. +A dataset consists of data recordings acquired from one or more subjects, possibly from +multiple sessions and sensor modalities. A dataset is often referred to as a study. + +### Event [*] + +Something that happens during the recording or that may be perceived by a participant +as happening, to which a time of occurrence (most typically onset or offset) can be +identified. Something expected by a participant to happen at a certain time that +does not happen can also be a meaningful recording event. The nature of other events +may be known only to the experimenter or to the experiment control application +(e.g., undisclosed condition changes in task parameters). + +### Event-context [*] + +Circumstances forming or contributing to the setting in which an event occurs that +are relevant to its interpretation, assessment, and consequences. + +### Event marker + +A time point relative to the experimental timeline that can be associated with an +annotation. Often such a marker indicates a transition point for some underlying event process. + +### Event-stream [*] + +A named sequence of events such as all the events that are face stimuli or all of +the events that are participant responses. + +### Experiment-participant [*] + +A living agent, particularly a human from whom data is acquired during an experiment, +though in some paradigms other human participants may also play roles. + +### Experimental-trial [*] +A contiguous data period that is considered a unit used to observe or measure something, +typically a data period including an expected event sequence that is repeated many times +during the experiment (possibly with variations). Example: a repeating sequence of stimulus +presentation, participant response action, and sensory feedback delivery events in a +sensory judgment task. + +### HED schema [*] +A formal specification of the vocabulary and rules of a particular version of HED for +use in annotation, validation, and analysis. A HED schema is given in XML (`.xml`) format. +The top-level versioned HED schema is used for all HED event annotations. Named and +versioned HED library schema may be used as well to make use of descriptive terms used +by a particular research community. (For example, an experiment on comprehension of +connected speech might annotate events using a grammatical vocabulary contained in a +linguistics HED schema library.) + +### HED string + +A comma-separated list of HED tags and/or tag-groups. + +### HED tag + +A valid path along one branch of a HED vocabulary hierarchy. A valid long-form HED tag +is a slash-separated path following the schema tree hierarchy from its root to a term +along some branch. Any suffix of a valid long-form HED tag is a valid short-form HED tag. +No white space is allowed within terms themselves. For example, the long form of the +HED tag specifying an experiment participant is: `Property/Agent-property/Agent-task-role/Experiment-participant`. +Valid short-form tags are `Experiment-participant`, `Agent-task-role/Experiment-participant`, +and `Agent-property/Agent-task-role/Experiment-participant`. HED tools should treat +long-form and short-form tags interchangeably. + +### Indicator-variable [*] + +An aspect of the experiment or task that is measured or calculated for analysis. +Indicator variables, sometimes called dependent variables, can be data features +that are calculated from measurements rather than aspects that are directly measured. + +### Parameter [*] + +An experiment-specific item, often a specific behavioral or computer measure, that +is useful in documenting the analysis or assisting downstream analysis. + +### Recording [*] + +A continuous recording of data from an instrument in a single session without +repositioning the recording sensors. + +### Tag-group + +One or more valid, comma-separated HED tags enclosed in parentheses to indicate +that these tags belong together. Tag-groups may contain arbitrary nestings of other +tags and tag-groups. + +### Task [*] + +A set of structured activities performed by the participant that are integrally +related to the purpose of the experiment. Tasks often include observations and responses to +sensory presentations as well as specified actions in response to presented situations. + +### Temporal scope + +The time interval between the start and end of an event process. +Often the start time is annotated with the `Onset` tag, +and the end time is annotated with the `Offset` tag. +Since in practical terms the time is measured in discrete samples, +the temporal scope includes the start time sample +but does not include the end time sample. + +### Time-block [*] + +A contiguous portion of the data recording during which some aspect of the experiment +is fixed or noted. + +## 2.2 Character sets and restrictions + +Starting with HED standard schema versions 8.3.0 and above, HED will allow UTF-8 characters in various settings. +The types of characters referred to in this specification are: + +| Name | Description | +| ---- | ----------- | +| `alphanumeric` | `letters` and/or `digits` | +| `ampersand` | ASCII code 38 | +| `ascii` | utf-8 codes 0 to 127 (single byte) | +| `asterisk` | ASCII code 42 | +| `at-sign` | ASCII code 64 | +| `backslash` | ASCII code 92 | +| `blank` | ASCII code 32 | +| `caret` | ASCII code 94 | +| `colon` | ASCII code 58 | +| `comma` | ASCII code 44 | +| `dollar` | ASCII code 36 | +| `digits` | 0-9 | +| `double-quote` | ASCII code 34 | +| `equals` | ASCII code 61 | +| `exclamation` | ASCII code 33 | +| `greater-than` | ASCII code 62 | +| `hyphen` | ASCII code 45 | +| `left-paren` | ASCII code 40 | +| `less-than` | ASCII code 60 | +| `letters` | `lowercase` and/or `uppercase` | +| `lowercase` | ASCII characters a-z | +| `name` | `alphanumeric`, `hyphen`, `period`, `underscore`, `nonascii` | +| `newline` | ASCII code 10 (linefeed) | +| `nonascii` | utf-8 codes greater than 128 (multi-byte) | +| `number-sign` | ASCII code 35 | +| `percent-sign` | ASCII code 37 | +| `period` | ASCII code 46 | +| `plus` | ASCII code 43 | +| `printable` | ASCII 32 <= code < 127 | +| `question-mark` | ASCII code 63 | +| `right-paren` | ASCII code 41 | +| `semicolon` | ASCII code 59 | +| `single-quote` | ASCII code 39 | +| `slash` | ASCII code 47 | +| `tab` | ASCII code 09 | +| `text` | `printable` and/or `nonascii` excluding comma, square brackets, and curly braces.| +| `tilde` | ASCII code 126 | +| `underscore` | ASCII code 95 | +| `uppercase` | ASCII characters A-Z | +| `verical-bar` | ASCII code 124 | diff --git a/docs/source/03_HED_formats.md b/docs/source/03_HED_formats.md index 3f97ea4c..f7d6f2de 100644 --- a/docs/source/03_HED_formats.md +++ b/docs/source/03_HED_formats.md @@ -587,9 +587,8 @@ HED tools are available to map between shortened and long forms as needed. The tag must be associated with a schema and must correspond to a path in the schema (excluding any extension or value). -See [**NODE_NAME_EMPTY**](./Appendix_B.md#node_name_empty) for errors involving -forward slashes (`/`) and [**TAG_INVALID**](./Appendix_B.md#tag_invalid) for -other types of tag syntax errors. +See [**TAG_INVALID**](./Appendix_B.md#tag_invalid) for errors involving +forward slashes (`/`), extra white-space, and other types of tag syntax errors. ### 3.2.3. Tag case-sensitivity @@ -797,9 +796,8 @@ more details on validation errors due to repeated tag expressions. #### 3.2.8.1. The `Definition` tag A HED definition is a tag group consist of a `Definition` tag that takes -a value representing the definition's name and a tag group defining the concept. +a value representing the definition's name and an optional tag group defining the concept. Each definition is independent and stands alone. -The definition must contain a non-empty tag group. The `Definition` tag corresponds to a schema node with the `topLevelTagGroup` attribute, assuring that definitions cannot be nested. @@ -887,11 +885,32 @@ See [**TEMPORAL_TAG_ERROR**](./Appendix_B.md#temporal_tag_error) and [**TAG_GROUP_ERROR**](./Appendix_B.md#tag_group_error) and for a listing of specific errors associated with onsets, and offsets, and insets. -[**Chapter 5.3.1 Using Onset and Offset**](./05_Advanced_annotation.md#531-using-onset-and-offset) +[**Chapter 5.3.1. Using Onset and Offset**](./05_Advanced_annotation.md#531-using-onset-and-offset) in Chapter 5 gives examples of usage and additional details. +#### 3.2.8.4. `Duration` and `Delay` -#### 3.2.8.4. The `Event-context` tag +The `Delay` tag MUST appear in a top-level tag group and MUST take a numerical value. +Its tag group must contain an inner tag group representing an event whose onset time is delayed by +the specified amount. +If the top-level tag group contains a `Duration` tag, then this event has the indicated duration +otherwise the event is considered a point event. + +The `Duration` tag MUST appear in a top-level tag group and MUST take a numerical value indicating +the duration of the event represented by the other tags in its group. +The `Duration` top-level tag group may contain a `Delay`, but no other tags with the `topLevelTagGroup attribute` +(e.g., `Onset`, `Offset`, `Inset`, `Event-context`, `Definition`). + +Note that the starting or the ending time of the event group with `Delay` or `Duration`, respectively, +may not correspond to an actual event-marker appearing in the events file. +Instead, tools calculate when the scope at analysis time and may insert additional markers if required. +As with all HED tags and groups, order does not matter. + +See [**Chapter 5.3.3. Using Duration**](./05_Advanced_annotation.md#533-using-duration) and +[**Chapter 5.3.4. Using Delay**](./05_Advanced_annotation.md#534-using-delay) for more information. + + +#### 3.2.8.5. The `Event-context` tag The `Event-context` tag corresponds to a schema node with both the `topLevelTagGroup` and `unique` attributes. This implies that there can be only one `Event-context` group in each assembled event-level HED string. @@ -1013,6 +1032,9 @@ When a column name appears in curly braces within a HED annotation in a JSON sidecar, the corresponding HED annotation for that row is substituted for the curly braces and their contents when the HED annotation is assembled. +If a column is used in curly braces in a HED annotation, +then that column must have a HED annotation or a [**SIDECAR_INVALID**](./Appendix_B.md#sidecar_invalid) error is generated. + ``````{admonition} Rules for curly braces notation in sidecars. :class: tip diff --git a/docs/source/05_Advanced_annotation.md b/docs/source/05_Advanced_annotation.md index 7132bccf..18b4a16e 100644 --- a/docs/source/05_Advanced_annotation.md +++ b/docs/source/05_Advanced_annotation.md @@ -22,10 +22,12 @@ The following summarizes the syntax of HED definitions. ``````{admonition} Syntax summary for HED definitions. **Short forms:** + ~ *(Definition/xxx)* ~ *(Definition/xxx, (definition-content))* ~ *(Definition/xxx/#, (definition-content))* **Long forms:** + ~ *(Property/Organizational-property/Definition/xxx)* ~ *(Property/Organizational-property/Definition/xxx, (definition-content))* ~ *(Property/Organizational-property/Definition/xxx/#, (definition-content))* @@ -35,6 +37,8 @@ The following summarizes the syntax of HED definitions. containing the tags representing the definition’s contents. 2. If the *xxx/#* form is used, then the *(definition-content)* MUST contain a single `#` representing a value to be substituted for when the definition is used. +3. A definition without a *(definition-content)* is sometimes use as a general purpose definition for +anchoring `Onset` groups with varying content. ```` diff --git a/docs/source/Appendix_A.md b/docs/source/Appendix_A.md index e54cc542..7e3561b2 100644 --- a/docs/source/Appendix_A.md +++ b/docs/source/Appendix_A.md @@ -188,13 +188,13 @@ behavior of certain value classes (for example the `numericClass` value class). * - dateTimeClass - `digits`, `colon`, `hyphen`, `period`, `uppercase` * - nameClass - - `alphanumeric`, `blank`, `hyphen`, `period`, `underscore`, `nonascii` + - `alphanumeric`, `hyphen`, `underscore`, `nonascii` * - numericClass - - `digits`, `period`, `hyphen`, `plus`, 'caret`, `E`, `e` ` + - `digits`, `period`, `hyphen`, `plus`, `caret`, `E`, `e` ` * - posixPath - As yet unspecified. * - textClass - - `printable` or `nonascii` excluding curly braces. + - `printable` or `nonascii` excluding curly braces, commas, and single quotes. * - IRIClass - Valid International Resource Identifier as standardized by [rfc3987](https://datatracker.ietf.org/doc/html/rfc3987). `````` @@ -215,6 +215,7 @@ A BIDS regular expression for this is: 5. Values of `numericClass` must be equivalent to a valid floating point value. 6. Scientific notation is supported with the `numericClass`. 7. The `textClass` is for descriptions, mainly for use with the `Description` tag or schema element descriptions. +It is also allowed as the value for other tags such as 8. The `posixPath` class is as yet unspecified and currently allows any characters except commas. 9. The IRIClass validity is determined by a library implementing the IETF rfc3987 standard. diff --git a/docs/source/Appendix_B.md b/docs/source/Appendix_B.md index 39a4320d..bb6920b1 100644 --- a/docs/source/Appendix_B.md +++ b/docs/source/Appendix_B.md @@ -25,12 +25,12 @@ of errors keyed to the HED specification. A HED string contains an invalid character. -**a.** A tag extension contains a non `name` character. +**a.** A non-printable character (ASCII code < 32 or == 127) appears in a HED string. **b.** Curly braces appear in a HED string not in a sidecar. **Notes:** -- HED uses ANSI encoding and does not support UTF-8. +- Starting with HED 8.3.0, HED supports UTF-8 encoding. - Different parts of a HED string have different rules for acceptable characters. See @@ -88,7 +88,7 @@ A **definition** is a tag group containing a `Definition` tag and a single tag g the definition's contents. **a.** A `Definition` tag does not appear in a tag group at the top level in an annotation. -**b.** A definition's enclosing tag group is missing the inner tag group (.i.e., the definition's contents). +**b.** A definition's enclosing tag group contains an empty group (i.e., an actual inner `()`). **c.** A definition's enclosing tag group contains more than a `Definition` tag and an inner group. **d.** A definition's inner tag group contains `Definition`, `Def` or `Def-expand` tags. **e.** A definition uses curly braces. @@ -116,13 +116,6 @@ its description is updated to include the reason for deprecation and a suggested See [**A.1.4. Schema attributes**](./Appendix_A.md#a14-schema-attributes) for additional information about the `deprecatedFrom` schema attribute. -### NODE_NAME_EMPTY - -**a.** A tag has one or more forward slashes (`/`) at beginning or end (ignoring whitespace). -**b.** A tag contains consecutive forward slashes (ignoring whitespace). - -See [**3.2.3 Tag forms**](./03_HED_formats.md#322-tag-forms) for more information. - ### PARENTHESES_MISMATCH **a.** A HED string does not have the same number of open and closed parentheses. @@ -176,6 +169,7 @@ on the requirements for using sidecars. **a.** The `"HED"` key is not a second-level dictionary key. **b.** An annotation entry is provided for `n/a`. +**c.** A sidecar refers to a column in curly braces, but that column has no HED. See [**3.2.9. Sidecars**](./03_HED_formats.md#329-sidecars) for a general explanation of sidecar requirements. @@ -254,9 +248,15 @@ for additional information on the tag extension rules. See [**3.2.7.2. Tag group attributes**](./03_HED_formats.md#3272-tag-group-attributes) for additional information on the rules for group errors due to schema attributes. +**See also:** [**TEMPORAL_TAG_ERROR**](#temporal_tag_error) for errors involving `Onset`, `Offset`, `Inset`, +`Duration` and `Delay`. + ### TAG_INVALID **a.** The tag is not valid in the schema it is associated with. +**b.** The tag has extra internal whitespace, including directly before or after forward slashes. +**c.** The tag has a leading, trailing, or consecutive forward slashes. +**d.** A tag or tag extension contains a non `name` character. See [**3.2.2. Tag forms**](./03_HED_formats.md#322-tag-forms) for a discussion of tag forms and their relationship to the HED schema. @@ -289,8 +289,8 @@ for an explanation of the `requireChild` attribute. Note: For the purpose of `Onset`/`Offset` matching, `Def` or `Def-expand` tags with different placeholder substitutions are considered to be different. -**a.** An `Offset`, `Onset`, `Inset`, `Duration`, or `Delay` tag does not appear in a tag group. -**b.** An `Offset`, `Onset`, `Inset`, `Duration`, or `Delay` tag appears in a nested tag group (not a top-level tag group). +**a.** An `Offset`, `Onset`, `Inset`, `Duration`, or `Delay` tag does not appear in a tag group. +**b.** An `Offset`, `Onset`, `Inset`, `Duration`, or `Delay` tag appears in a nested tag group (not a top-level tag group). **c.** An `Onset`, `Offset` or `Inset` tag is not grouped with exactly one `Def` tag or `Def-expand` group. **d.** An `Onset`, `Inset`, `Duration`, or `Delay` tag group contains more than one additional tag group. **e.** An `Offset` appears with one or more tags or additional tag groups. @@ -303,10 +303,12 @@ that are not in a tag group. appears in an event marker with the same time as with another `Onset`, `Inset`, or `Offset` that uses the same anchor. **j.** An `Inset` tag is not grouped with a `Def` tag or a `Def-expand` group corresponding to an ongoing `Onset`. -**k.** An `Onset`, `Inset`, or `Offset` tag appears in an annotation for a non-time tabular file. -**l.** A `Duration` or `Delay` tag group contains extra tags or groups, or is missing the required group. +**k.** An `Onset`, `Inset`, or `Offset` tag appears in an annotation for a non-time tabular file. +**l.** A `Duration` or `Delay` tag group contains extra tags or groups, or is missing the required group. **m.** An `Offset`, `Onset`, `Inset`, `Duration`, or `Delay` tag appears with other top level tags, except -Delay and Duration which can be paired. +`Delay` and `Duration` which can be paired. + +**See also:** [**TAG_GROUP_ERROR**](#tag_group_error). **Note:** if the `Onset` tag group's definition is in expanded form, the `Def-expand` will be an additional internal tag group. diff --git a/hedwiki/HED7.2.0.mediawiki b/hedwiki/deprecated/HED7.2.0.mediawiki similarity index 98% rename from hedwiki/HED7.2.0.mediawiki rename to hedwiki/deprecated/HED7.2.0.mediawiki index a549f985..a4934aea 100644 --- a/hedwiki/HED7.2.0.mediawiki +++ b/hedwiki/deprecated/HED7.2.0.mediawiki @@ -1,1315 +1,1315 @@ -HED version="7.2.0" - -'''Prologue''' -Changelog -* 3/16/2021: v.7.2.0 Adopted the new format for mediawiki files. -* 11/22/2020: v. 7.1.2 Add extensionAllowed to top-level Item subtree. -* 7/27/2020: v. 7.1.1 Corrected extensionAllowed on several top-level and second-level items. Removed extra h:m from clockTime. Removed unitSymbol from clockTime. Added dateTime unit class. -* 5/9/2020: Added the clockTime unit class -* 4/25/2020: v. 7.1.0 Added unit modifiers and updated unit classes to support SI units. -* 9/29/2019: v. 7.0.5: Added Visual/Rendering type/Screen/Head-mounted display. Added extensionAllowed to Sensory presentation. Added Tone and Genre under Sensory presentation/Auditory/Music. -* 8/18/2019: v. 7.0.4: Added extensionsAllowed to Custom and removed extensionsAllowed from nodes under Attribute and Item/Object. Also replaced per-sec with per-s in units. -* 7/8/2019: v. 7.0.3: Removed the extra Action/Turn node. -* 5/18/2019: v. 7.0.2: Added centisecond and millisecond as valid time units. -* 3/7/2018: v. 7.0.1: Added Paradigm/Psychomotor vigilance task. -* 2/15/2018: v. 7.0.0: Removed parentheses from some paradigm tags (used hyphens instead) -* 1/11/2018: v. 6.0.5: Changed unit class for a number of values from velocity to speed. -* 8/4/2017: v. 6.0.4: Added Machine failure detection task to paradigms list. -* 7/20/2017: v. 6.0.3: Removed Action observation paradigm since there is already Action observation task. -* 7/17/2017: v. 6.0.2: Added Attribute/Object control/Accelerate and Attribute/Object control/Decelerate. Also added a description for extensionAllowed. -* 7/14/2017: v. 6.0.1: Replaced Item/Natural scene/Arial with Item/Natural scene/Aerial. -* 7/13/2017: v. 6.0.0: Replaced XXX in Event/Category/Experimental stimulus/Instruction/XXX with Event/Category/Experimental stimulus plus (Attribute/Instruction, Action/XXX). Moved a number of instructions under Action/. Also added Rest eyes open', Rest eyes closed and Imagined emotion paradigms. Removed Action/Imagine and instead one should use Attribute/Imagined. -* 6/22/2017: v. 5.2.3: Added clarification for Attribute/Background (stimuli to be ignored) -* 3/22/2017: v. 5.2.2: Fixed the missing [ in Attribute/Imagined. -* 3/16/2017: v. 5.2.1: Added Action/Interact, Action/Interact/With human, Action/Take survey, Action/Eye blink/Left base, Left zero, Left half height, Right half height, Right zero, right base. -* 3/7/2017, v 5.1.1: Added Attribute/Blink/Duration and fixed some issues. -* 2/16/2017, v 5.0.0: Changed Attribute/Presentation fraction to Attribute/Presentation/Fraction and added a few other attributes under Attribute/Presentation. Removed Participant/Role and and added Attribute/Role. -* 2/9/2017, v 4.0.5: added Paradigm/ID screening tag and moved language n-back under n-back paradigm. Also moved Flickering/rate to Attribute/Temporal rate. -* 2/2/2017, v 4.0.4: moved Height and Width from Experiment/Context/Fixed screen/ to under Attribute/ -* 1/31/2017, v 4.0.3: added Attribute/Condition. -* 1/5/2017, v. 4.0.2: fixed description in Sentence and Paragraph -* 12/1/2016, v. 4.0.1: added Blink action and attributes. -* 11/10/2016, v. 4.0.0: changed "Event/Sequence group id" to "Event/Group ID". Added "Paradigm/Instructed movement", "Attribute/Response start delay" and "Attribute/Response end delay". -* 9/19/2016: Typo in Custom tag description fixed. -* 9/8/2016: Added Attribute/Action judgment/Indeterminate. -* 9/6/2016: Added Attribute/Imagined -* 9/6/2016 Added back Experiment control/Activity/Participant action.in -* 9/1/2016: Added Eyes open/Keep,Eyes close/Keep. Added Action/Make fist Action/Curl toes. MAJOR: moved Participant action/... from Event/Category/Experiment control/Activity to under Attribute/Activity judgment/. This is a backward incompatible change. -* 8/4/2016: Added Attribute/Participant indication tag. -* 7/21/2016: Added Attribute/Intended effect tag. This can be used e.g. to specify an image in an RSVP experiment where it was intended to be perceived as a target (but it may not have by the subject). -* 6/22/2016: Added Attribute/Temporal uncertainty tag along with its child nodes. Also required a child for Attribute/Presentation fraction tag. -* 6/16/2016: Added sleep stages. -* 5/23/2016: Added more description to Attribute/Probability, allowing text values like low and high in addition to numerical values between 0 and 1. -* 3/31/2016: Added constant and variable delays under Participant/Effect/Cognitive/Cue. -* 3/10/2016: -** Added Non-informative under Cognitive/Feedback -** Added Cue under Cognitive -* 2/25/2016: -** Removed /Participant/Effect/Cognitive/Oddball/Three stimuli/Target -** Moved Non-target from under Expected to the same level as Target, this is because in Three stimuli oddball paradigm the Non-targets are oddballs and hence not expected. -** Note: user are encouraged to add Expected and Oddball tags when tagging targets and non-targets -** Added Presentation fraction - -'''Syntax''' - -HED tags can only be separated by commas. Use semicolons (;) instead of commas in event descriptions since otherwise extra commas could confuse HED parsers. -From version 2.2, HED adheres to http://semver.org/ versioning. - -!# start schema - -'''Event''' -* Category {required, requireChild, predicateType=passThrough, position=1} [This is meant to designate the reason this event was recorded] -** Initial context [The purpose is to set the starting context for the experiment --- and if there is no initial context event---this information would be stored as a dataset tag] -** Participant response [The purpose of this event was to record the state or response of a participant. Note: participant actions may occur in other kinds of events, such as the experimenter records a terrain change as an event and the participant happens to be walking. In this case the event category would be Environmental. In contrast, if the participant started walking in response to an instruction or to some other stimulus, the event would be recorded as Participant response] -** Technical error [Experimenters forgot to turn on something or the cord snagged and something may be wrong with the data] -*** # {takesValue} [Description as string] -** Participant failure [Situation in which participant acts outside of the constraints of the experiment -- such as driving outside the boundary of a simulation experiment or using equipment incorrectly] -*** # {takesValue} [Description as string] -** Environmental [Change in experimental context such as walking on dirt versus sidewalk] -*** # {takesValue} [Description as a string] -** Experimental stimulus -*** Instruction -** Experimental procedure [For example doing a saliva swab on the person] -*** # {takesValue}[Description as string] -** Incidental [Not a part of the task as perceived by/instructed to the participant --- for example an airplane flew by and made noise or a random person showed up on the street] -*** # {takesValue}[Description as string] -** Miscellaneous [Events that are only have informational value and cannot be put in other event categories] -*** # {takesValue}[Description as a string] -** Experiment control [Information about states and events of the software program that controls the experiment] -*** Sequence{predicateType=propertyOf} -**** Permutation ID {requireChild} -***** # {takesValue} [Permutation number/code used for permuted experiment parts] -**** Experiment [Use Attribute/Onset and Attribute/Offset to indicate start and end of the experiment] -**** Block [Each block has the same general context and contains several trials -- use Attribute/Onset and Attribute/Offset to specify start and end] -***** # {takesValue} [Block number or identifier] -**** Trial [Use Attribute/Onset and Attribute/Offset to specify start and end] -***** # {takesValue} [Trial number or identifier] -**** Pause [Use Attribute/Onset and Attribute/Offset to specify start and end] -*** Task -**** # {takesValue} [Label here] -*** Activity [Experiment-specific actions such as moving a piece in a chess game] -**** Participant action -*** Synchronization [An event used for synchronizing data streams] -**** Display refresh -**** Trigger -**** Tag {predicateType=propertyOf} -***** # {takesValue} [Actual tag: string or integer] -*** Status -**** Waiting for input -**** Loading -**** Error -*** Setup -**** Parameters {predicateType=propertyOf} -***** # {takesValue} [Experiment parameters in some a string. Do not used quotes.] -* ID {predicateType=propertyOf} [A number or string label that uniquely identifies an event instance from all others in the recording (a UUID is strongly preferred).] -** # {takesValue} [ID of the event] -* Group ID {predicateType=propertyOf} [A number or string label that uniquely identifies a group of events associated with each other.] -** # {takesValue} [ID of the group] -* Duration {requireChild, predicateType=propertyOf} [An offset that is implicit after duration time passed from the onset] -** # {takesValue, isNumeric, unitClass=time} -* Description {requireChild, required, unique, predicateType=propertyOf, position=3}[Same as HED 1.0 description for human-readable text] -** # {takesValue} -* Label {requireChild, required, unique, predicateType=propertyOf, position=0} [A label for the event that is less than 20 characters. For example /Label/Accept button. Please note that the information under this tag is primarily not for use in the analysis and is provided for the convenience in referring to events in the context of a single study. Please use Custom tag to define custom event hierarchies. Please do not mention the words Onset or Offset in the label. These should only be placed in Attribute/Onset and Attribute/Offset. Software automatically generates a final label with (onset) or (offset) in parentheses added to the original label. This makes it easier to automatically find onsets and offsets for the same event.] -** # {takesValue} -* Long name {requireChild, unique, predicateType=propertyOf, position=2} [A long name for the event that could be over 100 characters and could contain characters like vertical bars as separators. Long names are used for cases when one wants to encode a lot of information in a single string such as Scenario | VehiclePassing | TravelLaneBLocked | Onset]. -** # {takesValue} - -'''Item''' {extensionAllowed} -* ID {requireChild, predicateType=propertyOf} [Optional] -** # {takesValue} -** Local [For IDs with local scope --- that is IDs only defined in the scope of a single event. The local ID 5 in events 1 and 2 may refer to two different objects. The global IDs directly under ID/ tag refer to the same object through the whole experiment] -*** # {takesValue} -* Group ID {requireChild, predicateType=propertyOf} [Optional] -** # {takesValue} -* Object [Visually discernable objects. This item excludes sounds that are Items but not objects] -** Vehicle -*** Bicycle -*** Car -*** Truck -*** Cart -*** Boat -*** Tractor -*** Train -*** Aircraft -**** Airplane -**** Helicopter -** Person -*** Pedestrian -*** Cyclist -*** Mother-child -*** Experimenter -** Animal -** Plant -*** Flower -*** Tree -**** Branch -**** Root -** Building -** Food -*** Water -** Clothing -*** Personal [clothing that is on the body of the subject] -** Road sign -** Barrel -** Cone -** Speedometer -** Construction zone -** 3D shape -** Sphere -** Box -*** Cube -* 2D shape [Geometric shapes] -** Ellipse -*** Circle -** Rectangle -*** Square -** Star -** Triangle -** Gabor patch -** Cross [By default a vertical-horizontal cross. For a rotated cross add Attribute/Object orientation/Rotated/ tag] -** Single point -** Clock face [Used to study things like hemispheric neglect. The tag is related to the clock-drawing-test] -*** # {takesValue, unitClass=clockTime} -* Pattern -** Checkerboard -** Abstract -** Fractal -** LED -** Dots -*** Random dot -** Complex -* Face -** Whole face with hair -** Whole face without hair -** Cut-out -** Parts only -*** Nose -*** Lips -*** Chin -*** Eyes -**** Left only -**** Right only -* Symbolic [Something that has a meaning, could be linguistic or not such as a stop signs.] -** Braille character -** Sign [Like the icon on a stop sign. This should not to be confused with the actual object itself.] -*** Traffic -**** Speed limit -***** # {takesValue, isNumeric, unitClass=speed} [Always give units e.g. mph or kph] -** Character -*** Digit -*** Pseudo-character [Alphabet-like but not really] -*** Letter [Authograph or valid letters and numbers such as A or 5] -**** # {takesValue} -** Composite [Has multiple of the above on it] -* Natural scene -** Aerial -*** Satellite -* Drawing [Cartoon or sketch] -** Line drawing -* Film clip -** Commercial TV -** Animation -* IAPS [International Affective Picture System] -* IADS [International Affective Digital Sounds] -* SAM [The Self-Assessment Manikin] - -'''Sensory presentation {extensionAllowed} [Object manifestation]''' - -* Auditory [Sound] -** Nameable -** Cash register -** Ding [Often associated with positive valence] -** Buzz [Often associated with negative valence] -** Fire alarm -** Click -*** ABR [Auditory Brainstem Response] -** Tone -** Siren -** Music -*** Chord sequence -*** Vocal -*** Instrumental -*** Tone -*** Genre -** Noise -*** White -*** Colored [Not white --- for example a 1/f spectrum] -** Human voice -** Animal voice {extensionAllowed} -*** Bird -*** Dog -*** Insect -*** Squirrel - -** Real world [For example people walking or machines operating] -*** Pedestrian -*** Footsteps -**** Walking -**** Running -*** Noisemaker -*** Construction noise -*** Machine -*** Vehicle -**** Horn -**** Aircraft -***** Airplane -***** Helicopter -**** Train -**** Cart -**** Car alarm -**** Car -**** Bicycle -** Nonverbal vocal -*** Emotional -**** Crying -**** Sighing -*** Gulp -*** Gurgle -*** Sneeze -*** Cough -*** Yawn -** Nonvocal [A car engine or gears grinding --- anything that is not made by a human or an animal] -*** Engine -* Olfactory [Odor] -* Taste -* Tactile [Pressure] -* Visual -** Rendering type {requireChild, predicateType=passThrough} -*** Screen -**** Head-mounted display -**** View port [Two or more views on the same object --- for example one from top one from street view] -***** ID {predicateType=passThrough} -****** # {takesValue} [A descriptive label for the viewport] -**** 2D -**** 3D -**** Movie -***** Video-tape -***** Motion-capture [Stick figure of motion capture of someone else] -****** Point light -****** Stick figure -****** Outline -***** Flickering -***** Steady state -*** Real-world -*** LED [Stimulus is turning on/off one or a few LEDs] - -'''Attribute''' {requireChild, extensionAllowed} -* Onset [Default] -* Offset -* Imagined [This is used to identity that the (sub)event only happened in the imagination of the participant, e.g. imagined movements in motor imagery paradigms.] -* State ID {requireChild} [This is used to identify a group of events that are changing the state of a variable where the onset means the offset of any other and a change in the state] -** # {takesValue} [ID which could be a number or any string] -* Repetition {requireChild} [When the same type of event such as a fixation on the exact same object happens multiple times and it might be necessary to distinguish the first look vs. others] -** # {takesValue, isNumeric} [Number starting from 1 where 1 indicates the first occurrence and 2 indicates the second occurrence] -* Temporal rate {predicateType=propertyOf} -** # {takesValue, isNumeric, unitClass=frequency} [In Hz] -* Condition {requireChild} [Specifies the value of an independent variable (number of letters, N, in an N-back task) or function of independent variables that is varied or controlled for in the experiment. This attribute is often specified at the task level and can be associated with specification of an experimental stimulus or an experiment context (e.g. 1-back, 2-back conditions in an N-back task, or changing the target type from faces to houses in a Rapid Serial Visual Presentation, or RSVP, task.)] -** # {takesValue} [the condition] -* Action judgment [External judgment (assumed to be ground truth, e.g. from an experiment control software or an annotator) about participant actions such as answering a question, failing to answer in time, etc.] -** Correct -** Incorrect [Wrong choice but not time out] -** Indeterminate [It cannot be determined that the action was correct or incorrect.] -** Time out -*** Missed [Participant failed or could not have perceived the instruction due to their eyes being off-screen or a similar reason. Not easy to deduce this but it is possible] -** Inappropriate [A choice that is not allowed such as moving a chess piece to a location it should not go based on game rules] -* Response start delay [The time interval between this (stimulus) event and the start of the response event specified, usually by grouping with the event ID of the response start event.] -** # {takesValue, unitClass=time} -* Response end delay [The time interval between this (stimulus) event and the end of the response event specified, usually by grouping with the event ID of the response end event.] -** # {takesValue, unitClass=time} -* Social [Involving interactions among multiple agents such as humans or dogs or robots] -* Peak [Peak velocity or acceleration or jerk] -* Object side {requireChild} [Could be the left, right, or both sides of a person or a vehicle] -** Reference object ID {requireChild,predicateType=propertyOf}[Place object ID after this] -*** # {takesValue} -** Right -** Left -** Front -** Back -** Top -** Bottom -** Starboard -** Port -** Passenger side [Side of a car] -** Driver side [Side of a car] -** Bow [Front of a ship] -** Stern [Back of the ship] -* Direction {requireChild} [Coordinate system is inferred from Attribute/Location. To specify a vector combine subnodes with number --- for example Attribute/Top/10, Attribute/Direction/Left/5 to create a vector with coordinates 10 and 5] -** Top [Combine Attribute/Direction/Top and Attribute/Direction/Left to mean the upper left] -*** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} -** Bottom -*** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} -** Left -*** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} -** Right -*** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} -** Angle [Clockwise angle in degrees from vertical] -*** # {takesValue, isNumeric, unitClass=angle} [Clockwise angle in degrees from vertical] -** North -*** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} -** South -*** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} -** East -*** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} -** West -*** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} -** Forward [Like a car moving forward] -** Backward [Like a car moving backward] -* Location {requireChild} [Spot or center of an area. Use Area were you are referring to something with significant extent and emphasizing its boundaries, like a city] -** # {takesValue} [location label] -** Screen [Specify displacements from each subnode in pixels or degrees or meters. Specify units such as Attribute/Location/Screen/Top/12 px] -*** Center -**** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} -*** Top [You can combine Attribute/Location/Top and Attribute/Location/Left to designate UpperLeft and so on] -**** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} -*** Bottom -**** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} -*** Left -**** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} -*** Right -**** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} -*** Angle -**** # {takesValue, isNumeric, unitClass=angle} [Clockwise angle in degrees from vertical] -*** Center displacement -**** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength} [displacement from screen center, in any direction, in degrees, cm, or other lengths] -**** Horizontal -***** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength} [Displacement from screen center in any direction] -**** Vertical -***** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength}[Displacement from screen center in any direction] -** Lane [For example a car lane] -*** Rightmost -*** Leftmost -*** Right of expected -*** Left of expected -*** Cruising -*** Passing [The lane that cars use to take over other cars] -*** Oncoming -** Real-world coordinates {requireChild} -*** Room -**** xyz {requireChild} [have a subnode, e.g. Attribute/Location/Real-world coordinates/Room/xyz/10-50-30] -***** # {takesValue} -** Reference frame {requireChild} -*** Specified absolute reference -*** Relative to participant -**** Participant ID {requireChild} -***** # {takesValue} -**** Left -**** Front -**** Right -**** Back -**** Distance {requireChild} -***** # {takesValue, isNumeric, unitClass=physicalLength} [Distance is in meters by default] -***** Near -***** Moderate -***** Far -**** Azimuth {requireChild} -***** # {takesValue, isNumeric, unitClass=angle} [Clockwise with units preferably in degrees] -**** Elevation {requireChild} -***** # {takesValue, isNumeric, unitClass=angle} [Preferably in degrees] -* Object orientation {requireChild} -** Rotated -*** Degrees {requireChild} -**** #{takesValue, isNumeric, unitClass=angle}[Preferably in degrees] -* Size {requireChild} -** Length{requireChild} -*** # {takesValue, isNumeric, unitClass=physicalLength} [In meters or other units of length ] -** Width -*** # {takesValue, isNumeric, unitClass=physicalLength} [in meters] -** Height -*** # {takesValue, isNumeric, unitClass=physicalLength} [Default units are meters] -** Area {requireChild} -*** # {takesValue, isNumeric, unitClass=area} -** Volume {requireChild} -*** # {takesValue, isNumeric, unitClass=volume} [In cubic-meters or other units of volume] -** Angle{requireChild} -*** # {takesValue, isNumeric, unitClass=angle} [In degrees or other units of angle] -* Item count {requireChild} [Number of items for example when there are 3 cars and they are identified as a single item] -** # {takesValue, isNumeric} [Numeric value of number of items #] -** <=# {takesValue, isNumeric} [Number of items less than or equal to #] -** >=# {takesValue, isNumeric} [Number of items more than or equal to #] -* Auditory -** Frequency {requireChild} -*** # {takesValue, isNumeric, unitClass=frequency} [In HZ] -** Loudness {requireChild} -*** # {takesValue, isNumeric, unitClass=intensity} [in dB] -** Ramp up [Increasing in amplitude] -** Ramp down [Decreasing in amplitude] -* Blink -** Time shut {requireChild} [The amount of time the eyelid remains closed (typically measured as 90% of the blink amplitude), in seconds.] -*** # {takesValue, isNumeric, unitClass=time, default=s} -** Duration {requireChild} [Duration of blink, usually the half-height blink duration in seconds taken either from base or zero of EEG signal. For eye-trackers, usually denotes interval when pupil covered by eyelid.] -***# {takesValue, isNumeric, unitClass=time, default=s} -** PAVR {requireChild} [Amplitude-Velocity ratio, in centiseconds] -*** # {takesValue, isNumeric, unitClass=time, default=centiseconds} -** NAVR {requireChild} [Negative Amplitude-Velocity ratio, in centiseconds] -*** # {takesValue, isNumeric, unitClass=time, default=centiseconds} -* Visual -** Bistable -** Background -** Foreground -** Up-down separated [Stimuli presented both at the top and the bottom of fovea] -*** # {takesValue, isNumeric, unitClass=angle} [Angle of separation in degrees by default] -** Bilateral [For bilateral visual field stimulus presentations] -*** # {takesValue, isNumeric, unitClass=angle} [Angle of separation in degrees by default] -** Motion -*** Down -**** # {takesValue, isNumeric, unitClass=speed} [e.g. 3 degrees-per-second] -*** Up -**** # {takesValue, isNumeric, unitClass=speed} [e.g. 3 degrees-per-second] -*** Horizontal -**** Right -***** # {takesValue, isNumeric, unitClass=speed} [e.g. 3 degrees-per-second] -**** Left -***** # {takesValue, isNumeric, unitClass=speed} [e.g. 3 degrees-per-second] -*** Oblique -**** Clock face -***** # {takesValue, unitClass=time} [For example 4:30] -** Fixation point -** Luminance {requireChild} -*** # {takesValue, isNumeric, unitClass=luminousIntensity}[In candelas by default] -** Color {requireChild} -*** Dark -*** Light -*** Aqua [These are CSS 3 basic color names] -*** Black -*** Fuchsia -*** Gray -*** Lime -*** Maroon -*** Navy -*** Olive -*** Purple -*** Silver -*** Teal -*** White -*** Yellow -*** Red -**** # {takesValue, isNumeric} [R value of RGB between 0 and 1] -*** Blue -**** # {takesValue, isNumeric} [B value of RGB between 0 and 1] -*** Green -**** # {takesValue, isNumeric} [G value of RGB between 0 and 1] -*** Hue {requireChild} -**** # {takesValue, isNumeric} [H value of HSV between 0 and 1] -*** Saturation {requireChild} -**** # {takesValue, isNumeric} [S value of HSV between 0 and 1] -*** Value {requireChild} -**** # {takesValue, isNumeric} [V value of HSV between 0 and 1] -*** Achromatic [Indicates gray scale] -**** # {takesValue, isNumeric} [White intensity between 0 and 1] -* Nonlinguistic [Something that conveys meaning without using words such as the iconic pictures of a man or a woman on the doors of restrooms. Another example is a deer crossing sign with just a picture of jumping deer.] -* Semantic [Like in priming or in congruence] -* Language -** Unit {predicateType=passThrough} -*** Phoneme -*** Syllable -*** Word -**** Noun -***** Proper [A proper noun that refers to a unique entity such as London or Jupiter] -***** Common [A noun that refers to a class of entities such as cities or planets or corporations such as a Dog or a Skyscraper] -**** Verb -**** Adjective -**** Pseudoword -**** # {takesValue} [Actual word] -*** Sentence -**** Full -**** Partial -**** # {takesValue} [Actual sentence] -*** Paragraph -**** # {takesValue} [Actual paragraph] -*** Story [Multiple paragraphs making a detailed account] -** Family {predicateType=passThrough} -*** Asian -**** Chinese -**** Japanese -*** Latin -**** English -**** German -**** French -* Induced [Such as inducing emotions or keeping someone awake or in a coma with an external intervention] -* Emotional -** Arousal [Only in the context of 2D emotion representation] -*** # {takesValue, isNumeric} [A value between -1 and 1] -** Positive valence [Valence by itself can be the name of an emotion such as sadness so this tag distinguishes the type of emotion] -*** # {takesValue, isNumeric} [Ranges from 0 to 1] -** Negative valence -*** # {takesValue, isNumeric}[Ranges from 0 to 1] -* Priming -** Motoric -** Emotional -** Perceptual -* Subliminal -** Unmasked -** Masked -*** Forward -*** Backward -* Supraliminal [By default this is assumed about each stimulus] -* Liminal [At the 75%-25% perception threshold] -* Probability [Use to specify the level of certainty about the occurrence of the event. Use either numerical values as the child node or low, high, etc.] -* Temporal uncertainty {requireChild} [Use to specify the amount of uncertainty in the timing of the event. Please notice that this is different from Attribute/Probability tag which relates to the occurrence of event and can be interpretative as the integral of probability density across a distribution whose shape (temporal extent) is specified by Attribute/Temporal uncertainty.] -** # {takesValue, isNumeric, unitClass=time} [implies that the temporal uncertainty is a uniform distribution with the amount of time provided, extending on both side. E.g. "0.5 s" specifies a 1-second range centered at event latency.] -** Standard deviation {requireChild} [implies that the distribution of temporal uncertainty is Gaussian with the provided standard deviation (in seconds).] -*** # {takesValue, isNumeric, unitClass=time} -* Presentation {requireChild}[Attributes associated with visual, auditory, tactile, etc. presentation of an stimulus] -** Fraction {requireChild} [the fraction of presentation of an Oddball or Expected stimuli to the total number of same-class presentations, e.g. 10% of images in an RSVP being targets] -*** # {takesValue, isNumeric} -** Cued [what is presented is cued to the presentation of something else] -** Background [presented in the background such as background music, background image, etc. The main factor here is that background presentations are to be ignored, e.g. ignore math question auditory stimuli.] -* Intended effect [This tag is to be grouped with Participant/Effect/Cognitive to specify the intended cognitive effect (of the experimenter). This is to differentiate the resulting group with Participant/Effect which specifies the actual effect on the participant. For example, in an RSVP experiment if an image is intended to be perceived as a target, (Participant/Effect/Cognitive/Target, Attribute/Intended effect) group is added. If the image was perceived by the subject as a target (e.g. they pressed a button to indicate so), then the tag Participant/Effect/Cognitive/Target is also added: Participant/Effect/Cognitive/Target, (Participant/Effect/Cognitive/Target, Attribute/Intended effect). otherwise the Participant/Effect/Cognitive/Target tag is not included outside of the group.] -* Instruction [This tag is placed in events of type Event/Category/Experimental stimulus/Instruction, grouped with one or more Action/ tags to replace the detailed specification XXX in Event/Category/Experimental stimulus/Instruction/XXX) in previous versions. Usage example: Event/Category/Experimental stimulus/Instruction, (Action/Fixate, Attribute/Instruction) ] -* Participant indication [This tag is placed in events of type Event/Category/Participant response and grouped with Participant/Effect/Cognitive/.. tags to specify the type of cognitive effect the participant has experienced. For example, in an RSVP paradigm, the subject can indicate the detection of a target with a button press. The HED string associated with this button press must include (Attribute/Participant indication, Participant/Effect/Cognitive/Target,...)] -* Path {requireChild} -** Velocity [Use Attribute/Onset or Attribute/Offset to specify onset or offset] -*** # {takesValue, isNumeric, unitClass=speed} [Numeric value with default units of m-per-s] -** Acceleration -*** # {takesValue, isNumeric, unitClass=acceleration} [Numeric value with default units of m-per-s2] -** Jerk -*** # {takesValue, isNumeric, unitClass=jerk} [Numeric value with default units of m-per-s3] -** Constrained [For example a path cannot cross some region] -* File {requireChild} [File attributes] -** Name -** Size -*** # {takesValue, isNumeric, unitClass=memorySize} [Numeric value with default units of mb] -** # {takesValue, isNumeric}[Number of files] -* Object control {requireChild} [Specifies control such as for a vehicle] -** Perturb -** Collide -** Near miss [Almost having an accident resulting in negative consequences] -** Correct position [After a lane deviation or side of the walkway] -** Halt [Time at which speed becomes exactly zero] -** Brake -** Shift lane -** Cross [Crossing in front of another object such as a vehicle] -** Pass by [Passing by another object or the participant] -** Accelerate -** Decelerate -* Association {requireChild} -** Another person [Item such as a cup belonging to another person] -** Same person [Item such as a cup belonging to the participant] -* Extraneous [Button presses that are not meaningful for example due to intrinsic mechanical causes after a meaningful press] -* Role {requireChild} [The role of the agent (participant, character, AI..)] -** Leader -** Follower -** # {takesValue} - -'''Action'''{extensionAllowed}[May or may not be associated with a prior stimulus and can be extended] -* Involuntary [Like sneezing or tripping on something or hiccuping] -** Hiccup -** Cough -** Sneeze -** Stumble [Temporary and involuntary loss of balance] -** Fall -** Tether Jerk [When a tether attached to the subject is stuck/snagged and forces the participant to involuntary accommodate/react to it] -** Clear Throat -** Yawn -** Sniffle -** Burp -** Drop [For example something drops from the hand of the subject] -* Make fist -** Open and close [Continue to open and close the fist, for example in motor imagery paradigms.] -* Curl toes -** Open and close [Continue to curl and uncurl toes, for example in motor imagery paradigms.] -* Button press {extensionAllowed} -** Touch screen -** Keyboard -** Mouse -** Joystick -* Button hold [Press a button and keep it pressed] -* Button release -* Cross boundary -** Arrive -** Depart -* Speech -* Hum -* Eye saccade [Use Attribute/Peak for the middle of saccade and Attribute/Onset for the start of a saccade] -* Eye fixation -* Eye blink -** Left base [The time of the first detectable eyelid movement on closing.] -** Left zero [The last time at which the EEG/EOG signal crosses zero during eyelid closing.] -** Left half height [The time at which the EEG/EOG signal reaches half maximum height during eyelid closing.] -** Max [The time at which the eyelid is the most closed.] -** Right half height [The time at which the EEG/EOG signal reaches half maximum height during eyelid opening.] -** Right zero [The first time at which the EEG/EOG signal crosses zero during eyelid opening.] -** Right base [The time of the last detectable eyelid movement on opening.] -* Eye close [Close eyes and keep closed for more than approximately 0.1 s] -** Keep [Keep the eye closed. If a value is provided it indicates the duration for this.] -*** # [the duration (by default in seconds) that they keep their eye closed.]{takesValue, isNumeric, unitClass=time} -* Eye open [Open eyes and keep open for more than approximately 0.1 s] -** Keep [Keep the eye open. If a value is provided it indicates the duration for this.] -*** # {takesValue, isNumeric, unitClass=time}[the duration (by default in seconds) that they keep their eye open.] -*** With blinking [Default. Allow blinking during the eye-open period.] -*** Without blinking [Without blinking during the eye-open period.] -* Turn [Change in direction of movement or orientation. This includes both turn during movement on a path and also rotations such as head turns] -* Point -* Push -* Grab -* Tap [When there is nothing to be pressed for example like tapping a finger on a chair surface to follow a rhythm] -* Lift -* Reach [Requires a goal such as reaching to touch a button or to grab something. Stretching your body does not count as reach.] -** To Grab -** To Touch -* Course correction [Change the direction of a reach in the middle to adjust for a moving target.] -* Interact -** With human -* Take survey -* Stretch [Stretch your body such as when you wake up] -* Bend -* Deep breath -* Laugh -* Sigh -* Groan -* Scratch -* Switch attention -** Intramodal [In the same modality but with a change in details such as changing from paying attention to red dots and instead of blue dots] -*** Visual -*** Auditory -*** Tactile -*** Taste -*** Smell -** Intermodal [Between modalities such as changing from audio to visual] -*** From modality -**** Visual -**** Auditory -**** Tactile -**** Taste -**** Smell -*** To modality -**** Visual -**** Auditory -**** Tactile -**** Taste -**** Smell -* Walk -** Stride [Use onset and offset attributes to indicate different walking stride stages] -** Faster [increasing the speed of walking] -** Slower [decreasing the speed of walking] -* Control vehicle [Controlling an object that you are aboard] -** Drive [Driving a vehicle such as a car] -*** Correct [Correct for a perturbation] -*** Near miss -*** Collide -** Stop [Brake a car] -** Pilot [Pilot a vehicle such as an airplane] -* Teleoperate [Control an object that you are not aboard] -* Allow [Allow access to something such as allowing a car to pass] -* Deny [Deny access to something such as preventing someone to pass] -* Step around -* Step over -* Step on -* Swallow -* Flex -* Evade -* Shrug -* Dance -* Open mouth -* Whistle -* Read -* Attend -* Recall -* Generate -* Repeat -* Hold breath -* Breathe -* Rest -* Count -* Move -** Upper torso -** Lower torso -** Whole body -* Speak -* Sing -* Detect -* Name -* Smile -* Discriminate -* Track -* Encode -* Eye-blink inhibit - -'''Participant''' {predicateType=passThrough} -* ID {requireChild, predicateType=propertyOf} [If not given assume 1] -** # {takesValue, isNumeric} [Numeric value of an ID] -* Effect {extensionAllowed} [How the stimulus effects the participants] -** Cognitive -*** Meaningful -*** Not meaningful -*** Newly learned meaning -*** Reward -**** Low -**** Medium -**** High -**** # {takesValue, isNumeric, unitClass=currency} [Monetary values in some currency such as $10, or the ratio of the reward to the maximum possible (3 of max 10 becomes 0.3), or number Points] -*** Penalty -**** Low -**** Medium -**** High -**** # {takesValue, isNumeric, unitClass=currency} [Absolute monetary values in some currency, for example $1, or the ratio of the reward to the maximum possible (3 of max 10 becomes 0.3), or number of Points] -*** Error -**** Self originated -**** Other originated -***** Human -***** Non-human -**** Expected -**** Unexpected -**** Planned [The error feedback was given regardless of the validity of subject response as in a yoked design] -*** Threat -**** To self -**** To others -***** Close -*** Warning [As in a warning message that you are getting too close to the shoulder in a driving task] -*** Oddball [Unexpected or infrequent] -**** One stimulus [Only oddballs are present but no frequent stimuli exist. See http://dx.doi.org/10.1016/0167-8760(96)00030-X] -**** Two stimuli [There are non-targets and targets. See http://dx.doi.org/10.1016/0167-8760(96)00030-X] -**** Three stimuli [There are regular non-targets and targets and infrequent non-targets, see http://dx.doi.org/10.1016/0167-8760(96)00030-X] -**** Silent counting -**** Button pressing for target -**** Button pressing for all -*** Target [Something the subject is looking for] -*** Non-target [Make sure to tag Expected if the Non-target is frequent] -*** Novel [Genuinely novel such as an event occurring once or so per experiment] -*** Expected [Of low information value, for example frequent Non-targets in an RSVP paradigm] -**** Standard -**** Distractor -*** Valid [Something that is understood to be valid such as an ID matches the person being displayed and it has all the correct information] -*** Invalid [Something that is understood to not be valid such as like an ID with an impossible date-of-birth, or a photo not matching the person presenting it] -*** Congruence -**** Congruent [Like in Stroop paradigm when blue colored text displays the word blue] -**** Incongruent [Like in Stroop paradigm whena blue colored text reading displays the word red] -**** Temporal synchrony -***** Synchronous [When a mouse click sound happens right after clicking it] -***** Asynchronous [When a mouse click sound happens with significant delay which give could the person a strange feeling. Or if in a movie the sound of the explosion is heard before it appears visually.] -*** Feedback -**** Correct [Confirm something went well and last action was correct] -**** Incorrect [Confirm something went wrong and last action was incorrect] -**** Non-informative [Feedback that provides no information in regards to correct, incorrect, etc.] -**** Expected [Feedback was expected as in a positive feedback after a response that was expected to be correct.] -**** Unexpected [Feedback was unexpected as when positive feedback was received when response was expected to be incorrect.] -**** On accuracy [Feedback was provided by evaluating response accuracy] -**** On reaction time [Feedback was provided by evaluating subject reaction time] -**** To self [Default] -**** To other [Observed feedback to another person such as in a social paradigm] -**** Deterministic [Feedback has a fixed relationship to what happened before] -**** Stochastic [Feedback is non-deterministic and does not have fixed relationship with what has happened before in the experiment] -**** False feedback [Feedback that was not honest for example as in feedback of correct on an incorrect response or vice versa] -***** Negative [Negative feedback was provided when it was not deserved] -***** Positive [Positive feedback was provided when it was not deserved] -*** Cue [An indicator of a future event, e.g. a sound cue that in 2-5 seconds a perturbation in driving will occur. Use (... Participant/Effect/Cognitive/Cue ~ hed tags for the event to follow, or main aspect of the event to follow) syntax.] -**** Constant delay [The cue is for an event that will happen after a constant delay.] -***** # {takesValue, isNumeric, unitClass=time} [The delay, e.g. in seconds.] -**** Variable delay [The cue is for an event that will happen after a variable delay.] -***** # {takesValue} [The interval, e.g. between 2-5 seconds, of the variable delay.] -** Visual -*** Foveal -*** Peripheral -*** Perturbation [Sudden movement or perturbation of the virtual environment in a car driving or other scenario] -** Auditory -*** Stereo -*** Mono -**** Left -**** Right -** TMS -*** With SPGS [SPGS stands for spatial position guiding system] -*** Without SPGS [SPGS stands for spatial position guiding system] -** Tactile -*** Vibration -*** Acupuncture -*** Eye puff -*** Swab [Mouth swab] -** Vestibular -*** Shaking [being shaken or jerked around] -** Pain -*** Heat -*** Cold -*** Pressure -*** Electric shock -*** Laser-evoked -** Taste -** Smell -** Body part -*** Whole Body -*** Eye -*** Arm -**** Hand -***** Finger -****** Index -****** Thumb -****** Ring -****** Middle -****** Small [Pinkie or little finger] -*** Leg -**** Feet -***** Toes -*** Head -**** Face -***** Eyebrow -***** Lip -***** Forehead -***** Mouth -***** Nose -***** Chin -***** Cheek -*** Torso -* State {extensionAllowed,requireChild} -** Level of consciousness {requireChild} -*** Awake -*** Drowsy -*** Sleep -**** Stage {requireChild} -***** # {takesValue} [a number between 1 to 4, or REM] -*** Drunk -*** Anesthesia -*** Locked-in -*** Coma -*** Vegetative -*** Brain-dead -** Emotion {requireChild} -*** Awe -*** Frustration -*** Joy -*** Anger -*** Happiness -*** Sadness -*** Love -*** Fear -*** Compassion -*** Jealousy -*** Contentment -*** Grief -*** Relief -*** Excitement -*** Disgust -*** Neutral [None of the above] -** Sense of community [Primed to have an emotion such as patriotism] -*** # {takesValue, isNumeric} [SCI stands for Sense of Community Index] -** Sense of social justice -*** Distributive -*** Poverty -*** Inequality -*** Procedural -*** Interpersonal -*** Informational -** Stress level {requireChild} -*** # {takesValue, isNumeric} [A number between 0 and 1] -** Task load {requireChild} -*** # {takesValue, isNumeric} [A number between 0 and 1] -** Under time pressure -*** Response window -**** # {takesValue, isNumeric, unitClass=time} [Default time is seconds] -*** Competitive [Subject is competing against an opponent as for example when the faster respondent wins] -** Social interaction [Social] -*** Pseudo [Instructed so but actually not as when the other person may not exist in real world such as the case of a computer program agent] -** Passive [There is a stimulus presentation but no behavioral measurements are collected from the subject. Subject is instructed not to make any behavioral outputs for example when told to carefully watch/listen/sense. The resting state is not considered passive.] -** Resting [State when there is no stimulus presentation and no behavioral outputs] -** Attention -*** Top-down [Instructed to pay attention to something explicitly] -*** Bottom-up [something captures your attention, like a big bang or your name] -**** Orienting [The lower state of the bottom-up or the pre-bottom up state] -*** Covert [Implicit] -*** Overt [Explicit] -*** Selective [If you have two circles but asked to pay attention to only one of them] -**** Divided [Attending to more than one object or location] -*** Focused [Paying a lot of attention] -*** Sustained [Paying attention for a continuous time] -*** Auditory -*** Visual -*** Tactile -*** Taste -*** Smell -*** To a location [Spatial -- use the location attribute to specify to where the attention is directed] -*** Arousal {requireChild} -*** Alerting [Keeping the arousal up in order to respond quickly] -*** Drowsy -*** Excited -*** Neutral - - -'''Experiment context''' {requireChild, extensionAllowed} [Describes the context of the whole experiment or large portions of it and also includes tags that are common across all events] -* # {takesValue} [Add common tags across all stimuli/ and/or responses here if all experimental events share /State/Drowsy, you can place it here instead of tagging each event individually ] -* With chin rest -* Sitting -* Standing -* Prone [As in on a bed] -* Running -** Treadmill -* Walking -** Treadmill -* Indoors [Default] -** Clinic [Recording in a clinical setting such as in a hospital or medical office] -** Dim Room -* Outdoors -** Terrain -*** Grass -*** Uneven -*** Boardwalk -*** Dirt -*** Leaves -*** Mud -*** Woodchip -*** Rocky -*** Gravel -*** Downhill -*** Uphill -* Motion platform [Subject is on a motion platform such as one that produces simulated car movements] -* Fixed screen -** Distance [Assuming static subject] -*** # {takesValue, isNumeric, unitClass=physicalLength} [Distance from subject eyes to the presentation screen for 30 cm from subject eyes to the monitor] -** Width resolution -*** # {takesValue, isNumeric, unitClass=pixels} [Default units are pixels] -** Height resolution -*** # {takesValue, isNumeric, unitClass=pixels} [Default units are pixels ] -* Real world -* Virtual world - -'''Custom''' {requireChild, extensionAllowed} [This node can be used to organize events in an alternative (parallel) hierarchy. You can define your custom tags and hierarchies without any restriction under this node. These tags will still be matched to each other as for example /Custom/Dance/Waltz is considered a subtype of /Custom/DanceExample.] - -'''HED''' {requireChild} [Hierarchical Event Descriptor] -* # {takesValue, isNumeric} [HED specification version number: normally there is no need to specify the version number in the HED string since it will be matched by default to the most recent compliant version, but this tag can be used to specify the exact HED version the HED string was based on.] - -'''Paradigm''' {requireChild, extensionAllowed}[See Tasks in http://www.cognitiveatlas.org/tasks and CogPo definitions of paradigms] -* Action imitation task -* Action observation task -* Acupuncture task -* Adult attachment interview -* Alternating runs paradigm -* Animal naming task -* Antisaccade-prosaccade task -* Attention networks test -* Attentional blink task -* Audio-visual target-detection task -* Autism diagnostic observation schedule -* Ax-cpt task -* Backward digit span task -* Backward masking -* Balloon analogue risk task - BART -* Behavioral investment allocation strategy - BIAS -* Behavioral rating inventory of executive function -* Benton facial recognition test -* Birmingham object recognition battery -* Block design test -* Block tapping test -* Boston naming test -* Braille reading task -* Breath-holding -* Breathhold paradigm -* Brixton spatial anticipation test -* California verbal learning test -* California verbal learning test-ii -* Cambridge face memory test -* Cambridge gambling task -* Cambridge neuropsychological test automated battery -* Catbat task -* Category fluency test -* Cattell culture fair intelligence test -* Chewing-swallowing -* Chimeric animal stroop task -* Choice reaction time task -* Choice task between risky and non-risky options -* Classical conditioning -* Clinical evaluation of language fundamentals-3 -* Color trails test -* Color-discrimination task -* Color-word stroop task -* Complex span test -* Conditional stop signal task -* Conditioning paradigm -** Behavioral conditioning paradigm -** Classical conditioning paradigm -* Continuous performance task -* Continuous recognition paradigm -* Counting stroop task -* Counting-calculation -* Cued explicit recognition -* Cups task -* Deception task -* Deductive reasoning paradigm -* Deductive reasoning task -* Delayed discounting task -* Delayed match to sample task -* Delayed nonmatch to sample task -* Delayed recall test -* Delayed response task -** Delayed matching to sample paradigm -*** Sternberg paradigm -* Devils task -* Dichotic listening task -* Digit cancellation task -* Digit span task -* Digit-symbol coding test -* Directed forgetting task -* Divided auditory attention -* Divided auditory attention paradigm -* Doors and people test -* Dot pattern expectancy task -* Drawing -* Drawing paradigm -* Dual-task paradigm -* Early social communications scales -* Eating paradigm -* Eating-drinking -* Embedded figures test -* Emotional regulation task -* Encoding paradigm -* Encoding task -* Episodic recall -* Episodic recall paradigm -* Eriksen flanker task -* Extradimensional shift task -* Eye Saccade paradigm -** Anti saccade paradigm -** Simple saccade paradigm -* Face monitor-discrimination -* Face n-back task -* Fagerstrom test for nicotine dependence -* Film viewing -* Finger tapping task -* Fixation task -* Flashing checkerboard -* Flexion-extension -* Forward digit span task -* Free word list recall -* Glasgow coma scale -* Go-no-go task -* Grasping task -* Gray oral reading test - 4 -* Haptic illusion task -* Hayling sentence completion test -* Heat sensitization-adaptation -* Heat stimulation -* Hooper visual organization test -* ID screening [Visual examination of multiple fields of an ID or document to detect invalid or suspicious fields. For example at a security checkpoint.] -* Imagined emotion -* Imagined movement -* Imagined objects-scenes -* Instructed movement -* Immediate recall test -* Inductive reasoning aptitude -* International affective picture system -* Intradimensional shift task -* Ishihara plates for color blindness -* Isometric force -* Item recognition paradigm -** Serial item recognition paradigm -* Item recognition task -* Kanizsa figures -* Keep-track task -* Letter comparison -* Letter fluency test -* Letter naming task -* Letter number sequencing -* Lexical decision task -* Listening span task -* Macauthur communicative development inventory -* Machine failure detection task -* Matching familiar figures test -* Matching pennies game -* Maudsley obsessive compulsive inventory -* Mechanical stimulation -* Memory span test -* Mental rotation task -* Micturition task -* Mini mental state examination -* Mirror tracing test -* Mismatch negativity paradigm -* Mixed gambles task -* Modified erikson scale of communication attitudes -* Morris water maze -* Motor sequencing task -* Music comprehension-production -* N-back task -** Letter n-back task -* Naming -** Covert -** Overt -* Nine-hole peg test -* Non-choice task to study expected value and uncertainty -* Non-painful electrical stimulation -* Non-painful thermal stimulation -* Nonword repetition task -* Object alternation task -* Object-discrimination task -* Oculomotor delayed response -* Oddball discrimination paradigm -** Auditory oddball paradigm -** Visual oddball paradigm -*** Rapid serial visual presentation -* Oddball task -* Olfactory monitor-discrimination -* Operation span task -* Orthographic discrimination -* Paced auditory serial addition test -* Pain monitor-discrimination task -* Paired associate learning -* Paired associate recall -* Pantomime task -* Parrott scale -* Passive listening -* Passive viewing -* Pattern comparison -* Perturbed driving -* Phonological discrimination -* Picture naming task -* Picture set test -* Picture-word stroop task -* Pitch monitor-discrimination -* Pointing -* Porteus maze test -* Positive and negative affect scale -* Posner cueing task -* Probabilistic classification task -* Probabilistic gambling task -* Probabilistic reversal learning -* Pseudoword naming task -* Psychomotor vigilance task -* Pursuit rotor task -* Pyramids and palm trees task -* Rapid automatized naming test -* Rapid serial object transformation -* Reading - Covert -* Reading - Overt -* Reading paradigm -** Covert braille reading paradigm -** Covert visual reading paradigm -* Reading span task -* Recitation-repetition - Covert -* Recitation-repetition - Overt -* Remember-know task -* Response mapping task -* Rest -** Rest eyes open -** Rest eyes closed -* Retrieval-induced forgetting task -* Reversal learning task -* Reward task -* Rey auditory verbal learning task -* Rey-ostereith complex figure test -* Reynell developmental language scales -* Rhyme verification task -* Risky gains task -* Rivermead behavioural memory test -* [extend here] - -!# end schema - - -'''Unit classes''' -* time {defaultUnits=s} -** second {SIUnit} -** s {SIUnit, unitSymbol} -** day -** minute -** hour [Should be in 24-hour format.] -* dateTime {defaultUnits=YYYY-MM-DDThh:mm:ss} -** YYYY-MM-DDThh:mm:ss [Date-times should conform to ISO8601 date-time format.] -* clockTime {defaultUnits=hour:min} -** hour:min [Hours should be in 24 hour format. Two-digit values should be used for each item.] -** hour:min:sec [Hours should be in 24 hour format. Two-digit values should be used for each item.] -* frequency {defaultUnits=Hz} -** hertz {SIUnit} -** Hz {SIUnit, unitSymbol} -* angle {defaultUnits=radian} -** radian {SIUnit} -** rad {SIUnit, unitSymbol} -** degree -* physicalLength {defaultUnits=m} -** metre {SIUnit} -** m {SIUnit, unitSymbol} -** foot -** mile -* pixels {defaultUnits=px} -** pixel -** px {unitSymbol} -* area {defaultUnits=m^2} -** m^2 {SIUnit, unitSymbol} -** px^2 {unitSymbol} -** pixel^2 -* volume {defaultUnits=m^3} -** m^3 {SIUnit, unitSymbol} -* speed {defaultUnits=m-per-s} -** m-per-s {SIUnit, unitSymbol} -** mph {unitSymbol} -** kph {unitSymbol} -* acceleration {defaultUnits=m-per-s^2} -** m-per-s^2 {SIUnit, unitSymbol} -* jerk {defaultUnits=m-per-s^3} -** m-per-s^3 {unitSymbol} -* intensity {defaultUnits=dB} -** dB {unitSymbol} -* luminousIntensity {defaultUnits=cd} -** candela {SIUnit} -** cd {SIUnit, unitSymbol} -* memorySize {defaultUnits=B} -** byte {SIUnit} -** B {SIUnit, unitSymbol} -* currency {defaultUnits=$} -** dollar -** $ {unitSymbol} -** point -** fraction - - -'''Unit modifiers''' -* deca {SIUnitModifier} [SI unit multiple representing 10^1] -* da {SIUnitSymbolModifier} [SI unit multiple representing 10^1] -* hecto {SIUnitModifier} [SI unit multiple representing 10^2] -* h {SIUnitSymbolModifier} [SI unit multiple representing 10^2] -* kilo {SIUnitModifier} [SI unit multiple representing 10^3] -* k {SIUnitSymbolModifier} [SI unit multiple representing 10^3] -* mega {SIUnitModifier} [SI unit multiple representing 10^6] -* M {SIUnitSymbolModifier} [SI unit multiple representing 10^6] -* giga {SIUnitModifier} [SI unit multiple representing 10^9] -* G {SIUnitSymbolModifier} [SI unit multiple representing 10^9] -* tera {SIUnitModifier} [SI unit multiple representing 10^12] -* T {SIUnitSymbolModifier} [SI unit multiple representing 10^12] -* peta {SIUnitModifier} [SI unit multiple representing 10^15] -* P {SIUnitSymbolModifier} [SI unit multiple representing 10^15] -* exa {SIUnitModifier} [SI unit multiple representing 10^18] -* E {SIUnitSymbolModifier} [SI unit multiple representing 10^18] -* zetta {SIUnitModifier} [SI unit multiple representing 10^21] -* Z {SIUnitSymbolModifier} [SI unit multiple representing 10^21] -* yotta {SIUnitModifier} [SI unit multiple representing 10^24] -* Y {SIUnitSymbolModifier} [SI unit multiple representing 10^24] -* deci {SIUnitModifier} [SI unit submultiple representing 10^-1] -* d {SIUnitSymbolModifier} [SI unit submultiple representing 10^-1] -* centi {SIUnitModifier} [SI unit submultiple representing 10^-2] -* c {SIUnitSymbolModifier} [SI unit submultiple representing 10^-2] -* milli {SIUnitModifier} [SI unit submultiple representing 10^-3] -* m {SIUnitSymbolModifier} [SI unit submultiple representing 10^-3] -* micro {SIUnitModifier} [SI unit submultiple representing 10^-6] -* u {SIUnitSymbolModifier} [SI unit submultiple representing 10^-6] -* nano {SIUnitModifier} [SI unit submultiple representing 10^-9] -* n {SIUnitSymbolModifier} [SI unit submultiple representing 10^-9] -* pico {SIUnitModifier} [SI unit submultiple representing 10^-12] -* p {SIUnitSymbolModifier} [SI unit submultiple representing 10^-12] -* femto {SIUnitModifier} [SI unit submultiple representing 10^-15] -* f {SIUnitSymbolModifier} [SI unit submultiple representing 10^-15] -* atto {SIUnitModifier} [SI unit submultiple representing 10^-18] -* a {SIUnitSymbolModifier} [SI unit submultiple representing 10^-18] -* zepto {SIUnitModifier} [SI unit submultiple representing 10^-21] -* z {SIUnitSymbolModifier} [SI unit submultiple representing 10^-21] -* yocto {SIUnitModifier} [SI unit submultiple representing 10^-24] -* y {SIUnitSymbolModifier} [SI unit submultiple representing 10^-24] - -'''Value classes''' [Specification of the rules for the values provided by users.] - -'''Schema attributes''' -* default [Tag assumed to be present if not explicitly given.] -* defaultUnits [Default units for a tag.] -* extensionAllowed [Users can add unlimited levels of child nodes under this tag.] -* isNumeric [The tag "#" must be replaced by a numerical value.] -* position [Used to specify the order of the required and recommended tags in canonical order for display. The position attribute value should be an integer and the order can start at 0 or 1. Required or recommended tags without this attribute or with negative position will be shown after the others in canonical ordering.] -* predicateType [One of propertyOf, subclassOf, passThrough -- used to facilitate mapping to OWL or RDF.] -* recommended [A HED string tagging an event is recommended to include this tag.] -* requireChild [One of its descendants must be chosen to tag an event.] -* required [Every HED string tagging an event should include this tag.] -* SIUnit [Designates the name of an SI unit so it can be modified by multiple and submultiple names. Note that some units such as byte are designated as SI units although they are not part of the standard.] -* SIUnitModifier [SI unit modifier indicating a multiple or submultiple of a base unit.] -* SIUnitSymbolModifier [SI unit symbol modifier indicating a multiple or submultiple of a base unit symbol.] -* takesValue [This tag will have a "#" placeholder child in the schema which is expected to be replaced with a user-defined value.] -* unique [Only one of this tag or its descendants can be used within a single tag group or event.] -* unitSymbol [Abbreviation or symbol representing a type of unit. Unit symbols represent both the singular and the plural and thus cannot be pluralized.] - -'''Properties''' [Properties of the schema attributes themselves. These are used for schema handling and verification.] - -'''Epilogue''' -Note: This is the new version of the .mediawiki designed to support prologues and epilogues. - +HED version="7.2.0" + +'''Prologue''' +Changelog +* 3/16/2021: v.7.2.0 Adopted the new format for mediawiki files. +* 11/22/2020: v. 7.1.2 Add extensionAllowed to top-level Item subtree. +* 7/27/2020: v. 7.1.1 Corrected extensionAllowed on several top-level and second-level items. Removed extra h:m from clockTime. Removed unitSymbol from clockTime. Added dateTime unit class. +* 5/9/2020: Added the clockTime unit class +* 4/25/2020: v. 7.1.0 Added unit modifiers and updated unit classes to support SI units. +* 9/29/2019: v. 7.0.5: Added Visual/Rendering type/Screen/Head-mounted display. Added extensionAllowed to Sensory presentation. Added Tone and Genre under Sensory presentation/Auditory/Music. +* 8/18/2019: v. 7.0.4: Added extensionsAllowed to Custom and removed extensionsAllowed from nodes under Attribute and Item/Object. Also replaced per-sec with per-s in units. +* 7/8/2019: v. 7.0.3: Removed the extra Action/Turn node. +* 5/18/2019: v. 7.0.2: Added centisecond and millisecond as valid time units. +* 3/7/2018: v. 7.0.1: Added Paradigm/Psychomotor vigilance task. +* 2/15/2018: v. 7.0.0: Removed parentheses from some paradigm tags (used hyphens instead) +* 1/11/2018: v. 6.0.5: Changed unit class for a number of values from velocity to speed. +* 8/4/2017: v. 6.0.4: Added Machine failure detection task to paradigms list. +* 7/20/2017: v. 6.0.3: Removed Action observation paradigm since there is already Action observation task. +* 7/17/2017: v. 6.0.2: Added Attribute/Object control/Accelerate and Attribute/Object control/Decelerate. Also added a description for extensionAllowed. +* 7/14/2017: v. 6.0.1: Replaced Item/Natural scene/Arial with Item/Natural scene/Aerial. +* 7/13/2017: v. 6.0.0: Replaced XXX in Event/Category/Experimental stimulus/Instruction/XXX with Event/Category/Experimental stimulus plus (Attribute/Instruction, Action/XXX). Moved a number of instructions under Action/. Also added Rest eyes open', Rest eyes closed and Imagined emotion paradigms. Removed Action/Imagine and instead one should use Attribute/Imagined. +* 6/22/2017: v. 5.2.3: Added clarification for Attribute/Background (stimuli to be ignored) +* 3/22/2017: v. 5.2.2: Fixed the missing [ in Attribute/Imagined. +* 3/16/2017: v. 5.2.1: Added Action/Interact, Action/Interact/With human, Action/Take survey, Action/Eye blink/Left base, Left zero, Left half height, Right half height, Right zero, right base. +* 3/7/2017, v 5.1.1: Added Attribute/Blink/Duration and fixed some issues. +* 2/16/2017, v 5.0.0: Changed Attribute/Presentation fraction to Attribute/Presentation/Fraction and added a few other attributes under Attribute/Presentation. Removed Participant/Role and and added Attribute/Role. +* 2/9/2017, v 4.0.5: added Paradigm/ID screening tag and moved language n-back under n-back paradigm. Also moved Flickering/rate to Attribute/Temporal rate. +* 2/2/2017, v 4.0.4: moved Height and Width from Experiment/Context/Fixed screen/ to under Attribute/ +* 1/31/2017, v 4.0.3: added Attribute/Condition. +* 1/5/2017, v. 4.0.2: fixed description in Sentence and Paragraph +* 12/1/2016, v. 4.0.1: added Blink action and attributes. +* 11/10/2016, v. 4.0.0: changed "Event/Sequence group id" to "Event/Group ID". Added "Paradigm/Instructed movement", "Attribute/Response start delay" and "Attribute/Response end delay". +* 9/19/2016: Typo in Custom tag description fixed. +* 9/8/2016: Added Attribute/Action judgment/Indeterminate. +* 9/6/2016: Added Attribute/Imagined +* 9/6/2016 Added back Experiment control/Activity/Participant action.in +* 9/1/2016: Added Eyes open/Keep,Eyes close/Keep. Added Action/Make fist Action/Curl toes. MAJOR: moved Participant action/... from Event/Category/Experiment control/Activity to under Attribute/Activity judgment/. This is a backward incompatible change. +* 8/4/2016: Added Attribute/Participant indication tag. +* 7/21/2016: Added Attribute/Intended effect tag. This can be used e.g. to specify an image in an RSVP experiment where it was intended to be perceived as a target (but it may not have by the subject). +* 6/22/2016: Added Attribute/Temporal uncertainty tag along with its child nodes. Also required a child for Attribute/Presentation fraction tag. +* 6/16/2016: Added sleep stages. +* 5/23/2016: Added more description to Attribute/Probability, allowing text values like low and high in addition to numerical values between 0 and 1. +* 3/31/2016: Added constant and variable delays under Participant/Effect/Cognitive/Cue. +* 3/10/2016: +** Added Non-informative under Cognitive/Feedback +** Added Cue under Cognitive +* 2/25/2016: +** Removed /Participant/Effect/Cognitive/Oddball/Three stimuli/Target +** Moved Non-target from under Expected to the same level as Target, this is because in Three stimuli oddball paradigm the Non-targets are oddballs and hence not expected. +** Note: user are encouraged to add Expected and Oddball tags when tagging targets and non-targets +** Added Presentation fraction + +'''Syntax''' + +HED tags can only be separated by commas. Use semicolons (;) instead of commas in event descriptions since otherwise extra commas could confuse HED parsers. +From version 2.2, HED adheres to http://semver.org/ versioning. + +!# start schema + +'''Event''' +* Category {required, requireChild, predicateType=passThrough, position=1} [This is meant to designate the reason this event was recorded] +** Initial context [The purpose is to set the starting context for the experiment --- and if there is no initial context event---this information would be stored as a dataset tag] +** Participant response [The purpose of this event was to record the state or response of a participant. Note: participant actions may occur in other kinds of events, such as the experimenter records a terrain change as an event and the participant happens to be walking. In this case the event category would be Environmental. In contrast, if the participant started walking in response to an instruction or to some other stimulus, the event would be recorded as Participant response] +** Technical error [Experimenters forgot to turn on something or the cord snagged and something may be wrong with the data] +*** # {takesValue} [Description as string] +** Participant failure [Situation in which participant acts outside of the constraints of the experiment -- such as driving outside the boundary of a simulation experiment or using equipment incorrectly] +*** # {takesValue} [Description as string] +** Environmental [Change in experimental context such as walking on dirt versus sidewalk] +*** # {takesValue} [Description as a string] +** Experimental stimulus +*** Instruction +** Experimental procedure [For example doing a saliva swab on the person] +*** # {takesValue}[Description as string] +** Incidental [Not a part of the task as perceived by/instructed to the participant --- for example an airplane flew by and made noise or a random person showed up on the street] +*** # {takesValue}[Description as string] +** Miscellaneous [Events that are only have informational value and cannot be put in other event categories] +*** # {takesValue}[Description as a string] +** Experiment control [Information about states and events of the software program that controls the experiment] +*** Sequence{predicateType=propertyOf} +**** Permutation ID {requireChild} +***** # {takesValue} [Permutation number/code used for permuted experiment parts] +**** Experiment [Use Attribute/Onset and Attribute/Offset to indicate start and end of the experiment] +**** Block [Each block has the same general context and contains several trials -- use Attribute/Onset and Attribute/Offset to specify start and end] +***** # {takesValue} [Block number or identifier] +**** Trial [Use Attribute/Onset and Attribute/Offset to specify start and end] +***** # {takesValue} [Trial number or identifier] +**** Pause [Use Attribute/Onset and Attribute/Offset to specify start and end] +*** Task +**** # {takesValue} [Label here] +*** Activity [Experiment-specific actions such as moving a piece in a chess game] +**** Participant action +*** Synchronization [An event used for synchronizing data streams] +**** Display refresh +**** Trigger +**** Tag {predicateType=propertyOf} +***** # {takesValue} [Actual tag: string or integer] +*** Status +**** Waiting for input +**** Loading +**** Error +*** Setup +**** Parameters {predicateType=propertyOf} +***** # {takesValue} [Experiment parameters in some a string. Do not used quotes.] +* ID {predicateType=propertyOf} [A number or string label that uniquely identifies an event instance from all others in the recording (a UUID is strongly preferred).] +** # {takesValue} [ID of the event] +* Group ID {predicateType=propertyOf} [A number or string label that uniquely identifies a group of events associated with each other.] +** # {takesValue} [ID of the group] +* Duration {requireChild, predicateType=propertyOf} [An offset that is implicit after duration time passed from the onset] +** # {takesValue, isNumeric, unitClass=time} +* Description {requireChild, required, unique, predicateType=propertyOf, position=3}[Same as HED 1.0 description for human-readable text] +** # {takesValue} +* Label {requireChild, required, unique, predicateType=propertyOf, position=0} [A label for the event that is less than 20 characters. For example /Label/Accept button. Please note that the information under this tag is primarily not for use in the analysis and is provided for the convenience in referring to events in the context of a single study. Please use Custom tag to define custom event hierarchies. Please do not mention the words Onset or Offset in the label. These should only be placed in Attribute/Onset and Attribute/Offset. Software automatically generates a final label with (onset) or (offset) in parentheses added to the original label. This makes it easier to automatically find onsets and offsets for the same event.] +** # {takesValue} +* Long name {requireChild, unique, predicateType=propertyOf, position=2} [A long name for the event that could be over 100 characters and could contain characters like vertical bars as separators. Long names are used for cases when one wants to encode a lot of information in a single string such as Scenario | VehiclePassing | TravelLaneBLocked | Onset]. +** # {takesValue} + +'''Item''' {extensionAllowed} +* ID {requireChild, predicateType=propertyOf} [Optional] +** # {takesValue} +** Local [For IDs with local scope --- that is IDs only defined in the scope of a single event. The local ID 5 in events 1 and 2 may refer to two different objects. The global IDs directly under ID/ tag refer to the same object through the whole experiment] +*** # {takesValue} +* Group ID {requireChild, predicateType=propertyOf} [Optional] +** # {takesValue} +* Object [Visually discernable objects. This item excludes sounds that are Items but not objects] +** Vehicle +*** Bicycle +*** Car +*** Truck +*** Cart +*** Boat +*** Tractor +*** Train +*** Aircraft +**** Airplane +**** Helicopter +** Person +*** Pedestrian +*** Cyclist +*** Mother-child +*** Experimenter +** Animal +** Plant +*** Flower +*** Tree +**** Branch +**** Root +** Building +** Food +*** Water +** Clothing +*** Personal [clothing that is on the body of the subject] +** Road sign +** Barrel +** Cone +** Speedometer +** Construction zone +** 3D shape +** Sphere +** Box +*** Cube +* 2D shape [Geometric shapes] +** Ellipse +*** Circle +** Rectangle +*** Square +** Star +** Triangle +** Gabor patch +** Cross [By default a vertical-horizontal cross. For a rotated cross add Attribute/Object orientation/Rotated/ tag] +** Single point +** Clock face [Used to study things like hemispheric neglect. The tag is related to the clock-drawing-test] +*** # {takesValue, unitClass=clockTime} +* Pattern +** Checkerboard +** Abstract +** Fractal +** LED +** Dots +*** Random dot +** Complex +* Face +** Whole face with hair +** Whole face without hair +** Cut-out +** Parts only +*** Nose +*** Lips +*** Chin +*** Eyes +**** Left only +**** Right only +* Symbolic [Something that has a meaning, could be linguistic or not such as a stop signs.] +** Braille character +** Sign [Like the icon on a stop sign. This should not to be confused with the actual object itself.] +*** Traffic +**** Speed limit +***** # {takesValue, isNumeric, unitClass=speed} [Always give units e.g. mph or kph] +** Character +*** Digit +*** Pseudo-character [Alphabet-like but not really] +*** Letter [Authograph or valid letters and numbers such as A or 5] +**** # {takesValue} +** Composite [Has multiple of the above on it] +* Natural scene +** Aerial +*** Satellite +* Drawing [Cartoon or sketch] +** Line drawing +* Film clip +** Commercial TV +** Animation +* IAPS [International Affective Picture System] +* IADS [International Affective Digital Sounds] +* SAM [The Self-Assessment Manikin] + +'''Sensory presentation {extensionAllowed} [Object manifestation]''' + +* Auditory [Sound] +** Nameable +** Cash register +** Ding [Often associated with positive valence] +** Buzz [Often associated with negative valence] +** Fire alarm +** Click +*** ABR [Auditory Brainstem Response] +** Tone +** Siren +** Music +*** Chord sequence +*** Vocal +*** Instrumental +*** Tone +*** Genre +** Noise +*** White +*** Colored [Not white --- for example a 1/f spectrum] +** Human voice +** Animal voice {extensionAllowed} +*** Bird +*** Dog +*** Insect +*** Squirrel + +** Real world [For example people walking or machines operating] +*** Pedestrian +*** Footsteps +**** Walking +**** Running +*** Noisemaker +*** Construction noise +*** Machine +*** Vehicle +**** Horn +**** Aircraft +***** Airplane +***** Helicopter +**** Train +**** Cart +**** Car alarm +**** Car +**** Bicycle +** Nonverbal vocal +*** Emotional +**** Crying +**** Sighing +*** Gulp +*** Gurgle +*** Sneeze +*** Cough +*** Yawn +** Nonvocal [A car engine or gears grinding --- anything that is not made by a human or an animal] +*** Engine +* Olfactory [Odor] +* Taste +* Tactile [Pressure] +* Visual +** Rendering type {requireChild, predicateType=passThrough} +*** Screen +**** Head-mounted display +**** View port [Two or more views on the same object --- for example one from top one from street view] +***** ID {predicateType=passThrough} +****** # {takesValue} [A descriptive label for the viewport] +**** 2D +**** 3D +**** Movie +***** Video-tape +***** Motion-capture [Stick figure of motion capture of someone else] +****** Point light +****** Stick figure +****** Outline +***** Flickering +***** Steady state +*** Real-world +*** LED [Stimulus is turning on/off one or a few LEDs] + +'''Attribute''' {requireChild, extensionAllowed} +* Onset [Default] +* Offset +* Imagined [This is used to identity that the (sub)event only happened in the imagination of the participant, e.g. imagined movements in motor imagery paradigms.] +* State ID {requireChild} [This is used to identify a group of events that are changing the state of a variable where the onset means the offset of any other and a change in the state] +** # {takesValue} [ID which could be a number or any string] +* Repetition {requireChild} [When the same type of event such as a fixation on the exact same object happens multiple times and it might be necessary to distinguish the first look vs. others] +** # {takesValue, isNumeric} [Number starting from 1 where 1 indicates the first occurrence and 2 indicates the second occurrence] +* Temporal rate {predicateType=propertyOf} +** # {takesValue, isNumeric, unitClass=frequency} [In Hz] +* Condition {requireChild} [Specifies the value of an independent variable (number of letters, N, in an N-back task) or function of independent variables that is varied or controlled for in the experiment. This attribute is often specified at the task level and can be associated with specification of an experimental stimulus or an experiment context (e.g. 1-back, 2-back conditions in an N-back task, or changing the target type from faces to houses in a Rapid Serial Visual Presentation, or RSVP, task.)] +** # {takesValue} [the condition] +* Action judgment [External judgment (assumed to be ground truth, e.g. from an experiment control software or an annotator) about participant actions such as answering a question, failing to answer in time, etc.] +** Correct +** Incorrect [Wrong choice but not time out] +** Indeterminate [It cannot be determined that the action was correct or incorrect.] +** Time out +*** Missed [Participant failed or could not have perceived the instruction due to their eyes being off-screen or a similar reason. Not easy to deduce this but it is possible] +** Inappropriate [A choice that is not allowed such as moving a chess piece to a location it should not go based on game rules] +* Response start delay [The time interval between this (stimulus) event and the start of the response event specified, usually by grouping with the event ID of the response start event.] +** # {takesValue, unitClass=time} +* Response end delay [The time interval between this (stimulus) event and the end of the response event specified, usually by grouping with the event ID of the response end event.] +** # {takesValue, unitClass=time} +* Social [Involving interactions among multiple agents such as humans or dogs or robots] +* Peak [Peak velocity or acceleration or jerk] +* Object side {requireChild} [Could be the left, right, or both sides of a person or a vehicle] +** Reference object ID {requireChild,predicateType=propertyOf}[Place object ID after this] +*** # {takesValue} +** Right +** Left +** Front +** Back +** Top +** Bottom +** Starboard +** Port +** Passenger side [Side of a car] +** Driver side [Side of a car] +** Bow [Front of a ship] +** Stern [Back of the ship] +* Direction {requireChild} [Coordinate system is inferred from Attribute/Location. To specify a vector combine subnodes with number --- for example Attribute/Top/10, Attribute/Direction/Left/5 to create a vector with coordinates 10 and 5] +** Top [Combine Attribute/Direction/Top and Attribute/Direction/Left to mean the upper left] +*** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} +** Bottom +*** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} +** Left +*** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} +** Right +*** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} +** Angle [Clockwise angle in degrees from vertical] +*** # {takesValue, isNumeric, unitClass=angle} [Clockwise angle in degrees from vertical] +** North +*** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} +** South +*** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} +** East +*** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} +** West +*** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} +** Forward [Like a car moving forward] +** Backward [Like a car moving backward] +* Location {requireChild} [Spot or center of an area. Use Area were you are referring to something with significant extent and emphasizing its boundaries, like a city] +** # {takesValue} [location label] +** Screen [Specify displacements from each subnode in pixels or degrees or meters. Specify units such as Attribute/Location/Screen/Top/12 px] +*** Center +**** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} +*** Top [You can combine Attribute/Location/Top and Attribute/Location/Left to designate UpperLeft and so on] +**** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} +*** Bottom +**** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} +*** Left +**** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} +*** Right +**** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} +*** Angle +**** # {takesValue, isNumeric, unitClass=angle} [Clockwise angle in degrees from vertical] +*** Center displacement +**** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength} [displacement from screen center, in any direction, in degrees, cm, or other lengths] +**** Horizontal +***** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength} [Displacement from screen center in any direction] +**** Vertical +***** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength}[Displacement from screen center in any direction] +** Lane [For example a car lane] +*** Rightmost +*** Leftmost +*** Right of expected +*** Left of expected +*** Cruising +*** Passing [The lane that cars use to take over other cars] +*** Oncoming +** Real-world coordinates {requireChild} +*** Room +**** xyz {requireChild} [have a subnode, e.g. Attribute/Location/Real-world coordinates/Room/xyz/10-50-30] +***** # {takesValue} +** Reference frame {requireChild} +*** Specified absolute reference +*** Relative to participant +**** Participant ID {requireChild} +***** # {takesValue} +**** Left +**** Front +**** Right +**** Back +**** Distance {requireChild} +***** # {takesValue, isNumeric, unitClass=physicalLength} [Distance is in meters by default] +***** Near +***** Moderate +***** Far +**** Azimuth {requireChild} +***** # {takesValue, isNumeric, unitClass=angle} [Clockwise with units preferably in degrees] +**** Elevation {requireChild} +***** # {takesValue, isNumeric, unitClass=angle} [Preferably in degrees] +* Object orientation {requireChild} +** Rotated +*** Degrees {requireChild} +**** #{takesValue, isNumeric, unitClass=angle}[Preferably in degrees] +* Size {requireChild} +** Length{requireChild} +*** # {takesValue, isNumeric, unitClass=physicalLength} [In meters or other units of length ] +** Width +*** # {takesValue, isNumeric, unitClass=physicalLength} [in meters] +** Height +*** # {takesValue, isNumeric, unitClass=physicalLength} [Default units are meters] +** Area {requireChild} +*** # {takesValue, isNumeric, unitClass=area} +** Volume {requireChild} +*** # {takesValue, isNumeric, unitClass=volume} [In cubic-meters or other units of volume] +** Angle{requireChild} +*** # {takesValue, isNumeric, unitClass=angle} [In degrees or other units of angle] +* Item count {requireChild} [Number of items for example when there are 3 cars and they are identified as a single item] +** # {takesValue, isNumeric} [Numeric value of number of items #] +** <=# {takesValue, isNumeric} [Number of items less than or equal to #] +** >=# {takesValue, isNumeric} [Number of items more than or equal to #] +* Auditory +** Frequency {requireChild} +*** # {takesValue, isNumeric, unitClass=frequency} [In HZ] +** Loudness {requireChild} +*** # {takesValue, isNumeric, unitClass=intensity} [in dB] +** Ramp up [Increasing in amplitude] +** Ramp down [Decreasing in amplitude] +* Blink +** Time shut {requireChild} [The amount of time the eyelid remains closed (typically measured as 90% of the blink amplitude), in seconds.] +*** # {takesValue, isNumeric, unitClass=time, default=s} +** Duration {requireChild} [Duration of blink, usually the half-height blink duration in seconds taken either from base or zero of EEG signal. For eye-trackers, usually denotes interval when pupil covered by eyelid.] +***# {takesValue, isNumeric, unitClass=time, default=s} +** PAVR {requireChild} [Amplitude-Velocity ratio, in centiseconds] +*** # {takesValue, isNumeric, unitClass=time, default=centiseconds} +** NAVR {requireChild} [Negative Amplitude-Velocity ratio, in centiseconds] +*** # {takesValue, isNumeric, unitClass=time, default=centiseconds} +* Visual +** Bistable +** Background +** Foreground +** Up-down separated [Stimuli presented both at the top and the bottom of fovea] +*** # {takesValue, isNumeric, unitClass=angle} [Angle of separation in degrees by default] +** Bilateral [For bilateral visual field stimulus presentations] +*** # {takesValue, isNumeric, unitClass=angle} [Angle of separation in degrees by default] +** Motion +*** Down +**** # {takesValue, isNumeric, unitClass=speed} [e.g. 3 degrees-per-second] +*** Up +**** # {takesValue, isNumeric, unitClass=speed} [e.g. 3 degrees-per-second] +*** Horizontal +**** Right +***** # {takesValue, isNumeric, unitClass=speed} [e.g. 3 degrees-per-second] +**** Left +***** # {takesValue, isNumeric, unitClass=speed} [e.g. 3 degrees-per-second] +*** Oblique +**** Clock face +***** # {takesValue, unitClass=time} [For example 4:30] +** Fixation point +** Luminance {requireChild} +*** # {takesValue, isNumeric, unitClass=luminousIntensity}[In candelas by default] +** Color {requireChild} +*** Dark +*** Light +*** Aqua [These are CSS 3 basic color names] +*** Black +*** Fuchsia +*** Gray +*** Lime +*** Maroon +*** Navy +*** Olive +*** Purple +*** Silver +*** Teal +*** White +*** Yellow +*** Red +**** # {takesValue, isNumeric} [R value of RGB between 0 and 1] +*** Blue +**** # {takesValue, isNumeric} [B value of RGB between 0 and 1] +*** Green +**** # {takesValue, isNumeric} [G value of RGB between 0 and 1] +*** Hue {requireChild} +**** # {takesValue, isNumeric} [H value of HSV between 0 and 1] +*** Saturation {requireChild} +**** # {takesValue, isNumeric} [S value of HSV between 0 and 1] +*** Value {requireChild} +**** # {takesValue, isNumeric} [V value of HSV between 0 and 1] +*** Achromatic [Indicates gray scale] +**** # {takesValue, isNumeric} [White intensity between 0 and 1] +* Nonlinguistic [Something that conveys meaning without using words such as the iconic pictures of a man or a woman on the doors of restrooms. Another example is a deer crossing sign with just a picture of jumping deer.] +* Semantic [Like in priming or in congruence] +* Language +** Unit {predicateType=passThrough} +*** Phoneme +*** Syllable +*** Word +**** Noun +***** Proper [A proper noun that refers to a unique entity such as London or Jupiter] +***** Common [A noun that refers to a class of entities such as cities or planets or corporations such as a Dog or a Skyscraper] +**** Verb +**** Adjective +**** Pseudoword +**** # {takesValue} [Actual word] +*** Sentence +**** Full +**** Partial +**** # {takesValue} [Actual sentence] +*** Paragraph +**** # {takesValue} [Actual paragraph] +*** Story [Multiple paragraphs making a detailed account] +** Family {predicateType=passThrough} +*** Asian +**** Chinese +**** Japanese +*** Latin +**** English +**** German +**** French +* Induced [Such as inducing emotions or keeping someone awake or in a coma with an external intervention] +* Emotional +** Arousal [Only in the context of 2D emotion representation] +*** # {takesValue, isNumeric} [A value between -1 and 1] +** Positive valence [Valence by itself can be the name of an emotion such as sadness so this tag distinguishes the type of emotion] +*** # {takesValue, isNumeric} [Ranges from 0 to 1] +** Negative valence +*** # {takesValue, isNumeric}[Ranges from 0 to 1] +* Priming +** Motoric +** Emotional +** Perceptual +* Subliminal +** Unmasked +** Masked +*** Forward +*** Backward +* Supraliminal [By default this is assumed about each stimulus] +* Liminal [At the 75%-25% perception threshold] +* Probability [Use to specify the level of certainty about the occurrence of the event. Use either numerical values as the child node or low, high, etc.] +* Temporal uncertainty {requireChild} [Use to specify the amount of uncertainty in the timing of the event. Please notice that this is different from Attribute/Probability tag which relates to the occurrence of event and can be interpretative as the integral of probability density across a distribution whose shape (temporal extent) is specified by Attribute/Temporal uncertainty.] +** # {takesValue, isNumeric, unitClass=time} [implies that the temporal uncertainty is a uniform distribution with the amount of time provided, extending on both side. E.g. "0.5 s" specifies a 1-second range centered at event latency.] +** Standard deviation {requireChild} [implies that the distribution of temporal uncertainty is Gaussian with the provided standard deviation (in seconds).] +*** # {takesValue, isNumeric, unitClass=time} +* Presentation {requireChild}[Attributes associated with visual, auditory, tactile, etc. presentation of an stimulus] +** Fraction {requireChild} [the fraction of presentation of an Oddball or Expected stimuli to the total number of same-class presentations, e.g. 10% of images in an RSVP being targets] +*** # {takesValue, isNumeric} +** Cued [what is presented is cued to the presentation of something else] +** Background [presented in the background such as background music, background image, etc. The main factor here is that background presentations are to be ignored, e.g. ignore math question auditory stimuli.] +* Intended effect [This tag is to be grouped with Participant/Effect/Cognitive to specify the intended cognitive effect (of the experimenter). This is to differentiate the resulting group with Participant/Effect which specifies the actual effect on the participant. For example, in an RSVP experiment if an image is intended to be perceived as a target, (Participant/Effect/Cognitive/Target, Attribute/Intended effect) group is added. If the image was perceived by the subject as a target (e.g. they pressed a button to indicate so), then the tag Participant/Effect/Cognitive/Target is also added: Participant/Effect/Cognitive/Target, (Participant/Effect/Cognitive/Target, Attribute/Intended effect). otherwise the Participant/Effect/Cognitive/Target tag is not included outside of the group.] +* Instruction [This tag is placed in events of type Event/Category/Experimental stimulus/Instruction, grouped with one or more Action/ tags to replace the detailed specification XXX in Event/Category/Experimental stimulus/Instruction/XXX) in previous versions. Usage example: Event/Category/Experimental stimulus/Instruction, (Action/Fixate, Attribute/Instruction) ] +* Participant indication [This tag is placed in events of type Event/Category/Participant response and grouped with Participant/Effect/Cognitive/.. tags to specify the type of cognitive effect the participant has experienced. For example, in an RSVP paradigm, the subject can indicate the detection of a target with a button press. The HED string associated with this button press must include (Attribute/Participant indication, Participant/Effect/Cognitive/Target,...)] +* Path {requireChild} +** Velocity [Use Attribute/Onset or Attribute/Offset to specify onset or offset] +*** # {takesValue, isNumeric, unitClass=speed} [Numeric value with default units of m-per-s] +** Acceleration +*** # {takesValue, isNumeric, unitClass=acceleration} [Numeric value with default units of m-per-s2] +** Jerk +*** # {takesValue, isNumeric, unitClass=jerk} [Numeric value with default units of m-per-s3] +** Constrained [For example a path cannot cross some region] +* File {requireChild} [File attributes] +** Name +** Size +*** # {takesValue, isNumeric, unitClass=memorySize} [Numeric value with default units of mb] +** # {takesValue, isNumeric}[Number of files] +* Object control {requireChild} [Specifies control such as for a vehicle] +** Perturb +** Collide +** Near miss [Almost having an accident resulting in negative consequences] +** Correct position [After a lane deviation or side of the walkway] +** Halt [Time at which speed becomes exactly zero] +** Brake +** Shift lane +** Cross [Crossing in front of another object such as a vehicle] +** Pass by [Passing by another object or the participant] +** Accelerate +** Decelerate +* Association {requireChild} +** Another person [Item such as a cup belonging to another person] +** Same person [Item such as a cup belonging to the participant] +* Extraneous [Button presses that are not meaningful for example due to intrinsic mechanical causes after a meaningful press] +* Role {requireChild} [The role of the agent (participant, character, AI..)] +** Leader +** Follower +** # {takesValue} + +'''Action'''{extensionAllowed}[May or may not be associated with a prior stimulus and can be extended] +* Involuntary [Like sneezing or tripping on something or hiccuping] +** Hiccup +** Cough +** Sneeze +** Stumble [Temporary and involuntary loss of balance] +** Fall +** Tether Jerk [When a tether attached to the subject is stuck/snagged and forces the participant to involuntary accommodate/react to it] +** Clear Throat +** Yawn +** Sniffle +** Burp +** Drop [For example something drops from the hand of the subject] +* Make fist +** Open and close [Continue to open and close the fist, for example in motor imagery paradigms.] +* Curl toes +** Open and close [Continue to curl and uncurl toes, for example in motor imagery paradigms.] +* Button press {extensionAllowed} +** Touch screen +** Keyboard +** Mouse +** Joystick +* Button hold [Press a button and keep it pressed] +* Button release +* Cross boundary +** Arrive +** Depart +* Speech +* Hum +* Eye saccade [Use Attribute/Peak for the middle of saccade and Attribute/Onset for the start of a saccade] +* Eye fixation +* Eye blink +** Left base [The time of the first detectable eyelid movement on closing.] +** Left zero [The last time at which the EEG/EOG signal crosses zero during eyelid closing.] +** Left half height [The time at which the EEG/EOG signal reaches half maximum height during eyelid closing.] +** Max [The time at which the eyelid is the most closed.] +** Right half height [The time at which the EEG/EOG signal reaches half maximum height during eyelid opening.] +** Right zero [The first time at which the EEG/EOG signal crosses zero during eyelid opening.] +** Right base [The time of the last detectable eyelid movement on opening.] +* Eye close [Close eyes and keep closed for more than approximately 0.1 s] +** Keep [Keep the eye closed. If a value is provided it indicates the duration for this.] +*** # [the duration (by default in seconds) that they keep their eye closed.]{takesValue, isNumeric, unitClass=time} +* Eye open [Open eyes and keep open for more than approximately 0.1 s] +** Keep [Keep the eye open. If a value is provided it indicates the duration for this.] +*** # {takesValue, isNumeric, unitClass=time}[the duration (by default in seconds) that they keep their eye open.] +*** With blinking [Default. Allow blinking during the eye-open period.] +*** Without blinking [Without blinking during the eye-open period.] +* Turn [Change in direction of movement or orientation. This includes both turn during movement on a path and also rotations such as head turns] +* Point +* Push +* Grab +* Tap [When there is nothing to be pressed for example like tapping a finger on a chair surface to follow a rhythm] +* Lift +* Reach [Requires a goal such as reaching to touch a button or to grab something. Stretching your body does not count as reach.] +** To Grab +** To Touch +* Course correction [Change the direction of a reach in the middle to adjust for a moving target.] +* Interact +** With human +* Take survey +* Stretch [Stretch your body such as when you wake up] +* Bend +* Deep breath +* Laugh +* Sigh +* Groan +* Scratch +* Switch attention +** Intramodal [In the same modality but with a change in details such as changing from paying attention to red dots and instead of blue dots] +*** Visual +*** Auditory +*** Tactile +*** Taste +*** Smell +** Intermodal [Between modalities such as changing from audio to visual] +*** From modality +**** Visual +**** Auditory +**** Tactile +**** Taste +**** Smell +*** To modality +**** Visual +**** Auditory +**** Tactile +**** Taste +**** Smell +* Walk +** Stride [Use onset and offset attributes to indicate different walking stride stages] +** Faster [increasing the speed of walking] +** Slower [decreasing the speed of walking] +* Control vehicle [Controlling an object that you are aboard] +** Drive [Driving a vehicle such as a car] +*** Correct [Correct for a perturbation] +*** Near miss +*** Collide +** Stop [Brake a car] +** Pilot [Pilot a vehicle such as an airplane] +* Teleoperate [Control an object that you are not aboard] +* Allow [Allow access to something such as allowing a car to pass] +* Deny [Deny access to something such as preventing someone to pass] +* Step around +* Step over +* Step on +* Swallow +* Flex +* Evade +* Shrug +* Dance +* Open mouth +* Whistle +* Read +* Attend +* Recall +* Generate +* Repeat +* Hold breath +* Breathe +* Rest +* Count +* Move +** Upper torso +** Lower torso +** Whole body +* Speak +* Sing +* Detect +* Name +* Smile +* Discriminate +* Track +* Encode +* Eye-blink inhibit + +'''Participant''' {predicateType=passThrough} +* ID {requireChild, predicateType=propertyOf} [If not given assume 1] +** # {takesValue, isNumeric} [Numeric value of an ID] +* Effect {extensionAllowed} [How the stimulus effects the participants] +** Cognitive +*** Meaningful +*** Not meaningful +*** Newly learned meaning +*** Reward +**** Low +**** Medium +**** High +**** # {takesValue, isNumeric, unitClass=currency} [Monetary values in some currency such as $10, or the ratio of the reward to the maximum possible (3 of max 10 becomes 0.3), or number Points] +*** Penalty +**** Low +**** Medium +**** High +**** # {takesValue, isNumeric, unitClass=currency} [Absolute monetary values in some currency, for example $1, or the ratio of the reward to the maximum possible (3 of max 10 becomes 0.3), or number of Points] +*** Error +**** Self originated +**** Other originated +***** Human +***** Non-human +**** Expected +**** Unexpected +**** Planned [The error feedback was given regardless of the validity of subject response as in a yoked design] +*** Threat +**** To self +**** To others +***** Close +*** Warning [As in a warning message that you are getting too close to the shoulder in a driving task] +*** Oddball [Unexpected or infrequent] +**** One stimulus [Only oddballs are present but no frequent stimuli exist. See http://dx.doi.org/10.1016/0167-8760(96)00030-X] +**** Two stimuli [There are non-targets and targets. See http://dx.doi.org/10.1016/0167-8760(96)00030-X] +**** Three stimuli [There are regular non-targets and targets and infrequent non-targets, see http://dx.doi.org/10.1016/0167-8760(96)00030-X] +**** Silent counting +**** Button pressing for target +**** Button pressing for all +*** Target [Something the subject is looking for] +*** Non-target [Make sure to tag Expected if the Non-target is frequent] +*** Novel [Genuinely novel such as an event occurring once or so per experiment] +*** Expected [Of low information value, for example frequent Non-targets in an RSVP paradigm] +**** Standard +**** Distractor +*** Valid [Something that is understood to be valid such as an ID matches the person being displayed and it has all the correct information] +*** Invalid [Something that is understood to not be valid such as like an ID with an impossible date-of-birth, or a photo not matching the person presenting it] +*** Congruence +**** Congruent [Like in Stroop paradigm when blue colored text displays the word blue] +**** Incongruent [Like in Stroop paradigm whena blue colored text reading displays the word red] +**** Temporal synchrony +***** Synchronous [When a mouse click sound happens right after clicking it] +***** Asynchronous [When a mouse click sound happens with significant delay which give could the person a strange feeling. Or if in a movie the sound of the explosion is heard before it appears visually.] +*** Feedback +**** Correct [Confirm something went well and last action was correct] +**** Incorrect [Confirm something went wrong and last action was incorrect] +**** Non-informative [Feedback that provides no information in regards to correct, incorrect, etc.] +**** Expected [Feedback was expected as in a positive feedback after a response that was expected to be correct.] +**** Unexpected [Feedback was unexpected as when positive feedback was received when response was expected to be incorrect.] +**** On accuracy [Feedback was provided by evaluating response accuracy] +**** On reaction time [Feedback was provided by evaluating subject reaction time] +**** To self [Default] +**** To other [Observed feedback to another person such as in a social paradigm] +**** Deterministic [Feedback has a fixed relationship to what happened before] +**** Stochastic [Feedback is non-deterministic and does not have fixed relationship with what has happened before in the experiment] +**** False feedback [Feedback that was not honest for example as in feedback of correct on an incorrect response or vice versa] +***** Negative [Negative feedback was provided when it was not deserved] +***** Positive [Positive feedback was provided when it was not deserved] +*** Cue [An indicator of a future event, e.g. a sound cue that in 2-5 seconds a perturbation in driving will occur. Use (... Participant/Effect/Cognitive/Cue ~ hed tags for the event to follow, or main aspect of the event to follow) syntax.] +**** Constant delay [The cue is for an event that will happen after a constant delay.] +***** # {takesValue, isNumeric, unitClass=time} [The delay, e.g. in seconds.] +**** Variable delay [The cue is for an event that will happen after a variable delay.] +***** # {takesValue} [The interval, e.g. between 2-5 seconds, of the variable delay.] +** Visual +*** Foveal +*** Peripheral +*** Perturbation [Sudden movement or perturbation of the virtual environment in a car driving or other scenario] +** Auditory +*** Stereo +*** Mono +**** Left +**** Right +** TMS +*** With SPGS [SPGS stands for spatial position guiding system] +*** Without SPGS [SPGS stands for spatial position guiding system] +** Tactile +*** Vibration +*** Acupuncture +*** Eye puff +*** Swab [Mouth swab] +** Vestibular +*** Shaking [being shaken or jerked around] +** Pain +*** Heat +*** Cold +*** Pressure +*** Electric shock +*** Laser-evoked +** Taste +** Smell +** Body part +*** Whole Body +*** Eye +*** Arm +**** Hand +***** Finger +****** Index +****** Thumb +****** Ring +****** Middle +****** Small [Pinkie or little finger] +*** Leg +**** Feet +***** Toes +*** Head +**** Face +***** Eyebrow +***** Lip +***** Forehead +***** Mouth +***** Nose +***** Chin +***** Cheek +*** Torso +* State {extensionAllowed,requireChild} +** Level of consciousness {requireChild} +*** Awake +*** Drowsy +*** Sleep +**** Stage {requireChild} +***** # {takesValue} [a number between 1 to 4, or REM] +*** Drunk +*** Anesthesia +*** Locked-in +*** Coma +*** Vegetative +*** Brain-dead +** Emotion {requireChild} +*** Awe +*** Frustration +*** Joy +*** Anger +*** Happiness +*** Sadness +*** Love +*** Fear +*** Compassion +*** Jealousy +*** Contentment +*** Grief +*** Relief +*** Excitement +*** Disgust +*** Neutral [None of the above] +** Sense of community [Primed to have an emotion such as patriotism] +*** # {takesValue, isNumeric} [SCI stands for Sense of Community Index] +** Sense of social justice +*** Distributive +*** Poverty +*** Inequality +*** Procedural +*** Interpersonal +*** Informational +** Stress level {requireChild} +*** # {takesValue, isNumeric} [A number between 0 and 1] +** Task load {requireChild} +*** # {takesValue, isNumeric} [A number between 0 and 1] +** Under time pressure +*** Response window +**** # {takesValue, isNumeric, unitClass=time} [Default time is seconds] +*** Competitive [Subject is competing against an opponent as for example when the faster respondent wins] +** Social interaction [Social] +*** Pseudo [Instructed so but actually not as when the other person may not exist in real world such as the case of a computer program agent] +** Passive [There is a stimulus presentation but no behavioral measurements are collected from the subject. Subject is instructed not to make any behavioral outputs for example when told to carefully watch/listen/sense. The resting state is not considered passive.] +** Resting [State when there is no stimulus presentation and no behavioral outputs] +** Attention +*** Top-down [Instructed to pay attention to something explicitly] +*** Bottom-up [something captures your attention, like a big bang or your name] +**** Orienting [The lower state of the bottom-up or the pre-bottom up state] +*** Covert [Implicit] +*** Overt [Explicit] +*** Selective [If you have two circles but asked to pay attention to only one of them] +**** Divided [Attending to more than one object or location] +*** Focused [Paying a lot of attention] +*** Sustained [Paying attention for a continuous time] +*** Auditory +*** Visual +*** Tactile +*** Taste +*** Smell +*** To a location [Spatial -- use the location attribute to specify to where the attention is directed] +*** Arousal {requireChild} +*** Alerting [Keeping the arousal up in order to respond quickly] +*** Drowsy +*** Excited +*** Neutral + + +'''Experiment context''' {requireChild, extensionAllowed} [Describes the context of the whole experiment or large portions of it and also includes tags that are common across all events] +* # {takesValue} [Add common tags across all stimuli/ and/or responses here if all experimental events share /State/Drowsy, you can place it here instead of tagging each event individually ] +* With chin rest +* Sitting +* Standing +* Prone [As in on a bed] +* Running +** Treadmill +* Walking +** Treadmill +* Indoors [Default] +** Clinic [Recording in a clinical setting such as in a hospital or medical office] +** Dim Room +* Outdoors +** Terrain +*** Grass +*** Uneven +*** Boardwalk +*** Dirt +*** Leaves +*** Mud +*** Woodchip +*** Rocky +*** Gravel +*** Downhill +*** Uphill +* Motion platform [Subject is on a motion platform such as one that produces simulated car movements] +* Fixed screen +** Distance [Assuming static subject] +*** # {takesValue, isNumeric, unitClass=physicalLength} [Distance from subject eyes to the presentation screen for 30 cm from subject eyes to the monitor] +** Width resolution +*** # {takesValue, isNumeric, unitClass=pixels} [Default units are pixels] +** Height resolution +*** # {takesValue, isNumeric, unitClass=pixels} [Default units are pixels ] +* Real world +* Virtual world + +'''Custom''' {requireChild, extensionAllowed} [This node can be used to organize events in an alternative (parallel) hierarchy. You can define your custom tags and hierarchies without any restriction under this node. These tags will still be matched to each other as for example /Custom/Dance/Waltz is considered a subtype of /Custom/DanceExample.] + +'''HED''' {requireChild} [Hierarchical Event Descriptor] +* # {takesValue, isNumeric} [HED specification version number: normally there is no need to specify the version number in the HED string since it will be matched by default to the most recent compliant version, but this tag can be used to specify the exact HED version the HED string was based on.] + +'''Paradigm''' {requireChild, extensionAllowed}[See Tasks in http://www.cognitiveatlas.org/tasks and CogPo definitions of paradigms] +* Action imitation task +* Action observation task +* Acupuncture task +* Adult attachment interview +* Alternating runs paradigm +* Animal naming task +* Antisaccade-prosaccade task +* Attention networks test +* Attentional blink task +* Audio-visual target-detection task +* Autism diagnostic observation schedule +* Ax-cpt task +* Backward digit span task +* Backward masking +* Balloon analogue risk task - BART +* Behavioral investment allocation strategy - BIAS +* Behavioral rating inventory of executive function +* Benton facial recognition test +* Birmingham object recognition battery +* Block design test +* Block tapping test +* Boston naming test +* Braille reading task +* Breath-holding +* Breathhold paradigm +* Brixton spatial anticipation test +* California verbal learning test +* California verbal learning test-ii +* Cambridge face memory test +* Cambridge gambling task +* Cambridge neuropsychological test automated battery +* Catbat task +* Category fluency test +* Cattell culture fair intelligence test +* Chewing-swallowing +* Chimeric animal stroop task +* Choice reaction time task +* Choice task between risky and non-risky options +* Classical conditioning +* Clinical evaluation of language fundamentals-3 +* Color trails test +* Color-discrimination task +* Color-word stroop task +* Complex span test +* Conditional stop signal task +* Conditioning paradigm +** Behavioral conditioning paradigm +** Classical conditioning paradigm +* Continuous performance task +* Continuous recognition paradigm +* Counting stroop task +* Counting-calculation +* Cued explicit recognition +* Cups task +* Deception task +* Deductive reasoning paradigm +* Deductive reasoning task +* Delayed discounting task +* Delayed match to sample task +* Delayed nonmatch to sample task +* Delayed recall test +* Delayed response task +** Delayed matching to sample paradigm +*** Sternberg paradigm +* Devils task +* Dichotic listening task +* Digit cancellation task +* Digit span task +* Digit-symbol coding test +* Directed forgetting task +* Divided auditory attention +* Divided auditory attention paradigm +* Doors and people test +* Dot pattern expectancy task +* Drawing +* Drawing paradigm +* Dual-task paradigm +* Early social communications scales +* Eating paradigm +* Eating-drinking +* Embedded figures test +* Emotional regulation task +* Encoding paradigm +* Encoding task +* Episodic recall +* Episodic recall paradigm +* Eriksen flanker task +* Extradimensional shift task +* Eye Saccade paradigm +** Anti saccade paradigm +** Simple saccade paradigm +* Face monitor-discrimination +* Face n-back task +* Fagerstrom test for nicotine dependence +* Film viewing +* Finger tapping task +* Fixation task +* Flashing checkerboard +* Flexion-extension +* Forward digit span task +* Free word list recall +* Glasgow coma scale +* Go-no-go task +* Grasping task +* Gray oral reading test - 4 +* Haptic illusion task +* Hayling sentence completion test +* Heat sensitization-adaptation +* Heat stimulation +* Hooper visual organization test +* ID screening [Visual examination of multiple fields of an ID or document to detect invalid or suspicious fields. For example at a security checkpoint.] +* Imagined emotion +* Imagined movement +* Imagined objects-scenes +* Instructed movement +* Immediate recall test +* Inductive reasoning aptitude +* International affective picture system +* Intradimensional shift task +* Ishihara plates for color blindness +* Isometric force +* Item recognition paradigm +** Serial item recognition paradigm +* Item recognition task +* Kanizsa figures +* Keep-track task +* Letter comparison +* Letter fluency test +* Letter naming task +* Letter number sequencing +* Lexical decision task +* Listening span task +* Macauthur communicative development inventory +* Machine failure detection task +* Matching familiar figures test +* Matching pennies game +* Maudsley obsessive compulsive inventory +* Mechanical stimulation +* Memory span test +* Mental rotation task +* Micturition task +* Mini mental state examination +* Mirror tracing test +* Mismatch negativity paradigm +* Mixed gambles task +* Modified erikson scale of communication attitudes +* Morris water maze +* Motor sequencing task +* Music comprehension-production +* N-back task +** Letter n-back task +* Naming +** Covert +** Overt +* Nine-hole peg test +* Non-choice task to study expected value and uncertainty +* Non-painful electrical stimulation +* Non-painful thermal stimulation +* Nonword repetition task +* Object alternation task +* Object-discrimination task +* Oculomotor delayed response +* Oddball discrimination paradigm +** Auditory oddball paradigm +** Visual oddball paradigm +*** Rapid serial visual presentation +* Oddball task +* Olfactory monitor-discrimination +* Operation span task +* Orthographic discrimination +* Paced auditory serial addition test +* Pain monitor-discrimination task +* Paired associate learning +* Paired associate recall +* Pantomime task +* Parrott scale +* Passive listening +* Passive viewing +* Pattern comparison +* Perturbed driving +* Phonological discrimination +* Picture naming task +* Picture set test +* Picture-word stroop task +* Pitch monitor-discrimination +* Pointing +* Porteus maze test +* Positive and negative affect scale +* Posner cueing task +* Probabilistic classification task +* Probabilistic gambling task +* Probabilistic reversal learning +* Pseudoword naming task +* Psychomotor vigilance task +* Pursuit rotor task +* Pyramids and palm trees task +* Rapid automatized naming test +* Rapid serial object transformation +* Reading - Covert +* Reading - Overt +* Reading paradigm +** Covert braille reading paradigm +** Covert visual reading paradigm +* Reading span task +* Recitation-repetition - Covert +* Recitation-repetition - Overt +* Remember-know task +* Response mapping task +* Rest +** Rest eyes open +** Rest eyes closed +* Retrieval-induced forgetting task +* Reversal learning task +* Reward task +* Rey auditory verbal learning task +* Rey-ostereith complex figure test +* Reynell developmental language scales +* Rhyme verification task +* Risky gains task +* Rivermead behavioural memory test +* [extend here] + +!# end schema + + +'''Unit classes''' +* time {defaultUnits=s} +** second {SIUnit} +** s {SIUnit, unitSymbol} +** day +** minute +** hour [Should be in 24-hour format.] +* dateTime {defaultUnits=YYYY-MM-DDThh:mm:ss} +** YYYY-MM-DDThh:mm:ss [Date-times should conform to ISO8601 date-time format.] +* clockTime {defaultUnits=hour:min} +** hour:min [Hours should be in 24 hour format. Two-digit values should be used for each item.] +** hour:min:sec [Hours should be in 24 hour format. Two-digit values should be used for each item.] +* frequency {defaultUnits=Hz} +** hertz {SIUnit} +** Hz {SIUnit, unitSymbol} +* angle {defaultUnits=radian} +** radian {SIUnit} +** rad {SIUnit, unitSymbol} +** degree +* physicalLength {defaultUnits=m} +** metre {SIUnit} +** m {SIUnit, unitSymbol} +** foot +** mile +* pixels {defaultUnits=px} +** pixel +** px {unitSymbol} +* area {defaultUnits=m^2} +** m^2 {SIUnit, unitSymbol} +** px^2 {unitSymbol} +** pixel^2 +* volume {defaultUnits=m^3} +** m^3 {SIUnit, unitSymbol} +* speed {defaultUnits=m-per-s} +** m-per-s {SIUnit, unitSymbol} +** mph {unitSymbol} +** kph {unitSymbol} +* acceleration {defaultUnits=m-per-s^2} +** m-per-s^2 {SIUnit, unitSymbol} +* jerk {defaultUnits=m-per-s^3} +** m-per-s^3 {unitSymbol} +* intensity {defaultUnits=dB} +** dB {unitSymbol} +* luminousIntensity {defaultUnits=cd} +** candela {SIUnit} +** cd {SIUnit, unitSymbol} +* memorySize {defaultUnits=B} +** byte {SIUnit} +** B {SIUnit, unitSymbol} +* currency {defaultUnits=$} +** dollar +** $ {unitSymbol} +** point +** fraction + + +'''Unit modifiers''' +* deca {SIUnitModifier} [SI unit multiple representing 10^1] +* da {SIUnitSymbolModifier} [SI unit multiple representing 10^1] +* hecto {SIUnitModifier} [SI unit multiple representing 10^2] +* h {SIUnitSymbolModifier} [SI unit multiple representing 10^2] +* kilo {SIUnitModifier} [SI unit multiple representing 10^3] +* k {SIUnitSymbolModifier} [SI unit multiple representing 10^3] +* mega {SIUnitModifier} [SI unit multiple representing 10^6] +* M {SIUnitSymbolModifier} [SI unit multiple representing 10^6] +* giga {SIUnitModifier} [SI unit multiple representing 10^9] +* G {SIUnitSymbolModifier} [SI unit multiple representing 10^9] +* tera {SIUnitModifier} [SI unit multiple representing 10^12] +* T {SIUnitSymbolModifier} [SI unit multiple representing 10^12] +* peta {SIUnitModifier} [SI unit multiple representing 10^15] +* P {SIUnitSymbolModifier} [SI unit multiple representing 10^15] +* exa {SIUnitModifier} [SI unit multiple representing 10^18] +* E {SIUnitSymbolModifier} [SI unit multiple representing 10^18] +* zetta {SIUnitModifier} [SI unit multiple representing 10^21] +* Z {SIUnitSymbolModifier} [SI unit multiple representing 10^21] +* yotta {SIUnitModifier} [SI unit multiple representing 10^24] +* Y {SIUnitSymbolModifier} [SI unit multiple representing 10^24] +* deci {SIUnitModifier} [SI unit submultiple representing 10^-1] +* d {SIUnitSymbolModifier} [SI unit submultiple representing 10^-1] +* centi {SIUnitModifier} [SI unit submultiple representing 10^-2] +* c {SIUnitSymbolModifier} [SI unit submultiple representing 10^-2] +* milli {SIUnitModifier} [SI unit submultiple representing 10^-3] +* m {SIUnitSymbolModifier} [SI unit submultiple representing 10^-3] +* micro {SIUnitModifier} [SI unit submultiple representing 10^-6] +* u {SIUnitSymbolModifier} [SI unit submultiple representing 10^-6] +* nano {SIUnitModifier} [SI unit submultiple representing 10^-9] +* n {SIUnitSymbolModifier} [SI unit submultiple representing 10^-9] +* pico {SIUnitModifier} [SI unit submultiple representing 10^-12] +* p {SIUnitSymbolModifier} [SI unit submultiple representing 10^-12] +* femto {SIUnitModifier} [SI unit submultiple representing 10^-15] +* f {SIUnitSymbolModifier} [SI unit submultiple representing 10^-15] +* atto {SIUnitModifier} [SI unit submultiple representing 10^-18] +* a {SIUnitSymbolModifier} [SI unit submultiple representing 10^-18] +* zepto {SIUnitModifier} [SI unit submultiple representing 10^-21] +* z {SIUnitSymbolModifier} [SI unit submultiple representing 10^-21] +* yocto {SIUnitModifier} [SI unit submultiple representing 10^-24] +* y {SIUnitSymbolModifier} [SI unit submultiple representing 10^-24] + +'''Value classes''' [Specification of the rules for the values provided by users.] + +'''Schema attributes''' +* default [Tag assumed to be present if not explicitly given.] +* defaultUnits [Default units for a tag.] +* extensionAllowed [Users can add unlimited levels of child nodes under this tag.] +* isNumeric [The tag "#" must be replaced by a numerical value.] +* position [Used to specify the order of the required and recommended tags in canonical order for display. The position attribute value should be an integer and the order can start at 0 or 1. Required or recommended tags without this attribute or with negative position will be shown after the others in canonical ordering.] +* predicateType [One of propertyOf, subclassOf, passThrough -- used to facilitate mapping to OWL or RDF.] +* recommended [A HED string tagging an event is recommended to include this tag.] +* requireChild [One of its descendants must be chosen to tag an event.] +* required [Every HED string tagging an event should include this tag.] +* SIUnit [Designates the name of an SI unit so it can be modified by multiple and submultiple names. Note that some units such as byte are designated as SI units although they are not part of the standard.] +* SIUnitModifier [SI unit modifier indicating a multiple or submultiple of a base unit.] +* SIUnitSymbolModifier [SI unit symbol modifier indicating a multiple or submultiple of a base unit symbol.] +* takesValue [This tag will have a "#" placeholder child in the schema which is expected to be replaced with a user-defined value.] +* unique [Only one of this tag or its descendants can be used within a single tag group or event.] +* unitSymbol [Abbreviation or symbol representing a type of unit. Unit symbols represent both the singular and the plural and thus cannot be pluralized.] + +'''Properties''' [Properties of the schema attributes themselves. These are used for schema handling and verification.] + +'''Epilogue''' +Note: This is the new version of the .mediawiki designed to support prologues and epilogues. + !# end hed \ No newline at end of file diff --git a/hedwiki/HED7.3.0.mediawiki b/hedwiki/deprecated/HED7.3.0.mediawiki similarity index 98% rename from hedwiki/HED7.3.0.mediawiki rename to hedwiki/deprecated/HED7.3.0.mediawiki index 0462916f..aab94a3c 100644 --- a/hedwiki/HED7.3.0.mediawiki +++ b/hedwiki/deprecated/HED7.3.0.mediawiki @@ -1,1313 +1,1313 @@ -HED version="7.3.0" - -'''Prologue''' -Changelog -* 5/08/2021: v7.3.0 Added unitClass as an attribute -* 4/20/2021: v.7.3.0 Removed default as a valid attribute. Added schema attribute properties. -* 3/16/2021: v.7.2.0 Adopted the new format for mediawiki files. -* 11/22/2020: v. 7.1.2 Add extensionAllowed to top-level Item subtree. -* 7/27/2020: v. 7.1.1 Corrected extensionAllowed on several top-level and second-level items. Removed extra h:m from clockTime. Removed unitSymbol from clockTime. Added dateTime unit class. -* 5/9/2020: Added the clockTime unit class -* 4/25/2020: v. 7.1.0 Added unit modifiers and updated unit classes to support SI units. -* 9/29/2019: v. 7.0.5: Added Visual/Rendering type/Screen/Head-mounted display. Added extensionAllowed to Sensory presentation. Added Tone and Genre under Sensory presentation/Auditory/Music. -* 8/18/2019: v. 7.0.4: Added extensionsAllowed to Custom and removed extensionsAllowed from nodes under Attribute and Item/Object. Also replaced per-sec with per-s in units. -* 7/8/2019: v. 7.0.3: Removed the extra Action/Turn node. -* 5/18/2019: v. 7.0.2: Added centisecond and millisecond as valid time units. -* 3/7/2018: v. 7.0.1: Added Paradigm/Psychomotor vigilance task. -* 2/15/2018: v. 7.0.0: Removed parentheses from some paradigm tags (used hyphens instead) -* 1/11/2018: v. 6.0.5: Changed unit class for a number of values from velocity to speed. -* 8/4/2017: v. 6.0.4: Added Machine failure detection task to paradigms list. -* 7/20/2017: v. 6.0.3: Removed Action observation paradigm since there is already Action observation task. -* 7/17/2017: v. 6.0.2: Added Attribute/Object control/Accelerate and Attribute/Object control/Decelerate. Also added a description for extensionAllowed. -* 7/14/2017: v. 6.0.1: Replaced Item/Natural scene/Arial with Item/Natural scene/Aerial. -* 7/13/2017: v. 6.0.0: Replaced XXX in Event/Category/Experimental stimulus/Instruction/XXX with Event/Category/Experimental stimulus plus (Attribute/Instruction, Action/XXX). Moved a number of instructions under Action/. Also added Rest eyes open', Rest eyes closed and Imagined emotion paradigms. Removed Action/Imagine and instead one should use Attribute/Imagined. -* 6/22/2017: v. 5.2.3: Added clarification for Attribute/Background (stimuli to be ignored) -* 3/22/2017: v. 5.2.2: Fixed the missing [ in Attribute/Imagined. -* 3/16/2017: v. 5.2.1: Added Action/Interact, Action/Interact/With human, Action/Take survey, Action/Eye blink/Left base, Left zero, Left half height, Right half height, Right zero, right base. -* 3/7/2017, v 5.1.1: Added Attribute/Blink/Duration and fixed some issues. -* 2/16/2017, v 5.0.0: Changed Attribute/Presentation fraction to Attribute/Presentation/Fraction and added a few other attributes under Attribute/Presentation. Removed Participant/Role and and added Attribute/Role. -* 2/9/2017, v 4.0.5: added Paradigm/ID screening tag and moved language n-back under n-back paradigm. Also moved Flickering/rate to Attribute/Temporal rate. -* 2/2/2017, v 4.0.4: moved Height and Width from Experiment/Context/Fixed screen/ to under Attribute/ -* 1/31/2017, v 4.0.3: added Attribute/Condition. -* 1/5/2017, v. 4.0.2: fixed description in Sentence and Paragraph -* 12/1/2016, v. 4.0.1: added Blink action and attributes. -* 11/10/2016, v. 4.0.0: changed "Event/Sequence group id" to "Event/Group ID". Added "Paradigm/Instructed movement", "Attribute/Response start delay" and "Attribute/Response end delay". -* 9/19/2016: Typo in Custom tag description fixed. -* 9/8/2016: Added Attribute/Action judgment/Indeterminate. -* 9/6/2016: Added Attribute/Imagined -* 9/6/2016 Added back Experiment control/Activity/Participant action.in -* 9/1/2016: Added Eyes open/Keep,Eyes close/Keep. Added Action/Make fist Action/Curl toes. MAJOR: moved Participant action/... from Event/Category/Experiment control/Activity to under Attribute/Activity judgment/. This is a backward incompatible change. -* 8/4/2016: Added Attribute/Participant indication tag. -* 7/21/2016: Added Attribute/Intended effect tag. This can be used e.g. to specify an image in an RSVP experiment where it was intended to be perceived as a target (but it may not have by the subject). -* 6/22/2016: Added Attribute/Temporal uncertainty tag along with its child nodes. Also required a child for Attribute/Presentation fraction tag. -* 6/16/2016: Added sleep stages. -* 5/23/2016: Added more description to Attribute/Probability, allowing text values like low and high in addition to numerical values between 0 and 1. -* 3/31/2016: Added constant and variable delays under Participant/Effect/Cognitive/Cue. -* 3/10/2016: -** Added Non-informative under Cognitive/Feedback -** Added Cue under Cognitive -* 2/25/2016: -** Removed /Participant/Effect/Cognitive/Oddball/Three stimuli/Target -** Moved Non-target from under Expected to the same level as Target, this is because in Three stimuli oddball paradigm the Non-targets are oddballs and hence not expected. -** Note: user are encouraged to add Expected and Oddball tags when tagging targets and non-targets -** Added Presentation fraction - -HED tags can only be separated by commas. Use semicolons (;) instead of commas in event descriptions since otherwise extra commas could confuse HED parsers. -From version 2.2, HED adheres to http://semver.org/ versioning. - -!# start schema - -'''Event''' -* Category {required, requireChild, predicateType=passThrough, position=1} [This is meant to designate the reason this event was recorded] -** Initial context [The purpose is to set the starting context for the experiment --- and if there is no initial context event---this information would be stored as a dataset tag] -** Participant response [The purpose of this event was to record the state or response of a participant. Note: participant actions may occur in other kinds of events, such as the experimenter records a terrain change as an event and the participant happens to be walking. In this case the event category would be Environmental. In contrast, if the participant started walking in response to an instruction or to some other stimulus, the event would be recorded as Participant response] -** Technical error [Experimenters forgot to turn on something or the cord snagged and something may be wrong with the data] -*** # {takesValue} [Description as string] -** Participant failure [Situation in which participant acts outside of the constraints of the experiment -- such as driving outside the boundary of a simulation experiment or using equipment incorrectly] -*** # {takesValue} [Description as string] -** Environmental [Change in experimental context such as walking on dirt versus sidewalk] -*** # {takesValue} [Description as a string] -** Experimental stimulus -*** Instruction -** Experimental procedure [For example doing a saliva swab on the person] -*** # {takesValue}[Description as string] -** Incidental [Not a part of the task as perceived by/instructed to the participant --- for example an airplane flew by and made noise or a random person showed up on the street] -*** # {takesValue}[Description as string] -** Miscellaneous [Events that are only have informational value and cannot be put in other event categories] -*** # {takesValue}[Description as a string] -** Experiment control [Information about states and events of the software program that controls the experiment] -*** Sequence{predicateType=propertyOf} -**** Permutation ID {requireChild} -***** # {takesValue} [Permutation number/code used for permuted experiment parts] -**** Experiment [Use Attribute/Onset and Attribute/Offset to indicate start and end of the experiment] -**** Block [Each block has the same general context and contains several trials -- use Attribute/Onset and Attribute/Offset to specify start and end] -***** # {takesValue} [Block number or identifier] -**** Trial [Use Attribute/Onset and Attribute/Offset to specify start and end] -***** # {takesValue} [Trial number or identifier] -**** Pause [Use Attribute/Onset and Attribute/Offset to specify start and end] -*** Task -**** # {takesValue} [Label here] -*** Activity [Experiment-specific actions such as moving a piece in a chess game] -**** Participant action -*** Synchronization [An event used for synchronizing data streams] -**** Display refresh -**** Trigger -**** Tag {predicateType=propertyOf} -***** # {takesValue} [Actual tag: string or integer] -*** Status -**** Waiting for input -**** Loading -**** Error -*** Setup -**** Parameters {predicateType=propertyOf} -***** # {takesValue} [Experiment parameters in some a string. Do not used quotes.] -* ID {predicateType=propertyOf} [A number or string label that uniquely identifies an event instance from all others in the recording (a UUID is strongly preferred).] -** # {takesValue} [ID of the event] -* Group ID {predicateType=propertyOf} [A number or string label that uniquely identifies a group of events associated with each other.] -** # {takesValue} [ID of the group] -* Duration {requireChild, predicateType=propertyOf} [An offset that is implicit after duration time passed from the onset] -** # {takesValue, isNumeric, unitClass=time} -* Description {requireChild, required, unique, predicateType=propertyOf, position=3}[Same as HED 1.0 description for human-readable text] -** # {takesValue} -* Label {requireChild, required, unique, predicateType=propertyOf, position=0} [A label for the event that is less than 20 characters. For example /Label/Accept button. Please note that the information under this tag is primarily not for use in the analysis and is provided for the convenience in referring to events in the context of a single study. Please use Custom tag to define custom event hierarchies. Please do not mention the words Onset or Offset in the label. These should only be placed in Attribute/Onset and Attribute/Offset. Software automatically generates a final label with (onset) or (offset) in parentheses added to the original label. This makes it easier to automatically find onsets and offsets for the same event.] -** # {takesValue} -* Long name {requireChild, unique, predicateType=propertyOf, position=2} [A long name for the event that could be over 100 characters and could contain characters like vertical bars as separators. Long names are used for cases when one wants to encode a lot of information in a single string such as Scenario | VehiclePassing | TravelLaneBLocked | Onset]. -** # {takesValue} - -'''Item''' {extensionAllowed} -* ID {requireChild, predicateType=propertyOf} [Optional] -** # {takesValue} -** Local [For IDs with local scope --- that is IDs only defined in the scope of a single event. The local ID 5 in events 1 and 2 may refer to two different objects. The global IDs directly under ID/ tag refer to the same object through the whole experiment] -*** # {takesValue} -* Group ID {requireChild, predicateType=propertyOf} [Optional] -** # {takesValue} -* Object [Visually discernable objects. This item excludes sounds that are Items but not objects] -** Vehicle -*** Bicycle -*** Car -*** Truck -*** Cart -*** Boat -*** Tractor -*** Train -*** Aircraft -**** Airplane -**** Helicopter -** Person -*** Pedestrian -*** Cyclist -*** Mother-child -*** Experimenter -** Animal -** Plant -*** Flower -*** Tree -**** Branch -**** Root -** Building -** Food -*** Water -** Clothing -*** Personal [clothing that is on the body of the subject] -** Road sign -** Barrel -** Cone -** Speedometer -** Construction zone -** 3D shape -** Sphere -** Box -*** Cube -* 2D shape [Geometric shapes] -** Ellipse -*** Circle -** Rectangle -*** Square -** Star -** Triangle -** Gabor patch -** Cross [By default a vertical-horizontal cross. For a rotated cross add Attribute/Object orientation/Rotated/ tag] -** Single point -** Clock face [Used to study things like hemispheric neglect. The tag is related to the clock-drawing-test] -*** # {takesValue, unitClass=clockTime} -* Pattern -** Checkerboard -** Abstract -** Fractal -** LED -** Dots -*** Random dot -** Complex -* Face -** Whole face with hair -** Whole face without hair -** Cut-out -** Parts only -*** Nose -*** Lips -*** Chin -*** Eyes -**** Left only -**** Right only -* Symbolic [Something that has a meaning, could be linguistic or not such as a stop signs.] -** Braille character -** Sign [Like the icon on a stop sign. This should not to be confused with the actual object itself.] -*** Traffic -**** Speed limit -***** # {takesValue, isNumeric, unitClass=speed} [Always give units e.g. mph or kph] -** Character -*** Digit -*** Pseudo-character [Alphabet-like but not really] -*** Letter [Authograph or valid letters and numbers such as A or 5] -**** # {takesValue} -** Composite [Has multiple of the above on it] -* Natural scene -** Aerial -*** Satellite -* Drawing [Cartoon or sketch] -** Line drawing -* Film clip -** Commercial TV -** Animation -* IAPS [International Affective Picture System] -* IADS [International Affective Digital Sounds] -* SAM [The Self-Assessment Manikin] - -'''Sensory presentation {extensionAllowed} [Object manifestation]''' - -* Auditory [Sound] -** Nameable -** Cash register -** Ding [Often associated with positive valence] -** Buzz [Often associated with negative valence] -** Fire alarm -** Click -*** ABR [Auditory Brainstem Response] -** Tone -** Siren -** Music -*** Chord sequence -*** Vocal -*** Instrumental -*** Tone -*** Genre -** Noise -*** White -*** Colored [Not white --- for example a 1/f spectrum] -** Human voice -** Animal voice {extensionAllowed} -*** Bird -*** Dog -*** Insect -*** Squirrel - -** Real world [For example people walking or machines operating] -*** Pedestrian -*** Footsteps -**** Walking -**** Running -*** Noisemaker -*** Construction noise -*** Machine -*** Vehicle -**** Horn -**** Aircraft -***** Airplane -***** Helicopter -**** Train -**** Cart -**** Car alarm -**** Car -**** Bicycle -** Nonverbal vocal -*** Emotional -**** Crying -**** Sighing -*** Gulp -*** Gurgle -*** Sneeze -*** Cough -*** Yawn -** Nonvocal [A car engine or gears grinding --- anything that is not made by a human or an animal] -*** Engine -* Olfactory [Odor] -* Taste -* Tactile [Pressure] -* Visual -** Rendering type {requireChild, predicateType=passThrough} -*** Screen -**** Head-mounted display -**** View port [Two or more views on the same object --- for example one from top one from street view] -***** ID {predicateType=passThrough} -****** # {takesValue} [A descriptive label for the viewport] -**** 2D -**** 3D -**** Movie -***** Video-tape -***** Motion-capture [Stick figure of motion capture of someone else] -****** Point light -****** Stick figure -****** Outline -***** Flickering -***** Steady state -*** Real-world -*** LED [Stimulus is turning on/off one or a few LEDs] - -'''Attribute''' {requireChild, extensionAllowed} -* Onset [Event is assumed to be an onset event if this attribute not present.] -* Offset -* Imagined [This is used to identity that the (sub)event only happened in the imagination of the participant, e.g. imagined movements in motor imagery paradigms.] -* State ID {requireChild} [This is used to identify a group of events that are changing the state of a variable where the onset means the offset of any other and a change in the state] -** # {takesValue} [ID which could be a number or any string] -* Repetition {requireChild} [When the same type of event such as a fixation on the exact same object happens multiple times and it might be necessary to distinguish the first look vs. others] -** # {takesValue, isNumeric} [Number starting from 1 where 1 indicates the first occurrence and 2 indicates the second occurrence] -* Temporal rate {predicateType=propertyOf} -** # {takesValue, isNumeric, unitClass=frequency} [In Hz] -* Condition {requireChild} [Specifies the value of an independent variable (number of letters, N, in an N-back task) or function of independent variables that is varied or controlled for in the experiment. This attribute is often specified at the task level and can be associated with specification of an experimental stimulus or an experiment context (e.g. 1-back, 2-back conditions in an N-back task, or changing the target type from faces to houses in a Rapid Serial Visual Presentation, or RSVP, task.)] -** # {takesValue} [the condition] -* Action judgment [External judgment (assumed to be ground truth, e.g. from an experiment control software or an annotator) about participant actions such as answering a question, failing to answer in time, etc.] -** Correct -** Incorrect [Wrong choice but not time out] -** Indeterminate [It cannot be determined that the action was correct or incorrect.] -** Time out -*** Missed [Participant failed or could not have perceived the instruction due to their eyes being off-screen or a similar reason. Not easy to deduce this but it is possible] -** Inappropriate [A choice that is not allowed such as moving a chess piece to a location it should not go based on game rules] -* Response start delay [The time interval between this (stimulus) event and the start of the response event specified, usually by grouping with the event ID of the response start event.] -** # {takesValue, unitClass=time} -* Response end delay [The time interval between this (stimulus) event and the end of the response event specified, usually by grouping with the event ID of the response end event.] -** # {takesValue, unitClass=time} -* Social [Involving interactions among multiple agents such as humans or dogs or robots] -* Peak [Peak velocity or acceleration or jerk] -* Object side {requireChild} [Could be the left, right, or both sides of a person or a vehicle] -** Reference object ID {requireChild,predicateType=propertyOf}[Place object ID after this] -*** # {takesValue} -** Right -** Left -** Front -** Back -** Top -** Bottom -** Starboard -** Port -** Passenger side [Side of a car] -** Driver side [Side of a car] -** Bow [Front of a ship] -** Stern [Back of the ship] -* Direction {requireChild} [Coordinate system is inferred from Attribute/Location. To specify a vector combine subnodes with number --- for example Attribute/Top/10, Attribute/Direction/Left/5 to create a vector with coordinates 10 and 5] -** Top [Combine Attribute/Direction/Top and Attribute/Direction/Left to mean the upper left] -*** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} -** Bottom -*** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} -** Left -*** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} -** Right -*** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} -** Angle [Clockwise angle in degrees from vertical] -*** # {takesValue, isNumeric, unitClass=angle} [Clockwise angle in degrees from vertical] -** North -*** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} -** South -*** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} -** East -*** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} -** West -*** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} -** Forward [Like a car moving forward] -** Backward [Like a car moving backward] -* Location {requireChild} [Spot or center of an area. Use Area were you are referring to something with significant extent and emphasizing its boundaries, like a city] -** # {takesValue} [location label] -** Screen [Specify displacements from each subnode in pixels or degrees or meters. Specify units such as Attribute/Location/Screen/Top/12 px] -*** Center -**** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} -*** Top [You can combine Attribute/Location/Top and Attribute/Location/Left to designate UpperLeft and so on] -**** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} -*** Bottom -**** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} -*** Left -**** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} -*** Right -**** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} -*** Angle -**** # {takesValue, isNumeric, unitClass=angle} [Clockwise angle in degrees from vertical] -*** Center displacement -**** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength} [displacement from screen center, in any direction, in degrees, cm, or other lengths] -**** Horizontal -***** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength} [Displacement from screen center in any direction] -**** Vertical -***** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength}[Displacement from screen center in any direction] -** Lane [For example a car lane] -*** Rightmost -*** Leftmost -*** Right of expected -*** Left of expected -*** Cruising -*** Passing [The lane that cars use to take over other cars] -*** Oncoming -** Real-world coordinates {requireChild} -*** Room -**** xyz {requireChild} [have a subnode, e.g. Attribute/Location/Real-world coordinates/Room/xyz/10-50-30] -***** # {takesValue} -** Reference frame {requireChild} -*** Specified absolute reference -*** Relative to participant -**** Participant ID {requireChild} -***** # {takesValue} -**** Left -**** Front -**** Right -**** Back -**** Distance {requireChild} -***** # {takesValue, isNumeric, unitClass=physicalLength} [Distance is in meters by default] -***** Near -***** Moderate -***** Far -**** Azimuth {requireChild} -***** # {takesValue, isNumeric, unitClass=angle} [Clockwise with units preferably in degrees] -**** Elevation {requireChild} -***** # {takesValue, isNumeric, unitClass=angle} [Preferably in degrees] -* Object orientation {requireChild} -** Rotated -*** Degrees {requireChild} -**** #{takesValue, isNumeric, unitClass=angle}[Preferably in degrees] -* Size {requireChild} -** Length{requireChild} -*** # {takesValue, isNumeric, unitClass=physicalLength} [In meters or other units of length ] -** Width -*** # {takesValue, isNumeric, unitClass=physicalLength} [in meters] -** Height -*** # {takesValue, isNumeric, unitClass=physicalLength} [Default units are meters] -** Area {requireChild} -*** # {takesValue, isNumeric, unitClass=area} -** Volume {requireChild} -*** # {takesValue, isNumeric, unitClass=volume} [In cubic-meters or other units of volume] -** Angle{requireChild} -*** # {takesValue, isNumeric, unitClass=angle} [In degrees or other units of angle] -* Item count {requireChild} [Number of items for example when there are 3 cars and they are identified as a single item] -** # {takesValue, isNumeric} [Numeric value of number of items #] -** <=# {takesValue, isNumeric} [Number of items less than or equal to #] -** >=# {takesValue, isNumeric} [Number of items more than or equal to #] -* Auditory -** Frequency {requireChild} -*** # {takesValue, isNumeric, unitClass=frequency} [In HZ] -** Loudness {requireChild} -*** # {takesValue, isNumeric, unitClass=intensity} [in dB] -** Ramp up [Increasing in amplitude] -** Ramp down [Decreasing in amplitude] -* Blink -** Time shut {requireChild} [The amount of time the eyelid remains closed (typically measured as 90% of the blink amplitude), in seconds.] -*** # {takesValue, isNumeric, unitClass=time} -** Duration {requireChild} [Duration of blink usually the half-height blink duration in seconds taken either from base or zero of EEG signal. Eye-trackers usually use duration to mean the interval during which the pupil covered by eyelid.] -***# {takesValue, isNumeric, unitClass=time} -** PAVR {requireChild} [Amplitude-Velocity ratio in centiseconds] -*** # {takesValue, isNumeric, unitClass=time} -** NAVR {requireChild} [Negative Amplitude-Velocity ratio in centiseconds] -*** # {takesValue, isNumeric, unitClass=time} -* Visual -** Bistable -** Background -** Foreground -** Up-down separated [Stimuli presented both at the top and the bottom of fovea] -*** # {takesValue, isNumeric, unitClass=angle} [Angle of separation in degrees by default.] -** Bilateral [For bilateral visual field stimulus presentations] -*** # {takesValue, isNumeric, unitClass=angle} [Angle of separation in degrees by default.] -** Motion -*** Down -**** # {takesValue, isNumeric, unitClass=speed} [e.g. 3 degrees-per-second] -*** Up -**** # {takesValue, isNumeric, unitClass=speed} [e.g. 3 degrees-per-second] -*** Horizontal -**** Right -***** # {takesValue, isNumeric, unitClass=speed} [e.g. 3 degrees-per-second] -**** Left -***** # {takesValue, isNumeric, unitClass=speed} [e.g. 3 degrees-per-second] -*** Oblique -**** Clock face -***** # {takesValue, unitClass=time} [For example 4:30] -** Fixation point -** Luminance {requireChild} -*** # {takesValue, isNumeric, unitClass=luminousIntensity}[In candelas by default.] -** Color {requireChild} -*** Dark -*** Light -*** Aqua [These are CSS 3 basic color names] -*** Black -*** Fuchsia -*** Gray -*** Lime -*** Maroon -*** Navy -*** Olive -*** Purple -*** Silver -*** Teal -*** White -*** Yellow -*** Red -**** # {takesValue, isNumeric} [R value of RGB between 0 and 1] -*** Blue -**** # {takesValue, isNumeric} [B value of RGB between 0 and 1] -*** Green -**** # {takesValue, isNumeric} [G value of RGB between 0 and 1] -*** Hue {requireChild} -**** # {takesValue, isNumeric} [H value of HSV between 0 and 1] -*** Saturation {requireChild} -**** # {takesValue, isNumeric} [S value of HSV between 0 and 1] -*** Value {requireChild} -**** # {takesValue, isNumeric} [V value of HSV between 0 and 1] -*** Achromatic [Indicates gray scale] -**** # {takesValue, isNumeric} [White intensity between 0 and 1] -* Nonlinguistic [Something that conveys meaning without using words such as the iconic pictures of a man or a woman on the doors of restrooms. Another example is a deer crossing sign with just a picture of jumping deer.] -* Semantic [Like in priming or in congruence] -* Language -** Unit {predicateType=passThrough} -*** Phoneme -*** Syllable -*** Word -**** Noun -***** Proper [A proper noun that refers to a unique entity such as London or Jupiter] -***** Common [A noun that refers to a class of entities such as cities or planets or corporations such as a Dog or a Skyscraper] -**** Verb -**** Adjective -**** Pseudoword -**** # {takesValue} [Actual word] -*** Sentence -**** Full -**** Partial -**** # {takesValue} [Actual sentence] -*** Paragraph -**** # {takesValue} [Actual paragraph] -*** Story [Multiple paragraphs making a detailed account] -** Family {predicateType=passThrough} -*** Asian -**** Chinese -**** Japanese -*** Latin -**** English -**** German -**** French -* Induced [Such as inducing emotions or keeping someone awake or in a coma with an external intervention] -* Emotional -** Arousal [Only in the context of 2D emotion representation] -*** # {takesValue, isNumeric} [A value between -1 and 1] -** Positive valence [Valence by itself can be the name of an emotion such as sadness so this tag distinguishes the type of emotion] -*** # {takesValue, isNumeric} [Ranges from 0 to 1] -** Negative valence -*** # {takesValue, isNumeric}[Ranges from 0 to 1] -* Priming -** Motoric -** Emotional -** Perceptual -* Subliminal -** Unmasked -** Masked -*** Forward -*** Backward -* Supraliminal [By default this is assumed about each stimulus] -* Liminal [At the 75%-25% perception threshold] -* Probability [Use to specify the level of certainty about the occurrence of the event. Use either numerical values as the child node or low, high, etc.] -* Temporal uncertainty {requireChild} [Use to specify the amount of uncertainty in the timing of the event. Please notice that this is different from Attribute/Probability tag which relates to the occurrence of event and can be interpretative as the integral of probability density across a distribution whose shape (temporal extent) is specified by Attribute/Temporal uncertainty.] -** # {takesValue, isNumeric, unitClass=time} [implies that the temporal uncertainty is a uniform distribution with the amount of time provided, extending on both side. E.g. "0.5 s" specifies a 1-second range centered at event latency.] -** Standard deviation {requireChild} [implies that the distribution of temporal uncertainty is Gaussian with the provided standard deviation (in seconds).] -*** # {takesValue, isNumeric, unitClass=time} -* Presentation {requireChild}[Attributes associated with visual, auditory, tactile, etc. presentation of an stimulus] -** Fraction {requireChild} [the fraction of presentation of an Oddball or Expected stimuli to the total number of same-class presentations, e.g. 10% of images in an RSVP being targets] -*** # {takesValue, isNumeric} -** Cued [what is presented is cued to the presentation of something else] -** Background [presented in the background such as background music, background image, etc. The main factor here is that background presentations are to be ignored, e.g. ignore math question auditory stimuli.] -* Intended effect [This tag is to be grouped with Participant/Effect/Cognitive to specify the intended cognitive effect (of the experimenter). This is to differentiate the resulting group with Participant/Effect which specifies the actual effect on the participant. For example, in an RSVP experiment if an image is intended to be perceived as a target, (Participant/Effect/Cognitive/Target, Attribute/Intended effect) group is added. If the image was perceived by the subject as a target (e.g. they pressed a button to indicate so), then the tag Participant/Effect/Cognitive/Target is also added: Participant/Effect/Cognitive/Target, (Participant/Effect/Cognitive/Target, Attribute/Intended effect). otherwise the Participant/Effect/Cognitive/Target tag is not included outside of the group.] -* Instruction [This tag is placed in events of type Event/Category/Experimental stimulus/Instruction, grouped with one or more Action/ tags to replace the detailed specification XXX in Event/Category/Experimental stimulus/Instruction/XXX) in previous versions. Usage example: Event/Category/Experimental stimulus/Instruction, (Action/Fixate, Attribute/Instruction) ] -* Participant indication [This tag is placed in events of type Event/Category/Participant response and grouped with Participant/Effect/Cognitive/.. tags to specify the type of cognitive effect the participant has experienced. For example, in an RSVP paradigm, the subject can indicate the detection of a target with a button press. The HED string associated with this button press must include (Attribute/Participant indication, Participant/Effect/Cognitive/Target,...)] -* Path {requireChild} -** Velocity [Use Attribute/Onset or Attribute/Offset to specify onset or offset] -*** # {takesValue, isNumeric, unitClass=speed} [Numeric value with default units of m-per-s] -** Acceleration -*** # {takesValue, isNumeric, unitClass=acceleration} [Numeric value with default units of m-per-s2] -** Jerk -*** # {takesValue, isNumeric, unitClass=jerk} [Numeric value with default units of m-per-s3] -** Constrained [For example a path cannot cross some region] -* File {requireChild} [File attributes] -** Name -** Size -*** # {takesValue, isNumeric, unitClass=memorySize} [Numeric value with default units of mb] -** # {takesValue, isNumeric}[Number of files] -* Object control {requireChild} [Specifies control such as for a vehicle] -** Perturb -** Collide -** Near miss [Almost having an accident resulting in negative consequences] -** Correct position [After a lane deviation or side of the walkway] -** Halt [Time at which speed becomes exactly zero] -** Brake -** Shift lane -** Cross [Crossing in front of another object such as a vehicle] -** Pass by [Passing by another object or the participant] -** Accelerate -** Decelerate -* Association {requireChild} -** Another person [Item such as a cup belonging to another person] -** Same person [Item such as a cup belonging to the participant] -* Extraneous [Button presses that are not meaningful for example due to intrinsic mechanical causes after a meaningful press] -* Role {requireChild} [The role of the agent (participant, character, AI..)] -** Leader -** Follower -** # {takesValue} - -'''Action'''{extensionAllowed}[May or may not be associated with a prior stimulus and can be extended] -* Involuntary [Like sneezing or tripping on something or hiccuping] -** Hiccup -** Cough -** Sneeze -** Stumble [Temporary and involuntary loss of balance] -** Fall -** Tether Jerk [When a tether attached to the subject is stuck/snagged and forces the participant to involuntary accommodate/react to it] -** Clear Throat -** Yawn -** Sniffle -** Burp -** Drop [For example something drops from the hand of the subject] -* Make fist -** Open and close [Continue to open and close the fist, for example in motor imagery paradigms.] -* Curl toes -** Open and close [Continue to curl and uncurl toes, for example in motor imagery paradigms.] -* Button press {extensionAllowed} -** Touch screen -** Keyboard -** Mouse -** Joystick -* Button hold [Press a button and keep it pressed] -* Button release -* Cross boundary -** Arrive -** Depart -* Speech -* Hum -* Eye saccade [Use Attribute/Peak for the middle of saccade and Attribute/Onset for the start of a saccade] -* Eye fixation -* Eye blink -** Left base [The time of the first detectable eyelid movement on closing.] -** Left zero [The last time at which the EEG/EOG signal crosses zero during eyelid closing.] -** Left half height [The time at which the EEG/EOG signal reaches half maximum height during eyelid closing.] -** Max [The time at which the eyelid is the most closed.] -** Right half height [The time at which the EEG/EOG signal reaches half maximum height during eyelid opening.] -** Right zero [The first time at which the EEG/EOG signal crosses zero during eyelid opening.] -** Right base [The time of the last detectable eyelid movement on opening.] -* Eye close [Close eyes and keep closed for more than approximately 0.1 s] -** Keep [Keep the eye closed. If a value is provided it indicates the duration for this.] -*** # [The time that eyes are kept closed.]{takesValue, isNumeric, unitClass=time} -* Eye open [Open eyes and keep open for more than approximately 0.1 s] -** Keep [Keep the eye open. If a value is provided it indicates the duration for this.] -*** # [the duration (by default in seconds) that they keep their eye open.]{takesValue, isNumeric, unitClass=time} -*** With blinking [Default. Allow blinking during the eye-open period.] -*** Without blinking [Without blinking during the eye-open period.] -* Turn [Change in direction of movement or orientation. This includes both turn during movement on a path and also rotations such as head turns] -* Point -* Push -* Grab -* Tap [When there is nothing to be pressed for example like tapping a finger on a chair surface to follow a rhythm] -* Lift -* Reach [Requires a goal such as reaching to touch a button or to grab something. Stretching your body does not count as reach.] -** To Grab -** To Touch -* Course correction [Change the direction of a reach in the middle to adjust for a moving target.] -* Interact -** With human -* Take survey -* Stretch [Stretch your body such as when you wake up] -* Bend -* Deep breath -* Laugh -* Sigh -* Groan -* Scratch -* Switch attention -** Intramodal [In the same modality but with a change in details such as changing from paying attention to red dots and instead of blue dots] -*** Visual -*** Auditory -*** Tactile -*** Taste -*** Smell -** Intermodal [Between modalities such as changing from audio to visual] -*** From modality -**** Visual -**** Auditory -**** Tactile -**** Taste -**** Smell -*** To modality -**** Visual -**** Auditory -**** Tactile -**** Taste -**** Smell -* Walk -** Stride [Use onset and offset attributes to indicate different walking stride stages] -** Faster [increasing the speed of walking] -** Slower [decreasing the speed of walking] -* Control vehicle [Controlling an object that you are aboard] -** Drive [Driving a vehicle such as a car] -*** Correct [Correct for a perturbation] -*** Near miss -*** Collide -** Stop [Brake a car] -** Pilot [Pilot a vehicle such as an airplane] -* Teleoperate [Control an object that you are not aboard] -* Allow [Allow access to something such as allowing a car to pass] -* Deny [Deny access to something such as preventing someone to pass] -* Step around -* Step over -* Step on -* Swallow -* Flex -* Evade -* Shrug -* Dance -* Open mouth -* Whistle -* Read -* Attend -* Recall -* Generate -* Repeat -* Hold breath -* Breathe -* Rest -* Count -* Move -** Upper torso -** Lower torso -** Whole body -* Speak -* Sing -* Detect -* Name -* Smile -* Discriminate -* Track -* Encode -* Eye-blink inhibit - -'''Participant''' {predicateType=passThrough} -* ID {requireChild, predicateType=propertyOf} [If not given assume 1] -** # {takesValue, isNumeric} [Numeric value of an ID] -* Effect {extensionAllowed} [How the stimulus effects the participants] -** Cognitive -*** Meaningful -*** Not meaningful -*** Newly learned meaning -*** Reward -**** Low -**** Medium -**** High -**** # {takesValue, isNumeric, unitClass=currency} [Monetary values in some currency such as $10, or the ratio of the reward to the maximum possible (3 of max 10 becomes 0.3), or number Points] -*** Penalty -**** Low -**** Medium -**** High -**** # {takesValue, isNumeric, unitClass=currency} [Absolute monetary values in some currency, for example $1, or the ratio of the reward to the maximum possible (3 of max 10 becomes 0.3), or number of Points] -*** Error -**** Self originated -**** Other originated -***** Human -***** Non-human -**** Expected -**** Unexpected -**** Planned [The error feedback was given regardless of the validity of subject response as in a yoked design] -*** Threat -**** To self -**** To others -***** Close -*** Warning [As in a warning message that you are getting too close to the shoulder in a driving task] -*** Oddball [Unexpected or infrequent] -**** One stimulus [Only oddballs are present but no frequent stimuli exist. See http://dx.doi.org/10.1016/0167-8760(96)00030-X] -**** Two stimuli [There are non-targets and targets. See http://dx.doi.org/10.1016/0167-8760(96)00030-X] -**** Three stimuli [There are regular non-targets and targets and infrequent non-targets, see http://dx.doi.org/10.1016/0167-8760(96)00030-X] -**** Silent counting -**** Button pressing for target -**** Button pressing for all -*** Target [Something the subject is looking for] -*** Non-target [Make sure to tag Expected if the Non-target is frequent] -*** Novel [Genuinely novel such as an event occurring once or so per experiment] -*** Expected [Of low information value, for example frequent Non-targets in an RSVP paradigm] -**** Standard -**** Distractor -*** Valid [Something that is understood to be valid such as an ID matches the person being displayed and it has all the correct information] -*** Invalid [Something that is understood to not be valid such as like an ID with an impossible date-of-birth, or a photo not matching the person presenting it] -*** Congruence -**** Congruent [Like in Stroop paradigm when blue colored text displays the word blue] -**** Incongruent [Like in Stroop paradigm whena blue colored text reading displays the word red] -**** Temporal synchrony -***** Synchronous [When a mouse click sound happens right after clicking it] -***** Asynchronous [When a mouse click sound happens with significant delay which give could the person a strange feeling. Or if in a movie the sound of the explosion is heard before it appears visually.] -*** Feedback -**** Correct [Confirm something went well and last action was correct] -**** Incorrect [Confirm something went wrong and last action was incorrect] -**** Non-informative [Feedback that provides no information in regards to correct, incorrect, etc.] -**** Expected [Feedback was expected as in a positive feedback after a response that was expected to be correct.] -**** Unexpected [Feedback was unexpected as when positive feedback was received when response was expected to be incorrect.] -**** On accuracy [Feedback was provided by evaluating response accuracy] -**** On reaction time [Feedback was provided by evaluating subject reaction time] -**** To self [Observed feedback to self such as in a social paradigm.] -**** To other [Observed feedback to another person such as in a social paradigm.] -**** Deterministic [Feedback has a fixed relationship to what happened before.] -**** Stochastic [Feedback is non-deterministic and does not have fixed relationship with what has happened before in the experiment.] -**** False feedback [Feedback that was not honest for example as in feedback of correct on an incorrect response or vice versa.] -***** Negative [Negative feedback was provided when it was not deserved.] -***** Positive [Positive feedback was provided when it was not deserved.] -*** Cue [An indicator of a future event such as a sound cue that in 2-5 seconds a perturbation in driving will occur.] -**** Constant delay [The cue is for an event that will happen after a constant delay.] -***** # {takesValue, isNumeric, unitClass=time} [The delay value.] -**** Variable delay [The cue is for an event that will happen after a variable delay.] -***** # {takesValue} [The interval of the variable delay.] -** Visual -*** Foveal -*** Peripheral -*** Perturbation [Sudden movement or perturbation of the virtual environment in a car driving or other scenario] -** Auditory -*** Stereo -*** Mono -**** Left -**** Right -** TMS -*** With SPGS [SPGS stands for spatial position guiding system] -*** Without SPGS [SPGS stands for spatial position guiding system] -** Tactile -*** Vibration -*** Acupuncture -*** Eye puff -*** Swab [Mouth swab] -** Vestibular -*** Shaking [being shaken or jerked around] -** Pain -*** Heat -*** Cold -*** Pressure -*** Electric shock -*** Laser-evoked -** Taste -** Smell -** Body part -*** Whole Body -*** Eye -*** Arm -**** Hand -***** Finger -****** Index -****** Thumb -****** Ring -****** Middle -****** Small [Pinkie or little finger] -*** Leg -**** Feet -***** Toes -*** Head -**** Face -***** Eyebrow -***** Lip -***** Forehead -***** Mouth -***** Nose -***** Chin -***** Cheek -*** Torso -* State {extensionAllowed,requireChild} -** Level of consciousness {requireChild} -*** Awake -*** Drowsy -*** Sleep -**** Stage {requireChild} -***** # {takesValue} [a number between 1 to 4, or REM] -*** Drunk -*** Anesthesia -*** Locked-in -*** Coma -*** Vegetative -*** Brain-dead -** Emotion {requireChild} -*** Awe -*** Frustration -*** Joy -*** Anger -*** Happiness -*** Sadness -*** Love -*** Fear -*** Compassion -*** Jealousy -*** Contentment -*** Grief -*** Relief -*** Excitement -*** Disgust -*** Neutral [None of the above] -** Sense of community [Primed to have an emotion such as patriotism] -*** # {takesValue, isNumeric} [SCI stands for Sense of Community Index] -** Sense of social justice -*** Distributive -*** Poverty -*** Inequality -*** Procedural -*** Interpersonal -*** Informational -** Stress level {requireChild} -*** # {takesValue, isNumeric} [A number between 0 and 1] -** Task load {requireChild} -*** # {takesValue, isNumeric} [A number between 0 and 1] -** Under time pressure -*** Response window -**** # {takesValue, isNumeric, unitClass=time} [Default time is seconds.] -*** Competitive [Subject is competing against an opponent as for example when the faster respondent wins] -** Social interaction [Social] -*** Pseudo [Instructed so but actually not as when the other person may not exist in real world such as the case of a computer program agent] -** Passive [There is a stimulus presentation but no behavioral measurements are collected from the subject. Subject is instructed not to make any behavioral outputs for example when told to carefully watch/listen/sense. The resting state is not considered passive.] -** Resting [State when there is no stimulus presentation and no behavioral outputs] -** Attention -*** Top-down [Instructed to pay attention to something explicitly] -*** Bottom-up [something captures your attention, like a big bang or your name] -**** Orienting [The lower state of the bottom-up or the pre-bottom up state] -*** Covert [Implicit] -*** Overt [Explicit] -*** Selective [If you have two circles but asked to pay attention to only one of them] -**** Divided [Attending to more than one object or location] -*** Focused [Paying a lot of attention] -*** Sustained [Paying attention for a continuous time] -*** Auditory -*** Visual -*** Tactile -*** Taste -*** Smell -*** To a location [Spatial -- use the location attribute to specify to where the attention is directed] -*** Arousal {requireChild} -*** Alerting [Keeping the arousal up in order to respond quickly] -*** Drowsy -*** Excited -*** Neutral - - -'''Experiment context''' {requireChild, extensionAllowed} [Describes the context of the whole experiment or large portions of it and also includes tags that are common across all events] -* # {takesValue} [Add common tags across all stimuli/ and/or responses here if all experimental events share /State/Drowsy, you can place it here instead of tagging each event individually ] -* With chin rest -* Sitting -* Standing -* Prone [As in on a bed] -* Running -** Treadmill -* Walking -** Treadmill -* Indoors -** Clinic [Recording in a clinical setting such as in a hospital or medical office] -** Dim Room -* Outdoors -** Terrain -*** Grass -*** Uneven -*** Boardwalk -*** Dirt -*** Leaves -*** Mud -*** Woodchip -*** Rocky -*** Gravel -*** Downhill -*** Uphill -* Motion platform [Subject is on a motion platform such as one that produces simulated car movements] -* Fixed screen -** Distance [Assuming static subject] -*** # {takesValue, isNumeric, unitClass=physicalLength} [Distance from subject eyes to the presentation screen for 30 cm from subject eyes to the monitor] -** Width resolution -*** # {takesValue, isNumeric, unitClass=pixels} -** Height resolution -*** # {takesValue, isNumeric, unitClass=pixels} -* Real world -* Virtual world - -'''Custom''' {requireChild, extensionAllowed} [This node can be used to organize events in an alternative (parallel) hierarchy. You can define your custom tags and hierarchies without any restriction under this node. These tags will still be matched to each other as for example /Custom/Dance/Waltz is considered a subtype of /Custom/DanceExample.] - -'''HED''' {requireChild} [Hierarchical Event Descriptor] -* # {takesValue, isNumeric} [HED specification version number: normally there is no need to specify the version number in the HED string since it will be matched by default to the most recent compliant version, but this tag can be used to specify the exact HED version the HED string was based on.] - -'''Paradigm''' {requireChild, extensionAllowed}[See Tasks in http://www.cognitiveatlas.org/tasks and CogPo definitions of paradigms] -* Action imitation task -* Action observation task -* Acupuncture task -* Adult attachment interview -* Alternating runs paradigm -* Animal naming task -* Antisaccade-prosaccade task -* Attention networks test -* Attentional blink task -* Audio-visual target-detection task -* Autism diagnostic observation schedule -* Ax-cpt task -* Backward digit span task -* Backward masking -* Balloon analogue risk task - BART -* Behavioral investment allocation strategy - BIAS -* Behavioral rating inventory of executive function -* Benton facial recognition test -* Birmingham object recognition battery -* Block design test -* Block tapping test -* Boston naming test -* Braille reading task -* Breath-holding -* Breathhold paradigm -* Brixton spatial anticipation test -* California verbal learning test -* California verbal learning test-ii -* Cambridge face memory test -* Cambridge gambling task -* Cambridge neuropsychological test automated battery -* Catbat task -* Category fluency test -* Cattell culture fair intelligence test -* Chewing-swallowing -* Chimeric animal stroop task -* Choice reaction time task -* Choice task between risky and non-risky options -* Classical conditioning -* Clinical evaluation of language fundamentals-3 -* Color trails test -* Color-discrimination task -* Color-word stroop task -* Complex span test -* Conditional stop signal task -* Conditioning paradigm -** Behavioral conditioning paradigm -** Classical conditioning paradigm -* Continuous performance task -* Continuous recognition paradigm -* Counting stroop task -* Counting-calculation -* Cued explicit recognition -* Cups task -* Deception task -* Deductive reasoning paradigm -* Deductive reasoning task -* Delayed discounting task -* Delayed match to sample task -* Delayed nonmatch to sample task -* Delayed recall test -* Delayed response task -** Delayed matching to sample paradigm -*** Sternberg paradigm -* Devils task -* Dichotic listening task -* Digit cancellation task -* Digit span task -* Digit-symbol coding test -* Directed forgetting task -* Divided auditory attention -* Divided auditory attention paradigm -* Doors and people test -* Dot pattern expectancy task -* Drawing -* Drawing paradigm -* Dual-task paradigm -* Early social communications scales -* Eating paradigm -* Eating-drinking -* Embedded figures test -* Emotional regulation task -* Encoding paradigm -* Encoding task -* Episodic recall -* Episodic recall paradigm -* Eriksen flanker task -* Extradimensional shift task -* Eye Saccade paradigm -** Anti saccade paradigm -** Simple saccade paradigm -* Face monitor-discrimination -* Face n-back task -* Fagerstrom test for nicotine dependence -* Film viewing -* Finger tapping task -* Fixation task -* Flashing checkerboard -* Flexion-extension -* Forward digit span task -* Free word list recall -* Glasgow coma scale -* Go-no-go task -* Grasping task -* Gray oral reading test - 4 -* Haptic illusion task -* Hayling sentence completion test -* Heat sensitization-adaptation -* Heat stimulation -* Hooper visual organization test -* ID screening [Visual examination of multiple fields of an ID or document to detect invalid or suspicious fields. For example at a security checkpoint.] -* Imagined emotion -* Imagined movement -* Imagined objects-scenes -* Instructed movement -* Immediate recall test -* Inductive reasoning aptitude -* International affective picture system -* Intradimensional shift task -* Ishihara plates for color blindness -* Isometric force -* Item recognition paradigm -** Serial item recognition paradigm -* Item recognition task -* Kanizsa figures -* Keep-track task -* Letter comparison -* Letter fluency test -* Letter naming task -* Letter number sequencing -* Lexical decision task -* Listening span task -* Macauthur communicative development inventory -* Machine failure detection task -* Matching familiar figures test -* Matching pennies game -* Maudsley obsessive compulsive inventory -* Mechanical stimulation -* Memory span test -* Mental rotation task -* Micturition task -* Mini mental state examination -* Mirror tracing test -* Mismatch negativity paradigm -* Mixed gambles task -* Modified erikson scale of communication attitudes -* Morris water maze -* Motor sequencing task -* Music comprehension-production -* N-back task -** Letter n-back task -* Naming -** Covert -** Overt -* Nine-hole peg test -* Non-choice task to study expected value and uncertainty -* Non-painful electrical stimulation -* Non-painful thermal stimulation -* Nonword repetition task -* Object alternation task -* Object-discrimination task -* Oculomotor delayed response -* Oddball discrimination paradigm -** Auditory oddball paradigm -** Visual oddball paradigm -*** Rapid serial visual presentation -* Oddball task -* Olfactory monitor-discrimination -* Operation span task -* Orthographic discrimination -* Paced auditory serial addition test -* Pain monitor-discrimination task -* Paired associate learning -* Paired associate recall -* Pantomime task -* Parrott scale -* Passive listening -* Passive viewing -* Pattern comparison -* Perturbed driving -* Phonological discrimination -* Picture naming task -* Picture set test -* Picture-word stroop task -* Pitch monitor-discrimination -* Pointing -* Porteus maze test -* Positive and negative affect scale -* Posner cueing task -* Probabilistic classification task -* Probabilistic gambling task -* Probabilistic reversal learning -* Pseudoword naming task -* Psychomotor vigilance task -* Pursuit rotor task -* Pyramids and palm trees task -* Rapid automatized naming test -* Rapid serial object transformation -* Reading - Covert -* Reading - Overt -* Reading paradigm -** Covert braille reading paradigm -** Covert visual reading paradigm -* Reading span task -* Recitation-repetition - Covert -* Recitation-repetition - Overt -* Remember-know task -* Response mapping task -* Rest -** Rest eyes open -** Rest eyes closed -* Retrieval-induced forgetting task -* Reversal learning task -* Reward task -* Rey auditory verbal learning task -* Rey-ostereith complex figure test -* Reynell developmental language scales -* Rhyme verification task -* Risky gains task -* Rivermead behavioural memory test -* [extend here] - -!# end schema - - -'''Unit classes''' -* acceleration {defaultUnits=m-per-s^2} -** m-per-s^2 {SIUnit, unitSymbol} -* angle {defaultUnits=radian} -** radian {SIUnit} -** rad {SIUnit, unitSymbol} -** degree -* area {defaultUnits=m^2} -** m^2 {SIUnit, unitSymbol} -** px^2 {unitSymbol} -** pixel^2 -* currency {defaultUnits=$, allowedCharacter=$} -** dollar -** $ {unitSymbol} -** point -* dateTime {defaultUnits=YYYY-MM-DDThh:mm:ss, allowedCharacter=:,allowedCharacter=-} -** YYYY-MM-DDThh:mm:ss [Date-times should conform to ISO8601 date-time format. Any variation on the full form is allowed.] -* frequency {defaultUnits=Hz} -** hertz {SIUnit} -** Hz {SIUnit, unitSymbol} -* intensity {defaultUnits=dB} -** dB {unitSymbol} -* jerk {defaultUnits=m-per-s^3} -** m-per-s^3 {unitSymbol} -* luminousIntensity {defaultUnits=cd} -** candela {SIUnit} -** cd {SIUnit, unitSymbol} -* memorySize {defaultUnits=B} -** byte {SIUnit} -** B {SIUnit, unitSymbol} -* posixPath {allowedCharacter=/,allowedCharacter=:}[Posix path specification.] -* physicalLength {defaultUnits=m} -** metre {SIUnit} -** m {SIUnit, unitSymbol} -** foot -** mile -* pixels {defaultUnits=px} -** pixel -** px {unitSymbol} -* speed {defaultUnits=m-per-s} -** m-per-s {SIUnit, unitSymbol} -** mph {unitSymbol} -** kph {unitSymbol} -* time {defaultUnits=s} -** second {SIUnit} -** s {SIUnit, unitSymbol} -** day -** minute -** hour [Should be in 24-hour format.] -* volume {defaultUnits=m^3} -** m^3 {SIUnit, unitSymbol} - - -'''Unit modifiers''' -* deca {SIUnitModifier} [SI unit multiple representing 10^1] -* da {SIUnitSymbolModifier} [SI unit multiple representing 10^1] -* hecto {SIUnitModifier} [SI unit multiple representing 10^2] -* h {SIUnitSymbolModifier} [SI unit multiple representing 10^2] -* kilo {SIUnitModifier} [SI unit multiple representing 10^3] -* k {SIUnitSymbolModifier} [SI unit multiple representing 10^3] -* mega {SIUnitModifier} [SI unit multiple representing 10^6] -* M {SIUnitSymbolModifier} [SI unit multiple representing 10^6] -* giga {SIUnitModifier} [SI unit multiple representing 10^9] -* G {SIUnitSymbolModifier} [SI unit multiple representing 10^9] -* tera {SIUnitModifier} [SI unit multiple representing 10^12] -* T {SIUnitSymbolModifier} [SI unit multiple representing 10^12] -* peta {SIUnitModifier} [SI unit multiple representing 10^15] -* P {SIUnitSymbolModifier} [SI unit multiple representing 10^15] -* exa {SIUnitModifier} [SI unit multiple representing 10^18] -* E {SIUnitSymbolModifier} [SI unit multiple representing 10^18] -* zetta {SIUnitModifier} [SI unit multiple representing 10^21] -* Z {SIUnitSymbolModifier} [SI unit multiple representing 10^21] -* yotta {SIUnitModifier} [SI unit multiple representing 10^24] -* Y {SIUnitSymbolModifier} [SI unit multiple representing 10^24] -* deci {SIUnitModifier} [SI unit submultiple representing 10^-1] -* d {SIUnitSymbolModifier} [SI unit submultiple representing 10^-1] -* centi {SIUnitModifier} [SI unit submultiple representing 10^-2] -* c {SIUnitSymbolModifier} [SI unit submultiple representing 10^-2] -* milli {SIUnitModifier} [SI unit submultiple representing 10^-3] -* m {SIUnitSymbolModifier} [SI unit submultiple representing 10^-3] -* micro {SIUnitModifier} [SI unit submultiple representing 10^-6] -* u {SIUnitSymbolModifier} [SI unit submultiple representing 10^-6] -* nano {SIUnitModifier} [SI unit submultiple representing 10^-9] -* n {SIUnitSymbolModifier} [SI unit submultiple representing 10^-9] -* pico {SIUnitModifier} [SI unit submultiple representing 10^-12] -* p {SIUnitSymbolModifier} [SI unit submultiple representing 10^-12] -* femto {SIUnitModifier} [SI unit submultiple representing 10^-15] -* f {SIUnitSymbolModifier} [SI unit submultiple representing 10^-15] -* atto {SIUnitModifier} [SI unit submultiple representing 10^-18] -* a {SIUnitSymbolModifier} [SI unit submultiple representing 10^-18] -* zepto {SIUnitModifier} [SI unit submultiple representing 10^-21] -* z {SIUnitSymbolModifier} [SI unit submultiple representing 10^-21] -* yocto {SIUnitModifier} [SI unit submultiple representing 10^-24] -* y {SIUnitSymbolModifier} [SI unit submultiple representing 10^-24] - -'''Value classes''' [Specification of the rules for the values provided by users.] - -'''Schema attributes''' -* allowedCharacter {unitClassProperty}[An attribute of unit classes schema value placeholders indicating a special character that is allowed in expressing the value of that placeholder.] -* defaultUnits {unitClassProperty}[An attribute of unit classes specifying the default units for a tag.] -* extensionAllowed {boolProperty}[Users can add unlimited levels of child nodes under this tag.] -* isNumeric {boolProperty}[The tag hashtag placeholder must be replaced by a numerical value.] -* position [Used to specify the order of the required and recommended tags in canonical order for display. The position attribute value should be an integer and the order can start at 0 or 1. Required or recommended tags without this attribute or with negative position will be shown after the others in canonical ordering.] -* predicateType [One of propertyOf, subclassOf, passThrough -- used to facilitate mapping to OWL or RDF.] -* recommended {boolProperty}[A HED string tagging an event is recommended to include this tag.] -* requireChild {boolProperty}[One of its descendants must be chosen to tag an event.] -* required {boolProperty}[Every HED string tagging an event should include this tag.] -* SIUnit {boolProperty, unitClassProperty}[Designates the name of an SI unit so it can be modified by multiple and submultiple names. Note that some units such as byte are designated as SI units although they are not part of the standard.] -* SIUnitModifier {boolProperty, unitModifierProperty}[SI unit modifier indicating a multiple or submultiple of a base unit.] -* SIUnitSymbolModifier {boolProperty, unitModifierProperty}[SI unit symbol modifier indicating a multiple or submultiple of a base unit symbol.] -* takesValue {boolProperty}[This tag will have a hashtag placeholder child in the schema which is expected to be replaced with a user-defined value.] -* unique {boolProperty}[Only one of this tag or its descendants can be used within a single tag group or event.] -* unitClass [Schema attribute specifying which unit class this value tag belongs to.] -* unitSymbol {boolProperty, unitClassProperty}[Abbreviation or symbol representing a type of unit. Unit symbols represent both the singular and the plural and thus cannot be pluralized.] - -'''Properties''' [Properties of the schema attributes themselves. These are used for schema handling and verification.] - -'''Epilogue''' -Note: This is the new version of the .mediawiki designed to support prologues and epilogues. - +HED version="7.3.0" + +'''Prologue''' +Changelog +* 5/08/2021: v7.3.0 Added unitClass as an attribute +* 4/20/2021: v.7.3.0 Removed default as a valid attribute. Added schema attribute properties. +* 3/16/2021: v.7.2.0 Adopted the new format for mediawiki files. +* 11/22/2020: v. 7.1.2 Add extensionAllowed to top-level Item subtree. +* 7/27/2020: v. 7.1.1 Corrected extensionAllowed on several top-level and second-level items. Removed extra h:m from clockTime. Removed unitSymbol from clockTime. Added dateTime unit class. +* 5/9/2020: Added the clockTime unit class +* 4/25/2020: v. 7.1.0 Added unit modifiers and updated unit classes to support SI units. +* 9/29/2019: v. 7.0.5: Added Visual/Rendering type/Screen/Head-mounted display. Added extensionAllowed to Sensory presentation. Added Tone and Genre under Sensory presentation/Auditory/Music. +* 8/18/2019: v. 7.0.4: Added extensionsAllowed to Custom and removed extensionsAllowed from nodes under Attribute and Item/Object. Also replaced per-sec with per-s in units. +* 7/8/2019: v. 7.0.3: Removed the extra Action/Turn node. +* 5/18/2019: v. 7.0.2: Added centisecond and millisecond as valid time units. +* 3/7/2018: v. 7.0.1: Added Paradigm/Psychomotor vigilance task. +* 2/15/2018: v. 7.0.0: Removed parentheses from some paradigm tags (used hyphens instead) +* 1/11/2018: v. 6.0.5: Changed unit class for a number of values from velocity to speed. +* 8/4/2017: v. 6.0.4: Added Machine failure detection task to paradigms list. +* 7/20/2017: v. 6.0.3: Removed Action observation paradigm since there is already Action observation task. +* 7/17/2017: v. 6.0.2: Added Attribute/Object control/Accelerate and Attribute/Object control/Decelerate. Also added a description for extensionAllowed. +* 7/14/2017: v. 6.0.1: Replaced Item/Natural scene/Arial with Item/Natural scene/Aerial. +* 7/13/2017: v. 6.0.0: Replaced XXX in Event/Category/Experimental stimulus/Instruction/XXX with Event/Category/Experimental stimulus plus (Attribute/Instruction, Action/XXX). Moved a number of instructions under Action/. Also added Rest eyes open', Rest eyes closed and Imagined emotion paradigms. Removed Action/Imagine and instead one should use Attribute/Imagined. +* 6/22/2017: v. 5.2.3: Added clarification for Attribute/Background (stimuli to be ignored) +* 3/22/2017: v. 5.2.2: Fixed the missing [ in Attribute/Imagined. +* 3/16/2017: v. 5.2.1: Added Action/Interact, Action/Interact/With human, Action/Take survey, Action/Eye blink/Left base, Left zero, Left half height, Right half height, Right zero, right base. +* 3/7/2017, v 5.1.1: Added Attribute/Blink/Duration and fixed some issues. +* 2/16/2017, v 5.0.0: Changed Attribute/Presentation fraction to Attribute/Presentation/Fraction and added a few other attributes under Attribute/Presentation. Removed Participant/Role and and added Attribute/Role. +* 2/9/2017, v 4.0.5: added Paradigm/ID screening tag and moved language n-back under n-back paradigm. Also moved Flickering/rate to Attribute/Temporal rate. +* 2/2/2017, v 4.0.4: moved Height and Width from Experiment/Context/Fixed screen/ to under Attribute/ +* 1/31/2017, v 4.0.3: added Attribute/Condition. +* 1/5/2017, v. 4.0.2: fixed description in Sentence and Paragraph +* 12/1/2016, v. 4.0.1: added Blink action and attributes. +* 11/10/2016, v. 4.0.0: changed "Event/Sequence group id" to "Event/Group ID". Added "Paradigm/Instructed movement", "Attribute/Response start delay" and "Attribute/Response end delay". +* 9/19/2016: Typo in Custom tag description fixed. +* 9/8/2016: Added Attribute/Action judgment/Indeterminate. +* 9/6/2016: Added Attribute/Imagined +* 9/6/2016 Added back Experiment control/Activity/Participant action.in +* 9/1/2016: Added Eyes open/Keep,Eyes close/Keep. Added Action/Make fist Action/Curl toes. MAJOR: moved Participant action/... from Event/Category/Experiment control/Activity to under Attribute/Activity judgment/. This is a backward incompatible change. +* 8/4/2016: Added Attribute/Participant indication tag. +* 7/21/2016: Added Attribute/Intended effect tag. This can be used e.g. to specify an image in an RSVP experiment where it was intended to be perceived as a target (but it may not have by the subject). +* 6/22/2016: Added Attribute/Temporal uncertainty tag along with its child nodes. Also required a child for Attribute/Presentation fraction tag. +* 6/16/2016: Added sleep stages. +* 5/23/2016: Added more description to Attribute/Probability, allowing text values like low and high in addition to numerical values between 0 and 1. +* 3/31/2016: Added constant and variable delays under Participant/Effect/Cognitive/Cue. +* 3/10/2016: +** Added Non-informative under Cognitive/Feedback +** Added Cue under Cognitive +* 2/25/2016: +** Removed /Participant/Effect/Cognitive/Oddball/Three stimuli/Target +** Moved Non-target from under Expected to the same level as Target, this is because in Three stimuli oddball paradigm the Non-targets are oddballs and hence not expected. +** Note: user are encouraged to add Expected and Oddball tags when tagging targets and non-targets +** Added Presentation fraction + +HED tags can only be separated by commas. Use semicolons (;) instead of commas in event descriptions since otherwise extra commas could confuse HED parsers. +From version 2.2, HED adheres to http://semver.org/ versioning. + +!# start schema + +'''Event''' +* Category {required, requireChild, predicateType=passThrough, position=1} [This is meant to designate the reason this event was recorded] +** Initial context [The purpose is to set the starting context for the experiment --- and if there is no initial context event---this information would be stored as a dataset tag] +** Participant response [The purpose of this event was to record the state or response of a participant. Note: participant actions may occur in other kinds of events, such as the experimenter records a terrain change as an event and the participant happens to be walking. In this case the event category would be Environmental. In contrast, if the participant started walking in response to an instruction or to some other stimulus, the event would be recorded as Participant response] +** Technical error [Experimenters forgot to turn on something or the cord snagged and something may be wrong with the data] +*** # {takesValue} [Description as string] +** Participant failure [Situation in which participant acts outside of the constraints of the experiment -- such as driving outside the boundary of a simulation experiment or using equipment incorrectly] +*** # {takesValue} [Description as string] +** Environmental [Change in experimental context such as walking on dirt versus sidewalk] +*** # {takesValue} [Description as a string] +** Experimental stimulus +*** Instruction +** Experimental procedure [For example doing a saliva swab on the person] +*** # {takesValue}[Description as string] +** Incidental [Not a part of the task as perceived by/instructed to the participant --- for example an airplane flew by and made noise or a random person showed up on the street] +*** # {takesValue}[Description as string] +** Miscellaneous [Events that are only have informational value and cannot be put in other event categories] +*** # {takesValue}[Description as a string] +** Experiment control [Information about states and events of the software program that controls the experiment] +*** Sequence{predicateType=propertyOf} +**** Permutation ID {requireChild} +***** # {takesValue} [Permutation number/code used for permuted experiment parts] +**** Experiment [Use Attribute/Onset and Attribute/Offset to indicate start and end of the experiment] +**** Block [Each block has the same general context and contains several trials -- use Attribute/Onset and Attribute/Offset to specify start and end] +***** # {takesValue} [Block number or identifier] +**** Trial [Use Attribute/Onset and Attribute/Offset to specify start and end] +***** # {takesValue} [Trial number or identifier] +**** Pause [Use Attribute/Onset and Attribute/Offset to specify start and end] +*** Task +**** # {takesValue} [Label here] +*** Activity [Experiment-specific actions such as moving a piece in a chess game] +**** Participant action +*** Synchronization [An event used for synchronizing data streams] +**** Display refresh +**** Trigger +**** Tag {predicateType=propertyOf} +***** # {takesValue} [Actual tag: string or integer] +*** Status +**** Waiting for input +**** Loading +**** Error +*** Setup +**** Parameters {predicateType=propertyOf} +***** # {takesValue} [Experiment parameters in some a string. Do not used quotes.] +* ID {predicateType=propertyOf} [A number or string label that uniquely identifies an event instance from all others in the recording (a UUID is strongly preferred).] +** # {takesValue} [ID of the event] +* Group ID {predicateType=propertyOf} [A number or string label that uniquely identifies a group of events associated with each other.] +** # {takesValue} [ID of the group] +* Duration {requireChild, predicateType=propertyOf} [An offset that is implicit after duration time passed from the onset] +** # {takesValue, isNumeric, unitClass=time} +* Description {requireChild, required, unique, predicateType=propertyOf, position=3}[Same as HED 1.0 description for human-readable text] +** # {takesValue} +* Label {requireChild, required, unique, predicateType=propertyOf, position=0} [A label for the event that is less than 20 characters. For example /Label/Accept button. Please note that the information under this tag is primarily not for use in the analysis and is provided for the convenience in referring to events in the context of a single study. Please use Custom tag to define custom event hierarchies. Please do not mention the words Onset or Offset in the label. These should only be placed in Attribute/Onset and Attribute/Offset. Software automatically generates a final label with (onset) or (offset) in parentheses added to the original label. This makes it easier to automatically find onsets and offsets for the same event.] +** # {takesValue} +* Long name {requireChild, unique, predicateType=propertyOf, position=2} [A long name for the event that could be over 100 characters and could contain characters like vertical bars as separators. Long names are used for cases when one wants to encode a lot of information in a single string such as Scenario | VehiclePassing | TravelLaneBLocked | Onset]. +** # {takesValue} + +'''Item''' {extensionAllowed} +* ID {requireChild, predicateType=propertyOf} [Optional] +** # {takesValue} +** Local [For IDs with local scope --- that is IDs only defined in the scope of a single event. The local ID 5 in events 1 and 2 may refer to two different objects. The global IDs directly under ID/ tag refer to the same object through the whole experiment] +*** # {takesValue} +* Group ID {requireChild, predicateType=propertyOf} [Optional] +** # {takesValue} +* Object [Visually discernable objects. This item excludes sounds that are Items but not objects] +** Vehicle +*** Bicycle +*** Car +*** Truck +*** Cart +*** Boat +*** Tractor +*** Train +*** Aircraft +**** Airplane +**** Helicopter +** Person +*** Pedestrian +*** Cyclist +*** Mother-child +*** Experimenter +** Animal +** Plant +*** Flower +*** Tree +**** Branch +**** Root +** Building +** Food +*** Water +** Clothing +*** Personal [clothing that is on the body of the subject] +** Road sign +** Barrel +** Cone +** Speedometer +** Construction zone +** 3D shape +** Sphere +** Box +*** Cube +* 2D shape [Geometric shapes] +** Ellipse +*** Circle +** Rectangle +*** Square +** Star +** Triangle +** Gabor patch +** Cross [By default a vertical-horizontal cross. For a rotated cross add Attribute/Object orientation/Rotated/ tag] +** Single point +** Clock face [Used to study things like hemispheric neglect. The tag is related to the clock-drawing-test] +*** # {takesValue, unitClass=clockTime} +* Pattern +** Checkerboard +** Abstract +** Fractal +** LED +** Dots +*** Random dot +** Complex +* Face +** Whole face with hair +** Whole face without hair +** Cut-out +** Parts only +*** Nose +*** Lips +*** Chin +*** Eyes +**** Left only +**** Right only +* Symbolic [Something that has a meaning, could be linguistic or not such as a stop signs.] +** Braille character +** Sign [Like the icon on a stop sign. This should not to be confused with the actual object itself.] +*** Traffic +**** Speed limit +***** # {takesValue, isNumeric, unitClass=speed} [Always give units e.g. mph or kph] +** Character +*** Digit +*** Pseudo-character [Alphabet-like but not really] +*** Letter [Authograph or valid letters and numbers such as A or 5] +**** # {takesValue} +** Composite [Has multiple of the above on it] +* Natural scene +** Aerial +*** Satellite +* Drawing [Cartoon or sketch] +** Line drawing +* Film clip +** Commercial TV +** Animation +* IAPS [International Affective Picture System] +* IADS [International Affective Digital Sounds] +* SAM [The Self-Assessment Manikin] + +'''Sensory presentation {extensionAllowed} [Object manifestation]''' + +* Auditory [Sound] +** Nameable +** Cash register +** Ding [Often associated with positive valence] +** Buzz [Often associated with negative valence] +** Fire alarm +** Click +*** ABR [Auditory Brainstem Response] +** Tone +** Siren +** Music +*** Chord sequence +*** Vocal +*** Instrumental +*** Tone +*** Genre +** Noise +*** White +*** Colored [Not white --- for example a 1/f spectrum] +** Human voice +** Animal voice {extensionAllowed} +*** Bird +*** Dog +*** Insect +*** Squirrel + +** Real world [For example people walking or machines operating] +*** Pedestrian +*** Footsteps +**** Walking +**** Running +*** Noisemaker +*** Construction noise +*** Machine +*** Vehicle +**** Horn +**** Aircraft +***** Airplane +***** Helicopter +**** Train +**** Cart +**** Car alarm +**** Car +**** Bicycle +** Nonverbal vocal +*** Emotional +**** Crying +**** Sighing +*** Gulp +*** Gurgle +*** Sneeze +*** Cough +*** Yawn +** Nonvocal [A car engine or gears grinding --- anything that is not made by a human or an animal] +*** Engine +* Olfactory [Odor] +* Taste +* Tactile [Pressure] +* Visual +** Rendering type {requireChild, predicateType=passThrough} +*** Screen +**** Head-mounted display +**** View port [Two or more views on the same object --- for example one from top one from street view] +***** ID {predicateType=passThrough} +****** # {takesValue} [A descriptive label for the viewport] +**** 2D +**** 3D +**** Movie +***** Video-tape +***** Motion-capture [Stick figure of motion capture of someone else] +****** Point light +****** Stick figure +****** Outline +***** Flickering +***** Steady state +*** Real-world +*** LED [Stimulus is turning on/off one or a few LEDs] + +'''Attribute''' {requireChild, extensionAllowed} +* Onset [Event is assumed to be an onset event if this attribute not present.] +* Offset +* Imagined [This is used to identity that the (sub)event only happened in the imagination of the participant, e.g. imagined movements in motor imagery paradigms.] +* State ID {requireChild} [This is used to identify a group of events that are changing the state of a variable where the onset means the offset of any other and a change in the state] +** # {takesValue} [ID which could be a number or any string] +* Repetition {requireChild} [When the same type of event such as a fixation on the exact same object happens multiple times and it might be necessary to distinguish the first look vs. others] +** # {takesValue, isNumeric} [Number starting from 1 where 1 indicates the first occurrence and 2 indicates the second occurrence] +* Temporal rate {predicateType=propertyOf} +** # {takesValue, isNumeric, unitClass=frequency} [In Hz] +* Condition {requireChild} [Specifies the value of an independent variable (number of letters, N, in an N-back task) or function of independent variables that is varied or controlled for in the experiment. This attribute is often specified at the task level and can be associated with specification of an experimental stimulus or an experiment context (e.g. 1-back, 2-back conditions in an N-back task, or changing the target type from faces to houses in a Rapid Serial Visual Presentation, or RSVP, task.)] +** # {takesValue} [the condition] +* Action judgment [External judgment (assumed to be ground truth, e.g. from an experiment control software or an annotator) about participant actions such as answering a question, failing to answer in time, etc.] +** Correct +** Incorrect [Wrong choice but not time out] +** Indeterminate [It cannot be determined that the action was correct or incorrect.] +** Time out +*** Missed [Participant failed or could not have perceived the instruction due to their eyes being off-screen or a similar reason. Not easy to deduce this but it is possible] +** Inappropriate [A choice that is not allowed such as moving a chess piece to a location it should not go based on game rules] +* Response start delay [The time interval between this (stimulus) event and the start of the response event specified, usually by grouping with the event ID of the response start event.] +** # {takesValue, unitClass=time} +* Response end delay [The time interval between this (stimulus) event and the end of the response event specified, usually by grouping with the event ID of the response end event.] +** # {takesValue, unitClass=time} +* Social [Involving interactions among multiple agents such as humans or dogs or robots] +* Peak [Peak velocity or acceleration or jerk] +* Object side {requireChild} [Could be the left, right, or both sides of a person or a vehicle] +** Reference object ID {requireChild,predicateType=propertyOf}[Place object ID after this] +*** # {takesValue} +** Right +** Left +** Front +** Back +** Top +** Bottom +** Starboard +** Port +** Passenger side [Side of a car] +** Driver side [Side of a car] +** Bow [Front of a ship] +** Stern [Back of the ship] +* Direction {requireChild} [Coordinate system is inferred from Attribute/Location. To specify a vector combine subnodes with number --- for example Attribute/Top/10, Attribute/Direction/Left/5 to create a vector with coordinates 10 and 5] +** Top [Combine Attribute/Direction/Top and Attribute/Direction/Left to mean the upper left] +*** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} +** Bottom +*** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} +** Left +*** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} +** Right +*** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} +** Angle [Clockwise angle in degrees from vertical] +*** # {takesValue, isNumeric, unitClass=angle} [Clockwise angle in degrees from vertical] +** North +*** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} +** South +*** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} +** East +*** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} +** West +*** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} +** Forward [Like a car moving forward] +** Backward [Like a car moving backward] +* Location {requireChild} [Spot or center of an area. Use Area were you are referring to something with significant extent and emphasizing its boundaries, like a city] +** # {takesValue} [location label] +** Screen [Specify displacements from each subnode in pixels or degrees or meters. Specify units such as Attribute/Location/Screen/Top/12 px] +*** Center +**** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} +*** Top [You can combine Attribute/Location/Top and Attribute/Location/Left to designate UpperLeft and so on] +**** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} +*** Bottom +**** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} +*** Left +**** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} +*** Right +**** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength, unitClass=pixels} +*** Angle +**** # {takesValue, isNumeric, unitClass=angle} [Clockwise angle in degrees from vertical] +*** Center displacement +**** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength} [displacement from screen center, in any direction, in degrees, cm, or other lengths] +**** Horizontal +***** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength} [Displacement from screen center in any direction] +**** Vertical +***** # {takesValue, isNumeric, unitClass=angle, unitClass=physicalLength}[Displacement from screen center in any direction] +** Lane [For example a car lane] +*** Rightmost +*** Leftmost +*** Right of expected +*** Left of expected +*** Cruising +*** Passing [The lane that cars use to take over other cars] +*** Oncoming +** Real-world coordinates {requireChild} +*** Room +**** xyz {requireChild} [have a subnode, e.g. Attribute/Location/Real-world coordinates/Room/xyz/10-50-30] +***** # {takesValue} +** Reference frame {requireChild} +*** Specified absolute reference +*** Relative to participant +**** Participant ID {requireChild} +***** # {takesValue} +**** Left +**** Front +**** Right +**** Back +**** Distance {requireChild} +***** # {takesValue, isNumeric, unitClass=physicalLength} [Distance is in meters by default] +***** Near +***** Moderate +***** Far +**** Azimuth {requireChild} +***** # {takesValue, isNumeric, unitClass=angle} [Clockwise with units preferably in degrees] +**** Elevation {requireChild} +***** # {takesValue, isNumeric, unitClass=angle} [Preferably in degrees] +* Object orientation {requireChild} +** Rotated +*** Degrees {requireChild} +**** #{takesValue, isNumeric, unitClass=angle}[Preferably in degrees] +* Size {requireChild} +** Length{requireChild} +*** # {takesValue, isNumeric, unitClass=physicalLength} [In meters or other units of length ] +** Width +*** # {takesValue, isNumeric, unitClass=physicalLength} [in meters] +** Height +*** # {takesValue, isNumeric, unitClass=physicalLength} [Default units are meters] +** Area {requireChild} +*** # {takesValue, isNumeric, unitClass=area} +** Volume {requireChild} +*** # {takesValue, isNumeric, unitClass=volume} [In cubic-meters or other units of volume] +** Angle{requireChild} +*** # {takesValue, isNumeric, unitClass=angle} [In degrees or other units of angle] +* Item count {requireChild} [Number of items for example when there are 3 cars and they are identified as a single item] +** # {takesValue, isNumeric} [Numeric value of number of items #] +** <=# {takesValue, isNumeric} [Number of items less than or equal to #] +** >=# {takesValue, isNumeric} [Number of items more than or equal to #] +* Auditory +** Frequency {requireChild} +*** # {takesValue, isNumeric, unitClass=frequency} [In HZ] +** Loudness {requireChild} +*** # {takesValue, isNumeric, unitClass=intensity} [in dB] +** Ramp up [Increasing in amplitude] +** Ramp down [Decreasing in amplitude] +* Blink +** Time shut {requireChild} [The amount of time the eyelid remains closed (typically measured as 90% of the blink amplitude), in seconds.] +*** # {takesValue, isNumeric, unitClass=time} +** Duration {requireChild} [Duration of blink usually the half-height blink duration in seconds taken either from base or zero of EEG signal. Eye-trackers usually use duration to mean the interval during which the pupil covered by eyelid.] +***# {takesValue, isNumeric, unitClass=time} +** PAVR {requireChild} [Amplitude-Velocity ratio in centiseconds] +*** # {takesValue, isNumeric, unitClass=time} +** NAVR {requireChild} [Negative Amplitude-Velocity ratio in centiseconds] +*** # {takesValue, isNumeric, unitClass=time} +* Visual +** Bistable +** Background +** Foreground +** Up-down separated [Stimuli presented both at the top and the bottom of fovea] +*** # {takesValue, isNumeric, unitClass=angle} [Angle of separation in degrees by default.] +** Bilateral [For bilateral visual field stimulus presentations] +*** # {takesValue, isNumeric, unitClass=angle} [Angle of separation in degrees by default.] +** Motion +*** Down +**** # {takesValue, isNumeric, unitClass=speed} [e.g. 3 degrees-per-second] +*** Up +**** # {takesValue, isNumeric, unitClass=speed} [e.g. 3 degrees-per-second] +*** Horizontal +**** Right +***** # {takesValue, isNumeric, unitClass=speed} [e.g. 3 degrees-per-second] +**** Left +***** # {takesValue, isNumeric, unitClass=speed} [e.g. 3 degrees-per-second] +*** Oblique +**** Clock face +***** # {takesValue, unitClass=time} [For example 4:30] +** Fixation point +** Luminance {requireChild} +*** # {takesValue, isNumeric, unitClass=luminousIntensity}[In candelas by default.] +** Color {requireChild} +*** Dark +*** Light +*** Aqua [These are CSS 3 basic color names] +*** Black +*** Fuchsia +*** Gray +*** Lime +*** Maroon +*** Navy +*** Olive +*** Purple +*** Silver +*** Teal +*** White +*** Yellow +*** Red +**** # {takesValue, isNumeric} [R value of RGB between 0 and 1] +*** Blue +**** # {takesValue, isNumeric} [B value of RGB between 0 and 1] +*** Green +**** # {takesValue, isNumeric} [G value of RGB between 0 and 1] +*** Hue {requireChild} +**** # {takesValue, isNumeric} [H value of HSV between 0 and 1] +*** Saturation {requireChild} +**** # {takesValue, isNumeric} [S value of HSV between 0 and 1] +*** Value {requireChild} +**** # {takesValue, isNumeric} [V value of HSV between 0 and 1] +*** Achromatic [Indicates gray scale] +**** # {takesValue, isNumeric} [White intensity between 0 and 1] +* Nonlinguistic [Something that conveys meaning without using words such as the iconic pictures of a man or a woman on the doors of restrooms. Another example is a deer crossing sign with just a picture of jumping deer.] +* Semantic [Like in priming or in congruence] +* Language +** Unit {predicateType=passThrough} +*** Phoneme +*** Syllable +*** Word +**** Noun +***** Proper [A proper noun that refers to a unique entity such as London or Jupiter] +***** Common [A noun that refers to a class of entities such as cities or planets or corporations such as a Dog or a Skyscraper] +**** Verb +**** Adjective +**** Pseudoword +**** # {takesValue} [Actual word] +*** Sentence +**** Full +**** Partial +**** # {takesValue} [Actual sentence] +*** Paragraph +**** # {takesValue} [Actual paragraph] +*** Story [Multiple paragraphs making a detailed account] +** Family {predicateType=passThrough} +*** Asian +**** Chinese +**** Japanese +*** Latin +**** English +**** German +**** French +* Induced [Such as inducing emotions or keeping someone awake or in a coma with an external intervention] +* Emotional +** Arousal [Only in the context of 2D emotion representation] +*** # {takesValue, isNumeric} [A value between -1 and 1] +** Positive valence [Valence by itself can be the name of an emotion such as sadness so this tag distinguishes the type of emotion] +*** # {takesValue, isNumeric} [Ranges from 0 to 1] +** Negative valence +*** # {takesValue, isNumeric}[Ranges from 0 to 1] +* Priming +** Motoric +** Emotional +** Perceptual +* Subliminal +** Unmasked +** Masked +*** Forward +*** Backward +* Supraliminal [By default this is assumed about each stimulus] +* Liminal [At the 75%-25% perception threshold] +* Probability [Use to specify the level of certainty about the occurrence of the event. Use either numerical values as the child node or low, high, etc.] +* Temporal uncertainty {requireChild} [Use to specify the amount of uncertainty in the timing of the event. Please notice that this is different from Attribute/Probability tag which relates to the occurrence of event and can be interpretative as the integral of probability density across a distribution whose shape (temporal extent) is specified by Attribute/Temporal uncertainty.] +** # {takesValue, isNumeric, unitClass=time} [implies that the temporal uncertainty is a uniform distribution with the amount of time provided, extending on both side. E.g. "0.5 s" specifies a 1-second range centered at event latency.] +** Standard deviation {requireChild} [implies that the distribution of temporal uncertainty is Gaussian with the provided standard deviation (in seconds).] +*** # {takesValue, isNumeric, unitClass=time} +* Presentation {requireChild}[Attributes associated with visual, auditory, tactile, etc. presentation of an stimulus] +** Fraction {requireChild} [the fraction of presentation of an Oddball or Expected stimuli to the total number of same-class presentations, e.g. 10% of images in an RSVP being targets] +*** # {takesValue, isNumeric} +** Cued [what is presented is cued to the presentation of something else] +** Background [presented in the background such as background music, background image, etc. The main factor here is that background presentations are to be ignored, e.g. ignore math question auditory stimuli.] +* Intended effect [This tag is to be grouped with Participant/Effect/Cognitive to specify the intended cognitive effect (of the experimenter). This is to differentiate the resulting group with Participant/Effect which specifies the actual effect on the participant. For example, in an RSVP experiment if an image is intended to be perceived as a target, (Participant/Effect/Cognitive/Target, Attribute/Intended effect) group is added. If the image was perceived by the subject as a target (e.g. they pressed a button to indicate so), then the tag Participant/Effect/Cognitive/Target is also added: Participant/Effect/Cognitive/Target, (Participant/Effect/Cognitive/Target, Attribute/Intended effect). otherwise the Participant/Effect/Cognitive/Target tag is not included outside of the group.] +* Instruction [This tag is placed in events of type Event/Category/Experimental stimulus/Instruction, grouped with one or more Action/ tags to replace the detailed specification XXX in Event/Category/Experimental stimulus/Instruction/XXX) in previous versions. Usage example: Event/Category/Experimental stimulus/Instruction, (Action/Fixate, Attribute/Instruction) ] +* Participant indication [This tag is placed in events of type Event/Category/Participant response and grouped with Participant/Effect/Cognitive/.. tags to specify the type of cognitive effect the participant has experienced. For example, in an RSVP paradigm, the subject can indicate the detection of a target with a button press. The HED string associated with this button press must include (Attribute/Participant indication, Participant/Effect/Cognitive/Target,...)] +* Path {requireChild} +** Velocity [Use Attribute/Onset or Attribute/Offset to specify onset or offset] +*** # {takesValue, isNumeric, unitClass=speed} [Numeric value with default units of m-per-s] +** Acceleration +*** # {takesValue, isNumeric, unitClass=acceleration} [Numeric value with default units of m-per-s2] +** Jerk +*** # {takesValue, isNumeric, unitClass=jerk} [Numeric value with default units of m-per-s3] +** Constrained [For example a path cannot cross some region] +* File {requireChild} [File attributes] +** Name +** Size +*** # {takesValue, isNumeric, unitClass=memorySize} [Numeric value with default units of mb] +** # {takesValue, isNumeric}[Number of files] +* Object control {requireChild} [Specifies control such as for a vehicle] +** Perturb +** Collide +** Near miss [Almost having an accident resulting in negative consequences] +** Correct position [After a lane deviation or side of the walkway] +** Halt [Time at which speed becomes exactly zero] +** Brake +** Shift lane +** Cross [Crossing in front of another object such as a vehicle] +** Pass by [Passing by another object or the participant] +** Accelerate +** Decelerate +* Association {requireChild} +** Another person [Item such as a cup belonging to another person] +** Same person [Item such as a cup belonging to the participant] +* Extraneous [Button presses that are not meaningful for example due to intrinsic mechanical causes after a meaningful press] +* Role {requireChild} [The role of the agent (participant, character, AI..)] +** Leader +** Follower +** # {takesValue} + +'''Action'''{extensionAllowed}[May or may not be associated with a prior stimulus and can be extended] +* Involuntary [Like sneezing or tripping on something or hiccuping] +** Hiccup +** Cough +** Sneeze +** Stumble [Temporary and involuntary loss of balance] +** Fall +** Tether Jerk [When a tether attached to the subject is stuck/snagged and forces the participant to involuntary accommodate/react to it] +** Clear Throat +** Yawn +** Sniffle +** Burp +** Drop [For example something drops from the hand of the subject] +* Make fist +** Open and close [Continue to open and close the fist, for example in motor imagery paradigms.] +* Curl toes +** Open and close [Continue to curl and uncurl toes, for example in motor imagery paradigms.] +* Button press {extensionAllowed} +** Touch screen +** Keyboard +** Mouse +** Joystick +* Button hold [Press a button and keep it pressed] +* Button release +* Cross boundary +** Arrive +** Depart +* Speech +* Hum +* Eye saccade [Use Attribute/Peak for the middle of saccade and Attribute/Onset for the start of a saccade] +* Eye fixation +* Eye blink +** Left base [The time of the first detectable eyelid movement on closing.] +** Left zero [The last time at which the EEG/EOG signal crosses zero during eyelid closing.] +** Left half height [The time at which the EEG/EOG signal reaches half maximum height during eyelid closing.] +** Max [The time at which the eyelid is the most closed.] +** Right half height [The time at which the EEG/EOG signal reaches half maximum height during eyelid opening.] +** Right zero [The first time at which the EEG/EOG signal crosses zero during eyelid opening.] +** Right base [The time of the last detectable eyelid movement on opening.] +* Eye close [Close eyes and keep closed for more than approximately 0.1 s] +** Keep [Keep the eye closed. If a value is provided it indicates the duration for this.] +*** # [The time that eyes are kept closed.]{takesValue, isNumeric, unitClass=time} +* Eye open [Open eyes and keep open for more than approximately 0.1 s] +** Keep [Keep the eye open. If a value is provided it indicates the duration for this.] +*** # [the duration (by default in seconds) that they keep their eye open.]{takesValue, isNumeric, unitClass=time} +*** With blinking [Default. Allow blinking during the eye-open period.] +*** Without blinking [Without blinking during the eye-open period.] +* Turn [Change in direction of movement or orientation. This includes both turn during movement on a path and also rotations such as head turns] +* Point +* Push +* Grab +* Tap [When there is nothing to be pressed for example like tapping a finger on a chair surface to follow a rhythm] +* Lift +* Reach [Requires a goal such as reaching to touch a button or to grab something. Stretching your body does not count as reach.] +** To Grab +** To Touch +* Course correction [Change the direction of a reach in the middle to adjust for a moving target.] +* Interact +** With human +* Take survey +* Stretch [Stretch your body such as when you wake up] +* Bend +* Deep breath +* Laugh +* Sigh +* Groan +* Scratch +* Switch attention +** Intramodal [In the same modality but with a change in details such as changing from paying attention to red dots and instead of blue dots] +*** Visual +*** Auditory +*** Tactile +*** Taste +*** Smell +** Intermodal [Between modalities such as changing from audio to visual] +*** From modality +**** Visual +**** Auditory +**** Tactile +**** Taste +**** Smell +*** To modality +**** Visual +**** Auditory +**** Tactile +**** Taste +**** Smell +* Walk +** Stride [Use onset and offset attributes to indicate different walking stride stages] +** Faster [increasing the speed of walking] +** Slower [decreasing the speed of walking] +* Control vehicle [Controlling an object that you are aboard] +** Drive [Driving a vehicle such as a car] +*** Correct [Correct for a perturbation] +*** Near miss +*** Collide +** Stop [Brake a car] +** Pilot [Pilot a vehicle such as an airplane] +* Teleoperate [Control an object that you are not aboard] +* Allow [Allow access to something such as allowing a car to pass] +* Deny [Deny access to something such as preventing someone to pass] +* Step around +* Step over +* Step on +* Swallow +* Flex +* Evade +* Shrug +* Dance +* Open mouth +* Whistle +* Read +* Attend +* Recall +* Generate +* Repeat +* Hold breath +* Breathe +* Rest +* Count +* Move +** Upper torso +** Lower torso +** Whole body +* Speak +* Sing +* Detect +* Name +* Smile +* Discriminate +* Track +* Encode +* Eye-blink inhibit + +'''Participant''' {predicateType=passThrough} +* ID {requireChild, predicateType=propertyOf} [If not given assume 1] +** # {takesValue, isNumeric} [Numeric value of an ID] +* Effect {extensionAllowed} [How the stimulus effects the participants] +** Cognitive +*** Meaningful +*** Not meaningful +*** Newly learned meaning +*** Reward +**** Low +**** Medium +**** High +**** # {takesValue, isNumeric, unitClass=currency} [Monetary values in some currency such as $10, or the ratio of the reward to the maximum possible (3 of max 10 becomes 0.3), or number Points] +*** Penalty +**** Low +**** Medium +**** High +**** # {takesValue, isNumeric, unitClass=currency} [Absolute monetary values in some currency, for example $1, or the ratio of the reward to the maximum possible (3 of max 10 becomes 0.3), or number of Points] +*** Error +**** Self originated +**** Other originated +***** Human +***** Non-human +**** Expected +**** Unexpected +**** Planned [The error feedback was given regardless of the validity of subject response as in a yoked design] +*** Threat +**** To self +**** To others +***** Close +*** Warning [As in a warning message that you are getting too close to the shoulder in a driving task] +*** Oddball [Unexpected or infrequent] +**** One stimulus [Only oddballs are present but no frequent stimuli exist. See http://dx.doi.org/10.1016/0167-8760(96)00030-X] +**** Two stimuli [There are non-targets and targets. See http://dx.doi.org/10.1016/0167-8760(96)00030-X] +**** Three stimuli [There are regular non-targets and targets and infrequent non-targets, see http://dx.doi.org/10.1016/0167-8760(96)00030-X] +**** Silent counting +**** Button pressing for target +**** Button pressing for all +*** Target [Something the subject is looking for] +*** Non-target [Make sure to tag Expected if the Non-target is frequent] +*** Novel [Genuinely novel such as an event occurring once or so per experiment] +*** Expected [Of low information value, for example frequent Non-targets in an RSVP paradigm] +**** Standard +**** Distractor +*** Valid [Something that is understood to be valid such as an ID matches the person being displayed and it has all the correct information] +*** Invalid [Something that is understood to not be valid such as like an ID with an impossible date-of-birth, or a photo not matching the person presenting it] +*** Congruence +**** Congruent [Like in Stroop paradigm when blue colored text displays the word blue] +**** Incongruent [Like in Stroop paradigm whena blue colored text reading displays the word red] +**** Temporal synchrony +***** Synchronous [When a mouse click sound happens right after clicking it] +***** Asynchronous [When a mouse click sound happens with significant delay which give could the person a strange feeling. Or if in a movie the sound of the explosion is heard before it appears visually.] +*** Feedback +**** Correct [Confirm something went well and last action was correct] +**** Incorrect [Confirm something went wrong and last action was incorrect] +**** Non-informative [Feedback that provides no information in regards to correct, incorrect, etc.] +**** Expected [Feedback was expected as in a positive feedback after a response that was expected to be correct.] +**** Unexpected [Feedback was unexpected as when positive feedback was received when response was expected to be incorrect.] +**** On accuracy [Feedback was provided by evaluating response accuracy] +**** On reaction time [Feedback was provided by evaluating subject reaction time] +**** To self [Observed feedback to self such as in a social paradigm.] +**** To other [Observed feedback to another person such as in a social paradigm.] +**** Deterministic [Feedback has a fixed relationship to what happened before.] +**** Stochastic [Feedback is non-deterministic and does not have fixed relationship with what has happened before in the experiment.] +**** False feedback [Feedback that was not honest for example as in feedback of correct on an incorrect response or vice versa.] +***** Negative [Negative feedback was provided when it was not deserved.] +***** Positive [Positive feedback was provided when it was not deserved.] +*** Cue [An indicator of a future event such as a sound cue that in 2-5 seconds a perturbation in driving will occur.] +**** Constant delay [The cue is for an event that will happen after a constant delay.] +***** # {takesValue, isNumeric, unitClass=time} [The delay value.] +**** Variable delay [The cue is for an event that will happen after a variable delay.] +***** # {takesValue} [The interval of the variable delay.] +** Visual +*** Foveal +*** Peripheral +*** Perturbation [Sudden movement or perturbation of the virtual environment in a car driving or other scenario] +** Auditory +*** Stereo +*** Mono +**** Left +**** Right +** TMS +*** With SPGS [SPGS stands for spatial position guiding system] +*** Without SPGS [SPGS stands for spatial position guiding system] +** Tactile +*** Vibration +*** Acupuncture +*** Eye puff +*** Swab [Mouth swab] +** Vestibular +*** Shaking [being shaken or jerked around] +** Pain +*** Heat +*** Cold +*** Pressure +*** Electric shock +*** Laser-evoked +** Taste +** Smell +** Body part +*** Whole Body +*** Eye +*** Arm +**** Hand +***** Finger +****** Index +****** Thumb +****** Ring +****** Middle +****** Small [Pinkie or little finger] +*** Leg +**** Feet +***** Toes +*** Head +**** Face +***** Eyebrow +***** Lip +***** Forehead +***** Mouth +***** Nose +***** Chin +***** Cheek +*** Torso +* State {extensionAllowed,requireChild} +** Level of consciousness {requireChild} +*** Awake +*** Drowsy +*** Sleep +**** Stage {requireChild} +***** # {takesValue} [a number between 1 to 4, or REM] +*** Drunk +*** Anesthesia +*** Locked-in +*** Coma +*** Vegetative +*** Brain-dead +** Emotion {requireChild} +*** Awe +*** Frustration +*** Joy +*** Anger +*** Happiness +*** Sadness +*** Love +*** Fear +*** Compassion +*** Jealousy +*** Contentment +*** Grief +*** Relief +*** Excitement +*** Disgust +*** Neutral [None of the above] +** Sense of community [Primed to have an emotion such as patriotism] +*** # {takesValue, isNumeric} [SCI stands for Sense of Community Index] +** Sense of social justice +*** Distributive +*** Poverty +*** Inequality +*** Procedural +*** Interpersonal +*** Informational +** Stress level {requireChild} +*** # {takesValue, isNumeric} [A number between 0 and 1] +** Task load {requireChild} +*** # {takesValue, isNumeric} [A number between 0 and 1] +** Under time pressure +*** Response window +**** # {takesValue, isNumeric, unitClass=time} [Default time is seconds.] +*** Competitive [Subject is competing against an opponent as for example when the faster respondent wins] +** Social interaction [Social] +*** Pseudo [Instructed so but actually not as when the other person may not exist in real world such as the case of a computer program agent] +** Passive [There is a stimulus presentation but no behavioral measurements are collected from the subject. Subject is instructed not to make any behavioral outputs for example when told to carefully watch/listen/sense. The resting state is not considered passive.] +** Resting [State when there is no stimulus presentation and no behavioral outputs] +** Attention +*** Top-down [Instructed to pay attention to something explicitly] +*** Bottom-up [something captures your attention, like a big bang or your name] +**** Orienting [The lower state of the bottom-up or the pre-bottom up state] +*** Covert [Implicit] +*** Overt [Explicit] +*** Selective [If you have two circles but asked to pay attention to only one of them] +**** Divided [Attending to more than one object or location] +*** Focused [Paying a lot of attention] +*** Sustained [Paying attention for a continuous time] +*** Auditory +*** Visual +*** Tactile +*** Taste +*** Smell +*** To a location [Spatial -- use the location attribute to specify to where the attention is directed] +*** Arousal {requireChild} +*** Alerting [Keeping the arousal up in order to respond quickly] +*** Drowsy +*** Excited +*** Neutral + + +'''Experiment context''' {requireChild, extensionAllowed} [Describes the context of the whole experiment or large portions of it and also includes tags that are common across all events] +* # {takesValue} [Add common tags across all stimuli/ and/or responses here if all experimental events share /State/Drowsy, you can place it here instead of tagging each event individually ] +* With chin rest +* Sitting +* Standing +* Prone [As in on a bed] +* Running +** Treadmill +* Walking +** Treadmill +* Indoors +** Clinic [Recording in a clinical setting such as in a hospital or medical office] +** Dim Room +* Outdoors +** Terrain +*** Grass +*** Uneven +*** Boardwalk +*** Dirt +*** Leaves +*** Mud +*** Woodchip +*** Rocky +*** Gravel +*** Downhill +*** Uphill +* Motion platform [Subject is on a motion platform such as one that produces simulated car movements] +* Fixed screen +** Distance [Assuming static subject] +*** # {takesValue, isNumeric, unitClass=physicalLength} [Distance from subject eyes to the presentation screen for 30 cm from subject eyes to the monitor] +** Width resolution +*** # {takesValue, isNumeric, unitClass=pixels} +** Height resolution +*** # {takesValue, isNumeric, unitClass=pixels} +* Real world +* Virtual world + +'''Custom''' {requireChild, extensionAllowed} [This node can be used to organize events in an alternative (parallel) hierarchy. You can define your custom tags and hierarchies without any restriction under this node. These tags will still be matched to each other as for example /Custom/Dance/Waltz is considered a subtype of /Custom/DanceExample.] + +'''HED''' {requireChild} [Hierarchical Event Descriptor] +* # {takesValue, isNumeric} [HED specification version number: normally there is no need to specify the version number in the HED string since it will be matched by default to the most recent compliant version, but this tag can be used to specify the exact HED version the HED string was based on.] + +'''Paradigm''' {requireChild, extensionAllowed}[See Tasks in http://www.cognitiveatlas.org/tasks and CogPo definitions of paradigms] +* Action imitation task +* Action observation task +* Acupuncture task +* Adult attachment interview +* Alternating runs paradigm +* Animal naming task +* Antisaccade-prosaccade task +* Attention networks test +* Attentional blink task +* Audio-visual target-detection task +* Autism diagnostic observation schedule +* Ax-cpt task +* Backward digit span task +* Backward masking +* Balloon analogue risk task - BART +* Behavioral investment allocation strategy - BIAS +* Behavioral rating inventory of executive function +* Benton facial recognition test +* Birmingham object recognition battery +* Block design test +* Block tapping test +* Boston naming test +* Braille reading task +* Breath-holding +* Breathhold paradigm +* Brixton spatial anticipation test +* California verbal learning test +* California verbal learning test-ii +* Cambridge face memory test +* Cambridge gambling task +* Cambridge neuropsychological test automated battery +* Catbat task +* Category fluency test +* Cattell culture fair intelligence test +* Chewing-swallowing +* Chimeric animal stroop task +* Choice reaction time task +* Choice task between risky and non-risky options +* Classical conditioning +* Clinical evaluation of language fundamentals-3 +* Color trails test +* Color-discrimination task +* Color-word stroop task +* Complex span test +* Conditional stop signal task +* Conditioning paradigm +** Behavioral conditioning paradigm +** Classical conditioning paradigm +* Continuous performance task +* Continuous recognition paradigm +* Counting stroop task +* Counting-calculation +* Cued explicit recognition +* Cups task +* Deception task +* Deductive reasoning paradigm +* Deductive reasoning task +* Delayed discounting task +* Delayed match to sample task +* Delayed nonmatch to sample task +* Delayed recall test +* Delayed response task +** Delayed matching to sample paradigm +*** Sternberg paradigm +* Devils task +* Dichotic listening task +* Digit cancellation task +* Digit span task +* Digit-symbol coding test +* Directed forgetting task +* Divided auditory attention +* Divided auditory attention paradigm +* Doors and people test +* Dot pattern expectancy task +* Drawing +* Drawing paradigm +* Dual-task paradigm +* Early social communications scales +* Eating paradigm +* Eating-drinking +* Embedded figures test +* Emotional regulation task +* Encoding paradigm +* Encoding task +* Episodic recall +* Episodic recall paradigm +* Eriksen flanker task +* Extradimensional shift task +* Eye Saccade paradigm +** Anti saccade paradigm +** Simple saccade paradigm +* Face monitor-discrimination +* Face n-back task +* Fagerstrom test for nicotine dependence +* Film viewing +* Finger tapping task +* Fixation task +* Flashing checkerboard +* Flexion-extension +* Forward digit span task +* Free word list recall +* Glasgow coma scale +* Go-no-go task +* Grasping task +* Gray oral reading test - 4 +* Haptic illusion task +* Hayling sentence completion test +* Heat sensitization-adaptation +* Heat stimulation +* Hooper visual organization test +* ID screening [Visual examination of multiple fields of an ID or document to detect invalid or suspicious fields. For example at a security checkpoint.] +* Imagined emotion +* Imagined movement +* Imagined objects-scenes +* Instructed movement +* Immediate recall test +* Inductive reasoning aptitude +* International affective picture system +* Intradimensional shift task +* Ishihara plates for color blindness +* Isometric force +* Item recognition paradigm +** Serial item recognition paradigm +* Item recognition task +* Kanizsa figures +* Keep-track task +* Letter comparison +* Letter fluency test +* Letter naming task +* Letter number sequencing +* Lexical decision task +* Listening span task +* Macauthur communicative development inventory +* Machine failure detection task +* Matching familiar figures test +* Matching pennies game +* Maudsley obsessive compulsive inventory +* Mechanical stimulation +* Memory span test +* Mental rotation task +* Micturition task +* Mini mental state examination +* Mirror tracing test +* Mismatch negativity paradigm +* Mixed gambles task +* Modified erikson scale of communication attitudes +* Morris water maze +* Motor sequencing task +* Music comprehension-production +* N-back task +** Letter n-back task +* Naming +** Covert +** Overt +* Nine-hole peg test +* Non-choice task to study expected value and uncertainty +* Non-painful electrical stimulation +* Non-painful thermal stimulation +* Nonword repetition task +* Object alternation task +* Object-discrimination task +* Oculomotor delayed response +* Oddball discrimination paradigm +** Auditory oddball paradigm +** Visual oddball paradigm +*** Rapid serial visual presentation +* Oddball task +* Olfactory monitor-discrimination +* Operation span task +* Orthographic discrimination +* Paced auditory serial addition test +* Pain monitor-discrimination task +* Paired associate learning +* Paired associate recall +* Pantomime task +* Parrott scale +* Passive listening +* Passive viewing +* Pattern comparison +* Perturbed driving +* Phonological discrimination +* Picture naming task +* Picture set test +* Picture-word stroop task +* Pitch monitor-discrimination +* Pointing +* Porteus maze test +* Positive and negative affect scale +* Posner cueing task +* Probabilistic classification task +* Probabilistic gambling task +* Probabilistic reversal learning +* Pseudoword naming task +* Psychomotor vigilance task +* Pursuit rotor task +* Pyramids and palm trees task +* Rapid automatized naming test +* Rapid serial object transformation +* Reading - Covert +* Reading - Overt +* Reading paradigm +** Covert braille reading paradigm +** Covert visual reading paradigm +* Reading span task +* Recitation-repetition - Covert +* Recitation-repetition - Overt +* Remember-know task +* Response mapping task +* Rest +** Rest eyes open +** Rest eyes closed +* Retrieval-induced forgetting task +* Reversal learning task +* Reward task +* Rey auditory verbal learning task +* Rey-ostereith complex figure test +* Reynell developmental language scales +* Rhyme verification task +* Risky gains task +* Rivermead behavioural memory test +* [extend here] + +!# end schema + + +'''Unit classes''' +* acceleration {defaultUnits=m-per-s^2} +** m-per-s^2 {SIUnit, unitSymbol} +* angle {defaultUnits=radian} +** radian {SIUnit} +** rad {SIUnit, unitSymbol} +** degree +* area {defaultUnits=m^2} +** m^2 {SIUnit, unitSymbol} +** px^2 {unitSymbol} +** pixel^2 +* currency {defaultUnits=$, allowedCharacter=$} +** dollar +** $ {unitSymbol} +** point +* dateTime {defaultUnits=YYYY-MM-DDThh:mm:ss, allowedCharacter=:,allowedCharacter=-} +** YYYY-MM-DDThh:mm:ss [Date-times should conform to ISO8601 date-time format. Any variation on the full form is allowed.] +* frequency {defaultUnits=Hz} +** hertz {SIUnit} +** Hz {SIUnit, unitSymbol} +* intensity {defaultUnits=dB} +** dB {unitSymbol} +* jerk {defaultUnits=m-per-s^3} +** m-per-s^3 {unitSymbol} +* luminousIntensity {defaultUnits=cd} +** candela {SIUnit} +** cd {SIUnit, unitSymbol} +* memorySize {defaultUnits=B} +** byte {SIUnit} +** B {SIUnit, unitSymbol} +* posixPath {allowedCharacter=/,allowedCharacter=:}[Posix path specification.] +* physicalLength {defaultUnits=m} +** metre {SIUnit} +** m {SIUnit, unitSymbol} +** foot +** mile +* pixels {defaultUnits=px} +** pixel +** px {unitSymbol} +* speed {defaultUnits=m-per-s} +** m-per-s {SIUnit, unitSymbol} +** mph {unitSymbol} +** kph {unitSymbol} +* time {defaultUnits=s} +** second {SIUnit} +** s {SIUnit, unitSymbol} +** day +** minute +** hour [Should be in 24-hour format.] +* volume {defaultUnits=m^3} +** m^3 {SIUnit, unitSymbol} + + +'''Unit modifiers''' +* deca {SIUnitModifier} [SI unit multiple representing 10^1] +* da {SIUnitSymbolModifier} [SI unit multiple representing 10^1] +* hecto {SIUnitModifier} [SI unit multiple representing 10^2] +* h {SIUnitSymbolModifier} [SI unit multiple representing 10^2] +* kilo {SIUnitModifier} [SI unit multiple representing 10^3] +* k {SIUnitSymbolModifier} [SI unit multiple representing 10^3] +* mega {SIUnitModifier} [SI unit multiple representing 10^6] +* M {SIUnitSymbolModifier} [SI unit multiple representing 10^6] +* giga {SIUnitModifier} [SI unit multiple representing 10^9] +* G {SIUnitSymbolModifier} [SI unit multiple representing 10^9] +* tera {SIUnitModifier} [SI unit multiple representing 10^12] +* T {SIUnitSymbolModifier} [SI unit multiple representing 10^12] +* peta {SIUnitModifier} [SI unit multiple representing 10^15] +* P {SIUnitSymbolModifier} [SI unit multiple representing 10^15] +* exa {SIUnitModifier} [SI unit multiple representing 10^18] +* E {SIUnitSymbolModifier} [SI unit multiple representing 10^18] +* zetta {SIUnitModifier} [SI unit multiple representing 10^21] +* Z {SIUnitSymbolModifier} [SI unit multiple representing 10^21] +* yotta {SIUnitModifier} [SI unit multiple representing 10^24] +* Y {SIUnitSymbolModifier} [SI unit multiple representing 10^24] +* deci {SIUnitModifier} [SI unit submultiple representing 10^-1] +* d {SIUnitSymbolModifier} [SI unit submultiple representing 10^-1] +* centi {SIUnitModifier} [SI unit submultiple representing 10^-2] +* c {SIUnitSymbolModifier} [SI unit submultiple representing 10^-2] +* milli {SIUnitModifier} [SI unit submultiple representing 10^-3] +* m {SIUnitSymbolModifier} [SI unit submultiple representing 10^-3] +* micro {SIUnitModifier} [SI unit submultiple representing 10^-6] +* u {SIUnitSymbolModifier} [SI unit submultiple representing 10^-6] +* nano {SIUnitModifier} [SI unit submultiple representing 10^-9] +* n {SIUnitSymbolModifier} [SI unit submultiple representing 10^-9] +* pico {SIUnitModifier} [SI unit submultiple representing 10^-12] +* p {SIUnitSymbolModifier} [SI unit submultiple representing 10^-12] +* femto {SIUnitModifier} [SI unit submultiple representing 10^-15] +* f {SIUnitSymbolModifier} [SI unit submultiple representing 10^-15] +* atto {SIUnitModifier} [SI unit submultiple representing 10^-18] +* a {SIUnitSymbolModifier} [SI unit submultiple representing 10^-18] +* zepto {SIUnitModifier} [SI unit submultiple representing 10^-21] +* z {SIUnitSymbolModifier} [SI unit submultiple representing 10^-21] +* yocto {SIUnitModifier} [SI unit submultiple representing 10^-24] +* y {SIUnitSymbolModifier} [SI unit submultiple representing 10^-24] + +'''Value classes''' [Specification of the rules for the values provided by users.] + +'''Schema attributes''' +* allowedCharacter {unitClassProperty}[An attribute of unit classes schema value placeholders indicating a special character that is allowed in expressing the value of that placeholder.] +* defaultUnits {unitClassProperty}[An attribute of unit classes specifying the default units for a tag.] +* extensionAllowed {boolProperty}[Users can add unlimited levels of child nodes under this tag.] +* isNumeric {boolProperty}[The tag hashtag placeholder must be replaced by a numerical value.] +* position [Used to specify the order of the required and recommended tags in canonical order for display. The position attribute value should be an integer and the order can start at 0 or 1. Required or recommended tags without this attribute or with negative position will be shown after the others in canonical ordering.] +* predicateType [One of propertyOf, subclassOf, passThrough -- used to facilitate mapping to OWL or RDF.] +* recommended {boolProperty}[A HED string tagging an event is recommended to include this tag.] +* requireChild {boolProperty}[One of its descendants must be chosen to tag an event.] +* required {boolProperty}[Every HED string tagging an event should include this tag.] +* SIUnit {boolProperty, unitClassProperty}[Designates the name of an SI unit so it can be modified by multiple and submultiple names. Note that some units such as byte are designated as SI units although they are not part of the standard.] +* SIUnitModifier {boolProperty, unitModifierProperty}[SI unit modifier indicating a multiple or submultiple of a base unit.] +* SIUnitSymbolModifier {boolProperty, unitModifierProperty}[SI unit symbol modifier indicating a multiple or submultiple of a base unit symbol.] +* takesValue {boolProperty}[This tag will have a hashtag placeholder child in the schema which is expected to be replaced with a user-defined value.] +* unique {boolProperty}[Only one of this tag or its descendants can be used within a single tag group or event.] +* unitClass [Schema attribute specifying which unit class this value tag belongs to.] +* unitSymbol {boolProperty, unitClassProperty}[Abbreviation or symbol representing a type of unit. Unit symbols represent both the singular and the plural and thus cannot be pluralized.] + +'''Properties''' [Properties of the schema attributes themselves. These are used for schema handling and verification.] + +'''Epilogue''' +Note: This is the new version of the .mediawiki designed to support prologues and epilogues. + !# end hed \ No newline at end of file diff --git a/hedxml/HED7.2.0.xml b/hedxml/deprecated/HED7.2.0.xml similarity index 100% rename from hedxml/HED7.2.0.xml rename to hedxml/deprecated/HED7.2.0.xml diff --git a/tests/hed_error_codes.json b/tests/hed_error_codes.json index e33d1fdc..e73f00ef 100644 --- a/tests/hed_error_codes.json +++ b/tests/hed_error_codes.json @@ -6,8 +6,6 @@ "DEF_INVALID", "DEFINITION_INVALID", "ELEMENT_DEPRECATED", - "NODE_NAME_EMPTY", - "TEMPORAL_TAG_ERROR", "PARENTHESES_MISMATCH", "PLACEHOLDER_INVALID", "REQUIRED_TAG_MISSING", @@ -24,6 +22,7 @@ "TAG_NAMESPACE_PREFIX_INVALID", "TAG_NOT_UNIQUE", "TAG_REQUIRES_CHILD", + "TEMPORAL_TAG_ERROR", "TILDES_UNSUPPORTED", "UNITS_INVALID", "UNITS_MISSING", @@ -32,16 +31,21 @@ ], "schema_validation_errors": [ "SCHEMA_ATTRIBUTE_INVALID", - "SCHEMA_ATTRIBUTE_VALUE_INVALID", + "SCHEMA_ATTRIBUTE_VALUE_INVALID_ALLOWED_CHARACTER", + "SCHEMA_ATTRIBUTE_VALUE_INVALID_CONVERSION_FACTOR", + "SCHEMA_ATTRIBUTE_VALUE_INVALID_DEFAULT_UNIT", + "SCHEMA_ATTRIBUTE_VALUE_INVALID_IN_LIBRARY", + "SCHEMA_ATTRIBUTE_VALUE_INVALID_NON_PLACEHOLDER_HAS_CLASS", + "SCHEMA_ATTRIBUTE_VALUE_INVALID_RELATED_TAG", + "SCHEMA_ATTRIBUTE_VALUE_INVALID_SUGGESTED_TAG", + "SCHEMA_ATTRIBUTE_VALUE_INVALID_UNIT_CLASS", + "SCHEMA_ATTRIBUTE_VALUE_INVALID_VALUE_CLASS", "SCHEMA_CHARACTER_INVALID", + "SCHEMA_DEPRECATION_ERROR", "SCHEMA_DUPLICATE_NODE", "SCHEMA_HEADER_INVALID", "SCHEMA_LIBRARY_INVALID", - "SCHEMA_SECTION_MISSING", - "SCHEMA_VERSION_INVALID", - "WIKI_DELIMITERS_INVALID", - "WIKI_LINE_START_INVALID", - "WIKI_SEPARATOR_INVALID", - "XML_SYNTAX_INVALID" + "SCHEMA_LOAD_FAILED", + "SCHEMA_SECTION_MISSING" ] } \ No newline at end of file diff --git a/tests/javascript_tests.json b/tests/javascript_tests.json new file mode 100644 index 00000000..e490d89a --- /dev/null +++ b/tests/javascript_tests.json @@ -0,0 +1,12466 @@ +[ + { + "error_code": "CHARACTER_INVALID", + "alt_codes": [ + "TAG_INVALID", + "UNITS_INVALID", + "VALUE_INVALID" + ], + "name": "character-invalid-non-printing appears", + "description": "The HED string contains a UTF-8 character.", + "warning": false, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Item/Bl\b" + ], + "passes": [ + "Red, Blue, Description/Red", + "Description/This is a \u00ca\u00b0 good character" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "show": "Red, Item/Bl\b" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "show": "Red, Label/a \u00ca\u00b0 good" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Item/Bl\b" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Label/Temp, Label/a \u00ca\u00b0 good" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "show": "Red, Item/Bl\b", + "ball": "Def/Acc/4.5 m-per-s^2" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "show", + "Description/a \u00ca\u00b0 good" + ], + [ + 5.0, + 0, + "ball", + "Blue" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "show": "Red, Label/a, Description/a \u00ca\u00b0 good" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "show", + "Description/goodness" + ] + ] + } + ] + } + } + }, + { + "error_code": "CHARACTER_INVALID", + "alt_codes": [ + "TAG_INVALID", + "UNITS_INVALID", + "VALUE_INVALID" + ], + "name": "curly-braces-not-in-sidecar", + "description": "The curly brace notation is used outside a sidecar.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "{col_1}, Red" + ], + "passes": [ + "Red, Blue, Description/Red" + ] + }, + "sidecar_tests": { + "fails": [], + "passes": [ + { + "event_code": { + "HED": { + "face": "Statistical-accuracy/0.677, {response}" + } + }, + "response": { + "HED": "Label/#" + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "{who_knows}, Red" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Label/Temp" + ] + ] + ] + }, + "combo_tests": { + "fails": [], + "passes": [] + } + } + }, + { + "error_code": "CHARACTER_INVALID", + "alt_codes": [ + "TAG_INVALID", + "VALUE_INVALID" + ], + "name": "invalid-character-name-value-class", + "description": "An invalid character was used in an 8.3.0 or greater style text value class.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Parameter-label/[", + "Parameter-label/Taco*", + "Label/30$", + "Label/30db kg" + ], + "passes": [ + "Parameter-label/Words", + "Label/30e10", + "Label/3e10asdf" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "show": "Parameter-label/[" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": "Parameter-label/#" + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Statistical-accuracy/1max1" + ] + ], + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Label/30$" + ] + ], + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Label/30db kg" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Label/3e10asdf" + ] + ] + ] + }, + "combo_tests": { + "fails": [], + "passes": [] + } + } + }, + { + "error_code": "CHARACTER_INVALID", + "alt_codes": [ + "TAG_INVALID", + "UNITS_INVALID", + "VALUE_INVALID" + ], + "name": "invalid-character-name-value-class-deprecated", + "description": "An invalid character was used in an 8.2.0 or lower style text value class.", + "warning": false, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Parameter-label/[", + "Parameter-label/Taco\u00c3\u201e" + ], + "passes": [ + "Parameter-label/Words", + "Parameter-label/Taco*" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "show": "Parameter-label/[" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": "Parameter-label/#" + } + } + ] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [], + "passes": [] + } + } + }, + { + "error_code": "CHARACTER_INVALID", + "alt_codes": [ + "UNITS_INVALID" + ], + "name": "invalid-character-numeric-class", + "description": "An invalid character was used in an 8.3.0 or greater style numeric value class.", + "warning": false, + "schema": "8.3.0", + "definitions": [], + "tests": { + "string_tests": { + "fails": [ + "Weight/3.0$ kg", + "Weight/3.0db kg", + "Weight/3.0& kg", + "Weight/abc kg", + "Weight/*3.0 kg", + "Weight/3.0% kg", + "Weight/3.0^ kg", + "Weight/3.0? kg" + ], + "passes": [ + "Weight/3.0e10 kg", + "Weight/3e10 kg", + "Weight/3.0 kg", + "Weight/3000 kg", + "Weight/3e10 kg", + "Weight/3.5e10 kg", + "Weight/2.998e8 g", + "Weight/6.022e23 g", + "Weight/7.0e-10 g", + "Weight/1.6e-35 kg" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "show": "Weight/3.0a" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": "Weight/# g" + } + } + ] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [], + "passes": [] + } + } + }, + { + "error_code": "COMMA_MISSING", + "alt_codes": [], + "name": "comma-missing-tag-groups", + "description": "Two tag groups are not separated by commas: (A, B)(C, D).", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Red, Blue)(Green, (Yellow))", + "(Def/MyColor, Onset)(Def/Acc/3.5 m-per-s^2)" + ], + "passes": [ + "(Red, Blue), (Green, (Yellow))", + "(Def/MyColor, Onset),(Def/Acc/3.5 m-per-s^2)" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Red, Blue)(Green, (Yellow))", + "ball": "(Def/MyColor, Onset)(Def/Acc/3.5 m-per-s^2)" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, ( Yellow))", + "ball": "(Def/MyColor, Onset),(Def/Acc/3.5 m-per-s^2)" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Red, Blue)(Green, (Yellow))" + ], + [ + 5.5, + 0, + "(Def/MyColor, Onset)(Def/Acc/3.5 m-per-s^2)" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Red, Blue), (Green, (Yellow))" + ], + [ + 5.5, + 0, + "(Def/MyColor, Onset),(Def/Acc/3.5 m-per-s^2)" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Red, Blue)(Green, (Yellow))", + "ball": "(Def/MyColor, Onset)(Def/Acc/3.5 m-per-s^2)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ], + [ + 6.0, + 0, + "n/a", + "(Blue, Green)(Blue, Red)" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, ( Yellow))", + "ball": "(Def/MyColor, Onset),(Def/Acc/3.5 m-per-s^2)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "(Green, Def/MyColor),(Red)" + ] + ] + } + ] + } + } + }, + { + "error_code": "COMMA_MISSING", + "alt_codes": [], + "name": "comma-missing-tag-and-group", + "description": "A tag and a tag group are not separated by commas: A(B,D).", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Red, Blue(Green, (Yellow))", + "(Def/MyColor, Onset)Def/Acc/3.5 m-per-s^2" + ], + "passes": [ + "Red, (Green, (Yellow))", + "(Def/MyColor, Onset),Def/Acc/3.5 m-per-s^2" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Red(Green, (Yellow))", + "ball": "(Def/MyColor, Onset)Def/Acc/3.5 m-per-s^2" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Red, (Green, (Yellow))", + "ball": "(Def/MyColor, Onset),Def/Acc/3.5 m-per-s^2" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Red(Green, (Yellow))" + ], + [ + 5.5, + 0, + "(Def/MyColor, Onset)Def/Acc/3.5 m-per-s^2" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Red, (Green, (Yellow))" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Red(Green, (Yellow))", + "ball": "(Def/MyColor, Onset)Def/Acc/3.5 m-per-s^2" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ], + [ + 6.0, + 0, + "n/a", + "(Green, Yellow)Red" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Red, (Green, (Yellow))", + "ball": "(Def/MyColor, Onset),Def/Acc/3.5 m-per-s^2" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "DEFINITION_INVALID", + "alt_codes": [ + "TAG_GROUP_ERROR" + ], + "name": "definition-invalid-tag-group", + "description": "A Definition tag does not appear in a tag group at the top level in an annotation.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Definition/Apple, (Blue)), ((Definition/Blech, (Red)))", + "Definition/Blech, (Red)" + ], + "passes": [] + }, + "sidecar_tests": { + "fails": [ + { + "defs": { + "HED": { + "def1": "(Definition/Apple, (Blue)), ((Definition/Blech, (Red)))", + "def2": "Definition/Blech, (Red)" + } + } + } + ], + "passes": [ + { + "defs": { + "HED": { + "def1": "(Definition/Blech, (Red))" + } + } + } + ] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "defs": { + "HED": { + "def1": "(Definition/Apple, (Blue)), ((Definition/Blech, (Red)))", + "def2": "Definition/Blech, (Red)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/MyColor, Def/Apple" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "defs": { + "HED": { + "def1": "(Definition/Apple, (Blue))", + "def2": "(Definition/Blech, (Red))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/MyColor, Def/Apple" + ] + ] + } + ] + } + } + }, + { + "error_code": "DEFINITION_INVALID", + "alt_codes": [ + "TAG_EMPTY" + ], + "name": "definition-invalid-empty-inner-group", + "description": "A definition's enclosing tag group has an empty inner group (i.e., the definition's contents).", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [ + { + "defs": { + "HED": { + "def2": "(Definition/Blech/#, ())" + } + } + } + ], + "passes": [ + { + "defs": { + "HED": { + "def1": "(Definition/Apple)" + } + } + } + ] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "defs": { + "HED": { + "def2": "(Definition/Blech/#, ())" + } + } + }, + "events": [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/MyColor, Def/Apple" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "defs": { + "HED": { + "def1": "(Definition/Apple)", + "def2": "(Definition/Blech, (Red))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/MyColor, Def/Apple" + ] + ] + } + ] + } + } + }, + { + "error_code": "DEFINITION_INVALID", + "alt_codes": [ + "TAG_GROUP_ERROR" + ], + "name": "definition-invalid-multiple-definition-tags", + "description": "A definition's enclosing tag group contains more than a `Definition` tag and an inner group.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [ + { + "defs": { + "HED": { + "def1": "(Definition/Apple, Definition/Banana, (Blue))", + "def2": "(Definition/Blech, (Red), Definition/Banana1)", + "def3": "(Definition/Blech1, (Red), Blue)" + } + } + } + ], + "passes": [ + { + "defs": { + "HED": { + "def1": "(Definition/Apple, (Blue))", + "def2": "((Red), Definition/Blech)" + } + } + } + ] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "defs": { + "HED": { + "def1": "(Definition/Apple, Definition/Banana, (Blue))", + "def2": "(Definition/Blech, (Red), Definition/Banana1)", + "def3": "(Definition/Blech1, (Red), Blue)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Apple, Def/Banana" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "defs": { + "HED": { + "def1": "(Definition/Apple, (Blue))", + "def2": "((Red), Definition/Blech)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Blech, Def/Apple" + ] + ] + } + ] + } + } + }, + { + "error_code": "DEFINITION_INVALID", + "alt_codes": [ + "TAG_GROUP_ERROR" + ], + "name": "definition-invalid-inner-group-defs", + "description": "A definition's inner tag group contains `Definition`, `Def` or `Def-expand` tags.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [ + { + "defs": { + "HED": { + "def1": "(Definition/Apple, (Definition/Banana, Blue))", + "def2": "(Definition/Blech, (Red, Def/Apple))" + } + } + } + ], + "passes": [] + }, + "event_tests": { + "fails": [], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Label/a" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "defs": { + "HED": { + "def1": "(Definition/Apple, (Definition/Banana, (Blue)))", + "def2": "(Definition/Blech, ((Red), Def/MyColor))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Apple, Def/Banana" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "defs": { + "HED": { + "def1": "(Definition/Apple, (Blue))", + "def2": "((Red), Definition/Blech)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Blech, Def/Apple" + ] + ] + } + ] + } + } + }, + { + "error_code": "DEFINITION_INVALID", + "alt_codes": [], + "name": "definition-invalid-bad-number-of-placeholders", + "description": "A definition that includes a placeholder (`#`) does not have exactly two `#` characters.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [ + { + "defs": { + "HED": { + "def1": "(Definition/Apple/#, (Label/#, Description/#))", + "def2": "(Definition/Blech/#, (Red))" + } + } + } + ], + "passes": [ + { + "defs": { + "HED": { + "def1": "(Definition/Apple/#, (Label/#))", + "def2": "(Definition/Blech/#, (Red, Label/#))" + } + } + } + ] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "defs": { + "HED": { + "def1": "(Definition/Apple/#, (Label/#, Description/#))", + "def2": "(Definition/Blech/#, (Red))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Apple/3, Def/Blech/might" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "defs": { + "HED": { + "def1": "(Definition/Apple/#, (Label/#))", + "def2": "(Definition/Blech/#, (Red, Label/#))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Blech/5, Def/Apple/4" + ] + ] + } + ] + } + } + }, + { + "error_code": "DEFINITION_INVALID", + "alt_codes": [ + "TAG_INVALID" + ], + "name": "definition-invalid-placeholder-incorrect-of-positions", + "description": "A definition has placeholders (`#`) in incorrect positions.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [ + { + "defs": { + "HED": { + "def1": "(Definition/Apple, (Label/#))", + "def2": "(Definition/Blech/#, (Red, #))" + } + } + } + ], + "passes": [ + { + "defs": { + "HED": { + "def1": "(Definition/Apple, (Label/Blue))", + "def2": "(Definition/Blech/#, (Label/#, Red))" + } + } + } + ] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "defs": { + "HED": { + "def1": "(Definition/Apple, (Label/#))", + "def2": "(Definition/Blech/#, (Red, #))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Apple, Def/Blech/might" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "defs": { + "HED": { + "def1": "(Definition/Apple/#, (Label/#))", + "def2": "(Definition/Blech/#, (Red, Label/#))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Blech/5, Def/Apple/4" + ] + ] + } + ] + } + } + }, + { + "error_code": "DEFINITION_INVALID", + "alt_codes": [ + "TAG_INVALID" + ], + "name": "definition-invalid-placeholder-conflict", + "description": "Definitions of the same name appear with and without a `#`.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [ + { + "defs": { + "HED": { + "def1": "(Definition/Apple, (Label/#))", + "def2": "(Definition/Apple/#, (Red, #))" + } + } + } + ], + "passes": [ + { + "defs": { + "HED": { + "def1": "(Definition/Blech/#, (Label/#))", + "def2": "(Definition/Apple, (Red))" + } + } + } + ] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "defs": { + "HED": { + "def1": "(Definition/Apple, (Label/#))", + "def2": "(Definition/Apple/#, (Red, #))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Apple/3, Def/Apple" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "defs": { + "HED": { + "def1": "(Definition/Apple/#, (Label/#))", + "def2": "(Definition/Blech, (Red))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Blech, Def/Apple/4" + ] + ] + } + ] + } + } + }, + { + "error_code": "DEFINITION_INVALID", + "alt_codes": [], + "name": "definition-invalid-multiple-definitions", + "description": "Multiple `Definition` tags with same name are encountered.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [ + { + "defs": { + "HED": { + "def1": "(Definition/Apple/#, (Label/#, Description/#))", + "def2": "(Definition/Apple/#, (Label/#))", + "def3": "(Definition/MyColor, (Blue))" + } + } + } + ], + "passes": [ + { + "defs": { + "HED": { + "def1": "(Definition/Apple/#, (Label/ThisIsALabel, Description/#))", + "def2": "(Definition/Apple2/#, (Label/#))", + "def3": "(Definition/MyColor2, (Blue))" + } + } + } + ] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "defs": { + "HED": { + "def1": "(Definition/Apple/#, (Label/#, Description/#))", + "def2": "(Definition/Apple/#, (Label/#))", + "def3": "(Definition/MyColor, (Blue))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Apple/3, Def/Blech/might" + ], + [ + 5.0, + 0, + "Def/MyColor" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "defs": { + "HED": { + "def1": "(Definition/Apple/#, (Label/#))", + "def2": "(Definition/Blech/#, (Red, Label/#))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Blech/5, Def/Apple/4" + ] + ] + } + ] + } + } + }, + { + "error_code": "DEFINITION_INVALID", + "alt_codes": [], + "name": "definition-invalid-content-has-top-level-tag", + "description": "A tag with a required or unique attribute appears in a definition.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [ + { + "defs": { + "HED": { + "def1": "(Definition/Apple, (Event-context, Red))", + "def2": "(Definition/Banana/#, (Label/#))" + } + } + } + ], + "passes": [ + { + "defs": { + "HED": { + "def1": "(Definition/Apple, (Red))", + "def2": "(Definition/Banana/#, (Label/#))" + } + } + } + ] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "defs": { + "HED": { + "def1": "(Definition/Apple, (Event-context, Red))", + "def2": "(Definition/Banana/#, (Label/#))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Apple, Def/Banana/might" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "defs": { + "HED": { + "def1": "(Definition/Apple, (Red))", + "def2": "(Definition/Banana/#, (Label/#))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Apple, Def/Banana/might" + ] + ] + } + ] + } + } + }, + { + "error_code": "DEFINITION_INVALID", + "alt_codes": [], + "name": "definition-not-allowed-here", + "description": "A definition appears in an unexpected place such as an events file or sidecar.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Item, (Label/Pie)))" + ], + "tests": { + "string_tests": { + "fails": [ + "Red, Blue, (Definition/myDef, (Label/Red, Blue))" + ], + "passes": [ + "Red, Blue" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Red, Blue, (Definition/myDef, (Label/Red, Blue))", + "ball": "Def/Acc/4.5 m-per-s^2" + } + } + } + ], + "passes": [ + { + "defs": { + "HED": { + "face": "(Definition/myDef, (Label/Red, Blue)), (Definition/myDef2, (Label/Red, Blue))", + "ball": "(Definition/myDef1, (Label/Red, Blue))" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Definition/myDef, (Label/Red, Green))" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Red, Blue, Def/MyColor" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Red, Blue, (Definition/myDef, (Label/Red, Blue))", + "ball": "Def/Acc/4.5 m-per-s^2" + } + } + }, + "events": [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/myDef, Red" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "defs": { + "HED": { + "def1": "(Definition/Apple/#, (Label/#))", + "def2": "(Definition/Blech/#, (Red, Label/#))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Blech/5, Def/Apple/4" + ] + ] + } + ] + } + } + }, + { + "error_code": "DEF_EXPAND_INVALID", + "alt_codes": [], + "name": "def-expand-invalid-name-not-definition", + "description": "A `Def-expand` tag's name does not correspond to a definition.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Def-expand/Acc2/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))", + "(Def-expand/MyColor2, (Label/Pie))" + ], + "passes": [ + "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Def-expand/Acc2/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))", + "ball": "(Def-expand/MyColor2, (Label/Pie))" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))", + "ball": "(Def-expand/MyColor, (Label/Pie))" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def-expand/Acc2/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))" + ], + [ + 5.5, + 0, + "(Def-expand/MyColor2, (Label/Pie))" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))" + ], + [ + 5.5, + 0, + "(Def-expand/MyColor, (Label/Pie))" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def-expand/Acc2/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))", + "ball": "(Def-expand/MyColor2, (Label/Pie)))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ], + [ + 5.0, + 0, + "ball", + "(Def-expand/Junk, (Label/Red))" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))", + "ball": "(Def-expand/MyColor, (Label/Pie))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))" + ], + [ + 5.5, + 0, + "(Def-expand/MyColor, (Label/Pie))" + ] + ] + } + ] + } + } + }, + { + "error_code": "DEF_EXPAND_INVALID", + "alt_codes": [], + "name": "def-expand-invalid-missing-placeholder", + "description": "A `Def-expand` is missing an expected placeholder value or has an unexpected placeholder value.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Def-expand/Acc, (Acceleration, Red))", + "(Def-expand/Acc/4.5/3, (Acceleration, Red))", + "(Def-expand/MyColor/Blue, (Label/Pie))" + ], + "passes": [ + "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))", + "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Def-expand/Acc, (Acceleration, Red))", + "ball": "(Def-expand/Acc/4.5/3, (Acceleration, Red))", + "circle": "(Def-expand/MyColor2/4, (Label/Pie))" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))", + "ball": "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def-expand/Acc, (Acceleration, Red))" + ], + [ + 5.5, + 0, + "(Def-expand/Acc/4.5/3, (Acceleration, Red))" + ], + [ + 6.5, + 0, + "(Def-expand/MyColor2/4, (Label/Pie))" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))" + ], + [ + 5.5, + 0, + "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def-expand/Acc, (Acceleration, Red))", + "ball": "(Def-expand/Acc/4.5/3, (Acceleration, Red))", + "circle": "(Def-expand/MyColor2/4, (Label/Pie))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + " (Def-expand/Acc, (Acceleration, Red))" + ], + [ + 5.5, + 0, + "ball", + "(Def-expand/Acc/4.5/3, (Acceleration, Red))" + ], + [ + 5.6, + 0, + "circle", + "(Def-expand/Acc/4.5/3, (Acceleration, Red))" + ], + [ + 6.5, + 0, + "n/a", + "(Def-expand/MyColor2/4, (Label/Pie))" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))", + "ball": "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ], + [ + 5.2, + 0, + "ball", + "(Def-expand/MyColor, (Label/Pie))" + ] + ] + } + ] + } + } + }, + { + "error_code": "DEF_EXPAND_INVALID", + "alt_codes": [], + "name": "def-expand-invalid-bad-placeholder-units", + "description": "A `Def-expand` has a placeholder value of incorrect format or units for definition.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Def-expand/Acc/Make-me, (Acceleration/Make-me, Red))", + "(Def-expand/Acc/4.5 m, (Acceleration/4.5 m, Red))", + "(Def-expand/Acc/4.5m-per-s^2, (Acceleration/4.5m-per-s^2, Red))" + ], + "passes": [ + "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Def-expand/Acc/Make-me, (Acceleration/Make-me, Red))", + "ball": "(Def-expand/Acc/4.5 m, (Acceleration/4.5 m, Red))", + "square": "(Def-expand/Acc/4.5m-per-s^2, (Acceleration/4.5m-per-s^2, Red))" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))", + "ball": "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def-expand/Acc/Make-me, (Acceleration/Make-me, Red))" + ], + [ + 5.5, + 0, + "(Def-expand/Acc/4.5 m, (Acceleration/4.5 m, Red))" + ], + [ + 6.3, + 0, + "(Def-expand/Acc/4.5m-per-s^2, (Acceleration/4.5m-per-s^2, Red))" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))" + ], + [ + 5.5, + 0, + "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def-expand/Acc/Make-me, (Acceleration/Make-me, Red))", + "ball": "(Def-expand/Acc/4.5 m, (Acceleration/4.5 m, Red))", + "square": "(Def-expand/Acc/4.5m-per-s^2, (Acceleration/4.5m-per-s^2, Red))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "(Def-expand/Acc/Make-me, (Acceleration/Make-me, Red))" + ], + [ + 5.5, + 0, + "ball", + "(Def-expand/Acc/4.5 m, (Acceleration/4.5 m, Red))" + ], + [ + 6.3, + 0, + "square", + "(Def-expand/Acc/4.5m-per-s^2, (Acceleration/4.5m-per-s^2, Red))" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))", + "ball": "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "(Def-expand/Acc/5.5 m-per-s^2, (Acceleration/5.5 m-per-s^2, Red))" + ], + [ + 5.5, + 0, + "ball", + "(Def-expand/Acc/5.5 m-per-s^2, (Acceleration/5.5 m-per-s^2, Red))" + ], + [ + 6.5, + 0, + "n/a", + "n/a" + ] + ] + } + ] + } + } + }, + { + "error_code": "DEF_EXPAND_INVALID", + "alt_codes": [], + "name": "def-expand-invalid-tags-not-in-definition", + "description": "The tags within a Def-expand do not match the corresponding definition.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/6, Red))", + "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Blue))", + "(Def-expand/MyColor, (Label/Cake))" + ], + "passes": [ + "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/6, Red))", + "ball": "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Blue))", + "square": "(Def-expand/MyColor, (Label/Cake))" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))", + "ball": "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/6, Red))" + ], + [ + 5.5, + 0, + "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Blue))" + ], + [ + 6.3, + 0, + "(Def-expand/MyColor, (Label/Cake))" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))" + ], + [ + 5.5, + 0, + "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/6, Red))", + "ball": "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Blue))", + "square": "(Def-expand/MyColor, (Label/Cake)))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/6, Red))" + ], + [ + 5.5, + 0, + "ball", + "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Blue))" + ], + [ + 6.3, + 0, + "square", + "(Def-expand/MyColor, (Label/Cake))" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))", + "ball": "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "(Def-expand/Acc/6.5 m-per-s^2, (Acceleration/6.5 m-per-s^2, Red))" + ], + [ + 5.5, + 0, + "ball", + "(Def-expand/Acc/8.5 m-per-s^2, (Acceleration/8.5 m-per-s^2, Red))" + ] + ] + } + ] + } + } + }, + { + "error_code": "DEF_EXPAND_INVALID", + "alt_codes": [], + "name": "def-expand-missing-inner-group", + "description": "A Def-expand is missing its inner group containing the definition.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Item, (Label/Pie)))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Def-expand/Acc/5.4 m-per-s^2)" + ], + "passes": [ + "(Def-expand/Acc/5.4 m-per-s^2, (Acceleration/5.4 m-per-s^2, Red))" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Def-expand/Acc/4.5 m-per-s^2, Red)", + "ball": "(Def-expand/Acc/4.5 m-per-s^2)" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Def-expand/Acc/5.4 m-per-s^2, (Acceleration/5.4 m-per-s^2, Red))", + "ball": "Red" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def-expand/Acc/4.5 m-per-s^2, Red)" + ], + [ + 5.4, + 0, + "(Def-expand/Acc/5.4 m-per-s^2)" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def-expand/Acc/5.4 m-per-s^2, (Acceleration/5.4 m-per-s^2, Red))" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def-expand/Acc/4.5 m-per-s^2)", + "ball": "Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "ball", + "Def/Acc, (Def-expand/Acc/4.5 m-per-s^2)" + ], + [ + 5.4, + 0, + "n/a", + "Green" + ], + [ + 6.4, + 0, + "face", + "n/a" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def-expand/Acc/5.4 m-per-s^2, (Acceleration/5.4 m-per-s^2, Red))", + "ball": "(Acceleration/4.5 m-per-s^2, Blue), Def/MyColor" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "n/a" + ], + [ + 6.5, + 0, + "ball", + "(Def-expand/Acc/5.4 m-per-s^2, (Acceleration/5.4 m-per-s^2, Red))" + ] + ] + } + ] + } + } + }, + { + "error_code": "DEF_EXPAND_INVALID", + "alt_codes": [], + "name": "def-expand-has-extras", + "description": "A Def-expand has extra tags or groups.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Item, (Label/Pie)))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Def-expand/Acc/5.4 m-per-s^2, (Acceleration/5.4 m-per-s^2, Red), Blue)", + "(Def-expand/Acc/5.4 m-per-s^2, (Acceleration/5.4 m-per-s^2, Red), (Blue, Green), Black)" + ], + "passes": [ + "(Def-expand/Acc/5.4 m-per-s^2, (Acceleration/5.4 m-per-s^2, Red))" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Def-expand/Acc/5.4 m-per-s^2, (Acceleration/5.4 m-per-s^2, Red), Blue)", + "ball": "(Def-expand/Acc/5.4 m-per-s^2, (Acceleration/5.4 m-per-s^2, Red), (Blue, Green), Black)" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Def-expand/Acc/5.4 m-per-s^2, (Acceleration/5.4 m-per-s^2, Red))", + "ball": "Red" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def-expand/Acc/5.4 m-per-s^2, (Acceleration/5.4 m-per-s^2, Red), Blue)" + ], + [ + 5.4, + 0, + "(Def-expand/Acc/5.4 m-per-s^2, (Acceleration/5.4 m-per-s^2, Red), (Blue, Green), Black)" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def-expand/Acc/5.4 m-per-s^2, (Acceleration/5.4 m-per-s^2, Red))" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def-expand/Acc/5.4 m-per-s^2, (Acceleration/5.4 m-per-s^2, Red), Blue)", + "ball": "Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "ball", + "Def/Acc, (Def-expand/Acc/4.5 m-per-s^2)" + ], + [ + 5.4, + 0, + "n/a", + "(Def-expand/Acc/5.4 m-per-s^2, (Acceleration/5.4 m-per-s^2, Red), Blue)" + ], + [ + 6.4, + 0, + "face", + "n/a" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def-expand/Acc/5.4 m-per-s^2, (Acceleration/5.4 m-per-s^2, Red))", + "ball": "(Acceleration/4.5 m-per-s^2, Blue), Def/MyColor" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "n/a" + ], + [ + 6.5, + 0, + "ball", + "(Def-expand/Acc/5.4 m-per-s^2, (Acceleration/5.4 m-per-s^2, Red))" + ] + ] + } + ] + } + } + }, + { + "error_code": "DEF_INVALID", + "alt_codes": [], + "name": "def-invalid-name", + "description": "A `Def` tag's name does not correspond to a definition.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Def/Apple2, Green", + "Def/Acc2/4.5", + "Def/Acc" + ], + "passes": [ + "Def/Acc/4.5 m-per-s^2" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Def/Apple2, Green", + "ball": "Def/Acc2/4.5, Def/Acc/3.2 m-per-s^2" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Def/Acc/4.5 m-per-s^2" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Apple2, Green" + ], + [ + 5.5, + 0, + "Def/Acc2/4.5 m-per-s^2" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Acc/4.5 m-per-s^2" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Def/Apple2, Green", + "ball": "Def/Acc2/4.5, Def/Acc/3.2" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "ball", + "Def/Apple2, Green" + ], + [ + 5.5, + 0, + "face", + "Def/Acc2/4.5 m-per-s^2" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Def/Acc/4.5 m-per-s^2" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "DEF_INVALID", + "alt_codes": [], + "name": "def-invalid-missing-placeholder", + "description": "A `Def` tag is missing an expected placeholder value or has an unexpected placeholder value.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Def/Acc, (Def/Acc/4.5 m-per-s^2, Red)", + "Def/MyColor/Blue" + ], + "passes": [ + "Def/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red)" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Def/Acc, (Def/Acc/4.5 m-per-s^2, Red)", + "ball": "(Def/MyColor/Blue, Green)" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Def/Acc/4.5 m-per-s^2, Red", + "ball": "(Acceleration/4.5 m-per-s^2, Red), Def/MyColor" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Acc, (Def/Acc/4.5 m-per-s^2, Red)" + ], + [ + 5.4, + 0, + "Def/MyColor/Blue, Green" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red)" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Def/Acc, (Def/Acc/4.5 m-per-s^2, Red)", + "ball": "(Def/MyColor/Blue, Green)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "ball", + "Def/Acc, (Def/Acc/4.5 m-per-s^2, Red)" + ], + [ + 5.4, + 0, + "n/a", + "Def/MyColor/Blue, Green" + ], + [ + 6.4, + 0, + "face", + "n/a" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Def/Acc/4.5 m-per-s^2, Red", + "ball": "(Acceleration/4.5 m-per-s^2, Red), Def/MyColor" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Def/Acc/5.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red)" + ], + [ + 6.5, + 0, + "ball", + "n/a" + ] + ] + } + ] + } + } + }, + { + "error_code": "DEF_INVALID", + "alt_codes": [], + "name": "def-invalid-bad-placeholder-units", + "description": "A `Def` has a placeholder value of incorrect format or units for definition.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Def/Acc/baloney, (Def/Acc/4.5 m-per-s^2, Red)", + "Def/Acc/3 m", + "Def/Acc/4m-per-s^2", + "Def/MyColor/Redish" + ], + "passes": [ + "Def/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red)" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Def/Acc/baloney, (Def/Acc/4.5 m-per-s^2, Red)", + "ball": "Def/Acc/3 m", + "square": "Def/Acc/4m-per-s^2", + "triangle": "Def/MyColor/Redish" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Def/Acc/4.5 m-per-s^2, Red)", + "ball": "Def/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red)" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Acc/baloney, (Def/Acc/4.5 m-per-s^2, Red)" + ], + [ + 5.0, + 0, + "Def/Acc/3 m" + ], + [ + 6.3, + 0, + "Def/Acc/4m-per-s^2" + ], + [ + 7.2, + 0, + "Def/MyColor/Redish" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red)" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Def/Acc/baloney, (Def/Acc/4.5 m-per-s^2, Red)", + "ball": "Def/Acc/3 m", + "square": "Def/Acc/4m-per-s^2", + "triangle": "Def/MyColor/Redish" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "ball", + "Def/Acc/baloney, (Def/Acc/4.5 m-per-s^2, Red)" + ], + [ + 5.0, + 0, + "face", + "Def/Acc/3 m" + ], + [ + 6.3, + 0, + "n/a", + "Def/Acc/4m-per-s^2" + ], + [ + 7.2, + 0, + "square", + "Def/MyColor/Redish" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/Acc/4.5 m-per-s^2, Red)", + "ball": "Def/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "ELEMENT_DEPRECATED", + "alt_codes": [], + "name": "tag-deprecated", + "description": "A tag is deprecated", + "warning": true, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Def/MyColor, Green, Gentalia", + "Gentalia" + ], + "passes": [ + "Torso" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Def/MyColor, Green, Gentalia", + "ball": "Green, Blue" + } + }, + "other_code": { + "HED": "Label/#, Gentalia" + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Torso" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Gentalia, Green" + ], + [ + 5.5, + 0, + "n/a" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Torso" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Gentalia", + "ball": "Green" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "ball", + "Blue" + ], + [ + 5.5, + 0, + "face", + "Red" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Torso", + "ball": "Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "PARENTHESES_MISMATCH", + "alt_codes": [], + "name": "parentheses-mismatch-unmatched-parentheses", + "description": "A HED string does not have the same number of open and closed parentheses.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Def/MyColor, (Blue, (Yellow)), Red))", + "((Red, ((Blue, Green), Yellow))", + "((Red, ((Blue), Green)), (Yellow)" + ], + "passes": [ + "(Def/Acc/5.3 m-per-s^2, (Red))" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Def/MyColor, (Blue, (Yellow)), Red))", + "ball": "(Red, ((Blue, Green), Yellow))", + "square": "(Red, ((Blue), Green)), (Yellow)" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Def/Acc/5.3 m-per-s^2, (Red))" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def/MyColor, (Blue, (Yellow)), Red))" + ], + [ + 5.5, + 0, + "(Red, ((Blue, Green), Yellow))" + ], + [ + 6.3, + 0, + "(Red, ((Blue), Green)), (Yellow)" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def/Acc/5.3 m-per-s^2, (Red))" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/banana", + "ball": "Def/Acc/apple3, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "(Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "Def/Acc/7, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "PARENTHESES_MISMATCH", + "alt_codes": [], + "name": "parentheses-mismatch-incorrect-nesting", + "description": "The open and closed parentheses are not correctly nested in the HED string.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Def/MyColor)), (Blue, (Yellow)), (Red)", + ")(Def/MyColor)), (Blue, (Yellow)), (Red))" + ], + "passes": [ + "(Def/Acc/5.3 m-per-s^2, (Red))", + "(((((Def/Acc/5.3 m-per-s^2, (Red))))))" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Def/MyColor)), (Blue, (Yellow)), (Red)", + "ball": ")(Def/MyColor)), (Blue, (Yellow)), (Red))" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Def/Acc/5.3 m-per-s^2, (Red))", + "ball": "(((((Def/Acc/5.3 m-per-s^2, (Red))))))" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def/MyColor)), (Blue, (Yellow)), (Red)" + ], + [ + 5.5, + 0, + ")(Def/MyColor)), (Blue, (Yellow)), (Red))" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def/Acc/5.3 m-per-s^2, (Red))" + ], + [ + 5.5, + 0, + "(((((Def/Acc/5.3 m-per-s^2, (Red))))))" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/MyColor)), (Blue, (Yellow)), (Red)", + "ball": ")(Def/MyColor)), (Blue, (Yellow)), (Red))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "),Red, (((Def/MyColor)))" + ], + [ + 5.0, + 0, + "ball", + "(Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/Acc/5.3 m-per-s^2, (Red))", + "ball": "(((((Def/Acc/5.3 m-per-s^2, (Red))))))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, ((Def/MyColor))" + ] + ] + } + ] + } + } + }, + { + "error_code": "PLACEHOLDER_INVALID", + "alt_codes": [], + "name": "placeholder-invalid-misplaced", + "description": "A `#` appears in a place that it should not (such as in the `HED` column of an event file outside a definition).", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Label/#", + "Def/Acc/# m-per-s^2" + ], + "passes": [ + "Label/This-label" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Label/#", + "ball": "Def/Acc/# m-per-s^2" + } + } + } + ], + "passes": [] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Label/#" + ], + [ + 5.0, + 0, + "Def/Acc/# m-per-s^2" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Label/This-label" + ], + [ + 6.0, + 0, + "(Def/Acc/3.5 m-per-s^2)" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/banana", + "ball": "Def/Acc/apple3, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/Acc/#" + ], + [ + 5.0, + 0, + "ball", + "Label/#" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "Def/Acc/7, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "PLACEHOLDER_INVALID", + "alt_codes": [], + "name": "placeholder-invalid-#-in-categorical-column", + "description": "A JSON sidecar has a placeholder (`#`) in the HED dictionary for a categorical column.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Label/#", + "ball": "Def/Acc/# m-per-s^2" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Label/This-label", + "ball": "(Def/Acc/3.5 m-per-s^2)" + } + } + } + ] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Label/#", + "ball": "Def/Acc/#" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "Def/Acc/7, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "PLACEHOLDER_INVALID", + "alt_codes": [], + "name": "placeholder-invalid-json-value-column", + "description": "A JSON sidecar does not have exactly one placeholder (`#`) in each HED string representing a value column.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [ + { + "trial": { + "HED": "Def/Acc/# m-per-s^2, Label/#" + }, + "memory": { + "HED": "Blue, Red, Label/#" + } + } + ], + "passes": [ + { + "trial": { + "HED": "Def/Acc/# m-per-s^2" + } + } + ] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "trial": { + "HED": "Def/Acc/#, Label/#" + }, + "memory": { + "HED": "Blue, Red, Label/#" + } + }, + "events": [ + [ + "onset", + "duration", + "trial", + "memory", + "HED" + ], + [ + 4.5, + 0, + "3", + "4", + "Green, Def/MyColor" + ], + [ + 5.0, + 0, + "2", + "6", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "trial": { + "HED": "Def/Acc/#, Label/Trial" + }, + "memory": { + "HED": "Blue, Red, Label/#" + } + }, + "events": [ + [ + "onset", + "duration", + "trial", + "memory", + "HED" + ], + [ + 4.5, + 0, + "5", + "4", + "Green" + ], + [ + 5.0, + 0, + "3", + "2", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "PLACEHOLDER_INVALID", + "alt_codes": [ + "TAG_EXTENSION_INVALID" + ], + "name": "placeholder-invalid-json-#-misplaced", + "description": "A placeholder (`#`) is used in JSON sidecar or definition, but its parent in the schema does not have a placeholder child.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [ + { + "trial": { + "HED": "Sensory-event/#" + }, + "defs": { + "def1": "(Definition/Blech/#, (Red, Blue/#))" + } + } + ], + "passes": [ + { + "trial": { + "HED": "Label/#" + } + } + ] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "trial": { + "HED": "Sensory-event/#" + }, + "defs": { + "def1": "(Definition/Blech/#, (Red, Blue/#))" + } + }, + "events": [ + [ + "onset", + "duration", + "trial", + "HED" + ], + [ + 4.5, + 0, + "3", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "2", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "trial": { + "HED": "Sensory-event, Label/#" + }, + "defs": { + "def1": "(Definition/Blech/#, (Red, Label/#))" + } + }, + "events": [ + [ + "onset", + "duration", + "trial", + "HED" + ], + [ + 4.5, + 0, + "3", + "Blue" + ], + [ + 5.0, + 0, + "2", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "REQUIRED_TAG_MISSING", + "alt_codes": [], + "name": "required-tag-missing", + "description": "An event-level annotation does not have a tag corresponding to a node with the `required` schema attribute. (Note this is deprecated so no tests.)", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [], + "passes": [] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [], + "passes": [] + } + } + }, + { + "error_code": "REQUIRED_TAG_MISSING", + "alt_codes": [], + "name": "required-tag-in-definition", + "description": "A required tag appears in a definition", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [], + "passes": [] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [], + "passes": [] + } + } + }, + { + "error_code": "SIDECAR_BRACES_INVALID", + "alt_codes": [ + "CHARACTER_INVALID" + ], + "name": "sidecar-braces-contents-invalid", + "description": "The item in curly braces is not the word HED or a column name with HED annotations in the sidecar.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_time": { + "Description": "Has description but no HED" + } + }, + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_action": { + "Description": "Does not correspond to curly braces" + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_time": { + "Description": "Has description with HED", + "HED": "Label/#" + } + }, + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "{HED}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_action": { + "Description": "Does not correspond to curly braces" + } + } + ] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow)), ({HED})", + "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_time": { + "Description": "Has description with HED", + "HED": "Label/#" + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED", + "response_time" + ], + [ + 4.5, + 0, + "face", + "Blue", + 0 + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor", + 1 + ], + [ + 5.5, + 0, + "face", + "", + 2 + ], + [ + 5.7, + 0, + "face", + "n/a", + 3 + ] + ] + } + ] + } + } + }, + { + "error_code": "SIDECAR_BRACES_INVALID", + "alt_codes": [ + "VALUE_INVALID", + "CHARACTER_INVALID", + "UNITS_INVALID" + ], + "name": "sidecar-braces-invalid-spot", + "description": "A curly brace reference must only appear where a tag could.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "(Def/Acc/{response_time})" + } + }, + "response_time": { + "Description": "Has description with HED", + "HED": "Label/#" + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_time": { + "Description": "Has description with HED", + "HED": "Label/#" + } + } + ] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [], + "passes": [] + } + } + }, + { + "error_code": "SIDECAR_BRACES_INVALID", + "alt_codes": [], + "name": "sidecar-braces-circular-reference", + "description": "The item in curly braces has a HED annotation that contains curly braces.", + "warning": false, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow)), {HED}", + "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_time": { + "HED": "Label/#, {event_code}" + } + }, + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow)), {HED}", + "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)", + "dog": "Orange, {event_type}" + } + }, + "response_time": { + "HED": "Label/#" + }, + "event_type": { + "HED": { + "banana": "Blue, {response_time}", + "apple": "Green" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_time": { + "Description": "Has description with HED", + "HED": "Label/#" + }, + "response_count": { + "Description": "A count used to test curly braces in value columns.", + "HED": "(Item-count/#, {response_time})" + } + }, + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "{HED}, (Def/Acc/3.5 m-per-s^2, {response_action})" + } + }, + "response_action": { + "Description": "Does not correspond to curly braces", + "HED": "Label/#" + } + } + ] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow)), ({HED})", + "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_time": { + "Description": "Has description with HED", + "HED": "Label/#" + } + }, + "events": [ + [ + "onset", + "duration", + "response_time", + "event_code", + "HED" + ], + [ + 4.5, + 0, + 3.4, + "face", + "Blue" + ], + [ + 5.0, + 0, + 6.8, + "ball", + "Green, Def/MyColor" + ], + [ + 5.2, + 0, + "n/a", + "face", + "" + ], + [ + 5.5, + 0, + "any", + "face", + "n/a" + ] + ] + } + ] + } + } + }, + { + "error_code": "SIDECAR_BRACES_INVALID", + "alt_codes": [], + "name": "sidecar-braces-self-reference", + "description": "The item in curly braces has a HED annotation that contains itself.", + "warning": false, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow)), {HED}", + "ball": "{HED}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_time": { + "HED": "Label/#, {response_time}" + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_time": { + "Description": "Has description with HED", + "HED": "Label/#" + }, + "response_count": { + "Description": "A count used to test curly braces in value columns.", + "HED": "(Item-count/#, {response_time})" + } + }, + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "{HED}, (Def/Acc/3.5 m-per-s^2, {response_action})" + } + }, + "response_action": { + "Description": "Does not correspond to curly braces", + "HED": "Label/#" + } + } + ] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow)), ({HED})", + "ball": "{HED}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_time": { + "Description": "Has description with HED", + "HED": "Label/#, {response_time}" + } + }, + "events": [ + [ + "onset", + "duration", + "response_time", + "event_code", + "HED" + ], + [ + 4.5, + 0, + 3.4, + "face", + "Blue" + ], + [ + 5.0, + 0, + 6.8, + "ball", + "Green, Def/MyColor" + ], + [ + 5.2, + 0, + "n/a", + "face", + "" + ], + [ + 5.5, + 0, + "any", + "face", + "n/a" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow)), ({HED})", + "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_time": { + "Description": "Has description with HED", + "HED": "Label/#" + } + }, + "events": [ + [ + "onset", + "duration", + "response_time", + "event_code", + "HED" + ], + [ + 4.5, + 0, + 3.4, + "face", + "Blue" + ], + [ + 5.0, + 0, + 6.8, + "ball", + "Green, Def/MyColor" + ], + [ + 5.2, + 0, + "n/a", + "face", + "" + ], + [ + 5.5, + 0, + "any", + "face", + "n/a" + ] + ] + } + ] + } + } + }, + { + "error_code": "SIDECAR_BRACES_INVALID", + "alt_codes": [ + "CHARACTER_INVALID", + "VALUE_INVALID", + "UNITS_INVALID" + ], + "name": "sidecar-braces-appear-as-value-rather-than-tag", + "description": "The curly braces are in a value rather than as a separate tag substitute.", + "warning": false, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "Label/{response_time}, Black" + } + }, + "response_time": { + "Description": "Has description but no HED", + "HED": "Orange" + } + }, + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "Label/{response_time}, Black" + } + }, + "response_time": { + "Description": "Has description but no HED", + "HED": "Label/#" + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Red, Blue), ({response_time}, (Green, (Yellow)))", + "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_time": { + "Description": "Has description with HED", + "HED": "Label/#" + } + } + ] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow)), ({HED})", + "ball": "Label/{response_time}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_time": { + "Description": "Has description with HED", + "HED": "Orange" + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ], + [ + 5.2, + 0, + "face", + "" + ], + [ + 5.5, + 0, + "face", + "n/a" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow)), ({HED})", + "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_time": { + "Description": "Has description with HED", + "HED": "Label/#" + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED", + "response_time" + ], + [ + 4.5, + 0, + "face", + "Blue", + 1 + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor", + 1 + ], + [ + 5.2, + 0, + "face", + "", + 1 + ], + [ + 5.5, + 0, + "face", + "n/a", + 1 + ] + ] + } + ] + } + } + }, + { + "error_code": "SIDECAR_INVALID", + "alt_codes": [], + "name": "sidecar-invalid-key-at-wrong-level", + "description": "The HED key is not a second-level dictionary key.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "temp": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "(Def/MyColor, Onset), (Def/Acc/3.5 m-per-s^2)" + } + } + } + }, + { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "(Def/MyColor, Onset), (Def/Acc/3.5 m-per-s^2)" + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "(Def/MyColor, Onset),(Def/Acc/3.5 m-per-s^2)" + } + } + } + ] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "temp": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "(Def/MyColor, Onset), (Def/Acc/3.5 m-per-s^2)" + } + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + }, + { + "sidecar": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "(Def/MyColor, Onset), (Def/Acc/3.5 m-per-s^2)" + } + }, + "events": [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "Def/Acc/7, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "SIDECAR_INVALID", + "alt_codes": [], + "name": "sidecar-invalid-na-annotated", + "description": "An annotation entry is provided for `n/a`.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Red, Blue),(Green, (Yellow))", + "n/a": "(Def/MyColor, Onset), (Def/Acc/3.5 m-per-s^2)" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "(Def/MyColor, Onset),(Def/Acc/3.5 m-per-s^2)" + } + } + } + ] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Red, Blue),(Green, (Yellow))", + "n/a": "(Def/MyColor, Onset), (Def/Acc/3.5 m-per-s^2)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "n/a", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "Def/Acc/7, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "SIDECAR_INVALID", + "alt_codes": [], + "name": "curly-braces-has-no-hed", + "description": "A column name appears in curly braces, but that column name does not have a HED annotation.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Statistical-accuracy/0.677, {response}" + } + }, + "response": { + "Description": "This is a response" + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Statistical-accuracy/0.677, {response}" + } + }, + "response": { + "HED": "Label/#" + } + } + ] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Statistical-accuracy/0.677, {response}" + } + }, + "response": "This is a response" + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "response", + "HED" + ], + [ + 4.5, + 0, + "face", + "yes", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "no", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "Def/Acc/7, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "response", + "HED" + ], + [ + 4.5, + 0, + "face", + "yes", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "no", + "Green" + ] + ] + } + ] + } + } + }, + { + "error_code": "SIDECAR_KEY_MISSING", + "alt_codes": [], + "name": "sidecar-key-missing", + "description": "A value in a categorical column does not have an expected entry in a sidecar.", + "warning": true, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [], + "passes": [] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/banana", + "ball": "Black, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "square", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "Def/Acc/7 m-per-s^2, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "STYLE_WARNING", + "alt_codes": [], + "name": "style-warning-bad-naming-style", + "description": "An extension or label does not follow HED naming conventions.", + "warning": true, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Red-color/red" + ], + "passes": [ + "Blue-color/Blue" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Red/red_blech", + "ball": "Blue-color/blue" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Red-color/Red", + "ball": "Blue-color/Blue" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Red/red_blech" + ], + [ + 5.0, + 0, + "Blue-color/blue" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Red-color/Red" + ], + [ + 5.0, + 0, + "Blue-color/Blue" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Red/red_blech", + "ball": "Blue-color/blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Red-color/Red", + "ball": "Blue-color/Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TAG_EMPTY", + "alt_codes": [], + "name": "tag-empty-extra-commas-or-parentheses", + "description": "A HED string has extra commas or parentheses separated by only white space.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Red, , , Green", + "(, Red, Green), Blue", + "(Red, , Green), Blue", + "(Red, Green,), Blue", + "(Red, Green), Blue," + ], + "passes": [ + "(Red, Blue), Green" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "square": "Red, , , Green", + "test": "(, Red, Green), Blue", + "pine": "(Red, , Green), Blue", + "apple": "(Red, Green,), Blue" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Red, Blue", + "ball": "Def/Acc/4.5 m-per-s^2, Def/Acc/3.2 m-per-s^2" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 5.5, + 0, + "Red, , , Green" + ], + [ + 7.5, + 0, + "(, Red, Green), Blue" + ], + [ + 8.2, + 0, + "(Red, , Green), Blue" + ], + [ + 9.1, + 0, + "(Red, Green,), Blue" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Red, (Blue, Green)" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "square": "Red, , , Green", + "test": "(, Red, Green), Blue", + "pine": "(Red, , Green), Blue", + "apple": "(Red, Green,), Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "test", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "apple", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Red, Green", + "ball": "Def/Acc/4.5 m-per-s^2, Def/Acc/3.2" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TAG_EMPTY", + "alt_codes": [], + "name": "tag-empty-begin-end-comma", + "description": "A HED string begins or ends with a comma (ignoring white space).", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + ", Blue,Def/Acc/3.2 m-per-s^2", + "(Blue, Green),Yellow,", + ",,(Blue, Green),Yellow," + ], + "passes": [ + "(Red, Blue), Green" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": ", Blue,Def/Acc/3.2 m-per-s^2", + "ball": "(Blue, Green),Yellow,", + "square": ",,(Blue, Green),Yellow," + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Red, Blue", + "ball": "Def/Acc/4.5 m-per-s^2, Def/Acc/3.2 m-per-s^2" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + ", (Blue, Green),Yellow," + ], + [ + 5.5, + 0, + ",,(Blue, Green),Yellow," + ], + [ + 6.5, + 0, + ", Blue,Def/Acc/3.2 m-per-s^2" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Red, (Blue, Green)" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": ", Blue,Def/Acc/3.2", + "ball": "(Blue, Green),Yellow,", + "square": ",,(Blue, Green),Yellow," + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "Def/Acc/7, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TAG_EMPTY", + "alt_codes": [], + "name": "tag-empty-empty-parentheses", + "description": "A tag group is empty (i.e., empty parentheses are not allowed).", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Red, (), (Blue), ((Green)))", + "((( ))), Red" + ], + "passes": [ + "(Red, ( Blue ), ((Green)))", + "(((Def/Acc/3.5 m-per-s^2)))" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Red, (), (Blue), ((Green)))", + "ball": "((( ))), Red" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Red, ( Blue ), ((Green)))", + "ball": "(((Def/Acc/3.5 m-per-s^2)))" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Red, (), (Blue), ((Green)))" + ], + [ + 5.5, + 0, + "((( ))), Red" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Red, ( Blue ), ((Green)))" + ], + [ + 5.5, + 0, + "(((Def/Acc/3.5 m-per-s^2)))" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Red, (), (Blue), ((Green)))", + "ball": "((( ))), Red" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Red, ( Blue ), ((Green)))", + "ball": "(((Def/Acc/3.5 m-per-s^2)))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TAG_EXPRESSION_REPEATED", + "alt_codes": [], + "name": "tag-expression-repeated-same-level", + "description": "A tag is repeated in the same tag group or level.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Red, (Blue), Red, Green", + "(Red, Blue, (Green)), (Red, Blue, (Green))", + "(Red, (Blue, Green, (Yellow)), Red, (Blue, Green, (Yellow)))" + ], + "passes": [ + "Red, (Blue, Red)", + "(Red, Blue, (Green)), (Red, Blue, ((Green)))" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Red, (Blue), Red, Green", + "ball": "(Red, Blue, (Green)), (Red, Blue, (Green))", + "square": "(Red, (Blue, Green, (Yellow)), Red, (Blue, Green, (Yellow)))" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Red, (Blue, Red)", + "ball": "(Red, Blue, (Green)), (Red, Blue, ((Green)))" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Red, (Blue), Red, Green" + ], + [ + 5.5, + 0, + "(Red, Blue, (Green)), (Red, Blue, (Green))" + ], + [ + 6.5, + 0, + "(Red, (Blue, Green, (Yellow)), Red, (Blue, Green, (Yellow)))" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Red, (Blue, Red)" + ], + [ + 5.5, + 0, + "(Red, Blue, (Green)), (Red, Blue, ((Green)))" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Red, (Blue), Red, Green", + "ball": "(Red, Blue, (Green)), (Red, Blue, (Green))", + "square": "(Red, (Blue, Green, (Yellow)), Red, (Blue, Green, (Yellow)))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Red, (Blue, Red)", + "ball": "(Red, Blue, (Green)), (Red, Blue, ((Green)))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TAG_EXTENDED", + "alt_codes": [], + "name": "tag-extended-extension", + "description": "A tag represents an extension from the schema.", + "warning": true, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Red-color/Red/Big-red, Blue/Nice-blue),(Green, (Yellow))", + "Sensory-presentation/Visual-presentation/Nice-yellow", + "Red-color/Red/Redish", + "Red-color/Red/Redish/More-redish", + "((Green/Greenish))", + "Red/1red", + "Red/Red--2red" + ], + "passes": [ + "Red-color/Red" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Red-color/Red/Big-red, Blue/Nice-blue),(Green, (Yellow))", + "ball": "Sensory-presentation/Visual-presentation/Nice-yellow", + "square": "((Green/Greenish))", + "triangle": "Red/1red", + "catwalk": "Red/Red--2red" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Red-color/Red" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Red-color/Red/Big-red, Blue/Nice-blue),(Green, (Yellow))" + ], + [ + 5.5, + 0, + "Sensory-presentation/Visual-presentation/Nice-yellow" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Red-color/Red" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Red-color/Red/Big-red/Bigger-red, Blue/Nice-blue),(Green, (Yellow))", + "ball": "Sensory-presentation/Visual-presentation/Nice-yellow" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "Def/Acc/7 m-per-s^2, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TAG_EXTENSION_INVALID", + "alt_codes": [], + "name": "tag-extension-invalid-duplicate", + "description": "A tag extension term is already in the schema.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Red-color/Red/DarkRed, Sensory-presentation/Red", + "Sensory-presentation/Red/Redish" + ], + "passes": [ + "Red-color/Red/Redish", + "((Green/Greenish))" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Red-color/Red/DarkRed, Sensory-presentation/Red", + "ball": "Sensory-presentation/Red/Redish" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Red-color/Red/Redish", + "ball": "((Green/Greenish))" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Red-color/Red/DarkRed, Sensory-presentation/Red" + ], + [ + 5.5, + 0, + "Sensory-presentation/Red/Redish" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Red-color/Red" + ], + [ + 5.5, + 0, + "((Green))" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Red-color/Red/DarkRed, Sensory-presentation/Red", + "ball": "Sensory-presentation/Red/Redish" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Red-color/Red", + "ball": "Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TAG_EXTENSION_INVALID", + "alt_codes": [], + "name": "tag-extension-invalid-bad-node-name", + "description": "A tag extension term does not comply with rules for schema nodes.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Red/Red$2", + "Red/R#d" + ], + "passes": [ + "Red-color/Red", + "((Green))", + "Red" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Red/Red$2", + "ball": "Red/R#d" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Red-color/Red/Redish", + "ball": "Red-color/Red/Redish/More-redish", + "square": "((Green/Greenish))", + "triangle": "Red/1red", + "catwalk": "Red/Red--2red" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Red/Red$2" + ], + [ + 5.5, + 0, + "Red/R#d" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Red-color/Red/Redish" + ], + [ + 5.5, + 0, + "Red-color/Red/Redish/More-redish" + ], + [ + 6.5, + 0, + "((Green/Greenish))" + ], + [ + 7.5, + 0, + "Red/1red" + ], + [ + 8.2, + 0, + "Red/Red--2red" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Red/Red$2", + "ball": "Red/R#d" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Red/Redish-like", + "ball": "Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TAG_GROUP_ERROR", + "alt_codes": [ + "TEMPORAL_TAG_ERROR" + ], + "name": "tag-group-error-missing", + "description": "A tag has tagGroup or topLevelTagGroup attribute, but is not enclosed in parentheses.", + "warning": false, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Definition/Blech, (Red)", + "Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red)", + "Onset", + "Duration/3.0 s", + "Delay/3.0 s" + ], + "passes": [ + "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))", + "((Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red)), Onset)", + "(Duration/3.0 s, (Event))", + "(Duration/3.0 s, Delay/2.0 s, (Event))" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red)", + "ball": "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red)), Onset" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))", + "ball": "((Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red)), Onset)" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red)" + ], + [ + 5.5, + 0, + "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red)), Onset" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))" + ], + [ + 5.5, + 0, + "((Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red)), Onset)" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red)", + "ball": "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red)), Onset" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "Def/Acc/7, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TAG_GROUP_ERROR", + "alt_codes": [ + "TEMPORAL_TAG_ERROR" + ], + "name": "tag-group-error-not-top-level", + "description": "A tag with the topLevelTagGroup does not appear at a HED tag group at the top level in an assembled HED annotation.", + "warning": false, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [], + "passes": [] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor, ((Duration/5 s, (Red)))" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor, (Duration/5 s, (Red))" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/banana", + "ball": "((Def/Acc/3.0 m-per-s^2, Onset))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "(Def/Acc/3.0 m-per-s^2, Onset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TAG_GROUP_ERROR", + "alt_codes": [ + "TEMPORAL_TAG_ERROR" + ], + "name": "multiple-top-level-tags-in-same-group", + "description": "Multiple tags with the topLevelTagGroup attribute appear in the same top-level tag group. (Delay and Duration are allowed to be in the same topLevelTagGroup).", + "warning": false, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Def/MyColor, Onset, Event-context)", + "(Event-context, Red, Offset)", + "(Event-context, Duration/3.0 s, Offset)", + "(Delay/3.0 s, Duration/2.0 s, Offset)" + ], + "passes": [ + "(Def/MyColor, Onset)", + "((Event), Duration/3.0 s, Delay/2.0 s)" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Acceleration/banana", + "ball": "(Def/Acc/3.0 m-per-s^2, Onset, Event-context)" + } + } + }, + { + "event_code": { + "HED": { + "face": "Acceleration/5.0", + "ball": "Onset" + } + }, + "val_col": { + "HED": "Time-interval/# s, (Duration/5.0 s, {event_code})" + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Acceleration/5.0)", + "ball": "Delay/5.0 s, (Acceleration/5.0)" + } + }, + "val_col": { + "HED": "Time-interval/# s, (Duration/5.0 s, {event_code})" + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Red, (Event-context, Def/MyColor, Onset)" + ], + [ + 5.0, + 0, + "Green" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Red, (Event-context, Def/MyColor)" + ], + [ + 5.0, + 0, + "Green" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/banana", + "ball": "(Def/Acc/3.0 m-per-s^2, Onset, Event-context)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, (Def/MyColor, Event-context, Event-context)" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "(Def/Acc/3.0 m-per-s^2, Onset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue, (Event-context, Label/Red)" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TAG_INVALID", + "alt_codes": [], + "name": "tag-invalid-in-schema", + "description": "The tag is not valid in the schema it is associated with.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Label #", + "ReallyInvalid/Extension", + "ReallyInvalid" + ], + "passes": [ + "Brown-color/Brown" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Label #", + "ball": "ReallyInvalid/Extension", + "square": "ReallyInvalid" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Brown-color/Brown" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Label #" + ], + [ + 5.5, + 0, + "Property/Sensory-event" + ], + [ + 5.5, + 0, + "Sensory-event/Baloney" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Brown-color/Brown" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "ReallyInvalid", + "ball": "Property/Sensory-event", + "square": "Sensory-event/Baloney" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "Def/Acc/7, Blue/Apples" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TAG_INVALID", + "alt_codes": [], + "name": "tag-has-extra-white space", + "description": "A HED tag has extra internal whitespace, including directly before or after slashes.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Sensory- event,Green", + "Sensory -event,Blue", + "Event /Sensory-event, Black", + "Event/ Sensory-event,White" + ], + "passes": [ + "Sensory-event, Green" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "square": "Sensory- event,Green", + "test": "Sensory -event,Blue", + "pine": "Event /Sensory-event, Black", + "apple": "Event/ Sensory-event,White" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Sensory-event, Green", + "ball": "Def/Acc/4.5 m-per-s^2, Def/Acc/3.2 m-per-s^2" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 5.5, + 0, + "Sensory- event,Green" + ], + [ + 7.5, + 0, + "Sensory -event,Blue" + ], + [ + 8.2, + 0, + "Event /Sensory-event, Black" + ], + [ + 9.1, + 0, + "Event/ Sensory-event,White" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Sensory-event, Green" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "square": "Sensory- event,Green", + "test": "Sensory -event,Blue", + "pine": "Event /Sensory-event, Black", + "apple": "Event/ Sensory-event,White" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "test", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "apple", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": " Red, Green", + "ball": "Def/Acc/4.5 m-per-s^2, Def/Acc/3.2" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TAG_INVALID", + "alt_codes": [], + "name": "tag-has-leading-trailing-or-consecutive-slashes", + "description": "A HED tag has leading, trailing or consecutive slashes.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "/Event", + "Red/", + "Event//Sensory-event", + "//Event", + "Body-part/Head-part//Brain", + "Def/Acc/4.5//", + "Def/Acc/4.5/", + "/ /Def/Acc/4.5 ms/" + ], + "passes": [ + "Body-part/Head-part/Brain", + "Label/Red, Informational-property/Label/Blue" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Event//Sensory-event", + "ball": "/Event", + "square": "Red/", + "test": "/ /Def/Acc/4.5 ms/" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Body-part/Head-part/Brain", + "ball": "Def/Acc/4.5 m-per-s^2, Def/Acc/3.2 m-per-s^2" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "/Event," + ], + [ + 5.5, + 0, + "Body-part/Head-part//Brain" + ], + [ + 6.5, + 0, + "Event/Sensory-event/" + ], + [ + 7.2, + 0, + "/ /Def/Acc/4.5 ms/" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Event/Sensory-event" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Event//Sensory-event", + "ball": "//Event", + "square": "Body-part/Head-part//Brain", + "test": "/ /Def/Acc/4.5 ms/" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red/, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ], + [ + 7.2, + 0, + "n/a", + "/ /Def/Acc/4.5 ms/" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "Def/Acc/7, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Event/Sensory-event" + ] + ] + } + ] + } + } + }, + { + "error_code": "TAG_NOT_UNIQUE", + "alt_codes": [], + "name": "tag-not-unique", + "description": "A tag with unique attribute appears more than once in an event-level HED string.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Event-context, (Red, Blue)), (Event-context, (Green, Yellow))" + ], + "passes": [ + "(Event-context, (Red, Blue))" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Event-context, (Red, Blue)), (Event-context, (Green, Yellow))" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Event-context, (Red, Blue))" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Event-context, (Red, Blue)), (Event-context, (Green, Yellow))" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Event-context, (Red, Blue))" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Event-context, (Red, Blue)), (Event-context, (Green, Yellow))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Event-context, (Red, Blue))", + "ball": "Def/Acc/7, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "(Event-context, (Red, Blue))" + ] + ] + } + ] + } + } + }, + { + "error_code": "TAG_REQUIRES_CHILD", + "alt_codes": [], + "name": "tag-requires-child-no-child", + "description": "A tag has the requireChild schema attribute but does not have a child.", + "warning": false, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Blue, Description)", + "Label, Red" + ], + "passes": [ + "(Blue, Description/Yes this is a description., (Red))", + "Label/Redish, Red" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Blue, Description)", + "ball": "Label, Red" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Blue, Description/Yes this is a description., (Red))", + "ball": "Label/Redish, Red" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Blue, Description)" + ], + [ + 5.0, + 0, + "Label, Red" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Blue, Description/Yes this is a description., (Red))" + ], + [ + 5.0, + 0, + "Label/Redish, Red" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Blue, Description)", + "ball": "Label, Red" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "Def/Acc/7, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Label/Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [ + "TAG_GROUP_ERROR" + ], + "name": "temporal-tag-error-not-tag-group", + "description": "An Onset or Offset tag does not appear in a tag group.", + "warning": false, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Onset, Red", + "Offset, Def/Acc/5.4 m-per-s^2" + ], + "passes": [ + "(Onset, Def/Acc/5.4 m-per-s^2)" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Onset, Red", + "ball": "Offset, Def/Acc/5.4 m-per-s^2" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Onset, Def/Acc/5.4 m-per-s^2)" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Onset, Red" + ], + [ + 4.8, + 0, + "(Onset, MyColor)" + ], + [ + 5.0, + 0, + "Offset, MyColor" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Onset, (Def-expand/MyColor, (Label/Pie)), (Red))" + ], + [ + 5.5, + 0, + "(Onset, Def/Acc/5.4 m-per-s^2)" + ], + [ + 6.3, + 0, + "(Offset, Def/Acc/5.4 m-per-s^2)" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Onset, Red", + "ball": "Offset, Def/Acc/5.4 m-per-s^2" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "ball", + "Onset, Red" + ], + [ + 4.8, + 0, + "n/a", + "(Onset/MyColor)" + ], + [ + 5.0, + 0, + "face", + "Offset, MyColor" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Onset, Def/Acc/5.4 m-per-s^2)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 5.5, + 0, + "n/a", + "(Onset, Def/Acc/5.4 m-per-s^2)" + ], + [ + 6.3, + 0, + "n/a", + "(Offset, Def/Acc/5.4 m-per-s^2)" + ], + [ + 8.5, + 0, + "face", + "Blue" + ], + [ + 9.0, + 0, + "n/a", + "Green, ((Def-expand/MyColor, (Label/Pie)), Onset)" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [ + "TAG_GROUP_ERROR" + ], + "name": "temporal-tag-error-nested-group", + "description": "An Onset or Offset tag appears in a nested tag group (not a top-level tag group).", + "warning": false, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "((Onset, Def/MyColor), Red)" + ], + "passes": [ + "(Onset, Def/MyColor), Red" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "((Onset, Def/MyColor), Red)" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Onset, Def/MyColor), Red" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "((Onset, Def/MyColor), Red)" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Onset, Def/MyColor), Red" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "((Onset, Def/MyColor), Red)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "n/a", + "((Onset, Def/MyColor), Red)" + ], + [ + 5.0, + 0, + "face", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Onset, Def/MyColor), Red" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "n/a", + "(Onset, Def/MyColor), Red" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [], + "name": "temporal-tag-error-wrong-number-of-defs", + "description": "An Onset or Offset tag is not grouped with exactly one Def-expand tag group or a Def tag.", + "warning": false, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Onset, (Red))" + ], + "passes": [ + "(Onset, Def/MyColor, (Red))", + "(Onset, (Def-expand/MyColor, (Label/Pie)), (Red))" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Onset, (Red))", + "ball": "(Onset, Def/MyColor, Def/Acc/4.3 m-per-s^2)" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Onset, Def/MyColor, (Red))" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Onset, (Red))" + ], + [ + 5.5, + 0, + "(Onset, Def/MyColor, Def/Acc/4.3 m-per-s^2)" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Onset, Def/MyColor, (Red))" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Onset, (Red))", + "ball": "(Onset, Def/MyColor, Def/Acc/4.3 m-per-s^2)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Green, Def/MyColor" + ], + [ + 5.0, + 0, + "n/a", + "(Onset, (Yellow))" + ], + [ + 6.0, + 0, + "ball", + "n/a" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Onset, Def/MyColor, (Red))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "n/a", + "(Onset, Def/MyColor, (Blue))" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [], + "name": "temporal-tag-error-onset-has-more-groups", + "description": "An Onset group has more than one additional tag group.", + "warning": false, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Onset, Def/MyColor, (Red), (Blue))", + "((Def-expand/MyColor, (Label/Pie)), (Green), (Red), Onset)" + ], + "passes": [ + "(Onset, Def/MyColor)", + "((Def-expand/MyColor, (Label/Pie)), (Red), Onset)" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Onset, Def/MyColor, (Red), (Blue))", + "ball": "((Def-expand/MyColor, (Label/Pie)), (Green), (Yellow), Onset)" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Onset, Def/MyColor)", + "ball": "((Def-expand/MyColor, (Label/Pie)), (Green, (Yellow)), Onset)" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Onset, Def/MyColor, (Red), (Blue))" + ], + [ + 5.5, + 0, + "((Def-expand/MyColor, (Label/Pie)), (Green), ((Yellow)), Onset)" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Onset, Def/MyColor)" + ], + [ + 5.0, + 0, + "((Def-expand/MyColor, (Label/Pie)), (Green, (Yellow)), Onset)" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "((Def-expand/MyColor, (Label/Pie)), (Green), ((Yellow)), Onset)", + "ball": "(Onset, Def/MyColor, (Red), (Blue))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ], + [ + 6.0, + 0, + "n/a", + "(Def/MyColor, (Red), (Blue), Onset)" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Onset, Def/MyColor)", + "ball": "((Def-expand/MyColor, (Label/Pie)), (Green, (Yellow)), Onset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "n/a", + "((Def-expand/MyColor, (Label/Pie)), (Green, (Yellow)), Onset)" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [], + "name": "temporal-tag-error-offset-has-groups", + "description": "An Offset appears with one or more tags or additional tag groups.", + "warning": false, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Offset, Def/MyColor, Red)", + "((Def-expand/MyColor, (Label/Pie)), Offset, (Red))" + ], + "passes": [ + "(Offset, Def/MyColor)" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Onset, Def/MyColor)", + "ball": "((Def-expand/MyColor, (Label/Pie)), Onset)", + "square": "(Offset, Def/MyColor, (Red))", + "circle": "((Def-expand/MyColor, (Label/Pie)), Offset, Blue)" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Onset, Def/MyColor)", + "ball": "((Def-expand/MyColor, (Label/Pie)), Onset)", + "square": "(Offset, Def/MyColor)", + "circle": "((Def-expand/MyColor, (Label/Pie)), Offset)" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Onset, Def/MyColor)" + ], + [ + 4.8, + 0, + "(Offset, Def/MyColor, (Red))" + ], + [ + 4.9, + 0, + "(Onset, Def/MyColor, (Red))" + ], + [ + 5.5, + 0, + "((Def-expand/MyColor, (Label/Pie)), (Green), Offset)" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Onset, Def/MyColor)" + ], + [ + 4.8, + 0, + "(Offset, Def/MyColor)" + ], + [ + 4.9, + 0, + "(Onset, Def/MyColor, (Red))" + ], + [ + 5.5, + 0, + "((Def-expand/MyColor, (Label/Pie)), Offset)" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Onset, Def/MyColor)", + "ball": "((Def-expand/MyColor, (Label/Pie)), Onset)", + "square": "(Offset, Def/MyColor, (Red))", + "circle": "((Def-expand/MyColor, (Label/Pie)), Offset, Blue)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "n/a" + ], + [ + 4.8, + 0, + "square", + "n/a" + ], + [ + 4.9, + 0, + "ball", + "Green" + ], + [ + 5.5, + 0, + "((Def-expand/MyColor, (Label/Pie)), Offset, Blue)", + "Orange" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Onset, Def/MyColor)", + "ball": "((Def-expand/MyColor, (Label/Pie)), Onset)", + "square": "(Offset, Def/MyColor)", + "circle": "((Def-expand/MyColor, (Label/Pie)), Offset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "n/a" + ], + [ + 4.8, + 0, + "square", + "n/a" + ], + [ + 4.9, + 0, + "ball", + "Green" + ], + [ + 5.5, + 0, + "((Def-expand/MyColor, (Label/Pie)), Offset, Blue)", + "Orange" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [], + "name": "temporal-tag-error-offset-with-no-onset", + "description": "An Offset tag associated with a given definition appears after a previous Offset tag without the appearance of an intervening Onset of the same name.", + "warning": false, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [], + "passes": [] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def/MyColor, Offset)" + ], + [ + 6.5, + 0, + "Red, (Def/MyColor, Offset)" + ], + [ + 5.5, + 0, + "(Def/MyColor, Offset)" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def/MyColor, Onset)" + ], + [ + 5.5, + 0, + "(Def/MyColor, Offset)" + ], + [ + 6.5, + 0, + "Red" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/MyColor, Onset)", + "ball": "(Def/MyColor, Offset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "ball", + "Red, Blue" + ], + [ + 4.8, + 0, + "ball", + "Red, Blue" + ], + [ + 5.0, + 0, + "face", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/MyColor, Onset)", + "ball": "(Def/MyColor, Offset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [], + "name": "temporal-tag-error-extra tags", + "description": "An Onset tag group with has tags besides the anchor Def or Def-expand that are not in a tag group.", + "warning": false, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Def/MyColor, Blue, Green, Onset)" + ], + "passes": [ + "(Def/MyColor, (Blue), Onset)" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Def/MyColor, Blue, Green, Onset)" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Def/MyColor, (Blue), Onset)" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def/MyColor, Blue, (Green), Onset)" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def/MyColor, (Blue), Onset)" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/MyColor, Blue, Green, Onset)", + "ball": "Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "((Blue, Green), Def/MyColor, Onset)", + "ball": "(Def/Acc/7, Onset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [], + "name": "temporal-tag-error-duplicated-onset-or-offset", + "description": "An Onset or an Offset with a given Def or Def-expand anchor appears in the same event marker with another Onset or Offset that uses the same anchor.", + "warning": false, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [], + "passes": [] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/MyColor, (Green), Onset)", + "ball": "Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "(Def/MyColor, (Blue), Onset)" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + }, + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/MyColor, (Green), Onset)", + "ball": "(Def/MyColor, Onset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "(Def/MyColor, Offset)" + ], + [ + 5.0, + 0, + "ball", + "(Def/MyColor, Offset)" + ] + ] + }, + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/MyColor, (Green), Onset)", + "ball": "(Def/MyColor, Onset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "(Def/MyColor, Offset)" + ], + [ + 5.0, + 0, + "ball", + "(Def/MyColor, Offset)" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "((Blue, Green), Def/MyColor, Onset)", + "ball": "(Def/MyColor, Onset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [], + "name": "temporal-tag-error-inset-outside-its-event", + "description": "An Inset tag is not grouped with a Def or Def-expand of an ongoing Onset.", + "warning": false, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [], + "passes": [] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Inset, (Red))" + ], + [ + 6.5, + 0, + "Red, (Def/MyColor, Offset)" + ], + [ + 5.5, + 0, + "(Def/MyColor, Offset)" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def/MyColor, Onset)" + ], + [ + 5.5, + 0, + "(Def/MyColor, Offset)" + ], + [ + 6.5, + 0, + "Red" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/MyColor, Onset)", + "ball": "(Def/MyColor, Offset)", + "snack": "(Def/MyColor, Inset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "snack", + "Red, Blue" + ], + [ + 4.8, + 0, + "face", + "Red, Blue" + ], + [ + 5.0, + 0, + "face", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/MyColor, Onset)", + "ball": "(Def/MyColor, Offset)", + "snack": "(Def/MyColor, Inset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 4.8, + 0, + "snack", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [], + "name": "temporal-tag-error-inset-group-has-extras", + "description": "An Inset group has tags or groups in addition to its defining Def or Def-expand.", + "warning": false, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [], + "passes": [] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 2.5, + 0, + "Red, (Def/MyColor, Onset)" + ], + [ + 4.5, + 0, + "(Def/MyColor, Blue, Inset)" + ], + [ + 6.5, + 0, + "Red, (Def/MyColor, Onset)" + ], + [ + 5.5, + 0, + "(Def/MyColor, Offset)" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def/MyColor, (Blue), Onset)" + ], + [ + 4.8, + 0, + "(Def/MyColor, (Green), Inset)" + ], + [ + 5.5, + 0, + "(Def/MyColor, Offset)" + ], + [ + 6.5, + 0, + "Red" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/MyColor, Onset)", + "ball": "(Def/MyColor, Offset)", + "snack": "(Def/MyColor, Inset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "snack", + "Red, Blue" + ], + [ + 4.8, + 0, + "face", + "Red, Blue" + ], + [ + 5.0, + 0, + "face", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/MyColor, Onset)", + "ball": "(Def/MyColor, Offset)", + "snack": "(Def/MyColor, Inset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 4.7, + 0, + "face", + "Blue" + ], + [ + 4.8, + 0, + "snack", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [], + "name": "temporal-tag-error-duration-group", + "description": "A Duration or Delay has extra tags or groups.", + "warning": false, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Duration/3.0 s, Delay/2.0 s, (Green), (Blue))", + "(Duration/3.0 s, (Green), (Blue))", + "(Delay/3.0 s, (Green), (Blue))" + ], + "passes": [ + "(Duration/3.0 s, Delay/2.0 s, (Blue))", + "(Duration/3.0 s, (Blue))", + "(Delay/3.0 s, (Blue))" + ] + }, + "sidecar_tests": { + "fails": [], + "passes": [] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 5.0, + 0, + "(Duration/3.0 s, Delay/2.0 s)" + ], + [ + 5.5, + 0, + "(Duration/3.0 s, Delay/2.0 s, Event)" + ], + [ + 6.0, + 0, + "(Duration/3.0 s, Delay/2.0 s, (Green), (Blue))" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "((Blue), Duration/3.0 s)" + ], + [ + 4.8, + 0, + "((Green), Delay/2.0 s)" + ], + [ + 5.0, + 0, + "((Green), Duration/3.0 s, Delay/2.0 s)" + ] + ] + ] + }, + "combo_tests": { + "fails": [], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Duration/3.0 s, (Event))", + "ball": "(Delay/3.0 s, (Event))", + "snack": "(Duration/3.0 s, Delay/2.0 s, (Event))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 4.7, + 0, + "face", + "Blue" + ], + [ + 4.8, + 0, + "snack", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [ + "TAG_GROUP_ERROR" + ], + "name": "temporal-tag-error-tag-appears-where-not-allowed", + "description": "A temporal tag appears appears in a tsv with no onset column", + "warning": false, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [], + "passes": [] + }, + "event_tests": { + "fails": [ + [ + [ + "duration", + "HED" + ], + [ + 0, + "(Duration/5 s, (Red))" + ], + [ + 0, + "Red, (Def/MyColor, Onset)" + ], + [ + 0, + "(Def/MyColor, Yellow, Inset)" + ], + [ + 0, + "Red, (Def/MyColor, Onset)" + ], + [ + 0, + "(Def/MyColor, Offset)" + ] + ] + ], + "passes": [ + [ + [ + "duration", + "HED" + ], + [ + 0, + "(Def/MyColor, (Blue))" + ], + [ + 0, + "(Def/MyColor, (Green))" + ], + [ + 0, + "(Def/MyColor)" + ], + [ + 0, + "Red" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/MyColor, Onset)", + "ball": "(Def/MyColor, Offset)", + "snack": "(Def/MyColor, Inset)" + } + } + }, + "events": [ + [ + "event_code", + "HED" + ], + [ + "n/a", + "(Duration/5.0, (Red))" + ], + [ + "face", + "Def/MyColor, Red, Blue" + ], + [ + "ball", + "Def/MyColor, Red, Blue" + ], + [ + "snack", + "Green" + ] + ] + }, + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Duration/5.0, (Red))", + "ball": "(Delay/4.0, (Green))" + } + } + }, + "events": [ + [ + "event_code", + "HED" + ], + [ + "face", + "Def/MyColor, Red, Blue" + ], + [ + "ball", + "Def/MyColor, Red, Blue" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/MyColor)", + "ball": "(Def/MyColor)", + "snack": "(Def/MyColor)" + } + } + }, + "events": [ + [ + "event_code", + "HED" + ], + [ + "face", + "Blue" + ], + [ + "face", + "Blue" + ], + [ + "snack", + "Blue" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [ + "TAG_GROUP_ERROR" + ], + "name": "temporal-tag-error-not-tag-group-delay", + "description": "A Delay is not in the tag group.", + "warning": false, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Delay, Red", + "Delay, Def/Acc/5.4 m-per-s^2" + ], + "passes": [ + "(Delay/5 s, (Def/Acc/5.4 m-per-s^2))" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Blue, Red", + "ball": "Delay/5.0 s, Def/Acc/5.4 m-per-s^2" + } + } + }, + { + "event_code": { + "HED": { + "face": "Blue, Red", + "ball": "Delay/5.0 s, (Def/Acc/5.4 m-per-s^2)" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, (Def/Acc/5.4 m-per-s^2))" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 5.0, + 0, + "Delay/1.0 s, Red" + ] + ], + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Delay/1.0 s, (Red)" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Delay/5.0 s, (Red))" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Red", + "ball": "Delay/5.0 s, Def/Acc/5.4 m-per-s^2" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "ball", + "Red" + ], + [ + 4.8, + 0, + "n/a", + "Blue" + ], + [ + 5.0, + 0, + "face", + "Green" + ] + ] + }, + { + "sidecar": { + "event_code": { + "HED": { + "face": "Red", + "ball": "Delay/5.0 s, (Def/Acc/5.4 m-per-s^2)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "ball", + "Red" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, (Def/Acc/5.4 m-per-s^2))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 8.5, + 0, + "face", + "Blue" + ], + [ + 9.0, + 0, + "n/a", + "Green, (Delay/5.0 s, (Def/MyColor))" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [ + "TAG_GROUP_ERROR" + ], + "name": "temporal-tag-error-nested-group-delay", + "description": "An Onset or Offset tag appears in a nested tag group (not a top-level tag group).", + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "((Delay/5.0 s, Onset, Def/MyColor), Red)" + ], + "passes": [ + "(Delay/5.0 s, Onset, Def/MyColor), Red" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "((Delay/5.0 s, Onset, Def/MyColor), Red)" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Onset, Def/MyColor), Red" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "((Delay/5.0 s, Onset, Def/MyColor), Red)" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Delay/5.0 s, Onset, Def/MyColor), Red" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "((Delay/5.0 s, Onset, Def/MyColor), Red)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "n/a", + "((Delay/5.0 s, Onset, Def/MyColor), Red)" + ], + [ + 5.0, + 0, + "face", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Onset, Def/MyColor), Red" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "n/a", + "(Delay/5.0 s, Onset, Def/MyColor), Red" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [ + "TAG_GROUP_ERROR" + ], + "name": "temporal-tag-error-wrong-number-of-defs-delay", + "description": "An Onset or Offset tag is not grouped with exactly one Def-expand tag group or a Def tag.", + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Delay/5.0 s, Onset, (Red))" + ], + "passes": [ + "(Delay/5.0 s, Onset, Def/MyColor, (Red))", + "(Delay/5.0 s, Onset, (Def-expand/MyColor, (Label/Pie)), (Red))" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Onset, (Red))", + "ball": "(Delay/5.0 s, Onset, Def/MyColor, Def/Acc/4.3 m-per-s^2)" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Onset, Def/MyColor, (Red))" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Delay/5.0 s, Onset, (Red))" + ], + [ + 5.5, + 0, + "(Delay/5.0 s, Onset, Def/MyColor, Def/Acc/4.3 m-per-s^2)" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Delay/5.0 s, Onset, Def/MyColor, (Red))" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Onset, (Red))", + "ball": "(Delay/5.0 s, Onset, Def/MyColor, Def/Acc/4.3 m-per-s^2)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Green, Def/MyColor" + ], + [ + 5.0, + 0, + "n/a", + "(Delay/5.0 s, Onset, (Yellow))" + ], + [ + 6.0, + 0, + "ball", + "n/a" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Onset, Def/MyColor, (Red))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "n/a", + "(Delay/5.0 s, Onset, Def/MyColor, (Blue))" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [ + "TAG_GROUP_ERROR" + ], + "name": "temporal-tag-error-onset-has-more-groups-delay", + "description": "An Onset group has more than one additional tag group.", + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Delay/5.0 s, Onset, Def/MyColor, (Red), (Blue))", + "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), (Green), (Red), Onset)" + ], + "passes": [ + "(Delay/5.0 s, Onset, Def/MyColor)", + "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), (Red), Onset)" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Onset, Def/MyColor, (Red), (Blue))", + "ball": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), (Green), (Yellow), Onset)" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Onset, Def/MyColor)", + "ball": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), (Green, (Yellow)), Onset)" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Delay/5.0 s, Onset, Def/MyColor, (Red), (Blue))" + ], + [ + 5.5, + 0, + "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), (Green), ((Yellow)), Onset)" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Delay/5.0 s, Onset, Def/MyColor)" + ], + [ + 5.0, + 0, + "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), (Green, (Yellow)), Onset)" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), (Green), ((Yellow)), Onset)", + "ball": "(Delay/5.0 s, Onset, Def/MyColor, (Red), (Blue))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ], + [ + 6.0, + 0, + "n/a", + "(Delay/5.0 s, Def/MyColor, (Red), (Blue), Onset)" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Onset, Def/MyColor)", + "ball": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), (Green, (Yellow)), Onset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "n/a", + "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), (Green, (Yellow)), Onset)" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [ + "TAG_GROUP_ERROR" + ], + "name": "temporal-tag-error-offset-has-groups-delay", + "description": "An Offset appears with one or more tags or additional tag groups.", + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Delay/5.0 s, Offset, Def/MyColor, Red)", + "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Offset, (Red))" + ], + "passes": [ + "(Delay/5.0 s, Offset, Def/MyColor)" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Onset, Def/MyColor)", + "ball": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Onset)", + "square": "(Delay/5.0 s, Offset, Def/MyColor, (Red))", + "circle": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Offset, Blue)" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Onset, Def/MyColor)", + "ball": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Onset)", + "square": "(Delay/5.0 s, Offset, Def/MyColor)", + "circle": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Offset)" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Delay/5.0 s, Onset, Def/MyColor)" + ], + [ + 4.8, + 0, + "(Delay/5.0 s, Offset, Def/MyColor, (Red))" + ], + [ + 4.9, + 0, + "(Delay/5.0 s, Onset, Def/MyColor, (Red))" + ], + [ + 5.5, + 0, + "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), (Green), Offset)" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Delay/5.0 s, Onset, Def/MyColor)" + ], + [ + 4.8, + 0, + "(Delay/5.0 s, Offset, Def/MyColor)" + ], + [ + 4.9, + 0, + "(Delay/5.0 s, Onset, Def/MyColor, (Red))" + ], + [ + 5.5, + 0, + "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Offset)" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Onset, Def/MyColor)", + "ball": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Onset)", + "square": "(Delay/5.0 s, Offset, Def/MyColor, (Red))", + "circle": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Offset, Blue)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "n/a" + ], + [ + 4.8, + 0, + "square", + "n/a" + ], + [ + 4.9, + 0, + "ball", + "Green" + ], + [ + 5.5, + 0, + "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Offset, Blue)", + "Orange" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Onset, Def/MyColor)", + "ball": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Onset)", + "square": "(Delay/5.0 s, Offset, Def/MyColor)", + "circle": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Offset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "n/a" + ], + [ + 4.8, + 0, + "square", + "n/a" + ], + [ + 4.9, + 0, + "ball", + "Green" + ], + [ + 5.5, + 0, + "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Offset, Blue)", + "Orange" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [ + "TAG_GROUP_ERROR" + ], + "name": "temporal-tag-error-mismatch-delay", + "description": "An Offset tag associated with a given definition appears after a previous Offset tag without the appearance of an intervening Onset of the same name.", + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [], + "passes": [] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Delay/5.0 s, Def/MyColor, Offset)" + ], + [ + 6.5, + 0, + "Red, (Delay/5.0 s, Def/MyColor, Offset)" + ], + [ + 5.5, + 0, + "(Delay/5.0 s, Def/MyColor, Offset)" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Delay/5.0 s, Def/MyColor, Offset)" + ], + [ + 5.5, + 0, + "(Def/MyColor, Onset)" + ], + [ + 6.5, + 0, + "Red" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Def/MyColor, Onset)", + "ball": "(Delay/5.0 s, Def/MyColor, Offset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "ball", + "Red, Blue" + ], + [ + 4.8, + 0, + "ball", + "Red, Blue" + ], + [ + 5.0, + 0, + "face", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/MyColor, Onset)", + "ball": "(Delay/5.0 s, Def/MyColor, Offset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "ball", + "Blue" + ], + [ + 5.0, + 0, + "face", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [ + "TAG_GROUP_ERROR" + ], + "name": "temporal-tag-error-extra tags-delay", + "description": "An Onset tag group with has tags besides the anchor Def or Def-expand that are not in a tag group.", + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Delay/5.0 s, Def/MyColor, Blue, Green, Onset)" + ], + "passes": [ + "(Delay/5.0 s, Def/MyColor, (Blue), Onset)" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Def/MyColor, Blue, Green, Onset)" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Def/MyColor, (Blue), Onset)" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Delay/5.0 s, Def/MyColor, Blue, (Green), Onset)" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Delay/5.0 s, Def/MyColor, (Blue), Onset)" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Def/MyColor, Blue, Green, Onset)", + "ball": "Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, (Blue, Green), Def/MyColor, Onset)", + "ball": "(Delay/5.0 s, Def/Acc/7, Onset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "ball", + "Blue" + ], + [ + 5.0, + 0, + "face", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [ + "TAG_GROUP_ERROR" + ], + "name": "temporal-tag-error-duplicated-onset-or-offset-delay", + "description": "An Onset or an Offset with a given Def or Def-expand anchor appears in the same event marker with another Onset or Offset that uses the same anchor.", + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [], + "passes": [] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Def/MyColor, (Green), Onset)", + "ball": "Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "(Delay/5.0 s, Def/MyColor, (Blue), Onset)" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + }, + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Def/MyColor, (Green), Onset)", + "ball": "(Delay/5.0 s, Def/MyColor, Onset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "(Delay/5.0 s, Def/MyColor, Offset)" + ], + [ + 5.0, + 0, + "ball", + "(Delay/5.0 s, Def/MyColor, Offset)" + ] + ] + }, + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Def/MyColor, (Green), Onset)", + "ball": "(Delay/5.0 s, Def/MyColor, Onset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "(Delay/5.0 s, Def/MyColor, Offset)" + ], + [ + 5.0, + 0, + "ball", + "(Delay/5.0 s, Def/MyColor, Offset)" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, (Blue, Green), Def/MyColor, Onset)", + "ball": "(Delay/5.0 s, Def/MyColor, Onset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [ + "TAG_GROUP_ERROR" + ], + "name": "temporal-tag-error-inset-outside-its-event-delay", + "description": "An Inset tag is not grouped with a Def or Def-expand of an ongoing Onset.", + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [], + "passes": [] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Delay/5.0 s, Inset, (Red))" + ], + [ + 6.5, + 0, + "Red, (Delay/5.0 s, Def/MyColor, Offset)" + ], + [ + 5.5, + 0, + "(Delay/5.0 s, Def/MyColor, Offset)" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Delay/5.0 s, Def/MyColor, Onset)" + ], + [ + 5.5, + 0, + "(Delay/5.0 s, Def/MyColor, Offset)" + ], + [ + 6.5, + 0, + "Red" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Def/MyColor, Onset)", + "ball": "(Delay/5.0 s, Def/MyColor, Offset)", + "snack": "(Delay/5.0 s, Def/MyColor, Inset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "snack", + "Red, Blue" + ], + [ + 4.8, + 0, + "face", + "Red, Blue" + ], + [ + 5.0, + 0, + "face", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/2.0 s, Def/MyColor, Onset)", + "ball": "(Delay/5.0 s, Def/MyColor, Offset)", + "snack": "(Def/MyColor, Inset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 1.5, + 0, + "face", + "Blue" + ], + [ + 4.8, + 0, + "ball", + "Blue" + ], + [ + 5.0, + 0, + "snack", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [ + "TAG_GROUP_ERROR" + ], + "name": "temporal-tag-error-inset-group-has-extras-delay", + "description": "An Inset group has tags or groups in addition to its defining Def or Def-expand.", + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [], + "passes": [] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 2.5, + 0, + "Red, (Delay/5.0 s, Def/MyColor, Onset)" + ], + [ + 4.5, + 0, + "(Delay/5.0 s, Def/MyColor, Blue, Inset)" + ], + [ + 6.5, + 0, + "Red, (Delay/5.0 s, Def/MyColor, Onset)" + ], + [ + 5.5, + 0, + "(DDelay/5.0 s, ef/MyColor, Offset)" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Delay/5.0 s, Def/MyColor, (Blue), Onset)" + ], + [ + 4.8, + 0, + "(Delay/5.0 s, Def/MyColor, (Green), Inset)" + ], + [ + 5.5, + 0, + "(Delay/5.0 s, Def/MyColor, Offset)" + ], + [ + 6.5, + 0, + "Red" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Def/MyColor, Onset)", + "ball": "(Delay/5.0 s, Def/MyColor, Offset)", + "snack": "(Delay/5.0 s, Def/MyColor, Inset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "snack", + "Red, Blue" + ], + [ + 4.8, + 0, + "face", + "Red, Blue" + ], + [ + 5.0, + 0, + "face", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Def/MyColor, Onset)", + "ball": "(Delay/5.0 s, Def/MyColor, Offset)", + "snack": "(Delay/5.0 s, Def/MyColor, Inset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 4.7, + 0, + "face", + "Blue" + ], + [ + 4.8, + 0, + "snack", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [ + "TAG_GROUP_ERROR" + ], + "name": "temporal-tag-error-tag-appears-where-not-allowed-delay", + "description": "An Inset, Offset, or Onset tag appears in a tsv with no onset column", + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [], + "passes": [] + }, + "event_tests": { + "fails": [ + [ + [ + "duration", + "HED" + ], + [ + 0, + "Red, (Delay/5.0 s, Def/MyColor, Onset)" + ], + [ + 0, + "(Delay/5.0 s, Def/MyColor, Yellow, Inset)" + ], + [ + 0, + "Red, (Delay/5.0 s, Def/MyColor, Onset)" + ], + [ + 0, + "(Delay/5.0 s, Def/MyColor, Offset)" + ] + ] + ], + "passes": [ + [ + [ + "duration", + "HED" + ], + [ + 0, + "(Def/MyColor, (Blue))" + ], + [ + 0, + "(Def/MyColor, (Green))" + ], + [ + 0, + "(Def/MyColor)" + ], + [ + 0, + "Red" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Def/MyColor, Onset)", + "ball": "(Delay/5.0 s, Def/MyColor, Offset)", + "snack": "(Delay/5.0 s, Def/MyColor, Inset)" + } + } + }, + "events": [ + [ + "event_code", + "HED" + ], + [ + "face", + "Def/MyColor, Red, Blue" + ], + [ + "ball", + "Def/MyColor, Red, Blue" + ], + [ + "snack", + "Green" + ] + ] + }, + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Def/MyColor, Duration)", + "ball": "(Delay/5.0 s, Def/MyColor, Delay)" + } + } + }, + "events": [ + [ + "event_code", + "HED" + ], + [ + "face", + "Def/MyColor, Red, Blue" + ], + [ + "ball", + "Def/MyColor, Red, Blue" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/MyColor)", + "ball": "(Def/MyColor)", + "snack": "(Def/MyColor)" + } + } + }, + "events": [ + [ + "event_code", + "HED" + ], + [ + "face", + "Blue" + ], + [ + "face", + "Blue" + ], + [ + "snack", + "Blue" + ] + ] + } + ] + } + } + }, + { + "error_code": "TILDES_UNSUPPORTED", + "alt_codes": [ + "CHARACTER_INVALID" + ], + "name": "tildes-unsupported", + "description": "The tilde syntax is no longer supported for any version of HED.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Red ~ Blue", + "Red, Blue ~ Green ~ Yellow" + ], + "passes": [ + "Red, Blue" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Red ~ Blue", + "ball": "Red, Blue ~ Green ~ Yellow" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "(Def/MyColor, Onset),(Def/Acc/3.5 m-per-s^2)" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Red ~ Blue" + ], + [ + 5.0, + 0, + "Red, Blue ~ Green ~ Yellow" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Red, Blue), (Green, (Yellow))" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Red ~ Blue", + "ball": "Red, Blue ~ Green ~ Yellow" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Blue ~ Green ~ Yellow" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "Def/Acc/7, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "UNITS_INVALID", + "alt_codes": [], + "name": "units-invalid-for-unit-class", + "description": "A tag has a value with units that are invalid or not of the correct unit class for the tag.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Def/Acc/3 s", + "Weight/3 ms" + ], + "passes": [ + "Distance/4 km" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Def/Acc/3 s", + "ball": "Weight/3 ms" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Distance/4 km", + "ball": "Angle/4 degrees" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Acc/3 s" + ], + [ + 5.5, + 0, + "Weight/3 ms" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Distance/4 km" + ], + [ + 5.0, + 0, + "Angle/4 degrees" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Def/Acc/3 s", + "ball": "Weight/3 ms" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "Def/Acc/7, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "UNITS_INVALID", + "alt_codes": [], + "name": "units-invalid-si-units", + "description": "A unit modifier is applied to units that are not SI units.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Distance/3 kfeet", + "Distance/3 kmeters" + ], + "passes": [ + "Distance/3 kilometres" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Distance/3 kfeet", + "ball": "Distance/3 kmeters" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Distance/3 kilometres" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Distance/3 kfeet" + ], + [ + 5.0, + 0, + "Distance/3 kmeters" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Distance/3 kilometres" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Distance/3 kfeet", + "ball": "Distance/3 kmeters" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "Def/Acc/7, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "UNITS_MISSING", + "alt_codes": [], + "name": "units-missing-on-node-with-unit-class", + "description": "A tag that takes value and has a unit class does not have units.", + "warning": true, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Acceleration/4.5" + ], + "passes": [ + "Distance/4 km" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Def/Acc/3", + "ball": "Acceleration/4.5" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Distance/4 km", + "ball": "Angle/4 degrees" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Acc/3" + ], + [ + 5.5, + 0, + "Acceleration/4.5" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Distance/4 km" + ], + [ + 5.0, + 0, + "Angle/4 degrees" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Def/Acc/3", + "ball": "Acceleration/4.5" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "Def/Acc/7 m-per-s^2, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "UNITS_MISSING", + "alt_codes": [], + "name": "units-missing-on-node-with-unit-class", + "description": "A tag that takes value and has a unit class does not have units.", + "warning": true, + "schema": "8.3.0", + "definitions": [], + "tests": { + "string_tests": { + "fails": [ + "Temperature/4.5" + ], + "passes": [ + "Temperature/4 oC" + ] + }, + "sidecar_tests": { + "fails": [], + "passes": [] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [], + "passes": [] + } + } + }, + { + "error_code": "VALUE_INVALID", + "alt_codes": [ + "CHARACTER_INVALID", + "TAG_INVALID" + ], + "name": "value-invalid-#-substitution", + "description": "The value substituted for a placeholder (`#`) is not valid.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Def/Acc/MyMy", + "ball": "Distance/4mxxx" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Def/Acc/3.4 m-per-s^2", + "ball": "Distance/4 m" + } + } + } + ] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "response": { + "HED": "Item-count/#" + } + }, + "events": [ + [ + "onset", + "duration", + "response", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + 4, + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "response": { + "HED": "Item-count/#" + } + }, + "events": [ + [ + "onset", + "duration", + "response", + "HED" + ], + [ + 4.5, + 0, + 5, + "Blue" + ], + [ + 5.0, + 0, + 2, + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "VALUE_INVALID", + "alt_codes": [ + "CHARACTER_INVALID" + ], + "name": "value-invalid-incompatible-value-class", + "description": "A tag placeholder value is incompatible with the specified value class.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Statistical-accuracy/1max1" + ], + "passes": [ + "Statistical-accuracy/0.677" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Statistical-accuracy/1max1" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Statistical-accuracy/0.677" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Statistical-accuracy/1max1" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Statistical-accuracy/0.677" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Statistical-accuracy/1max1" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "Def/Acc/7, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "VALUE_INVALID", + "alt_codes": [ + "CHARACTER_INVALID", + "TAG_INVALID", + "UNITS_INVALID" + ], + "name": "value-invalid-blank-missing-before-units", + "description": "The units are not separated from the value by a single blank.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Def/Acc/5m-per-s^2" + ], + "passes": [ + "Def/Acc/5 m-per-s^2" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Def/Acc/5m-per-s^2" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Def/Acc/5 m-per-s^2" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Acc/5m-per-s^2" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Acc/5 m-per-s^2" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/banana", + "ball": "Def/Acc/apple3, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "Def/Acc/7, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + } +] \ No newline at end of file diff --git a/tests/json_tests/CHARACTER_INVALID.json b/tests/json_tests/CHARACTER_INVALID.json index 1d545843..6015f937 100644 --- a/tests/json_tests/CHARACTER_INVALID.json +++ b/tests/json_tests/CHARACTER_INVALID.json @@ -1,18 +1,20 @@ [ - { + { "error_code": "CHARACTER_INVALID", - "name": "character-invalid-utf-8", + "alt_codes": ["TAG_INVALID", "UNITS_INVALID", "VALUE_INVALID"], + "name": "character-invalid-non-printing appears", "description": "The HED string contains a UTF-8 character.", - "schema": "8.1.0", + "warning": false, + "schema": "8.2.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { "fails": [ - "Collection/[x]", - "Description/This is a ʰ bad character" + "Item/Bl\b" ], "passes": [ - "Red, Blue, Description/Red" + "Red, Blue, Description/Red", + "Description/This is a ʰ good character" ] }, "sidecar_tests": { @@ -20,7 +22,7 @@ { "event_code": { "HED": { - "show": "Red, Label/a ʰ bad" + "show": "Red, Item/Bl\b" } } } @@ -29,7 +31,7 @@ { "event_code": { "HED": { - "show": "Red, Label/Good" + "show": "Red, Label/a ʰ good" } } } @@ -39,13 +41,13 @@ "fails": [ [ ["onset", "duration", "HED"], - [ 4.5, 0, "Label/a ʰ bad"] + [ 4.5, 0, "Item/Bl\b"] ] ], "passes": [ [ ["onset", "duration", "HED"], - [ 4.5, 0, "Label/Temp"] + [ 4.5, 0, "Label/Temp, Label/a ʰ good"] ] ] }, @@ -55,7 +57,7 @@ "sidecar": { "event_code": { "HED": { - "show": "Red, Label/a ʰ bad", + "show": "Red, Item/Bl\b", "ball": "Def/Acc/4.5 m-per-s^2" } } @@ -73,7 +75,7 @@ "sidecar": { "event_code": { "HED": { - "show": "Red, Label/a" + "show": "Red, Label/a, Description/a ʰ good" } } }, @@ -87,22 +89,33 @@ } } }, - { + { "error_code": "CHARACTER_INVALID", + "alt_codes": ["TAG_INVALID", "UNITS_INVALID", "VALUE_INVALID"], "name": "curly-braces-not-in-sidecar", - "description": "The curly brace notation is used outside of a sidecar.", - "schema": "8.1.0", + "description": "The curly brace notation is used outside a sidecar.", + "warning": false, + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { - "fails": [ - "{col_1}, Red" - ], - "passes": [ - "Red, Blue, Description/Red" - ] + "fails": ["{col_1}, Red"], + "passes": ["Red, Blue, Description/Red"] }, "sidecar_tests": { + "fails": [], + "passes": [ + { + "event_code": { + "HED": { + "face": "Statistical-accuracy/0.677, {response}" + } + }, + "response": { + "HED": "Label/#" + } + } + ] }, "event_tests": { "fails": [ @@ -119,22 +132,31 @@ ] }, "combo_tests": { + "fails": [], + "passes": [] } } }, { "error_code": "CHARACTER_INVALID", + "alt_codes": ["TAG_INVALID", "VALUE_INVALID"], "name": "invalid-character-name-value-class", "description": "An invalid character was used in an 8.3.0 or greater style text value class.", + "warning": false, "schema": "8.3.0", + "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { "fails": [ "Parameter-label/[", - "Parameter-label/Taco*" + "Parameter-label/Taco*", + "Label/30$", + "Label/30db kg" ], "passes": [ - "Parameter-label/Words" + "Parameter-label/Words", + "Label/30e10", + "Label/3e10asdf" ] }, "sidecar_tests": { @@ -157,29 +179,44 @@ }, "event_tests": { "fails": [ + [ + ["onset", "duration", "HED"], + [ 4.5, 0, "Statistical-accuracy/1max1"] + ], + [ + ["onset", "duration", "HED"], + [ 4.5, 0, "Label/30$"] + ], + [ + ["onset", "duration", "HED"], + [ 4.5, 0, "Label/30db kg"] + ] ], "passes": [ + [ + ["onset", "duration", "HED"], + [ 4.5, 0, "Label/3e10asdf"] + ] ] }, "combo_tests": { + "fails": [], + "passes": [] } } }, { "error_code": "CHARACTER_INVALID", + "alt_codes": ["TAG_INVALID", "UNITS_INVALID", "VALUE_INVALID"], "name": "invalid-character-name-value-class-deprecated", "description": "An invalid character was used in an 8.2.0 or lower style text value class.", + "warning": false, "schema": "8.2.0", + "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { - "fails": [ - "Parameter-label/[", - "Parameter-label/TacoÄ" - ], - "passes": [ - "Parameter-label/Words", - "Parameter-label/Taco*" - ] + "fails": ["Parameter-label/[", "Parameter-label/TacoÄ"], + "passes": ["Parameter-label/Words", "Parameter-label/Taco*"] }, "sidecar_tests": { "fails": [ @@ -200,20 +237,23 @@ ] }, "event_tests": { - "fails": [ - ], - "passes": [ - ] + "fails": [], + "passes": [] }, "combo_tests": { + "fails": [], + "passes": [] } } }, - { + { "error_code": "CHARACTER_INVALID", + "alt_codes": ["UNITS_INVALID"], "name": "invalid-character-numeric-class", "description": "An invalid character was used in an 8.3.0 or greater style numeric value class.", + "warning": false, "schema": "8.3.0", + "definitions": [], "tests": { "string_tests": { "fails": [ @@ -258,56 +298,12 @@ ] }, "event_tests": { - "fails": [ - ], - "passes": [ - ] - }, - "combo_tests": { - } - } - }, - { - "error_code": "CHARACTER_INVALID", - "name": "invalid-character-name-class", - "description": "An invalid character was used in an 8.3.0 or greater style numeric value class.", - "schema": "8.3.0", - "tests": { - "string_tests": { - "fails": [ - "Label/30$", - "Label/30db kg" - ], - "passes": [ - "Label/30e10", - "Label/3e10asdf" - ] - }, - "sidecar_tests": { - "fails": [ - { - "event_code": { - "HED": { - "show": "Label/3.0a" - } - } - } - ], - "passes": [ - { - "event_code": { - "HED": "Label/#" - } - } - ] - }, - "event_tests": { - "fails": [ - ], - "passes": [ - ] + "fails": [], + "passes": [] }, "combo_tests": { + "fails": [], + "passes": [] } } } diff --git a/tests/json_tests/COMMA_MISSING.json b/tests/json_tests/COMMA_MISSING.json index aec6f6af..1421ca5f 100644 --- a/tests/json_tests/COMMA_MISSING.json +++ b/tests/json_tests/COMMA_MISSING.json @@ -1,9 +1,11 @@ [ { "error_code": "COMMA_MISSING", + "alt_codes": [], "name": "comma-missing-tag-groups", "description": "Two tag groups are not separated by commas: (A, B)(C, D).", - "schema": "8.1.0", + "warning": false, + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { @@ -97,9 +99,11 @@ }, { "error_code": "COMMA_MISSING", + "alt_codes": [], "name": "comma-missing-tag-and-group", "description": "A tag and a tag group are not separated by commas: A(B,D).", - "schema": "8.1.0", + "warning": false, + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { diff --git a/tests/json_tests/DEFINITION_INVALID.json b/tests/json_tests/DEFINITION_INVALID.json index 7f923a06..a5ae4dc7 100644 --- a/tests/json_tests/DEFINITION_INVALID.json +++ b/tests/json_tests/DEFINITION_INVALID.json @@ -1,9 +1,11 @@ [ { "error_code": "DEFINITION_INVALID", + "alt_codes": ["TAG_GROUP_ERROR"], "name": "definition-invalid-tag-group", "description": "A Definition tag does not appear in a tag group at the top level in an annotation.", - "schema": "8.1.0", + "warning": false, + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { @@ -81,9 +83,10 @@ }, { "error_code": "DEFINITION_INVALID", - "name": "definition-invalid-missing-inner-group", - "description": "A definition's enclosing tag group is missing the inner tag group (i.e., the definition's contents).", - "schema": "8.1.0", + "alt_codes": ["TAG_EMPTY"], +g "description": "A definition's enclosing tag group has an empty inner group (i.e., the definition's contents).", + "warning": false, + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { @@ -97,19 +100,19 @@ { "defs": { "HED": { - "def1": "(Definition/Apple)" + "def2": "(Definition/Blech/#, ())" } - } - }, + } + } + ], + "passes": [ { "defs": { "HED": { - "def2": "(Definition/Blech/#, ())" + "def1": "(Definition/Apple)" } } } - ], - "passes": [ ] }, "event_tests": { @@ -124,7 +127,6 @@ "sidecar": { "defs": { "HED": { - "def1": "(Definition/Apple), ((Definition/Blech, (Red)))", "def2": "(Definition/Blech/#, ())" } } @@ -141,7 +143,7 @@ "sidecar": { "defs": { "HED": { - "def1": "(Definition/Apple, (Blue))", + "def1": "(Definition/Apple)", "def2": "(Definition/Blech, (Red))" } } @@ -158,9 +160,11 @@ }, { "error_code": "DEFINITION_INVALID", + "alt_codes": ["TAG_GROUP_ERROR"], "name": "definition-invalid-multiple-definition-tags", "description": "A definition's enclosing tag group contains more than a `Definition` tag and an inner group.", - "schema": "8.1.0", + "warning": false, + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { @@ -239,9 +243,11 @@ }, { "error_code": "DEFINITION_INVALID", + "alt_codes": ["TAG_GROUP_ERROR"], "name": "definition-invalid-inner-group-defs", "description": "A definition's inner tag group contains `Definition`, `Def` or `Def-expand` tags.", - "schema": "8.1.0", + "warning": false, + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { @@ -314,9 +320,11 @@ }, { "error_code": "DEFINITION_INVALID", + "alt_codes": [], "name": "definition-invalid-bad-number-of-placeholders", "description": "A definition that includes a placeholder (`#`) does not have exactly two `#` characters.", - "schema": "8.1.0", + "warning": false, + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { @@ -393,9 +401,11 @@ }, { "error_code": "DEFINITION_INVALID", + "alt_codes": ["TAG_INVALID"], "name": "definition-invalid-placeholder-incorrect-of-positions", "description": "A definition has placeholders (`#`) in incorrect positions.", - "schema": "8.1.0", + "warning": false, + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { @@ -472,9 +482,11 @@ }, { "error_code": "DEFINITION_INVALID", + "alt_codes": ["TAG_INVALID"], "name": "definition-invalid-placeholder-conflict", "description": "Definitions of the same name appear with and without a `#`.", - "schema": "8.1.0", + "warning": false, + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { @@ -551,9 +563,11 @@ }, { "error_code": "DEFINITION_INVALID", + "alt_codes": [], "name": "definition-invalid-multiple-definitions", "description": "Multiple `Definition` tags with same name are encountered.", - "schema": "8.1.0", + "warning": false, + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { @@ -634,10 +648,12 @@ }, { "error_code": "DEFINITION_INVALID", - "name": "definition-has-unique-or-required-tag", + "alt_codes": [], + "name": "definition-invalid-content-has-top-level-tag", "description": "A tag with a required or unique attribute appears in a definition.", - "schema": "8.1.0", - "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Event-context, Item, (Label/Pie))"], + "warning": false, + "schema": "8.3.0", + "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))"], "tests": { "string_tests": { "fails": [ @@ -713,9 +729,11 @@ }, { "error_code": "DEFINITION_INVALID", + "alt_codes": [], "name": "definition-not-allowed-here", "description": "A definition appears in an unexpected place such as an events file or sidecar.", - "schema": "8.1.0", + "warning": false, + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Item, (Label/Pie)))"], "tests": { "string_tests": { diff --git a/tests/json_tests/DEF_EXPAND_INVALID.json b/tests/json_tests/DEF_EXPAND_INVALID.json index 7b310f6d..cbefb74a 100644 --- a/tests/json_tests/DEF_EXPAND_INVALID.json +++ b/tests/json_tests/DEF_EXPAND_INVALID.json @@ -1,9 +1,11 @@ [ { "error_code": "DEF_EXPAND_INVALID", + "alt_codes": [], "name": "def-expand-invalid-name-not-definition", "description": "A `Def-expand` tag's name does not correspond to a definition.", - "schema": "8.1.0", + "warning": false, + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { @@ -96,9 +98,11 @@ }, { "error_code": "DEF_EXPAND_INVALID", + "alt_codes": [], "name": "def-expand-invalid-missing-placeholder", "description": "A `Def-expand` is missing an expected placeholder value or has an unexpected placeholder value.", - "schema": "8.1.0", + "warning": false, + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { @@ -198,9 +202,11 @@ }, { "error_code": "DEF_EXPAND_INVALID", + "alt_codes": [], "name": "def-expand-invalid-bad-placeholder-units", "description": "A `Def-expand` has a placeholder value of incorrect format or units for definition.", - "schema": "8.1.0", + "warning": false, + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { @@ -298,9 +304,11 @@ }, { "error_code": "DEF_EXPAND_INVALID", + "alt_codes": [], "name": "def-expand-invalid-tags-not-in-definition", "description": "The tags within a Def-expand do not match the corresponding definition.", - "schema": "8.1.0", + "warning": false, + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { @@ -397,9 +405,11 @@ }, { "error_code": "DEF_EXPAND_INVALID", + "alt_codes": [], "name": "def-expand-missing-inner-group", "description": "A Def-expand is missing its inner group containing the definition.", - "schema": "8.1.0", + "warning": false, + "schema": "8.3.0", "definitions": [ "(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Item, (Label/Pie)))" ], @@ -490,9 +500,11 @@ }, { "error_code": "DEF_EXPAND_INVALID", + "alt_codes": [], "name": "def-expand-has-extras", "description": "A Def-expand has extra tags or groups.", - "schema": "8.1.0", + "warning": false, + "schema": "8.3.0", "definitions": [ "(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Item, (Label/Pie)))" ], diff --git a/tests/json_tests/DEF_INVALID.json b/tests/json_tests/DEF_INVALID.json index 826298ff..65b5d5d4 100644 --- a/tests/json_tests/DEF_INVALID.json +++ b/tests/json_tests/DEF_INVALID.json @@ -1,9 +1,11 @@ [ { "error_code": "DEF_INVALID", + "alt_codes": [], "name": "def-invalid-name", "description": "A `Def` tag's name does not correspond to a definition.", - "schema": "8.1.0", + "warning": false, + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { @@ -93,9 +95,11 @@ }, { "error_code": "DEF_INVALID", + "alt_codes": [], "name": "def-invalid-missing-placeholder", "description": "A `Def` tag is missing an expected placeholder value or has an unexpected placeholder value.", - "schema": "8.1.0", + "warning": false, + "schema": "8.3.0", "definitions":["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { @@ -187,9 +191,11 @@ }, { "error_code": "DEF_INVALID", + "alt_codes": [], "name": "def-invalid-bad-placeholder-units", "description": "A `Def` has a placeholder value of incorrect format or units for definition.", - "schema": "8.1.0", + "warning": false, + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { diff --git a/tests/json_tests/ELEMENT_DEPRECATED.json b/tests/json_tests/ELEMENT_DEPRECATED.json index c466dce6..c1c146c1 100644 --- a/tests/json_tests/ELEMENT_DEPRECATED.json +++ b/tests/json_tests/ELEMENT_DEPRECATED.json @@ -1,98 +1,99 @@ -[ - { - "error_code": "ELEMENT_DEPRECATED", - "name": "tag-deprecated", - "description": "A tag is deprecated", - "warning": true, - "schema": "8.2.0", - "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], - "tests": { - "string_tests": { - "fails": [ - "Def/MyColor, Green, Gentalia", - "Gentalia" - ], - "passes": [ - "Torso" - ] - }, - "sidecar_tests": { - "fails": [ - { - "event_code": { - "HED": { - "face": "Def/MyColor, Green, Gentalia", - "ball": "Green, Blue" - } - }, - "other_code": { - "HED": "Label/#, Gentalia" - } - } - ], - "passes": [ - { - "event_code": { - "HED": { - "face": "Torso" - } - } - } - ] - }, - "event_tests": { - "fails": [ - [ - ["onset", "duration", "HED"], - [ 4.5, 0, "Gentalia, Green"], - [ 5.5, 0, "n/a"] - ] - ], - "passes": [ - [ - ["onset", "duration", "HED"], - [ 4.5, 0, "Torso"] - ] - ] - }, - "combo_tests": { - "fails": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "Gentalia", - "ball": "Green" - } - } - }, - "events": - [ - ["onset", "duration", "event_code", "HED"], - [ 4.5, 0, "ball", "Blue"], - [ 5.5, 0, "face", "Red"] - ] - } - ], - "passes": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "Torso", - "ball": "Blue" - } - } - }, - "events": - [ - ["onset", "duration", "event_code","HED"], - [ 4.5, 0, "face", "Blue"], - [ 5.0, 0, "ball", "Green, Def/MyColor"] - ] - } - ] - } - } - } +[ + { + "error_code": "ELEMENT_DEPRECATED", + "alt_codes": [], + "name": "tag-deprecated", + "description": "A tag is deprecated", + "warning": true, + "schema": "8.2.0", + "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], + "tests": { + "string_tests": { + "fails": [ + "Def/MyColor, Green, Gentalia", + "Gentalia" + ], + "passes": [ + "Torso" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Def/MyColor, Green, Gentalia", + "ball": "Green, Blue" + } + }, + "other_code": { + "HED": "Label/#, Gentalia" + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Torso" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + ["onset", "duration", "HED"], + [ 4.5, 0, "Gentalia, Green"], + [ 5.5, 0, "n/a"] + ] + ], + "passes": [ + [ + ["onset", "duration", "HED"], + [ 4.5, 0, "Torso"] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Gentalia", + "ball": "Green" + } + } + }, + "events": + [ + ["onset", "duration", "event_code", "HED"], + [ 4.5, 0, "ball", "Blue"], + [ 5.5, 0, "face", "Red"] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Torso", + "ball": "Blue" + } + } + }, + "events": + [ + ["onset", "duration", "event_code","HED"], + [ 4.5, 0, "face", "Blue"], + [ 5.0, 0, "ball", "Green, Def/MyColor"] + ] + } + ] + } + } + } ] \ No newline at end of file diff --git a/tests/json_tests/NODE_NAME_EMPTY.json b/tests/json_tests/NODE_NAME_EMPTY.json deleted file mode 100644 index 79087803..00000000 --- a/tests/json_tests/NODE_NAME_EMPTY.json +++ /dev/null @@ -1,198 +0,0 @@ -[ - { - "error_code": "NODE_NAME_EMPTY", - "name": "node-name-empty-forward-slashes", - "description": "A tag has one or more forward slashes (`/`) at beginning or end (ignoring whitespace).", - "schema": "8.1.0", - "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], - "tests": { - "string_tests": { - "fails": [ - "//Blue, Green", - "Def/Acc/4.5//", - "Def/Acc/4.5/", - "/ /Def/Acc/4.5 ms/" - ], - "passes": [ - "Label/Red, Informational-property/Label/Blue" - ] - }, - "sidecar_tests": { - "fails": [ - { - "event_code": { - "HED": { - "face": "//Blue, Green", - "ball": "Def/Acc/4.5//", - "square": "Def/Acc/4.5/", - "test": "/ /Def/Acc/4.5 ms/" - } - } - } - ], - "passes": [ - { - "event_code": { - "HED": { - "face": "Informational-property/Label/Num1", - "ball": "Informational-property/Label/Num2" - } - } - } - ] - }, - "event_tests": { - "fails": [ - [ - ["onset", "duration", "HED"], - [ 4.5, 0, "//Blue, Green"], - [ 4.5, 0, "Def/Acc/4.5//"], - [ 4.5, 0, "Def/ /Acc/4.5 ms/"], - [ 7.2, 0, "/ /Def/Acc/4.5 ms/"] - ] - ], - "passes": [ - [ - ["onset", "duration", "HED"], - [4.5, 0, "Informational-property/Label/Num1"] - ] - ] - }, - "combo_tests": { - "fails": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "//Blue, Green", - "ball": "Def/Acc/4.5//", - "square": "Def/Acc/4.5/", - "test": "/ /Def/Acc/4.5 ms/" - } - } - }, - "events": - [ - ["onset", "duration", "event_code", "HED"], - [ 4.5, 0, "ball", "//Blue, Green"], - [ 4.5, 0, "face", "Def/Acc/4.5//"], - [ 4.5, 0, "n/a", "Def/ /Acc/4.5 ms/"], - [ 7.2, 0, "n/a", "/ /Def/Acc/4.5 ms/"] - ] - } - ], - "passes": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "Informational-property/Label/Num1", - "ball": "Informational-property/Label/Num2" - } - } - }, - "events": - [ - ["onset", "duration", "event_code", "HED"], - [ 4.5, 0, "face", "Blue"], - [ 5.0, 0, "ball", "Green, Def/MyColor"] - ] - } - ] - } - } - }, - { - "error_code": "NODE_NAME_EMPTY", - "name": "node-name-empty-forward-consecutive", - "description": "A tag contains consecutive forward slashes (ignoring whitespace).", - "schema": "8.1.0", - "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], - "tests": { - "string_tests": { - "fails": [ - "Informational-property/ /Label/Num1", - "Def/Acc//4.5" - ], - "passes": [ - "Informational-property/Label/Num1" - ] - }, - "sidecar_tests": { - "fails": [ - { - "event_code": { - "HED": { - "face": "Informational-property/ /Label/Num1", - "ball": "Def/Acc//4.5" - } - } - } - ], - "passes": [ - { - "event_code": { - "HED": { - "face": "Informational-property/Label/Num1", - "ball": "Def/Acc/4.5" - } - } - } - ] - }, - "event_tests": { - "fails": [ - [ - ["onset", "duration", "HED"], - [ 4.5, 0, "Informational-property/ /Label/Num1"], - [ 5.7, 0, "Def/Acc//4.5"] - ] - ], - "passes": [ - [ - ["onset", "duration", "HED"], - [4.5, 0, "Informational-property/Label/Num1"] - ] - ] - }, - "combo_tests": { - "fails": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "Informational-property/ /Label/Num1", - "ball": "Def/Acc//4.5 m-per-s^2" - } - } - }, - "events": - [ - ["onset", "duration", "event_code","HED"], - [ 4.5, 0, "face", "Red, Def/MyColor"], - [ 5.0, 0, "ball", "Green"] - ] - } - ], - "passes": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "Acceleration/5 m-per-s^2", - "ball": "Def/Acc/7 m-per-s^2, Blue" - } - } - }, - "events": - [ - ["onset", "duration", "event_code", "HED"], - [ 4.5, 0, "face", "Blue"], - [ 5.0, 0, "ball", "Green, Def/MyColor"] - ] - } - ] - } - } - } -] \ No newline at end of file diff --git a/tests/json_tests/PARENTHESES_MISMATCH.json b/tests/json_tests/PARENTHESES_MISMATCH.json index 1111682a..7c2f55fe 100644 --- a/tests/json_tests/PARENTHESES_MISMATCH.json +++ b/tests/json_tests/PARENTHESES_MISMATCH.json @@ -1,9 +1,11 @@ [ { "error_code": "PARENTHESES_MISMATCH", + "alt_codes": [], "name": "parentheses-mismatch-unmatched-parentheses", "description": "A HED string does not have the same number of open and closed parentheses.", - "schema": "8.1.0", + "warning": false, + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { @@ -96,9 +98,11 @@ }, { "error_code": "PARENTHESES_MISMATCH", + "alt_codes": [], "name": "parentheses-mismatch-incorrect-nesting", "description": "The open and closed parentheses are not correctly nested in the HED string.", - "schema": "8.1.0", + "warning": false, + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { diff --git a/tests/json_tests/PLACEHOLDER_INVALID.json b/tests/json_tests/PLACEHOLDER_INVALID.json index 2bcf47fc..eb4b5043 100644 --- a/tests/json_tests/PLACEHOLDER_INVALID.json +++ b/tests/json_tests/PLACEHOLDER_INVALID.json @@ -1,9 +1,11 @@ [ { "error_code": "PLACEHOLDER_INVALID", + "alt_codes": [], "name": "placeholder-invalid-misplaced", "description": "A `#` appears in a place that it should not (such as in the `HED` column of an event file outside a definition).", - "schema": "8.1.0", + "warning": false, + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { @@ -87,9 +89,11 @@ }, { "error_code": "PLACEHOLDER_INVALID", + "alt_codes": [], "name": "placeholder-invalid-#-in-categorical-column", "description": "A JSON sidecar has a placeholder (`#`) in the HED dictionary for a categorical column.", - "schema": "8.1.0", + "warning": false, + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { @@ -168,9 +172,11 @@ }, { "error_code": "PLACEHOLDER_INVALID", + "alt_codes": [], "name": "placeholder-invalid-json-value-column", "description": "A JSON sidecar does not have exactly one placeholder (`#`) in each HED string representing a value column.", - "schema": "8.1.0", + "warning": false, + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { @@ -246,9 +252,11 @@ }, { "error_code": "PLACEHOLDER_INVALID", + "alt_codes": ["TAG_EXTENSION_INVALID"], "name": "placeholder-invalid-json-#-misplaced", "description": "A placeholder (`#`) is used in JSON sidecar or definition, but its parent in the schema does not have a placeholder child.", - "schema": "8.1.0", + "warning": false, + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { diff --git a/tests/json_tests/REQUIRED_TAG_MISSING.json b/tests/json_tests/REQUIRED_TAG_MISSING.json index 3d0859b6..aa020cd7 100644 --- a/tests/json_tests/REQUIRED_TAG_MISSING.json +++ b/tests/json_tests/REQUIRED_TAG_MISSING.json @@ -1,9 +1,11 @@ [ { "error_code": "REQUIRED_TAG_MISSING", + "alt_codes": [], "name": "required-tag-missing", "description": "An event-level annotation does not have a tag corresponding to a node with the `required` schema attribute. (Note this is deprecated so no tests.)", - "schema": "8.1.0", + "warning": false, + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { @@ -23,14 +25,20 @@ ], "passes": [ ] + }, + "combo_tests": { + "fails": [], + "passes": [] } } }, { "error_code": "REQUIRED_TAG_MISSING", + "alt_codes": [], "name": "required-tag-in-definition", "description": "A required tag appears in a definition", - "schema": "8.1.0", + "warning": false, + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { @@ -50,13 +58,11 @@ ], "passes": [ ] + }, + "combo_tests": { + "fails": [], + "passes": [] } - }, - "combo_tests": { - "fails": [ - ], - "passes": [ - ] - } + } } ] \ No newline at end of file diff --git a/tests/json_tests/SCHEMA_ATTRIBUTE_VALUE_INVALID_HED_ID.json b/tests/json_tests/SCHEMA_ATTRIBUTE_VALUE_INVALID_HED_ID.json new file mode 100644 index 00000000..675efba7 --- /dev/null +++ b/tests/json_tests/SCHEMA_ATTRIBUTE_VALUE_INVALID_HED_ID.json @@ -0,0 +1,146 @@ +[ + { + "error_code": "SCHEMA_ATTRIBUTE_VALUE_INVALID", + "name": "attribute-invalid-hed-id-changed", + "warning": true, + "description": "A schema value class issue, saying there is an unknown one.", + "schema": "", + "definitions": [], + "tests": { + "schema_tests": { + "fails": [ + [ + "HED version=\"8.4.0\"", + "'''Prologue'''", + "!# start schema", + "'''Event'''{hedId=HED_0015001}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "* hedId {elementDomain}", + "'''Properties'''", + "* elementDomain", + "'''Epilogue'''", + "!# end hed" + ] + ], + "passes": [ + [ + "HED version=\"8.4.0\"", + "'''Prologue'''", + "!# start schema", + "'''Event'''{hedId=HED_0012001}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "* hedId {elementDomain}", + "'''Properties'''", + "* elementDomain", + "'''Epilogue'''", + "!# end hed" + ] + ] + } + } + }, + { + "error_code": "SCHEMA_ATTRIBUTE_VALUE_INVALID", + "name": "attribute-invalid-hed-id-out-range", + "warning": true, + "description": "A schema value class issue, saying there is an unknown one.", + "schema": "", + "definitions": [], + "tests": { + "schema_tests": { + "fails": [ + [ + "HED version=\"8.4.0\"", + "'''Prologue'''", + "!# start schema", + "'''NewTagWithNewID'''{hedId=HED_0055000}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "* hedId {elementDomain}", + "'''Properties'''", + "* elementDomain", + "'''Epilogue'''", + "!# end hed" + ] + ], + "passes": [ + [ + "HED version=\"8.4.0\"", + "'''Prologue'''", + "!# start schema", + "'''NewTagWithNewID'''{hedId=HED_0015001}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "* hedId {elementDomain}", + "'''Properties'''", + "* elementDomain", + "'''Epilogue'''", + "!# end hed" + ] + ] + } + } + }, + { + "error_code": "SCHEMA_ATTRIBUTE_VALUE_INVALID", + "name": "attribute-invalid-hed-id-invalid", + "warning": true, + "description": "A schema value class issue, saying there is an unknown one.", + "schema": "", + "definitions": [], + "tests": { + "schema_tests": { + "fails": [ + [ + "HED version=\"8.4.0\"", + "'''Prologue'''", + "!# start schema", + "'''NewTagWithNewID'''{hedId=HED_XXXXXXX}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "* hedId {elementDomain}", + "'''Properties'''", + "* elementDomain", + "'''Epilogue'''", + "!# end hed" + ] + ], + "passes": [ + [ + "HED version=\"8.4.0\"", + "'''Prologue'''", + "!# start schema", + "'''NewTagWithNewID'''{hedId=HED_0015001}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "* hedId {elementDomain}", + "'''Properties'''", + "* elementDomain", + "'''Epilogue'''", + "!# end hed" + ] + ] + } + } + } +] \ No newline at end of file diff --git a/tests/json_tests/SIDECAR_BRACES_INVALID.json b/tests/json_tests/SIDECAR_BRACES_INVALID.json index dff56366..e607883e 100644 --- a/tests/json_tests/SIDECAR_BRACES_INVALID.json +++ b/tests/json_tests/SIDECAR_BRACES_INVALID.json @@ -1,802 +1,510 @@ -[ - { - "error_code": "SIDECAR_BRACES_INVALID", - "name": "sidecar-braces-contents-invalid", - "description": "The item in curly braces is not the word HED or a column name with HED annotations in the sidecar.", - "schema": "8.1.0", - "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], - "tests": { - "string_tests": { - "fails": [ - ], - "passes": [ - ] - }, - "sidecar_tests": { - "fails": [ - { - "event_code": { - "HED": { - "face": "(Red, Blue), (Green, (Yellow))", - "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" - } - }, - "response_time": { - "Description": "Has description but no HED" - } - }, - { - "event_code": { - "HED": { - "face": "(Red, Blue), (Green, (Yellow))", - "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" - } - }, - "response_action": { - "Description": "Does not correspond to curly braces" - } - } - ], - "passes": [ - { - "event_code": { - "HED": { - "face": "(Red, Blue), (Green, (Yellow))", - "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" - } - }, - "response_time": { - "Description": "Has description with HED", - "HED": "Label/#" - } - }, - { - "event_code": { - "HED": { - "face": "(Red, Blue), (Green, (Yellow))", - "ball": "{HED}, (Def/Acc/3.5 m-per-s^2)" - } - }, - "response_action": { - "Description": "Does not correspond to curly braces" - } - } - ] - }, - "event_tests": { - "fails": [ - ], - "passes": [ - ] - }, - "combo_tests": { - "fails": [ - ], - "passes": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Red, Blue), (Green, (Yellow)), ({HED})", - "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" - } - }, - "response_time": { - "Description": "Has description with HED", - "HED": "Label/#" - } - }, - "events": - [ - ["onset", "duration", "event_code","HED", "response_time"], - [ 4.5, 0, "face", "Blue", 0], - [ 5.0, 0, "ball", "Green, Def/MyColor", 1], - [ 5.5, 0, "face", "", 2], - [ 5.7, 0, "face", "n/a", 3] - ] - } - ] - } - } - }, - { - "error_code": "VALUE_INVALID", - "name": "sidecar-braces-invalid-spot", - "description": "A curly brace reference must only appear where a tag could.", - "schema": "8.1.0", - "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], - "tests": { - "string_tests": { - "fails": [ - ], - "passes": [ - ] - }, - "sidecar_tests": { - "fails": [ - { - "event_code": { - "HED": { - "face": "(Red, Blue), (Green, (Yellow))", - "ball": "(Def/Acc/{response_time})" - } - }, - "response_time": { - "Description": "Has description with HED", - "HED": "Label/#" - } - } - ], - "passes": [ - { - "event_code": { - "HED": { - "face": "(Red, Blue), (Green, (Yellow))", - "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" - } - }, - "response_time": { - "Description": "Has description with HED", - "HED": "Label/#" - } - } - ] - }, - "event_tests": { - "fails": [ - ], - "passes": [ - ] - }, - "combo_tests": { - "fails": [ - ], - "passes": [ - ] - } - } - }, - { - "error_code": "SIDECAR_BRACES_INVALID", - "name": "sidecar-braces-circular-reference", - "description": "The item in curly braces has a HED annotation that contains curly braces.", - "schema": "8.2.0", - "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], - "tests": { - "string_tests": { - "fails": [ - ], - "passes": [ - ] - }, - "sidecar_tests": { - "fails": [ - { - "event_code": { - "HED": { - "face": "(Red, Blue), (Green, (Yellow)), {HED}", - "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" - } - }, - "response_time": { - "HED": "Label/#, {event_code}" - } - }, - { - "event_code": { - "HED": { - "face": "(Red, Blue), (Green, (Yellow)), {HED}", - "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)", - "dog": "Orange, {event_type}" - } - }, - "response_time": { - "HED": "Label/#" - }, - "event_type": { - "HED": { - "banana": "Blue, {response_time}", - "apple": "Green" - } - } - } - ], - "passes": [ - { - "event_code": { - "HED": { - "face": "(Red, Blue), (Green, (Yellow))", - "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" - } - }, - "response_time": { - "Description": "Has description with HED", - "HED": "Label/#" - }, - "response_count": { - "Description": "A count used to test curly braces in value columns.", - "HED": "(Item-count/#, {response_time})" - } - }, - { - "event_code": { - "HED": { - "face": "(Red, Blue), (Green, (Yellow))", - "ball": "{HED}, (Def/Acc/3.5 m-per-s^2, {response_action})" - } - }, - "response_action": { - "Description": "Does not correspond to curly braces", - "HED": "Label/#" - } - } - ] - }, - "event_tests": { - "fails": [ - ], - "passes": [ - ] - }, - "combo_tests": { - "fails": [ - ], - "passes": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Red, Blue), (Green, (Yellow)), ({HED})", - "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" - } - }, - "response_time": { - "Description": "Has description with HED", - "HED": "Label/#" - } - }, - "events": - [ - ["onset", "duration", "response_time", "event_code","HED"], - [ 4.5, 0, 3.4, "face", "Blue"], - [ 5.0, 0, 6.8, "ball", "Green, Def/MyColor"], - [ 5.2, 0, "n/a", "face", ""], - [ 5.5, 0, "any", "face", "n/a"] - ] - } - ] - } - } - }, - { - "error_code": "SIDECAR_BRACES_INVALID", - "name": "sidecar-braces-self-reference", - "description": "The item in curly braces has a HED annotation that contains itself.", - "schema": "8.2.0", - "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], - "tests": { - "string_tests": { - "fails": [ - ], - "passes": [ - ] - }, - "sidecar_tests": { - "fails": [ - { - "event_code": { - "HED": { - "face": "(Red, Blue), (Green, (Yellow)), {HED}", - "ball": "{HED}, (Def/Acc/3.5 m-per-s^2)" - } - }, - "response_time": { - "HED": "Label/#, {response_time}" - } - } - ], - "passes": [ - { - "event_code": { - "HED": { - "face": "(Red, Blue), (Green, (Yellow))", - "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" - } - }, - "response_time": { - "Description": "Has description with HED", - "HED": "Label/#" - }, - "response_count": { - "Description": "A count used to test curly braces in value columns.", - "HED": "(Item-count/#, {response_time})" - } - }, - { - "event_code": { - "HED": { - "face": "(Red, Blue), (Green, (Yellow))", - "ball": "{HED}, (Def/Acc/3.5 m-per-s^2, {response_action})" - } - }, - "response_action": { - "Description": "Does not correspond to curly braces", - "HED": "Label/#" - } - } - ] - }, - "event_tests": { - "fails": [ - ], - "passes": [ - ] - }, - "combo_tests": { - "fails": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Red, Blue), (Green, (Yellow)), ({HED})", - "ball": "{HED}, (Def/Acc/3.5 m-per-s^2)" - } - }, - "response_time": { - "Description": "Has description with HED", - "HED": "Label/#, {response_time}" - } - }, - "events": - [ - ["onset", "duration", "response_time", "event_code","HED"], - [ 4.5, 0, 3.4, "face", "Blue"], - [ 5.0, 0, 6.8, "ball", "Green, Def/MyColor"], - [ 5.2, 0, "n/a", "face", ""], - [ 5.5, 0, "any", "face", "n/a"] - ] - } - ], - "passes": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Red, Blue), (Green, (Yellow)), ({HED})", - "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" - } - }, - "response_time": { - "Description": "Has description with HED", - "HED": "Label/#" - } - }, - "events": - [ - ["onset", "duration", "response_time", "event_code","HED"], - [ 4.5, 0, 3.4, "face", "Blue"], - [ 5.0, 0, 6.8, "ball", "Green, Def/MyColor"], - [ 5.2, 0, "n/a", "face", ""], - [ 5.5, 0, "any", "face", "n/a"] - ] - } - ] - } - } - }, - { - "error_code": "SIDECAR_BRACES_INVALID", - "name": "sidecar-braces-self-reference", - "description": "The item in curly braces has a HED annotation that contains itself.", - "schema": "8.2.0", - "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], - "tests": { - "string_tests": { - "fails": [ - ], - "passes": [ - ] - }, - "sidecar_tests": { - "fails": [ - { - "event_code": { - "HED": { - "face": "(Red, Blue), (Green, (Yellow)), {HED}", - "ball": "{HED}, (Def/Acc/3.5 m-per-s^2)" - } - }, - "response_time": { - "HED": "Label/#, {response_time}" - } - } - ], - "passes": [ - { - "event_code": { - "HED": { - "face": "(Red, Blue), (Green, (Yellow))", - "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" - } - }, - "response_time": { - "Description": "Has description with HED", - "HED": "Label/#" - }, - "response_count": { - "Description": "A count used to test curly braces in value columns.", - "HED": "(Item-count/#, {response_time})" - } - }, - { - "event_code": { - "HED": { - "face": "(Red, Blue), (Green, (Yellow))", - "ball": "{HED}, (Def/Acc/3.5 m-per-s^2, {response_action})" - } - }, - "response_action": { - "Description": "Does not correspond to curly braces", - "HED": "Label/#" - } - } - ] - }, - "event_tests": { - "fails": [ - ], - "passes": [ - ] - }, - "combo_tests": { - "fails": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Red, Blue), (Green, (Yellow)), ({HED})", - "ball": "{HED}, (Def/Acc/3.5 m-per-s^2)" - } - }, - "response_time": { - "Description": "Has description with HED", - "HED": "Label/#, {response_time}" - } - }, - "events": - [ - ["onset", "duration", "response_time", "event_code","HED"], - [ 4.5, 0, 3.4, "face", "Blue"], - [ 5.0, 0, 6.8, "ball", "Green, Def/MyColor"], - [ 5.2, 0, "n/a", "face", ""], - [ 5.5, 0, "any", "face", "n/a"] - ] - } - ], - "passes": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Red, Blue), (Green, (Yellow)), ({HED})", - "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" - } - }, - "response_time": { - "Description": "Has description with HED", - "HED": "Label/#" - } - }, - "events": - [ - ["onset", "duration", "response_time", "event_code","HED"], - [ 4.5, 0, 3.4, "face", "Blue"], - [ 5.0, 0, 6.8, "ball", "Green, Def/MyColor"], - [ 5.2, 0, "n/a", "face", ""], - [ 5.5, 0, "any", "face", "n/a"] - ] - } - ] - } - } - }, - { - "error_code": "SIDECAR_BRACES_INVALID", - "name": "sidecar-braces-appear-as-value-rather-than-tag", - "description": "The curly braces are in a value rather than as a separate tag substitute.", - "schema": "8.2.0", - "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], - "tests": { - "string_tests": { - "fails": [ - ], - "passes": [ - ] - }, - "sidecar_tests": { - "fails": [ - { - "event_code": { - "HED": { - "face": "(Red, Blue), (Green, (Yellow))", - "ball": "Label/{response_time}, Black" - } - }, - "response_time": { - "Description": "Has description but no HED", - "HED": "Orange" - } - }, - { - "event_code": { - "HED": { - "face": "(Red, Blue), (Green, (Yellow))", - "ball": "Label/{response_time}, Black" - } - }, - "response_time": { - "Description": "Has description but no HED", - "HED": "Label/#" - } - } - ], - "passes": [ - { - "event_code": { - "HED": { - "face": "(Red, Blue), ({response_time}, (Green, (Yellow)))", - "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" - } - }, - "response_time": { - "Description": "Has description with HED", - "HED": "Label/#" - } - } - ] - }, - "event_tests": { - "fails": [ - ], - "passes": [ - ] - }, - "combo_tests": { - "fails": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Red, Blue), (Green, (Yellow)), ({HED})", - "ball": "Label/{response_time}, (Def/Acc/3.5 m-per-s^2)" - } - }, - "response_time": { - "Description": "Has description with HED", - "HED": "Orange" - } - }, - "events": - [ - ["onset", "duration", "event_code","HED"], - [ 4.5, 0, "face", "Blue"], - [ 5.0, 0, "ball", "Green, Def/MyColor"], - [ 5.2, 0, "face", ""], - [ 5.5, 0, "face", "n/a"] - ] - } - ], - "passes": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Red, Blue), (Green, (Yellow)), ({HED})", - "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" - } - }, - "response_time": { - "Description": "Has description with HED", - "HED": "Label/#" - } - }, - "events": - [ - ["onset", "duration", "event_code","HED", "response_time"], - [ 4.5, 0, "face", "Blue", 1], - [ 5.0, 0, "ball", "Green, Def/MyColor", 1], - [ 5.2, 0, "face", "", 1], - [ 5.5, 0, "face", "n/a", 1] - ] - } - ] - } - } - }, - { - "error_code": "SIDECAR_BRACES_INVALID", - "name": "sidecar-braces-ref-not-hed-column", - "description": "Curly braces reference a column that exists, but isn't marked as hed data.", - "schema": "8.2.0", - "definitions": [], - "tests": { - "string_tests": { - "fails": [ - ], - "passes": [ - ] - }, - "sidecar_tests": { - "fails": [ - ], - "passes": [ - ] - }, - "event_tests": { - "fails": [ - ], - "passes": [ - ] - }, - "combo_tests": { - "fails": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Red, Blue), (Green, (Yellow)), ({HED})", - "ball": "{onset}" - } - }, - "response_time": { - "Description": "Has description with HED", - "HED": "Label/#" - } - }, - "events": - [ - ["onset", "duration", "event_code","HED"], - [ 4.5, 0, "ball", "Blue"] - ] - } - ], - "passes": [ - ] - } - } - }, - { - "error_code": "SIDECAR_BRACES_INVALID", - "name": "sidecar-braces-ref-ignore-column", - "description": "Curly braces reference a column that exists, but is marked ignore.", - "schema": "8.2.0", - "definitions": [], - "tests": { - "string_tests": { - "fails": [ - ], - "passes": [ - ] - }, - "sidecar_tests": { - "fails": [ - ], - "passes": [ - ] - }, - "event_tests": { - "fails": [ - ], - "passes": [ - ] - }, - "combo_tests": { - "fails": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Red, Blue), (Green, (Yellow)), ({HED})", - "ball": "{onset}" - } - }, - "response_time": { - "Description": "Has description with HED", - "HED": "Label/#" - } - }, - "events": - [ - ["onset", "duration", "event_code","HED"], - [ 4.5, 0, "ball", "Blue"] - ] - } - ], - "passes": [ - ] - } - } - }, - { - "error_code": "CHARACTER_INVALID", - "name": "sidecar-braces-in-events-file", - "description": "The curly braces appear in HED column of events file.", - "schema": "8.1.0", - "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], - "tests": { - "string_tests": { - "fails": [ - "{HED}, Def/MyColor" - ], - "passes": [ - ] - }, - "sidecar_tests": { - "fails": [ - ], - "passes": [ - ] - }, - "event_tests": { - "fails": [ - [ - ["onset", "duration", "HED"], - [ 4.5, 0, "{who_knows}, Red"] - ] - ], - "passes": [ - ] - }, - "combo_tests": { - "fails": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Red, Blue), (Green, (Yellow)), ({HED})", - "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" - } - }, - "response_time": { - "Description": "Has description with HED", - "HED": "Label/#" - } - }, - "events": - [ - ["onset", "duration", "event_code","HED"], - [ 4.5, 0, "face", "Blue, {response_time}"], - [ 5.0, 0, "ball", "Green, Def/MyColor"], - [ 5.2, 0, "face", ""], - [ 5.5, 0, "face", "n/a"] - ] - } - ], - "passes": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Red, Blue), (Green, (Yellow)), ({HED})", - "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" - } - }, - "response_time": { - "Description": "Has description with HED", - "HED": "Label/#" - } - }, - "events": - [ - ["onset", "duration", "event_code","HED", "response_time"], - [ 4.5, 0, "face", "Blue", 1], - [ 5.0, 0, "ball", "Green, Def/MyColor", 1], - [ 5.2, 0, "face", "", 1], - [ 5.5, 0, "face", "n/a", 1] - ] - } - ] - } - } - } -] +[ + { + "error_code": "SIDECAR_BRACES_INVALID", + "alt_codes": ["CHARACTER_INVALID"], + "name": "sidecar-braces-contents-invalid", + "description": "The item in curly braces is not the word HED or a column name with HED annotations in the sidecar.", + "warning": false, + "schema": "8.3.0", + "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], + "tests": { + "string_tests": { + "fails": [ + ], + "passes": [ + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_time": { + "Description": "Has description but no HED" + } + }, + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_action": { + "Description": "Does not correspond to curly braces" + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_time": { + "Description": "Has description with HED", + "HED": "Label/#" + } + }, + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "{HED}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_action": { + "Description": "Does not correspond to curly braces" + } + } + ] + }, + "event_tests": { + "fails": [ + ], + "passes": [ + ] + }, + "combo_tests": { + "fails": [ + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow)), ({HED})", + "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_time": { + "Description": "Has description with HED", + "HED": "Label/#" + } + }, + "events": + [ + ["onset", "duration", "event_code","HED", "response_time"], + [ 4.5, 0, "face", "Blue", 0], + [ 5.0, 0, "ball", "Green, Def/MyColor", 1], + [ 5.5, 0, "face", "", 2], + [ 5.7, 0, "face", "n/a", 3] + ] + } + ] + } + } + }, + { + "error_code": "SIDECAR_BRACES_INVALID", + "alt_codes": ["VALUE_INVALID", "CHARACTER_INVALID", "UNITS_INVALID"], + "name": "sidecar-braces-invalid-spot", + "description": "A curly brace reference must only appear where a tag could.", + "warning": false, + "schema": "8.3.0", + "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], + "tests": { + "string_tests": { + "fails": [ + ], + "passes": [ + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "(Def/Acc/{response_time})" + } + }, + "response_time": { + "Description": "Has description with HED", + "HED": "Label/#" + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_time": { + "Description": "Has description with HED", + "HED": "Label/#" + } + } + ] + }, + "event_tests": { + "fails": [ + ], + "passes": [ + ] + }, + "combo_tests": { + "fails": [ + ], + "passes": [ + ] + } + } + }, + { + "error_code": "SIDECAR_BRACES_INVALID", + "alt_codes": [], + "name": "sidecar-braces-circular-reference", + "description": "The item in curly braces has a HED annotation that contains curly braces.", + "warning": false, + "schema": "8.2.0", + "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], + "tests": { + "string_tests": { + "fails": [ + ], + "passes": [ + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow)), {HED}", + "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_time": { + "HED": "Label/#, {event_code}" + } + }, + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow)), {HED}", + "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)", + "dog": "Orange, {event_type}" + } + }, + "response_time": { + "HED": "Label/#" + }, + "event_type": { + "HED": { + "banana": "Blue, {response_time}", + "apple": "Green" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_time": { + "Description": "Has description with HED", + "HED": "Label/#" + }, + "response_count": { + "Description": "A count used to test curly braces in value columns.", + "HED": "(Item-count/#, {response_time})" + } + }, + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "{HED}, (Def/Acc/3.5 m-per-s^2, {response_action})" + } + }, + "response_action": { + "Description": "Does not correspond to curly braces", + "HED": "Label/#" + } + } + ] + }, + "event_tests": { + "fails": [ + ], + "passes": [ + ] + }, + "combo_tests": { + "fails": [ + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow)), ({HED})", + "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_time": { + "Description": "Has description with HED", + "HED": "Label/#" + } + }, + "events": + [ + ["onset", "duration", "response_time", "event_code","HED"], + [ 4.5, 0, 3.4, "face", "Blue"], + [ 5.0, 0, 6.8, "ball", "Green, Def/MyColor"], + [ 5.2, 0, "n/a", "face", ""], + [ 5.5, 0, "any", "face", "n/a"] + ] + } + ] + } + } + }, + { + "error_code": "SIDECAR_BRACES_INVALID", + "alt_codes": [], + "name": "sidecar-braces-self-reference", + "description": "The item in curly braces has a HED annotation that contains itself.", + "warning": false, + "schema": "8.2.0", + "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], + "tests": { + "string_tests": { + "fails": [ + ], + "passes": [ + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow)), {HED}", + "ball": "{HED}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_time": { + "HED": "Label/#, {response_time}" + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_time": { + "Description": "Has description with HED", + "HED": "Label/#" + }, + "response_count": { + "Description": "A count used to test curly braces in value columns.", + "HED": "(Item-count/#, {response_time})" + } + }, + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "{HED}, (Def/Acc/3.5 m-per-s^2, {response_action})" + } + }, + "response_action": { + "Description": "Does not correspond to curly braces", + "HED": "Label/#" + } + } + ] + }, + "event_tests": { + "fails": [ + ], + "passes": [ + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow)), ({HED})", + "ball": "{HED}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_time": { + "Description": "Has description with HED", + "HED": "Label/#, {response_time}" + } + }, + "events": + [ + ["onset", "duration", "response_time", "event_code","HED"], + [ 4.5, 0, 3.4, "face", "Blue"], + [ 5.0, 0, 6.8, "ball", "Green, Def/MyColor"], + [ 5.2, 0, "n/a", "face", ""], + [ 5.5, 0, "any", "face", "n/a"] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow)), ({HED})", + "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_time": { + "Description": "Has description with HED", + "HED": "Label/#" + } + }, + "events": + [ + ["onset", "duration", "response_time", "event_code","HED"], + [ 4.5, 0, 3.4, "face", "Blue"], + [ 5.0, 0, 6.8, "ball", "Green, Def/MyColor"], + [ 5.2, 0, "n/a", "face", ""], + [ 5.5, 0, "any", "face", "n/a"] + ] + } + ] + } + } + }, + { + "error_code": "SIDECAR_BRACES_INVALID", + "alt_codes": ["CHARACTER_INVALID", "VALUE_INVALID", "UNITS_INVALID"], + "name": "sidecar-braces-appear-as-value-rather-than-tag", + "description": "The curly braces are in a value rather than as a separate tag substitute.", + "warning": false, + "schema": "8.2.0", + "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], + "tests": { + "string_tests": { + "fails": [ + ], + "passes": [ + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "Label/{response_time}, Black" + } + }, + "response_time": { + "Description": "Has description but no HED", + "HED": "Orange" + } + }, + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "Label/{response_time}, Black" + } + }, + "response_time": { + "Description": "Has description but no HED", + "HED": "Label/#" + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Red, Blue), ({response_time}, (Green, (Yellow)))", + "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_time": { + "Description": "Has description with HED", + "HED": "Label/#" + } + } + ] + }, + "event_tests": { + "fails": [ + ], + "passes": [ + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow)), ({HED})", + "ball": "Label/{response_time}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_time": { + "Description": "Has description with HED", + "HED": "Orange" + } + }, + "events": + [ + ["onset", "duration", "event_code","HED"], + [ 4.5, 0, "face", "Blue"], + [ 5.0, 0, "ball", "Green, Def/MyColor"], + [ 5.2, 0, "face", ""], + [ 5.5, 0, "face", "n/a"] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow)), ({HED})", + "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_time": { + "Description": "Has description with HED", + "HED": "Label/#" + } + }, + "events": + [ + ["onset", "duration", "event_code","HED", "response_time"], + [ 4.5, 0, "face", "Blue", 1], + [ 5.0, 0, "ball", "Green, Def/MyColor", 1], + [ 5.2, 0, "face", "", 1], + [ 5.5, 0, "face", "n/a", 1] + ] + } + ] + } + } + } +] diff --git a/tests/json_tests/SIDECAR_INVALID.json b/tests/json_tests/SIDECAR_INVALID.json index 003c1d80..fce5a6fd 100644 --- a/tests/json_tests/SIDECAR_INVALID.json +++ b/tests/json_tests/SIDECAR_INVALID.json @@ -1,9 +1,11 @@ [ { "error_code": "SIDECAR_INVALID", + "alt_codes": [], "name": "sidecar-invalid-key-at-wrong-level", "description": "The HED key is not a second-level dictionary key.", - "schema": "8.1.0", + "warning": false, + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { @@ -22,7 +24,9 @@ "ball": "(Def/MyColor, Onset), (Def/Acc/3.5 m-per-s^2)" } } - }, + } + }, + { "HED": { "face": "(Red, Blue), (Green, (Yellow))", "ball": "(Def/MyColor, Onset), (Def/Acc/3.5 m-per-s^2)" @@ -104,9 +108,11 @@ }, { "error_code": "SIDECAR_INVALID", + "alt_codes": [], "name": "sidecar-invalid-na-annotated", "description": "An annotation entry is provided for `n/a`.", - "schema": "8.1.0", + "warning": false, + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { @@ -182,5 +188,127 @@ ] } } + }, + { + "error_code": "SIDECAR_INVALID", + "alt_codes": [], + "name": "curly-braces-has-no-hed", + "description": "A column name appears in curly braces, but that column name does not have a HED annotation.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Statistical-accuracy/0.677, {response}" + } + }, + "response": { + "Description": "This is a response" + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Statistical-accuracy/0.677, {response}" + } + }, + "response": { + "HED": "Label/#" + } + } + ] + }, + "event_tests": { + "fails": [ + ], + "passes": [ + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Statistical-accuracy/0.677, {response}" + } + }, + "response": "This is a response" + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "response", + "HED" + ], + [ + 4.5, + 0, + "face", + "yes", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "no", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "Def/Acc/7, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "response", + "HED" + ], + [ + 4.5, + 0, + "face", + "yes", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "no", + "Green" + ] + ] + } + ] + } + } } ] \ No newline at end of file diff --git a/tests/json_tests/SIDECAR_KEY_MISSING.json b/tests/json_tests/SIDECAR_KEY_MISSING.json index eabc0caa..2bdea9b8 100644 --- a/tests/json_tests/SIDECAR_KEY_MISSING.json +++ b/tests/json_tests/SIDECAR_KEY_MISSING.json @@ -1,10 +1,11 @@ [ { "error_code": "SIDECAR_KEY_MISSING", + "alt_codes": [], "name": "sidecar-key-missing", "description": "A value in a categorical column does not have an expected entry in a sidecar.", "warning": true, - "schema": "8.1.0", + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { @@ -32,7 +33,7 @@ "event_code": { "HED": { "face": "Acceleration/banana", - "ball": "Def/Acc/apple3, Blue" + "ball": "Black, Blue" } } }, diff --git a/tests/json_tests/STYLE_WARNING.json b/tests/json_tests/STYLE_WARNING.json index 99c5c0db..443572b2 100644 --- a/tests/json_tests/STYLE_WARNING.json +++ b/tests/json_tests/STYLE_WARNING.json @@ -1,10 +1,11 @@ [ { "error_code": "STYLE_WARNING", + "alt_codes": [], "name": "style-warning-bad-naming-style", "description": "An extension or label does not follow HED naming conventions.", "warning": true, - "schema": "8.1.0", + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { diff --git a/tests/json_tests/TAG_EMPTY.json b/tests/json_tests/TAG_EMPTY.json index 447a6dfd..9d4e6161 100644 --- a/tests/json_tests/TAG_EMPTY.json +++ b/tests/json_tests/TAG_EMPTY.json @@ -1,9 +1,11 @@ [ { "error_code": "TAG_EMPTY", + "alt_codes": [], "name": "tag-empty-extra-commas-or-parentheses", "description": "A HED string has extra commas or parentheses separated by only white space.", - "schema": "8.1.0", + "warning": false, + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { @@ -103,9 +105,11 @@ }, { "error_code": "TAG_EMPTY", + "alt_codes": [], "name": "tag-empty-begin-end-comma", "description": "A HED string begins or ends with a comma (ignoring white space).", - "schema": "8.1.0", + "warning": false, + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { @@ -200,9 +204,11 @@ }, { "error_code": "TAG_EMPTY", + "alt_codes": [], "name": "tag-empty-empty-parentheses", "description": "A tag group is empty (i.e., empty parentheses are not allowed).", - "schema": "8.1.0", + "warning": false, + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { diff --git a/tests/json_tests/TAG_EXPRESSION_REPEATED.json b/tests/json_tests/TAG_EXPRESSION_REPEATED.json index 62315dad..29f59429 100644 --- a/tests/json_tests/TAG_EXPRESSION_REPEATED.json +++ b/tests/json_tests/TAG_EXPRESSION_REPEATED.json @@ -1,9 +1,11 @@ [ { "error_code": "TAG_EXPRESSION_REPEATED", + "alt_codes": [], "name": "tag-expression-repeated-same-level", "description": "A tag is repeated in the same tag group or level.", - "schema": "8.1.0", + "warning": false, + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { diff --git a/tests/json_tests/TAG_EXTENDED.json b/tests/json_tests/TAG_EXTENDED.json index 63479cc3..7a0948cb 100644 --- a/tests/json_tests/TAG_EXTENDED.json +++ b/tests/json_tests/TAG_EXTENDED.json @@ -1,10 +1,11 @@ [ { "error_code": "TAG_EXTENDED", + "alt_codes": [], "name": "tag-extended-extension", "description": "A tag represents an extension from the schema.", "warning": true, - "schema": "8.1.0", + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { diff --git a/tests/json_tests/TAG_EXTENSION_INVALID.json b/tests/json_tests/TAG_EXTENSION_INVALID.json index 328d6037..047e1904 100644 --- a/tests/json_tests/TAG_EXTENSION_INVALID.json +++ b/tests/json_tests/TAG_EXTENSION_INVALID.json @@ -1,9 +1,11 @@ [ { "error_code": "TAG_EXTENSION_INVALID", + "alt_codes": [], "name": "tag-extension-invalid-duplicate", "description": "A tag extension term is already in the schema.", - "schema": "8.1.0", + "warning": false, + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { @@ -96,9 +98,11 @@ }, { "error_code": "TAG_EXTENSION_INVALID", + "alt_codes": [], "name": "tag-extension-invalid-bad-node-name", "description": "A tag extension term does not comply with rules for schema nodes.", - "schema": "8.1.0", + "warning": false, + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { diff --git a/tests/json_tests/TAG_GROUP_ERROR.json b/tests/json_tests/TAG_GROUP_ERROR.json index 334064b4..4753bf36 100644 --- a/tests/json_tests/TAG_GROUP_ERROR.json +++ b/tests/json_tests/TAG_GROUP_ERROR.json @@ -1,14 +1,16 @@ [ { "error_code": "TAG_GROUP_ERROR", + "alt_codes": ["TEMPORAL_TAG_ERROR"], "name": "tag-group-error-missing", "description": "A tag has tagGroup or topLevelTagGroup attribute, but is not enclosed in parentheses.", + "warning": false, "schema": "8.2.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { "fails": [ - "Definition, (Red)", + "Definition/Blech, (Red)", "Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red)", "Onset", "Duration/3.0 s", @@ -101,8 +103,10 @@ }, { "error_code": "TAG_GROUP_ERROR", + "alt_codes": ["TEMPORAL_TAG_ERROR"], "name": "tag-group-error-not-top-level", "description": "A tag with the topLevelTagGroup does not appear at a HED tag group at the top level in an assembled HED annotation.", + "warning": false, "schema": "8.2.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { @@ -120,8 +124,18 @@ }, "event_tests": { "fails": [ + [ + ["onset", "duration", "event_code","HED"], + [ 4.5, 0, "face", "Red, Def/MyColor, ((Duration/5 s, (Red)))"], + [ 5.0, 0, "ball", "Green"] + ] ], "passes": [ + [ + ["onset", "duration", "event_code","HED"], + [ 4.5, 0, "face", "Red, Def/MyColor, (Duration/5 s, (Red))"], + [ 5.0, 0, "ball", "Green"] + ] ] }, "combo_tests": { @@ -166,8 +180,10 @@ }, { "error_code": "TAG_GROUP_ERROR", + "alt_codes": ["TEMPORAL_TAG_ERROR"], "name": "multiple-top-level-tags-in-same-group", "description": "Multiple tags with the topLevelTagGroup attribute appear in the same top-level tag group. (Delay and Duration are allowed to be in the same topLevelTagGroup).", + "warning": false, "schema": "8.2.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { diff --git a/tests/json_tests/TAG_INVALID.json b/tests/json_tests/TAG_INVALID.json index 10839869..d806addc 100644 --- a/tests/json_tests/TAG_INVALID.json +++ b/tests/json_tests/TAG_INVALID.json @@ -1,9 +1,11 @@ [ { "error_code": "TAG_INVALID", + "alt_codes": [], "name": "tag-invalid-in-schema", "description": "The tag is not valid in the schema it is associated with.", - "schema": "8.1.0", + "warning": false, + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { @@ -94,5 +96,292 @@ ] } } + }, + { + "error_code": "TAG_INVALID", + "alt_codes": [], + "name": "tag-has-extra-white space", + "description": "A HED tag has extra internal whitespace, including directly before or after slashes.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Sensory- event,Green", + "Sensory -event,Blue", + "Event /Sensory-event, Black", + "Event/ Sensory-event,White" + ], + "passes": [ + "Sensory-event, Green" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "square": "Sensory- event,Green", + "test": "Sensory -event,Blue", + "pine": "Event /Sensory-event, Black", + "apple": "Event/ Sensory-event,White" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Sensory-event, Green", + "ball": "Def/Acc/4.5 m-per-s^2, Def/Acc/3.2 m-per-s^2" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 5.5, + 0, + "Sensory- event,Green" + ], + [ + 7.5, + 0, + "Sensory -event,Blue" + ], + [ + 8.2, + 0, + "Event /Sensory-event, Black" + ], + [ + 9.1, + 0, + "Event/ Sensory-event,White" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Sensory-event, Green" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "square": "Sensory- event,Green", + "test": "Sensory -event,Blue", + "pine": "Event /Sensory-event, Black", + "apple": "Event/ Sensory-event,White" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "test", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "apple", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": " Red, Green", + "ball": "Def/Acc/4.5 m-per-s^2, Def/Acc/3.2" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TAG_INVALID", + "alt_codes": [], + "name": "tag-has-leading-trailing-or-consecutive-slashes", + "description": "A HED tag has leading, trailing or consecutive slashes.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "/Event", + "Red/", + "Event//Sensory-event", + "//Event", + "Body-part/Head-part//Brain", + "Def/Acc/4.5//", + "Def/Acc/4.5/", + "/ /Def/Acc/4.5 ms/" + ], + "passes": [ + "Body-part/Head-part/Brain", + "Label/Red, Informational-property/Label/Blue" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Event//Sensory-event", + "ball": "/Event", + "square": "Red/", + "test": "/ /Def/Acc/4.5 ms/" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Body-part/Head-part/Brain", + "ball": "Def/Acc/4.5 m-per-s^2, Def/Acc/3.2 m-per-s^2" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ "onset", "duration", "HED"], + [ 4.5, 0, "/Event,"], + [5.5, 0, "Body-part/Head-part//Brain"], + [6.5, 0, "Event/Sensory-event/"], + [ 7.2, 0, "/ /Def/Acc/4.5 ms/"] + ] + ], + "passes": [ + [ + ["onset", "duration", "HED"], + [4.5, 0, "Event/Sensory-event"] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Event//Sensory-event", + "ball": "//Event", + "square": "Body-part/Head-part//Brain", + "test": "/ /Def/Acc/4.5 ms/" + } + } + }, + "events": [ + ["onset", "duration", "event_code", "HED"], + [4.5, 0, "face", "Red/, Def/MyColor"], + [5.0, 0, "ball", "Green"], + [ 7.2, 0, "n/a", "/ /Def/Acc/4.5 ms/"] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "Def/Acc/7, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Event/Sensory-event" + ] + ] + } + ] + } + } } -] \ No newline at end of file +] diff --git a/tests/json_tests/TAG_NAMESPACE_PREFIX_INVALID.json b/tests/json_tests/TAG_NAMESPACE_PREFIX_INVALID.json index 3d3a1f48..3fca4cf9 100644 --- a/tests/json_tests/TAG_NAMESPACE_PREFIX_INVALID.json +++ b/tests/json_tests/TAG_NAMESPACE_PREFIX_INVALID.json @@ -1,9 +1,11 @@ [ { "error_code": "TAG_NAMESPACE_PREFIX_INVALID", + "alt_codes": [], "name": "tag-namespace_prefix-invalid-no-schema", "description": "A tag starting with name: does not have an associated schema.", - "schema": ["8.1.0", "sc:score_1.0.0"], + "warning": false, + "schema": ["8.3.0", "sc:score_1.0.0"], "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { @@ -93,9 +95,11 @@ }, { "error_code": "TAG_NAMESPACE_PREFIX_INVALID", + "alt_codes": [], "name": "tag-namespace_prefix-invalid-characters", "description": "A tag prefix has invalid characters.", - "schema": ["8.1.0", "sc:score_1.0.0"], + "warning": false, + "schema": ["8.3.0", "sc:score_1.0.0"], "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { diff --git a/tests/json_tests/TAG_NOT_UNIQUE.json b/tests/json_tests/TAG_NOT_UNIQUE.json index 0088e7a6..34ece57e 100644 --- a/tests/json_tests/TAG_NOT_UNIQUE.json +++ b/tests/json_tests/TAG_NOT_UNIQUE.json @@ -1,9 +1,11 @@ [ { "error_code": "TAG_NOT_UNIQUE", + "alt_codes": [], "name": "tag-not-unique", "description": "A tag with unique attribute appears more than once in an event-level HED string.", - "schema": "8.1.0", + "warning": false, + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { diff --git a/tests/json_tests/TAG_REQUIRES_CHILD.json b/tests/json_tests/TAG_REQUIRES_CHILD.json index aef960f9..44375d21 100644 --- a/tests/json_tests/TAG_REQUIRES_CHILD.json +++ b/tests/json_tests/TAG_REQUIRES_CHILD.json @@ -1,9 +1,11 @@ [ { "error_code": "TAG_REQUIRES_CHILD", + "alt_codes": [], "name": "tag-requires-child-no-child", "description": "A tag has the requireChild schema attribute but does not have a child.", - "schema": "8.1.0", + "warning": false, + "schema": "8.2.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { diff --git a/tests/json_tests/TEMPORAL_TAG_ERROR.json b/tests/json_tests/TEMPORAL_TAG_ERROR.json index 6274bab0..6d3ca69e 100644 --- a/tests/json_tests/TEMPORAL_TAG_ERROR.json +++ b/tests/json_tests/TEMPORAL_TAG_ERROR.json @@ -1,1085 +1,1111 @@ -[ - { - "error_code": "TEMPORAL_TAG_ERROR", - "name": "onset-offset-inset-error-not-tag-group", - "description": "An Onset or Offset tag does not appear in a tag group.", - "schema": "8.2.0", - "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], - "tests": { - "string_tests": { - "fails": [ - "Onset, Red", - "Offset, Def/Acc/5.4 m-per-s^2" - ], - "passes": [ - "(Onset, Def/Acc/5.4 m-per-s^2)" - ] - }, - "sidecar_tests": { - "fails": [ - { - "event_code": { - "HED": { - "face": "Onset, Red", - "ball": "Offset, Def/Acc/5.4 m-per-s^2" - } - } - } - ], - "passes": [ - { - "event_code": { - "HED": { - "face": "(Onset, Def/Acc/5.4 m-per-s^2)" - } - } - } - ] - }, - "event_tests": { - "fails": [ - [ - ["onset", "duration", "HED"], - [ 4.5, 0, "Onset, Red"], - [ 4.8, 0, "(Onset, MyColor)"], - [ 5.0, 0, "Offset, MyColor"] - ] - ], - "passes": [ - [ - ["onset", "duration", "HED"], - [ 4.5, 0, "(Onset, (Def-expand/MyColor, (Label/Pie)), (Red))"], - [ 5.5, 0, "(Onset, Def/Acc/5.4 m-per-s^2)"], - [ 6.3, 0, "(Offset, Def/Acc/5.4 m-per-s^2)"] - ] - ] - }, - "combo_tests": { - "fails": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "Onset, Red", - "ball": "Offset, Def/Acc/5.4 m-per-s^2" - } - } - }, - "events": - [ - ["onset", "duration", "event_code", "HED"], - [ 4.5, 0, "ball", "Onset, Red"], - [ 4.8, 0, "n/a", "(Onset/MyColor)"], - [ 5.0, 0, "face", "Offset, MyColor"] - ] - } - ], - "passes": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Onset, Def/Acc/5.4 m-per-s^2)" - } - } - }, - "events": - [ - ["onset", "duration", "event_code", "HED"], - [ 5.5, 0, "n/a","(Onset, Def/Acc/5.4 m-per-s^2)"], - [ 6.3, 0, "n/a","(Offset, Def/Acc/5.4 m-per-s^2)"], - [ 8.5, 0, "face", "Blue"], - [ 9.0, 0, "n/a", "Green, ((Def-expand/MyColor, (Label/Pie)), Onset)"] - ] - } - ] - } - } - }, - { - "error_code": "TEMPORAL_TAG_ERROR", - "name": "onset-offset-inset-error-nested-group", - "description": "An Onset or Offset tag appears in a nested tag group (not a top-level tag group).", - "schema": "8.2.0", - "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], - "tests": { - "string_tests": { - "fails": [ - "((Onset, Def/MyColor), Red)" - ], - "passes": [ - "(Onset, Def/MyColor), Red" - ] - }, - "sidecar_tests": { - "fails": [ - { - "event_code": { - "HED": { - "face": "((Onset, Def/MyColor), Red)" - } - } - } - ], - "passes": [ - { - "event_code": { - "HED": { - "face": "(Onset, Def/MyColor), Red" - } - } - } - ] - }, - "event_tests": { - "fails": [ - [ - ["onset", "duration", "HED"], - [ 4.5, 0, "((Onset, Def/MyColor), Red)"] - ] - ], - "passes": [ - [ - ["onset", "duration", "HED"], - [4.5, 0, "(Onset, Def/MyColor), Red"] - ] - ] - }, - "combo_tests": { - "fails": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "((Onset, Def/MyColor), Red)" - } - } - }, - "events": - [ - ["onset", "duration", "event_code", "HED"], - [ 4.5, 0, "n/a", "((Onset, Def/MyColor), Red)"], - [ 5.0, 0, "face", "Green"] - ] - } - ], - "passes": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Onset, Def/MyColor), Red" - } - } - }, - "events": - [ - ["onset", "duration", "event_code","HED"], - [ 4.5, 0, "face", "Blue"], - [ 5.0, 0, "n/a", "(Onset, Def/MyColor), Red"] - ] - } - ] - } - } - }, - { - "error_code": "TEMPORAL_TAG_ERROR", - "name": "onset-offset-inset-error-wrong-number-of-defs", - "description": "An Onset or Offset tag is not grouped with exactly one Def-expand tag group or a Def tag.", - "schema": "8.2.0", - "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], - "tests": { - "string_tests": { - "fails": [ - "(Onset, (Red))" - ], - "passes": [ - "(Onset, Def/MyColor, (Red))", - "(Onset, (Def-expand/MyColor, (Label/Pie)), (Red))" - ] - }, - "sidecar_tests": { - "fails": [ - { - "event_code": { - "HED": { - "face": "(Onset, (Red))", - "ball": "(Onset, Def/MyColor, Def/Acc/4.3 m-per-s^2)" - } - } - } - ], - "passes": [ - { - "event_code": { - "HED": { - "face": "(Onset, Def/MyColor, (Red))" - } - } - } - ] - }, - "event_tests": { - "fails": [ - [ - ["onset", "duration", "HED"], - [ 4.5, 0, "(Onset, (Red))"], - [ 5.5, 0, "(Onset, Def/MyColor, Def/Acc/4.3 m-per-s^2)"] - ] - ], - "passes": [ - [ - ["onset", "duration", "HED"], - [4.5, 0, "(Onset, Def/MyColor, (Red))"] - ] - ] - }, - "combo_tests": { - "fails": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Onset, (Red))", - "ball": "(Onset, Def/MyColor, Def/Acc/4.3 m-per-s^2)" - } - } - }, - "events": - [ - ["onset", "duration", "event_code", "HED"], - [ 4.5, 0, "face", "Green, Def/MyColor"], - [ 5.0, 0, "n/a", "(Onset, (Yellow))"], - [ 6.0, 0, "ball", "n/a"] - ] - } - ], - "passes": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Onset, Def/MyColor, (Red))" - } - } - }, - "events": - [ - ["onset", "duration", "event_code","HED"], - [ 4.5, 0, "face", "Blue"], - [ 5.0, 0, "n/a", "(Onset, Def/MyColor, (Blue))"] - ] - } - ] - } - } - }, - { - "error_code": "TEMPORAL_TAG_ERROR", - "name": "onset-offset-inset-error-onset-has-more-groups", - "description": "An Onset group has more than one additional tag group.", - "schema": "8.2.0", - "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], - "tests": { - "string_tests": { - "fails": [ - "(Onset, Def/MyColor, (Red), (Blue))", - "((Def-expand/MyColor, (Label/Pie)), (Green), (Red), Onset)" - ], - "passes": [ - "(Onset, Def/MyColor)", - "((Def-expand/MyColor, (Label/Pie)), (Red), Onset)" - ] - }, - "sidecar_tests": { - "fails": [ - { - "event_code": { - "HED": { - "face": "(Onset, Def/MyColor, (Red), (Blue))", - "ball": "((Def-expand/MyColor, (Label/Pie)), (Green), (Yellow), Onset)" - } - } - } - ], - "passes": [ - { - "event_code": { - "HED": { - "face": "(Onset, Def/MyColor)", - "ball": "((Def-expand/MyColor, (Label/Pie)), (Green, (Yellow)), Onset)" - } - } - } - ] - }, - "event_tests": { - "fails": [ - [ - ["onset", "duration", "HED"], - [ 4.5, 0, "(Onset, Def/MyColor, (Red), (Blue))"], - [ 5.5, 0, "((Def-expand/MyColor, (Label/Pie)), (Green), ((Yellow)), Onset)"] - ] - ], - "passes": [ - [ - ["onset", "duration", "HED"], - [4.5, 0, "(Onset, Def/MyColor)"], - [5.0, 0, "((Def-expand/MyColor, (Label/Pie)), (Green, (Yellow)), Onset)"] - ] - ] - }, - "combo_tests": { - "fails": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "((Def-expand/MyColor, (Label/Pie)), (Green), ((Yellow)), Onset)", - "ball": "(Onset, Def/MyColor, (Red), (Blue))" - } - } - }, - "events": - [ - ["onset", "duration", "event_code","HED"], - [ 4.5, 0, "face", "Red, Def/MyColor"], - [ 5.0, 0, "ball", "Green"], - [ 6.0, 0, "n/a", "(Def/MyColor, (Red), (Blue), Onset)"] - ] - } - ], - "passes": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Onset, Def/MyColor)", - "ball": "((Def-expand/MyColor, (Label/Pie)), (Green, (Yellow)), Onset)" - } - } - }, - "events": - [ - ["onset", "duration", "event_code","HED"], - [ 4.5, 0, "n/a", "((Def-expand/MyColor, (Label/Pie)), (Green, (Yellow)), Onset)"], - [ 5.0, 0, "ball", "Green, Def/MyColor"] - ] - } - ] - } - } - }, - { - "error_code": "TEMPORAL_TAG_ERROR", - "name": "onset-offset-inset-error-offset-has-groups", - "description": "An Offset appears with one or more tags or additional tag groups.", - "schema": "8.2.0", - "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], - "tests": { - "string_tests": { - "fails": [ - "(Offset, Def/MyColor, Red)", - "((Def-expand/MyColor, (Label/Pie)), Offset, (Red))" - ], - "passes": [ - "(Offset, Def/MyColor)" - ] - }, - "sidecar_tests": { - "fails": [ - { - "event_code": { - "HED": { - "face": "(Onset, Def/MyColor)", - "ball": "((Def-expand/MyColor, (Label/Pie)), Onset)", - "square": "(Offset, Def/MyColor, (Red))", - "circle": "((Def-expand/MyColor, (Label/Pie)), Offset, Blue)" - - } - } - } - ], - "passes": [ - { - "event_code": { - "HED": { - "face": "(Onset, Def/MyColor)", - "ball": "((Def-expand/MyColor, (Label/Pie)), Onset)", - "square": "(Offset, Def/MyColor)", - "circle": "((Def-expand/MyColor, (Label/Pie)), Offset)" - } - } - } - ] - }, - "event_tests": { - "fails": [ - [ - ["onset", "duration", "HED"], - [ 4.5, 0, "(Onset, Def/MyColor)"], - [ 4.8, 0, "(Offset, Def/MyColor, (Red))"], - [ 4.9, 0, "(Onset, Def/MyColor, (Red))"], - [ 5.5, 0, "((Def-expand/MyColor, (Label/Pie)), (Green), Offset)"] - ] - ], - "passes": [ - [ - ["onset", "duration", "HED"], - [ 4.5, 0, "(Onset, Def/MyColor)"], - [ 4.8, 0, "(Offset, Def/MyColor)"], - [ 4.9, 0, "(Onset, Def/MyColor, (Red))"], - [ 5.5, 0, "((Def-expand/MyColor, (Label/Pie)), Offset)"] - ] - ] - }, - "combo_tests": { - "fails": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Onset, Def/MyColor)", - "ball": "((Def-expand/MyColor, (Label/Pie)), Onset)", - "square": "(Offset, Def/MyColor, (Red))", - "circle": "((Def-expand/MyColor, (Label/Pie)), Offset, Blue)" - - } - } - }, - "events": - [ - ["onset", "duration", "event_code", "HED"], - [ 4.5, 0, "face", "n/a"], - [ 4.8, 0, "square", "n/a"], - [ 4.9, 0, "ball", "Green"], - [ 5.5, 0, "((Def-expand/MyColor, (Label/Pie)), Offset, Blue)", "Orange"] - ] - } - ], - "passes": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Onset, Def/MyColor)", - "ball": "((Def-expand/MyColor, (Label/Pie)), Onset)", - "square": "(Offset, Def/MyColor)", - "circle": "((Def-expand/MyColor, (Label/Pie)), Offset)" - } - } - }, - "events": - [ - ["onset", "duration", "event_code", "HED"], - [ 4.5, 0, "face", "n/a"], - [ 4.8, 0, "square", "n/a"], - [ 4.9, 0, "ball", "Green"], - [ 5.5, 0, "((Def-expand/MyColor, (Label/Pie)), Offset, Blue)", "Orange"] - ] - } - ] - } - } - }, - { - "error_code": "TEMPORAL_TAG_ERROR", - "name": "onset-offset-inset-error-mismatch", - "description": "An Offset tag associated with a given definition appears after a previous Offset tag without the appearance of an intervening Onset of the same name.", - "schema": "8.2.0", - "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], - "tests": { - "string_tests": { - "fails": [ - ], - "passes": [ - ] - }, - "sidecar_tests": { - "fails": [ - ], - "passes": [ - ] - }, - "event_tests": { - "fails": [ - [ - ["onset", "duration", "HED"], - [ 4.5, 0, "(Def/MyColor, Offset)"], - [ 6.5, 0, "Red, (Def/MyColor, Offset)"], - [ 5.5, 0, "(Def/MyColor, Offset)"] - ] - ], - "passes": [ - [ - ["onset", "duration", "HED"], - [ 4.5, 0, "(Def/MyColor, Onset)"], - [ 5.5, 0, "(Def/MyColor, Offset)"], - [ 6.5, 0, "Red"] - ] - ] - }, - "combo_tests": { - "fails": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Def/MyColor, Onset)", - "ball": "(Def/MyColor, Offset)" - } - } - }, - "events": - [ - ["onset", "duration", "event_code", "HED"], - [ 4.5, 0, "ball", "Red, Blue"], - [ 4.8, 0, "ball", "Red, Blue"], - [ 5.0, 0, "face", "Green"] - ] - } - ], - "passes": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Def/MyColor, Onset)", - "ball": "(Def/MyColor, Offset)" - } - } - }, - "events": - [ - ["onset", "duration", "event_code", "HED"], - [ 4.5, 0, "face", "Blue"], - [ 5.0, 0, "ball", "Green, Def/MyColor"] - ] - } - ] - } - } - }, - { - "error_code": "TEMPORAL_TAG_ERROR", - "name": "onset-offset-inset-error-extra tags", - "description": "An Onset tag group with has tags besides the anchor Def or Def-expand that are not in a tag group.", - "schema": "8.2.0", - "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], - "tests": { - "string_tests": { - "fails": [ - "(Def/MyColor, Blue, Green, Onset)" - ], - "passes": [ - "(Def/MyColor, (Blue), Onset)" - ] - }, - "sidecar_tests": { - "fails": [ - { - "event_code": { - "HED": { - "face": "(Def/MyColor, Blue, Green, Onset)" - } - } - } - ], - "passes": [ - { - "event_code": { - "HED": { - "face": "(Def/MyColor, (Blue), Onset)" - } - } - } - ] - }, - "event_tests": { - "fails": [ - [ - ["onset", "duration", "HED"], - [ 4.5, 0, "(Def/MyColor, Blue, (Green), Onset)"] - ] - ], - "passes": [ - [ - ["onset", "duration", "HED"], - [ 4.5, 0, "(Def/MyColor, (Blue), Onset)"] - ] - ] - }, - "combo_tests": { - "fails": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Def/MyColor, Blue, Green, Onset)", - "ball": "Blue" - } - } - }, - "events": - [ - ["onset", "duration", "event_code","HED"], - [ 4.5, 0, "face", "Red, Def/MyColor"], - [ 5.0, 0, "ball", "Green"] - ] - } - ], - "passes": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "((Blue, Green), Def/MyColor, Onset)", - "ball": "(Def/Acc/7, Onset)" - } - } - }, - "events": - [ - ["onset", "duration", "event_code","HED"], - [ 4.5, 0, "face", "Blue"], - [ 5.0, 0, "ball", "Green, Def/MyColor"] - ] - } - ] - } - } - }, - { - "error_code": "TEMPORAL_TAG_ERROR", - "name": "onset-offset-inset-error-duplicated-onset-or-offset", - "description": "An Onset or an Offset with a given Def or Def-expand anchor appears in the same event marker with another Onset or Offset that uses the same anchor.", - "schema": "8.2.0", - "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], - "tests": { - "string_tests": { - "fails": [ - ], - "passes": [ - ] - }, - "sidecar_tests": { - "fails": [ - ], - "passes": [ - ] - }, - "event_tests": { - "fails": [ - ], - "passes": [ - ] - }, - "combo_tests": { - "fails": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Def/MyColor, (Green), Onset)", - "ball": "Blue" - } - } - }, - "events": - [ - ["onset", "duration", "event_code","HED"], - [ 4.5, 0, "face", "(Def/MyColor, (Blue), Onset)"], - [ 5.0, 0, "ball", "Green"] - ] - }, - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Def/MyColor, (Green), Onset)", - "ball": "(Def/MyColor, Onset)" - } - } - }, - "events": - [ - ["onset", "duration", "event_code","HED"], - [ 4.5, 0, "face", "(Def/MyColor, Offset)"], - [ 5.0, 0, "ball", "(Def/MyColor, Offset)"] - ] - }, - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Def/MyColor, (Green), Onset)", - "ball": "(Def/MyColor, Onset)" - } - } - }, - "events": - [ - ["onset", "duration", "event_code","HED"], - [ 4.5, 0, "face", "(Def/MyColor, Offset)"], - [ 5.0, 0, "ball", "(Def/MyColor, Offset)"] - ] - } - ], - "passes": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "((Blue, Green), Def/MyColor, Onset)", - "ball": "(Def/MyColor, Onset)" - } - } - }, - "events": - [ - ["onset", "duration", "event_code","HED"], - [ 4.5, 0, "face", "Blue"], - [ 5.0, 0, "ball", "Green"] - ] - } - ] - } - } - }, - { - "error_code": "TEMPORAL_TAG_ERROR", - "name": "onset-offset-inset-error-inset-outside-its-event", - "description": "An Inset tag is not grouped with a Def or Def-expand of an ongoing Onset.", - "schema": "8.2.0", - "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], - "tests": { - "string_tests": { - "fails": [ - ], - "passes": [ - ] - }, - "sidecar_tests": { - "fails": [ - ], - "passes": [ - ] - }, - "event_tests": { - "fails": [ - [ - ["onset", "duration", "HED"], - [ 4.5, 0, "(Inset, (Red))"], - [ 6.5, 0, "Red, (Def/MyColor, Offset)"], - [ 5.5, 0, "(Def/MyColor, Offset)"] - ] - ], - "passes": [ - [ - ["onset", "duration", "HED"], - [ 4.5, 0, "(Def/MyColor, Onset)"], - [ 5.5, 0, "(Def/MyColor, Offset)"], - [ 6.5, 0, "Red"] - ] - ] - }, - "combo_tests": { - "fails": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Def/MyColor, Onset)", - "ball": "(Def/MyColor, Offset)", - "snack": "(Def/MyColor, Inset)" - } - } - }, - "events": - [ - ["onset", "duration", "event_code", "HED"], - [ 4.5, 0, "snack", "Red, Blue"], - [ 4.8, 0, "face", "Red, Blue"], - [ 5.0, 0, "face", "Green"] - ] - } - ], - "passes": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Def/MyColor, Onset)", - "ball": "(Def/MyColor, Offset)", - "snack": "(Def/MyColor, Inset)" - } - } - }, - "events": - [ - ["onset", "duration", "event_code", "HED"], - [ 4.5, 0, "face", "Blue"], - [ 4.8, 0, "snack", "Blue"], - [ 5.0, 0, "ball", "Green, Def/MyColor"] - ] - } - ] - } - } - }, - { - "error_code": "TEMPORAL_TAG_ERROR", - "name": "onset-offset-inset-error-inset-group-has-extras", - "description": "An Inset group has tags or groups in addition to its defining Def or Def-expand.", - "schema": "8.2.0", - "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], - "tests": { - "string_tests": { - "fails": [ - ], - "passes": [ - ] - }, - "sidecar_tests": { - "fails": [ - ], - "passes": [ - ] - }, - "event_tests": { - "fails": [ - [ - ["onset", "duration", "HED"], - [ 2.5, 0, "Red, (Def/MyColor, Onset)"], - [ 4.5, 0, "(Def/MyColor, Blue, Inset)"], - [ 6.5, 0, "Red, (Def/MyColor, Onset)"], - [ 5.5, 0, "(Def/MyColor, Offset)"] - ] - ], - "passes": [ - [ - ["onset", "duration", "HED"], - [ 4.5, 0, "(Def/MyColor, (Blue), Onset)"], - [ 4.8, 0, "(Def/MyColor, (Green), Inset)"], - [ 5.5, 0, "(Def/MyColor, Offset)"], - [ 6.5, 0, "Red"] - ] - ] - }, - "combo_tests": { - "fails": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Def/MyColor, Onset)", - "ball": "(Def/MyColor, Offset)", - "snack": "(Def/MyColor, Inset)" - } - } - }, - "events": - [ - ["onset", "duration", "event_code", "HED"], - [ 4.5, 0, "snack", "Red, Blue"], - [ 4.8, 0, "face", "Red, Blue"], - [ 5.0, 0, "face", "Green"] - ] - } - ], - "passes": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Def/MyColor, Onset)", - "ball": "(Def/MyColor, Offset)", - "snack": "(Def/MyColor, Inset)" - } - } - }, - "events": - [ - ["onset", "duration", "event_code", "HED"], - [ 4.5, 0, "face", "Blue"], - [ 4.7, 0, "face", "Blue"], - [ 4.8, 0, "snack", "Blue"], - [ 5.0, 0, "ball", "Green, Def/MyColor"] - ] - } - ] - } - } - }, - { - "error_code": "TEMPORAL_TAG_ERROR", - "name": "onset-offset-inset-error-duration-group", - "description": "An Inset group has tags or groups in addition to its defining Def or Def-expand.", - "schema": "8.2.0", - "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], - "tests": { - "string_tests": { - "fails": [ - "(Duration/3.0 s, Delay/2.0 s, (Green), (Blue))", - "(Duration/3.0 s, (Green), (Blue))", - "(Delay/3.0 s, (Green), (Blue))" - ], - "passes": [ - "(Duration/3.0 s, Delay/2.0 s, (Blue))", - "(Duration/3.0 s, (Blue))", - "(Delay/3.0 s, (Blue))" - ] - }, - "sidecar_tests": { - "fails": [ - ], - "passes": [ - ] - }, - "event_tests": { - "fails": [ - [ - ["onset", "duration", "HED"], - [ 5.0, 0, "(Duration/3.0 s, Delay/2.0 s)"], - [ 5.5, 0, "(Duration/3.0 s, Delay/2.0 s, Event)"], - [ 6.0, 0, "(Duration/3.0 s, Delay/2.0 s, (Green), (Blue))"] - - ] - ], - "passes": [ - [ - ["onset", "duration", "HED"], - [ 4.5, 0, "((Blue), Duration/3.0 s)"], - [ 4.8, 0, "((Green), Delay/2.0 s)"], - [ 5.0, 0, "((Green), Duration/3.0 s, Delay/2.0 s)"] - ] - ] - }, - "combo_tests": { - "fails": [ - ], - "passes": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Duration/3.0 s, (Event))", - "ball": "(Delay/3.0 s, (Event))", - "snack": "(Duration/3.0 s, Delay/2.0 s, (Event))" - } - } - }, - "events": - [ - ["onset", "duration", "event_code", "HED"], - [ 4.5, 0, "face", "Blue"], - [ 4.7, 0, "face", "Blue"], - [ 4.8, 0, "snack", "Blue"], - [ 5.0, 0, "ball", "Green, Def/MyColor"] - ] - } - ] - } - } - }, - { - "error_code": "TEMPORAL_TAG_ERROR", - "name": "onset-offset-inset-tag-appears-where-not-allowed", - "description": "An Inset, Offset, or Onset tag appears in a tsv with no onset column", - "schema": "8.2.0", - "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], - "tests": { - "string_tests": { - "fails": [ - ], - "passes": [ - ] - }, - "sidecar_tests": { - "fails": [ - ], - "passes": [ - ] - }, - "event_tests": { - "fails": [ - [ - ["duration", "HED"], - [0, "Red, (Def/MyColor, Onset)"], - [0, "(Def/MyColor, Yellow, Inset)"], - [0, "Red, (Def/MyColor, Onset)"], - [0, "(Def/MyColor, Offset)"] - ] - ], - "passes": [ - [ - ["duration", "HED"], - [0, "(Def/MyColor, (Blue))"], - [0, "(Def/MyColor, (Green))"], - [0, "(Def/MyColor)"], - [0, "Red"] - ] - ] - }, - "combo_tests": { - "fails": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Def/MyColor, Onset)", - "ball": "(Def/MyColor, Offset)", - "snack": "(Def/MyColor, Inset)" - } - } - }, - "events": - [ - ["event_code", "HED"], - ["face", "Def/MyColor, Red, Blue"], - ["ball", "Def/MyColor, Red, Blue"], - ["snack", "Green"] - ] - }, - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Def/MyColor, Duration)", - "ball": "(Def/MyColor, Delay)" - } - } - }, - "events": - [ - ["event_code", "HED"], - ["face", "Def/MyColor, Red, Blue"], - ["ball", "Def/MyColor, Red, Blue"] - ] - } - ], - "passes": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Def/MyColor)", - "ball": "(Def/MyColor)", - "snack": "(Def/MyColor)" - } - } - }, - "events": - [ - ["event_code", "HED"], - [ "face", "Blue"], - ["face", "Blue"], - ["snack", "Blue"] - ] - } - ] - } - } - } +[ + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": ["TAG_GROUP_ERROR"], + "name": "temporal-tag-error-not-tag-group", + "description": "An Onset or Offset tag does not appear in a tag group.", + "warning": false, + "schema": "8.2.0", + "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], + "tests": { + "string_tests": { + "fails": [ + "Onset, Red", + "Offset, Def/Acc/5.4 m-per-s^2" + ], + "passes": [ + "(Onset, Def/Acc/5.4 m-per-s^2)" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Onset, Red", + "ball": "Offset, Def/Acc/5.4 m-per-s^2" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Onset, Def/Acc/5.4 m-per-s^2)" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + ["onset", "duration", "HED"], + [ 4.5, 0, "Onset, Red"], + [ 4.8, 0, "(Onset, MyColor)"], + [ 5.0, 0, "Offset, MyColor"] + ] + ], + "passes": [ + [ + ["onset", "duration", "HED"], + [ 4.5, 0, "(Onset, (Def-expand/MyColor, (Label/Pie)), (Red))"], + [ 5.5, 0, "(Onset, Def/Acc/5.4 m-per-s^2)"], + [ 6.3, 0, "(Offset, Def/Acc/5.4 m-per-s^2)"] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Onset, Red", + "ball": "Offset, Def/Acc/5.4 m-per-s^2" + } + } + }, + "events": + [ + ["onset", "duration", "event_code", "HED"], + [ 4.5, 0, "ball", "Onset, Red"], + [ 4.8, 0, "n/a", "(Onset/MyColor)"], + [ 5.0, 0, "face", "Offset, MyColor"] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Onset, Def/Acc/5.4 m-per-s^2)" + } + } + }, + "events": + [ + ["onset", "duration", "event_code", "HED"], + [ 5.5, 0, "n/a","(Onset, Def/Acc/5.4 m-per-s^2)"], + [ 6.3, 0, "n/a","(Offset, Def/Acc/5.4 m-per-s^2)"], + [ 8.5, 0, "face", "Blue"], + [ 9.0, 0, "n/a", "Green, ((Def-expand/MyColor, (Label/Pie)), Onset)"] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": ["TAG_GROUP_ERROR"], + "name": "temporal-tag-error-nested-group", + "description": "An Onset or Offset tag appears in a nested tag group (not a top-level tag group).", + "warning": false, + "schema": "8.2.0", + "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], + "tests": { + "string_tests": { + "fails": [ + "((Onset, Def/MyColor), Red)" + ], + "passes": [ + "(Onset, Def/MyColor), Red" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "((Onset, Def/MyColor), Red)" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Onset, Def/MyColor), Red" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + ["onset", "duration", "HED"], + [ 4.5, 0, "((Onset, Def/MyColor), Red)"] + ] + ], + "passes": [ + [ + ["onset", "duration", "HED"], + [4.5, 0, "(Onset, Def/MyColor), Red"] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "((Onset, Def/MyColor), Red)" + } + } + }, + "events": + [ + ["onset", "duration", "event_code", "HED"], + [ 4.5, 0, "n/a", "((Onset, Def/MyColor), Red)"], + [ 5.0, 0, "face", "Green"] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Onset, Def/MyColor), Red" + } + } + }, + "events": + [ + ["onset", "duration", "event_code","HED"], + [ 4.5, 0, "face", "Blue"], + [ 5.0, 0, "n/a", "(Onset, Def/MyColor), Red"] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [], + "name": "temporal-tag-error-wrong-number-of-defs", + "description": "An Onset or Offset tag is not grouped with exactly one Def-expand tag group or a Def tag.", + "warning": false, + "schema": "8.2.0", + "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], + "tests": { + "string_tests": { + "fails": [ + "(Onset, (Red))" + ], + "passes": [ + "(Onset, Def/MyColor, (Red))", + "(Onset, (Def-expand/MyColor, (Label/Pie)), (Red))" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Onset, (Red))", + "ball": "(Onset, Def/MyColor, Def/Acc/4.3 m-per-s^2)" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Onset, Def/MyColor, (Red))" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + ["onset", "duration", "HED"], + [ 4.5, 0, "(Onset, (Red))"], + [ 5.5, 0, "(Onset, Def/MyColor, Def/Acc/4.3 m-per-s^2)"] + ] + ], + "passes": [ + [ + ["onset", "duration", "HED"], + [4.5, 0, "(Onset, Def/MyColor, (Red))"] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Onset, (Red))", + "ball": "(Onset, Def/MyColor, Def/Acc/4.3 m-per-s^2)" + } + } + }, + "events": + [ + ["onset", "duration", "event_code", "HED"], + [ 4.5, 0, "face", "Green, Def/MyColor"], + [ 5.0, 0, "n/a", "(Onset, (Yellow))"], + [ 6.0, 0, "ball", "n/a"] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Onset, Def/MyColor, (Red))" + } + } + }, + "events": + [ + ["onset", "duration", "event_code","HED"], + [ 4.5, 0, "face", "Blue"], + [ 5.0, 0, "n/a", "(Onset, Def/MyColor, (Blue))"] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [], + "name": "temporal-tag-error-onset-has-more-groups", + "description": "An Onset group has more than one additional tag group.", + "warning": false, + "schema": "8.2.0", + "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], + "tests": { + "string_tests": { + "fails": [ + "(Onset, Def/MyColor, (Red), (Blue))", + "((Def-expand/MyColor, (Label/Pie)), (Green), (Red), Onset)" + ], + "passes": [ + "(Onset, Def/MyColor)", + "((Def-expand/MyColor, (Label/Pie)), (Red), Onset)" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Onset, Def/MyColor, (Red), (Blue))", + "ball": "((Def-expand/MyColor, (Label/Pie)), (Green), (Yellow), Onset)" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Onset, Def/MyColor)", + "ball": "((Def-expand/MyColor, (Label/Pie)), (Green, (Yellow)), Onset)" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + ["onset", "duration", "HED"], + [ 4.5, 0, "(Onset, Def/MyColor, (Red), (Blue))"], + [ 5.5, 0, "((Def-expand/MyColor, (Label/Pie)), (Green), ((Yellow)), Onset)"] + ] + ], + "passes": [ + [ + ["onset", "duration", "HED"], + [4.5, 0, "(Onset, Def/MyColor)"], + [5.0, 0, "((Def-expand/MyColor, (Label/Pie)), (Green, (Yellow)), Onset)"] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "((Def-expand/MyColor, (Label/Pie)), (Green), ((Yellow)), Onset)", + "ball": "(Onset, Def/MyColor, (Red), (Blue))" + } + } + }, + "events": + [ + ["onset", "duration", "event_code","HED"], + [ 4.5, 0, "face", "Red, Def/MyColor"], + [ 5.0, 0, "ball", "Green"], + [ 6.0, 0, "n/a", "(Def/MyColor, (Red), (Blue), Onset)"] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Onset, Def/MyColor)", + "ball": "((Def-expand/MyColor, (Label/Pie)), (Green, (Yellow)), Onset)" + } + } + }, + "events": + [ + ["onset", "duration", "event_code","HED"], + [ 4.5, 0, "n/a", "((Def-expand/MyColor, (Label/Pie)), (Green, (Yellow)), Onset)"], + [ 5.0, 0, "ball", "Green, Def/MyColor"] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [], + "name": "temporal-tag-error-offset-has-groups", + "description": "An Offset appears with one or more tags or additional tag groups.", + "warning": false, + "schema": "8.2.0", + "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], + "tests": { + "string_tests": { + "fails": [ + "(Offset, Def/MyColor, Red)", + "((Def-expand/MyColor, (Label/Pie)), Offset, (Red))" + ], + "passes": [ + "(Offset, Def/MyColor)" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Onset, Def/MyColor)", + "ball": "((Def-expand/MyColor, (Label/Pie)), Onset)", + "square": "(Offset, Def/MyColor, (Red))", + "circle": "((Def-expand/MyColor, (Label/Pie)), Offset, Blue)" + + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Onset, Def/MyColor)", + "ball": "((Def-expand/MyColor, (Label/Pie)), Onset)", + "square": "(Offset, Def/MyColor)", + "circle": "((Def-expand/MyColor, (Label/Pie)), Offset)" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + ["onset", "duration", "HED"], + [ 4.5, 0, "(Onset, Def/MyColor)"], + [ 4.8, 0, "(Offset, Def/MyColor, (Red))"], + [ 4.9, 0, "(Onset, Def/MyColor, (Red))"], + [ 5.5, 0, "((Def-expand/MyColor, (Label/Pie)), (Green), Offset)"] + ] + ], + "passes": [ + [ + ["onset", "duration", "HED"], + [ 4.5, 0, "(Onset, Def/MyColor)"], + [ 4.8, 0, "(Offset, Def/MyColor)"], + [ 4.9, 0, "(Onset, Def/MyColor, (Red))"], + [ 5.5, 0, "((Def-expand/MyColor, (Label/Pie)), Offset)"] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Onset, Def/MyColor)", + "ball": "((Def-expand/MyColor, (Label/Pie)), Onset)", + "square": "(Offset, Def/MyColor, (Red))", + "circle": "((Def-expand/MyColor, (Label/Pie)), Offset, Blue)" + + } + } + }, + "events": + [ + ["onset", "duration", "event_code", "HED"], + [ 4.5, 0, "face", "n/a"], + [ 4.8, 0, "square", "n/a"], + [ 4.9, 0, "ball", "Green"], + [ 5.5, 0, "((Def-expand/MyColor, (Label/Pie)), Offset, Blue)", "Orange"] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Onset, Def/MyColor)", + "ball": "((Def-expand/MyColor, (Label/Pie)), Onset)", + "square": "(Offset, Def/MyColor)", + "circle": "((Def-expand/MyColor, (Label/Pie)), Offset)" + } + } + }, + "events": + [ + ["onset", "duration", "event_code", "HED"], + [ 4.5, 0, "face", "n/a"], + [ 4.8, 0, "square", "n/a"], + [ 4.9, 0, "ball", "Green"], + [ 5.5, 0, "((Def-expand/MyColor, (Label/Pie)), Offset, Blue)", "Orange"] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [], + "name": "temporal-tag-error-offset-with-no-onset", + "description": "An Offset tag associated with a given definition appears after a previous Offset tag without the appearance of an intervening Onset of the same name.", + "warning": false, + "schema": "8.2.0", + "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], + "tests": { + "string_tests": { + "fails": [ + ], + "passes": [ + ] + }, + "sidecar_tests": { + "fails": [ + ], + "passes": [ + ] + }, + "event_tests": { + "fails": [ + [ + ["onset", "duration", "HED"], + [ 4.5, 0, "(Def/MyColor, Offset)"], + [ 6.5, 0, "Red, (Def/MyColor, Offset)"], + [ 5.5, 0, "(Def/MyColor, Offset)"] + ] + ], + "passes": [ + [ + ["onset", "duration", "HED"], + [ 4.5, 0, "(Def/MyColor, Onset)"], + [ 5.5, 0, "(Def/MyColor, Offset)"], + [ 6.5, 0, "Red"] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/MyColor, Onset)", + "ball": "(Def/MyColor, Offset)" + } + } + }, + "events": + [ + ["onset", "duration", "event_code", "HED"], + [ 4.5, 0, "ball", "Red, Blue"], + [ 4.8, 0, "ball", "Red, Blue"], + [ 5.0, 0, "face", "Green"] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/MyColor, Onset)", + "ball": "(Def/MyColor, Offset)" + } + } + }, + "events": + [ + ["onset", "duration", "event_code", "HED"], + [ 4.5, 0, "face", "Blue"], + [ 5.0, 0, "ball", "Green, Def/MyColor"] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [], + "name": "temporal-tag-error-extra tags", + "description": "An Onset tag group with has tags besides the anchor Def or Def-expand that are not in a tag group.", + "warning": false, + "schema": "8.2.0", + "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], + "tests": { + "string_tests": { + "fails": [ + "(Def/MyColor, Blue, Green, Onset)" + ], + "passes": [ + "(Def/MyColor, (Blue), Onset)" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Def/MyColor, Blue, Green, Onset)" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Def/MyColor, (Blue), Onset)" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + ["onset", "duration", "HED"], + [ 4.5, 0, "(Def/MyColor, Blue, (Green), Onset)"] + ] + ], + "passes": [ + [ + ["onset", "duration", "HED"], + [ 4.5, 0, "(Def/MyColor, (Blue), Onset)"] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/MyColor, Blue, Green, Onset)", + "ball": "Blue" + } + } + }, + "events": + [ + ["onset", "duration", "event_code","HED"], + [ 4.5, 0, "face", "Red, Def/MyColor"], + [ 5.0, 0, "ball", "Green"] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "((Blue, Green), Def/MyColor, Onset)", + "ball": "(Def/Acc/7, Onset)" + } + } + }, + "events": + [ + ["onset", "duration", "event_code","HED"], + [ 4.5, 0, "face", "Blue"], + [ 5.0, 0, "ball", "Green, Def/MyColor"] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [], + "name": "temporal-tag-error-duplicated-onset-or-offset", + "description": "An Onset or an Offset with a given Def or Def-expand anchor appears in the same event marker with another Onset or Offset that uses the same anchor.", + "warning": false, + "schema": "8.2.0", + "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], + "tests": { + "string_tests": { + "fails": [ + ], + "passes": [ + ] + }, + "sidecar_tests": { + "fails": [ + ], + "passes": [ + ] + }, + "event_tests": { + "fails": [ + ], + "passes": [ + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/MyColor, (Green), Onset)", + "ball": "Blue" + } + } + }, + "events": + [ + ["onset", "duration", "event_code","HED"], + [ 4.5, 0, "face", "(Def/MyColor, (Blue), Onset)"], + [ 5.0, 0, "ball", "Green"] + ] + }, + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/MyColor, (Green), Onset)", + "ball": "(Def/MyColor, Onset)" + } + } + }, + "events": + [ + ["onset", "duration", "event_code","HED"], + [ 4.5, 0, "face", "(Def/MyColor, Offset)"], + [ 5.0, 0, "ball", "(Def/MyColor, Offset)"] + ] + }, + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/MyColor, (Green), Onset)", + "ball": "(Def/MyColor, Onset)" + } + } + }, + "events": + [ + ["onset", "duration", "event_code","HED"], + [ 4.5, 0, "face", "(Def/MyColor, Offset)"], + [ 5.0, 0, "ball", "(Def/MyColor, Offset)"] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "((Blue, Green), Def/MyColor, Onset)", + "ball": "(Def/MyColor, Onset)" + } + } + }, + "events": + [ + ["onset", "duration", "event_code","HED"], + [ 4.5, 0, "face", "Blue"], + [ 5.0, 0, "ball", "Green"] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [], + "name": "temporal-tag-error-inset-outside-its-event", + "description": "An Inset tag is not grouped with a Def or Def-expand of an ongoing Onset.", + "warning": false, + "schema": "8.2.0", + "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], + "tests": { + "string_tests": { + "fails": [ + ], + "passes": [ + ] + }, + "sidecar_tests": { + "fails": [ + ], + "passes": [ + ] + }, + "event_tests": { + "fails": [ + [ + ["onset", "duration", "HED"], + [ 4.5, 0, "(Inset, (Red))"], + [ 6.5, 0, "Red, (Def/MyColor, Offset)"], + [ 5.5, 0, "(Def/MyColor, Offset)"] + ] + ], + "passes": [ + [ + ["onset", "duration", "HED"], + [ 4.5, 0, "(Def/MyColor, Onset)"], + [ 5.5, 0, "(Def/MyColor, Offset)"], + [ 6.5, 0, "Red"] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/MyColor, Onset)", + "ball": "(Def/MyColor, Offset)", + "snack": "(Def/MyColor, Inset)" + } + } + }, + "events": + [ + ["onset", "duration", "event_code", "HED"], + [ 4.5, 0, "snack", "Red, Blue"], + [ 4.8, 0, "face", "Red, Blue"], + [ 5.0, 0, "face", "Green"] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/MyColor, Onset)", + "ball": "(Def/MyColor, Offset)", + "snack": "(Def/MyColor, Inset)" + } + } + }, + "events": + [ + ["onset", "duration", "event_code", "HED"], + [ 4.5, 0, "face", "Blue"], + [ 4.8, 0, "snack", "Blue"], + [ 5.0, 0, "ball", "Green, Def/MyColor"] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [], + "name": "temporal-tag-error-inset-group-has-extras", + "description": "An Inset group has tags or groups in addition to its defining Def or Def-expand.", + "warning": false, + "schema": "8.2.0", + "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], + "tests": { + "string_tests": { + "fails": [ + ], + "passes": [ + ] + }, + "sidecar_tests": { + "fails": [ + ], + "passes": [ + ] + }, + "event_tests": { + "fails": [ + [ + ["onset", "duration", "HED"], + [ 2.5, 0, "Red, (Def/MyColor, Onset)"], + [ 4.5, 0, "(Def/MyColor, Blue, Inset)"], + [ 6.5, 0, "Red, (Def/MyColor, Onset)"], + [ 5.5, 0, "(Def/MyColor, Offset)"] + ] + ], + "passes": [ + [ + ["onset", "duration", "HED"], + [ 4.5, 0, "(Def/MyColor, (Blue), Onset)"], + [ 4.8, 0, "(Def/MyColor, (Green), Inset)"], + [ 5.5, 0, "(Def/MyColor, Offset)"], + [ 6.5, 0, "Red"] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/MyColor, Onset)", + "ball": "(Def/MyColor, Offset)", + "snack": "(Def/MyColor, Inset)" + } + } + }, + "events": + [ + ["onset", "duration", "event_code", "HED"], + [ 4.5, 0, "snack", "Red, Blue"], + [ 4.8, 0, "face", "Red, Blue"], + [ 5.0, 0, "face", "Green"] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/MyColor, Onset)", + "ball": "(Def/MyColor, Offset)", + "snack": "(Def/MyColor, Inset)" + } + } + }, + "events": + [ + ["onset", "duration", "event_code", "HED"], + [ 4.5, 0, "face", "Blue"], + [ 4.7, 0, "face", "Blue"], + [ 4.8, 0, "snack", "Blue"], + [ 5.0, 0, "ball", "Green, Def/MyColor"] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [], + "name": "temporal-tag-error-duration-group", + "description": "A Duration or Delay has extra tags or groups.", + "warning": false, + "schema": "8.2.0", + "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], + "tests": { + "string_tests": { + "fails": [ + "(Duration/3.0 s, Delay/2.0 s, (Green), (Blue))", + "(Duration/3.0 s, (Green), (Blue))", + "(Delay/3.0 s, (Green), (Blue))" + ], + "passes": [ + "(Duration/3.0 s, Delay/2.0 s, (Blue))", + "(Duration/3.0 s, (Blue))", + "(Delay/3.0 s, (Blue))" + ] + }, + "sidecar_tests": { + "fails": [ + ], + "passes": [ + ] + }, + "event_tests": { + "fails": [ + [ + ["onset", "duration", "HED"], + [ 5.0, 0, "(Duration/3.0 s, Delay/2.0 s)"], + [ 5.5, 0, "(Duration/3.0 s, Delay/2.0 s, Event)"], + [ 6.0, 0, "(Duration/3.0 s, Delay/2.0 s, (Green), (Blue))"] + + ] + ], + "passes": [ + [ + ["onset", "duration", "HED"], + [ 4.5, 0, "((Blue), Duration/3.0 s)"], + [ 4.8, 0, "((Green), Delay/2.0 s)"], + [ 5.0, 0, "((Green), Duration/3.0 s, Delay/2.0 s)"] + ] + ] + }, + "combo_tests": { + "fails": [ + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Duration/3.0 s, (Event))", + "ball": "(Delay/3.0 s, (Event))", + "snack": "(Duration/3.0 s, Delay/2.0 s, (Event))" + } + } + }, + "events": + [ + ["onset", "duration", "event_code", "HED"], + [ 4.5, 0, "face", "Blue"], + [ 4.7, 0, "face", "Blue"], + [ 4.8, 0, "snack", "Blue"], + [ 5.0, 0, "ball", "Green, Def/MyColor"] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": ["TAG_GROUP_ERROR"], + "name": "temporal-tag-error-tag-appears-where-not-allowed", + "description": "A temporal tag appears appears in a tsv with no onset column", + "warning": false, + "schema": "8.2.0", + "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], + "tests": { + "string_tests": { + "fails": [ + ], + "passes": [ + ] + }, + "sidecar_tests": { + "fails": [ + ], + "passes": [ + ] + }, + "event_tests": { + "fails": [ + [ + ["duration", "HED"], + [0, "(Duration/5 s, (Red))"], + [0, "Red, (Def/MyColor, Onset)"], + [0, "(Def/MyColor, Yellow, Inset)"], + [0, "Red, (Def/MyColor, Onset)"], + [0, "(Def/MyColor, Offset)"] + ] + ], + "passes": [ + [ + ["duration", "HED"], + [0, "(Def/MyColor, (Blue))"], + [0, "(Def/MyColor, (Green))"], + [0, "(Def/MyColor)"], + [0, "Red"] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/MyColor, Onset)", + "ball": "(Def/MyColor, Offset)", + "snack": "(Def/MyColor, Inset)" + } + } + }, + "events": + [ + ["event_code", "HED"], + ["n/a", "(Duration/5.0, (Red))"], + ["face", "Def/MyColor, Red, Blue"], + ["ball", "Def/MyColor, Red, Blue"], + ["snack", "Green"] + ] + }, + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Duration/5.0, (Red))", + "ball": "(Delay/4.0, (Green))" + } + } + }, + "events": + [ + ["event_code", "HED"], + ["face", "Def/MyColor, Red, Blue"], + ["ball", "Def/MyColor, Red, Blue"] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/MyColor)", + "ball": "(Def/MyColor)", + "snack": "(Def/MyColor)" + } + } + }, + "events": + [ + ["event_code", "HED"], + [ "face", "Blue"], + ["face", "Blue"], + ["snack", "Blue"] + ] + } + ] + } + } + } ] \ No newline at end of file diff --git a/tests/json_tests/TEMPORAL_TAG_ERROR_DELAY.json b/tests/json_tests/TEMPORAL_TAG_ERROR_DELAY.json index df2b2237..76672f13 100644 --- a/tests/json_tests/TEMPORAL_TAG_ERROR_DELAY.json +++ b/tests/json_tests/TEMPORAL_TAG_ERROR_DELAY.json @@ -1,1014 +1,1047 @@ -[ - { - "error_code": "TEMPORAL_TAG_ERROR", - "name": "onset-offset-inset-error-not-tag-group-delay", - "description": "An Onset or Offset tag does not appear in a tag group.", - "schema": "8.2.0", - "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], - "tests": { - "string_tests": { - "fails": [ - "Onset, Red", - "Offset, Def/Acc/5.4 m-per-s^2" - ], - "passes": [ - "(Onset, Def/Acc/5.4 m-per-s^2)" - ] - }, - "sidecar_tests": { - "fails": [ - { - "event_code": { - "HED": { - "face": "Onset, Red", - "ball": "Delay/5.0 s, Offset, Def/Acc/5.4 m-per-s^2" - } - } - } - ], - "passes": [ - { - "event_code": { - "HED": { - "face": "(Delay/5.0 s, Onset, Def/Acc/5.4 m-per-s^2)" - } - } - } - ] - }, - "event_tests": { - "fails": [ - [ - ["onset", "duration", "HED"], - [ 4.5, 0, "Delay/1.0 s, Onset, Red"], - [ 4.8, 0, "(Onset, MyColor)"], - [ 5.0, 0, "Delay/1.0 s, Offset, MyColor"] - ] - ], - "passes": [ - [ - ["onset", "duration", "HED"], - [ 4.5, 0, "(Delay/5.0 s, Onset, (Def-expand/MyColor, (Label/Pie)), (Red))"], - [ 5.5, 0, "(Delay/5.0 s, Onset, Def/Acc/5.4 m-per-s^2)"], - [ 6.3, 0, "(Delay/5.0 s, Offset, Def/Acc/5.4 m-per-s^2)"] - ] - ] - }, - "combo_tests": { - "fails": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "Onset, Red", - "ball": "Delay/5.0 s, Offset, Def/Acc/5.4 m-per-s^2" - } - } - }, - "events": - [ - ["onset", "duration", "event_code", "HED"], - [ 4.5, 0, "ball", "Onset, Red"], - [ 4.8, 0, "n/a", "(Onset/MyColor)"], - [ 5.0, 0, "face", "Offset, MyColor"] - ] - } - ], - "passes": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Onset, Delay/5.0 s, Def/Acc/5.4 m-per-s^2)" - } - } - }, - "events": - [ - ["onset", "duration", "event_code", "HED"], - [ 5.5, 0, "n/a","(Onset, Delay/5.0 s, Def/Acc/5.4 m-per-s^2)"], - [ 6.3, 0, "n/a","(Offset, Delay/5.0 s, Def/Acc/5.4 m-per-s^2)"], - [ 8.5, 0, "face", "Blue"], - [ 9.0, 0, "n/a", "Green, (Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Onset)"] - ] - } - ] - } - } - }, - { - "error_code": "TEMPORAL_TAG_ERROR", - "name": "onset-offset-inset-error-nested-group-delay", - "description": "An Onset or Offset tag appears in a nested tag group (not a top-level tag group).", - "schema": "8.2.0", - "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], - "tests": { - "string_tests": { - "fails": [ - "((Delay/5.0 s, Onset, Def/MyColor), Red)" - ], - "passes": [ - "(Delay/5.0 s, Onset, Def/MyColor), Red" - ] - }, - "sidecar_tests": { - "fails": [ - { - "event_code": { - "HED": { - "face": "((Delay/5.0 s, Onset, Def/MyColor), Red)" - } - } - } - ], - "passes": [ - { - "event_code": { - "HED": { - "face": "(Delay/5.0 s, Onset, Def/MyColor), Red" - } - } - } - ] - }, - "event_tests": { - "fails": [ - [ - ["onset", "duration", "HED"], - [ 4.5, 0, "((Delay/5.0 s, Onset, Def/MyColor), Red)"] - ] - ], - "passes": [ - [ - ["onset", "duration", "HED"], - [4.5, 0, "(Delay/5.0 s, Onset, Def/MyColor), Red"] - ] - ] - }, - "combo_tests": { - "fails": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "((Delay/5.0 s, Onset, Def/MyColor), Red)" - } - } - }, - "events": - [ - ["onset", "duration", "event_code", "HED"], - [ 4.5, 0, "n/a", "((Delay/5.0 s, Onset, Def/MyColor), Red)"], - [ 5.0, 0, "face", "Green"] - ] - } - ], - "passes": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Delay/5.0 s, Onset, Def/MyColor), Red" - } - } - }, - "events": - [ - ["onset", "duration", "event_code","HED"], - [ 4.5, 0, "face", "Blue"], - [ 5.0, 0, "n/a", "(Delay/5.0 s, Onset, Def/MyColor), Red"] - ] - } - ] - } - } - }, - { - "error_code": "TEMPORAL_TAG_ERROR", - "name": "onset-offset-inset-error-wrong-number-of-defs-delay", - "description": "An Onset or Offset tag is not grouped with exactly one Def-expand tag group or a Def tag.", - "schema": "8.2.0", - "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], - "tests": { - "string_tests": { - "fails": [ - "(Delay/5.0 s, Onset, (Red))" - ], - "passes": [ - "(Delay/5.0 s, Onset, Def/MyColor, (Red))", - "(Delay/5.0 s, Onset, (Def-expand/MyColor, (Label/Pie)), (Red))" - ] - }, - "sidecar_tests": { - "fails": [ - { - "event_code": { - "HED": { - "face": "(Delay/5.0 s, Onset, (Red))", - "ball": "(Delay/5.0 s, Onset, Def/MyColor, Def/Acc/4.3 m-per-s^2)" - } - } - } - ], - "passes": [ - { - "event_code": { - "HED": { - "face": "(Delay/5.0 s, Onset, Def/MyColor, (Red))" - } - } - } - ] - }, - "event_tests": { - "fails": [ - [ - ["onset", "duration", "HED"], - [ 4.5, 0, "(Delay/5.0 s, Onset, (Red))"], - [ 5.5, 0, "(Delay/5.0 s, Onset, Def/MyColor, Def/Acc/4.3 m-per-s^2)"] - ] - ], - "passes": [ - [ - ["onset", "duration", "HED"], - [4.5, 0, "(Delay/5.0 s, Onset, Def/MyColor, (Red))"] - ] - ] - }, - "combo_tests": { - "fails": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Delay/5.0 s, Onset, (Red))", - "ball": "(Delay/5.0 s, Onset, Def/MyColor, Def/Acc/4.3 m-per-s^2)" - } - } - }, - "events": - [ - ["onset", "duration", "event_code", "HED"], - [ 4.5, 0, "face", "Green, Def/MyColor"], - [ 5.0, 0, "n/a", "(Delay/5.0 s, Onset, (Yellow))"], - [ 6.0, 0, "ball", "n/a"] - ] - } - ], - "passes": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Delay/5.0 s, Onset, Def/MyColor, (Red))" - } - } - }, - "events": - [ - ["onset", "duration", "event_code","HED"], - [ 4.5, 0, "face", "Blue"], - [ 5.0, 0, "n/a", "(Delay/5.0 s, Onset, Def/MyColor, (Blue))"] - ] - } - ] - } - } - }, - { - "error_code": "TEMPORAL_TAG_ERROR", - "name": "onset-offset-inset-error-onset-has-more-groups-delay", - "description": "An Onset group has more than one additional tag group.", - "schema": "8.2.0", - "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], - "tests": { - "string_tests": { - "fails": [ - "(Delay/5.0 s, Onset, Def/MyColor, (Red), (Blue))", - "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), (Green), (Red), Onset)" - ], - "passes": [ - "(Delay/5.0 s, Onset, Def/MyColor)", - "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), (Red), Onset)" - ] - }, - "sidecar_tests": { - "fails": [ - { - "event_code": { - "HED": { - "face": "(Delay/5.0 s, Onset, Def/MyColor, (Red), (Blue))", - "ball": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), (Green), (Yellow), Onset)" - } - } - } - ], - "passes": [ - { - "event_code": { - "HED": { - "face": "(Delay/5.0 s, Onset, Def/MyColor)", - "ball": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), (Green, (Yellow)), Onset)" - } - } - } - ] - }, - "event_tests": { - "fails": [ - [ - ["onset", "duration", "HED"], - [ 4.5, 0, "(Delay/5.0 s, Onset, Def/MyColor, (Red), (Blue))"], - [ 5.5, 0, "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), (Green), ((Yellow)), Onset)"] - ] - ], - "passes": [ - [ - ["onset", "duration", "HED"], - [4.5, 0, "(Delay/5.0 s, Onset, Def/MyColor)"], - [5.0, 0, "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), (Green, (Yellow)), Onset)"] - ] - ] - }, - "combo_tests": { - "fails": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), (Green), ((Yellow)), Onset)", - "ball": "(Delay/5.0 s, Onset, Def/MyColor, (Red), (Blue))" - } - } - }, - "events": - [ - ["onset", "duration", "event_code","HED"], - [ 4.5, 0, "face", "Red, Def/MyColor"], - [ 5.0, 0, "ball", "Green"], - [ 6.0, 0, "n/a", "(Delay/5.0 s, Def/MyColor, (Red), (Blue), Onset)"] - ] - } - ], - "passes": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Delay/5.0 s, Onset, Def/MyColor)", - "ball": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), (Green, (Yellow)), Onset)" - } - } - }, - "events": - [ - ["onset", "duration", "event_code","HED"], - [ 4.5, 0, "n/a", "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), (Green, (Yellow)), Onset)"], - [ 5.0, 0, "ball", "Green, Def/MyColor"] - ] - } - ] - } - } - }, - { - "error_code": "TEMPORAL_TAG_ERROR", - "name": "onset-offset-inset-error-offset-has-groups-delay", - "description": "An Offset appears with one or more tags or additional tag groups.", - "schema": "8.2.0", - "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], - "tests": { - "string_tests": { - "fails": [ - "(Delay/5.0 s, Offset, Def/MyColor, Red)", - "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Offset, (Red))" - ], - "passes": [ - "(Delay/5.0 s, Offset, Def/MyColor)" - ] - }, - "sidecar_tests": { - "fails": [ - { - "event_code": { - "HED": { - "face": "(Delay/5.0 s, Onset, Def/MyColor)", - "ball": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Onset)", - "square": "(Delay/5.0 s, Offset, Def/MyColor, (Red))", - "circle": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Offset, Blue)" - - } - } - } - ], - "passes": [ - { - "event_code": { - "HED": { - "face": "(Delay/5.0 s, Onset, Def/MyColor)", - "ball": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Onset)", - "square": "(Delay/5.0 s, Offset, Def/MyColor)", - "circle": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Offset)" - } - } - } - ] - }, - "event_tests": { - "fails": [ - [ - ["onset", "duration", "HED"], - [ 4.5, 0, "(Delay/5.0 s, Onset, Def/MyColor)"], - [ 4.8, 0, "(Delay/5.0 s, Offset, Def/MyColor, (Red))"], - [ 4.9, 0, "(Delay/5.0 s, Onset, Def/MyColor, (Red))"], - [ 5.5, 0, "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), (Green), Offset)"] - ] - ], - "passes": [ - [ - ["onset", "duration", "HED"], - [ 4.5, 0, "(Delay/5.0 s, Onset, Def/MyColor)"], - [ 4.8, 0, "(Delay/5.0 s, Offset, Def/MyColor)"], - [ 4.9, 0, "(Delay/5.0 s, Onset, Def/MyColor, (Red))"], - [ 5.5, 0, "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Offset)"] - ] - ] - }, - "combo_tests": { - "fails": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Delay/5.0 s, Onset, Def/MyColor)", - "ball": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Onset)", - "square": "(Delay/5.0 s, Offset, Def/MyColor, (Red))", - "circle": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Offset, Blue)" - - } - } - }, - "events": - [ - ["onset", "duration", "event_code", "HED"], - [ 4.5, 0, "face", "n/a"], - [ 4.8, 0, "square", "n/a"], - [ 4.9, 0, "ball", "Green"], - [ 5.5, 0, "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Offset, Blue)", "Orange"] - ] - } - ], - "passes": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Delay/5.0 s, Onset, Def/MyColor)", - "ball": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Onset)", - "square": "(Delay/5.0 s, Offset, Def/MyColor)", - "circle": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Offset)" - } - } - }, - "events": - [ - ["onset", "duration", "event_code", "HED"], - [ 4.5, 0, "face", "n/a"], - [ 4.8, 0, "square", "n/a"], - [ 4.9, 0, "ball", "Green"], - [ 5.5, 0, "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Offset, Blue)", "Orange"] - ] - } - ] - } - } - }, - { - "error_code": "TEMPORAL_TAG_ERROR", - "name": "onset-offset-inset-error-mismatch-delay", - "description": "An Offset tag associated with a given definition appears after a previous Offset tag without the appearance of an intervening Onset of the same name.", - "schema": "8.2.0", - "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], - "tests": { - "string_tests": { - "fails": [ - ], - "passes": [ - ] - }, - "sidecar_tests": { - "fails": [ - ], - "passes": [ - ] - }, - "event_tests": { - "fails": [ - [ - ["onset", "duration", "HED"], - [ 4.5, 0, "(Delay/5.0 s, Def/MyColor, Offset)"], - [ 6.5, 0, "Red, (Delay/5.0 s, Def/MyColor, Offset)"], - [ 5.5, 0, "(Delay/5.0 s, Def/MyColor, Offset)"] - ] - ], - "passes": [ - [ - ["onset", "duration", "HED"], - [ 4.5, 0, "(Delay/5.0 s, Def/MyColor, Offset)"], - [ 5.5, 0, "(Def/MyColor, Onset)"], - [ 6.5, 0, "Red"] - ] - ] - }, - "combo_tests": { - "fails": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Delay/5.0 s, Def/MyColor, Onset)", - "ball": "(Delay/5.0 s, Def/MyColor, Offset)" - } - } - }, - "events": - [ - ["onset", "duration", "event_code", "HED"], - [ 4.5, 0, "ball", "Red, Blue"], - [ 4.8, 0, "ball", "Red, Blue"], - [ 5.0, 0, "face", "Green"] - ] - } - ], - "passes": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Def/MyColor, Onset)", - "ball": "(Delay/5.0 s, Def/MyColor, Offset)" - } - } - }, - "events": - [ - ["onset", "duration", "event_code", "HED"], - [ 4.5, 0, "ball", "Blue"], - [ 5.0, 0, "face", "Green, Def/MyColor"] - ] - } - ] - } - } - }, - { - "error_code": "TEMPORAL_TAG_ERROR", - "name": "onset-offset-inset-error-extra tags-delay", - "description": "An Onset tag group with has tags besides the anchor Def or Def-expand that are not in a tag group.", - "schema": "8.2.0", - "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], - "tests": { - "string_tests": { - "fails": [ - "(Delay/5.0 s, Def/MyColor, Blue, Green, Onset)" - ], - "passes": [ - "(Delay/5.0 s, Def/MyColor, (Blue), Onset)" - ] - }, - "sidecar_tests": { - "fails": [ - { - "event_code": { - "HED": { - "face": "(Delay/5.0 s, Def/MyColor, Blue, Green, Onset)" - } - } - } - ], - "passes": [ - { - "event_code": { - "HED": { - "face": "(Delay/5.0 s, Def/MyColor, (Blue), Onset)" - } - } - } - ] - }, - "event_tests": { - "fails": [ - [ - ["onset", "duration", "HED"], - [ 4.5, 0, "(Delay/5.0 s, Def/MyColor, Blue, (Green), Onset)"] - ] - ], - "passes": [ - [ - ["onset", "duration", "HED"], - [ 4.5, 0, "(Delay/5.0 s, Def/MyColor, (Blue), Onset)"] - ] - ] - }, - "combo_tests": { - "fails": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Delay/5.0 s, Def/MyColor, Blue, Green, Onset)", - "ball": "Blue" - } - } - }, - "events": - [ - ["onset", "duration", "event_code","HED"], - [ 4.5, 0, "face", "Red, Def/MyColor"], - [ 5.0, 0, "ball", "Green"] - ] - } - ], - "passes": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Delay/5.0 s, (Blue, Green), Def/MyColor, Onset)", - "ball": "(Delay/5.0 s, Def/Acc/7, Onset)" - } - } - }, - "events": - [ - ["onset", "duration", "event_code","HED"], - [ 4.5, 0, "ball", "Blue"], - [ 5.0, 0, "face", "Green, Def/MyColor"] - ] - } - ] - } - } - }, - { - "error_code": "TEMPORAL_TAG_ERROR", - "name": "onset-offset-inset-error-duplicated-onset-or-offset-delay", - "description": "An Onset or an Offset with a given Def or Def-expand anchor appears in the same event marker with another Onset or Offset that uses the same anchor.", - "schema": "8.2.0", - "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], - "tests": { - "string_tests": { - "fails": [ - ], - "passes": [ - ] - }, - "sidecar_tests": { - "fails": [ - ], - "passes": [ - ] - }, - "event_tests": { - "fails": [ - ], - "passes": [ - ] - }, - "combo_tests": { - "fails": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Delay/5.0 s, Def/MyColor, (Green), Onset)", - "ball": "Blue" - } - } - }, - "events": - [ - ["onset", "duration", "event_code","HED"], - [ 4.5, 0, "face", "(Delay/5.0 s, Def/MyColor, (Blue), Onset)"], - [ 5.0, 0, "ball", "Green"] - ] - }, - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Delay/5.0 s, Def/MyColor, (Green), Onset)", - "ball": "(Delay/5.0 s, Def/MyColor, Onset)" - } - } - }, - "events": - [ - ["onset", "duration", "event_code","HED"], - [ 4.5, 0, "face", "(Delay/5.0 s, Def/MyColor, Offset)"], - [ 5.0, 0, "ball", "(Delay/5.0 s, Def/MyColor, Offset)"] - ] - }, - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Delay/5.0 s, Def/MyColor, (Green), Onset)", - "ball": "(Delay/5.0 s, Def/MyColor, Onset)" - } - } - }, - "events": - [ - ["onset", "duration", "event_code","HED"], - [ 4.5, 0, "face", "(Delay/5.0 s, Def/MyColor, Offset)"], - [ 5.0, 0, "ball", "(Delay/5.0 s, Def/MyColor, Offset)"] - ] - } - ], - "passes": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Delay/5.0 s, (Blue, Green), Def/MyColor, Onset)", - "ball": "(Delay/5.0 s, Def/MyColor, Onset)" - } - } - }, - "events": - [ - ["onset", "duration", "event_code","HED"], - [ 4.5, 0, "face", "Blue"], - [ 5.0, 0, "ball", "Green"] - ] - } - ] - } - } - }, - { - "error_code": "TEMPORAL_TAG_ERROR", - "name": "onset-offset-inset-error-inset-outside-its-event-delay", - "description": "An Inset tag is not grouped with a Def or Def-expand of an ongoing Onset.", - "schema": "8.2.0", - "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], - "tests": { - "string_tests": { - "fails": [ - ], - "passes": [ - ] - }, - "sidecar_tests": { - "fails": [ - ], - "passes": [ - ] - }, - "event_tests": { - "fails": [ - [ - ["onset", "duration", "HED"], - [ 4.5, 0, "(Delay/5.0 s, Inset, (Red))"], - [ 6.5, 0, "Red, (Delay/5.0 s, Def/MyColor, Offset)"], - [ 5.5, 0, "(Delay/5.0 s, Def/MyColor, Offset)"] - ] - ], - "passes": [ - [ - ["onset", "duration", "HED"], - [ 4.5, 0, "(Delay/5.0 s, Def/MyColor, Onset)"], - [ 5.5, 0, "(Delay/5.0 s, Def/MyColor, Offset)"], - [ 6.5, 0, "Red"] - ] - ] - }, - "combo_tests": { - "fails": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Delay/5.0 s, Def/MyColor, Onset)", - "ball": "(Delay/5.0 s, Def/MyColor, Offset)", - "snack": "(Delay/5.0 s, Def/MyColor, Inset)" - } - } - }, - "events": - [ - ["onset", "duration", "event_code", "HED"], - [ 4.5, 0, "snack", "Red, Blue"], - [ 4.8, 0, "face", "Red, Blue"], - [ 5.0, 0, "face", "Green"] - ] - } - ], - "passes": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Delay/2.0 s, Def/MyColor, Onset)", - "ball": "(Delay/5.0 s, Def/MyColor, Offset)", - "snack": "(Def/MyColor, Inset)" - } - } - }, - "events": - [ - ["onset", "duration", "event_code", "HED"], - [ 1.5, 0, "face", "Blue"], - [ 4.8, 0, "ball", "Blue"], - [ 5.0, 0, "snack", "Green, Def/MyColor"] - ] - } - ] - } - } - }, - { - "error_code": "TEMPORAL_TAG_ERROR", - "name": "onset-offset-inset-error-inset-group-has-extras-delay", - "description": "An Inset group has tags or groups in addition to its defining Def or Def-expand.", - "schema": "8.2.0", - "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], - "tests": { - "string_tests": { - "fails": [ - ], - "passes": [ - ] - }, - "sidecar_tests": { - "fails": [ - ], - "passes": [ - ] - }, - "event_tests": { - "fails": [ - [ - ["onset", "duration", "HED"], - [ 2.5, 0, "Red, (Delay/5.0 s, Def/MyColor, Onset)"], - [ 4.5, 0, "(Delay/5.0 s, Def/MyColor, Blue, Inset)"], - [ 6.5, 0, "Red, (Delay/5.0 s, Def/MyColor, Onset)"], - [ 5.5, 0, "(DDelay/5.0 s, ef/MyColor, Offset)"] - ] - ], - "passes": [ - [ - ["onset", "duration", "HED"], - [ 4.5, 0, "(Delay/5.0 s, Def/MyColor, (Blue), Onset)"], - [ 4.8, 0, "(Delay/5.0 s, Def/MyColor, (Green), Inset)"], - [ 5.5, 0, "(Delay/5.0 s, Def/MyColor, Offset)"], - [ 6.5, 0, "Red"] - ] - ] - }, - "combo_tests": { - "fails": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Delay/5.0 s, Def/MyColor, Onset)", - "ball": "(Delay/5.0 s, Def/MyColor, Offset)", - "snack": "(Delay/5.0 s, Def/MyColor, Inset)" - } - } - }, - "events": - [ - ["onset", "duration", "event_code", "HED"], - [ 4.5, 0, "snack", "Red, Blue"], - [ 4.8, 0, "face", "Red, Blue"], - [ 5.0, 0, "face", "Green"] - ] - } - ], - "passes": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Delay/5.0 s, Def/MyColor, Onset)", - "ball": "(Delay/5.0 s, Def/MyColor, Offset)", - "snack": "(Delay/5.0 s, Def/MyColor, Inset)" - } - } - }, - "events": - [ - ["onset", "duration", "event_code", "HED"], - [ 4.5, 0, "face", "Blue"], - [ 4.7, 0, "face", "Blue"], - [ 4.8, 0, "snack", "Blue"], - [ 5.0, 0, "ball", "Green, Def/MyColor"] - ] - } - ] - } - } - }, - { - "error_code": "TEMPORAL_TAG_ERROR", - "name": "onset-offset-inset-tag-appears-where-not-allowed-delay", - "description": "An Inset, Offset, or Onset tag appears in a tsv with no onset column", - "schema": "8.2.0", - "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], - "tests": { - "string_tests": { - "fails": [ - ], - "passes": [ - ] - }, - "sidecar_tests": { - "fails": [ - ], - "passes": [ - ] - }, - "event_tests": { - "fails": [ - [ - ["duration", "HED"], - [0, "Red, (Delay/5.0 s, Def/MyColor, Onset)"], - [0, "(Delay/5.0 s, Def/MyColor, Yellow, Inset)"], - [0, "Red, (Delay/5.0 s, Def/MyColor, Onset)"], - [0, "(Delay/5.0 s, Def/MyColor, Offset)"] - ] - ], - "passes": [ - [ - ["duration", "HED"], - [0, "(Def/MyColor, (Blue))"], - [0, "(Def/MyColor, (Green))"], - [0, "(Def/MyColor)"], - [0, "Red"] - ] - ] - }, - "combo_tests": { - "fails": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Delay/5.0 s, Def/MyColor, Onset)", - "ball": "(Delay/5.0 s, Def/MyColor, Offset)", - "snack": "(Delay/5.0 s, Def/MyColor, Inset)" - } - } - }, - "events": - [ - ["event_code", "HED"], - ["face", "Def/MyColor, Red, Blue"], - ["ball", "Def/MyColor, Red, Blue"], - ["snack", "Green"] - ] - }, - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Delay/5.0 s, Def/MyColor, Duration)", - "ball": "(Delay/5.0 s, Def/MyColor, Delay)" - } - } - }, - "events": - [ - ["event_code", "HED"], - ["face", "Def/MyColor, Red, Blue"], - ["ball", "Def/MyColor, Red, Blue"] - ] - } - ], - "passes": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "(Def/MyColor)", - "ball": "(Def/MyColor)", - "snack": "(Def/MyColor)" - } - } - }, - "events": - [ - ["event_code", "HED"], - [ "face", "Blue"], - ["face", "Blue"], - ["snack", "Blue"] - ] - } - ] - } - } - } +[ + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": ["TAG_GROUP_ERROR"], + "name": "temporal-tag-error-not-tag-group-delay", + "description": "A Delay is not in the tag group.", + "warning": false, + "schema": "8.2.0", + "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], + "tests": { + "string_tests": { + "fails": [ + "Delay, Red", + "Delay, Def/Acc/5.4 m-per-s^2" + ], + "passes": [ + "(Delay/5 s, (Def/Acc/5.4 m-per-s^2))" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Blue, Red", + "ball": "Delay/5.0 s, Def/Acc/5.4 m-per-s^2" + } + } + }, + { + "event_code": { + "HED": { + "face": "Blue, Red", + "ball": "Delay/5.0 s, (Def/Acc/5.4 m-per-s^2)" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, (Def/Acc/5.4 m-per-s^2))" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + ["onset", "duration", "HED"], + [ 5.0, 0, "Delay/1.0 s, Red"] + ], + [ + ["onset", "duration", "HED"], + [ 4.5, 0, "Delay/1.0 s, (Red)"] + ] + ], + "passes": [ + [ + ["onset", "duration", "HED"], + [ 4.5, 0, "(Delay/5.0 s, (Red))"] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Red", + "ball": "Delay/5.0 s, Def/Acc/5.4 m-per-s^2" + } + } + }, + "events": + [ + ["onset", "duration", "event_code", "HED"], + [ 4.5, 0, "ball", "Red"], + [ 4.8, 0, "n/a", "Blue"], + [ 5.0, 0, "face", "Green"] + ] + }, + { + "sidecar": { + "event_code": { + "HED": { + "face": "Red", + "ball": "Delay/5.0 s, (Def/Acc/5.4 m-per-s^2)" + } + } + }, + "events": + [ + ["onset", "duration", "event_code", "HED"], + [ 4.5, 0, "ball", "Red"] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, (Def/Acc/5.4 m-per-s^2))" + } + } + }, + "events": + [ + ["onset", "duration", "event_code", "HED"], + [ 8.5, 0, "face", "Blue"], + [ 9.0, 0, "n/a", "Green, (Delay/5.0 s, (Def/MyColor))"] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": ["TAG_GROUP_ERROR"], + "name": "temporal-tag-error-nested-group-delay", + "description": "An Onset or Offset tag appears in a nested tag group (not a top-level tag group).", + "schema": "8.2.0", + "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], + "tests": { + "string_tests": { + "fails": [ + "((Delay/5.0 s, Onset, Def/MyColor), Red)" + ], + "passes": [ + "(Delay/5.0 s, Onset, Def/MyColor), Red" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "((Delay/5.0 s, Onset, Def/MyColor), Red)" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Onset, Def/MyColor), Red" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + ["onset", "duration", "HED"], + [ 4.5, 0, "((Delay/5.0 s, Onset, Def/MyColor), Red)"] + ] + ], + "passes": [ + [ + ["onset", "duration", "HED"], + [4.5, 0, "(Delay/5.0 s, Onset, Def/MyColor), Red"] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "((Delay/5.0 s, Onset, Def/MyColor), Red)" + } + } + }, + "events": + [ + ["onset", "duration", "event_code", "HED"], + [ 4.5, 0, "n/a", "((Delay/5.0 s, Onset, Def/MyColor), Red)"], + [ 5.0, 0, "face", "Green"] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Onset, Def/MyColor), Red" + } + } + }, + "events": + [ + ["onset", "duration", "event_code","HED"], + [ 4.5, 0, "face", "Blue"], + [ 5.0, 0, "n/a", "(Delay/5.0 s, Onset, Def/MyColor), Red"] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": ["TAG_GROUP_ERROR"], + "name": "temporal-tag-error-wrong-number-of-defs-delay", + "description": "An Onset or Offset tag is not grouped with exactly one Def-expand tag group or a Def tag.", + "schema": "8.2.0", + "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], + "tests": { + "string_tests": { + "fails": [ + "(Delay/5.0 s, Onset, (Red))" + ], + "passes": [ + "(Delay/5.0 s, Onset, Def/MyColor, (Red))", + "(Delay/5.0 s, Onset, (Def-expand/MyColor, (Label/Pie)), (Red))" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Onset, (Red))", + "ball": "(Delay/5.0 s, Onset, Def/MyColor, Def/Acc/4.3 m-per-s^2)" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Onset, Def/MyColor, (Red))" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + ["onset", "duration", "HED"], + [ 4.5, 0, "(Delay/5.0 s, Onset, (Red))"], + [ 5.5, 0, "(Delay/5.0 s, Onset, Def/MyColor, Def/Acc/4.3 m-per-s^2)"] + ] + ], + "passes": [ + [ + ["onset", "duration", "HED"], + [4.5, 0, "(Delay/5.0 s, Onset, Def/MyColor, (Red))"] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Onset, (Red))", + "ball": "(Delay/5.0 s, Onset, Def/MyColor, Def/Acc/4.3 m-per-s^2)" + } + } + }, + "events": + [ + ["onset", "duration", "event_code", "HED"], + [ 4.5, 0, "face", "Green, Def/MyColor"], + [ 5.0, 0, "n/a", "(Delay/5.0 s, Onset, (Yellow))"], + [ 6.0, 0, "ball", "n/a"] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Onset, Def/MyColor, (Red))" + } + } + }, + "events": + [ + ["onset", "duration", "event_code","HED"], + [ 4.5, 0, "face", "Blue"], + [ 5.0, 0, "n/a", "(Delay/5.0 s, Onset, Def/MyColor, (Blue))"] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": ["TAG_GROUP_ERROR"], + "name": "temporal-tag-error-onset-has-more-groups-delay", + "description": "An Onset group has more than one additional tag group.", + "schema": "8.2.0", + "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], + "tests": { + "string_tests": { + "fails": [ + "(Delay/5.0 s, Onset, Def/MyColor, (Red), (Blue))", + "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), (Green), (Red), Onset)" + ], + "passes": [ + "(Delay/5.0 s, Onset, Def/MyColor)", + "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), (Red), Onset)" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Onset, Def/MyColor, (Red), (Blue))", + "ball": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), (Green), (Yellow), Onset)" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Onset, Def/MyColor)", + "ball": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), (Green, (Yellow)), Onset)" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + ["onset", "duration", "HED"], + [ 4.5, 0, "(Delay/5.0 s, Onset, Def/MyColor, (Red), (Blue))"], + [ 5.5, 0, "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), (Green), ((Yellow)), Onset)"] + ] + ], + "passes": [ + [ + ["onset", "duration", "HED"], + [4.5, 0, "(Delay/5.0 s, Onset, Def/MyColor)"], + [5.0, 0, "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), (Green, (Yellow)), Onset)"] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), (Green), ((Yellow)), Onset)", + "ball": "(Delay/5.0 s, Onset, Def/MyColor, (Red), (Blue))" + } + } + }, + "events": + [ + ["onset", "duration", "event_code","HED"], + [ 4.5, 0, "face", "Red, Def/MyColor"], + [ 5.0, 0, "ball", "Green"], + [ 6.0, 0, "n/a", "(Delay/5.0 s, Def/MyColor, (Red), (Blue), Onset)"] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Onset, Def/MyColor)", + "ball": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), (Green, (Yellow)), Onset)" + } + } + }, + "events": + [ + ["onset", "duration", "event_code","HED"], + [ 4.5, 0, "n/a", "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), (Green, (Yellow)), Onset)"], + [ 5.0, 0, "ball", "Green, Def/MyColor"] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": ["TAG_GROUP_ERROR"], + "name": "temporal-tag-error-offset-has-groups-delay", + "description": "An Offset appears with one or more tags or additional tag groups.", + "schema": "8.2.0", + "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], + "tests": { + "string_tests": { + "fails": [ + "(Delay/5.0 s, Offset, Def/MyColor, Red)", + "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Offset, (Red))" + ], + "passes": [ + "(Delay/5.0 s, Offset, Def/MyColor)" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Onset, Def/MyColor)", + "ball": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Onset)", + "square": "(Delay/5.0 s, Offset, Def/MyColor, (Red))", + "circle": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Offset, Blue)" + + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Onset, Def/MyColor)", + "ball": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Onset)", + "square": "(Delay/5.0 s, Offset, Def/MyColor)", + "circle": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Offset)" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + ["onset", "duration", "HED"], + [ 4.5, 0, "(Delay/5.0 s, Onset, Def/MyColor)"], + [ 4.8, 0, "(Delay/5.0 s, Offset, Def/MyColor, (Red))"], + [ 4.9, 0, "(Delay/5.0 s, Onset, Def/MyColor, (Red))"], + [ 5.5, 0, "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), (Green), Offset)"] + ] + ], + "passes": [ + [ + ["onset", "duration", "HED"], + [ 4.5, 0, "(Delay/5.0 s, Onset, Def/MyColor)"], + [ 4.8, 0, "(Delay/5.0 s, Offset, Def/MyColor)"], + [ 4.9, 0, "(Delay/5.0 s, Onset, Def/MyColor, (Red))"], + [ 5.5, 0, "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Offset)"] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Onset, Def/MyColor)", + "ball": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Onset)", + "square": "(Delay/5.0 s, Offset, Def/MyColor, (Red))", + "circle": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Offset, Blue)" + + } + } + }, + "events": + [ + ["onset", "duration", "event_code", "HED"], + [ 4.5, 0, "face", "n/a"], + [ 4.8, 0, "square", "n/a"], + [ 4.9, 0, "ball", "Green"], + [ 5.5, 0, "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Offset, Blue)", "Orange"] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Onset, Def/MyColor)", + "ball": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Onset)", + "square": "(Delay/5.0 s, Offset, Def/MyColor)", + "circle": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Offset)" + } + } + }, + "events": + [ + ["onset", "duration", "event_code", "HED"], + [ 4.5, 0, "face", "n/a"], + [ 4.8, 0, "square", "n/a"], + [ 4.9, 0, "ball", "Green"], + [ 5.5, 0, "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Offset, Blue)", "Orange"] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": ["TAG_GROUP_ERROR"], + "name": "temporal-tag-error-mismatch-delay", + "description": "An Offset tag associated with a given definition appears after a previous Offset tag without the appearance of an intervening Onset of the same name.", + "schema": "8.2.0", + "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], + "tests": { + "string_tests": { + "fails": [ + ], + "passes": [ + ] + }, + "sidecar_tests": { + "fails": [ + ], + "passes": [ + ] + }, + "event_tests": { + "fails": [ + [ + ["onset", "duration", "HED"], + [ 4.5, 0, "(Delay/5.0 s, Def/MyColor, Offset)"], + [ 6.5, 0, "Red, (Delay/5.0 s, Def/MyColor, Offset)"], + [ 5.5, 0, "(Delay/5.0 s, Def/MyColor, Offset)"] + ] + ], + "passes": [ + [ + ["onset", "duration", "HED"], + [ 4.5, 0, "(Delay/5.0 s, Def/MyColor, Offset)"], + [ 5.5, 0, "(Def/MyColor, Onset)"], + [ 6.5, 0, "Red"] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Def/MyColor, Onset)", + "ball": "(Delay/5.0 s, Def/MyColor, Offset)" + } + } + }, + "events": + [ + ["onset", "duration", "event_code", "HED"], + [ 4.5, 0, "ball", "Red, Blue"], + [ 4.8, 0, "ball", "Red, Blue"], + [ 5.0, 0, "face", "Green"] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/MyColor, Onset)", + "ball": "(Delay/5.0 s, Def/MyColor, Offset)" + } + } + }, + "events": + [ + ["onset", "duration", "event_code", "HED"], + [ 4.5, 0, "ball", "Blue"], + [ 5.0, 0, "face", "Green, Def/MyColor"] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": ["TAG_GROUP_ERROR"], + "name": "temporal-tag-error-extra tags-delay", + "description": "An Onset tag group with has tags besides the anchor Def or Def-expand that are not in a tag group.", + "schema": "8.2.0", + "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], + "tests": { + "string_tests": { + "fails": [ + "(Delay/5.0 s, Def/MyColor, Blue, Green, Onset)" + ], + "passes": [ + "(Delay/5.0 s, Def/MyColor, (Blue), Onset)" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Def/MyColor, Blue, Green, Onset)" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Def/MyColor, (Blue), Onset)" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + ["onset", "duration", "HED"], + [ 4.5, 0, "(Delay/5.0 s, Def/MyColor, Blue, (Green), Onset)"] + ] + ], + "passes": [ + [ + ["onset", "duration", "HED"], + [ 4.5, 0, "(Delay/5.0 s, Def/MyColor, (Blue), Onset)"] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Def/MyColor, Blue, Green, Onset)", + "ball": "Blue" + } + } + }, + "events": + [ + ["onset", "duration", "event_code","HED"], + [ 4.5, 0, "face", "Red, Def/MyColor"], + [ 5.0, 0, "ball", "Green"] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, (Blue, Green), Def/MyColor, Onset)", + "ball": "(Delay/5.0 s, Def/Acc/7, Onset)" + } + } + }, + "events": + [ + ["onset", "duration", "event_code","HED"], + [ 4.5, 0, "ball", "Blue"], + [ 5.0, 0, "face", "Green, Def/MyColor"] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": ["TAG_GROUP_ERROR"], + "name": "temporal-tag-error-duplicated-onset-or-offset-delay", + "description": "An Onset or an Offset with a given Def or Def-expand anchor appears in the same event marker with another Onset or Offset that uses the same anchor.", + "schema": "8.2.0", + "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], + "tests": { + "string_tests": { + "fails": [ + ], + "passes": [ + ] + }, + "sidecar_tests": { + "fails": [ + ], + "passes": [ + ] + }, + "event_tests": { + "fails": [ + ], + "passes": [ + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Def/MyColor, (Green), Onset)", + "ball": "Blue" + } + } + }, + "events": + [ + ["onset", "duration", "event_code","HED"], + [ 4.5, 0, "face", "(Delay/5.0 s, Def/MyColor, (Blue), Onset)"], + [ 5.0, 0, "ball", "Green"] + ] + }, + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Def/MyColor, (Green), Onset)", + "ball": "(Delay/5.0 s, Def/MyColor, Onset)" + } + } + }, + "events": + [ + ["onset", "duration", "event_code","HED"], + [ 4.5, 0, "face", "(Delay/5.0 s, Def/MyColor, Offset)"], + [ 5.0, 0, "ball", "(Delay/5.0 s, Def/MyColor, Offset)"] + ] + }, + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Def/MyColor, (Green), Onset)", + "ball": "(Delay/5.0 s, Def/MyColor, Onset)" + } + } + }, + "events": + [ + ["onset", "duration", "event_code","HED"], + [ 4.5, 0, "face", "(Delay/5.0 s, Def/MyColor, Offset)"], + [ 5.0, 0, "ball", "(Delay/5.0 s, Def/MyColor, Offset)"] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, (Blue, Green), Def/MyColor, Onset)", + "ball": "(Delay/5.0 s, Def/MyColor, Onset)" + } + } + }, + "events": + [ + ["onset", "duration", "event_code","HED"], + [ 4.5, 0, "face", "Blue"], + [ 5.0, 0, "ball", "Green"] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": ["TAG_GROUP_ERROR"], + "name": "temporal-tag-error-inset-outside-its-event-delay", + "description": "An Inset tag is not grouped with a Def or Def-expand of an ongoing Onset.", + "schema": "8.2.0", + "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], + "tests": { + "string_tests": { + "fails": [ + ], + "passes": [ + ] + }, + "sidecar_tests": { + "fails": [ + ], + "passes": [ + ] + }, + "event_tests": { + "fails": [ + [ + ["onset", "duration", "HED"], + [ 4.5, 0, "(Delay/5.0 s, Inset, (Red))"], + [ 6.5, 0, "Red, (Delay/5.0 s, Def/MyColor, Offset)"], + [ 5.5, 0, "(Delay/5.0 s, Def/MyColor, Offset)"] + ] + ], + "passes": [ + [ + ["onset", "duration", "HED"], + [ 4.5, 0, "(Delay/5.0 s, Def/MyColor, Onset)"], + [ 5.5, 0, "(Delay/5.0 s, Def/MyColor, Offset)"], + [ 6.5, 0, "Red"] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Def/MyColor, Onset)", + "ball": "(Delay/5.0 s, Def/MyColor, Offset)", + "snack": "(Delay/5.0 s, Def/MyColor, Inset)" + } + } + }, + "events": + [ + ["onset", "duration", "event_code", "HED"], + [ 4.5, 0, "snack", "Red, Blue"], + [ 4.8, 0, "face", "Red, Blue"], + [ 5.0, 0, "face", "Green"] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/2.0 s, Def/MyColor, Onset)", + "ball": "(Delay/5.0 s, Def/MyColor, Offset)", + "snack": "(Def/MyColor, Inset)" + } + } + }, + "events": + [ + ["onset", "duration", "event_code", "HED"], + [ 1.5, 0, "face", "Blue"], + [ 4.8, 0, "ball", "Blue"], + [ 5.0, 0, "snack", "Green, Def/MyColor"] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": ["TAG_GROUP_ERROR"], + "name": "temporal-tag-error-inset-group-has-extras-delay", + "description": "An Inset group has tags or groups in addition to its defining Def or Def-expand.", + "schema": "8.2.0", + "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], + "tests": { + "string_tests": { + "fails": [ + ], + "passes": [ + ] + }, + "sidecar_tests": { + "fails": [ + ], + "passes": [ + ] + }, + "event_tests": { + "fails": [ + [ + ["onset", "duration", "HED"], + [ 2.5, 0, "Red, (Delay/5.0 s, Def/MyColor, Onset)"], + [ 4.5, 0, "(Delay/5.0 s, Def/MyColor, Blue, Inset)"], + [ 6.5, 0, "Red, (Delay/5.0 s, Def/MyColor, Onset)"], + [ 5.5, 0, "(DDelay/5.0 s, ef/MyColor, Offset)"] + ] + ], + "passes": [ + [ + ["onset", "duration", "HED"], + [ 4.5, 0, "(Delay/5.0 s, Def/MyColor, (Blue), Onset)"], + [ 4.8, 0, "(Delay/5.0 s, Def/MyColor, (Green), Inset)"], + [ 5.5, 0, "(Delay/5.0 s, Def/MyColor, Offset)"], + [ 6.5, 0, "Red"] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Def/MyColor, Onset)", + "ball": "(Delay/5.0 s, Def/MyColor, Offset)", + "snack": "(Delay/5.0 s, Def/MyColor, Inset)" + } + } + }, + "events": + [ + ["onset", "duration", "event_code", "HED"], + [ 4.5, 0, "snack", "Red, Blue"], + [ 4.8, 0, "face", "Red, Blue"], + [ 5.0, 0, "face", "Green"] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Def/MyColor, Onset)", + "ball": "(Delay/5.0 s, Def/MyColor, Offset)", + "snack": "(Delay/5.0 s, Def/MyColor, Inset)" + } + } + }, + "events": + [ + ["onset", "duration", "event_code", "HED"], + [ 4.5, 0, "face", "Blue"], + [ 4.7, 0, "face", "Blue"], + [ 4.8, 0, "snack", "Blue"], + [ 5.0, 0, "ball", "Green, Def/MyColor"] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": ["TAG_GROUP_ERROR"], + "name": "temporal-tag-error-tag-appears-where-not-allowed-delay", + "description": "An Inset, Offset, or Onset tag appears in a tsv with no onset column", + "schema": "8.2.0", + "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], + "tests": { + "string_tests": { + "fails": [ + ], + "passes": [ + ] + }, + "sidecar_tests": { + "fails": [ + ], + "passes": [ + ] + }, + "event_tests": { + "fails": [ + [ + ["duration", "HED"], + [0, "Red, (Delay/5.0 s, Def/MyColor, Onset)"], + [0, "(Delay/5.0 s, Def/MyColor, Yellow, Inset)"], + [0, "Red, (Delay/5.0 s, Def/MyColor, Onset)"], + [0, "(Delay/5.0 s, Def/MyColor, Offset)"] + ] + ], + "passes": [ + [ + ["duration", "HED"], + [0, "(Def/MyColor, (Blue))"], + [0, "(Def/MyColor, (Green))"], + [0, "(Def/MyColor)"], + [0, "Red"] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Def/MyColor, Onset)", + "ball": "(Delay/5.0 s, Def/MyColor, Offset)", + "snack": "(Delay/5.0 s, Def/MyColor, Inset)" + } + } + }, + "events": + [ + ["event_code", "HED"], + ["face", "Def/MyColor, Red, Blue"], + ["ball", "Def/MyColor, Red, Blue"], + ["snack", "Green"] + ] + }, + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Def/MyColor, Duration)", + "ball": "(Delay/5.0 s, Def/MyColor, Delay)" + } + } + }, + "events": + [ + ["event_code", "HED"], + ["face", "Def/MyColor, Red, Blue"], + ["ball", "Def/MyColor, Red, Blue"] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/MyColor)", + "ball": "(Def/MyColor)", + "snack": "(Def/MyColor)" + } + } + }, + "events": + [ + ["event_code", "HED"], + [ "face", "Blue"], + ["face", "Blue"], + ["snack", "Blue"] + ] + } + ] + } + } + } ] \ No newline at end of file diff --git a/tests/json_tests/TILDES_UNSUPPORTED.json b/tests/json_tests/TILDES_UNSUPPORTED.json index 8b8939f7..7e6e083f 100644 --- a/tests/json_tests/TILDES_UNSUPPORTED.json +++ b/tests/json_tests/TILDES_UNSUPPORTED.json @@ -1,9 +1,11 @@ [ { "error_code": "TILDES_UNSUPPORTED", + "alt_codes": ["CHARACTER_INVALID"], "name": "tildes-unsupported", "description": "The tilde syntax is no longer supported for any version of HED.", - "schema": "8.1.0", + "warning": false, + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { diff --git a/tests/json_tests/UNITS_INVALID.json b/tests/json_tests/UNITS_INVALID.json index 96f400f4..c8b6349d 100644 --- a/tests/json_tests/UNITS_INVALID.json +++ b/tests/json_tests/UNITS_INVALID.json @@ -1,9 +1,11 @@ [ { "error_code": "UNITS_INVALID", + "alt_codes": [], "name": "units-invalid-for-unit-class", "description": "A tag has a value with units that are invalid or not of the correct unit class for the tag.", - "schema": "8.1.0", + "warning": false, + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { @@ -95,9 +97,11 @@ }, { "error_code": "UNITS_INVALID", + "alt_codes": [], "name": "units-invalid-si-units", "description": "A unit modifier is applied to units that are not SI units.", - "schema": "8.1.0", + "warning": false, + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { diff --git a/tests/json_tests/UNITS_MISSING.json b/tests/json_tests/UNITS_MISSING.json index c69327df..7222b665 100644 --- a/tests/json_tests/UNITS_MISSING.json +++ b/tests/json_tests/UNITS_MISSING.json @@ -1,10 +1,11 @@ [ { "error_code": "UNITS_MISSING", + "alt_codes": [], "name": "units-missing-on-node-with-unit-class", "description": "A tag that takes value and has a unit class does not have units.", "warning": true, - "schema": "8.1.0", + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { @@ -95,10 +96,11 @@ }, { "error_code": "UNITS_MISSING", + "alt_codes": [], "name": "units-missing-on-node-with-unit-class", "description": "A tag that takes value and has a unit class does not have units.", "warning": true, - "schema": "8.1.0", + "schema": "8.3.0", "definitions": [ ], "tests": { @@ -109,6 +111,18 @@ "passes": [ "Temperature/4 oC" ] + }, + "sidecar_tests": { + "fails": [], + "passes": [] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [], + "passes": [] } } } diff --git a/tests/json_tests/VALUE_INVALID.json b/tests/json_tests/VALUE_INVALID.json index cb5b8278..d7b8fdfb 100644 --- a/tests/json_tests/VALUE_INVALID.json +++ b/tests/json_tests/VALUE_INVALID.json @@ -1,21 +1,16 @@ [ { "error_code": "VALUE_INVALID", + "alt_codes": ["CHARACTER_INVALID", "TAG_INVALID"], "name": "value-invalid-#-substitution", "description": "The value substituted for a placeholder (`#`) is not valid.", - "schema": "8.1.0", + "warning": false, + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { - "fails": [ - "Def/Acc/MyMy", - "Distance/4mxxx", - "Acceleration/banana" - ], - "passes": [ - "Def/Acc/3.4 m-per-s^2", - "Distance/4 m" - ] + "fails": [], + "passes": [] }, "sidecar_tests": { "fails": [ @@ -40,55 +35,37 @@ ] }, "event_tests": { - "fails": [ - [ - ["onset", "duration", "HED"], - [ 4.5, 0, "Def/Acc/MyMy"], - [ 5.0, 0, "Distance/4mxxx"] - ] - ], - "passes": [ - [ - ["onset", "duration", "HED"], - [ 4.5, 0, "Def/Acc/3.4 m-per-s^2"], - [ 5.0, 0, "Distance/4 m"] - ] - ] + "fails": [], + "passes": [] }, "combo_tests": { "fails": [ { "sidecar": { - "event_code": { - "HED": { - "face": "Def/Acc/MyMy", - "ball": "Distance/4mxxx" - } + "response": { + "HED": "Item-count/#" } }, "events": [ - ["onset", "duration", "event_code","HED"], + ["onset", "duration", "response","HED"], [ 4.5, 0, "face", "Red, Def/MyColor"], - [ 5.0, 0, "ball", "Green"] + [ 5.0, 0, 4, "Green"] ] } ], "passes": [ { "sidecar": { - "event_code": { - "HED": { - "face": "Acceleration/5 m-per-s^2", - "ball": "Def/Acc/7, Blue" - } + "response": { + "HED": "Item-count/#" } }, "events": [ - ["onset", "duration", "event_code","HED"], - [ 4.5, 0, "face", "Blue"], - [ 5.0, 0, "ball", "Green, Def/MyColor"] + ["onset", "duration", "response","HED"], + [ 4.5, 0, 5, "Blue"], + [ 5.0, 0, 2, "Green, Def/MyColor"] ] } ] @@ -97,9 +74,11 @@ }, { "error_code": "VALUE_INVALID", + "alt_codes": ["CHARACTER_INVALID"], "name": "value-invalid-incompatible-value-class", - "description": "A tag value is incompatible with the specified value class.", - "schema": "8.1.0", + "description": "A tag placeholder value is incompatible with the specified value class.", + "warning": false, + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { @@ -185,99 +164,11 @@ }, { "error_code": "VALUE_INVALID", - "name": "value-invalid-value-class-missing", - "description": "A tag value with no value class is assumed to be a text and contains invalid characters.", - "schema": "8.1.0", - "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], - "tests": { - "string_tests": { - "fails": [ - "Age/x123 asdf", - "Def/Acc/apple3" - ], - "passes": [ - "Collection/This-collection" - ] - }, - "sidecar_tests": { - "fails": [ - { - "event_code": { - "HED": { - "face": "Age/x123 asdf" - } - } - } - ], - "passes": [ - { - "event_code": { - "HED": { - "face": "Collection/This-collection" - } - } - } - ] - }, - "event_tests": { - "fails": [ - [ - ["onset", "duration", "HED"], - [4.5, 0, "Age/x123 asdf"] - ] - ], - "passes": [ - [ - ["onset", "duration", "HED"], - [ 4.5, 0, "Collection/This-collection"] - ] - ] - }, - "combo_tests": { - "fails": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "Acceleration/banana", - "ball": "Def/Acc/apple3, Blue" - } - } - }, - "events": - [ - ["onset", "duration", "event_code","HED"], - [ 4.5, 0, "face", "Red, Def/MyColor"], - [ 5.0, 0, "ball", "Green"] - ] - } - ], - "passes": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "Acceleration/5 m-per-s^2", - "ball": "Def/Acc/7, Blue" - } - } - }, - "events": - [ - ["onset", "duration", "event_code","HED"], - [ 4.5, 0, "face", "Blue"], - [ 5.0, 0, "ball", "Green, Def/MyColor"] - ] - } - ] - } - } - }, - { - "error_code": "VALUE_INVALID", - "name": "value-invalid-blank-missing", + "alt_codes": ["CHARACTER_INVALID", "TAG_INVALID","UNITS_INVALID"], + "name": "value-invalid-blank-missing-before-units", "description": "The units are not separated from the value by a single blank.", - "schema": "8.1.0", + "warning": false, + "schema": "8.3.0", "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], "tests": { "string_tests": { @@ -361,94 +252,5 @@ ] } } - }, - { - "error_code": "VALUE_INVALID", - "name": "value-invalid-#-value-class", - "description": "An extension or a value substituted for a `#` is not allowed by its value class.", - "schema": "8.1.0", - "definitions": ["(Definition/Acc/#, (Acceleration/#, Red))", "(Definition/MyColor, (Label/Pie))"], - "tests": { - "string_tests": { - "fails": ["Def/Acc/apple3, Blue", "Acceleration/banana"], - "passes": ["Acceleration/3.4 m-per-s^2", "Def/Acc/10.1 m-per-s^2"] - }, - "sidecar_tests": { - "fails": [ - { - "event_code": { - "HED": { - "face": "Acceleration/banana", - "ball": "Def/Acc/apple3, Blue" - } - } - } - ], - "passes": [ - { - "event_code": { - "HED": { - "face": "Acceleration/6.8 m-per-s^2", - "ball": "Def/Acc/5.433 m-per-s^2, Blue" - } - } - } - ] - }, - "event_tests": { - "fails": [ - [ - ["onset", "duration", "HED"], - [ 4.5, 0, "Acceleration/banana"], - [ 5.5, 0, "Def/Acc/apple3, Blue"] - ] - ], - "passes": [ - [ - ["onset", "duration", "HED"], - [ 4.5, 0, "Acceleration/6.8 m-per-s^2"], - [ 5.5, 0, "Def/Acc/5.433 m-per-s^2, Blue"] - ] - ] - }, - "combo_tests": { - "fails": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "Acceleration/banana", - "ball": "Def/Acc/apple3, Blue" - } - } - }, - "events": - [ - ["onset", "duration", "event_code","HED"], - [ 4.5, 0, "face", "Red, Def/MyColor"], - [ 5.0, 0, "ball", "Green"] - ] - } - ], - "passes": [ - { - "sidecar": { - "event_code": { - "HED": { - "face": "Acceleration/5 m-per-s^2", - "ball": "Def/Acc/7 m-per-s^2, Blue" - } - } - }, - "events": - [ - ["onset", "duration", "event_code","HED"], - [ 4.5, 0, "face", "Blue"], - [ 5.0, 0, "ball", "Green, Def/MyColor"] - ] - } - ] - } - } } ] \ No newline at end of file diff --git a/tests/json_tests/VERSION_DEPRECATED.json b/tests/json_tests/VERSION_DEPRECATED.json index 4b147e00..1dcb2f55 100644 --- a/tests/json_tests/VERSION_DEPRECATED.json +++ b/tests/json_tests/VERSION_DEPRECATED.json @@ -1,6 +1,7 @@ [ { "error_code": "VERSION_DEPRECATED", + "alt_codes": [], "name": "version-deprecated", "warning": true, "description": "The HED schema version being used as been deprecated.", diff --git a/tests/python_tests.json b/tests/python_tests.json new file mode 100644 index 00000000..5e9329dd --- /dev/null +++ b/tests/python_tests.json @@ -0,0 +1,15693 @@ +[ + { + "error_code": "CHARACTER_INVALID", + "alt_codes": [ + "TAG_INVALID", + "UNITS_INVALID", + "VALUE_INVALID" + ], + "name": "character-invalid-non-printing appears", + "description": "The HED string contains a UTF-8 character.", + "warning": false, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Item/Bl\b" + ], + "passes": [ + "Red, Blue, Description/Red", + "Description/This is a \u00ca\u00b0 good character" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "show": "Red, Item/Bl\b" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "show": "Red, Label/a \u00ca\u00b0 good" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Item/Bl\b" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Label/Temp, Label/a \u00ca\u00b0 good" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "show": "Red, Item/Bl\b", + "ball": "Def/Acc/4.5 m-per-s^2" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "show", + "Description/a \u00ca\u00b0 good" + ], + [ + 5.0, + 0, + "ball", + "Blue" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "show": "Red, Label/a, Description/a \u00ca\u00b0 good" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "show", + "Description/goodness" + ] + ] + } + ] + } + } + }, + { + "error_code": "CHARACTER_INVALID", + "alt_codes": [ + "TAG_INVALID", + "UNITS_INVALID", + "VALUE_INVALID" + ], + "name": "curly-braces-not-in-sidecar", + "description": "The curly brace notation is used outside a sidecar.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "{col_1}, Red" + ], + "passes": [ + "Red, Blue, Description/Red" + ] + }, + "sidecar_tests": { + "fails": [], + "passes": [ + { + "event_code": { + "HED": { + "face": "Statistical-accuracy/0.677, {response}" + } + }, + "response": { + "HED": "Label/#" + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "{who_knows}, Red" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Label/Temp" + ] + ] + ] + }, + "combo_tests": { + "fails": [], + "passes": [] + } + } + }, + { + "error_code": "CHARACTER_INVALID", + "alt_codes": [ + "TAG_INVALID", + "VALUE_INVALID" + ], + "name": "invalid-character-name-value-class", + "description": "An invalid character was used in an 8.3.0 or greater style text value class.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Parameter-label/[", + "Parameter-label/Taco*", + "Label/30$", + "Label/30db kg" + ], + "passes": [ + "Parameter-label/Words", + "Label/30e10", + "Label/3e10asdf" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "show": "Parameter-label/[" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": "Parameter-label/#" + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Statistical-accuracy/1max1" + ] + ], + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Label/30$" + ] + ], + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Label/30db kg" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Label/3e10asdf" + ] + ] + ] + }, + "combo_tests": { + "fails": [], + "passes": [] + } + } + }, + { + "error_code": "CHARACTER_INVALID", + "alt_codes": [ + "TAG_INVALID", + "UNITS_INVALID", + "VALUE_INVALID" + ], + "name": "invalid-character-name-value-class-deprecated", + "description": "An invalid character was used in an 8.2.0 or lower style text value class.", + "warning": false, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Parameter-label/[", + "Parameter-label/Taco\u00c3\u201e" + ], + "passes": [ + "Parameter-label/Words", + "Parameter-label/Taco*" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "show": "Parameter-label/[" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": "Parameter-label/#" + } + } + ] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [], + "passes": [] + } + } + }, + { + "error_code": "CHARACTER_INVALID", + "alt_codes": [ + "UNITS_INVALID" + ], + "name": "invalid-character-numeric-class", + "description": "An invalid character was used in an 8.3.0 or greater style numeric value class.", + "warning": false, + "schema": "8.3.0", + "definitions": [], + "tests": { + "string_tests": { + "fails": [ + "Weight/3.0$ kg", + "Weight/3.0db kg", + "Weight/3.0& kg", + "Weight/abc kg", + "Weight/*3.0 kg", + "Weight/3.0% kg", + "Weight/3.0^ kg", + "Weight/3.0? kg" + ], + "passes": [ + "Weight/3.0e10 kg", + "Weight/3e10 kg", + "Weight/3.0 kg", + "Weight/3000 kg", + "Weight/3e10 kg", + "Weight/3.5e10 kg", + "Weight/2.998e8 g", + "Weight/6.022e23 g", + "Weight/7.0e-10 g", + "Weight/1.6e-35 kg" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "show": "Weight/3.0a" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": "Weight/# g" + } + } + ] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [], + "passes": [] + } + } + }, + { + "error_code": "COMMA_MISSING", + "alt_codes": [], + "name": "comma-missing-tag-groups", + "description": "Two tag groups are not separated by commas: (A, B)(C, D).", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Red, Blue)(Green, (Yellow))", + "(Def/MyColor, Onset)(Def/Acc/3.5 m-per-s^2)" + ], + "passes": [ + "(Red, Blue), (Green, (Yellow))", + "(Def/MyColor, Onset),(Def/Acc/3.5 m-per-s^2)" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Red, Blue)(Green, (Yellow))", + "ball": "(Def/MyColor, Onset)(Def/Acc/3.5 m-per-s^2)" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, ( Yellow))", + "ball": "(Def/MyColor, Onset),(Def/Acc/3.5 m-per-s^2)" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Red, Blue)(Green, (Yellow))" + ], + [ + 5.5, + 0, + "(Def/MyColor, Onset)(Def/Acc/3.5 m-per-s^2)" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Red, Blue), (Green, (Yellow))" + ], + [ + 5.5, + 0, + "(Def/MyColor, Onset),(Def/Acc/3.5 m-per-s^2)" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Red, Blue)(Green, (Yellow))", + "ball": "(Def/MyColor, Onset)(Def/Acc/3.5 m-per-s^2)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ], + [ + 6.0, + 0, + "n/a", + "(Blue, Green)(Blue, Red)" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, ( Yellow))", + "ball": "(Def/MyColor, Onset),(Def/Acc/3.5 m-per-s^2)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "(Green, Def/MyColor),(Red)" + ] + ] + } + ] + } + } + }, + { + "error_code": "COMMA_MISSING", + "alt_codes": [], + "name": "comma-missing-tag-and-group", + "description": "A tag and a tag group are not separated by commas: A(B,D).", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Red, Blue(Green, (Yellow))", + "(Def/MyColor, Onset)Def/Acc/3.5 m-per-s^2" + ], + "passes": [ + "Red, (Green, (Yellow))", + "(Def/MyColor, Onset),Def/Acc/3.5 m-per-s^2" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Red(Green, (Yellow))", + "ball": "(Def/MyColor, Onset)Def/Acc/3.5 m-per-s^2" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Red, (Green, (Yellow))", + "ball": "(Def/MyColor, Onset),Def/Acc/3.5 m-per-s^2" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Red(Green, (Yellow))" + ], + [ + 5.5, + 0, + "(Def/MyColor, Onset)Def/Acc/3.5 m-per-s^2" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Red, (Green, (Yellow))" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Red(Green, (Yellow))", + "ball": "(Def/MyColor, Onset)Def/Acc/3.5 m-per-s^2" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ], + [ + 6.0, + 0, + "n/a", + "(Green, Yellow)Red" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Red, (Green, (Yellow))", + "ball": "(Def/MyColor, Onset),Def/Acc/3.5 m-per-s^2" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "DEFINITION_INVALID", + "alt_codes": [ + "TAG_GROUP_ERROR" + ], + "name": "definition-invalid-tag-group", + "description": "A Definition tag does not appear in a tag group at the top level in an annotation.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Definition/Apple, (Blue)), ((Definition/Blech, (Red)))", + "Definition/Blech, (Red)" + ], + "passes": [] + }, + "sidecar_tests": { + "fails": [ + { + "defs": { + "HED": { + "def1": "(Definition/Apple, (Blue)), ((Definition/Blech, (Red)))", + "def2": "Definition/Blech, (Red)" + } + } + } + ], + "passes": [ + { + "defs": { + "HED": { + "def1": "(Definition/Blech, (Red))" + } + } + } + ] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "defs": { + "HED": { + "def1": "(Definition/Apple, (Blue)), ((Definition/Blech, (Red)))", + "def2": "Definition/Blech, (Red)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/MyColor, Def/Apple" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "defs": { + "HED": { + "def1": "(Definition/Apple, (Blue))", + "def2": "(Definition/Blech, (Red))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/MyColor, Def/Apple" + ] + ] + } + ] + } + } + }, + { + "error_code": "DEFINITION_INVALID", + "alt_codes": [ + "TAG_EMPTY" + ], + "name": "definition-invalid-empty-inner-group", + "description": "A definition's enclosing tag group has an empty inner group (i.e., the definition's contents).", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [ + { + "defs": { + "HED": { + "def2": "(Definition/Blech/#, ())" + } + } + } + ], + "passes": [ + { + "defs": { + "HED": { + "def1": "(Definition/Apple)" + } + } + } + ] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "defs": { + "HED": { + "def2": "(Definition/Blech/#, ())" + } + } + }, + "events": [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/MyColor, Def/Apple" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "defs": { + "HED": { + "def1": "(Definition/Apple)", + "def2": "(Definition/Blech, (Red))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/MyColor, Def/Apple" + ] + ] + } + ] + } + } + }, + { + "error_code": "DEFINITION_INVALID", + "alt_codes": [ + "TAG_GROUP_ERROR" + ], + "name": "definition-invalid-multiple-definition-tags", + "description": "A definition's enclosing tag group contains more than a `Definition` tag and an inner group.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [ + { + "defs": { + "HED": { + "def1": "(Definition/Apple, Definition/Banana, (Blue))", + "def2": "(Definition/Blech, (Red), Definition/Banana1)", + "def3": "(Definition/Blech1, (Red), Blue)" + } + } + } + ], + "passes": [ + { + "defs": { + "HED": { + "def1": "(Definition/Apple, (Blue))", + "def2": "((Red), Definition/Blech)" + } + } + } + ] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "defs": { + "HED": { + "def1": "(Definition/Apple, Definition/Banana, (Blue))", + "def2": "(Definition/Blech, (Red), Definition/Banana1)", + "def3": "(Definition/Blech1, (Red), Blue)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Apple, Def/Banana" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "defs": { + "HED": { + "def1": "(Definition/Apple, (Blue))", + "def2": "((Red), Definition/Blech)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Blech, Def/Apple" + ] + ] + } + ] + } + } + }, + { + "error_code": "DEFINITION_INVALID", + "alt_codes": [ + "TAG_GROUP_ERROR" + ], + "name": "definition-invalid-inner-group-defs", + "description": "A definition's inner tag group contains `Definition`, `Def` or `Def-expand` tags.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [ + { + "defs": { + "HED": { + "def1": "(Definition/Apple, (Definition/Banana, Blue))", + "def2": "(Definition/Blech, (Red, Def/Apple))" + } + } + } + ], + "passes": [] + }, + "event_tests": { + "fails": [], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Label/a" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "defs": { + "HED": { + "def1": "(Definition/Apple, (Definition/Banana, (Blue)))", + "def2": "(Definition/Blech, ((Red), Def/MyColor))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Apple, Def/Banana" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "defs": { + "HED": { + "def1": "(Definition/Apple, (Blue))", + "def2": "((Red), Definition/Blech)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Blech, Def/Apple" + ] + ] + } + ] + } + } + }, + { + "error_code": "DEFINITION_INVALID", + "alt_codes": [], + "name": "definition-invalid-bad-number-of-placeholders", + "description": "A definition that includes a placeholder (`#`) does not have exactly two `#` characters.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [ + { + "defs": { + "HED": { + "def1": "(Definition/Apple/#, (Label/#, Description/#))", + "def2": "(Definition/Blech/#, (Red))" + } + } + } + ], + "passes": [ + { + "defs": { + "HED": { + "def1": "(Definition/Apple/#, (Label/#))", + "def2": "(Definition/Blech/#, (Red, Label/#))" + } + } + } + ] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "defs": { + "HED": { + "def1": "(Definition/Apple/#, (Label/#, Description/#))", + "def2": "(Definition/Blech/#, (Red))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Apple/3, Def/Blech/might" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "defs": { + "HED": { + "def1": "(Definition/Apple/#, (Label/#))", + "def2": "(Definition/Blech/#, (Red, Label/#))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Blech/5, Def/Apple/4" + ] + ] + } + ] + } + } + }, + { + "error_code": "DEFINITION_INVALID", + "alt_codes": [ + "TAG_INVALID" + ], + "name": "definition-invalid-placeholder-incorrect-of-positions", + "description": "A definition has placeholders (`#`) in incorrect positions.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [ + { + "defs": { + "HED": { + "def1": "(Definition/Apple, (Label/#))", + "def2": "(Definition/Blech/#, (Red, #))" + } + } + } + ], + "passes": [ + { + "defs": { + "HED": { + "def1": "(Definition/Apple, (Label/Blue))", + "def2": "(Definition/Blech/#, (Label/#, Red))" + } + } + } + ] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "defs": { + "HED": { + "def1": "(Definition/Apple, (Label/#))", + "def2": "(Definition/Blech/#, (Red, #))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Apple, Def/Blech/might" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "defs": { + "HED": { + "def1": "(Definition/Apple/#, (Label/#))", + "def2": "(Definition/Blech/#, (Red, Label/#))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Blech/5, Def/Apple/4" + ] + ] + } + ] + } + } + }, + { + "error_code": "DEFINITION_INVALID", + "alt_codes": [ + "TAG_INVALID" + ], + "name": "definition-invalid-placeholder-conflict", + "description": "Definitions of the same name appear with and without a `#`.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [ + { + "defs": { + "HED": { + "def1": "(Definition/Apple, (Label/#))", + "def2": "(Definition/Apple/#, (Red, #))" + } + } + } + ], + "passes": [ + { + "defs": { + "HED": { + "def1": "(Definition/Blech/#, (Label/#))", + "def2": "(Definition/Apple, (Red))" + } + } + } + ] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "defs": { + "HED": { + "def1": "(Definition/Apple, (Label/#))", + "def2": "(Definition/Apple/#, (Red, #))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Apple/3, Def/Apple" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "defs": { + "HED": { + "def1": "(Definition/Apple/#, (Label/#))", + "def2": "(Definition/Blech, (Red))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Blech, Def/Apple/4" + ] + ] + } + ] + } + } + }, + { + "error_code": "DEFINITION_INVALID", + "alt_codes": [], + "name": "definition-invalid-multiple-definitions", + "description": "Multiple `Definition` tags with same name are encountered.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [ + { + "defs": { + "HED": { + "def1": "(Definition/Apple/#, (Label/#, Description/#))", + "def2": "(Definition/Apple/#, (Label/#))", + "def3": "(Definition/MyColor, (Blue))" + } + } + } + ], + "passes": [ + { + "defs": { + "HED": { + "def1": "(Definition/Apple/#, (Label/ThisIsALabel, Description/#))", + "def2": "(Definition/Apple2/#, (Label/#))", + "def3": "(Definition/MyColor2, (Blue))" + } + } + } + ] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "defs": { + "HED": { + "def1": "(Definition/Apple/#, (Label/#, Description/#))", + "def2": "(Definition/Apple/#, (Label/#))", + "def3": "(Definition/MyColor, (Blue))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Apple/3, Def/Blech/might" + ], + [ + 5.0, + 0, + "Def/MyColor" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "defs": { + "HED": { + "def1": "(Definition/Apple/#, (Label/#))", + "def2": "(Definition/Blech/#, (Red, Label/#))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Blech/5, Def/Apple/4" + ] + ] + } + ] + } + } + }, + { + "error_code": "DEFINITION_INVALID", + "alt_codes": [], + "name": "definition-invalid-content-has-top-level-tag", + "description": "A tag with a required or unique attribute appears in a definition.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [ + { + "defs": { + "HED": { + "def1": "(Definition/Apple, (Event-context, Red))", + "def2": "(Definition/Banana/#, (Label/#))" + } + } + } + ], + "passes": [ + { + "defs": { + "HED": { + "def1": "(Definition/Apple, (Red))", + "def2": "(Definition/Banana/#, (Label/#))" + } + } + } + ] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "defs": { + "HED": { + "def1": "(Definition/Apple, (Event-context, Red))", + "def2": "(Definition/Banana/#, (Label/#))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Apple, Def/Banana/might" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "defs": { + "HED": { + "def1": "(Definition/Apple, (Red))", + "def2": "(Definition/Banana/#, (Label/#))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Apple, Def/Banana/might" + ] + ] + } + ] + } + } + }, + { + "error_code": "DEFINITION_INVALID", + "alt_codes": [], + "name": "definition-not-allowed-here", + "description": "A definition appears in an unexpected place such as an events file or sidecar.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Item, (Label/Pie)))" + ], + "tests": { + "string_tests": { + "fails": [ + "Red, Blue, (Definition/myDef, (Label/Red, Blue))" + ], + "passes": [ + "Red, Blue" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Red, Blue, (Definition/myDef, (Label/Red, Blue))", + "ball": "Def/Acc/4.5 m-per-s^2" + } + } + } + ], + "passes": [ + { + "defs": { + "HED": { + "face": "(Definition/myDef, (Label/Red, Blue)), (Definition/myDef2, (Label/Red, Blue))", + "ball": "(Definition/myDef1, (Label/Red, Blue))" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Definition/myDef, (Label/Red, Green))" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Red, Blue, Def/MyColor" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Red, Blue, (Definition/myDef, (Label/Red, Blue))", + "ball": "Def/Acc/4.5 m-per-s^2" + } + } + }, + "events": [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/myDef, Red" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "defs": { + "HED": { + "def1": "(Definition/Apple/#, (Label/#))", + "def2": "(Definition/Blech/#, (Red, Label/#))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Blech/5, Def/Apple/4" + ] + ] + } + ] + } + } + }, + { + "error_code": "DEF_EXPAND_INVALID", + "alt_codes": [], + "name": "def-expand-invalid-name-not-definition", + "description": "A `Def-expand` tag's name does not correspond to a definition.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Def-expand/Acc2/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))", + "(Def-expand/MyColor2, (Label/Pie))" + ], + "passes": [ + "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Def-expand/Acc2/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))", + "ball": "(Def-expand/MyColor2, (Label/Pie))" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))", + "ball": "(Def-expand/MyColor, (Label/Pie))" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def-expand/Acc2/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))" + ], + [ + 5.5, + 0, + "(Def-expand/MyColor2, (Label/Pie))" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))" + ], + [ + 5.5, + 0, + "(Def-expand/MyColor, (Label/Pie))" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def-expand/Acc2/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))", + "ball": "(Def-expand/MyColor2, (Label/Pie)))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ], + [ + 5.0, + 0, + "ball", + "(Def-expand/Junk, (Label/Red))" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))", + "ball": "(Def-expand/MyColor, (Label/Pie))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))" + ], + [ + 5.5, + 0, + "(Def-expand/MyColor, (Label/Pie))" + ] + ] + } + ] + } + } + }, + { + "error_code": "DEF_EXPAND_INVALID", + "alt_codes": [], + "name": "def-expand-invalid-missing-placeholder", + "description": "A `Def-expand` is missing an expected placeholder value or has an unexpected placeholder value.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Def-expand/Acc, (Acceleration, Red))", + "(Def-expand/Acc/4.5/3, (Acceleration, Red))", + "(Def-expand/MyColor/Blue, (Label/Pie))" + ], + "passes": [ + "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))", + "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Def-expand/Acc, (Acceleration, Red))", + "ball": "(Def-expand/Acc/4.5/3, (Acceleration, Red))", + "circle": "(Def-expand/MyColor2/4, (Label/Pie))" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))", + "ball": "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def-expand/Acc, (Acceleration, Red))" + ], + [ + 5.5, + 0, + "(Def-expand/Acc/4.5/3, (Acceleration, Red))" + ], + [ + 6.5, + 0, + "(Def-expand/MyColor2/4, (Label/Pie))" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))" + ], + [ + 5.5, + 0, + "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def-expand/Acc, (Acceleration, Red))", + "ball": "(Def-expand/Acc/4.5/3, (Acceleration, Red))", + "circle": "(Def-expand/MyColor2/4, (Label/Pie))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + " (Def-expand/Acc, (Acceleration, Red))" + ], + [ + 5.5, + 0, + "ball", + "(Def-expand/Acc/4.5/3, (Acceleration, Red))" + ], + [ + 5.6, + 0, + "circle", + "(Def-expand/Acc/4.5/3, (Acceleration, Red))" + ], + [ + 6.5, + 0, + "n/a", + "(Def-expand/MyColor2/4, (Label/Pie))" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))", + "ball": "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ], + [ + 5.2, + 0, + "ball", + "(Def-expand/MyColor, (Label/Pie))" + ] + ] + } + ] + } + } + }, + { + "error_code": "DEF_EXPAND_INVALID", + "alt_codes": [], + "name": "def-expand-invalid-bad-placeholder-units", + "description": "A `Def-expand` has a placeholder value of incorrect format or units for definition.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Def-expand/Acc/Make-me, (Acceleration/Make-me, Red))", + "(Def-expand/Acc/4.5 m, (Acceleration/4.5 m, Red))", + "(Def-expand/Acc/4.5m-per-s^2, (Acceleration/4.5m-per-s^2, Red))" + ], + "passes": [ + "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Def-expand/Acc/Make-me, (Acceleration/Make-me, Red))", + "ball": "(Def-expand/Acc/4.5 m, (Acceleration/4.5 m, Red))", + "square": "(Def-expand/Acc/4.5m-per-s^2, (Acceleration/4.5m-per-s^2, Red))" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))", + "ball": "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def-expand/Acc/Make-me, (Acceleration/Make-me, Red))" + ], + [ + 5.5, + 0, + "(Def-expand/Acc/4.5 m, (Acceleration/4.5 m, Red))" + ], + [ + 6.3, + 0, + "(Def-expand/Acc/4.5m-per-s^2, (Acceleration/4.5m-per-s^2, Red))" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))" + ], + [ + 5.5, + 0, + "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def-expand/Acc/Make-me, (Acceleration/Make-me, Red))", + "ball": "(Def-expand/Acc/4.5 m, (Acceleration/4.5 m, Red))", + "square": "(Def-expand/Acc/4.5m-per-s^2, (Acceleration/4.5m-per-s^2, Red))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "(Def-expand/Acc/Make-me, (Acceleration/Make-me, Red))" + ], + [ + 5.5, + 0, + "ball", + "(Def-expand/Acc/4.5 m, (Acceleration/4.5 m, Red))" + ], + [ + 6.3, + 0, + "square", + "(Def-expand/Acc/4.5m-per-s^2, (Acceleration/4.5m-per-s^2, Red))" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))", + "ball": "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "(Def-expand/Acc/5.5 m-per-s^2, (Acceleration/5.5 m-per-s^2, Red))" + ], + [ + 5.5, + 0, + "ball", + "(Def-expand/Acc/5.5 m-per-s^2, (Acceleration/5.5 m-per-s^2, Red))" + ], + [ + 6.5, + 0, + "n/a", + "n/a" + ] + ] + } + ] + } + } + }, + { + "error_code": "DEF_EXPAND_INVALID", + "alt_codes": [], + "name": "def-expand-invalid-tags-not-in-definition", + "description": "The tags within a Def-expand do not match the corresponding definition.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/6, Red))", + "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Blue))", + "(Def-expand/MyColor, (Label/Cake))" + ], + "passes": [ + "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/6, Red))", + "ball": "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Blue))", + "square": "(Def-expand/MyColor, (Label/Cake))" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))", + "ball": "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/6, Red))" + ], + [ + 5.5, + 0, + "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Blue))" + ], + [ + 6.3, + 0, + "(Def-expand/MyColor, (Label/Cake))" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))" + ], + [ + 5.5, + 0, + "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/6, Red))", + "ball": "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Blue))", + "square": "(Def-expand/MyColor, (Label/Cake)))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/6, Red))" + ], + [ + 5.5, + 0, + "ball", + "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Blue))" + ], + [ + 6.3, + 0, + "square", + "(Def-expand/MyColor, (Label/Cake))" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))", + "ball": "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "(Def-expand/Acc/6.5 m-per-s^2, (Acceleration/6.5 m-per-s^2, Red))" + ], + [ + 5.5, + 0, + "ball", + "(Def-expand/Acc/8.5 m-per-s^2, (Acceleration/8.5 m-per-s^2, Red))" + ] + ] + } + ] + } + } + }, + { + "error_code": "DEF_EXPAND_INVALID", + "alt_codes": [], + "name": "def-expand-missing-inner-group", + "description": "A Def-expand is missing its inner group containing the definition.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Item, (Label/Pie)))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Def-expand/Acc/5.4 m-per-s^2)" + ], + "passes": [ + "(Def-expand/Acc/5.4 m-per-s^2, (Acceleration/5.4 m-per-s^2, Red))" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Def-expand/Acc/4.5 m-per-s^2, Red)", + "ball": "(Def-expand/Acc/4.5 m-per-s^2)" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Def-expand/Acc/5.4 m-per-s^2, (Acceleration/5.4 m-per-s^2, Red))", + "ball": "Red" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def-expand/Acc/4.5 m-per-s^2, Red)" + ], + [ + 5.4, + 0, + "(Def-expand/Acc/5.4 m-per-s^2)" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def-expand/Acc/5.4 m-per-s^2, (Acceleration/5.4 m-per-s^2, Red))" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def-expand/Acc/4.5 m-per-s^2)", + "ball": "Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "ball", + "Def/Acc, (Def-expand/Acc/4.5 m-per-s^2)" + ], + [ + 5.4, + 0, + "n/a", + "Green" + ], + [ + 6.4, + 0, + "face", + "n/a" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def-expand/Acc/5.4 m-per-s^2, (Acceleration/5.4 m-per-s^2, Red))", + "ball": "(Acceleration/4.5 m-per-s^2, Blue), Def/MyColor" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "n/a" + ], + [ + 6.5, + 0, + "ball", + "(Def-expand/Acc/5.4 m-per-s^2, (Acceleration/5.4 m-per-s^2, Red))" + ] + ] + } + ] + } + } + }, + { + "error_code": "DEF_EXPAND_INVALID", + "alt_codes": [], + "name": "def-expand-has-extras", + "description": "A Def-expand has extra tags or groups.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Item, (Label/Pie)))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Def-expand/Acc/5.4 m-per-s^2, (Acceleration/5.4 m-per-s^2, Red), Blue)", + "(Def-expand/Acc/5.4 m-per-s^2, (Acceleration/5.4 m-per-s^2, Red), (Blue, Green), Black)" + ], + "passes": [ + "(Def-expand/Acc/5.4 m-per-s^2, (Acceleration/5.4 m-per-s^2, Red))" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Def-expand/Acc/5.4 m-per-s^2, (Acceleration/5.4 m-per-s^2, Red), Blue)", + "ball": "(Def-expand/Acc/5.4 m-per-s^2, (Acceleration/5.4 m-per-s^2, Red), (Blue, Green), Black)" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Def-expand/Acc/5.4 m-per-s^2, (Acceleration/5.4 m-per-s^2, Red))", + "ball": "Red" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def-expand/Acc/5.4 m-per-s^2, (Acceleration/5.4 m-per-s^2, Red), Blue)" + ], + [ + 5.4, + 0, + "(Def-expand/Acc/5.4 m-per-s^2, (Acceleration/5.4 m-per-s^2, Red), (Blue, Green), Black)" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def-expand/Acc/5.4 m-per-s^2, (Acceleration/5.4 m-per-s^2, Red))" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def-expand/Acc/5.4 m-per-s^2, (Acceleration/5.4 m-per-s^2, Red), Blue)", + "ball": "Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "ball", + "Def/Acc, (Def-expand/Acc/4.5 m-per-s^2)" + ], + [ + 5.4, + 0, + "n/a", + "(Def-expand/Acc/5.4 m-per-s^2, (Acceleration/5.4 m-per-s^2, Red), Blue)" + ], + [ + 6.4, + 0, + "face", + "n/a" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def-expand/Acc/5.4 m-per-s^2, (Acceleration/5.4 m-per-s^2, Red))", + "ball": "(Acceleration/4.5 m-per-s^2, Blue), Def/MyColor" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "n/a" + ], + [ + 6.5, + 0, + "ball", + "(Def-expand/Acc/5.4 m-per-s^2, (Acceleration/5.4 m-per-s^2, Red))" + ] + ] + } + ] + } + } + }, + { + "error_code": "DEF_INVALID", + "alt_codes": [], + "name": "def-invalid-name", + "description": "A `Def` tag's name does not correspond to a definition.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Def/Apple2, Green", + "Def/Acc2/4.5", + "Def/Acc" + ], + "passes": [ + "Def/Acc/4.5 m-per-s^2" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Def/Apple2, Green", + "ball": "Def/Acc2/4.5, Def/Acc/3.2 m-per-s^2" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Def/Acc/4.5 m-per-s^2" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Apple2, Green" + ], + [ + 5.5, + 0, + "Def/Acc2/4.5 m-per-s^2" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Acc/4.5 m-per-s^2" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Def/Apple2, Green", + "ball": "Def/Acc2/4.5, Def/Acc/3.2" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "ball", + "Def/Apple2, Green" + ], + [ + 5.5, + 0, + "face", + "Def/Acc2/4.5 m-per-s^2" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Def/Acc/4.5 m-per-s^2" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "DEF_INVALID", + "alt_codes": [], + "name": "def-invalid-missing-placeholder", + "description": "A `Def` tag is missing an expected placeholder value or has an unexpected placeholder value.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Def/Acc, (Def/Acc/4.5 m-per-s^2, Red)", + "Def/MyColor/Blue" + ], + "passes": [ + "Def/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red)" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Def/Acc, (Def/Acc/4.5 m-per-s^2, Red)", + "ball": "(Def/MyColor/Blue, Green)" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Def/Acc/4.5 m-per-s^2, Red", + "ball": "(Acceleration/4.5 m-per-s^2, Red), Def/MyColor" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Acc, (Def/Acc/4.5 m-per-s^2, Red)" + ], + [ + 5.4, + 0, + "Def/MyColor/Blue, Green" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red)" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Def/Acc, (Def/Acc/4.5 m-per-s^2, Red)", + "ball": "(Def/MyColor/Blue, Green)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "ball", + "Def/Acc, (Def/Acc/4.5 m-per-s^2, Red)" + ], + [ + 5.4, + 0, + "n/a", + "Def/MyColor/Blue, Green" + ], + [ + 6.4, + 0, + "face", + "n/a" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Def/Acc/4.5 m-per-s^2, Red", + "ball": "(Acceleration/4.5 m-per-s^2, Red), Def/MyColor" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Def/Acc/5.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red)" + ], + [ + 6.5, + 0, + "ball", + "n/a" + ] + ] + } + ] + } + } + }, + { + "error_code": "DEF_INVALID", + "alt_codes": [], + "name": "def-invalid-bad-placeholder-units", + "description": "A `Def` has a placeholder value of incorrect format or units for definition.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Def/Acc/baloney, (Def/Acc/4.5 m-per-s^2, Red)", + "Def/Acc/3 m", + "Def/Acc/4m-per-s^2", + "Def/MyColor/Redish" + ], + "passes": [ + "Def/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red)" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Def/Acc/baloney, (Def/Acc/4.5 m-per-s^2, Red)", + "ball": "Def/Acc/3 m", + "square": "Def/Acc/4m-per-s^2", + "triangle": "Def/MyColor/Redish" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Def/Acc/4.5 m-per-s^2, Red)", + "ball": "Def/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red)" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Acc/baloney, (Def/Acc/4.5 m-per-s^2, Red)" + ], + [ + 5.0, + 0, + "Def/Acc/3 m" + ], + [ + 6.3, + 0, + "Def/Acc/4m-per-s^2" + ], + [ + 7.2, + 0, + "Def/MyColor/Redish" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red)" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Def/Acc/baloney, (Def/Acc/4.5 m-per-s^2, Red)", + "ball": "Def/Acc/3 m", + "square": "Def/Acc/4m-per-s^2", + "triangle": "Def/MyColor/Redish" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "ball", + "Def/Acc/baloney, (Def/Acc/4.5 m-per-s^2, Red)" + ], + [ + 5.0, + 0, + "face", + "Def/Acc/3 m" + ], + [ + 6.3, + 0, + "n/a", + "Def/Acc/4m-per-s^2" + ], + [ + 7.2, + 0, + "square", + "Def/MyColor/Redish" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/Acc/4.5 m-per-s^2, Red)", + "ball": "Def/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "ELEMENT_DEPRECATED", + "alt_codes": [], + "name": "tag-deprecated", + "description": "A tag is deprecated", + "warning": true, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Def/MyColor, Green, Gentalia", + "Gentalia" + ], + "passes": [ + "Torso" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Def/MyColor, Green, Gentalia", + "ball": "Green, Blue" + } + }, + "other_code": { + "HED": "Label/#, Gentalia" + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Torso" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Gentalia, Green" + ], + [ + 5.5, + 0, + "n/a" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Torso" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Gentalia", + "ball": "Green" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "ball", + "Blue" + ], + [ + 5.5, + 0, + "face", + "Red" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Torso", + "ball": "Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "PARENTHESES_MISMATCH", + "alt_codes": [], + "name": "parentheses-mismatch-unmatched-parentheses", + "description": "A HED string does not have the same number of open and closed parentheses.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Def/MyColor, (Blue, (Yellow)), Red))", + "((Red, ((Blue, Green), Yellow))", + "((Red, ((Blue), Green)), (Yellow)" + ], + "passes": [ + "(Def/Acc/5.3 m-per-s^2, (Red))" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Def/MyColor, (Blue, (Yellow)), Red))", + "ball": "(Red, ((Blue, Green), Yellow))", + "square": "(Red, ((Blue), Green)), (Yellow)" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Def/Acc/5.3 m-per-s^2, (Red))" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def/MyColor, (Blue, (Yellow)), Red))" + ], + [ + 5.5, + 0, + "(Red, ((Blue, Green), Yellow))" + ], + [ + 6.3, + 0, + "(Red, ((Blue), Green)), (Yellow)" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def/Acc/5.3 m-per-s^2, (Red))" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/banana", + "ball": "Def/Acc/apple3, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "(Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "Def/Acc/7, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "PARENTHESES_MISMATCH", + "alt_codes": [], + "name": "parentheses-mismatch-incorrect-nesting", + "description": "The open and closed parentheses are not correctly nested in the HED string.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Def/MyColor)), (Blue, (Yellow)), (Red)", + ")(Def/MyColor)), (Blue, (Yellow)), (Red))" + ], + "passes": [ + "(Def/Acc/5.3 m-per-s^2, (Red))", + "(((((Def/Acc/5.3 m-per-s^2, (Red))))))" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Def/MyColor)), (Blue, (Yellow)), (Red)", + "ball": ")(Def/MyColor)), (Blue, (Yellow)), (Red))" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Def/Acc/5.3 m-per-s^2, (Red))", + "ball": "(((((Def/Acc/5.3 m-per-s^2, (Red))))))" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def/MyColor)), (Blue, (Yellow)), (Red)" + ], + [ + 5.5, + 0, + ")(Def/MyColor)), (Blue, (Yellow)), (Red))" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def/Acc/5.3 m-per-s^2, (Red))" + ], + [ + 5.5, + 0, + "(((((Def/Acc/5.3 m-per-s^2, (Red))))))" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/MyColor)), (Blue, (Yellow)), (Red)", + "ball": ")(Def/MyColor)), (Blue, (Yellow)), (Red))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "),Red, (((Def/MyColor)))" + ], + [ + 5.0, + 0, + "ball", + "(Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/Acc/5.3 m-per-s^2, (Red))", + "ball": "(((((Def/Acc/5.3 m-per-s^2, (Red))))))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, ((Def/MyColor))" + ] + ] + } + ] + } + } + }, + { + "error_code": "PLACEHOLDER_INVALID", + "alt_codes": [], + "name": "placeholder-invalid-misplaced", + "description": "A `#` appears in a place that it should not (such as in the `HED` column of an event file outside a definition).", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Label/#", + "Def/Acc/# m-per-s^2" + ], + "passes": [ + "Label/This-label" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Label/#", + "ball": "Def/Acc/# m-per-s^2" + } + } + } + ], + "passes": [] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Label/#" + ], + [ + 5.0, + 0, + "Def/Acc/# m-per-s^2" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Label/This-label" + ], + [ + 6.0, + 0, + "(Def/Acc/3.5 m-per-s^2)" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/banana", + "ball": "Def/Acc/apple3, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/Acc/#" + ], + [ + 5.0, + 0, + "ball", + "Label/#" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "Def/Acc/7, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "PLACEHOLDER_INVALID", + "alt_codes": [], + "name": "placeholder-invalid-#-in-categorical-column", + "description": "A JSON sidecar has a placeholder (`#`) in the HED dictionary for a categorical column.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Label/#", + "ball": "Def/Acc/# m-per-s^2" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Label/This-label", + "ball": "(Def/Acc/3.5 m-per-s^2)" + } + } + } + ] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Label/#", + "ball": "Def/Acc/#" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "Def/Acc/7, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "PLACEHOLDER_INVALID", + "alt_codes": [], + "name": "placeholder-invalid-json-value-column", + "description": "A JSON sidecar does not have exactly one placeholder (`#`) in each HED string representing a value column.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [ + { + "trial": { + "HED": "Def/Acc/# m-per-s^2, Label/#" + }, + "memory": { + "HED": "Blue, Red, Label/#" + } + } + ], + "passes": [ + { + "trial": { + "HED": "Def/Acc/# m-per-s^2" + } + } + ] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "trial": { + "HED": "Def/Acc/#, Label/#" + }, + "memory": { + "HED": "Blue, Red, Label/#" + } + }, + "events": [ + [ + "onset", + "duration", + "trial", + "memory", + "HED" + ], + [ + 4.5, + 0, + "3", + "4", + "Green, Def/MyColor" + ], + [ + 5.0, + 0, + "2", + "6", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "trial": { + "HED": "Def/Acc/#, Label/Trial" + }, + "memory": { + "HED": "Blue, Red, Label/#" + } + }, + "events": [ + [ + "onset", + "duration", + "trial", + "memory", + "HED" + ], + [ + 4.5, + 0, + "5", + "4", + "Green" + ], + [ + 5.0, + 0, + "3", + "2", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "PLACEHOLDER_INVALID", + "alt_codes": [ + "TAG_EXTENSION_INVALID" + ], + "name": "placeholder-invalid-json-#-misplaced", + "description": "A placeholder (`#`) is used in JSON sidecar or definition, but its parent in the schema does not have a placeholder child.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [ + { + "trial": { + "HED": "Sensory-event/#" + }, + "defs": { + "def1": "(Definition/Blech/#, (Red, Blue/#))" + } + } + ], + "passes": [ + { + "trial": { + "HED": "Label/#" + } + } + ] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "trial": { + "HED": "Sensory-event/#" + }, + "defs": { + "def1": "(Definition/Blech/#, (Red, Blue/#))" + } + }, + "events": [ + [ + "onset", + "duration", + "trial", + "HED" + ], + [ + 4.5, + 0, + "3", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "2", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "trial": { + "HED": "Sensory-event, Label/#" + }, + "defs": { + "def1": "(Definition/Blech/#, (Red, Label/#))" + } + }, + "events": [ + [ + "onset", + "duration", + "trial", + "HED" + ], + [ + 4.5, + 0, + "3", + "Blue" + ], + [ + 5.0, + 0, + "2", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "REQUIRED_TAG_MISSING", + "alt_codes": [], + "name": "required-tag-missing", + "description": "An event-level annotation does not have a tag corresponding to a node with the `required` schema attribute. (Note this is deprecated so no tests.)", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [], + "passes": [] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [], + "passes": [] + } + } + }, + { + "error_code": "REQUIRED_TAG_MISSING", + "alt_codes": [], + "name": "required-tag-in-definition", + "description": "A required tag appears in a definition", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [], + "passes": [] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [], + "passes": [] + } + } + }, + { + "error_code": "SCHEMA_ATTRIBUTE_INVALID", + "name": "attribute-invalid-unknown", + "warning": true, + "description": "A schema attribute issue, saying there is an unknown one.", + "schema": "", + "definitions": [], + "tests": { + "schema_tests": { + "fails": [ + [ + "HED version=\"1.0.0\"", + "'''Prologue'''", + "!# start schema", + "'''Tag-with-unknown''' {unknownAttribute}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.0.0\"", + "'''Prologue'''", + "!# start schema", + "'''Tag-with-unknown''' {unitAttribute}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes''' {unitProperty}", + "* unitAttribute {unitProperty}", + "'''Properties''' ", + "* unitProperty ", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.0.0\"", + "'''Prologue'''", + "!# start schema", + "'''Tag'''", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers''' ", + "* mod1 {unitAttribute}[Wrong attribute type]", + "'''Value classes'''", + "'''Schema attributes''' {unitProperty}", + "* unitAttribute {unitProperty}", + "'''Properties''' ", + "* unitProperty ", + "'''Epilogue'''", + "!# end hed" + ] + ], + "passes": [ + [ + "HED version=\"1.0.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''Tag-with-unknown''' {suggestedTag=Event}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ] + } + } + }, + { + "error_code": "SCHEMA_ATTRIBUTE_VALUE_INVALID", + "name": "attribute-invalid-allowed-character", + "warning": true, + "description": "A schema unit has an invalid conversion factor", + "schema": "", + "definitions": [], + "tests": { + "schema_tests": { + "fails": [ + [ + "HED version=\"1.0.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "!# end schema", + "'''Unit classes''' ", + "'''Unit modifiers'''", + "'''Value classes'''", + "* testValueClass {allowedCharacter=?d}", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ], + "passes": [ + [ + "HED version=\"1.0.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "!# end schema", + "'''Unit classes''' ", + "'''Unit modifiers'''", + "'''Value classes'''", + "* testValueClass {allowedCharacter=?, allowedCharacter=letters}", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.0.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "!# end schema", + "'''Unit classes''' ", + "'''Unit modifiers'''", + "'''Value classes'''", + "* testValueClass {allowedCharacter=letters}", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ] + } + } + }, + { + "error_code": "SCHEMA_ATTRIBUTE_VALUE_INVALID", + "name": "attribute-conversion-factor-invalid", + "warning": true, + "description": "A schema unit has an invalid conversion factor", + "schema": "", + "definitions": [], + "tests": { + "schema_tests": { + "fails": [ + [ + "HED version=\"1.0.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "!# end schema", + "'''Unit classes''' ", + "* testUnitClass ", + "** testUnit1{SIUnit, conversionFactor=-1.0}", + "** testUnit2", + "** testUnit3", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.0.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "!# end schema", + "'''Unit classes''' ", + "* testUnitClass ", + "** testUnit1{SIUnit, conversionFactor=word}", + "** testUnit2", + "** testUnit3", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.0.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "!# end schema", + "'''Unit classes''' ", + "* testUnitClass ", + "** testUnit1{SIUnit, conversionFactor=None}", + "** testUnit2", + "** testUnit3", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.0.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "!# end schema", + "'''Unit classes''' ", + "* testUnitClass ", + "** testUnit1{SIUnit, conversionFactor}", + "** testUnit2", + "** testUnit3", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ], + "passes": [ + [ + "HED version=\"1.0.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "!# end schema", + "'''Unit classes''' ", + "* testUnitClass {defaultUnits=testUnit1}", + "** testUnit1", + "** testUnit2", + "** testUnit3", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ] + } + } + }, + { + "error_code": "WIKI_DELIMITERS_INVALID", + "name": "attribute-conversion-format", + "warning": true, + "description": "A schema unit has an invalid conversion factor due to bad formatting", + "schema": "", + "definitions": [], + "tests": { + "schema_tests": { + "fails": [ + [ + "HED version=\"1.0.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "!# end schema", + "'''Unit classes''' ", + "* testUnitClass ", + "** testUnit1{SIUnit, conversionFactor=}", + "** testUnit2", + "** testUnit3", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ], + "passes": [] + } + } + }, + { + "error_code": "SCHEMA_ATTRIBUTE_VALUE_INVALID", + "name": "attribute-default-unit-invalid", + "warning": true, + "description": "A schema unit class has an invalid default value", + "schema": "", + "definitions": [], + "tests": { + "schema_tests": { + "fails": [ + [ + "HED version=\"1.0.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "!# end schema", + "'''Unit classes''' [Unit classes and the units for the nodes.]", + "* testUnitClass {defaultUnits=testUnit0}", + "** testUnit1", + "** testUnit2", + "** testUnit3", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ], + "passes": [ + [ + "HED version=\"1.0.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "!# end schema", + "'''Unit classes''' [Unit classes and the units for the nodes.]", + "* testUnitClass {defaultUnits=testUnit1}", + "** testUnit1", + "** testUnit2", + "** testUnit3", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ] + } + } + }, + { + "error_code": "SCHEMA_ATTRIBUTE_VALUE_INVALID", + "name": "attribute-invalid-hed-id-changed", + "warning": true, + "description": "A schema value class issue, saying there is an unknown one.", + "schema": "", + "definitions": [], + "tests": { + "schema_tests": { + "fails": [ + [ + "HED version=\"8.4.0\"", + "'''Prologue'''", + "!# start schema", + "'''Event'''{hedId=HED_0015001}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "* hedId {elementDomain}", + "'''Properties'''", + "* elementDomain", + "'''Epilogue'''", + "!# end hed" + ] + ], + "passes": [ + [ + "HED version=\"8.4.0\"", + "'''Prologue'''", + "!# start schema", + "'''Event'''{hedId=HED_0012001}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "* hedId {elementDomain}", + "'''Properties'''", + "* elementDomain", + "'''Epilogue'''", + "!# end hed" + ] + ] + } + } + }, + { + "error_code": "SCHEMA_ATTRIBUTE_VALUE_INVALID", + "name": "attribute-invalid-hed-id-out-range", + "warning": true, + "description": "A schema value class issue, saying there is an unknown one.", + "schema": "", + "definitions": [], + "tests": { + "schema_tests": { + "fails": [ + [ + "HED version=\"8.4.0\"", + "'''Prologue'''", + "!# start schema", + "'''NewTagWithNewID'''{hedId=HED_0055000}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "* hedId {elementDomain}", + "'''Properties'''", + "* elementDomain", + "'''Epilogue'''", + "!# end hed" + ] + ], + "passes": [ + [ + "HED version=\"8.4.0\"", + "'''Prologue'''", + "!# start schema", + "'''NewTagWithNewID'''{hedId=HED_0015001}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "* hedId {elementDomain}", + "'''Properties'''", + "* elementDomain", + "'''Epilogue'''", + "!# end hed" + ] + ] + } + } + }, + { + "error_code": "SCHEMA_ATTRIBUTE_VALUE_INVALID", + "name": "attribute-invalid-hed-id-invalid", + "warning": true, + "description": "A schema value class issue, saying there is an unknown one.", + "schema": "", + "definitions": [], + "tests": { + "schema_tests": { + "fails": [ + [ + "HED version=\"8.4.0\"", + "'''Prologue'''", + "!# start schema", + "'''NewTagWithNewID'''{hedId=HED_XXXXXXX}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "* hedId {elementDomain}", + "'''Properties'''", + "* elementDomain", + "'''Epilogue'''", + "!# end hed" + ] + ], + "passes": [ + [ + "HED version=\"8.4.0\"", + "'''Prologue'''", + "!# start schema", + "'''NewTagWithNewID'''{hedId=HED_0015001}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "* hedId {elementDomain}", + "'''Properties'''", + "* elementDomain", + "'''Epilogue'''", + "!# end hed" + ] + ] + } + } + }, + { + "error_code": "SCHEMA_ATTRIBUTE_VALUE_INVALID", + "name": "attribute-invalid-in-library", + "warning": true, + "description": "A schema unit has an invalid in library attribute(most other library errors are SCHEMA_LIBRARY_INVALID", + "schema": "", + "definitions": [], + "tests": { + "schema_tests": { + "fails": [ + [ + "HED version=\"1.0.0\" library=\"right\"", + "'''Prologue'''", + "!# start schema", + "'''Tag''' {inLibrary=wrong}", + "!# end schema", + "'''Unit classes''' ", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "* inLibrary {elementProperty}", + "'''Properties'''", + "* elementProperty", + "'''Epilogue'''", + "!# end hed" + ] + ], + "passes": [ + [ + "HED version=\"1.0.0\" library=\"right\"", + "'''Prologue'''", + "!# start schema", + "'''Tag''' {inLibrary=right}", + "!# end schema", + "'''Unit classes''' ", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "* inLibrary {elementProperty}", + "'''Properties'''", + "* elementProperty", + "'''Epilogue'''", + "!# end hed" + ] + ] + } + } + }, + { + "error_code": "SCHEMA_ATTRIBUTE_VALUE_INVALID", + "name": "attribute-on-nonplaceholder-invalid", + "warning": true, + "description": "A non placeholder tag has takes value, unit class, or value class", + "schema": "", + "definitions": [], + "tests": { + "schema_tests": { + "fails": [ + [ + "HED version=\"1.0.0\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag''' {takesValue}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.0.0\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag''' {valueClass=numericClass}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.0.0\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag''' {unitClass=timeUnits}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ], + "passes": [ + [ + "HED version=\"1.0.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag''' {relatedTag=Event}", + "* # {takesValue, unitClass=timeUnits, valueClass=numericClass}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ] + } + } + }, + { + "error_code": "SCHEMA_ATTRIBUTE_VALUE_INVALID", + "name": "attribute-relatedTag-invalid", + "warning": true, + "description": "A related tag points to an unknown tag", + "schema": "", + "definitions": [], + "tests": { + "schema_tests": { + "fails": [ + [ + "HED version=\"1.0.0\"", + "'''Prologue'''", + "!# start schema", + "'''Tag-with-unknown''' {relatedTag=invalid}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.0.0\"", + "'''Prologue'''", + "!# start schema", + "'''Tag-with-unknown''' {relatedTag=Event, relatedTag=invalid}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ], + "passes": [ + [ + "HED version=\"1.0.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''Tag-with-unknown''' {relatedTag=Event}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.0.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''Tag-with-unknown''' {relatedTag=Event}", + "* ExtendedTag {relatedTag=Tag-with-unknown, relatedTag=Event}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ] + } + } + }, + { + "error_code": "SCHEMA_ATTRIBUTE_VALUE_INVALID", + "name": "attribute-suggestedTag-invalid", + "warning": true, + "description": "A suggested tag points to an unknown tag", + "schema": "", + "definitions": [], + "tests": { + "schema_tests": { + "fails": [ + [ + "HED version=\"1.0.0\"", + "'''Prologue'''", + "!# start schema", + "'''Tag-with-unknown''' {suggestedTag=invalid}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.0.0\"", + "'''Prologue'''", + "!# start schema", + "'''Tag-with-unknown''' {suggestedTag=Event, suggestedTag=invalid}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ], + "passes": [ + [ + "HED version=\"1.0.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''Tag-with-unknown''' {suggestedTag=Event}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.0.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''Tag-with-unknown''' {suggestedTag=Event}", + "* ExtendedTag {suggestedTag=Tag-with-unknown, suggestedTag=Event}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ] + } + } + }, + { + "error_code": "SCHEMA_ATTRIBUTE_VALUE_INVALID", + "name": "attribute-invalid-unit-class", + "warning": true, + "description": "A schema unit class issue, saying there is an unknown one.", + "schema": "", + "definitions": [], + "tests": { + "schema_tests": { + "fails": [ + [ + "HED version=\"1.0.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''Tag-with-unknown'''", + "* # {unitClass=unknown}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ], + "passes": [ + [ + "HED version=\"1.0.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''Tag-with-unknown'''", + "* # {unitClass=timeUnits}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ] + } + } + }, + { + "error_code": "SCHEMA_ATTRIBUTE_VALUE_INVALID", + "name": "attribute-invalid-value-class", + "warning": true, + "description": "A schema value class issue, saying there is an unknown one.", + "schema": "", + "definitions": [], + "tests": { + "schema_tests": { + "fails": [ + [ + "HED version=\"1.0.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''Tag-with-unknown'''", + "* # {valueClass=unknown}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ], + "passes": [ + [ + "HED version=\"1.0.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''Tag-with-unknown'''", + "* # {valueClass=numericClass}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ] + } + } + }, + { + "error_code": "SCHEMA_CHARACTER_INVALID", + "name": "schema-character-invalid-prologue", + "warning": true, + "description": "Invalid character in prologue or epilogue.", + "schema": "", + "definitions": [], + "tests": { + "schema_tests": { + "fails": [ + [ + "HED version=\"8.3.0\"", + "'''Prologue'''", + "\t", + "!# start schema", + "'''BaseTag'''", + "* Extension", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"8.3.0\"", + "'''Prologue'''", + "InvalidCharAfterThis\b", + "!# start schema", + "'''BaseTag'''", + "* Extension", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ], + "passes": [ + [ + "HED version=\"8.3.0\"", + "'''Prologue'''", + "This is a valid prologue.", + "!# start schema", + "'''BaseTag'''", + "* Extension", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "This is a valid prologue.\n", + "!# end hed" + ] + ] + } + } + }, + { + "error_code": "SCHEMA_CHARACTER_INVALID", + "name": "schema-character-invalid-tag", + "warning": true, + "description": "Invalid character in a tag term.", + "schema": "", + "definitions": [], + "tests": { + "schema_tests": { + "fails": [ + [ + "HED version=\"8.3.0\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag$'''", + "* Extension", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"8.3.0\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag('''", + "* Extension", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ], + "passes": [ + [ + "HED version=\"8.3.0\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag'''", + "* Extension", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ] + } + } + }, + { + "error_code": "SCHEMA_CHARACTER_INVALID", + "name": "schema-character-invalid-other-term", + "warning": true, + "description": "Invalid character in a tag term.", + "schema": "", + "definitions": [], + "tests": { + "schema_tests": { + "fails": [ + [ + "HED version=\"8.3.0\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag'''", + "* Extension", + "!# end schema", + "'''Unit classes'''", + "* unitClassNew$", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"8.3.0\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag'''", + "* Extension", + "!# end schema", + "'''Unit classes'''", + "* unitClassNew", + "** unitInvalid$", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"8.3.0\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag'''", + "* Extension", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "* newModifier$", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"8.3.0\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag'''", + "* Extension", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "* invalidValue$Class", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"8.3.0\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag'''", + "* Extension", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "* newAttribute$new", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"8.3.0\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag'''", + "* Extension", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "* newProperty\tmore", + "'''Epilogue'''", + "!# end hed" + ] + ], + "passes": [ + [ + "HED version=\"8.3.0\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag'''", + "* Extension", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ] + } + } + }, + { + "error_code": "SCHEMA_CHARACTER_INVALID", + "name": "schema-character-invalid-utf8-other-term", + "warning": true, + "description": "UTF8 characters (valid) in term.", + "schema": "", + "definitions": [], + "tests": { + "schema_tests": { + "fails": [ + [ + "HED version=\"8.3.0\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag'''", + "* Extension&", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ], + "passes": [ + [ + "HED version=\"8.3.0\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag\u00c3\u201e'''", + "* Extension\u00c3\u201e", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"8.3.0\"", + "'''Prologue'''", + "!# start schema", + "'''\u00c3\u201eBaseTag'''", + "* \u00c3\u201eExtension", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ] + } + } + }, + { + "error_code": "SCHEMA_CHARACTER_INVALID", + "name": "schema-character-allowed-character-unit", + "warning": true, + "description": "Allowed character properly works on units.", + "schema": "", + "definitions": [], + "tests": { + "schema_tests": { + "fails": [ + [ + "HED version=\"8.3.0\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag'''", + "* Extension", + "!# end schema", + "'''Unit classes'''", + "* unitClassNew", + "** $", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ], + "passes": [ + [ + "HED version=\"8.3.0\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag'''", + "* Extension", + "!# end schema", + "'''Unit classes'''", + "* unitClassNew", + "** $ {allowedCharacter=dollar}", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "* allowedCharacter {unitDomain}", + "'''Properties'''", + "* unitDomain", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"8.3.0\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag'''", + "* Extension", + "!# end schema", + "'''Unit classes'''", + "* unitClassNew {defaultUnit=$}", + "** $ {allowedCharacter=dollar}", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "* allowedCharacter {unitDomain}", + "* defaultUnit {unitClassDomain}", + "'''Properties'''", + "* unitDomain", + "* unitClassDomain", + "'''Epilogue'''", + "!# end hed" + ] + ] + } + } + }, + { + "error_code": "SCHEMA_CHARACTER_INVALID", + "name": "schema-character-invalid-description", + "warning": true, + "description": "Description does not contain banned characters.", + "schema": "", + "definitions": [], + "tests": { + "schema_tests": { + "fails": [ + [ + "HED version=\"8.3.0\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag'''", + "* Extension", + "!# end schema", + "'''Unit classes'''", + "* unitClassNew [Description goes here with invalid \t character]", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"8.3.0\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag''' [Description goes here with invalid { character }]", + "* Extension", + "!# end schema", + "'''Unit classes'''", + "* unitClassNew ", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ], + "passes": [ + [ + "HED version=\"8.3.0\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag'''", + "* Extension", + "!# end schema", + "'''Unit classes'''", + "* unitClassNew [Description goes here with valid characters]", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ] + } + } + }, + { + "error_code": "SCHEMA_DEPRECATION_ERROR", + "name": "schema-deprecated-invalid", + "warning": true, + "description": "A schema deprecation issue, saying there is an invalid version", + "schema": "", + "definitions": [], + "tests": { + "schema_tests": { + "fails": [ + [ + "HED version=\"1.0.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag'''", + "* Extension {deprecatedFrom=0.5.0}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.0.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag'''", + "* Extension {deprecatedFrom=1.0.0}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ], + "passes": [ + [ + "HED version=\"1.1.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag'''", + "* Extension {deprecatedFrom=1.0.0}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ] + } + } + }, + { + "error_code": "SCHEMA_DEPRECATION_ERROR", + "name": "schema-deprecated-invalid-child", + "warning": true, + "description": "A schema deprecation issue, saying there is an invalid child of a deprecated node", + "schema": "", + "definitions": [], + "tests": { + "schema_tests": { + "fails": [ + [ + "HED version=\"1.1.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag''' {deprecatedFrom=1.0.0}", + "* Extension", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.1.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag'''", + "* Extension", + "!# end schema", + "'''Unit classes'''", + "* testUnitClass {deprecatedFrom=1.0.0}", + "** testUnit", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ], + "passes": [ + [ + "HED version=\"1.1.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag''' {deprecatedFrom=1.0.0}", + "* Extension {deprecatedFrom=1.0.0}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ] + } + } + }, + { + "error_code": "SCHEMA_DEPRECATION_ERROR", + "name": "schema-deprecated-default-unit", + "warning": true, + "description": "A schema deprecation issue, deprecated default units", + "schema": "", + "definitions": [], + "tests": { + "schema_tests": { + "fails": [ + [ + "HED version=\"1.1.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag'''", + "* Extension", + "!# end schema", + "'''Unit classes'''", + "* testUnitClass {defaultUnits=testUnit}", + "** testUnit {deprecatedFrom=1.0.0}", + "** testUnit2", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ], + "passes": [ + [ + "HED version=\"1.1.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag'''", + "* Extension", + "!# end schema", + "'''Unit classes'''", + "* testUnitClass {defaultUnits=testUnit2}", + "** testUnit {deprecatedFrom=1.0.0}", + "** testUnit2", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.1.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag'''", + "* Extension", + "!# end schema", + "'''Unit classes'''", + "* testUnitClass {defaultUnits=testUnit, deprecatedFrom=1.0.0}", + "** testUnit {deprecatedFrom=1.0.0}", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ] + } + } + }, + { + "error_code": "SCHEMA_DEPRECATION_ERROR", + "name": "schema-deprecated-unit-class", + "warning": true, + "description": "A schema deprecation issue, deprecated value or unit class", + "schema": "", + "definitions": [], + "tests": { + "schema_tests": { + "fails": [ + [ + "HED version=\"1.1.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag'''", + "* Extension", + "** #{takesValue, unitClass=testUnitClass}", + "!# end schema", + "'''Unit classes'''", + "* testUnitClass{deprecatedFrom=1.0.0}", + "** testUnit{deprecatedFrom=1.0.0}", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ], + "passes": [ + [ + "HED version=\"1.1.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag'''", + "* Extension", + "** #{takesValue, unitClass=testUnitClass, deprecatedFrom=1.0.0}", + "!# end schema", + "'''Unit classes'''", + "* testUnitClass{deprecatedFrom=1.0.0}", + "** testUnit{deprecatedFrom=1.0.0}", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ] + } + } + }, + { + "error_code": "SCHEMA_DEPRECATION_ERROR", + "name": "schema-deprecated-value-class", + "warning": true, + "description": "A schema deprecation issue, deprecated value or unit class", + "schema": "", + "definitions": [], + "tests": { + "schema_tests": { + "fails": [ + [ + "HED version=\"1.1.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag'''", + "* Extension", + "** #{takesValue, valueClass=testValueClass}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "* testValueClass{deprecatedFrom=1.0.0}", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ], + "passes": [ + [ + "HED version=\"1.1.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag'''", + "* Extension", + "** #{takesValue, valueClass=testValueClass, deprecatedFrom=1.0.0}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "* testValueClass{deprecatedFrom=1.0.0}", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ] + } + } + }, + { + "error_code": "SCHEMA_DEPRECATION_ERROR", + "name": "schema-deprecated-invalid-suggested-related-tag", + "warning": true, + "description": "A schema deprecation issue, saying a related or suggested tag points to a deprecated tag", + "schema": "", + "definitions": [], + "tests": { + "schema_tests": { + "fails": [ + [ + "HED version=\"1.1.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag'''", + "* Tag1 {deprecatedFrom=1.0.0}", + "* Tag2", + "* Tag3{suggestedTag=Tag1}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.1.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag'''", + "* Tag1 {deprecatedFrom=1.0.0}", + "* Tag2", + "* Tag3{relatedTag=Tag1}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ], + "passes": [ + [ + "HED version=\"1.1.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag'''", + "* Tag1 {deprecatedFrom=1.0.0}", + "* Tag2", + "* Tag3{suggestedTag=Tag2}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.1.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag'''", + "* Tag1 {deprecatedFrom=1.0.0}", + "* Tag2", + "* Tag3{relatedTag=Tag2}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.1.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag'''", + "* Tag1 {deprecatedFrom=1.0.0}", + "* Tag2", + "* Tag3{suggestedTag=Tag1, deprecatedFrom=1.0.0}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.1.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag'''", + "* Tag1 {deprecatedFrom=1.0.0}", + "* Tag2", + "* Tag3{relatedTag=Tag1, deprecatedFrom=1.0.0}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ] + } + } + }, + { + "error_code": "SCHEMA_DEPRECATION_ERROR", + "name": "schema-deprecated-deprecated-attribute", + "warning": true, + "description": "A schema deprecation issue, an attribute of an element is deprecated", + "schema": "", + "definitions": [], + "tests": { + "schema_tests": { + "fails": [ + [ + "HED version=\"1.1.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag'''", + "* Extension{deprecatedAttribute}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "* deprecatedAttribute {deprecatedFrom=1.0.0, elementProperty}", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.1.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag'''", + "!# end schema", + "'''Unit classes'''", + "* deprecatedUnitClass{deprecatedAttribute}", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "* deprecatedAttribute {deprecatedFrom=1.0.0, elementProperty}", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.1.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag'''", + "!# end schema", + "'''Unit classes'''", + "* deprecatedUnitClass", + "** deprecatedUnit{deprecatedAttribute}", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "* deprecatedAttribute {deprecatedFrom=1.0.0, elementProperty}", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.1.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag'''", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "* deprecatedUnitModifier {deprecatedAttribute}", + "'''Value classes'''", + "'''Schema attributes'''", + "* deprecatedAttribute {deprecatedFrom=1.0.0, elementProperty}", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.1.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag'''", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "* deprecatedValueClass {deprecatedAttribute}", + "'''Schema attributes'''", + "* deprecatedAttribute {deprecatedFrom=1.0.0, elementProperty}", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ], + "passes": [ + [ + "HED version=\"1.1.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag'''", + "* Extension{deprecatedAttribute, deprecatedFrom=1.0.0}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "* deprecatedAttribute {deprecatedFrom=1.0.0, elementProperty}", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.1.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag'''", + "!# end schema", + "'''Unit classes'''", + "* deprecatedUnitClass{deprecatedAttribute, deprecatedFrom=1.0.0}", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "* deprecatedAttribute {deprecatedFrom=1.0.0, elementProperty}", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.1.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag'''", + "!# end schema", + "'''Unit classes'''", + "* deprecatedUnitClass", + "** deprecatedUnit{deprecatedAttribute, deprecatedFrom=1.0.0}", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "* deprecatedAttribute {deprecatedFrom=1.0.0, elementProperty}", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.1.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag'''", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "* deprecatedUnitModifier {deprecatedAttribute, deprecatedFrom=1.0.0}", + "'''Value classes'''", + "'''Schema attributes'''", + "* deprecatedAttribute {deprecatedFrom=1.0.0, elementProperty}", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.1.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag'''", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "* deprecatedValueClass {deprecatedAttribute, deprecatedFrom=1.0.0}", + "'''Schema attributes'''", + "* deprecatedAttribute {deprecatedFrom=1.0.0, elementProperty}", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ] + } + } + }, + { + "error_code": "SCHEMA_DEPRECATION_ERROR", + "name": "schema-deprecated-deprecated-property", + "warning": true, + "description": "A schema deprecation issue, a property of an attribute is is deprecated", + "schema": "", + "definitions": [], + "tests": { + "schema_tests": { + "fails": [ + [ + "HED version=\"1.1.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag'''", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "* deprecatedAttribute {deprecatedProperty}", + "'''Properties'''", + "* deprecatedProperty {deprecatedFrom=1.0.0}", + "'''Epilogue'''", + "!# end hed" + ] + ], + "passes": [ + [ + "HED version=\"1.1.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''BaseTag'''", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "* deprecatedAttribute {deprecatedProperty, deprecatedFrom=1.0.0}", + "'''Properties'''", + "* deprecatedProperty {deprecatedFrom=1.0.0}", + "'''Epilogue'''", + "!# end hed" + ] + ] + } + } + }, + { + "error_code": "SCHEMA_DUPLICATE_NODE", + "name": "attribute-duplicate-node", + "warning": true, + "description": "A schema attribute issue, saying there is a duplicate node.", + "schema": "", + "definitions": [], + "tests": { + "schema_tests": { + "fails": [ + [ + "HED version=\"1.0.0\"", + "'''Prologue'''", + "!# start schema", + "'''Tag'''", + "* Tag", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers''' ", + "* mod1 ", + "'''Value classes'''", + "'''Schema attributes''' ", + "* unitAttribute ", + "'''Properties''' ", + "* unitProperty ", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.0.0\"", + "'''Prologue'''", + "!# start schema", + "'''Tag'''", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers''' ", + "* mod1 ", + "* mod1 ", + "'''Value classes'''", + "'''Schema attributes''' ", + "* unitAttribute ", + "'''Properties''' ", + "* unitProperty ", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.0.0\"", + "'''Prologue'''", + "!# start schema", + "'''Tag'''", + "!# end schema", + "'''Unit classes''' ", + "* unitClass1 ", + "** unit1 ", + "** unit1 ", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes''' ", + "* unitAttribute ", + "'''Properties''' ", + "* unitProperty ", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.0.0\"", + "'''Prologue'''", + "!# start schema", + "'''Tag'''", + "!# end schema", + "'''Unit classes''' ", + "* unitClass1 ", + "** unit1 ", + "* unitClass2 ", + "** unit1 ", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes''' ", + "* unitAttribute ", + "'''Properties''' ", + "* unitProperty ", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.0.0\"", + "'''Prologue'''", + "!# start schema", + "'''Tag'''", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes''' ", + "* unitAttribute ", + "* unitAttribute ", + "'''Properties''' ", + "* unitProperty ", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.0.0\"", + "'''Prologue'''", + "!# start schema", + "'''Tag'''", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes''' ", + "* unitAttribute ", + "'''Properties''' ", + "* unitProperty ", + "* unitProperty ", + "'''Epilogue'''", + "!# end hed" + ] + ], + "passes": [ + [ + "HED version=\"1.0.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''Tag-with-unknown''' {suggestedTag=Event}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ] + } + } + }, + { + "error_code": "SCHEMA_DUPLICATE_NODE", + "name": "attribute-duplicate-node-unit", + "warning": true, + "description": "A schema attribute issue, saying there is an unknown one.", + "schema": "", + "definitions": [], + "tests": { + "schema_tests": { + "fails": [ + [ + "HED version=\"1.0.0\"", + "'''Prologue'''", + "!# start schema", + "'''Tag'''", + "!# end schema", + "'''Unit classes''' ", + "* unitClass1 ", + "** volt {SIUnit} ", + "** Volt {SIUnit} ", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes''' ", + "* unitSymbol {unitProperty}", + "* SIUnit {unitProperty}", + "'''Properties''' ", + "* unitProperty ", + "'''Epilogue'''", + "!# end hed" + ] + ], + "passes": [ + [ + "HED version=\"1.0.0\"", + "'''Prologue'''", + "!# start schema", + "'''Tag'''", + "!# end schema", + "'''Unit classes''' ", + "* unitClass1 ", + "** v {unitSymbol} ", + "** V {unitSymbol} ", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes''' ", + "* unitSymbol {unitProperty}", + "* SIUnit {unitProperty}", + "'''Properties''' ", + "* unitProperty ", + "'''Epilogue'''", + "!# end hed" + ] + ] + } + } + }, + { + "error_code": "SCHEMA_HEADER_INVALID", + "name": "schema-header-malformed-attribute", + "warning": true, + "description": "A schema attribute issue, saying there is an unknown one.", + "schema": "", + "definitions": [], + "tests": { + "schema_tests": { + "fails": [ + [ + "HED version=\"1.0.0\" unknownAttribute=other", + "'''Prologue'''", + "!# start schema", + "'''Tag'''", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ], + "passes": [ + [ + "HED version=\"1.0.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''Tag-with-unknown''' {suggestedTag=Event}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ] + } + } + }, + { + "error_code": "SCHEMA_HEADER_INVALID", + "name": "schema-header-unknown-attribute", + "warning": true, + "description": "A schema attribute issue, saying there is an unknown one.", + "schema": "", + "definitions": [], + "tests": { + "schema_tests": { + "fails": [ + [ + "HED version=\"1.0.0\" unknownAttribute=\"other\"", + "'''Prologue'''", + "!# start schema", + "'''Tag'''", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ], + "passes": [ + [ + "HED version=\"1.0.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''Tag-with-unknown''' {suggestedTag=Event}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ] + } + } + }, + { + "error_code": "SCHEMA_LIBRARY_INVALID", + "name": "library-invalid-bad-name", + "warning": true, + "description": "A schema library issue, indicating the name is invalid.", + "schema": "", + "definitions": [], + "tests": { + "schema_tests": { + "fails": [ + [ + "HED version=\"1.0.0\" library=\"score_invalidchar\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.0.0\" library=\"score1\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.0.0\" library=\"Score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ], + "passes": [ + [ + "HED version=\"1.0.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ] + } + } + }, + { + "error_code": "SCHEMA_LIBRARY_INVALID", + "name": "library-invalid-bad_with-standard", + "warning": true, + "description": "A schema library issue, the with-standard attribute is present without the library attribute.", + "schema": "", + "definitions": [], + "tests": { + "schema_tests": { + "fails": [ + [ + "HED version=\"1.0.0\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.0.0\" withStandard=\"8.2.0\"", + "'''Prologue'''", + "!# start schema", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ], + "passes": [ + [ + "HED version=\"1.0.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ] + } + } + }, + { + "error_code": "SCHEMA_LIBRARY_INVALID", + "name": "library-invalid-bad_with-standard-version", + "warning": true, + "description": "A schema library issue, indicating it references a version of the standard that can't be found.", + "schema": "", + "definitions": [], + "tests": { + "schema_tests": { + "fails": [ + [ + "HED version=\"1.0.0\" library=\"score\" withStandard=\"8.9.9\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.0.0\" library=\"score\" withStandard=\"7.9.9\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ], + "passes": [ + [ + "HED version=\"1.0.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ] + } + } + }, + { + "error_code": "SCHEMA_LIBRARY_INVALID", + "name": "library-invalid-rooted-present", + "warning": true, + "description": "A schema library issue, indicating the rooted property appears in a file it shouldn't.", + "schema": "", + "definitions": [], + "tests": { + "schema_tests": { + "fails": [ + [ + "HED version=\"1.0.0\" library=\"score\" withStandard=\"8.2.0\"", + "'''Prologue'''", + "!# start schema", + "'''Event''' {rooted=Event}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.0.0\"", + "'''Prologue'''", + "!# start schema", + "'''Event''' {rooted=Property}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "* rooted {nodeProperty} ", + "'''Properties'''", + "* nodeProperty", + "'''Epilogue'''", + "!# end hed" + ] + ], + "passes": [ + [ + "HED version=\"1.0.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''NewThing''' {rooted=Event}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ] + } + } + }, + { + "error_code": "SCHEMA_LIBRARY_INVALID", + "name": "library-invalid-rooted-not-top-level", + "warning": true, + "description": "A schema library issue, indicating a node is being rooted that is not a top level node.", + "schema": "", + "definitions": [], + "tests": { + "schema_tests": { + "fails": [ + [ + "HED version=\"1.0.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''NewNode'''", + "* NewExtension {rooted=Event}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ], + "passes": [ + [ + "HED version=\"1.0.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''NewNode''' {rooted=Event}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ] + } + } + }, + { + "error_code": "SCHEMA_LIBRARY_INVALID", + "name": "library-invalid-rooted-not-in-base", + "warning": true, + "description": "A schema library issue, rooted tag does not exist.", + "schema": "", + "definitions": [], + "tests": { + "schema_tests": { + "fails": [ + [ + "HED version=\"1.0.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''DummyTag'''", + "'''NewTag'''{rooted=DummyTag}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.0.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''DummyTag'''{rooted=NotRealTag}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ], + "passes": [ + [ + "HED version=\"1.0.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''NewTag''' {rooted=Event}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ] + } + } + }, + { + "error_code": "SCHEMA_LIBRARY_INVALID", + "name": "library-invalid-rooted-in-library-present", + "warning": true, + "description": "A schema library issue, indicating the InLibrary attribute appears when it shouldn't.", + "schema": "", + "definitions": [], + "tests": { + "schema_tests": { + "fails": [ + [ + "HED version=\"1.0.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''NewTag''' {rooted=Event}", + "* ExtendedEvent {inLibrary=score}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ], + "passes": [ + [ + "HED version=\"1.0.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''NewTag''' {rooted=Event}", + "* ExtendedEvent", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ] + } + } + }, + { + "error_code": "SCHEMA_LIBRARY_INVALID", + "name": "library-invalid-rooted-in-duplicate-other", + "warning": true, + "description": "A schema library issue, indicating the InLibrary attribute appears when it shouldn't.", + "schema": "", + "definitions": [], + "tests": { + "schema_tests": { + "fails": [ + [ + "HED version=\"1.0.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''NewTag''' {rooted=Event}", + "* ExtendedEvent", + "!# end schema", + "'''Unit classes'''", + "* weightUnits", + "** g {SIUnit, unitSymbol, conversionFactor=1.0}", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ], + "passes": [ + [ + "HED version=\"1.0.0\" library=\"score\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''NewTag''' {rooted=Event}", + "* ExtendedEvent", + "!# end schema", + "'''Unit classes'''", + "* weightUnits", + "** testNewUnit {conversionFactor=10.0}", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ] + } + } + }, + { + "error_code": "SCHEMA_LOAD_FAILED", + "name": "different-standard-schemas-in-same-merge-group", + "description": "Schemas in a merge group must be associated with the same standard schema.", + "schema": [ + "8.1.0", + "testlib_2.0.0" + ], + "definitions": [], + "tests": { + "string_tests": { + "fails": [ + "Red", + "Blue" + ], + "passes": [] + } + } + }, + { + "error_code": "SCHEMA_LOAD_FAILED", + "name": "extra-standard-schemas-in-same-merge-group", + "description": "Standard schema in same group as its partners is okay.", + "schema": [ + "8.2.0", + "testlib_2.0.0", + "testlib_3.0.0", + "sc:8.1.0" + ], + "definitions": [], + "tests": { + "string_tests": { + "fails": [], + "passes": [ + "Red", + "Blue" + ] + } + } + }, + { + "error_code": "SCHEMA_LOAD_FAILED", + "name": "incompatible-merge-schemas ", + "description": "Schemas in a merge group must be associated with the same standard schema].", + "schema": [ + "testlib_2.0.0", + "testlib_4.0.0" + ], + "definitions": [], + "tests": { + "string_tests": { + "fails": [ + "Red", + "Blue" + ], + "passes": [ + "Red", + "Blue" + ] + } + } + }, + { + "error_code": "SCHEMA_SECTION_MISSING", + "name": "schema-section-missing", + "warning": true, + "description": "A schema attribute issue, saying there is an unknown one.", + "schema": "", + "definitions": [], + "tests": { + "schema_tests": { + "fails": [ + [ + "HED version=\"1.0.0\"", + "!# start schema", + "'''Tag'''", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.0.0\"", + "'''Prologue'''", + "'''Tag'''", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.0.0\"", + "'''Prologue'''", + "!# start schema", + "'''Tag'''", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.0.0\"", + "'''Prologue'''", + "!# start schema", + "'''Tag'''", + "!# end schema", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.0.0\"", + "'''Prologue'''", + "!# start schema", + "'''Tag'''", + "!# end schema", + "'''Unit classes'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.0.0\"", + "'''Prologue'''", + "!# start schema", + "'''Tag'''", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.0.0\"", + "'''Prologue'''", + "!# start schema", + "'''Tag'''", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.0.0\"", + "'''Prologue'''", + "!# start schema", + "'''Tag'''", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Epilogue'''", + "!# end hed" + ], + [ + "HED version=\"1.0.0\"", + "'''Prologue'''", + "!# start schema", + "'''Tag'''", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''" + ] + ], + "passes": [ + [ + "HED version=\"1.0.0\" library=\"testlib\" withStandard=\"8.2.0\" unmerged=\"True\"", + "'''Prologue'''", + "!# start schema", + "'''Tag''' {suggestedTag=Tag}", + "!# end schema", + "'''Unit classes'''", + "'''Unit modifiers'''", + "'''Value classes'''", + "'''Schema attributes'''", + "'''Properties'''", + "'''Epilogue'''", + "!# end hed" + ] + ] + } + } + }, + { + "error_code": "SIDECAR_BRACES_INVALID", + "alt_codes": [ + "CHARACTER_INVALID" + ], + "name": "sidecar-braces-contents-invalid", + "description": "The item in curly braces is not the word HED or a column name with HED annotations in the sidecar.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_time": { + "Description": "Has description but no HED" + } + }, + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_action": { + "Description": "Does not correspond to curly braces" + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_time": { + "Description": "Has description with HED", + "HED": "Label/#" + } + }, + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "{HED}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_action": { + "Description": "Does not correspond to curly braces" + } + } + ] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow)), ({HED})", + "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_time": { + "Description": "Has description with HED", + "HED": "Label/#" + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED", + "response_time" + ], + [ + 4.5, + 0, + "face", + "Blue", + 0 + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor", + 1 + ], + [ + 5.5, + 0, + "face", + "", + 2 + ], + [ + 5.7, + 0, + "face", + "n/a", + 3 + ] + ] + } + ] + } + } + }, + { + "error_code": "SIDECAR_BRACES_INVALID", + "alt_codes": [ + "VALUE_INVALID", + "CHARACTER_INVALID", + "UNITS_INVALID" + ], + "name": "sidecar-braces-invalid-spot", + "description": "A curly brace reference must only appear where a tag could.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "(Def/Acc/{response_time})" + } + }, + "response_time": { + "Description": "Has description with HED", + "HED": "Label/#" + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_time": { + "Description": "Has description with HED", + "HED": "Label/#" + } + } + ] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [], + "passes": [] + } + } + }, + { + "error_code": "SIDECAR_BRACES_INVALID", + "alt_codes": [], + "name": "sidecar-braces-circular-reference", + "description": "The item in curly braces has a HED annotation that contains curly braces.", + "warning": false, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow)), {HED}", + "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_time": { + "HED": "Label/#, {event_code}" + } + }, + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow)), {HED}", + "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)", + "dog": "Orange, {event_type}" + } + }, + "response_time": { + "HED": "Label/#" + }, + "event_type": { + "HED": { + "banana": "Blue, {response_time}", + "apple": "Green" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_time": { + "Description": "Has description with HED", + "HED": "Label/#" + }, + "response_count": { + "Description": "A count used to test curly braces in value columns.", + "HED": "(Item-count/#, {response_time})" + } + }, + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "{HED}, (Def/Acc/3.5 m-per-s^2, {response_action})" + } + }, + "response_action": { + "Description": "Does not correspond to curly braces", + "HED": "Label/#" + } + } + ] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow)), ({HED})", + "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_time": { + "Description": "Has description with HED", + "HED": "Label/#" + } + }, + "events": [ + [ + "onset", + "duration", + "response_time", + "event_code", + "HED" + ], + [ + 4.5, + 0, + 3.4, + "face", + "Blue" + ], + [ + 5.0, + 0, + 6.8, + "ball", + "Green, Def/MyColor" + ], + [ + 5.2, + 0, + "n/a", + "face", + "" + ], + [ + 5.5, + 0, + "any", + "face", + "n/a" + ] + ] + } + ] + } + } + }, + { + "error_code": "SIDECAR_BRACES_INVALID", + "alt_codes": [], + "name": "sidecar-braces-self-reference", + "description": "The item in curly braces has a HED annotation that contains itself.", + "warning": false, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow)), {HED}", + "ball": "{HED}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_time": { + "HED": "Label/#, {response_time}" + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_time": { + "Description": "Has description with HED", + "HED": "Label/#" + }, + "response_count": { + "Description": "A count used to test curly braces in value columns.", + "HED": "(Item-count/#, {response_time})" + } + }, + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "{HED}, (Def/Acc/3.5 m-per-s^2, {response_action})" + } + }, + "response_action": { + "Description": "Does not correspond to curly braces", + "HED": "Label/#" + } + } + ] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow)), ({HED})", + "ball": "{HED}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_time": { + "Description": "Has description with HED", + "HED": "Label/#, {response_time}" + } + }, + "events": [ + [ + "onset", + "duration", + "response_time", + "event_code", + "HED" + ], + [ + 4.5, + 0, + 3.4, + "face", + "Blue" + ], + [ + 5.0, + 0, + 6.8, + "ball", + "Green, Def/MyColor" + ], + [ + 5.2, + 0, + "n/a", + "face", + "" + ], + [ + 5.5, + 0, + "any", + "face", + "n/a" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow)), ({HED})", + "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_time": { + "Description": "Has description with HED", + "HED": "Label/#" + } + }, + "events": [ + [ + "onset", + "duration", + "response_time", + "event_code", + "HED" + ], + [ + 4.5, + 0, + 3.4, + "face", + "Blue" + ], + [ + 5.0, + 0, + 6.8, + "ball", + "Green, Def/MyColor" + ], + [ + 5.2, + 0, + "n/a", + "face", + "" + ], + [ + 5.5, + 0, + "any", + "face", + "n/a" + ] + ] + } + ] + } + } + }, + { + "error_code": "SIDECAR_BRACES_INVALID", + "alt_codes": [ + "CHARACTER_INVALID", + "VALUE_INVALID", + "UNITS_INVALID" + ], + "name": "sidecar-braces-appear-as-value-rather-than-tag", + "description": "The curly braces are in a value rather than as a separate tag substitute.", + "warning": false, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "Label/{response_time}, Black" + } + }, + "response_time": { + "Description": "Has description but no HED", + "HED": "Orange" + } + }, + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "Label/{response_time}, Black" + } + }, + "response_time": { + "Description": "Has description but no HED", + "HED": "Label/#" + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Red, Blue), ({response_time}, (Green, (Yellow)))", + "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_time": { + "Description": "Has description with HED", + "HED": "Label/#" + } + } + ] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow)), ({HED})", + "ball": "Label/{response_time}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_time": { + "Description": "Has description with HED", + "HED": "Orange" + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ], + [ + 5.2, + 0, + "face", + "" + ], + [ + 5.5, + 0, + "face", + "n/a" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow)), ({HED})", + "ball": "{response_time}, (Def/Acc/3.5 m-per-s^2)" + } + }, + "response_time": { + "Description": "Has description with HED", + "HED": "Label/#" + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED", + "response_time" + ], + [ + 4.5, + 0, + "face", + "Blue", + 1 + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor", + 1 + ], + [ + 5.2, + 0, + "face", + "", + 1 + ], + [ + 5.5, + 0, + "face", + "n/a", + 1 + ] + ] + } + ] + } + } + }, + { + "error_code": "SIDECAR_INVALID", + "alt_codes": [], + "name": "sidecar-invalid-key-at-wrong-level", + "description": "The HED key is not a second-level dictionary key.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "temp": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "(Def/MyColor, Onset), (Def/Acc/3.5 m-per-s^2)" + } + } + } + }, + { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "(Def/MyColor, Onset), (Def/Acc/3.5 m-per-s^2)" + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "(Def/MyColor, Onset),(Def/Acc/3.5 m-per-s^2)" + } + } + } + ] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "temp": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "(Def/MyColor, Onset), (Def/Acc/3.5 m-per-s^2)" + } + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + }, + { + "sidecar": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "(Def/MyColor, Onset), (Def/Acc/3.5 m-per-s^2)" + } + }, + "events": [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "Def/Acc/7, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "SIDECAR_INVALID", + "alt_codes": [], + "name": "sidecar-invalid-na-annotated", + "description": "An annotation entry is provided for `n/a`.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Red, Blue),(Green, (Yellow))", + "n/a": "(Def/MyColor, Onset), (Def/Acc/3.5 m-per-s^2)" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "(Def/MyColor, Onset),(Def/Acc/3.5 m-per-s^2)" + } + } + } + ] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Red, Blue),(Green, (Yellow))", + "n/a": "(Def/MyColor, Onset), (Def/Acc/3.5 m-per-s^2)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "n/a", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "Def/Acc/7, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "SIDECAR_INVALID", + "alt_codes": [], + "name": "curly-braces-has-no-hed", + "description": "A column name appears in curly braces, but that column name does not have a HED annotation.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Statistical-accuracy/0.677, {response}" + } + }, + "response": { + "Description": "This is a response" + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Statistical-accuracy/0.677, {response}" + } + }, + "response": { + "HED": "Label/#" + } + } + ] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Statistical-accuracy/0.677, {response}" + } + }, + "response": "This is a response" + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "response", + "HED" + ], + [ + 4.5, + 0, + "face", + "yes", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "no", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "Def/Acc/7, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "response", + "HED" + ], + [ + 4.5, + 0, + "face", + "yes", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "no", + "Green" + ] + ] + } + ] + } + } + }, + { + "error_code": "SIDECAR_KEY_MISSING", + "alt_codes": [], + "name": "sidecar-key-missing", + "description": "A value in a categorical column does not have an expected entry in a sidecar.", + "warning": true, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [], + "passes": [] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/banana", + "ball": "Black, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "square", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "Def/Acc/7 m-per-s^2, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "STYLE_WARNING", + "alt_codes": [], + "name": "style-warning-bad-naming-style", + "description": "An extension or label does not follow HED naming conventions.", + "warning": true, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Red-color/red" + ], + "passes": [ + "Blue-color/Blue" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Red/red_blech", + "ball": "Blue-color/blue" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Red-color/Red", + "ball": "Blue-color/Blue" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Red/red_blech" + ], + [ + 5.0, + 0, + "Blue-color/blue" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Red-color/Red" + ], + [ + 5.0, + 0, + "Blue-color/Blue" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Red/red_blech", + "ball": "Blue-color/blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Red-color/Red", + "ball": "Blue-color/Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TAG_EMPTY", + "alt_codes": [], + "name": "tag-empty-extra-commas-or-parentheses", + "description": "A HED string has extra commas or parentheses separated by only white space.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Red, , , Green", + "(, Red, Green), Blue", + "(Red, , Green), Blue", + "(Red, Green,), Blue", + "(Red, Green), Blue," + ], + "passes": [ + "(Red, Blue), Green" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "square": "Red, , , Green", + "test": "(, Red, Green), Blue", + "pine": "(Red, , Green), Blue", + "apple": "(Red, Green,), Blue" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Red, Blue", + "ball": "Def/Acc/4.5 m-per-s^2, Def/Acc/3.2 m-per-s^2" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 5.5, + 0, + "Red, , , Green" + ], + [ + 7.5, + 0, + "(, Red, Green), Blue" + ], + [ + 8.2, + 0, + "(Red, , Green), Blue" + ], + [ + 9.1, + 0, + "(Red, Green,), Blue" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Red, (Blue, Green)" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "square": "Red, , , Green", + "test": "(, Red, Green), Blue", + "pine": "(Red, , Green), Blue", + "apple": "(Red, Green,), Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "test", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "apple", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Red, Green", + "ball": "Def/Acc/4.5 m-per-s^2, Def/Acc/3.2" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TAG_EMPTY", + "alt_codes": [], + "name": "tag-empty-begin-end-comma", + "description": "A HED string begins or ends with a comma (ignoring white space).", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + ", Blue,Def/Acc/3.2 m-per-s^2", + "(Blue, Green),Yellow,", + ",,(Blue, Green),Yellow," + ], + "passes": [ + "(Red, Blue), Green" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": ", Blue,Def/Acc/3.2 m-per-s^2", + "ball": "(Blue, Green),Yellow,", + "square": ",,(Blue, Green),Yellow," + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Red, Blue", + "ball": "Def/Acc/4.5 m-per-s^2, Def/Acc/3.2 m-per-s^2" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + ", (Blue, Green),Yellow," + ], + [ + 5.5, + 0, + ",,(Blue, Green),Yellow," + ], + [ + 6.5, + 0, + ", Blue,Def/Acc/3.2 m-per-s^2" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Red, (Blue, Green)" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": ", Blue,Def/Acc/3.2", + "ball": "(Blue, Green),Yellow,", + "square": ",,(Blue, Green),Yellow," + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "Def/Acc/7, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TAG_EMPTY", + "alt_codes": [], + "name": "tag-empty-empty-parentheses", + "description": "A tag group is empty (i.e., empty parentheses are not allowed).", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Red, (), (Blue), ((Green)))", + "((( ))), Red" + ], + "passes": [ + "(Red, ( Blue ), ((Green)))", + "(((Def/Acc/3.5 m-per-s^2)))" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Red, (), (Blue), ((Green)))", + "ball": "((( ))), Red" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Red, ( Blue ), ((Green)))", + "ball": "(((Def/Acc/3.5 m-per-s^2)))" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Red, (), (Blue), ((Green)))" + ], + [ + 5.5, + 0, + "((( ))), Red" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Red, ( Blue ), ((Green)))" + ], + [ + 5.5, + 0, + "(((Def/Acc/3.5 m-per-s^2)))" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Red, (), (Blue), ((Green)))", + "ball": "((( ))), Red" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Red, ( Blue ), ((Green)))", + "ball": "(((Def/Acc/3.5 m-per-s^2)))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TAG_EXPRESSION_REPEATED", + "alt_codes": [], + "name": "tag-expression-repeated-same-level", + "description": "A tag is repeated in the same tag group or level.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Red, (Blue), Red, Green", + "(Red, Blue, (Green)), (Red, Blue, (Green))", + "(Red, (Blue, Green, (Yellow)), Red, (Blue, Green, (Yellow)))" + ], + "passes": [ + "Red, (Blue, Red)", + "(Red, Blue, (Green)), (Red, Blue, ((Green)))" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Red, (Blue), Red, Green", + "ball": "(Red, Blue, (Green)), (Red, Blue, (Green))", + "square": "(Red, (Blue, Green, (Yellow)), Red, (Blue, Green, (Yellow)))" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Red, (Blue, Red)", + "ball": "(Red, Blue, (Green)), (Red, Blue, ((Green)))" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Red, (Blue), Red, Green" + ], + [ + 5.5, + 0, + "(Red, Blue, (Green)), (Red, Blue, (Green))" + ], + [ + 6.5, + 0, + "(Red, (Blue, Green, (Yellow)), Red, (Blue, Green, (Yellow)))" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Red, (Blue, Red)" + ], + [ + 5.5, + 0, + "(Red, Blue, (Green)), (Red, Blue, ((Green)))" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Red, (Blue), Red, Green", + "ball": "(Red, Blue, (Green)), (Red, Blue, (Green))", + "square": "(Red, (Blue, Green, (Yellow)), Red, (Blue, Green, (Yellow)))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Red, (Blue, Red)", + "ball": "(Red, Blue, (Green)), (Red, Blue, ((Green)))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TAG_EXTENDED", + "alt_codes": [], + "name": "tag-extended-extension", + "description": "A tag represents an extension from the schema.", + "warning": true, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Red-color/Red/Big-red, Blue/Nice-blue),(Green, (Yellow))", + "Sensory-presentation/Visual-presentation/Nice-yellow", + "Red-color/Red/Redish", + "Red-color/Red/Redish/More-redish", + "((Green/Greenish))", + "Red/1red", + "Red/Red--2red" + ], + "passes": [ + "Red-color/Red" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Red-color/Red/Big-red, Blue/Nice-blue),(Green, (Yellow))", + "ball": "Sensory-presentation/Visual-presentation/Nice-yellow", + "square": "((Green/Greenish))", + "triangle": "Red/1red", + "catwalk": "Red/Red--2red" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Red-color/Red" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Red-color/Red/Big-red, Blue/Nice-blue),(Green, (Yellow))" + ], + [ + 5.5, + 0, + "Sensory-presentation/Visual-presentation/Nice-yellow" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Red-color/Red" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Red-color/Red/Big-red/Bigger-red, Blue/Nice-blue),(Green, (Yellow))", + "ball": "Sensory-presentation/Visual-presentation/Nice-yellow" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "Def/Acc/7 m-per-s^2, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TAG_EXTENSION_INVALID", + "alt_codes": [], + "name": "tag-extension-invalid-duplicate", + "description": "A tag extension term is already in the schema.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Red-color/Red/DarkRed, Sensory-presentation/Red", + "Sensory-presentation/Red/Redish" + ], + "passes": [ + "Red-color/Red/Redish", + "((Green/Greenish))" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Red-color/Red/DarkRed, Sensory-presentation/Red", + "ball": "Sensory-presentation/Red/Redish" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Red-color/Red/Redish", + "ball": "((Green/Greenish))" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Red-color/Red/DarkRed, Sensory-presentation/Red" + ], + [ + 5.5, + 0, + "Sensory-presentation/Red/Redish" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Red-color/Red" + ], + [ + 5.5, + 0, + "((Green))" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Red-color/Red/DarkRed, Sensory-presentation/Red", + "ball": "Sensory-presentation/Red/Redish" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Red-color/Red", + "ball": "Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TAG_EXTENSION_INVALID", + "alt_codes": [], + "name": "tag-extension-invalid-bad-node-name", + "description": "A tag extension term does not comply with rules for schema nodes.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Red/Red$2", + "Red/R#d" + ], + "passes": [ + "Red-color/Red", + "((Green))", + "Red" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Red/Red$2", + "ball": "Red/R#d" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Red-color/Red/Redish", + "ball": "Red-color/Red/Redish/More-redish", + "square": "((Green/Greenish))", + "triangle": "Red/1red", + "catwalk": "Red/Red--2red" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Red/Red$2" + ], + [ + 5.5, + 0, + "Red/R#d" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Red-color/Red/Redish" + ], + [ + 5.5, + 0, + "Red-color/Red/Redish/More-redish" + ], + [ + 6.5, + 0, + "((Green/Greenish))" + ], + [ + 7.5, + 0, + "Red/1red" + ], + [ + 8.2, + 0, + "Red/Red--2red" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Red/Red$2", + "ball": "Red/R#d" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Red/Redish-like", + "ball": "Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TAG_GROUP_ERROR", + "alt_codes": [ + "TEMPORAL_TAG_ERROR" + ], + "name": "tag-group-error-missing", + "description": "A tag has tagGroup or topLevelTagGroup attribute, but is not enclosed in parentheses.", + "warning": false, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Definition/Blech, (Red)", + "Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red)", + "Onset", + "Duration/3.0 s", + "Delay/3.0 s" + ], + "passes": [ + "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))", + "((Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red)), Onset)", + "(Duration/3.0 s, (Event))", + "(Duration/3.0 s, Delay/2.0 s, (Event))" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red)", + "ball": "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red)), Onset" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))", + "ball": "((Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red)), Onset)" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red)" + ], + [ + 5.5, + 0, + "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red)), Onset" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red))" + ], + [ + 5.5, + 0, + "((Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red)), Onset)" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red)", + "ball": "(Def-expand/Acc/4.5 m-per-s^2, (Acceleration/4.5 m-per-s^2, Red)), Onset" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "Def/Acc/7, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TAG_GROUP_ERROR", + "alt_codes": [ + "TEMPORAL_TAG_ERROR" + ], + "name": "tag-group-error-not-top-level", + "description": "A tag with the topLevelTagGroup does not appear at a HED tag group at the top level in an assembled HED annotation.", + "warning": false, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [], + "passes": [] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor, ((Duration/5 s, (Red)))" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor, (Duration/5 s, (Red))" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/banana", + "ball": "((Def/Acc/3.0 m-per-s^2, Onset))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "(Def/Acc/3.0 m-per-s^2, Onset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TAG_GROUP_ERROR", + "alt_codes": [ + "TEMPORAL_TAG_ERROR" + ], + "name": "multiple-top-level-tags-in-same-group", + "description": "Multiple tags with the topLevelTagGroup attribute appear in the same top-level tag group. (Delay and Duration are allowed to be in the same topLevelTagGroup).", + "warning": false, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Def/MyColor, Onset, Event-context)", + "(Event-context, Red, Offset)", + "(Event-context, Duration/3.0 s, Offset)", + "(Delay/3.0 s, Duration/2.0 s, Offset)" + ], + "passes": [ + "(Def/MyColor, Onset)", + "((Event), Duration/3.0 s, Delay/2.0 s)" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Acceleration/banana", + "ball": "(Def/Acc/3.0 m-per-s^2, Onset, Event-context)" + } + } + }, + { + "event_code": { + "HED": { + "face": "Acceleration/5.0", + "ball": "Onset" + } + }, + "val_col": { + "HED": "Time-interval/# s, (Duration/5.0 s, {event_code})" + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Acceleration/5.0)", + "ball": "Delay/5.0 s, (Acceleration/5.0)" + } + }, + "val_col": { + "HED": "Time-interval/# s, (Duration/5.0 s, {event_code})" + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Red, (Event-context, Def/MyColor, Onset)" + ], + [ + 5.0, + 0, + "Green" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Red, (Event-context, Def/MyColor)" + ], + [ + 5.0, + 0, + "Green" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/banana", + "ball": "(Def/Acc/3.0 m-per-s^2, Onset, Event-context)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, (Def/MyColor, Event-context, Event-context)" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "(Def/Acc/3.0 m-per-s^2, Onset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue, (Event-context, Label/Red)" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TAG_INVALID", + "alt_codes": [], + "name": "tag-invalid-in-schema", + "description": "The tag is not valid in the schema it is associated with.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Label #", + "ReallyInvalid/Extension", + "ReallyInvalid" + ], + "passes": [ + "Brown-color/Brown" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Label #", + "ball": "ReallyInvalid/Extension", + "square": "ReallyInvalid" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Brown-color/Brown" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Label #" + ], + [ + 5.5, + 0, + "Property/Sensory-event" + ], + [ + 5.5, + 0, + "Sensory-event/Baloney" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Brown-color/Brown" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "ReallyInvalid", + "ball": "Property/Sensory-event", + "square": "Sensory-event/Baloney" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "Def/Acc/7, Blue/Apples" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TAG_INVALID", + "alt_codes": [], + "name": "tag-has-extra-white space", + "description": "A HED tag has extra internal whitespace, including directly before or after slashes.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Sensory- event,Green", + "Sensory -event,Blue", + "Event /Sensory-event, Black", + "Event/ Sensory-event,White" + ], + "passes": [ + "Sensory-event, Green" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "square": "Sensory- event,Green", + "test": "Sensory -event,Blue", + "pine": "Event /Sensory-event, Black", + "apple": "Event/ Sensory-event,White" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Sensory-event, Green", + "ball": "Def/Acc/4.5 m-per-s^2, Def/Acc/3.2 m-per-s^2" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 5.5, + 0, + "Sensory- event,Green" + ], + [ + 7.5, + 0, + "Sensory -event,Blue" + ], + [ + 8.2, + 0, + "Event /Sensory-event, Black" + ], + [ + 9.1, + 0, + "Event/ Sensory-event,White" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Sensory-event, Green" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "square": "Sensory- event,Green", + "test": "Sensory -event,Blue", + "pine": "Event /Sensory-event, Black", + "apple": "Event/ Sensory-event,White" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "test", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "apple", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": " Red, Green", + "ball": "Def/Acc/4.5 m-per-s^2, Def/Acc/3.2" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TAG_INVALID", + "alt_codes": [], + "name": "tag-has-leading-trailing-or-consecutive-slashes", + "description": "A HED tag has leading, trailing or consecutive slashes.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "/Event", + "Red/", + "Event//Sensory-event", + "//Event", + "Body-part/Head-part//Brain", + "Def/Acc/4.5//", + "Def/Acc/4.5/", + "/ /Def/Acc/4.5 ms/" + ], + "passes": [ + "Body-part/Head-part/Brain", + "Label/Red, Informational-property/Label/Blue" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Event//Sensory-event", + "ball": "/Event", + "square": "Red/", + "test": "/ /Def/Acc/4.5 ms/" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Body-part/Head-part/Brain", + "ball": "Def/Acc/4.5 m-per-s^2, Def/Acc/3.2 m-per-s^2" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "/Event," + ], + [ + 5.5, + 0, + "Body-part/Head-part//Brain" + ], + [ + 6.5, + 0, + "Event/Sensory-event/" + ], + [ + 7.2, + 0, + "/ /Def/Acc/4.5 ms/" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Event/Sensory-event" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Event//Sensory-event", + "ball": "//Event", + "square": "Body-part/Head-part//Brain", + "test": "/ /Def/Acc/4.5 ms/" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red/, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ], + [ + 7.2, + 0, + "n/a", + "/ /Def/Acc/4.5 ms/" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "Def/Acc/7, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Event/Sensory-event" + ] + ] + } + ] + } + } + }, + { + "error_code": "TAG_NAMESPACE_PREFIX_INVALID", + "alt_codes": [], + "name": "tag-namespace_prefix-invalid-no-schema", + "description": "A tag starting with name: does not have an associated schema.", + "warning": false, + "schema": [ + "8.3.0", + "sc:score_1.0.0" + ], + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "ts:Red, Blue", + "(ts:Red, (sc:Sleep-modulator))" + ], + "passes": [ + "sc:Sleep-modulator" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "ts:Red, Blue", + "ball": "(ts:Red, (sc:Sleep-modulator))" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "sc:Sleep-modulator" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "ts:Red, Blue" + ], + [ + 5.5, + 0, + "(ts:Red, (sc:Sleep-modulator))" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "sc:Sleep-modulator" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "ts:Red, Blue", + "ball": "(ts:Red, (sc:Sleep-modulator))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "Def/Acc/7, Blue, sc:Sleep-modulator" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue, sc:Sleep-modulator" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TAG_NAMESPACE_PREFIX_INVALID", + "alt_codes": [], + "name": "tag-namespace_prefix-invalid-characters", + "description": "A tag prefix has invalid characters.", + "warning": false, + "schema": [ + "8.3.0", + "sc:score_1.0.0" + ], + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "sc2:Sleep-modulator, Red", + "sca:Sleep-modulator, Red" + ], + "passes": [ + "Blue", + "sc:Sleep-modulator, Red" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "sc1:Sleep-modulator, Red", + "ball": "(Def/MyColor, Onset)(Def/Acc/3.5 m-per-s^2)" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "(Def/MyColor, Onset),(Def/Acc/3.5 m-per-s^2)" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "sc1:Sleep-modulator, Red" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Red, Blue), (Green, (Yellow))" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "sc1:Sleep-modulator, Red", + "ball": "(Def/MyColor, Onset)(Def/Acc/3.5 m-per-s^2)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2, sc:Sleep-modulator", + "ball": "Def/Acc/7, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TAG_NOT_UNIQUE", + "alt_codes": [], + "name": "tag-not-unique", + "description": "A tag with unique attribute appears more than once in an event-level HED string.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Event-context, (Red, Blue)), (Event-context, (Green, Yellow))" + ], + "passes": [ + "(Event-context, (Red, Blue))" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Event-context, (Red, Blue)), (Event-context, (Green, Yellow))" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Event-context, (Red, Blue))" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Event-context, (Red, Blue)), (Event-context, (Green, Yellow))" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Event-context, (Red, Blue))" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Event-context, (Red, Blue)), (Event-context, (Green, Yellow))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Event-context, (Red, Blue))", + "ball": "Def/Acc/7, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "(Event-context, (Red, Blue))" + ] + ] + } + ] + } + } + }, + { + "error_code": "TAG_REQUIRES_CHILD", + "alt_codes": [], + "name": "tag-requires-child-no-child", + "description": "A tag has the requireChild schema attribute but does not have a child.", + "warning": false, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Blue, Description)", + "Label, Red" + ], + "passes": [ + "(Blue, Description/Yes this is a description., (Red))", + "Label/Redish, Red" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Blue, Description)", + "ball": "Label, Red" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Blue, Description/Yes this is a description., (Red))", + "ball": "Label/Redish, Red" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Blue, Description)" + ], + [ + 5.0, + 0, + "Label, Red" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Blue, Description/Yes this is a description., (Red))" + ], + [ + 5.0, + 0, + "Label/Redish, Red" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Blue, Description)", + "ball": "Label, Red" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "Def/Acc/7, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Label/Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [ + "TAG_GROUP_ERROR" + ], + "name": "temporal-tag-error-not-tag-group", + "description": "An Onset or Offset tag does not appear in a tag group.", + "warning": false, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Onset, Red", + "Offset, Def/Acc/5.4 m-per-s^2" + ], + "passes": [ + "(Onset, Def/Acc/5.4 m-per-s^2)" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Onset, Red", + "ball": "Offset, Def/Acc/5.4 m-per-s^2" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Onset, Def/Acc/5.4 m-per-s^2)" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Onset, Red" + ], + [ + 4.8, + 0, + "(Onset, MyColor)" + ], + [ + 5.0, + 0, + "Offset, MyColor" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Onset, (Def-expand/MyColor, (Label/Pie)), (Red))" + ], + [ + 5.5, + 0, + "(Onset, Def/Acc/5.4 m-per-s^2)" + ], + [ + 6.3, + 0, + "(Offset, Def/Acc/5.4 m-per-s^2)" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Onset, Red", + "ball": "Offset, Def/Acc/5.4 m-per-s^2" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "ball", + "Onset, Red" + ], + [ + 4.8, + 0, + "n/a", + "(Onset/MyColor)" + ], + [ + 5.0, + 0, + "face", + "Offset, MyColor" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Onset, Def/Acc/5.4 m-per-s^2)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 5.5, + 0, + "n/a", + "(Onset, Def/Acc/5.4 m-per-s^2)" + ], + [ + 6.3, + 0, + "n/a", + "(Offset, Def/Acc/5.4 m-per-s^2)" + ], + [ + 8.5, + 0, + "face", + "Blue" + ], + [ + 9.0, + 0, + "n/a", + "Green, ((Def-expand/MyColor, (Label/Pie)), Onset)" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [ + "TAG_GROUP_ERROR" + ], + "name": "temporal-tag-error-nested-group", + "description": "An Onset or Offset tag appears in a nested tag group (not a top-level tag group).", + "warning": false, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "((Onset, Def/MyColor), Red)" + ], + "passes": [ + "(Onset, Def/MyColor), Red" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "((Onset, Def/MyColor), Red)" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Onset, Def/MyColor), Red" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "((Onset, Def/MyColor), Red)" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Onset, Def/MyColor), Red" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "((Onset, Def/MyColor), Red)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "n/a", + "((Onset, Def/MyColor), Red)" + ], + [ + 5.0, + 0, + "face", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Onset, Def/MyColor), Red" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "n/a", + "(Onset, Def/MyColor), Red" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [], + "name": "temporal-tag-error-wrong-number-of-defs", + "description": "An Onset or Offset tag is not grouped with exactly one Def-expand tag group or a Def tag.", + "warning": false, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Onset, (Red))" + ], + "passes": [ + "(Onset, Def/MyColor, (Red))", + "(Onset, (Def-expand/MyColor, (Label/Pie)), (Red))" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Onset, (Red))", + "ball": "(Onset, Def/MyColor, Def/Acc/4.3 m-per-s^2)" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Onset, Def/MyColor, (Red))" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Onset, (Red))" + ], + [ + 5.5, + 0, + "(Onset, Def/MyColor, Def/Acc/4.3 m-per-s^2)" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Onset, Def/MyColor, (Red))" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Onset, (Red))", + "ball": "(Onset, Def/MyColor, Def/Acc/4.3 m-per-s^2)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Green, Def/MyColor" + ], + [ + 5.0, + 0, + "n/a", + "(Onset, (Yellow))" + ], + [ + 6.0, + 0, + "ball", + "n/a" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Onset, Def/MyColor, (Red))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "n/a", + "(Onset, Def/MyColor, (Blue))" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [], + "name": "temporal-tag-error-onset-has-more-groups", + "description": "An Onset group has more than one additional tag group.", + "warning": false, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Onset, Def/MyColor, (Red), (Blue))", + "((Def-expand/MyColor, (Label/Pie)), (Green), (Red), Onset)" + ], + "passes": [ + "(Onset, Def/MyColor)", + "((Def-expand/MyColor, (Label/Pie)), (Red), Onset)" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Onset, Def/MyColor, (Red), (Blue))", + "ball": "((Def-expand/MyColor, (Label/Pie)), (Green), (Yellow), Onset)" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Onset, Def/MyColor)", + "ball": "((Def-expand/MyColor, (Label/Pie)), (Green, (Yellow)), Onset)" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Onset, Def/MyColor, (Red), (Blue))" + ], + [ + 5.5, + 0, + "((Def-expand/MyColor, (Label/Pie)), (Green), ((Yellow)), Onset)" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Onset, Def/MyColor)" + ], + [ + 5.0, + 0, + "((Def-expand/MyColor, (Label/Pie)), (Green, (Yellow)), Onset)" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "((Def-expand/MyColor, (Label/Pie)), (Green), ((Yellow)), Onset)", + "ball": "(Onset, Def/MyColor, (Red), (Blue))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ], + [ + 6.0, + 0, + "n/a", + "(Def/MyColor, (Red), (Blue), Onset)" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Onset, Def/MyColor)", + "ball": "((Def-expand/MyColor, (Label/Pie)), (Green, (Yellow)), Onset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "n/a", + "((Def-expand/MyColor, (Label/Pie)), (Green, (Yellow)), Onset)" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [], + "name": "temporal-tag-error-offset-has-groups", + "description": "An Offset appears with one or more tags or additional tag groups.", + "warning": false, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Offset, Def/MyColor, Red)", + "((Def-expand/MyColor, (Label/Pie)), Offset, (Red))" + ], + "passes": [ + "(Offset, Def/MyColor)" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Onset, Def/MyColor)", + "ball": "((Def-expand/MyColor, (Label/Pie)), Onset)", + "square": "(Offset, Def/MyColor, (Red))", + "circle": "((Def-expand/MyColor, (Label/Pie)), Offset, Blue)" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Onset, Def/MyColor)", + "ball": "((Def-expand/MyColor, (Label/Pie)), Onset)", + "square": "(Offset, Def/MyColor)", + "circle": "((Def-expand/MyColor, (Label/Pie)), Offset)" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Onset, Def/MyColor)" + ], + [ + 4.8, + 0, + "(Offset, Def/MyColor, (Red))" + ], + [ + 4.9, + 0, + "(Onset, Def/MyColor, (Red))" + ], + [ + 5.5, + 0, + "((Def-expand/MyColor, (Label/Pie)), (Green), Offset)" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Onset, Def/MyColor)" + ], + [ + 4.8, + 0, + "(Offset, Def/MyColor)" + ], + [ + 4.9, + 0, + "(Onset, Def/MyColor, (Red))" + ], + [ + 5.5, + 0, + "((Def-expand/MyColor, (Label/Pie)), Offset)" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Onset, Def/MyColor)", + "ball": "((Def-expand/MyColor, (Label/Pie)), Onset)", + "square": "(Offset, Def/MyColor, (Red))", + "circle": "((Def-expand/MyColor, (Label/Pie)), Offset, Blue)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "n/a" + ], + [ + 4.8, + 0, + "square", + "n/a" + ], + [ + 4.9, + 0, + "ball", + "Green" + ], + [ + 5.5, + 0, + "((Def-expand/MyColor, (Label/Pie)), Offset, Blue)", + "Orange" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Onset, Def/MyColor)", + "ball": "((Def-expand/MyColor, (Label/Pie)), Onset)", + "square": "(Offset, Def/MyColor)", + "circle": "((Def-expand/MyColor, (Label/Pie)), Offset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "n/a" + ], + [ + 4.8, + 0, + "square", + "n/a" + ], + [ + 4.9, + 0, + "ball", + "Green" + ], + [ + 5.5, + 0, + "((Def-expand/MyColor, (Label/Pie)), Offset, Blue)", + "Orange" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [], + "name": "temporal-tag-error-offset-with-no-onset", + "description": "An Offset tag associated with a given definition appears after a previous Offset tag without the appearance of an intervening Onset of the same name.", + "warning": false, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [], + "passes": [] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def/MyColor, Offset)" + ], + [ + 6.5, + 0, + "Red, (Def/MyColor, Offset)" + ], + [ + 5.5, + 0, + "(Def/MyColor, Offset)" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def/MyColor, Onset)" + ], + [ + 5.5, + 0, + "(Def/MyColor, Offset)" + ], + [ + 6.5, + 0, + "Red" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/MyColor, Onset)", + "ball": "(Def/MyColor, Offset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "ball", + "Red, Blue" + ], + [ + 4.8, + 0, + "ball", + "Red, Blue" + ], + [ + 5.0, + 0, + "face", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/MyColor, Onset)", + "ball": "(Def/MyColor, Offset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [], + "name": "temporal-tag-error-extra tags", + "description": "An Onset tag group with has tags besides the anchor Def or Def-expand that are not in a tag group.", + "warning": false, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Def/MyColor, Blue, Green, Onset)" + ], + "passes": [ + "(Def/MyColor, (Blue), Onset)" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Def/MyColor, Blue, Green, Onset)" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Def/MyColor, (Blue), Onset)" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def/MyColor, Blue, (Green), Onset)" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def/MyColor, (Blue), Onset)" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/MyColor, Blue, Green, Onset)", + "ball": "Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "((Blue, Green), Def/MyColor, Onset)", + "ball": "(Def/Acc/7, Onset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [], + "name": "temporal-tag-error-duplicated-onset-or-offset", + "description": "An Onset or an Offset with a given Def or Def-expand anchor appears in the same event marker with another Onset or Offset that uses the same anchor.", + "warning": false, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [], + "passes": [] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/MyColor, (Green), Onset)", + "ball": "Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "(Def/MyColor, (Blue), Onset)" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + }, + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/MyColor, (Green), Onset)", + "ball": "(Def/MyColor, Onset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "(Def/MyColor, Offset)" + ], + [ + 5.0, + 0, + "ball", + "(Def/MyColor, Offset)" + ] + ] + }, + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/MyColor, (Green), Onset)", + "ball": "(Def/MyColor, Onset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "(Def/MyColor, Offset)" + ], + [ + 5.0, + 0, + "ball", + "(Def/MyColor, Offset)" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "((Blue, Green), Def/MyColor, Onset)", + "ball": "(Def/MyColor, Onset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [], + "name": "temporal-tag-error-inset-outside-its-event", + "description": "An Inset tag is not grouped with a Def or Def-expand of an ongoing Onset.", + "warning": false, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [], + "passes": [] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Inset, (Red))" + ], + [ + 6.5, + 0, + "Red, (Def/MyColor, Offset)" + ], + [ + 5.5, + 0, + "(Def/MyColor, Offset)" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def/MyColor, Onset)" + ], + [ + 5.5, + 0, + "(Def/MyColor, Offset)" + ], + [ + 6.5, + 0, + "Red" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/MyColor, Onset)", + "ball": "(Def/MyColor, Offset)", + "snack": "(Def/MyColor, Inset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "snack", + "Red, Blue" + ], + [ + 4.8, + 0, + "face", + "Red, Blue" + ], + [ + 5.0, + 0, + "face", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/MyColor, Onset)", + "ball": "(Def/MyColor, Offset)", + "snack": "(Def/MyColor, Inset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 4.8, + 0, + "snack", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [], + "name": "temporal-tag-error-inset-group-has-extras", + "description": "An Inset group has tags or groups in addition to its defining Def or Def-expand.", + "warning": false, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [], + "passes": [] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 2.5, + 0, + "Red, (Def/MyColor, Onset)" + ], + [ + 4.5, + 0, + "(Def/MyColor, Blue, Inset)" + ], + [ + 6.5, + 0, + "Red, (Def/MyColor, Onset)" + ], + [ + 5.5, + 0, + "(Def/MyColor, Offset)" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Def/MyColor, (Blue), Onset)" + ], + [ + 4.8, + 0, + "(Def/MyColor, (Green), Inset)" + ], + [ + 5.5, + 0, + "(Def/MyColor, Offset)" + ], + [ + 6.5, + 0, + "Red" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/MyColor, Onset)", + "ball": "(Def/MyColor, Offset)", + "snack": "(Def/MyColor, Inset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "snack", + "Red, Blue" + ], + [ + 4.8, + 0, + "face", + "Red, Blue" + ], + [ + 5.0, + 0, + "face", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/MyColor, Onset)", + "ball": "(Def/MyColor, Offset)", + "snack": "(Def/MyColor, Inset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 4.7, + 0, + "face", + "Blue" + ], + [ + 4.8, + 0, + "snack", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [], + "name": "temporal-tag-error-duration-group", + "description": "A Duration or Delay has extra tags or groups.", + "warning": false, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Duration/3.0 s, Delay/2.0 s, (Green), (Blue))", + "(Duration/3.0 s, (Green), (Blue))", + "(Delay/3.0 s, (Green), (Blue))" + ], + "passes": [ + "(Duration/3.0 s, Delay/2.0 s, (Blue))", + "(Duration/3.0 s, (Blue))", + "(Delay/3.0 s, (Blue))" + ] + }, + "sidecar_tests": { + "fails": [], + "passes": [] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 5.0, + 0, + "(Duration/3.0 s, Delay/2.0 s)" + ], + [ + 5.5, + 0, + "(Duration/3.0 s, Delay/2.0 s, Event)" + ], + [ + 6.0, + 0, + "(Duration/3.0 s, Delay/2.0 s, (Green), (Blue))" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "((Blue), Duration/3.0 s)" + ], + [ + 4.8, + 0, + "((Green), Delay/2.0 s)" + ], + [ + 5.0, + 0, + "((Green), Duration/3.0 s, Delay/2.0 s)" + ] + ] + ] + }, + "combo_tests": { + "fails": [], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Duration/3.0 s, (Event))", + "ball": "(Delay/3.0 s, (Event))", + "snack": "(Duration/3.0 s, Delay/2.0 s, (Event))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 4.7, + 0, + "face", + "Blue" + ], + [ + 4.8, + 0, + "snack", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [ + "TAG_GROUP_ERROR" + ], + "name": "temporal-tag-error-tag-appears-where-not-allowed", + "description": "A temporal tag appears appears in a tsv with no onset column", + "warning": false, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [], + "passes": [] + }, + "event_tests": { + "fails": [ + [ + [ + "duration", + "HED" + ], + [ + 0, + "(Duration/5 s, (Red))" + ], + [ + 0, + "Red, (Def/MyColor, Onset)" + ], + [ + 0, + "(Def/MyColor, Yellow, Inset)" + ], + [ + 0, + "Red, (Def/MyColor, Onset)" + ], + [ + 0, + "(Def/MyColor, Offset)" + ] + ] + ], + "passes": [ + [ + [ + "duration", + "HED" + ], + [ + 0, + "(Def/MyColor, (Blue))" + ], + [ + 0, + "(Def/MyColor, (Green))" + ], + [ + 0, + "(Def/MyColor)" + ], + [ + 0, + "Red" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/MyColor, Onset)", + "ball": "(Def/MyColor, Offset)", + "snack": "(Def/MyColor, Inset)" + } + } + }, + "events": [ + [ + "event_code", + "HED" + ], + [ + "n/a", + "(Duration/5.0, (Red))" + ], + [ + "face", + "Def/MyColor, Red, Blue" + ], + [ + "ball", + "Def/MyColor, Red, Blue" + ], + [ + "snack", + "Green" + ] + ] + }, + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Duration/5.0, (Red))", + "ball": "(Delay/4.0, (Green))" + } + } + }, + "events": [ + [ + "event_code", + "HED" + ], + [ + "face", + "Def/MyColor, Red, Blue" + ], + [ + "ball", + "Def/MyColor, Red, Blue" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/MyColor)", + "ball": "(Def/MyColor)", + "snack": "(Def/MyColor)" + } + } + }, + "events": [ + [ + "event_code", + "HED" + ], + [ + "face", + "Blue" + ], + [ + "face", + "Blue" + ], + [ + "snack", + "Blue" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [ + "TAG_GROUP_ERROR" + ], + "name": "temporal-tag-error-not-tag-group-delay", + "description": "A Delay is not in the tag group.", + "warning": false, + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Delay, Red", + "Delay, Def/Acc/5.4 m-per-s^2" + ], + "passes": [ + "(Delay/5 s, (Def/Acc/5.4 m-per-s^2))" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Blue, Red", + "ball": "Delay/5.0 s, Def/Acc/5.4 m-per-s^2" + } + } + }, + { + "event_code": { + "HED": { + "face": "Blue, Red", + "ball": "Delay/5.0 s, (Def/Acc/5.4 m-per-s^2)" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, (Def/Acc/5.4 m-per-s^2))" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 5.0, + 0, + "Delay/1.0 s, Red" + ] + ], + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Delay/1.0 s, (Red)" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Delay/5.0 s, (Red))" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Red", + "ball": "Delay/5.0 s, Def/Acc/5.4 m-per-s^2" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "ball", + "Red" + ], + [ + 4.8, + 0, + "n/a", + "Blue" + ], + [ + 5.0, + 0, + "face", + "Green" + ] + ] + }, + { + "sidecar": { + "event_code": { + "HED": { + "face": "Red", + "ball": "Delay/5.0 s, (Def/Acc/5.4 m-per-s^2)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "ball", + "Red" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, (Def/Acc/5.4 m-per-s^2))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 8.5, + 0, + "face", + "Blue" + ], + [ + 9.0, + 0, + "n/a", + "Green, (Delay/5.0 s, (Def/MyColor))" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [ + "TAG_GROUP_ERROR" + ], + "name": "temporal-tag-error-nested-group-delay", + "description": "An Onset or Offset tag appears in a nested tag group (not a top-level tag group).", + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "((Delay/5.0 s, Onset, Def/MyColor), Red)" + ], + "passes": [ + "(Delay/5.0 s, Onset, Def/MyColor), Red" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "((Delay/5.0 s, Onset, Def/MyColor), Red)" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Onset, Def/MyColor), Red" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "((Delay/5.0 s, Onset, Def/MyColor), Red)" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Delay/5.0 s, Onset, Def/MyColor), Red" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "((Delay/5.0 s, Onset, Def/MyColor), Red)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "n/a", + "((Delay/5.0 s, Onset, Def/MyColor), Red)" + ], + [ + 5.0, + 0, + "face", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Onset, Def/MyColor), Red" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "n/a", + "(Delay/5.0 s, Onset, Def/MyColor), Red" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [ + "TAG_GROUP_ERROR" + ], + "name": "temporal-tag-error-wrong-number-of-defs-delay", + "description": "An Onset or Offset tag is not grouped with exactly one Def-expand tag group or a Def tag.", + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Delay/5.0 s, Onset, (Red))" + ], + "passes": [ + "(Delay/5.0 s, Onset, Def/MyColor, (Red))", + "(Delay/5.0 s, Onset, (Def-expand/MyColor, (Label/Pie)), (Red))" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Onset, (Red))", + "ball": "(Delay/5.0 s, Onset, Def/MyColor, Def/Acc/4.3 m-per-s^2)" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Onset, Def/MyColor, (Red))" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Delay/5.0 s, Onset, (Red))" + ], + [ + 5.5, + 0, + "(Delay/5.0 s, Onset, Def/MyColor, Def/Acc/4.3 m-per-s^2)" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Delay/5.0 s, Onset, Def/MyColor, (Red))" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Onset, (Red))", + "ball": "(Delay/5.0 s, Onset, Def/MyColor, Def/Acc/4.3 m-per-s^2)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Green, Def/MyColor" + ], + [ + 5.0, + 0, + "n/a", + "(Delay/5.0 s, Onset, (Yellow))" + ], + [ + 6.0, + 0, + "ball", + "n/a" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Onset, Def/MyColor, (Red))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "n/a", + "(Delay/5.0 s, Onset, Def/MyColor, (Blue))" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [ + "TAG_GROUP_ERROR" + ], + "name": "temporal-tag-error-onset-has-more-groups-delay", + "description": "An Onset group has more than one additional tag group.", + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Delay/5.0 s, Onset, Def/MyColor, (Red), (Blue))", + "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), (Green), (Red), Onset)" + ], + "passes": [ + "(Delay/5.0 s, Onset, Def/MyColor)", + "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), (Red), Onset)" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Onset, Def/MyColor, (Red), (Blue))", + "ball": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), (Green), (Yellow), Onset)" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Onset, Def/MyColor)", + "ball": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), (Green, (Yellow)), Onset)" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Delay/5.0 s, Onset, Def/MyColor, (Red), (Blue))" + ], + [ + 5.5, + 0, + "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), (Green), ((Yellow)), Onset)" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Delay/5.0 s, Onset, Def/MyColor)" + ], + [ + 5.0, + 0, + "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), (Green, (Yellow)), Onset)" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), (Green), ((Yellow)), Onset)", + "ball": "(Delay/5.0 s, Onset, Def/MyColor, (Red), (Blue))" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ], + [ + 6.0, + 0, + "n/a", + "(Delay/5.0 s, Def/MyColor, (Red), (Blue), Onset)" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Onset, Def/MyColor)", + "ball": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), (Green, (Yellow)), Onset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "n/a", + "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), (Green, (Yellow)), Onset)" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [ + "TAG_GROUP_ERROR" + ], + "name": "temporal-tag-error-offset-has-groups-delay", + "description": "An Offset appears with one or more tags or additional tag groups.", + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Delay/5.0 s, Offset, Def/MyColor, Red)", + "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Offset, (Red))" + ], + "passes": [ + "(Delay/5.0 s, Offset, Def/MyColor)" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Onset, Def/MyColor)", + "ball": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Onset)", + "square": "(Delay/5.0 s, Offset, Def/MyColor, (Red))", + "circle": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Offset, Blue)" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Onset, Def/MyColor)", + "ball": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Onset)", + "square": "(Delay/5.0 s, Offset, Def/MyColor)", + "circle": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Offset)" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Delay/5.0 s, Onset, Def/MyColor)" + ], + [ + 4.8, + 0, + "(Delay/5.0 s, Offset, Def/MyColor, (Red))" + ], + [ + 4.9, + 0, + "(Delay/5.0 s, Onset, Def/MyColor, (Red))" + ], + [ + 5.5, + 0, + "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), (Green), Offset)" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Delay/5.0 s, Onset, Def/MyColor)" + ], + [ + 4.8, + 0, + "(Delay/5.0 s, Offset, Def/MyColor)" + ], + [ + 4.9, + 0, + "(Delay/5.0 s, Onset, Def/MyColor, (Red))" + ], + [ + 5.5, + 0, + "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Offset)" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Onset, Def/MyColor)", + "ball": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Onset)", + "square": "(Delay/5.0 s, Offset, Def/MyColor, (Red))", + "circle": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Offset, Blue)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "n/a" + ], + [ + 4.8, + 0, + "square", + "n/a" + ], + [ + 4.9, + 0, + "ball", + "Green" + ], + [ + 5.5, + 0, + "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Offset, Blue)", + "Orange" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Onset, Def/MyColor)", + "ball": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Onset)", + "square": "(Delay/5.0 s, Offset, Def/MyColor)", + "circle": "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Offset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "n/a" + ], + [ + 4.8, + 0, + "square", + "n/a" + ], + [ + 4.9, + 0, + "ball", + "Green" + ], + [ + 5.5, + 0, + "(Delay/5.0 s, (Def-expand/MyColor, (Label/Pie)), Offset, Blue)", + "Orange" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [ + "TAG_GROUP_ERROR" + ], + "name": "temporal-tag-error-mismatch-delay", + "description": "An Offset tag associated with a given definition appears after a previous Offset tag without the appearance of an intervening Onset of the same name.", + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [], + "passes": [] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Delay/5.0 s, Def/MyColor, Offset)" + ], + [ + 6.5, + 0, + "Red, (Delay/5.0 s, Def/MyColor, Offset)" + ], + [ + 5.5, + 0, + "(Delay/5.0 s, Def/MyColor, Offset)" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Delay/5.0 s, Def/MyColor, Offset)" + ], + [ + 5.5, + 0, + "(Def/MyColor, Onset)" + ], + [ + 6.5, + 0, + "Red" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Def/MyColor, Onset)", + "ball": "(Delay/5.0 s, Def/MyColor, Offset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "ball", + "Red, Blue" + ], + [ + 4.8, + 0, + "ball", + "Red, Blue" + ], + [ + 5.0, + 0, + "face", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/MyColor, Onset)", + "ball": "(Delay/5.0 s, Def/MyColor, Offset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "ball", + "Blue" + ], + [ + 5.0, + 0, + "face", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [ + "TAG_GROUP_ERROR" + ], + "name": "temporal-tag-error-extra tags-delay", + "description": "An Onset tag group with has tags besides the anchor Def or Def-expand that are not in a tag group.", + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "(Delay/5.0 s, Def/MyColor, Blue, Green, Onset)" + ], + "passes": [ + "(Delay/5.0 s, Def/MyColor, (Blue), Onset)" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Def/MyColor, Blue, Green, Onset)" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Def/MyColor, (Blue), Onset)" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Delay/5.0 s, Def/MyColor, Blue, (Green), Onset)" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Delay/5.0 s, Def/MyColor, (Blue), Onset)" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Def/MyColor, Blue, Green, Onset)", + "ball": "Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, (Blue, Green), Def/MyColor, Onset)", + "ball": "(Delay/5.0 s, Def/Acc/7, Onset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "ball", + "Blue" + ], + [ + 5.0, + 0, + "face", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [ + "TAG_GROUP_ERROR" + ], + "name": "temporal-tag-error-duplicated-onset-or-offset-delay", + "description": "An Onset or an Offset with a given Def or Def-expand anchor appears in the same event marker with another Onset or Offset that uses the same anchor.", + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [], + "passes": [] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Def/MyColor, (Green), Onset)", + "ball": "Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "(Delay/5.0 s, Def/MyColor, (Blue), Onset)" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + }, + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Def/MyColor, (Green), Onset)", + "ball": "(Delay/5.0 s, Def/MyColor, Onset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "(Delay/5.0 s, Def/MyColor, Offset)" + ], + [ + 5.0, + 0, + "ball", + "(Delay/5.0 s, Def/MyColor, Offset)" + ] + ] + }, + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Def/MyColor, (Green), Onset)", + "ball": "(Delay/5.0 s, Def/MyColor, Onset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "(Delay/5.0 s, Def/MyColor, Offset)" + ], + [ + 5.0, + 0, + "ball", + "(Delay/5.0 s, Def/MyColor, Offset)" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, (Blue, Green), Def/MyColor, Onset)", + "ball": "(Delay/5.0 s, Def/MyColor, Onset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [ + "TAG_GROUP_ERROR" + ], + "name": "temporal-tag-error-inset-outside-its-event-delay", + "description": "An Inset tag is not grouped with a Def or Def-expand of an ongoing Onset.", + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [], + "passes": [] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Delay/5.0 s, Inset, (Red))" + ], + [ + 6.5, + 0, + "Red, (Delay/5.0 s, Def/MyColor, Offset)" + ], + [ + 5.5, + 0, + "(Delay/5.0 s, Def/MyColor, Offset)" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Delay/5.0 s, Def/MyColor, Onset)" + ], + [ + 5.5, + 0, + "(Delay/5.0 s, Def/MyColor, Offset)" + ], + [ + 6.5, + 0, + "Red" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Def/MyColor, Onset)", + "ball": "(Delay/5.0 s, Def/MyColor, Offset)", + "snack": "(Delay/5.0 s, Def/MyColor, Inset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "snack", + "Red, Blue" + ], + [ + 4.8, + 0, + "face", + "Red, Blue" + ], + [ + 5.0, + 0, + "face", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/2.0 s, Def/MyColor, Onset)", + "ball": "(Delay/5.0 s, Def/MyColor, Offset)", + "snack": "(Def/MyColor, Inset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 1.5, + 0, + "face", + "Blue" + ], + [ + 4.8, + 0, + "ball", + "Blue" + ], + [ + 5.0, + 0, + "snack", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [ + "TAG_GROUP_ERROR" + ], + "name": "temporal-tag-error-inset-group-has-extras-delay", + "description": "An Inset group has tags or groups in addition to its defining Def or Def-expand.", + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [], + "passes": [] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 2.5, + 0, + "Red, (Delay/5.0 s, Def/MyColor, Onset)" + ], + [ + 4.5, + 0, + "(Delay/5.0 s, Def/MyColor, Blue, Inset)" + ], + [ + 6.5, + 0, + "Red, (Delay/5.0 s, Def/MyColor, Onset)" + ], + [ + 5.5, + 0, + "(DDelay/5.0 s, ef/MyColor, Offset)" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Delay/5.0 s, Def/MyColor, (Blue), Onset)" + ], + [ + 4.8, + 0, + "(Delay/5.0 s, Def/MyColor, (Green), Inset)" + ], + [ + 5.5, + 0, + "(Delay/5.0 s, Def/MyColor, Offset)" + ], + [ + 6.5, + 0, + "Red" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Def/MyColor, Onset)", + "ball": "(Delay/5.0 s, Def/MyColor, Offset)", + "snack": "(Delay/5.0 s, Def/MyColor, Inset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "snack", + "Red, Blue" + ], + [ + 4.8, + 0, + "face", + "Red, Blue" + ], + [ + 5.0, + 0, + "face", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Def/MyColor, Onset)", + "ball": "(Delay/5.0 s, Def/MyColor, Offset)", + "snack": "(Delay/5.0 s, Def/MyColor, Inset)" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 4.7, + 0, + "face", + "Blue" + ], + [ + 4.8, + 0, + "snack", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "TEMPORAL_TAG_ERROR", + "alt_codes": [ + "TAG_GROUP_ERROR" + ], + "name": "temporal-tag-error-tag-appears-where-not-allowed-delay", + "description": "An Inset, Offset, or Onset tag appears in a tsv with no onset column", + "schema": "8.2.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [], + "passes": [] + }, + "event_tests": { + "fails": [ + [ + [ + "duration", + "HED" + ], + [ + 0, + "Red, (Delay/5.0 s, Def/MyColor, Onset)" + ], + [ + 0, + "(Delay/5.0 s, Def/MyColor, Yellow, Inset)" + ], + [ + 0, + "Red, (Delay/5.0 s, Def/MyColor, Onset)" + ], + [ + 0, + "(Delay/5.0 s, Def/MyColor, Offset)" + ] + ] + ], + "passes": [ + [ + [ + "duration", + "HED" + ], + [ + 0, + "(Def/MyColor, (Blue))" + ], + [ + 0, + "(Def/MyColor, (Green))" + ], + [ + 0, + "(Def/MyColor)" + ], + [ + 0, + "Red" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Def/MyColor, Onset)", + "ball": "(Delay/5.0 s, Def/MyColor, Offset)", + "snack": "(Delay/5.0 s, Def/MyColor, Inset)" + } + } + }, + "events": [ + [ + "event_code", + "HED" + ], + [ + "face", + "Def/MyColor, Red, Blue" + ], + [ + "ball", + "Def/MyColor, Red, Blue" + ], + [ + "snack", + "Green" + ] + ] + }, + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Delay/5.0 s, Def/MyColor, Duration)", + "ball": "(Delay/5.0 s, Def/MyColor, Delay)" + } + } + }, + "events": [ + [ + "event_code", + "HED" + ], + [ + "face", + "Def/MyColor, Red, Blue" + ], + [ + "ball", + "Def/MyColor, Red, Blue" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "(Def/MyColor)", + "ball": "(Def/MyColor)", + "snack": "(Def/MyColor)" + } + } + }, + "events": [ + [ + "event_code", + "HED" + ], + [ + "face", + "Blue" + ], + [ + "face", + "Blue" + ], + [ + "snack", + "Blue" + ] + ] + } + ] + } + } + }, + { + "error_code": "TILDES_UNSUPPORTED", + "alt_codes": [ + "CHARACTER_INVALID" + ], + "name": "tildes-unsupported", + "description": "The tilde syntax is no longer supported for any version of HED.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Red ~ Blue", + "Red, Blue ~ Green ~ Yellow" + ], + "passes": [ + "Red, Blue" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Red ~ Blue", + "ball": "Red, Blue ~ Green ~ Yellow" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "(Red, Blue), (Green, (Yellow))", + "ball": "(Def/MyColor, Onset),(Def/Acc/3.5 m-per-s^2)" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Red ~ Blue" + ], + [ + 5.0, + 0, + "Red, Blue ~ Green ~ Yellow" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "(Red, Blue), (Green, (Yellow))" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Red ~ Blue", + "ball": "Red, Blue ~ Green ~ Yellow" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Blue ~ Green ~ Yellow" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "Def/Acc/7, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "UNITS_INVALID", + "alt_codes": [], + "name": "units-invalid-for-unit-class", + "description": "A tag has a value with units that are invalid or not of the correct unit class for the tag.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Def/Acc/3 s", + "Weight/3 ms" + ], + "passes": [ + "Distance/4 km" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Def/Acc/3 s", + "ball": "Weight/3 ms" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Distance/4 km", + "ball": "Angle/4 degrees" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Acc/3 s" + ], + [ + 5.5, + 0, + "Weight/3 ms" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Distance/4 km" + ], + [ + 5.0, + 0, + "Angle/4 degrees" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Def/Acc/3 s", + "ball": "Weight/3 ms" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "Def/Acc/7, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "UNITS_INVALID", + "alt_codes": [], + "name": "units-invalid-si-units", + "description": "A unit modifier is applied to units that are not SI units.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Distance/3 kfeet", + "Distance/3 kmeters" + ], + "passes": [ + "Distance/3 kilometres" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Distance/3 kfeet", + "ball": "Distance/3 kmeters" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Distance/3 kilometres" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Distance/3 kfeet" + ], + [ + 5.0, + 0, + "Distance/3 kmeters" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Distance/3 kilometres" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Distance/3 kfeet", + "ball": "Distance/3 kmeters" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "Def/Acc/7, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "UNITS_MISSING", + "alt_codes": [], + "name": "units-missing-on-node-with-unit-class", + "description": "A tag that takes value and has a unit class does not have units.", + "warning": true, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Acceleration/4.5" + ], + "passes": [ + "Distance/4 km" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Def/Acc/3", + "ball": "Acceleration/4.5" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Distance/4 km", + "ball": "Angle/4 degrees" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Acc/3" + ], + [ + 5.5, + 0, + "Acceleration/4.5" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Distance/4 km" + ], + [ + 5.0, + 0, + "Angle/4 degrees" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Def/Acc/3", + "ball": "Acceleration/4.5" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "Def/Acc/7 m-per-s^2, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "UNITS_MISSING", + "alt_codes": [], + "name": "units-missing-on-node-with-unit-class", + "description": "A tag that takes value and has a unit class does not have units.", + "warning": true, + "schema": "8.3.0", + "definitions": [], + "tests": { + "string_tests": { + "fails": [ + "Temperature/4.5" + ], + "passes": [ + "Temperature/4 oC" + ] + }, + "sidecar_tests": { + "fails": [], + "passes": [] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [], + "passes": [] + } + } + }, + { + "error_code": "VALUE_INVALID", + "alt_codes": [ + "CHARACTER_INVALID", + "TAG_INVALID" + ], + "name": "value-invalid-#-substitution", + "description": "The value substituted for a placeholder (`#`) is not valid.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Def/Acc/MyMy", + "ball": "Distance/4mxxx" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Def/Acc/3.4 m-per-s^2", + "ball": "Distance/4 m" + } + } + } + ] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "response": { + "HED": "Item-count/#" + } + }, + "events": [ + [ + "onset", + "duration", + "response", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + 4, + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "response": { + "HED": "Item-count/#" + } + }, + "events": [ + [ + "onset", + "duration", + "response", + "HED" + ], + [ + 4.5, + 0, + 5, + "Blue" + ], + [ + 5.0, + 0, + 2, + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "VALUE_INVALID", + "alt_codes": [ + "CHARACTER_INVALID" + ], + "name": "value-invalid-incompatible-value-class", + "description": "A tag placeholder value is incompatible with the specified value class.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Statistical-accuracy/1max1" + ], + "passes": [ + "Statistical-accuracy/0.677" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Statistical-accuracy/1max1" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Statistical-accuracy/0.677" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Statistical-accuracy/1max1" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Statistical-accuracy/0.677" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Statistical-accuracy/1max1" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "Def/Acc/7, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "VALUE_INVALID", + "alt_codes": [ + "CHARACTER_INVALID", + "TAG_INVALID", + "UNITS_INVALID" + ], + "name": "value-invalid-blank-missing-before-units", + "description": "The units are not separated from the value by a single blank.", + "warning": false, + "schema": "8.3.0", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [ + "Def/Acc/5m-per-s^2" + ], + "passes": [ + "Def/Acc/5 m-per-s^2" + ] + }, + "sidecar_tests": { + "fails": [ + { + "event_code": { + "HED": { + "face": "Def/Acc/5m-per-s^2" + } + } + } + ], + "passes": [ + { + "event_code": { + "HED": { + "face": "Def/Acc/5 m-per-s^2" + } + } + } + ] + }, + "event_tests": { + "fails": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Acc/5m-per-s^2" + ] + ] + ], + "passes": [ + [ + [ + "onset", + "duration", + "HED" + ], + [ + 4.5, + 0, + "Def/Acc/5 m-per-s^2" + ] + ] + ] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/banana", + "ball": "Def/Acc/apple3, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "Def/Acc/7, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + }, + { + "error_code": "VERSION_DEPRECATED", + "alt_codes": [], + "name": "version-deprecated", + "warning": true, + "description": "The HED schema version being used as been deprecated.", + "schema": "8.0.0-beta.1", + "definitions": [ + "(Definition/Acc/#, (Acceleration/#, Red))", + "(Definition/MyColor, (Label/Pie))" + ], + "tests": { + "string_tests": { + "fails": [], + "passes": [] + }, + "sidecar_tests": { + "fails": [], + "passes": [] + }, + "event_tests": { + "fails": [], + "passes": [] + }, + "combo_tests": { + "fails": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/banana", + "ball": "Def/Acc/apple3, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Red, Def/MyColor" + ], + [ + 5.0, + 0, + "ball", + "Green" + ] + ] + } + ], + "passes": [ + { + "sidecar": { + "event_code": { + "HED": { + "face": "Acceleration/5 m-per-s^2", + "ball": "Def/Acc/7, Blue" + } + } + }, + "events": [ + [ + "onset", + "duration", + "event_code", + "HED" + ], + [ + 4.5, + 0, + "face", + "Blue" + ], + [ + 5.0, + 0, + "ball", + "Green, Def/MyColor" + ] + ] + } + ] + } + } + } +] \ No newline at end of file diff --git a/tests/run_consolidate_tests.py b/tests/run_consolidate_tests.py new file mode 100644 index 00000000..f6a68796 --- /dev/null +++ b/tests/run_consolidate_tests.py @@ -0,0 +1,38 @@ +import os +import json + + +def combine_tests(test_names, test_dir, output_path): + combined_data = [] + + # Read and concatenate the JSON data + for test_name in test_names: + file_name = os.path.join(test_dir, test_name) + with open(file_name, 'r') as file: + data = json.load(file) # Load JSON data from the file + combined_data.extend(data) # Assume each JSON file contains a list and concatenate + + # Write the combined data back to a new JSON file + with open(output_path, 'w') as output_file: + json.dump(combined_data, output_file, indent=4) + + +def main(exclude_names=[], out_name='temp.json'): + relative_dir = "json_tests" # relative directory to read + + script_dir = os.path.dirname(os.path.abspath(__file__)) # directory of this script + target_dir = os.path.join(script_dir, relative_dir) # full path of the + + # Write the indicated files + file_names = [f for f in os.listdir(target_dir) if os.path.isfile(os.path.join(target_dir, f))] + filtered_files = [f for f in file_names if not any(f.startswith(prefix) for prefix in exclude_names)] + combine_tests(filtered_files, target_dir, os.path.join(script_dir, out_name)) + + +if __name__ == '__main__': + exclude_names =['SCHEMA', 'TAG_NAMESPACE', 'VERSION_DEPRECATED'] + + javascript_name = "javascript_tests.json" + main(exclude_names, javascript_name) + python_name = "python_tests.json" + main([], python_name) diff --git a/tests/test_summarize_testdata.py b/tests/test_summarize_testdata.py index a9e9640b..6af02624 100644 --- a/tests/test_summarize_testdata.py +++ b/tests/test_summarize_testdata.py @@ -11,6 +11,7 @@ def setUpClass(cls): cls.test_files = [os.path.join(test_dir, f) for f in os.listdir(test_dir) if os.path.isfile(os.path.join(test_dir, f))] + @staticmethod def get_test_info(test_file, details=True): indent = " " @@ -21,7 +22,7 @@ def get_test_info(test_file, details=True): out_list.append(f"\n{indent}{info['description']}") out_list.append(f"{indent}HED {info['schema']}") out_list.append(f"{indent}Definitions:") - for defs in info["definitions"]: + for defs in info.get("definitions", []): out_list.append(f"{indent*2}{defs}") if "string_tests" in info["tests"]: out_list = out_list + MyTestCase.get_test_details(info["tests"]["string_tests"], "string_tests", indent) @@ -34,9 +35,9 @@ def get_test_info(test_file, details=True): return "\n".join(out_list) @staticmethod - def get_test_details(test_item, title, indent, details=True): - num_fail_tests = len(test_item.get("fails", 0)) - num_pass_tests = len(test_item.get("passes", 0)) + def get_test_details(test_item, title, indent, details=True): + num_fail_tests = len(test_item.get("fails", [])) + num_pass_tests = len(test_item.get("passes", [])) detail_list = [f"{indent*2}{title}: fail_tests={num_fail_tests} pass_tests={num_pass_tests}"] if num_fail_tests > 0: detail_list.append(f"{indent*3}fail_tests:") @@ -54,13 +55,13 @@ def test_summary(self): print(out_str) self.assertEqual(True, True) # add assertion here - def test_summary_full(self): - for test_file in self.test_files: - print(test_file) - out_str = self.get_test_info(test_file, details=True) - print(out_str + '\n') - - self.assertEqual(True, True) # add assertion here + # def test_summary_full(self): + # for test_file in self.test_files: + # print(test_file) + # out_str = self.get_test_info(test_file, details=True) + # print(out_str + '\n') + # + # self.assertEqual(True, True) # add assertion here if __name__ == '__main__':