mirror of
https://github.com/p2p-ld/nwb-linkml.git
synced 2024-11-10 00:34:29 +00:00
first draft linkml schema
This commit is contained in:
parent
5c69c48f35
commit
e8adb4f88c
32 changed files with 5981 additions and 547 deletions
18
docs/notes/linkml.md
Normal file
18
docs/notes/linkml.md
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
# LinkML
|
||||||
|
|
||||||
|
Features of LinkML to keep in mind while writing the schema.
|
||||||
|
|
||||||
|
|
||||||
|
- [Defining slots](https://linkml.io/linkml/schemas/advanced.html#defining-slots) - slots that
|
||||||
|
can be used to infer class identity - would be useful for inferring types in all the recursive
|
||||||
|
shit
|
||||||
|
- [multidimensional arrays](https://linkml.io/linkml/howtos/multidimensional-arrays.html)
|
||||||
|
- [units](https://linkml.io/linkml-model/docs/unit/)
|
||||||
|
- See also [modeling measurements](https://linkml.io/linkml/howtos/model-measurements.html)
|
||||||
|
- modeling conditional presence https://github.com/linkml/linkml-model/issues/126
|
||||||
|
|
||||||
|
|
||||||
|
## Python dataclass problems
|
||||||
|
|
||||||
|
- Generator doesn't seem to honor the `slot_usage` property - eg. for the `Schema` class,
|
||||||
|
`doc` is marked as required despite the requirement being removed
|
|
@ -118,7 +118,7 @@ we need to map:
|
||||||
- `neurodata_type_inc` -> `is_a`
|
- `neurodata_type_inc` -> `is_a`
|
||||||
- Groups:
|
- Groups:
|
||||||
- Slots: Lots of properties are reused in the nwb spec, and LinkML lets us separate these out as slots
|
- Slots: Lots of properties are reused in the nwb spec, and LinkML lets us separate these out as slots
|
||||||
- `quantity` needs a manual map
|
- `quantity` needs a manual map to linkML's cardinality property
|
||||||
- dims, shape, and dtypes: these should have been just attributes rather than put in the spec
|
- dims, shape, and dtypes: these should have been just attributes rather than put in the spec
|
||||||
language, so we'll just make an Array class and use that.
|
language, so we'll just make an Array class and use that.
|
||||||
- dims and shape should probably be a dictionary so you don't need a zillion nulls, eg rather than
|
- dims and shape should probably be a dictionary so you don't need a zillion nulls, eg rather than
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
# Example data object
|
|
||||||
---
|
|
||||||
entries:
|
|
||||||
- id: example:Namespaces001
|
|
||||||
name: foo bar
|
|
||||||
primary_email: foo.bar@example.com
|
|
||||||
age_in_years: 33
|
|
|
@ -1,5 +0,0 @@
|
||||||
# Examples of use of nwb_schema_language
|
|
||||||
|
|
||||||
This folder contains example data conforming to nwb_schema_language
|
|
||||||
|
|
||||||
The source for these is in [src/data](../src/data/examples)
|
|
Binary file not shown.
|
@ -1,23 +1,104 @@
|
||||||
type NamedThing
|
type AnyType
|
||||||
{
|
{
|
||||||
id: Uriorcurie!
|
}
|
||||||
|
|
||||||
|
type Attribute implements DtypeMixin
|
||||||
|
{
|
||||||
|
name: String!
|
||||||
|
dims: [String]
|
||||||
|
shape: [String]
|
||||||
|
value: AnyType
|
||||||
|
defaultValue: AnyType
|
||||||
|
doc: String!
|
||||||
|
required: Boolean
|
||||||
|
dtype: String
|
||||||
|
}
|
||||||
|
|
||||||
|
type CompoundDtype
|
||||||
|
{
|
||||||
|
name: String!
|
||||||
|
doc: String!
|
||||||
|
dtype: FlatDtype!
|
||||||
|
}
|
||||||
|
|
||||||
|
type Dataset implements DtypeMixin, NamingMixin
|
||||||
|
{
|
||||||
|
neurodataTypeDef: String
|
||||||
|
neurodataTypeInc: String
|
||||||
name: String
|
name: String
|
||||||
description: String
|
defaultName: String
|
||||||
|
dims: [String]
|
||||||
|
shape: [String]
|
||||||
|
value: AnyType
|
||||||
|
defaultValue: AnyType
|
||||||
|
doc: String!
|
||||||
|
quantity: String
|
||||||
|
linkable: Boolean
|
||||||
|
attributes: [Attribute]
|
||||||
|
dtype: String
|
||||||
|
}
|
||||||
|
|
||||||
|
interface DtypeMixin
|
||||||
|
{
|
||||||
|
dtype: String
|
||||||
|
}
|
||||||
|
|
||||||
|
type Group implements NamingMixin
|
||||||
|
{
|
||||||
|
neurodataTypeDef: String
|
||||||
|
neurodataTypeInc: String
|
||||||
|
name: String
|
||||||
|
defaultName: String
|
||||||
|
doc: String!
|
||||||
|
quantity: String
|
||||||
|
linkable: Boolean
|
||||||
|
attributes: [Attribute]
|
||||||
|
datasets: [Dataset]
|
||||||
|
groups: [Group]
|
||||||
|
links: [Link]
|
||||||
|
}
|
||||||
|
|
||||||
|
type Link
|
||||||
|
{
|
||||||
|
name: String
|
||||||
|
doc: String!
|
||||||
|
targetType: String!
|
||||||
|
quantity: String
|
||||||
|
}
|
||||||
|
|
||||||
|
type Namespace
|
||||||
|
{
|
||||||
|
doc: String!
|
||||||
|
name: String!
|
||||||
|
fullName: String
|
||||||
|
version: String!
|
||||||
|
date: Date
|
||||||
|
author: [String]!
|
||||||
|
contact: [String]!
|
||||||
|
schema: [Schema]
|
||||||
}
|
}
|
||||||
|
|
||||||
type Namespaces
|
type Namespaces
|
||||||
{
|
{
|
||||||
id: Uriorcurie!
|
namespaces: [Namespace]
|
||||||
name: String
|
|
||||||
description: String
|
|
||||||
primaryEmail: String
|
|
||||||
birthDate: Date
|
|
||||||
ageInYears: Integer
|
|
||||||
vitalStatus: PersonStatus
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type NamespacesCollection
|
interface NamingMixin
|
||||||
{
|
{
|
||||||
entries: [Namespaces]
|
}
|
||||||
|
|
||||||
|
type ReferenceDtype
|
||||||
|
{
|
||||||
|
targetType: String!
|
||||||
|
reftype: ReftypeOptions
|
||||||
|
}
|
||||||
|
|
||||||
|
type Schema
|
||||||
|
{
|
||||||
|
source: String
|
||||||
|
namespace: String
|
||||||
|
doc: String!
|
||||||
|
title: String
|
||||||
|
neurodataTypes: [String]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,42 +1,49 @@
|
||||||
{
|
{
|
||||||
"comments": {
|
"comments": {
|
||||||
"description": "Auto generated by LinkML jsonld context generator",
|
"description": "Auto generated by LinkML jsonld context generator",
|
||||||
"generation_date": "2023-08-16T15:57:40",
|
"generation_date": "2023-08-16T23:21:36",
|
||||||
"source": "nwb_schema_language.yaml"
|
"source": "nwb_schema_language.yaml"
|
||||||
},
|
},
|
||||||
"@context": {
|
"@context": {
|
||||||
"PATO": {
|
|
||||||
"@id": "http://purl.obolibrary.org/obo/PATO_",
|
|
||||||
"@prefix": true
|
|
||||||
},
|
|
||||||
"biolink": "https://w3id.org/biolink/",
|
|
||||||
"example": "https://example.org/",
|
|
||||||
"linkml": "https://w3id.org/linkml/",
|
"linkml": "https://w3id.org/linkml/",
|
||||||
"nwb_schema_language": "https://w3id.org/p2p_ld/nwb-schema-language/",
|
"nwb_schema_language": "https://w3id.org/p2p_ld/nwb-schema-language/",
|
||||||
"schema": "http://schema.org/",
|
"schema": {
|
||||||
"skos": "http://www.w3.org/2004/02/skos/core#",
|
|
||||||
"@vocab": "https://w3id.org/p2p_ld/nwb-schema-language/",
|
|
||||||
"age_in_years": {
|
|
||||||
"@type": "xsd:integer"
|
|
||||||
},
|
|
||||||
"birth_date": {
|
|
||||||
"@type": "xsd:date",
|
|
||||||
"@id": "schema:birthDate"
|
|
||||||
},
|
|
||||||
"description": {
|
|
||||||
"@id": "schema:description"
|
|
||||||
},
|
|
||||||
"id": "@id",
|
|
||||||
"name": {
|
|
||||||
"@id": "schema:name"
|
|
||||||
},
|
|
||||||
"entries": {
|
|
||||||
"@type": "@id"
|
"@type": "@id"
|
||||||
},
|
},
|
||||||
"primary_email": {
|
"skos": "http://www.w3.org/2004/02/skos/core#",
|
||||||
|
"@vocab": "https://w3id.org/p2p_ld/nwb-schema-language/",
|
||||||
|
"attributes": {
|
||||||
|
"@type": "@id"
|
||||||
|
},
|
||||||
|
"author": {
|
||||||
|
"@id": "schema:author"
|
||||||
|
},
|
||||||
|
"contact": {
|
||||||
"@id": "schema:email"
|
"@id": "schema:email"
|
||||||
},
|
},
|
||||||
"vital_status": {
|
"datasets": {
|
||||||
|
"@type": "@id"
|
||||||
|
},
|
||||||
|
"date": {
|
||||||
|
"@type": "xsd:date",
|
||||||
|
"@id": "schema:dateModified"
|
||||||
|
},
|
||||||
|
"default_value": {
|
||||||
|
"@type": "@id"
|
||||||
|
},
|
||||||
|
"groups": {
|
||||||
|
"@type": "@id"
|
||||||
|
},
|
||||||
|
"linkable": {
|
||||||
|
"@type": "xsd:boolean"
|
||||||
|
},
|
||||||
|
"links": {
|
||||||
|
"@type": "@id"
|
||||||
|
},
|
||||||
|
"namespaces": {
|
||||||
|
"@type": "@id"
|
||||||
|
},
|
||||||
|
"reftype": {
|
||||||
"@context": {
|
"@context": {
|
||||||
"@vocab": "@null",
|
"@vocab": "@null",
|
||||||
"text": "skos:notation",
|
"text": "skos:notation",
|
||||||
|
@ -44,8 +51,14 @@
|
||||||
"meaning": "@id"
|
"meaning": "@id"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"NamedThing": {
|
"required": {
|
||||||
"@id": "schema:Thing"
|
"@type": "xsd:boolean"
|
||||||
|
},
|
||||||
|
"value": {
|
||||||
|
"@type": "@id"
|
||||||
|
},
|
||||||
|
"AnyType": {
|
||||||
|
"@id": "linkml:Any"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,160 +1,571 @@
|
||||||
{
|
{
|
||||||
"$defs": {
|
"$defs": {
|
||||||
"NamedThing": {
|
"AnyType": {
|
||||||
|
"additionalProperties": true,
|
||||||
|
"description": "",
|
||||||
|
"title": "AnyType",
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"Attribute": {
|
||||||
"additionalProperties": false,
|
"additionalProperties": false,
|
||||||
"description": "A generic grouping for any identifiable entity",
|
"description": "",
|
||||||
"properties": {
|
"properties": {
|
||||||
"description": {
|
"default_value": {
|
||||||
"description": "A human-readable description for a thing",
|
"$ref": "#/$defs/AnyType",
|
||||||
|
"description": "Optional default value for variable-valued attributes."
|
||||||
|
},
|
||||||
|
"dims": {
|
||||||
|
"items": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"id": {
|
"type": "array"
|
||||||
"description": "A unique identifier for a thing",
|
},
|
||||||
|
"doc": {
|
||||||
|
"description": "Description of corresponding object.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"dtype": {
|
||||||
|
"oneOf": [
|
||||||
|
{
|
||||||
|
"$ref": "#/$defs/FlatDtype"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$ref": "#/$defs/CompoundDtype"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$ref": "#/$defs/ReferenceDtype"
|
||||||
|
}
|
||||||
|
],
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"name": {
|
"name": {
|
||||||
"description": "A human-readable name for a thing",
|
"type": "string"
|
||||||
|
},
|
||||||
|
"required": {
|
||||||
|
"description": "Optional boolean key describing whether the attribute is required. Default value is True.",
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"shape": {
|
||||||
|
"items": {
|
||||||
|
"oneOf": [
|
||||||
|
{
|
||||||
|
"minimum": 1,
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"const": "null"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"type": "array"
|
||||||
|
},
|
||||||
|
"value": {
|
||||||
|
"$ref": "#/$defs/AnyType",
|
||||||
|
"description": "Optional constant, fixed value for the attribute."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"name",
|
||||||
|
"doc"
|
||||||
|
],
|
||||||
|
"title": "Attribute",
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"CompoundDtype": {
|
||||||
|
"additionalProperties": false,
|
||||||
|
"description": "",
|
||||||
|
"properties": {
|
||||||
|
"doc": {
|
||||||
|
"description": "Description of corresponding object.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"dtype": {
|
||||||
|
"$ref": "#/$defs/FlatDtype"
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"required": [
|
"required": [
|
||||||
"id"
|
"name",
|
||||||
|
"doc",
|
||||||
|
"dtype"
|
||||||
],
|
],
|
||||||
"title": "NamedThing",
|
"title": "CompoundDtype",
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"Dataset": {
|
||||||
|
"additionalProperties": false,
|
||||||
|
"description": "",
|
||||||
|
"properties": {
|
||||||
|
"attributes": {
|
||||||
|
"items": {
|
||||||
|
"$ref": "#/$defs/Attribute"
|
||||||
|
},
|
||||||
|
"type": "array"
|
||||||
|
},
|
||||||
|
"default_name": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"default_value": {
|
||||||
|
"$ref": "#/$defs/AnyType",
|
||||||
|
"description": "Optional default value for variable-valued attributes."
|
||||||
|
},
|
||||||
|
"dims": {
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"type": "array"
|
||||||
|
},
|
||||||
|
"doc": {
|
||||||
|
"description": "Description of corresponding object.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"dtype": {
|
||||||
|
"oneOf": [
|
||||||
|
{
|
||||||
|
"$ref": "#/$defs/FlatDtype"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$ref": "#/$defs/CompoundDtype"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$ref": "#/$defs/ReferenceDtype"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"linkable": {
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"neurodata_type_def": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"neurodata_type_inc": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"quantity": {
|
||||||
|
"anyOf": [
|
||||||
|
{
|
||||||
|
"minimum": 1,
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$ref": "#/$defs/QuantityEnum"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"shape": {
|
||||||
|
"items": {
|
||||||
|
"oneOf": [
|
||||||
|
{
|
||||||
|
"minimum": 1,
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"const": "null"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"type": "array"
|
||||||
|
},
|
||||||
|
"value": {
|
||||||
|
"$ref": "#/$defs/AnyType",
|
||||||
|
"description": "Optional constant, fixed value for the attribute."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"doc"
|
||||||
|
],
|
||||||
|
"title": "Dataset",
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"FlatDtype": {
|
||||||
|
"description": "",
|
||||||
|
"enum": [
|
||||||
|
"float",
|
||||||
|
"float32",
|
||||||
|
"double",
|
||||||
|
"float64",
|
||||||
|
"long",
|
||||||
|
"int64",
|
||||||
|
"int",
|
||||||
|
"int32",
|
||||||
|
"int16",
|
||||||
|
"short",
|
||||||
|
"int8",
|
||||||
|
"uint",
|
||||||
|
"uint32",
|
||||||
|
"uint16",
|
||||||
|
"uint8",
|
||||||
|
"uint64",
|
||||||
|
"numeric",
|
||||||
|
"text",
|
||||||
|
"utf",
|
||||||
|
"utf8",
|
||||||
|
"utf-8",
|
||||||
|
"ascii",
|
||||||
|
"bool",
|
||||||
|
"isodatetime"
|
||||||
|
],
|
||||||
|
"title": "FlatDtype",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"Group": {
|
||||||
|
"additionalProperties": false,
|
||||||
|
"description": "",
|
||||||
|
"properties": {
|
||||||
|
"attributes": {
|
||||||
|
"items": {
|
||||||
|
"$ref": "#/$defs/Attribute"
|
||||||
|
},
|
||||||
|
"type": "array"
|
||||||
|
},
|
||||||
|
"datasets": {
|
||||||
|
"items": {
|
||||||
|
"$ref": "#/$defs/Dataset"
|
||||||
|
},
|
||||||
|
"type": "array"
|
||||||
|
},
|
||||||
|
"default_name": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"doc": {
|
||||||
|
"description": "Description of corresponding object.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"groups": {
|
||||||
|
"items": {
|
||||||
|
"$ref": "#/$defs/Group"
|
||||||
|
},
|
||||||
|
"type": "array"
|
||||||
|
},
|
||||||
|
"linkable": {
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"links": {
|
||||||
|
"items": {
|
||||||
|
"$ref": "#/$defs/Link"
|
||||||
|
},
|
||||||
|
"type": "array"
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"neurodata_type_def": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"neurodata_type_inc": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"quantity": {
|
||||||
|
"anyOf": [
|
||||||
|
{
|
||||||
|
"minimum": 1,
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$ref": "#/$defs/QuantityEnum"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"doc"
|
||||||
|
],
|
||||||
|
"title": "Group",
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"Link": {
|
||||||
|
"additionalProperties": false,
|
||||||
|
"description": "",
|
||||||
|
"properties": {
|
||||||
|
"doc": {
|
||||||
|
"description": "Description of corresponding object.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"quantity": {
|
||||||
|
"anyOf": [
|
||||||
|
{
|
||||||
|
"minimum": 1,
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$ref": "#/$defs/QuantityEnum"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"target_type": {
|
||||||
|
"anyOf": [
|
||||||
|
{
|
||||||
|
"$ref": "#/$defs/Dataset"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$ref": "#/$defs/Group"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Describes the neurodata_type of the target that the reference points to",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"doc",
|
||||||
|
"target_type"
|
||||||
|
],
|
||||||
|
"title": "Link",
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"Namespace": {
|
||||||
|
"additionalProperties": false,
|
||||||
|
"description": "",
|
||||||
|
"properties": {
|
||||||
|
"author": {
|
||||||
|
"description": "List of strings with the names of the authors of the namespace.",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"type": "array"
|
||||||
|
},
|
||||||
|
"contact": {
|
||||||
|
"description": "List of strings with the contact information for the authors. Ordering of the contacts should match the ordering of the authors.",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"type": "array"
|
||||||
|
},
|
||||||
|
"date": {
|
||||||
|
"description": "Date that a namespace was last modified or released",
|
||||||
|
"format": "date",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"doc": {
|
||||||
|
"description": "Description of corresponding object.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"full_name": {
|
||||||
|
"description": "Optional string with extended full name for the namespace.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"schema": {
|
||||||
|
"description": "List of the schema to be included in this namespace.",
|
||||||
|
"items": {
|
||||||
|
"$ref": "#/$defs/Schema"
|
||||||
|
},
|
||||||
|
"type": "array"
|
||||||
|
},
|
||||||
|
"version": {
|
||||||
|
"pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"doc",
|
||||||
|
"name",
|
||||||
|
"version",
|
||||||
|
"author",
|
||||||
|
"contact"
|
||||||
|
],
|
||||||
|
"title": "Namespace",
|
||||||
"type": "object"
|
"type": "object"
|
||||||
},
|
},
|
||||||
"Namespaces": {
|
"Namespaces": {
|
||||||
"additionalProperties": false,
|
"additionalProperties": false,
|
||||||
"description": "Represents a Namespaces",
|
"description": "",
|
||||||
"properties": {
|
"properties": {
|
||||||
"age_in_years": {
|
"namespaces": {
|
||||||
"description": "Number of years since birth",
|
"items": {
|
||||||
"type": "integer"
|
"$ref": "#/$defs/Namespace"
|
||||||
},
|
},
|
||||||
"birth_date": {
|
"type": "array"
|
||||||
"description": "Date on which a person is born",
|
}
|
||||||
"format": "date",
|
},
|
||||||
|
"title": "Namespaces",
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"QuantityEnum": {
|
||||||
|
"description": "",
|
||||||
|
"enum": [
|
||||||
|
"*",
|
||||||
|
"?",
|
||||||
|
"+",
|
||||||
|
"zero_or_many",
|
||||||
|
"one_or_many",
|
||||||
|
"zero_or_one"
|
||||||
|
],
|
||||||
|
"title": "QuantityEnum",
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"description": {
|
"ReferenceDtype": {
|
||||||
"description": "A human-readable description for a thing",
|
"additionalProperties": false,
|
||||||
"type": "string"
|
"description": "",
|
||||||
|
"properties": {
|
||||||
|
"reftype": {
|
||||||
|
"$ref": "#/$defs/ReftypeOptions",
|
||||||
|
"description": "describes the kind of reference"
|
||||||
},
|
},
|
||||||
"id": {
|
"target_type": {
|
||||||
"description": "A unique identifier for a thing",
|
"anyOf": [
|
||||||
"type": "string"
|
{
|
||||||
|
"$ref": "#/$defs/Dataset"
|
||||||
},
|
},
|
||||||
"name": {
|
{
|
||||||
"description": "A human-readable name for a thing",
|
"$ref": "#/$defs/Group"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Describes the neurodata_type of the target that the reference points to",
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
|
||||||
"primary_email": {
|
|
||||||
"description": "The main email address of a person",
|
|
||||||
"pattern": "^\\S+@[\\S+\\.]+\\S+",
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"vital_status": {
|
|
||||||
"$ref": "#/$defs/PersonStatus",
|
|
||||||
"description": "living or dead status"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"required": [
|
"required": [
|
||||||
"id"
|
"target_type"
|
||||||
],
|
],
|
||||||
"title": "Namespaces",
|
"title": "ReferenceDtype",
|
||||||
"type": "object"
|
"type": "object"
|
||||||
},
|
},
|
||||||
"NamespacesCollection": {
|
"ReftypeOptions": {
|
||||||
"additionalProperties": false,
|
|
||||||
"description": "A holder for Namespaces objects",
|
|
||||||
"properties": {
|
|
||||||
"entries": {
|
|
||||||
"additionalProperties": {
|
|
||||||
"anyOf": [
|
|
||||||
{
|
|
||||||
"$ref": "#/$defs/Namespaces__identifier_optional"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "null"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"type": "object"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"title": "NamespacesCollection",
|
|
||||||
"type": "object"
|
|
||||||
},
|
|
||||||
"Namespaces__identifier_optional": {
|
|
||||||
"additionalProperties": false,
|
|
||||||
"description": "Represents a Namespaces",
|
|
||||||
"properties": {
|
|
||||||
"age_in_years": {
|
|
||||||
"description": "Number of years since birth",
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"birth_date": {
|
|
||||||
"description": "Date on which a person is born",
|
|
||||||
"format": "date",
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"description": {
|
|
||||||
"description": "A human-readable description for a thing",
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"id": {
|
|
||||||
"description": "A unique identifier for a thing",
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"name": {
|
|
||||||
"description": "A human-readable name for a thing",
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"primary_email": {
|
|
||||||
"description": "The main email address of a person",
|
|
||||||
"pattern": "^\\S+@[\\S+\\.]+\\S+",
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"vital_status": {
|
|
||||||
"$ref": "#/$defs/PersonStatus",
|
|
||||||
"description": "living or dead status"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"required": [],
|
|
||||||
"title": "Namespaces",
|
|
||||||
"type": "object"
|
|
||||||
},
|
|
||||||
"PersonStatus": {
|
|
||||||
"description": "",
|
"description": "",
|
||||||
"enum": [
|
"enum": [
|
||||||
"ALIVE",
|
"ref",
|
||||||
"DEAD",
|
"reference",
|
||||||
"UNKNOWN"
|
"object",
|
||||||
|
"region"
|
||||||
],
|
],
|
||||||
"title": "PersonStatus",
|
"title": "ReftypeOptions",
|
||||||
"type": "string"
|
"type": "string"
|
||||||
|
},
|
||||||
|
"Schema": {
|
||||||
|
"additionalProperties": false,
|
||||||
|
"allOf": [
|
||||||
|
{
|
||||||
|
"if": {
|
||||||
|
"properties": {
|
||||||
|
"namespace": {}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"namespace"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"then": {
|
||||||
|
"properties": {
|
||||||
|
"source": {}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"source"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"if": {
|
||||||
|
"properties": {
|
||||||
|
"source": {}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"source"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"then": {
|
||||||
|
"properties": {
|
||||||
|
"namespace": {}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"namespace"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"if": {
|
||||||
|
"properties": {
|
||||||
|
"namespace": {}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"namespace"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"then": {
|
||||||
|
"properties": {
|
||||||
|
"source": {}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"source"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"if": {
|
||||||
|
"properties": {
|
||||||
|
"source": {}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"source"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"then": {
|
||||||
|
"properties": {
|
||||||
|
"namespace": {}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"namespace"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "",
|
||||||
|
"properties": {
|
||||||
|
"doc": {
|
||||||
|
"description": "Description of corresponding object.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"namespace": {
|
||||||
|
"description": "describes a named reference to another namespace. In contrast to source, this is a reference by name to a known namespace (i.e., the namespace is resolved during the build and must point to an already existing namespace). This mechanism is used to allow, e.g., extension of a core namespace (here the NWB core namespace) without requiring hard paths to the files describing the core namespace. Either source or namespace must be specified, but not both.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"neurodata_types": {
|
||||||
|
"description": "an optional list of strings indicating which data types should be included from the given specification source or namespace. The default is null indicating that all data types should be included.",
|
||||||
|
"items": {
|
||||||
|
"anyOf": [
|
||||||
|
{
|
||||||
|
"$ref": "#/$defs/Dataset"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$ref": "#/$defs/Group"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"type": "array"
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"description": "describes the name of the YAML (or JSON) file with the schema specification. The schema files should be located in the same folder as the namespace file.",
|
||||||
|
"pattern": ".*\\.(yml|yaml|json)",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"title": {
|
||||||
|
"description": "a descriptive title for a file for documentation purposes.",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"title": "Schema",
|
||||||
|
"type": "object"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"$id": "https://w3id.org/p2p_ld/nwb-schema-language",
|
"$id": "https://w3id.org/p2p_ld/nwb-schema-language",
|
||||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||||
"additionalProperties": true,
|
"additionalProperties": true,
|
||||||
"description": "A holder for Namespaces objects",
|
|
||||||
"metamodel_version": "1.7.0",
|
"metamodel_version": "1.7.0",
|
||||||
"properties": {
|
|
||||||
"entries": {
|
|
||||||
"additionalProperties": {
|
|
||||||
"anyOf": [
|
|
||||||
{
|
|
||||||
"$ref": "#/$defs/Namespaces__identifier_optional"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "null"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"type": "object"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"title": "nwb-schema-language",
|
"title": "nwb-schema-language",
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"version": null
|
"version": null
|
||||||
|
|
|
@ -1,11 +1,8 @@
|
||||||
{
|
{
|
||||||
"PATO": "http://purl.obolibrary.org/obo/PATO_",
|
|
||||||
"biolink": "https://w3id.org/biolink/",
|
|
||||||
"example": "https://example.org/",
|
|
||||||
"linkml": "https://w3id.org/linkml/",
|
"linkml": "https://w3id.org/linkml/",
|
||||||
"nwb_schema_language": "https://w3id.org/p2p_ld/nwb-schema-language/",
|
"nwb_schema_language": "https://w3id.org/p2p_ld/nwb-schema-language/",
|
||||||
"schema": "http://schema.org/",
|
"schema": "http://schema.org/",
|
||||||
"NamedThing": {
|
"AnyType": {
|
||||||
"@id": "schema:Thing"
|
"@id": "linkml:Any"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,23 +1,82 @@
|
||||||
// A generic grouping for any identifiable entity
|
message Attribute
|
||||||
message NamedThing
|
|
||||||
{
|
{
|
||||||
uriorcurie id = 0
|
|
||||||
string name = 0
|
string name = 0
|
||||||
string description = 0
|
repeated string dims = 0
|
||||||
|
repeated string shape = 0
|
||||||
|
anyType value = 0
|
||||||
|
anyType defaultValue = 0
|
||||||
|
string doc = 0
|
||||||
|
boolean required = 0
|
||||||
|
string dtype = 0
|
||||||
|
}
|
||||||
|
message CompoundDtype
|
||||||
|
{
|
||||||
|
string name = 0
|
||||||
|
string doc = 0
|
||||||
|
flatDtype dtype = 0
|
||||||
|
}
|
||||||
|
message Dataset
|
||||||
|
{
|
||||||
|
string neurodataTypeDef = 0
|
||||||
|
string neurodataTypeInc = 0
|
||||||
|
string name = 0
|
||||||
|
string defaultName = 0
|
||||||
|
repeated string dims = 0
|
||||||
|
repeated string shape = 0
|
||||||
|
anyType value = 0
|
||||||
|
anyType defaultValue = 0
|
||||||
|
string doc = 0
|
||||||
|
string quantity = 0
|
||||||
|
boolean linkable = 0
|
||||||
|
repeated attribute attributes = 0
|
||||||
|
string dtype = 0
|
||||||
|
}
|
||||||
|
message Group
|
||||||
|
{
|
||||||
|
string neurodataTypeDef = 0
|
||||||
|
string neurodataTypeInc = 0
|
||||||
|
string name = 0
|
||||||
|
string defaultName = 0
|
||||||
|
string doc = 0
|
||||||
|
string quantity = 0
|
||||||
|
boolean linkable = 0
|
||||||
|
repeated attribute attributes = 0
|
||||||
|
repeated dataset datasets = 0
|
||||||
|
repeated group groups = 0
|
||||||
|
repeated link links = 0
|
||||||
|
}
|
||||||
|
message Link
|
||||||
|
{
|
||||||
|
string name = 0
|
||||||
|
string doc = 0
|
||||||
|
string targetType = 0
|
||||||
|
string quantity = 0
|
||||||
|
}
|
||||||
|
message Namespace
|
||||||
|
{
|
||||||
|
string doc = 0
|
||||||
|
string name = 0
|
||||||
|
string fullName = 0
|
||||||
|
string version = 0
|
||||||
|
date date = 0
|
||||||
|
repeated string author = 0
|
||||||
|
repeated string contact = 0
|
||||||
|
repeated schema schema = 0
|
||||||
}
|
}
|
||||||
// Represents a Namespaces
|
|
||||||
message Namespaces
|
message Namespaces
|
||||||
{
|
{
|
||||||
uriorcurie id = 0
|
repeated namespace namespaces = 0
|
||||||
string name = 0
|
|
||||||
string description = 0
|
|
||||||
string primaryEmail = 0
|
|
||||||
date birthDate = 0
|
|
||||||
integer ageInYears = 0
|
|
||||||
personStatus vitalStatus = 0
|
|
||||||
}
|
}
|
||||||
// A holder for Namespaces objects
|
message ReferenceDtype
|
||||||
message NamespacesCollection
|
|
||||||
{
|
{
|
||||||
repeated namespaces entries = 0
|
string targetType = 0
|
||||||
|
reftypeOptions reftype = 0
|
||||||
|
}
|
||||||
|
message Schema
|
||||||
|
{
|
||||||
|
string source = 0
|
||||||
|
string namespace = 0
|
||||||
|
string doc = 0
|
||||||
|
string title = 0
|
||||||
|
repeated string neurodataTypes = 0
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,31 +43,137 @@ linkml:Jsonpath xsd:string
|
||||||
|
|
||||||
linkml:Sparqlpath xsd:string
|
linkml:Sparqlpath xsd:string
|
||||||
|
|
||||||
<NamedThing> (
|
<AnyType> CLOSED {
|
||||||
CLOSED {
|
( $<AnyType_tes> rdf:type . * ;
|
||||||
( $<NamedThing_tes> ( schema1:name @linkml:String ? ;
|
rdf:type [ linkml:Any ] ?
|
||||||
schema1:description @linkml:String ?
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
<Attribute> CLOSED {
|
||||||
|
( $<Attribute_tes> ( &<DtypeMixin_tes> ;
|
||||||
|
rdf:type [ <DtypeMixin> ] ? ;
|
||||||
|
<name> @linkml:String ;
|
||||||
|
<dims> @linkml:String * ;
|
||||||
|
<shape> @linkml:String * ;
|
||||||
|
<value> @<AnyType> ? ;
|
||||||
|
<default_value> @<AnyType> ? ;
|
||||||
|
<doc> @linkml:String ;
|
||||||
|
<required> @linkml:Boolean ? ;
|
||||||
|
<dtype> @linkml:String ?
|
||||||
) ;
|
) ;
|
||||||
rdf:type [ schema1:Thing ]
|
rdf:type [ <Attribute> ] ?
|
||||||
)
|
)
|
||||||
} OR @<Namespaces>
|
}
|
||||||
|
|
||||||
|
<CompoundDtype> CLOSED {
|
||||||
|
( $<CompoundDtype_tes> ( <name> @linkml:String ;
|
||||||
|
<doc> @linkml:String ;
|
||||||
|
<dtype> @<FlatDtype>
|
||||||
|
) ;
|
||||||
|
rdf:type [ <CompoundDtype> ] ?
|
||||||
)
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
<Dataset> CLOSED {
|
||||||
|
( $<Dataset_tes> ( &<DtypeMixin_tes> ;
|
||||||
|
rdf:type [ <DtypeMixin> ] ? ;
|
||||||
|
&<NamingMixin_tes> ;
|
||||||
|
rdf:type [ <NamingMixin> ] ? ;
|
||||||
|
<neurodata_type_def> @linkml:String ? ;
|
||||||
|
<neurodata_type_inc> @linkml:String ? ;
|
||||||
|
<name> @linkml:String ? ;
|
||||||
|
<default_name> @linkml:String ? ;
|
||||||
|
<dims> @linkml:String * ;
|
||||||
|
<shape> @linkml:String * ;
|
||||||
|
<value> @<AnyType> ? ;
|
||||||
|
<default_value> @<AnyType> ? ;
|
||||||
|
<doc> @linkml:String ;
|
||||||
|
<quantity> @linkml:String ? ;
|
||||||
|
<linkable> @linkml:Boolean ? ;
|
||||||
|
<attributes> @<Attribute> * ;
|
||||||
|
<dtype> @linkml:String ?
|
||||||
|
) ;
|
||||||
|
rdf:type [ <Dataset> ] ?
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
<DtypeMixin> {
|
||||||
|
( $<DtypeMixin_tes> <dtype> @linkml:String ? ;
|
||||||
|
rdf:type [ <DtypeMixin> ] ?
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
<Group> CLOSED {
|
||||||
|
( $<Group_tes> ( &<NamingMixin_tes> ;
|
||||||
|
rdf:type [ <NamingMixin> ] ? ;
|
||||||
|
<neurodata_type_def> @linkml:String ? ;
|
||||||
|
<neurodata_type_inc> @linkml:String ? ;
|
||||||
|
<name> @linkml:String ? ;
|
||||||
|
<default_name> @linkml:String ? ;
|
||||||
|
<doc> @linkml:String ;
|
||||||
|
<quantity> @linkml:String ? ;
|
||||||
|
<linkable> @linkml:Boolean ? ;
|
||||||
|
<attributes> @<Attribute> * ;
|
||||||
|
<datasets> @<Dataset> * ;
|
||||||
|
<groups> @<Group> * ;
|
||||||
|
<links> @<Link> *
|
||||||
|
) ;
|
||||||
|
rdf:type [ <Group> ] ?
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
<Link> CLOSED {
|
||||||
|
( $<Link_tes> ( <name> @linkml:String ? ;
|
||||||
|
<doc> @linkml:String ;
|
||||||
|
<target_type> @linkml:String ;
|
||||||
|
<quantity> @linkml:String ?
|
||||||
|
) ;
|
||||||
|
rdf:type [ <Link> ] ?
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
<Namespace> CLOSED {
|
||||||
|
( $<Namespace_tes> ( <doc> @linkml:String ;
|
||||||
|
<name> @linkml:String ;
|
||||||
|
<full_name> @linkml:String ? ;
|
||||||
|
<version> @linkml:String ;
|
||||||
|
schema1:dateModified @linkml:Date ? ;
|
||||||
|
schema1:author @linkml:String + ;
|
||||||
|
schema1:email @linkml:String + ;
|
||||||
|
<schema> @<Schema> *
|
||||||
|
) ;
|
||||||
|
rdf:type [ <Namespace> ] ?
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
<Namespaces> CLOSED {
|
<Namespaces> CLOSED {
|
||||||
( $<Namespaces_tes> ( &<NamedThing_tes> ;
|
( $<Namespaces_tes> <namespaces> @<Namespace> * ;
|
||||||
rdf:type [ schema1:Thing ] ? ;
|
rdf:type [ <Namespaces> ] ?
|
||||||
schema1:email @linkml:String ? ;
|
)
|
||||||
schema1:birthDate @linkml:Date ? ;
|
}
|
||||||
<age_in_years> @linkml:Integer ? ;
|
|
||||||
<vital_status> @<PersonStatus> ?
|
<NamingMixin> {
|
||||||
|
( $<NamingMixin_tes> rdf:type . * ;
|
||||||
|
rdf:type [ <NamingMixin> ] ?
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
<ReferenceDtype> CLOSED {
|
||||||
|
( $<ReferenceDtype_tes> ( <target_type> @linkml:String ;
|
||||||
|
<reftype> @<ReftypeOptions> ?
|
||||||
) ;
|
) ;
|
||||||
rdf:type [ <Namespaces> ]
|
rdf:type [ <ReferenceDtype> ] ?
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
<NamespacesCollection> CLOSED {
|
<Schema> CLOSED {
|
||||||
( $<NamespacesCollection_tes> <entries> @<Namespaces> * ;
|
( $<Schema_tes> ( <source> @linkml:String ? ;
|
||||||
rdf:type [ <NamespacesCollection> ] ?
|
<namespace> @linkml:String ? ;
|
||||||
|
<doc> @linkml:String ;
|
||||||
|
<title> @linkml:String ? ;
|
||||||
|
<neurodata_types> @linkml:String *
|
||||||
|
) ;
|
||||||
|
rdf:type [ <Schema> ] ?
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,24 +1,92 @@
|
||||||
|
|
||||||
|
|
||||||
CREATE TABLE "NamedThing" (
|
CREATE TABLE "Attribute" (
|
||||||
id TEXT NOT NULL,
|
name TEXT NOT NULL,
|
||||||
|
dims TEXT,
|
||||||
|
shape TEXT,
|
||||||
|
value TEXT,
|
||||||
|
default_value TEXT,
|
||||||
|
doc TEXT NOT NULL,
|
||||||
|
required BOOLEAN,
|
||||||
|
dtype TEXT,
|
||||||
|
PRIMARY KEY (name, dims, shape, value, default_value, doc, required, dtype)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "CompoundDtype" (
|
||||||
|
name TEXT NOT NULL,
|
||||||
|
doc TEXT NOT NULL,
|
||||||
|
dtype VARCHAR(11) NOT NULL,
|
||||||
|
PRIMARY KEY (name, doc, dtype)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "Dataset" (
|
||||||
|
neurodata_type_def TEXT,
|
||||||
|
neurodata_type_inc TEXT,
|
||||||
name TEXT,
|
name TEXT,
|
||||||
description TEXT,
|
default_name TEXT,
|
||||||
PRIMARY KEY (id)
|
dims TEXT,
|
||||||
|
shape TEXT,
|
||||||
|
value TEXT,
|
||||||
|
default_value TEXT,
|
||||||
|
doc TEXT NOT NULL,
|
||||||
|
quantity TEXT,
|
||||||
|
linkable BOOLEAN,
|
||||||
|
attributes TEXT,
|
||||||
|
dtype TEXT,
|
||||||
|
PRIMARY KEY (neurodata_type_def, neurodata_type_inc, name, default_name, dims, shape, value, default_value, doc, quantity, linkable, attributes, dtype)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "Group" (
|
||||||
|
neurodata_type_def TEXT,
|
||||||
|
neurodata_type_inc TEXT,
|
||||||
|
name TEXT,
|
||||||
|
default_name TEXT,
|
||||||
|
doc TEXT NOT NULL,
|
||||||
|
quantity TEXT,
|
||||||
|
linkable BOOLEAN,
|
||||||
|
attributes TEXT,
|
||||||
|
datasets TEXT,
|
||||||
|
groups TEXT,
|
||||||
|
links TEXT,
|
||||||
|
PRIMARY KEY (neurodata_type_def, neurodata_type_inc, name, default_name, doc, quantity, linkable, attributes, datasets, groups, links)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "Link" (
|
||||||
|
name TEXT,
|
||||||
|
doc TEXT NOT NULL,
|
||||||
|
target_type TEXT NOT NULL,
|
||||||
|
quantity TEXT,
|
||||||
|
PRIMARY KEY (name, doc, target_type, quantity)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "Namespace" (
|
||||||
|
doc TEXT NOT NULL,
|
||||||
|
name TEXT NOT NULL,
|
||||||
|
full_name TEXT,
|
||||||
|
version TEXT NOT NULL,
|
||||||
|
date DATE,
|
||||||
|
author TEXT NOT NULL,
|
||||||
|
contact TEXT NOT NULL,
|
||||||
|
schema TEXT,
|
||||||
|
PRIMARY KEY (doc, name, full_name, version, date, author, contact, schema)
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE "Namespaces" (
|
CREATE TABLE "Namespaces" (
|
||||||
id TEXT NOT NULL,
|
namespaces TEXT,
|
||||||
name TEXT,
|
PRIMARY KEY (namespaces)
|
||||||
description TEXT,
|
|
||||||
primary_email TEXT,
|
|
||||||
birth_date DATE,
|
|
||||||
age_in_years INTEGER,
|
|
||||||
vital_status VARCHAR(7),
|
|
||||||
PRIMARY KEY (id)
|
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE "NamespacesCollection" (
|
CREATE TABLE "ReferenceDtype" (
|
||||||
entries TEXT,
|
target_type TEXT NOT NULL,
|
||||||
PRIMARY KEY (entries)
|
reftype VARCHAR(9),
|
||||||
|
PRIMARY KEY (target_type, reftype)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "Schema" (
|
||||||
|
source TEXT,
|
||||||
|
namespace TEXT,
|
||||||
|
doc TEXT NOT NULL,
|
||||||
|
title TEXT,
|
||||||
|
neurodata_types TEXT,
|
||||||
|
PRIMARY KEY (source, namespace, doc, title, neurodata_types)
|
||||||
);
|
);
|
||||||
|
|
|
@ -5,6 +5,9 @@ description = "Translation of the nwb-schema-language to LinkML"
|
||||||
authors = ["Jonny Saunders <j@nny.fyi>"]
|
authors = ["Jonny Saunders <j@nny.fyi>"]
|
||||||
license = "GNU GPL v3.0"
|
license = "GNU GPL v3.0"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
|
packages = [
|
||||||
|
{ include = "nwb_schema_language", from="src"}
|
||||||
|
]
|
||||||
include = ["README.md", "src/nwb_schema_language/schema", "project"]
|
include = ["README.md", "src/nwb_schema_language/schema", "project"]
|
||||||
|
|
||||||
[tool.poetry.dependencies]
|
[tool.poetry.dependencies]
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
# Example data object
|
|
||||||
---
|
|
||||||
entries:
|
|
||||||
- id: example:Namespaces001
|
|
||||||
name: foo bar
|
|
||||||
primary_email: foo.bar@example.com
|
|
||||||
age_in_years: 33
|
|
264
nwb-schema-linkml/src/data/tests/nwb.base.yaml
Normal file
264
nwb-schema-linkml/src/data/tests/nwb.base.yaml
Normal file
|
@ -0,0 +1,264 @@
|
||||||
|
datasets:
|
||||||
|
- neurodata_type_def: NWBData
|
||||||
|
neurodata_type_inc: Data
|
||||||
|
doc: An abstract data type for a dataset.
|
||||||
|
|
||||||
|
- neurodata_type_def: TimeSeriesReferenceVectorData
|
||||||
|
neurodata_type_inc: VectorData
|
||||||
|
default_name: timeseries
|
||||||
|
dtype:
|
||||||
|
- name: idx_start
|
||||||
|
dtype: int32
|
||||||
|
doc: Start index into the TimeSeries 'data' and 'timestamp' datasets of the referenced
|
||||||
|
TimeSeries. The first dimension of those arrays is always time.
|
||||||
|
- name: count
|
||||||
|
dtype: int32
|
||||||
|
doc: Number of data samples available in this time series, during this epoch
|
||||||
|
- name: timeseries
|
||||||
|
dtype:
|
||||||
|
target_type: TimeSeries
|
||||||
|
reftype: object
|
||||||
|
doc: The TimeSeries that this index applies to
|
||||||
|
doc: Column storing references to a TimeSeries (rows). For each TimeSeries this
|
||||||
|
VectorData column stores the start_index and count to indicate the range in time
|
||||||
|
to be selected as well as an object reference to the TimeSeries.
|
||||||
|
|
||||||
|
- neurodata_type_def: Image
|
||||||
|
neurodata_type_inc: NWBData
|
||||||
|
dtype: numeric
|
||||||
|
dims:
|
||||||
|
- - x
|
||||||
|
- y
|
||||||
|
- - x
|
||||||
|
- y
|
||||||
|
- r, g, b
|
||||||
|
- - x
|
||||||
|
- y
|
||||||
|
- r, g, b, a
|
||||||
|
shape:
|
||||||
|
- - null
|
||||||
|
- null
|
||||||
|
- - null
|
||||||
|
- null
|
||||||
|
- 3
|
||||||
|
- - null
|
||||||
|
- null
|
||||||
|
- 4
|
||||||
|
doc: An abstract data type for an image. Shape can be 2-D (x, y), or 3-D where the
|
||||||
|
third dimension can have three or four elements, e.g. (x, y, (r, g, b)) or
|
||||||
|
(x, y, (r, g, b, a)).
|
||||||
|
attributes:
|
||||||
|
- name: resolution
|
||||||
|
dtype: float32
|
||||||
|
doc: Pixel resolution of the image, in pixels per centimeter.
|
||||||
|
required: false
|
||||||
|
- name: description
|
||||||
|
dtype: text
|
||||||
|
doc: Description of the image.
|
||||||
|
required: false
|
||||||
|
|
||||||
|
- neurodata_type_def: ImageReferences
|
||||||
|
neurodata_type_inc: NWBData
|
||||||
|
dtype:
|
||||||
|
target_type: Image
|
||||||
|
reftype: object
|
||||||
|
dims:
|
||||||
|
- num_images
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
doc: Ordered dataset of references to Image objects.
|
||||||
|
|
||||||
|
groups:
|
||||||
|
- neurodata_type_def: NWBContainer
|
||||||
|
neurodata_type_inc: Container
|
||||||
|
doc: An abstract data type for a generic container storing collections of data and
|
||||||
|
metadata. Base type for all data and metadata containers.
|
||||||
|
|
||||||
|
- neurodata_type_def: NWBDataInterface
|
||||||
|
neurodata_type_inc: NWBContainer
|
||||||
|
doc: An abstract data type for a generic container storing collections of data,
|
||||||
|
as opposed to metadata.
|
||||||
|
|
||||||
|
- neurodata_type_def: TimeSeries
|
||||||
|
neurodata_type_inc: NWBDataInterface
|
||||||
|
doc: General purpose time series.
|
||||||
|
attributes:
|
||||||
|
- name: description
|
||||||
|
dtype: text
|
||||||
|
default_value: no description
|
||||||
|
doc: Description of the time series.
|
||||||
|
required: false
|
||||||
|
- name: comments
|
||||||
|
dtype: text
|
||||||
|
default_value: no comments
|
||||||
|
doc: Human-readable comments about the TimeSeries. This second descriptive field
|
||||||
|
can be used to store additional information, or descriptive information if the
|
||||||
|
primary description field is populated with a computer-readable string.
|
||||||
|
required: false
|
||||||
|
datasets:
|
||||||
|
- name: data
|
||||||
|
dims:
|
||||||
|
- - num_times
|
||||||
|
- - num_times
|
||||||
|
- num_DIM2
|
||||||
|
- - num_times
|
||||||
|
- num_DIM2
|
||||||
|
- num_DIM3
|
||||||
|
- - num_times
|
||||||
|
- num_DIM2
|
||||||
|
- num_DIM3
|
||||||
|
- num_DIM4
|
||||||
|
shape:
|
||||||
|
- - null
|
||||||
|
- - null
|
||||||
|
- null
|
||||||
|
- - null
|
||||||
|
- null
|
||||||
|
- null
|
||||||
|
- - null
|
||||||
|
- null
|
||||||
|
- null
|
||||||
|
- null
|
||||||
|
doc: Data values. Data can be in 1-D, 2-D, 3-D, or 4-D. The first dimension
|
||||||
|
should always represent time. This can also be used to store binary data
|
||||||
|
(e.g., image frames). This can also be a link to data stored in an external file.
|
||||||
|
attributes:
|
||||||
|
- name: conversion
|
||||||
|
dtype: float32
|
||||||
|
default_value: 1.0
|
||||||
|
doc: Scalar to multiply each element in data to convert it to the specified 'unit'.
|
||||||
|
If the data are stored in acquisition system units or other units
|
||||||
|
that require a conversion to be interpretable, multiply the data by 'conversion'
|
||||||
|
to convert the data to the specified 'unit'. e.g. if the data acquisition system
|
||||||
|
stores values in this object as signed 16-bit integers (int16 range
|
||||||
|
-32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data
|
||||||
|
acquisition system gain is 8000X, then the 'conversion' multiplier to get from
|
||||||
|
raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.
|
||||||
|
required: false
|
||||||
|
- name: offset
|
||||||
|
dtype: float32
|
||||||
|
default_value: 0.0
|
||||||
|
doc: Scalar to add to the data after scaling by 'conversion' to finalize its coercion
|
||||||
|
to the specified 'unit'. Two common examples of this include (a) data stored in an
|
||||||
|
unsigned type that requires a shift after scaling to re-center the data,
|
||||||
|
and (b) specialized recording devices that naturally cause a scalar offset with
|
||||||
|
respect to the true units.
|
||||||
|
required: false
|
||||||
|
- name: resolution
|
||||||
|
dtype: float32
|
||||||
|
default_value: -1.0
|
||||||
|
doc: Smallest meaningful difference between values in data, stored in the specified
|
||||||
|
by unit, e.g., the change in value of the least significant bit, or a larger
|
||||||
|
number if signal noise is known to be present. If unknown, use -1.0.
|
||||||
|
required: false
|
||||||
|
- name: unit
|
||||||
|
dtype: text
|
||||||
|
doc: Base unit of measurement for working with the data. Actual stored values are
|
||||||
|
not necessarily stored in these units. To access the data in these units,
|
||||||
|
multiply 'data' by 'conversion' and add 'offset'.
|
||||||
|
- name: continuity
|
||||||
|
dtype: text
|
||||||
|
doc: Optionally describe the continuity of the data. Can be "continuous", "instantaneous", or
|
||||||
|
"step". For example, a voltage trace would be "continuous", because samples
|
||||||
|
are recorded from a continuous process. An array of lick times would be "instantaneous",
|
||||||
|
because the data represents distinct moments in time. Times of image presentations would be
|
||||||
|
"step" because the picture remains the same until the next timepoint. This field is optional,
|
||||||
|
but is useful in providing information about the underlying data. It may inform the way this
|
||||||
|
data is interpreted, the way it is visualized, and what analysis methods are applicable.
|
||||||
|
required: false
|
||||||
|
- name: starting_time
|
||||||
|
dtype: float64
|
||||||
|
doc: Timestamp of the first sample in seconds. When timestamps are uniformly
|
||||||
|
spaced, the timestamp of the first sample can be specified and all subsequent
|
||||||
|
ones calculated from the sampling rate attribute.
|
||||||
|
quantity: '?'
|
||||||
|
attributes:
|
||||||
|
- name: rate
|
||||||
|
dtype: float32
|
||||||
|
doc: Sampling rate, in Hz.
|
||||||
|
- name: unit
|
||||||
|
dtype: text
|
||||||
|
value: seconds
|
||||||
|
doc: Unit of measurement for time, which is fixed to 'seconds'.
|
||||||
|
- name: timestamps
|
||||||
|
dtype: float64
|
||||||
|
dims:
|
||||||
|
- num_times
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
doc: Timestamps for samples stored in data, in seconds, relative to the
|
||||||
|
common experiment master-clock stored in NWBFile.timestamps_reference_time.
|
||||||
|
quantity: '?'
|
||||||
|
attributes:
|
||||||
|
- name: interval
|
||||||
|
dtype: int32
|
||||||
|
value: 1
|
||||||
|
doc: Value is '1'
|
||||||
|
- name: unit
|
||||||
|
dtype: text
|
||||||
|
value: seconds
|
||||||
|
doc: Unit of measurement for timestamps, which is fixed to 'seconds'.
|
||||||
|
- name: control
|
||||||
|
dtype: uint8
|
||||||
|
dims:
|
||||||
|
- num_times
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
doc: Numerical labels that apply to each time point in data for the purpose of
|
||||||
|
querying and slicing data by these values. If present, the length of this
|
||||||
|
array should be the same size as the first dimension of data.
|
||||||
|
quantity: '?'
|
||||||
|
- name: control_description
|
||||||
|
dtype: text
|
||||||
|
dims:
|
||||||
|
- num_control_values
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
doc: Description of each control value. Must be present if control is present.
|
||||||
|
If present, control_description[0] should describe time points where control == 0.
|
||||||
|
quantity: '?'
|
||||||
|
groups:
|
||||||
|
- name: sync
|
||||||
|
doc: Lab-specific time and sync information as provided directly from hardware
|
||||||
|
devices and that is necessary for aligning all acquired time information to
|
||||||
|
a common timebase. The timestamp array stores time in the common timebase.
|
||||||
|
This group will usually only be populated in TimeSeries that are
|
||||||
|
stored external to the NWB file, in files storing raw data. Once timestamp
|
||||||
|
data is calculated, the contents of 'sync' are mostly for archival purposes.
|
||||||
|
quantity: '?'
|
||||||
|
|
||||||
|
- neurodata_type_def: ProcessingModule
|
||||||
|
neurodata_type_inc: NWBContainer
|
||||||
|
doc: A collection of processed data.
|
||||||
|
attributes:
|
||||||
|
- name: description
|
||||||
|
dtype: text
|
||||||
|
doc: Description of this collection of processed data.
|
||||||
|
groups:
|
||||||
|
- neurodata_type_inc: NWBDataInterface
|
||||||
|
doc: Data objects stored in this collection.
|
||||||
|
quantity: '*'
|
||||||
|
- neurodata_type_inc: DynamicTable
|
||||||
|
doc: Tables stored in this collection.
|
||||||
|
quantity: '*'
|
||||||
|
|
||||||
|
- neurodata_type_def: Images
|
||||||
|
neurodata_type_inc: NWBDataInterface
|
||||||
|
default_name: Images
|
||||||
|
doc: A collection of images with an optional way to specify the order of the images
|
||||||
|
using the "order_of_images" dataset. An order must be specified if the images are
|
||||||
|
referenced by index, e.g., from an IndexSeries.
|
||||||
|
attributes:
|
||||||
|
- name: description
|
||||||
|
dtype: text
|
||||||
|
doc: Description of this collection of images.
|
||||||
|
datasets:
|
||||||
|
- neurodata_type_inc: Image
|
||||||
|
doc: Images stored in this collection.
|
||||||
|
quantity: '+'
|
||||||
|
- name: order_of_images
|
||||||
|
neurodata_type_inc: ImageReferences
|
||||||
|
doc: Ordered dataset of references to Image objects stored in the parent group.
|
||||||
|
Each Image object in the Images group should be stored once and only once, so
|
||||||
|
the dataset should have the same length as the number of images.
|
||||||
|
quantity: '?'
|
124
nwb-schema-linkml/src/data/tests/nwb.behavior.yaml
Normal file
124
nwb-schema-linkml/src/data/tests/nwb.behavior.yaml
Normal file
|
@ -0,0 +1,124 @@
|
||||||
|
groups:
|
||||||
|
- neurodata_type_def: SpatialSeries
|
||||||
|
neurodata_type_inc: TimeSeries
|
||||||
|
doc: "Direction, e.g., of gaze or travel, or position. The TimeSeries::data field\
|
||||||
|
\ is a 2D array storing position or direction relative to some reference frame.\
|
||||||
|
\ Array structure: [num measurements] [num dimensions]. Each SpatialSeries has\
|
||||||
|
\ a text dataset reference_frame that indicates the zero-position, or the zero-axes\
|
||||||
|
\ for direction. For example, if representing gaze direction, 'straight-ahead'\
|
||||||
|
\ might be a specific pixel on the monitor, or some other point in space. For\
|
||||||
|
\ position data, the 0,0 point might be the top-left corner of an enclosure, as\
|
||||||
|
\ viewed from the tracking camera. The unit of data will indicate how to interpret\
|
||||||
|
\ SpatialSeries values."
|
||||||
|
datasets:
|
||||||
|
- name: data
|
||||||
|
dtype: numeric
|
||||||
|
dims:
|
||||||
|
- - num_times
|
||||||
|
- - num_times
|
||||||
|
- x
|
||||||
|
- - num_times
|
||||||
|
- x,y
|
||||||
|
- - num_times
|
||||||
|
- x,y,z
|
||||||
|
shape:
|
||||||
|
- - null
|
||||||
|
- - null
|
||||||
|
- 1
|
||||||
|
- - null
|
||||||
|
- 2
|
||||||
|
- - null
|
||||||
|
- 3
|
||||||
|
doc: 1-D or 2-D array storing position or direction relative to some reference frame.
|
||||||
|
attributes:
|
||||||
|
- name: unit
|
||||||
|
dtype: text
|
||||||
|
default_value: meters
|
||||||
|
doc: Base unit of measurement for working with the data. The default value
|
||||||
|
is 'meters'. Actual stored values are not necessarily stored in these units.
|
||||||
|
To access the data in these units, multiply 'data' by 'conversion' and add 'offset'.
|
||||||
|
required: false
|
||||||
|
- name: reference_frame
|
||||||
|
dtype: text
|
||||||
|
doc: Description defining what exactly 'straight-ahead' means.
|
||||||
|
quantity: '?'
|
||||||
|
|
||||||
|
- neurodata_type_def: BehavioralEpochs
|
||||||
|
neurodata_type_inc: NWBDataInterface
|
||||||
|
default_name: BehavioralEpochs
|
||||||
|
doc: TimeSeries for storing behavioral epochs. The objective of this and the other
|
||||||
|
two Behavioral interfaces (e.g. BehavioralEvents and BehavioralTimeSeries) is
|
||||||
|
to provide generic hooks for software tools/scripts. This allows a tool/script
|
||||||
|
to take the output one specific interface (e.g., UnitTimes) and plot that data
|
||||||
|
relative to another data modality (e.g., behavioral events) without having to
|
||||||
|
define all possible modalities in advance. Declaring one of these interfaces means
|
||||||
|
that one or more TimeSeries of the specified type is published. These TimeSeries
|
||||||
|
should reside in a group having the same name as the interface. For example, if
|
||||||
|
a BehavioralTimeSeries interface is declared, the module will have one or more
|
||||||
|
TimeSeries defined in the module sub-group 'BehavioralTimeSeries'. BehavioralEpochs
|
||||||
|
should use IntervalSeries. BehavioralEvents is used for irregular events. BehavioralTimeSeries
|
||||||
|
is for continuous data.
|
||||||
|
groups:
|
||||||
|
- neurodata_type_inc: IntervalSeries
|
||||||
|
doc: IntervalSeries object containing start and stop times of epochs.
|
||||||
|
quantity: '*'
|
||||||
|
|
||||||
|
- neurodata_type_def: BehavioralEvents
|
||||||
|
neurodata_type_inc: NWBDataInterface
|
||||||
|
default_name: BehavioralEvents
|
||||||
|
doc: TimeSeries for storing behavioral events. See description of <a href="#BehavioralEpochs">BehavioralEpochs</a>
|
||||||
|
for more details.
|
||||||
|
groups:
|
||||||
|
- neurodata_type_inc: TimeSeries
|
||||||
|
doc: TimeSeries object containing behavioral events.
|
||||||
|
quantity: '*'
|
||||||
|
|
||||||
|
- neurodata_type_def: BehavioralTimeSeries
|
||||||
|
neurodata_type_inc: NWBDataInterface
|
||||||
|
default_name: BehavioralTimeSeries
|
||||||
|
doc: TimeSeries for storing Behavoioral time series data. See description of <a href="#BehavioralEpochs">BehavioralEpochs</a>
|
||||||
|
for more details.
|
||||||
|
groups:
|
||||||
|
- neurodata_type_inc: TimeSeries
|
||||||
|
doc: TimeSeries object containing continuous behavioral data.
|
||||||
|
quantity: '*'
|
||||||
|
|
||||||
|
- neurodata_type_def: PupilTracking
|
||||||
|
neurodata_type_inc: NWBDataInterface
|
||||||
|
default_name: PupilTracking
|
||||||
|
doc: Eye-tracking data, representing pupil size.
|
||||||
|
groups:
|
||||||
|
- neurodata_type_inc: TimeSeries
|
||||||
|
doc: TimeSeries object containing time series data on pupil size.
|
||||||
|
quantity: '+'
|
||||||
|
|
||||||
|
- neurodata_type_def: EyeTracking
|
||||||
|
neurodata_type_inc: NWBDataInterface
|
||||||
|
default_name: EyeTracking
|
||||||
|
doc: Eye-tracking data, representing direction of gaze.
|
||||||
|
groups:
|
||||||
|
- neurodata_type_inc: SpatialSeries
|
||||||
|
doc: SpatialSeries object containing data measuring direction of gaze.
|
||||||
|
quantity: '*'
|
||||||
|
|
||||||
|
- neurodata_type_def: CompassDirection
|
||||||
|
neurodata_type_inc: NWBDataInterface
|
||||||
|
default_name: CompassDirection
|
||||||
|
doc: With a CompassDirection interface, a module publishes a SpatialSeries object
|
||||||
|
representing a floating point value for theta. The SpatialSeries::reference_frame
|
||||||
|
field should indicate what direction corresponds to 0 and which is the direction
|
||||||
|
of rotation (this should be clockwise). The si_unit for the SpatialSeries should
|
||||||
|
be radians or degrees.
|
||||||
|
groups:
|
||||||
|
- neurodata_type_inc: SpatialSeries
|
||||||
|
doc: SpatialSeries object containing direction of gaze travel.
|
||||||
|
quantity: '*'
|
||||||
|
|
||||||
|
- neurodata_type_def: Position
|
||||||
|
neurodata_type_inc: NWBDataInterface
|
||||||
|
default_name: Position
|
||||||
|
doc: Position data, whether along the x, x/y or x/y/z axis.
|
||||||
|
groups:
|
||||||
|
- neurodata_type_inc: SpatialSeries
|
||||||
|
doc: SpatialSeries object containing position data.
|
||||||
|
quantity: '+'
|
14
nwb-schema-linkml/src/data/tests/nwb.device.yaml
Normal file
14
nwb-schema-linkml/src/data/tests/nwb.device.yaml
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
groups:
|
||||||
|
- neurodata_type_def: Device
|
||||||
|
neurodata_type_inc: NWBContainer
|
||||||
|
doc: Metadata about a data acquisition device, e.g., recording system, electrode, microscope.
|
||||||
|
attributes:
|
||||||
|
- name: description
|
||||||
|
dtype: text
|
||||||
|
doc: Description of the device (e.g., model, firmware version, processing software version, etc.)
|
||||||
|
as free-form text.
|
||||||
|
required: false
|
||||||
|
- name: manufacturer
|
||||||
|
dtype: text
|
||||||
|
doc: The name of the manufacturer of the device.
|
||||||
|
required: false
|
333
nwb-schema-linkml/src/data/tests/nwb.ecephys.yaml
Normal file
333
nwb-schema-linkml/src/data/tests/nwb.ecephys.yaml
Normal file
|
@ -0,0 +1,333 @@
|
||||||
|
groups:
|
||||||
|
- neurodata_type_def: ElectricalSeries
|
||||||
|
neurodata_type_inc: TimeSeries
|
||||||
|
doc: A time series of acquired voltage data from extracellular recordings.
|
||||||
|
The data field is an int or float array storing data in volts. The first
|
||||||
|
dimension should always represent time. The second dimension, if present,
|
||||||
|
should represent channels.
|
||||||
|
attributes:
|
||||||
|
- name: filtering
|
||||||
|
dtype: text
|
||||||
|
doc: Filtering applied to all channels of the data. For example, if this ElectricalSeries represents
|
||||||
|
high-pass-filtered data (also known as AP Band), then this value could be "High-pass 4-pole Bessel filter
|
||||||
|
at 500 Hz". If this ElectricalSeries represents low-pass-filtered LFP data and the type of filter is unknown,
|
||||||
|
then this value could be "Low-pass filter at 300 Hz". If a non-standard filter type is used, provide as much
|
||||||
|
detail about the filter properties as possible.
|
||||||
|
required: false
|
||||||
|
datasets:
|
||||||
|
- name: data
|
||||||
|
dtype: numeric
|
||||||
|
dims:
|
||||||
|
- - num_times
|
||||||
|
- - num_times
|
||||||
|
- num_channels
|
||||||
|
- - num_times
|
||||||
|
- num_channels
|
||||||
|
- num_samples
|
||||||
|
shape:
|
||||||
|
- - null
|
||||||
|
- - null
|
||||||
|
- null
|
||||||
|
- - null
|
||||||
|
- null
|
||||||
|
- null
|
||||||
|
doc: Recorded voltage data.
|
||||||
|
attributes:
|
||||||
|
- name: unit
|
||||||
|
dtype: text
|
||||||
|
value: volts
|
||||||
|
doc: Base unit of measurement for working with the data. This value is fixed to
|
||||||
|
'volts'. Actual stored values are not necessarily stored in these units. To
|
||||||
|
access the data in these units, multiply 'data' by 'conversion', followed by
|
||||||
|
'channel_conversion' (if present), and then add 'offset'.
|
||||||
|
- name: electrodes
|
||||||
|
neurodata_type_inc: DynamicTableRegion
|
||||||
|
doc: DynamicTableRegion pointer to the electrodes that this time series was generated from.
|
||||||
|
- name: channel_conversion
|
||||||
|
dtype: float32
|
||||||
|
dims:
|
||||||
|
- num_channels
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
doc: Channel-specific conversion factor. Multiply the data in the 'data' dataset by these
|
||||||
|
values along the channel axis (as indicated by axis attribute) AND by the global
|
||||||
|
conversion factor in the 'conversion' attribute of 'data' to get the data values in
|
||||||
|
Volts, i.e, data in Volts = data * data.conversion * channel_conversion. This
|
||||||
|
approach allows for both global and per-channel data conversion factors needed
|
||||||
|
to support the storage of electrical recordings as native values generated by data
|
||||||
|
acquisition systems. If this dataset is not present, then there is no channel-specific
|
||||||
|
conversion factor, i.e. it is 1 for all channels.
|
||||||
|
quantity: '?'
|
||||||
|
attributes:
|
||||||
|
- name: axis
|
||||||
|
dtype: int32
|
||||||
|
value: 1
|
||||||
|
doc: The zero-indexed axis of the 'data' dataset that the channel-specific conversion
|
||||||
|
factor corresponds to. This value is fixed to 1.
|
||||||
|
|
||||||
|
- neurodata_type_def: SpikeEventSeries
|
||||||
|
neurodata_type_inc: ElectricalSeries
|
||||||
|
doc: "Stores snapshots/snippets of recorded spike events (i.e., threshold crossings). This
|
||||||
|
may also be raw data, as reported by ephys hardware. If so, the TimeSeries::description
|
||||||
|
field should describe how events were detected. All SpikeEventSeries should
|
||||||
|
reside in a module (under EventWaveform interface) even if the spikes were reported
|
||||||
|
and stored by hardware. All events span the same recording channels and store
|
||||||
|
snapshots of equal duration. TimeSeries::data array structure: [num events]
|
||||||
|
[num channels] [num samples] (or [num events] [num samples] for single electrode)."
|
||||||
|
datasets:
|
||||||
|
- name: data
|
||||||
|
dtype: numeric
|
||||||
|
dims:
|
||||||
|
- - num_events
|
||||||
|
- num_samples
|
||||||
|
- - num_events
|
||||||
|
- num_channels
|
||||||
|
- num_samples
|
||||||
|
shape:
|
||||||
|
- - null
|
||||||
|
- null
|
||||||
|
- - null
|
||||||
|
- null
|
||||||
|
- null
|
||||||
|
doc: Spike waveforms.
|
||||||
|
attributes:
|
||||||
|
- name: unit
|
||||||
|
dtype: text
|
||||||
|
value: volts
|
||||||
|
doc: Unit of measurement for waveforms, which is fixed to 'volts'.
|
||||||
|
- name: timestamps
|
||||||
|
dtype: float64
|
||||||
|
dims:
|
||||||
|
- num_times
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
doc: Timestamps for samples stored in data, in seconds, relative to the
|
||||||
|
common experiment master-clock stored in NWBFile.timestamps_reference_time.
|
||||||
|
Timestamps are required for the events. Unlike for TimeSeries, timestamps are
|
||||||
|
required for SpikeEventSeries and are thus re-specified here.
|
||||||
|
attributes:
|
||||||
|
- name: interval
|
||||||
|
dtype: int32
|
||||||
|
value: 1
|
||||||
|
doc: Value is '1'
|
||||||
|
- name: unit
|
||||||
|
dtype: text
|
||||||
|
value: seconds
|
||||||
|
doc: Unit of measurement for timestamps, which is fixed to 'seconds'.
|
||||||
|
|
||||||
|
- neurodata_type_def: FeatureExtraction
|
||||||
|
neurodata_type_inc: NWBDataInterface
|
||||||
|
default_name: FeatureExtraction
|
||||||
|
doc: Features, such as PC1 and PC2, that are extracted from signals stored in a
|
||||||
|
SpikeEventSeries or other source.
|
||||||
|
datasets:
|
||||||
|
- name: description
|
||||||
|
dtype: text
|
||||||
|
dims:
|
||||||
|
- num_features
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
doc: Description of features (eg, ''PC1'') for each of the extracted features.
|
||||||
|
- name: features
|
||||||
|
dtype: float32
|
||||||
|
dims:
|
||||||
|
- num_events
|
||||||
|
- num_channels
|
||||||
|
- num_features
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
- null
|
||||||
|
- null
|
||||||
|
doc: Multi-dimensional array of features extracted from each event.
|
||||||
|
- name: times
|
||||||
|
dtype: float64
|
||||||
|
dims:
|
||||||
|
- num_events
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
doc: Times of events that features correspond to (can be a link).
|
||||||
|
- name: electrodes
|
||||||
|
neurodata_type_inc: DynamicTableRegion
|
||||||
|
doc: DynamicTableRegion pointer to the electrodes that this time series was generated from.
|
||||||
|
|
||||||
|
- neurodata_type_def: EventDetection
|
||||||
|
neurodata_type_inc: NWBDataInterface
|
||||||
|
default_name: EventDetection
|
||||||
|
doc: Detected spike events from voltage trace(s).
|
||||||
|
datasets:
|
||||||
|
- name: detection_method
|
||||||
|
dtype: text
|
||||||
|
doc: Description of how events were detected, such as voltage threshold, or dV/dT
|
||||||
|
threshold, as well as relevant values.
|
||||||
|
- name: source_idx
|
||||||
|
dtype: int32
|
||||||
|
dims:
|
||||||
|
- num_events
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
doc: Indices (zero-based) into source ElectricalSeries::data array corresponding
|
||||||
|
to time of event. ''description'' should define what is meant by time of
|
||||||
|
event (e.g., .25 ms before action potential peak, zero-crossing time, etc).
|
||||||
|
The index points to each event from the raw data.
|
||||||
|
- name: times
|
||||||
|
dtype: float64
|
||||||
|
dims:
|
||||||
|
- num_events
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
doc: Timestamps of events, in seconds.
|
||||||
|
attributes:
|
||||||
|
- name: unit
|
||||||
|
dtype: text
|
||||||
|
value: seconds
|
||||||
|
doc: Unit of measurement for event times, which is fixed to 'seconds'.
|
||||||
|
links:
|
||||||
|
- name: source_electricalseries
|
||||||
|
target_type: ElectricalSeries
|
||||||
|
doc: Link to the ElectricalSeries that this data was calculated from. Metadata
|
||||||
|
about electrodes and their position can be read from that ElectricalSeries so
|
||||||
|
it's not necessary to include that information here.
|
||||||
|
|
||||||
|
- neurodata_type_def: EventWaveform
|
||||||
|
neurodata_type_inc: NWBDataInterface
|
||||||
|
default_name: EventWaveform
|
||||||
|
doc: Represents either the waveforms of detected events, as extracted from a raw
|
||||||
|
data trace in /acquisition, or the event waveforms that were stored during experiment
|
||||||
|
acquisition.
|
||||||
|
groups:
|
||||||
|
- neurodata_type_inc: SpikeEventSeries
|
||||||
|
doc: SpikeEventSeries object(s) containing detected spike event waveforms.
|
||||||
|
quantity: '*'
|
||||||
|
|
||||||
|
- neurodata_type_def: FilteredEphys
|
||||||
|
neurodata_type_inc: NWBDataInterface
|
||||||
|
default_name: FilteredEphys
|
||||||
|
doc: Electrophysiology data from one or more channels that has been subjected to filtering.
|
||||||
|
Examples of filtered data include Theta and Gamma (LFP has its own interface).
|
||||||
|
FilteredEphys modules publish an ElectricalSeries for each filtered channel or
|
||||||
|
set of channels. The name of each ElectricalSeries is arbitrary but should be
|
||||||
|
informative. The source of the filtered data, whether this is from analysis of
|
||||||
|
another time series or as acquired by hardware, should be noted in each's TimeSeries::description
|
||||||
|
field. There is no assumed 1::1 correspondence between filtered ephys signals
|
||||||
|
and electrodes, as a single signal can apply to many nearby electrodes, and one
|
||||||
|
electrode may have different filtered (e.g., theta and/or gamma) signals represented.
|
||||||
|
Filter properties should be noted in the ElectricalSeries 'filtering' attribute.
|
||||||
|
groups:
|
||||||
|
- neurodata_type_inc: ElectricalSeries
|
||||||
|
doc: ElectricalSeries object(s) containing filtered electrophysiology data.
|
||||||
|
quantity: '+'
|
||||||
|
|
||||||
|
- neurodata_type_def: LFP
|
||||||
|
neurodata_type_inc: NWBDataInterface
|
||||||
|
default_name: LFP
|
||||||
|
doc: LFP data from one or more channels. The electrode map in each published ElectricalSeries
|
||||||
|
will identify which channels are providing LFP data. Filter properties should
|
||||||
|
be noted in the ElectricalSeries 'filtering' attribute.
|
||||||
|
groups:
|
||||||
|
- neurodata_type_inc: ElectricalSeries
|
||||||
|
doc: ElectricalSeries object(s) containing LFP data for one or more channels.
|
||||||
|
quantity: '+'
|
||||||
|
|
||||||
|
- neurodata_type_def: ElectrodeGroup
|
||||||
|
neurodata_type_inc: NWBContainer
|
||||||
|
doc: A physical grouping of electrodes, e.g. a shank of an array.
|
||||||
|
attributes:
|
||||||
|
- name: description
|
||||||
|
dtype: text
|
||||||
|
doc: Description of this electrode group.
|
||||||
|
- name: location
|
||||||
|
dtype: text
|
||||||
|
doc: Location of electrode group. Specify the area, layer, comments on estimation
|
||||||
|
of area/layer, etc. Use standard atlas names for anatomical regions when possible.
|
||||||
|
datasets:
|
||||||
|
- name: position
|
||||||
|
dtype:
|
||||||
|
- name: x
|
||||||
|
dtype: float32
|
||||||
|
doc: x coordinate
|
||||||
|
- name: y
|
||||||
|
dtype: float32
|
||||||
|
doc: y coordinate
|
||||||
|
- name: z
|
||||||
|
dtype: float32
|
||||||
|
doc: z coordinate
|
||||||
|
doc: stereotaxic or common framework coordinates
|
||||||
|
quantity: '?'
|
||||||
|
links:
|
||||||
|
- name: device
|
||||||
|
target_type: Device
|
||||||
|
doc: Link to the device that was used to record from this electrode group.
|
||||||
|
|
||||||
|
# The types below have been deprecated
|
||||||
|
- neurodata_type_def: ClusterWaveforms
|
||||||
|
neurodata_type_inc: NWBDataInterface
|
||||||
|
default_name: ClusterWaveforms
|
||||||
|
doc: DEPRECATED The mean waveform shape, including standard deviation, of the different
|
||||||
|
clusters. Ideally, the waveform analysis should be performed on data that is only
|
||||||
|
high-pass filtered. This is a separate module because it is expected to require
|
||||||
|
updating. For example, IMEC probes may require different storage requirements
|
||||||
|
to store/display mean waveforms, requiring a new interface or an extension of
|
||||||
|
this one.
|
||||||
|
datasets:
|
||||||
|
- name: waveform_filtering
|
||||||
|
dtype: text
|
||||||
|
doc: Filtering applied to data before generating mean/sd
|
||||||
|
- name: waveform_mean
|
||||||
|
dtype: float32
|
||||||
|
dims:
|
||||||
|
- num_clusters
|
||||||
|
- num_samples
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
- null
|
||||||
|
doc: The mean waveform for each cluster, using the same indices for each wave
|
||||||
|
as cluster numbers in the associated Clustering module (i.e, cluster 3 is in
|
||||||
|
array slot [3]). Waveforms corresponding to gaps in cluster sequence should
|
||||||
|
be empty (e.g., zero- filled)
|
||||||
|
- name: waveform_sd
|
||||||
|
dtype: float32
|
||||||
|
dims:
|
||||||
|
- num_clusters
|
||||||
|
- num_samples
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
- null
|
||||||
|
doc: Stdev of waveforms for each cluster, using the same indices as in mean
|
||||||
|
links:
|
||||||
|
- name: clustering_interface
|
||||||
|
target_type: Clustering
|
||||||
|
doc: Link to Clustering interface that was the source of the clustered data
|
||||||
|
|
||||||
|
- neurodata_type_def: Clustering
|
||||||
|
neurodata_type_inc: NWBDataInterface
|
||||||
|
default_name: Clustering
|
||||||
|
doc: DEPRECATED Clustered spike data, whether from automatic clustering tools (e.g.,
|
||||||
|
klustakwik) or as a result of manual sorting.
|
||||||
|
datasets:
|
||||||
|
- name: description
|
||||||
|
dtype: text
|
||||||
|
doc: Description of clusters or clustering, (e.g. cluster 0 is noise, clusters
|
||||||
|
curated using Klusters, etc)
|
||||||
|
- name: num
|
||||||
|
dtype: int32
|
||||||
|
dims:
|
||||||
|
- num_events
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
doc: Cluster number of each event
|
||||||
|
- name: peak_over_rms
|
||||||
|
dtype: float32
|
||||||
|
dims:
|
||||||
|
- num_clusters
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
doc: Maximum ratio of waveform peak to RMS on any channel in the cluster (provides
|
||||||
|
a basic clustering metric).
|
||||||
|
- name: times
|
||||||
|
dtype: float64
|
||||||
|
dims:
|
||||||
|
- num_events
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
doc: Times of clustered events, in seconds. This may be a link to times field
|
||||||
|
in associated FeatureExtraction module.
|
31
nwb-schema-linkml/src/data/tests/nwb.epoch.yaml
Normal file
31
nwb-schema-linkml/src/data/tests/nwb.epoch.yaml
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
groups:
|
||||||
|
- neurodata_type_def: TimeIntervals
|
||||||
|
neurodata_type_inc: DynamicTable
|
||||||
|
doc: A container for aggregating epoch data and the TimeSeries that each epoch applies
|
||||||
|
to.
|
||||||
|
datasets:
|
||||||
|
- name: start_time
|
||||||
|
neurodata_type_inc: VectorData
|
||||||
|
dtype: float32
|
||||||
|
doc: Start time of epoch, in seconds.
|
||||||
|
- name: stop_time
|
||||||
|
neurodata_type_inc: VectorData
|
||||||
|
dtype: float32
|
||||||
|
doc: Stop time of epoch, in seconds.
|
||||||
|
- name: tags
|
||||||
|
neurodata_type_inc: VectorData
|
||||||
|
dtype: text
|
||||||
|
doc: User-defined tags that identify or categorize events.
|
||||||
|
quantity: '?'
|
||||||
|
- name: tags_index
|
||||||
|
neurodata_type_inc: VectorIndex
|
||||||
|
doc: Index for tags.
|
||||||
|
quantity: '?'
|
||||||
|
- name: timeseries
|
||||||
|
neurodata_type_inc: TimeSeriesReferenceVectorData
|
||||||
|
doc: An index into a TimeSeries object.
|
||||||
|
quantity: '?'
|
||||||
|
- name: timeseries_index
|
||||||
|
neurodata_type_inc: VectorIndex
|
||||||
|
doc: Index for timeseries.
|
||||||
|
quantity: '?'
|
502
nwb-schema-linkml/src/data/tests/nwb.file.yaml
Normal file
502
nwb-schema-linkml/src/data/tests/nwb.file.yaml
Normal file
|
@ -0,0 +1,502 @@
|
||||||
|
groups:
|
||||||
|
- neurodata_type_def: NWBFile
|
||||||
|
neurodata_type_inc: NWBContainer
|
||||||
|
name: root
|
||||||
|
doc: An NWB file storing cellular-based neurophysiology data from a single
|
||||||
|
experimental session.
|
||||||
|
attributes:
|
||||||
|
- name: nwb_version
|
||||||
|
dtype: text
|
||||||
|
value: "2.6.0"
|
||||||
|
doc: File version string. Use semantic versioning, e.g. 1.2.1. This will be the
|
||||||
|
name of the format with trailing major, minor and patch numbers.
|
||||||
|
datasets:
|
||||||
|
- name: file_create_date
|
||||||
|
dtype: isodatetime
|
||||||
|
dims:
|
||||||
|
- num_modifications
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
doc: 'A record of the date the file was created and of subsequent modifications.
|
||||||
|
The date is stored in UTC with local timezone offset as ISO 8601
|
||||||
|
extended formatted strings: 2018-09-28T14:43:54.123+02:00. Dates stored in
|
||||||
|
UTC end in "Z" with no timezone offset. Date accuracy is up to milliseconds.
|
||||||
|
The file can be created after the experiment was run, so this may differ from
|
||||||
|
the experiment start time. Each modification to the nwb file adds a new entry
|
||||||
|
to the array.'
|
||||||
|
- name: identifier
|
||||||
|
dtype: text
|
||||||
|
doc: A unique text identifier for the file. For example, concatenated lab name,
|
||||||
|
file creation date/time and experimentalist, or a hash of these and/or other
|
||||||
|
values. The goal is that the string should be unique to all other files.
|
||||||
|
- name: session_description
|
||||||
|
dtype: text
|
||||||
|
doc: A description of the experimental session and data in the file.
|
||||||
|
- name: session_start_time
|
||||||
|
dtype: isodatetime
|
||||||
|
doc: 'Date and time of the experiment/session start. The date is stored
|
||||||
|
in UTC with local timezone offset as ISO 8601 extended formatted string:
|
||||||
|
2018-09-28T14:43:54.123+02:00.
|
||||||
|
Dates stored in UTC end in "Z" with no timezone offset. Date accuracy is
|
||||||
|
up to milliseconds.'
|
||||||
|
- name: timestamps_reference_time
|
||||||
|
dtype: isodatetime
|
||||||
|
doc: 'Date and time corresponding to time zero of all timestamps. The
|
||||||
|
date is stored in UTC with local timezone offset as ISO 8601 extended formatted
|
||||||
|
string: 2018-09-28T14:43:54.123+02:00. Dates stored in UTC end in "Z" with
|
||||||
|
no timezone offset. Date accuracy is up to milliseconds. All times stored
|
||||||
|
in the file use this time as reference (i.e., time zero).'
|
||||||
|
groups:
|
||||||
|
- name: acquisition
|
||||||
|
doc: Data streams recorded from the system, including ephys, ophys, tracking,
|
||||||
|
etc. This group should be read-only after the experiment is completed and
|
||||||
|
timestamps are corrected to a common timebase. The data stored here may be links
|
||||||
|
to raw data stored in external NWB files. This will allow keeping bulky raw
|
||||||
|
data out of the file while preserving the option of keeping some/all in the
|
||||||
|
file. Acquired data includes tracking and experimental data streams
|
||||||
|
(i.e., everything measured from the system). If bulky data is stored in the /acquisition
|
||||||
|
group, the data can exist in a separate NWB file that is linked to by the file
|
||||||
|
being used for processing and analysis.
|
||||||
|
groups:
|
||||||
|
- neurodata_type_inc: NWBDataInterface
|
||||||
|
doc: Acquired, raw data.
|
||||||
|
quantity: '*'
|
||||||
|
- neurodata_type_inc: DynamicTable
|
||||||
|
doc: Tabular data that is relevant to acquisition
|
||||||
|
quantity: '*'
|
||||||
|
- name: analysis
|
||||||
|
doc: Lab-specific and custom scientific analysis of data. There is no defined
|
||||||
|
format for the content of this group - the format is up to the individual user/lab.
|
||||||
|
To facilitate sharing analysis data between labs, the contents here
|
||||||
|
should be stored in standard types (e.g., neurodata_types) and appropriately documented.
|
||||||
|
The file can store lab-specific and custom data analysis without
|
||||||
|
restriction on its form or schema, reducing data formatting restrictions on
|
||||||
|
end users. Such data should be placed in the analysis group. The analysis data
|
||||||
|
should be documented so that it could be shared with other labs.
|
||||||
|
groups:
|
||||||
|
- neurodata_type_inc: NWBContainer
|
||||||
|
doc: Custom analysis results.
|
||||||
|
quantity: '*'
|
||||||
|
- neurodata_type_inc: DynamicTable
|
||||||
|
doc: Tabular data that is relevant to data stored in analysis
|
||||||
|
quantity: '*'
|
||||||
|
- name: scratch
|
||||||
|
doc: 'A place to store one-off analysis results. Data placed here is not intended for
|
||||||
|
sharing. By placing data here, users acknowledge that there is no guarantee that
|
||||||
|
their data meets any standard.'
|
||||||
|
quantity: '?'
|
||||||
|
groups:
|
||||||
|
- neurodata_type_inc: NWBContainer
|
||||||
|
doc: Any one-off containers
|
||||||
|
quantity: '*'
|
||||||
|
- neurodata_type_inc: DynamicTable
|
||||||
|
doc: Any one-off tables
|
||||||
|
quantity: '*'
|
||||||
|
datasets:
|
||||||
|
- neurodata_type_inc: ScratchData
|
||||||
|
doc: Any one-off datasets
|
||||||
|
quantity: '*'
|
||||||
|
- name: processing
|
||||||
|
doc: "The home for ProcessingModules. These modules perform intermediate analysis\
|
||||||
|
\ of data that is necessary to perform before scientific analysis. Examples\
|
||||||
|
\ include spike clustering, extracting position from tracking data, stitching\
|
||||||
|
\ together image slices. ProcessingModules can be large\
|
||||||
|
\ and express many data sets from relatively complex analysis (e.g., spike detection\
|
||||||
|
\ and clustering) or small, representing extraction of position information\
|
||||||
|
\ from tracking video, or even binary lick/no-lick decisions. Common software\
|
||||||
|
\ tools (e.g., klustakwik, MClust) are expected to read/write data here. \
|
||||||
|
\ 'Processing' refers to intermediate analysis of the acquired data to make\
|
||||||
|
\ it more amenable to scientific analysis."
|
||||||
|
groups:
|
||||||
|
- neurodata_type_inc: ProcessingModule
|
||||||
|
doc: Intermediate analysis of acquired data.
|
||||||
|
quantity: '*'
|
||||||
|
- name: stimulus
|
||||||
|
doc: 'Data pushed into the system (eg, video stimulus, sound, voltage, etc) and
|
||||||
|
secondary representations of that data (eg, measurements of something used as
|
||||||
|
a stimulus). This group should be made read-only after experiment complete and timestamps
|
||||||
|
are corrected to common timebase. Stores both presented stimuli and stimulus
|
||||||
|
templates, the latter in case the same stimulus is presented multiple times,
|
||||||
|
or is pulled from an external stimulus library. Stimuli are here
|
||||||
|
defined as any signal that is pushed into the system as part of the experiment
|
||||||
|
(eg, sound, video, voltage, etc). Many different experiments can use the same
|
||||||
|
stimuli, and stimuli can be re-used during an experiment. The stimulus group
|
||||||
|
is organized so that one version of template stimuli can be stored and these
|
||||||
|
be used multiple times. These templates can exist in the present file or can
|
||||||
|
be linked to a remote library file.'
|
||||||
|
groups:
|
||||||
|
- name: presentation
|
||||||
|
doc: Stimuli presented during the experiment.
|
||||||
|
groups:
|
||||||
|
- neurodata_type_inc: TimeSeries
|
||||||
|
doc: TimeSeries objects containing data of presented stimuli.
|
||||||
|
quantity: '*'
|
||||||
|
- name: templates
|
||||||
|
doc: 'Template stimuli. Timestamps in templates are based on stimulus
|
||||||
|
design and are relative to the beginning of the stimulus. When templates are
|
||||||
|
used, the stimulus instances must convert presentation times to the experiment`s
|
||||||
|
time reference frame.'
|
||||||
|
groups:
|
||||||
|
- neurodata_type_inc: TimeSeries
|
||||||
|
doc: TimeSeries objects containing template data of presented stimuli.
|
||||||
|
quantity: '*'
|
||||||
|
- neurodata_type_inc: Images
|
||||||
|
doc: Images objects containing images of presented stimuli.
|
||||||
|
quantity: '*'
|
||||||
|
- name: general
|
||||||
|
doc: "Experimental metadata, including protocol, notes and description of hardware\
|
||||||
|
\ device(s). The metadata stored in this section should be used to\
|
||||||
|
\ describe the experiment. Metadata necessary for interpreting the data is stored\
|
||||||
|
\ with the data. General experimental metadata, including animal\
|
||||||
|
\ strain, experimental protocols, experimenter, devices, etc, are stored under\
|
||||||
|
\ 'general'. Core metadata (e.g., that required to interpret data fields) is\
|
||||||
|
\ stored with the data itself, and implicitly defined by the file specification\
|
||||||
|
\ (e.g., time is in seconds). The strategy used here for storing non-core metadata\
|
||||||
|
\ is to use free-form text fields, such as would appear in sentences or paragraphs\
|
||||||
|
\ from a Methods section. Metadata fields are text to enable them to be more\
|
||||||
|
\ general, for example to represent ranges instead of numerical values. Machine-readable\
|
||||||
|
\ metadata is stored as attributes to these free-form datasets. All entries\
|
||||||
|
\ in the below table are to be included when data is present. Unused groups\
|
||||||
|
\ (e.g., intracellular_ephys in an optophysiology experiment) should not be\
|
||||||
|
\ created unless there is data to store within them."
|
||||||
|
datasets:
|
||||||
|
- name: data_collection
|
||||||
|
dtype: text
|
||||||
|
doc: Notes about data collection and analysis.
|
||||||
|
quantity: '?'
|
||||||
|
- name: experiment_description
|
||||||
|
dtype: text
|
||||||
|
doc: General description of the experiment.
|
||||||
|
quantity: '?'
|
||||||
|
- name: experimenter
|
||||||
|
dtype: text
|
||||||
|
doc: Name of person(s) who performed the experiment. Can also specify roles
|
||||||
|
of different people involved.
|
||||||
|
quantity: '?'
|
||||||
|
dims:
|
||||||
|
- num_experimenters
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
- name: institution
|
||||||
|
dtype: text
|
||||||
|
doc: Institution(s) where experiment was performed.
|
||||||
|
quantity: '?'
|
||||||
|
- name: keywords
|
||||||
|
dtype: text
|
||||||
|
dims:
|
||||||
|
- num_keywords
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
doc: Terms to search over.
|
||||||
|
quantity: '?'
|
||||||
|
- name: lab
|
||||||
|
dtype: text
|
||||||
|
doc: Laboratory where experiment was performed.
|
||||||
|
quantity: '?'
|
||||||
|
- name: notes
|
||||||
|
dtype: text
|
||||||
|
doc: Notes about the experiment.
|
||||||
|
quantity: '?'
|
||||||
|
- name: pharmacology
|
||||||
|
dtype: text
|
||||||
|
doc: Description of drugs used, including how and when they were administered.
|
||||||
|
Anesthesia(s), painkiller(s), etc., plus dosage, concentration, etc.
|
||||||
|
quantity: '?'
|
||||||
|
- name: protocol
|
||||||
|
dtype: text
|
||||||
|
doc: Experimental protocol, if applicable. e.g., include IACUC protocol number.
|
||||||
|
quantity: '?'
|
||||||
|
- name: related_publications
|
||||||
|
dtype: text
|
||||||
|
doc: Publication information. PMID, DOI, URL, etc.
|
||||||
|
dims:
|
||||||
|
- num_publications
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
quantity: '?'
|
||||||
|
- name: session_id
|
||||||
|
dtype: text
|
||||||
|
doc: Lab-specific ID for the session.
|
||||||
|
quantity: '?'
|
||||||
|
- name: slices
|
||||||
|
dtype: text
|
||||||
|
doc: Description of slices, including information about preparation thickness,
|
||||||
|
orientation, temperature, and bath solution.
|
||||||
|
quantity: '?'
|
||||||
|
- name: source_script
|
||||||
|
dtype: text
|
||||||
|
doc: Script file or link to public source code used to create this NWB file.
|
||||||
|
quantity: '?'
|
||||||
|
attributes:
|
||||||
|
- name: file_name
|
||||||
|
dtype: text
|
||||||
|
doc: Name of script file.
|
||||||
|
- name: stimulus
|
||||||
|
dtype: text
|
||||||
|
doc: Notes about stimuli, such as how and where they were presented.
|
||||||
|
quantity: '?'
|
||||||
|
- name: surgery
|
||||||
|
dtype: text
|
||||||
|
doc: Narrative description about surgery/surgeries, including date(s) and who
|
||||||
|
performed surgery.
|
||||||
|
quantity: '?'
|
||||||
|
- name: virus
|
||||||
|
dtype: text
|
||||||
|
doc: Information about virus(es) used in experiments, including virus ID, source,
|
||||||
|
date made, injection location, volume, etc.
|
||||||
|
quantity: '?'
|
||||||
|
groups:
|
||||||
|
- neurodata_type_inc: LabMetaData
|
||||||
|
doc: Place-holder than can be extended so that lab-specific meta-data can be
|
||||||
|
placed in /general.
|
||||||
|
quantity: '*'
|
||||||
|
- name: devices
|
||||||
|
doc: Description of hardware devices used during experiment, e.g., monitors,
|
||||||
|
ADC boards, microscopes, etc.
|
||||||
|
quantity: '?'
|
||||||
|
groups:
|
||||||
|
- neurodata_type_inc: Device
|
||||||
|
doc: Data acquisition devices.
|
||||||
|
quantity: '*'
|
||||||
|
- name: subject
|
||||||
|
neurodata_type_inc: Subject
|
||||||
|
doc: Information about the animal or person from which the data was measured.
|
||||||
|
quantity: '?'
|
||||||
|
- name: extracellular_ephys
|
||||||
|
doc: Metadata related to extracellular electrophysiology.
|
||||||
|
quantity: '?'
|
||||||
|
groups:
|
||||||
|
- neurodata_type_inc: ElectrodeGroup
|
||||||
|
doc: Physical group of electrodes.
|
||||||
|
quantity: '*'
|
||||||
|
- name: electrodes
|
||||||
|
neurodata_type_inc: DynamicTable
|
||||||
|
doc: A table of all electrodes (i.e. channels) used for recording.
|
||||||
|
quantity: '?'
|
||||||
|
datasets:
|
||||||
|
- name: x
|
||||||
|
neurodata_type_inc: VectorData
|
||||||
|
dtype: float32
|
||||||
|
doc: x coordinate of the channel location in the brain (+x is posterior).
|
||||||
|
quantity: '?'
|
||||||
|
- name: y
|
||||||
|
neurodata_type_inc: VectorData
|
||||||
|
dtype: float32
|
||||||
|
doc: y coordinate of the channel location in the brain (+y is inferior).
|
||||||
|
quantity: '?'
|
||||||
|
- name: z
|
||||||
|
neurodata_type_inc: VectorData
|
||||||
|
dtype: float32
|
||||||
|
doc: z coordinate of the channel location in the brain (+z is right).
|
||||||
|
quantity: '?'
|
||||||
|
- name: imp
|
||||||
|
neurodata_type_inc: VectorData
|
||||||
|
dtype: float32
|
||||||
|
doc: Impedance of the channel, in ohms.
|
||||||
|
quantity: '?'
|
||||||
|
- name: location
|
||||||
|
neurodata_type_inc: VectorData
|
||||||
|
dtype: text
|
||||||
|
doc: Location of the electrode (channel). Specify the area, layer, comments
|
||||||
|
on estimation of area/layer, stereotaxic coordinates if in vivo, etc. Use
|
||||||
|
standard atlas names for anatomical regions when possible.
|
||||||
|
- name: filtering
|
||||||
|
neurodata_type_inc: VectorData
|
||||||
|
dtype: text
|
||||||
|
doc: Description of hardware filtering, including the filter name and frequency cutoffs.
|
||||||
|
quantity: '?'
|
||||||
|
- name: group
|
||||||
|
neurodata_type_inc: VectorData
|
||||||
|
dtype:
|
||||||
|
target_type: ElectrodeGroup
|
||||||
|
reftype: object
|
||||||
|
doc: Reference to the ElectrodeGroup this electrode is a part of.
|
||||||
|
- name: group_name
|
||||||
|
neurodata_type_inc: VectorData
|
||||||
|
dtype: text
|
||||||
|
doc: Name of the ElectrodeGroup this electrode is a part of.
|
||||||
|
- name: rel_x
|
||||||
|
neurodata_type_inc: VectorData
|
||||||
|
dtype: float32
|
||||||
|
doc: x coordinate in electrode group
|
||||||
|
quantity: '?'
|
||||||
|
- name: rel_y
|
||||||
|
neurodata_type_inc: VectorData
|
||||||
|
dtype: float32
|
||||||
|
doc: y coordinate in electrode group
|
||||||
|
quantity: '?'
|
||||||
|
- name: rel_z
|
||||||
|
neurodata_type_inc: VectorData
|
||||||
|
dtype: float32
|
||||||
|
doc: z coordinate in electrode group
|
||||||
|
quantity: '?'
|
||||||
|
- name: reference
|
||||||
|
neurodata_type_inc: VectorData
|
||||||
|
dtype: text
|
||||||
|
doc: Description of the reference electrode and/or reference scheme used for this electrode, e.g.,
|
||||||
|
"stainless steel skull screw" or "online common average referencing".
|
||||||
|
quantity: '?'
|
||||||
|
- name: intracellular_ephys
|
||||||
|
doc: Metadata related to intracellular electrophysiology.
|
||||||
|
quantity: '?'
|
||||||
|
datasets:
|
||||||
|
- name: filtering
|
||||||
|
dtype: text
|
||||||
|
doc: '[DEPRECATED] Use IntracellularElectrode.filtering instead. Description
|
||||||
|
of filtering used. Includes filtering type and parameters, frequency fall-off,
|
||||||
|
etc. If this changes between TimeSeries, filter description should be stored
|
||||||
|
as a text attribute for each TimeSeries.'
|
||||||
|
quantity: '?'
|
||||||
|
groups:
|
||||||
|
- neurodata_type_inc: IntracellularElectrode
|
||||||
|
doc: An intracellular electrode.
|
||||||
|
quantity: '*'
|
||||||
|
- name: sweep_table
|
||||||
|
neurodata_type_inc: SweepTable
|
||||||
|
doc: '[DEPRECATED] Table used to group different PatchClampSeries. SweepTable
|
||||||
|
is being replaced by IntracellularRecordingsTable and SimultaneousRecordingsTable
|
||||||
|
tables. Additional SequentialRecordingsTable, RepetitionsTable and
|
||||||
|
ExperimentalConditions tables provide enhanced support for experiment metadata.'
|
||||||
|
quantity: '?'
|
||||||
|
- name: intracellular_recordings
|
||||||
|
neurodata_type_inc: IntracellularRecordingsTable
|
||||||
|
doc: A table to group together a stimulus and response from a single electrode
|
||||||
|
and a single simultaneous recording. Each row in the table represents a
|
||||||
|
single recording consisting typically of a stimulus and a corresponding
|
||||||
|
response. In some cases, however, only a stimulus or a response are recorded
|
||||||
|
as as part of an experiment. In this case both, the stimulus and response
|
||||||
|
will point to the same TimeSeries while the idx_start and count of the invalid
|
||||||
|
column will be set to -1, thus, indicating that no values have been recorded
|
||||||
|
for the stimulus or response, respectively. Note, a recording MUST contain
|
||||||
|
at least a stimulus or a response. Typically the stimulus and response are
|
||||||
|
PatchClampSeries. However, the use of AD/DA channels that are not associated
|
||||||
|
to an electrode is also common in intracellular electrophysiology, in which
|
||||||
|
case other TimeSeries may be used.
|
||||||
|
quantity: '?'
|
||||||
|
- name: simultaneous_recordings
|
||||||
|
neurodata_type_inc: SimultaneousRecordingsTable
|
||||||
|
doc: A table for grouping different intracellular recordings from the IntracellularRecordingsTable
|
||||||
|
table together that were recorded simultaneously from different electrodes
|
||||||
|
quantity: '?'
|
||||||
|
- name: sequential_recordings
|
||||||
|
neurodata_type_inc: SequentialRecordingsTable
|
||||||
|
doc: A table for grouping different sequential recordings from the SimultaneousRecordingsTable
|
||||||
|
table together. This is typically used to group together sequential recordings
|
||||||
|
where the a sequence of stimuli of the same type with varying parameters
|
||||||
|
have been presented in a sequence.
|
||||||
|
quantity: '?'
|
||||||
|
- name: repetitions
|
||||||
|
neurodata_type_inc: RepetitionsTable
|
||||||
|
doc: A table for grouping different sequential intracellular recordings together.
|
||||||
|
With each SequentialRecording typically representing a particular type of
|
||||||
|
stimulus, the RepetitionsTable table is typically used to group sets of
|
||||||
|
stimuli applied in sequence.
|
||||||
|
quantity: '?'
|
||||||
|
- name: experimental_conditions
|
||||||
|
neurodata_type_inc: ExperimentalConditionsTable
|
||||||
|
doc: A table for grouping different intracellular recording repetitions together
|
||||||
|
that belong to the same experimental experimental_conditions.
|
||||||
|
quantity: '?'
|
||||||
|
- name: optogenetics
|
||||||
|
doc: Metadata describing optogenetic stimuluation.
|
||||||
|
quantity: '?'
|
||||||
|
groups:
|
||||||
|
- neurodata_type_inc: OptogeneticStimulusSite
|
||||||
|
doc: An optogenetic stimulation site.
|
||||||
|
quantity: '*'
|
||||||
|
- name: optophysiology
|
||||||
|
doc: Metadata related to optophysiology.
|
||||||
|
quantity: '?'
|
||||||
|
groups:
|
||||||
|
- neurodata_type_inc: ImagingPlane
|
||||||
|
doc: An imaging plane.
|
||||||
|
quantity: '*'
|
||||||
|
- name: intervals
|
||||||
|
doc: Experimental intervals, whether that be logically distinct sub-experiments
|
||||||
|
having a particular scientific goal, trials (see trials subgroup) during an
|
||||||
|
experiment, or epochs (see epochs subgroup) deriving from analysis of data.
|
||||||
|
quantity: '?'
|
||||||
|
groups:
|
||||||
|
- name: epochs
|
||||||
|
neurodata_type_inc: TimeIntervals
|
||||||
|
doc: Divisions in time marking experimental stages or sub-divisions of a single
|
||||||
|
recording session.
|
||||||
|
quantity: '?'
|
||||||
|
- name: trials
|
||||||
|
neurodata_type_inc: TimeIntervals
|
||||||
|
doc: Repeated experimental events that have a logical grouping.
|
||||||
|
quantity: '?'
|
||||||
|
- name: invalid_times
|
||||||
|
neurodata_type_inc: TimeIntervals
|
||||||
|
doc: Time intervals that should be removed from analysis.
|
||||||
|
quantity: '?'
|
||||||
|
- neurodata_type_inc: TimeIntervals
|
||||||
|
doc: Optional additional table(s) for describing other experimental time intervals.
|
||||||
|
quantity: '*'
|
||||||
|
- name: units
|
||||||
|
neurodata_type_inc: Units
|
||||||
|
doc: Data about sorted spike units.
|
||||||
|
quantity: '?'
|
||||||
|
|
||||||
|
- neurodata_type_def: LabMetaData
|
||||||
|
neurodata_type_inc: NWBContainer
|
||||||
|
doc: Lab-specific meta-data.
|
||||||
|
|
||||||
|
- neurodata_type_def: Subject
|
||||||
|
neurodata_type_inc: NWBContainer
|
||||||
|
doc: Information about the animal or person from which the data was measured.
|
||||||
|
datasets:
|
||||||
|
- name: age
|
||||||
|
dtype: text
|
||||||
|
doc: Age of subject. Can be supplied instead of 'date_of_birth'.
|
||||||
|
quantity: '?'
|
||||||
|
attributes:
|
||||||
|
- name: reference
|
||||||
|
doc: "Age is with reference to this event. Can be 'birth' or
|
||||||
|
'gestational'. If reference is omitted, 'birth' is implied."
|
||||||
|
dtype: text
|
||||||
|
required: false
|
||||||
|
default_value: birth
|
||||||
|
- name: date_of_birth
|
||||||
|
dtype: isodatetime
|
||||||
|
doc: Date of birth of subject. Can be supplied instead of 'age'.
|
||||||
|
quantity: '?'
|
||||||
|
- name: description
|
||||||
|
dtype: text
|
||||||
|
doc: Description of subject and where subject came from (e.g., breeder, if
|
||||||
|
animal).
|
||||||
|
quantity: '?'
|
||||||
|
- name: genotype
|
||||||
|
dtype: text
|
||||||
|
doc: Genetic strain. If absent, assume Wild Type (WT).
|
||||||
|
quantity: '?'
|
||||||
|
- name: sex
|
||||||
|
dtype: text
|
||||||
|
doc: Gender of subject.
|
||||||
|
quantity: '?'
|
||||||
|
- name: species
|
||||||
|
dtype: text
|
||||||
|
doc: Species of subject.
|
||||||
|
quantity: '?'
|
||||||
|
- name: strain
|
||||||
|
dtype: text
|
||||||
|
doc: Strain of subject.
|
||||||
|
quantity: '?'
|
||||||
|
- name: subject_id
|
||||||
|
dtype: text
|
||||||
|
doc: ID of animal/person used/participating in experiment (lab convention).
|
||||||
|
quantity: '?'
|
||||||
|
- name: weight
|
||||||
|
dtype: text
|
||||||
|
doc: Weight at time of experiment, at time of surgery and at other important
|
||||||
|
times.
|
||||||
|
quantity: '?'
|
||||||
|
|
||||||
|
datasets:
|
||||||
|
- neurodata_type_def: ScratchData
|
||||||
|
neurodata_type_inc: NWBData
|
||||||
|
doc: Any one-off datasets
|
||||||
|
attributes:
|
||||||
|
- name: notes
|
||||||
|
doc: 'Any notes the user has about the dataset being stored'
|
||||||
|
dtype: text
|
426
nwb-schema-linkml/src/data/tests/nwb.icephys.yaml
Normal file
426
nwb-schema-linkml/src/data/tests/nwb.icephys.yaml
Normal file
|
@ -0,0 +1,426 @@
|
||||||
|
groups:
|
||||||
|
- neurodata_type_def: PatchClampSeries
|
||||||
|
neurodata_type_inc: TimeSeries
|
||||||
|
doc: An abstract base class for patch-clamp data - stimulus or response,
|
||||||
|
current or voltage.
|
||||||
|
attributes:
|
||||||
|
- name: stimulus_description
|
||||||
|
dtype: text
|
||||||
|
doc: Protocol/stimulus name for this patch-clamp dataset.
|
||||||
|
- name: sweep_number
|
||||||
|
dtype: uint32
|
||||||
|
doc: Sweep number, allows to group different PatchClampSeries together.
|
||||||
|
required: false
|
||||||
|
datasets:
|
||||||
|
- name: data
|
||||||
|
dtype: numeric
|
||||||
|
dims:
|
||||||
|
- num_times
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
doc: Recorded voltage or current.
|
||||||
|
attributes:
|
||||||
|
- name: unit
|
||||||
|
dtype: text
|
||||||
|
doc: Base unit of measurement for working with the data. Actual stored values are
|
||||||
|
not necessarily stored in these units. To access the data in these units,
|
||||||
|
multiply 'data' by 'conversion' and add 'offset'.
|
||||||
|
- name: gain
|
||||||
|
dtype: float32
|
||||||
|
doc: Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).
|
||||||
|
quantity: '?'
|
||||||
|
links:
|
||||||
|
- name: electrode
|
||||||
|
target_type: IntracellularElectrode
|
||||||
|
doc: Link to IntracellularElectrode object that describes the electrode that was
|
||||||
|
used to apply or record this data.
|
||||||
|
|
||||||
|
- neurodata_type_def: CurrentClampSeries
|
||||||
|
neurodata_type_inc: PatchClampSeries
|
||||||
|
doc: Voltage data from an intracellular current-clamp recording. A
|
||||||
|
corresponding CurrentClampStimulusSeries (stored separately as a stimulus) is
|
||||||
|
used to store the current injected.
|
||||||
|
datasets:
|
||||||
|
- name: data
|
||||||
|
doc: Recorded voltage.
|
||||||
|
attributes:
|
||||||
|
- name: unit
|
||||||
|
dtype: text
|
||||||
|
value: volts
|
||||||
|
doc: Base unit of measurement for working with the data. which is fixed to 'volts'.
|
||||||
|
Actual stored values are not necessarily stored in these units. To access the data in these units,
|
||||||
|
multiply 'data' by 'conversion' and add 'offset'.
|
||||||
|
- name: bias_current
|
||||||
|
dtype: float32
|
||||||
|
doc: Bias current, in amps.
|
||||||
|
quantity: '?'
|
||||||
|
- name: bridge_balance
|
||||||
|
dtype: float32
|
||||||
|
doc: Bridge balance, in ohms.
|
||||||
|
quantity: '?'
|
||||||
|
- name: capacitance_compensation
|
||||||
|
dtype: float32
|
||||||
|
doc: Capacitance compensation, in farads.
|
||||||
|
quantity: '?'
|
||||||
|
|
||||||
|
- neurodata_type_def: IZeroClampSeries
|
||||||
|
neurodata_type_inc: CurrentClampSeries
|
||||||
|
doc: Voltage data from an intracellular recording when all current
|
||||||
|
and amplifier settings are off (i.e., CurrentClampSeries fields will be zero).
|
||||||
|
There is no CurrentClampStimulusSeries associated with an IZero series because
|
||||||
|
the amplifier is disconnected and no stimulus can reach the cell.
|
||||||
|
attributes:
|
||||||
|
- name: stimulus_description
|
||||||
|
dtype: text
|
||||||
|
doc: An IZeroClampSeries has no stimulus, so this attribute is automatically set to "N/A"
|
||||||
|
value: N/A
|
||||||
|
datasets:
|
||||||
|
- name: bias_current
|
||||||
|
dtype: float32
|
||||||
|
value: 0.0
|
||||||
|
doc: Bias current, in amps, fixed to 0.0.
|
||||||
|
- name: bridge_balance
|
||||||
|
dtype: float32
|
||||||
|
value: 0.0
|
||||||
|
doc: Bridge balance, in ohms, fixed to 0.0.
|
||||||
|
- name: capacitance_compensation
|
||||||
|
dtype: float32
|
||||||
|
value: 0.0
|
||||||
|
doc: Capacitance compensation, in farads, fixed to 0.0.
|
||||||
|
|
||||||
|
- neurodata_type_def: CurrentClampStimulusSeries
|
||||||
|
neurodata_type_inc: PatchClampSeries
|
||||||
|
doc: Stimulus current applied during current clamp recording.
|
||||||
|
datasets:
|
||||||
|
- name: data
|
||||||
|
doc: Stimulus current applied.
|
||||||
|
attributes:
|
||||||
|
- name: unit
|
||||||
|
dtype: text
|
||||||
|
value: amperes
|
||||||
|
doc: Base unit of measurement for working with the data. which is fixed to 'amperes'.
|
||||||
|
Actual stored values are not necessarily stored in these units. To access the data in these units,
|
||||||
|
multiply 'data' by 'conversion' and add 'offset'.
|
||||||
|
|
||||||
|
- neurodata_type_def: VoltageClampSeries
|
||||||
|
neurodata_type_inc: PatchClampSeries
|
||||||
|
doc: Current data from an intracellular voltage-clamp recording. A
|
||||||
|
corresponding VoltageClampStimulusSeries (stored separately as a stimulus) is
|
||||||
|
used to store the voltage injected.
|
||||||
|
datasets:
|
||||||
|
- name: data
|
||||||
|
doc: Recorded current.
|
||||||
|
attributes:
|
||||||
|
- name: unit
|
||||||
|
dtype: text
|
||||||
|
value: amperes
|
||||||
|
doc: Base unit of measurement for working with the data. which is fixed to 'amperes'.
|
||||||
|
Actual stored values are not necessarily stored in these units. To access the data in these units,
|
||||||
|
multiply 'data' by 'conversion' and add 'offset'.
|
||||||
|
- name: capacitance_fast
|
||||||
|
dtype: float32
|
||||||
|
doc: Fast capacitance, in farads.
|
||||||
|
quantity: '?'
|
||||||
|
attributes:
|
||||||
|
- name: unit
|
||||||
|
dtype: text
|
||||||
|
value: farads
|
||||||
|
doc: Unit of measurement for capacitance_fast, which is fixed to 'farads'.
|
||||||
|
- name: capacitance_slow
|
||||||
|
dtype: float32
|
||||||
|
doc: Slow capacitance, in farads.
|
||||||
|
quantity: '?'
|
||||||
|
attributes:
|
||||||
|
- name: unit
|
||||||
|
dtype: text
|
||||||
|
value: farads
|
||||||
|
doc: Unit of measurement for capacitance_fast, which is fixed to 'farads'.
|
||||||
|
- name: resistance_comp_bandwidth
|
||||||
|
dtype: float32
|
||||||
|
doc: Resistance compensation bandwidth, in hertz.
|
||||||
|
quantity: '?'
|
||||||
|
attributes:
|
||||||
|
- name: unit
|
||||||
|
dtype: text
|
||||||
|
value: hertz
|
||||||
|
doc: Unit of measurement for resistance_comp_bandwidth, which is fixed to 'hertz'.
|
||||||
|
- name: resistance_comp_correction
|
||||||
|
dtype: float32
|
||||||
|
doc: Resistance compensation correction, in percent.
|
||||||
|
quantity: '?'
|
||||||
|
attributes:
|
||||||
|
- name: unit
|
||||||
|
dtype: text
|
||||||
|
value: percent
|
||||||
|
doc: Unit of measurement for resistance_comp_correction, which is fixed to 'percent'.
|
||||||
|
- name: resistance_comp_prediction
|
||||||
|
dtype: float32
|
||||||
|
doc: Resistance compensation prediction, in percent.
|
||||||
|
quantity: '?'
|
||||||
|
attributes:
|
||||||
|
- name: unit
|
||||||
|
dtype: text
|
||||||
|
value: percent
|
||||||
|
doc: Unit of measurement for resistance_comp_prediction, which is fixed to 'percent'.
|
||||||
|
- name: whole_cell_capacitance_comp
|
||||||
|
dtype: float32
|
||||||
|
doc: Whole cell capacitance compensation, in farads.
|
||||||
|
quantity: '?'
|
||||||
|
attributes:
|
||||||
|
- name: unit
|
||||||
|
dtype: text
|
||||||
|
value: farads
|
||||||
|
doc: Unit of measurement for whole_cell_capacitance_comp, which is fixed to 'farads'.
|
||||||
|
- name: whole_cell_series_resistance_comp
|
||||||
|
dtype: float32
|
||||||
|
doc: Whole cell series resistance compensation, in ohms.
|
||||||
|
quantity: '?'
|
||||||
|
attributes:
|
||||||
|
- name: unit
|
||||||
|
dtype: text
|
||||||
|
value: ohms
|
||||||
|
doc: Unit of measurement for whole_cell_series_resistance_comp, which is fixed to 'ohms'.
|
||||||
|
|
||||||
|
- neurodata_type_def: VoltageClampStimulusSeries
|
||||||
|
neurodata_type_inc: PatchClampSeries
|
||||||
|
doc: Stimulus voltage applied during a voltage clamp recording.
|
||||||
|
datasets:
|
||||||
|
- name: data
|
||||||
|
doc: Stimulus voltage applied.
|
||||||
|
attributes:
|
||||||
|
- name: unit
|
||||||
|
dtype: text
|
||||||
|
value: volts
|
||||||
|
doc: Base unit of measurement for working with the data. which is fixed to 'volts'.
|
||||||
|
Actual stored values are not necessarily stored in these units. To access the data in these units,
|
||||||
|
multiply 'data' by 'conversion' and add 'offset'.
|
||||||
|
|
||||||
|
- neurodata_type_def: IntracellularElectrode
|
||||||
|
neurodata_type_inc: NWBContainer
|
||||||
|
doc: An intracellular electrode and its metadata.
|
||||||
|
datasets:
|
||||||
|
- name: cell_id
|
||||||
|
dtype: text
|
||||||
|
doc: unique ID of the cell
|
||||||
|
quantity: '?'
|
||||||
|
- name: description
|
||||||
|
dtype: text
|
||||||
|
doc: Description of electrode (e.g., whole-cell, sharp, etc.).
|
||||||
|
- name: filtering
|
||||||
|
dtype: text
|
||||||
|
doc: Electrode specific filtering.
|
||||||
|
quantity: '?'
|
||||||
|
- name: initial_access_resistance
|
||||||
|
dtype: text
|
||||||
|
doc: Initial access resistance.
|
||||||
|
quantity: '?'
|
||||||
|
- name: location
|
||||||
|
dtype: text
|
||||||
|
doc: Location of the electrode. Specify the area, layer, comments on estimation
|
||||||
|
of area/layer, stereotaxic coordinates if in vivo, etc. Use standard atlas
|
||||||
|
names for anatomical regions when possible.
|
||||||
|
quantity: '?'
|
||||||
|
- name: resistance
|
||||||
|
dtype: text
|
||||||
|
doc: Electrode resistance, in ohms.
|
||||||
|
quantity: '?'
|
||||||
|
- name: seal
|
||||||
|
dtype: text
|
||||||
|
doc: Information about seal used for recording.
|
||||||
|
quantity: '?'
|
||||||
|
- name: slice
|
||||||
|
dtype: text
|
||||||
|
doc: Information about slice used for recording.
|
||||||
|
quantity: '?'
|
||||||
|
links:
|
||||||
|
- name: device
|
||||||
|
target_type: Device
|
||||||
|
doc: Device that was used to record from this electrode.
|
||||||
|
|
||||||
|
- neurodata_type_def: SweepTable
|
||||||
|
neurodata_type_inc: DynamicTable
|
||||||
|
doc: '[DEPRECATED] Table used to group different PatchClampSeries. SweepTable
|
||||||
|
is being replaced by IntracellularRecordingsTable and SimultaneousRecordingsTable
|
||||||
|
tables. Additional SequentialRecordingsTable, RepetitionsTable, and
|
||||||
|
ExperimentalConditions tables provide enhanced support for experiment metadata.'
|
||||||
|
datasets:
|
||||||
|
- name: sweep_number
|
||||||
|
neurodata_type_inc: VectorData
|
||||||
|
dtype: uint32
|
||||||
|
doc: Sweep number of the PatchClampSeries in that row.
|
||||||
|
- name: series
|
||||||
|
neurodata_type_inc: VectorData
|
||||||
|
dtype:
|
||||||
|
target_type: PatchClampSeries
|
||||||
|
reftype: object
|
||||||
|
doc: The PatchClampSeries with the sweep number in that row.
|
||||||
|
- name: series_index
|
||||||
|
neurodata_type_inc: VectorIndex
|
||||||
|
doc: Index for series.
|
||||||
|
|
||||||
|
- neurodata_type_def: IntracellularElectrodesTable
|
||||||
|
neurodata_type_inc: DynamicTable
|
||||||
|
doc: Table for storing intracellular electrode related metadata.
|
||||||
|
attributes:
|
||||||
|
- name: description
|
||||||
|
dtype: text
|
||||||
|
value: Table for storing intracellular electrode related metadata.
|
||||||
|
doc: Description of what is in this dynamic table.
|
||||||
|
datasets:
|
||||||
|
- name: electrode
|
||||||
|
neurodata_type_inc: VectorData
|
||||||
|
dtype:
|
||||||
|
target_type: IntracellularElectrode
|
||||||
|
reftype: object
|
||||||
|
doc: Column for storing the reference to the intracellular electrode.
|
||||||
|
|
||||||
|
- neurodata_type_def: IntracellularStimuliTable
|
||||||
|
neurodata_type_inc: DynamicTable
|
||||||
|
doc: Table for storing intracellular stimulus related metadata.
|
||||||
|
attributes:
|
||||||
|
- name: description
|
||||||
|
dtype: text
|
||||||
|
value: Table for storing intracellular stimulus related metadata.
|
||||||
|
doc: Description of what is in this dynamic table.
|
||||||
|
datasets:
|
||||||
|
- name: stimulus
|
||||||
|
neurodata_type_inc: TimeSeriesReferenceVectorData
|
||||||
|
doc: Column storing the reference to the recorded stimulus for the recording (rows).
|
||||||
|
|
||||||
|
- neurodata_type_def: IntracellularResponsesTable
|
||||||
|
neurodata_type_inc: DynamicTable
|
||||||
|
doc: Table for storing intracellular response related metadata.
|
||||||
|
attributes:
|
||||||
|
- name: description
|
||||||
|
dtype: text
|
||||||
|
value: Table for storing intracellular response related metadata.
|
||||||
|
doc: Description of what is in this dynamic table.
|
||||||
|
datasets:
|
||||||
|
- name: response
|
||||||
|
neurodata_type_inc: TimeSeriesReferenceVectorData
|
||||||
|
doc: Column storing the reference to the recorded response for the recording (rows)
|
||||||
|
|
||||||
|
- neurodata_type_def: IntracellularRecordingsTable
|
||||||
|
neurodata_type_inc: AlignedDynamicTable
|
||||||
|
name: intracellular_recordings
|
||||||
|
doc: A table to group together a stimulus and response from a single electrode and
|
||||||
|
a single simultaneous recording. Each row in the table represents a single recording
|
||||||
|
consisting typically of a stimulus and a corresponding response. In some cases,
|
||||||
|
however, only a stimulus or a response is recorded as part of an experiment.
|
||||||
|
In this case, both the stimulus and response will point to the same TimeSeries
|
||||||
|
while the idx_start and count of the invalid column will be set to -1, thus, indicating
|
||||||
|
that no values have been recorded for the stimulus or response, respectively.
|
||||||
|
Note, a recording MUST contain at least a stimulus or a response. Typically the
|
||||||
|
stimulus and response are PatchClampSeries. However, the use of AD/DA channels
|
||||||
|
that are not associated to an electrode is also common in intracellular electrophysiology,
|
||||||
|
in which case other TimeSeries may be used.
|
||||||
|
attributes:
|
||||||
|
- name: description
|
||||||
|
dtype: text
|
||||||
|
value: A table to group together a stimulus and response from a single electrode
|
||||||
|
and a single simultaneous recording and for storing metadata about the intracellular
|
||||||
|
recording.
|
||||||
|
doc: Description of the contents of this table. Inherited from AlignedDynamicTable
|
||||||
|
and overwritten here to fix the value of the attribute.
|
||||||
|
groups:
|
||||||
|
- name: electrodes
|
||||||
|
neurodata_type_inc: IntracellularElectrodesTable
|
||||||
|
doc: Table for storing intracellular electrode related metadata.
|
||||||
|
- name: stimuli
|
||||||
|
neurodata_type_inc: IntracellularStimuliTable
|
||||||
|
doc: Table for storing intracellular stimulus related metadata.
|
||||||
|
- name: responses
|
||||||
|
neurodata_type_inc: IntracellularResponsesTable
|
||||||
|
doc: Table for storing intracellular response related metadata.
|
||||||
|
|
||||||
|
- neurodata_type_def: SimultaneousRecordingsTable
|
||||||
|
neurodata_type_inc: DynamicTable
|
||||||
|
name: simultaneous_recordings
|
||||||
|
doc: A table for grouping different intracellular recordings from the IntracellularRecordingsTable
|
||||||
|
table together that were recorded simultaneously from different electrodes.
|
||||||
|
datasets:
|
||||||
|
- name: recordings
|
||||||
|
neurodata_type_inc: DynamicTableRegion
|
||||||
|
doc: A reference to one or more rows in the IntracellularRecordingsTable table.
|
||||||
|
attributes:
|
||||||
|
- name: table
|
||||||
|
dtype:
|
||||||
|
target_type: IntracellularRecordingsTable
|
||||||
|
reftype: object
|
||||||
|
doc: Reference to the IntracellularRecordingsTable table that this table region
|
||||||
|
applies to. This specializes the attribute inherited from DynamicTableRegion
|
||||||
|
to fix the type of table that can be referenced here.
|
||||||
|
- name: recordings_index
|
||||||
|
neurodata_type_inc: VectorIndex
|
||||||
|
doc: Index dataset for the recordings column.
|
||||||
|
|
||||||
|
- neurodata_type_def: SequentialRecordingsTable
|
||||||
|
neurodata_type_inc: DynamicTable
|
||||||
|
name: sequential_recordings
|
||||||
|
doc: A table for grouping different sequential recordings from the SimultaneousRecordingsTable
|
||||||
|
table together. This is typically used to group together sequential recordings
|
||||||
|
where a sequence of stimuli of the same type with varying parameters have
|
||||||
|
been presented in a sequence.
|
||||||
|
datasets:
|
||||||
|
- name: simultaneous_recordings
|
||||||
|
neurodata_type_inc: DynamicTableRegion
|
||||||
|
doc: A reference to one or more rows in the SimultaneousRecordingsTable table.
|
||||||
|
attributes:
|
||||||
|
- name: table
|
||||||
|
dtype:
|
||||||
|
target_type: SimultaneousRecordingsTable
|
||||||
|
reftype: object
|
||||||
|
doc: Reference to the SimultaneousRecordingsTable table that this table region
|
||||||
|
applies to. This specializes the attribute inherited from DynamicTableRegion
|
||||||
|
to fix the type of table that can be referenced here.
|
||||||
|
- name: simultaneous_recordings_index
|
||||||
|
neurodata_type_inc: VectorIndex
|
||||||
|
doc: Index dataset for the simultaneous_recordings column.
|
||||||
|
- name: stimulus_type
|
||||||
|
neurodata_type_inc: VectorData
|
||||||
|
dtype: text
|
||||||
|
doc: The type of stimulus used for the sequential recording.
|
||||||
|
|
||||||
|
- neurodata_type_def: RepetitionsTable
|
||||||
|
neurodata_type_inc: DynamicTable
|
||||||
|
name: repetitions
|
||||||
|
doc: A table for grouping different sequential intracellular recordings together.
|
||||||
|
With each SequentialRecording typically representing a particular type of stimulus,
|
||||||
|
the RepetitionsTable table is typically used to group sets of stimuli applied
|
||||||
|
in sequence.
|
||||||
|
datasets:
|
||||||
|
- name: sequential_recordings
|
||||||
|
neurodata_type_inc: DynamicTableRegion
|
||||||
|
doc: A reference to one or more rows in the SequentialRecordingsTable table.
|
||||||
|
attributes:
|
||||||
|
- name: table
|
||||||
|
dtype:
|
||||||
|
target_type: SequentialRecordingsTable
|
||||||
|
reftype: object
|
||||||
|
doc: Reference to the SequentialRecordingsTable table that this table region
|
||||||
|
applies to. This specializes the attribute inherited from DynamicTableRegion
|
||||||
|
to fix the type of table that can be referenced here.
|
||||||
|
- name: sequential_recordings_index
|
||||||
|
neurodata_type_inc: VectorIndex
|
||||||
|
doc: Index dataset for the sequential_recordings column.
|
||||||
|
|
||||||
|
- neurodata_type_def: ExperimentalConditionsTable
|
||||||
|
neurodata_type_inc: DynamicTable
|
||||||
|
name: experimental_conditions
|
||||||
|
doc: A table for grouping different intracellular recording repetitions together
|
||||||
|
that belong to the same experimental condition.
|
||||||
|
datasets:
|
||||||
|
- name: repetitions
|
||||||
|
neurodata_type_inc: DynamicTableRegion
|
||||||
|
doc: A reference to one or more rows in the RepetitionsTable table.
|
||||||
|
attributes:
|
||||||
|
- name: table
|
||||||
|
dtype:
|
||||||
|
target_type: RepetitionsTable
|
||||||
|
reftype: object
|
||||||
|
doc: Reference to the RepetitionsTable table that this table region applies
|
||||||
|
to. This specializes the attribute inherited from DynamicTableRegion to fix
|
||||||
|
the type of table that can be referenced here.
|
||||||
|
- name: repetitions_index
|
||||||
|
neurodata_type_inc: VectorIndex
|
||||||
|
doc: Index dataset for the repetitions column.
|
222
nwb-schema-linkml/src/data/tests/nwb.image.yaml
Normal file
222
nwb-schema-linkml/src/data/tests/nwb.image.yaml
Normal file
|
@ -0,0 +1,222 @@
|
||||||
|
datasets:
|
||||||
|
- neurodata_type_def: GrayscaleImage
|
||||||
|
neurodata_type_inc: Image
|
||||||
|
dims:
|
||||||
|
- x
|
||||||
|
- y
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
- null
|
||||||
|
doc: A grayscale image.
|
||||||
|
dtype: numeric
|
||||||
|
|
||||||
|
- neurodata_type_def: RGBImage
|
||||||
|
neurodata_type_inc: Image
|
||||||
|
dims:
|
||||||
|
- x
|
||||||
|
- y
|
||||||
|
- r, g, b
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
- null
|
||||||
|
- 3
|
||||||
|
doc: A color image.
|
||||||
|
dtype: numeric
|
||||||
|
|
||||||
|
- neurodata_type_def: RGBAImage
|
||||||
|
neurodata_type_inc: Image
|
||||||
|
dims:
|
||||||
|
- x
|
||||||
|
- y
|
||||||
|
- r, g, b, a
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
- null
|
||||||
|
- 4
|
||||||
|
doc: A color image with transparency.
|
||||||
|
dtype: numeric
|
||||||
|
|
||||||
|
groups:
|
||||||
|
- neurodata_type_def: ImageSeries
|
||||||
|
neurodata_type_inc: TimeSeries
|
||||||
|
doc: General image data that is common between acquisition and stimulus time series.
|
||||||
|
Sometimes the image data is stored in the file in a raw format while other
|
||||||
|
times it will be stored as a series of external image files in the host file system.
|
||||||
|
The data field will either be binary data, if the data is stored in the NWB file, or
|
||||||
|
empty, if the data is stored in an external image stack. [frame][x][y] or [frame][x][y][z].
|
||||||
|
datasets:
|
||||||
|
- name: data
|
||||||
|
dtype: numeric
|
||||||
|
dims:
|
||||||
|
- - frame
|
||||||
|
- x
|
||||||
|
- y
|
||||||
|
- - frame
|
||||||
|
- x
|
||||||
|
- y
|
||||||
|
- z
|
||||||
|
shape:
|
||||||
|
- - null
|
||||||
|
- null
|
||||||
|
- null
|
||||||
|
- - null
|
||||||
|
- null
|
||||||
|
- null
|
||||||
|
- null
|
||||||
|
doc: Binary data representing images across frames. If data are stored in an external
|
||||||
|
file, this should be an empty 3D array.
|
||||||
|
- name: dimension
|
||||||
|
dtype: int32
|
||||||
|
dims:
|
||||||
|
- rank
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
doc: Number of pixels on x, y, (and z) axes.
|
||||||
|
quantity: '?'
|
||||||
|
- name: external_file
|
||||||
|
dtype: text
|
||||||
|
dims:
|
||||||
|
- num_files
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
doc: Paths to one or more external file(s). The field is only present if format='external'.
|
||||||
|
This is only relevant if the image series is stored in the file system as one
|
||||||
|
or more image file(s). This field should NOT be used if the image is stored
|
||||||
|
in another NWB file and that file is linked to this file.
|
||||||
|
quantity: '?'
|
||||||
|
attributes:
|
||||||
|
- name: starting_frame
|
||||||
|
dtype: int32
|
||||||
|
dims:
|
||||||
|
- num_files
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
doc: Each external image may contain one or more consecutive frames of the full
|
||||||
|
ImageSeries. This attribute serves as an index to indicate which frames each file
|
||||||
|
contains, to facilitate random access. The 'starting_frame' attribute, hence,
|
||||||
|
contains a list of frame numbers within the full ImageSeries of the first frame
|
||||||
|
of each file listed in the parent 'external_file' dataset. Zero-based indexing is
|
||||||
|
used (hence, the first element will always be zero). For example, if the
|
||||||
|
'external_file' dataset has three paths to files and the first file has 5 frames,
|
||||||
|
the second file has 10 frames, and the third file has 20 frames, then this
|
||||||
|
attribute will have values [0, 5, 15]. If there is a single external file that
|
||||||
|
holds all of the frames of the ImageSeries (and so there is a single element in
|
||||||
|
the 'external_file' dataset), then this attribute should have value [0].
|
||||||
|
- name: format
|
||||||
|
dtype: text
|
||||||
|
default_value: raw
|
||||||
|
doc: Format of image. If this is 'external', then the attribute 'external_file'
|
||||||
|
contains the path information to the image files. If this is 'raw', then the raw
|
||||||
|
(single-channel) binary data is stored in the 'data' dataset. If this attribute
|
||||||
|
is not present, then the default format='raw' case is assumed.
|
||||||
|
quantity: '?'
|
||||||
|
links:
|
||||||
|
- name: device
|
||||||
|
target_type: Device
|
||||||
|
doc: Link to the Device object that was used to capture these images.
|
||||||
|
quantity: '?'
|
||||||
|
|
||||||
|
- neurodata_type_def: ImageMaskSeries
|
||||||
|
neurodata_type_inc: ImageSeries
|
||||||
|
doc: An alpha mask that is applied to a presented visual stimulus. The 'data' array
|
||||||
|
contains an array of mask values that are applied to the displayed image. Mask
|
||||||
|
values are stored as RGBA. Mask can vary with time. The timestamps array indicates
|
||||||
|
the starting time of a mask, and that mask pattern continues until it's explicitly
|
||||||
|
changed.
|
||||||
|
links:
|
||||||
|
- name: masked_imageseries
|
||||||
|
target_type: ImageSeries
|
||||||
|
doc: Link to ImageSeries object that this image mask is applied to.
|
||||||
|
|
||||||
|
- neurodata_type_def: OpticalSeries
|
||||||
|
neurodata_type_inc: ImageSeries
|
||||||
|
doc: Image data that is presented or recorded. A stimulus template movie will be
|
||||||
|
stored only as an image. When the image is presented as stimulus, additional data
|
||||||
|
is required, such as field of view (e.g., how much of the visual field the image
|
||||||
|
covers, or how what is the area of the target being imaged). If the OpticalSeries
|
||||||
|
represents acquired imaging data, orientation is also important.
|
||||||
|
datasets:
|
||||||
|
- name: distance
|
||||||
|
dtype: float32
|
||||||
|
doc: Distance from camera/monitor to target/eye.
|
||||||
|
quantity: '?'
|
||||||
|
- name: field_of_view
|
||||||
|
dtype: float32
|
||||||
|
dims:
|
||||||
|
- - width, height
|
||||||
|
- - width, height, depth
|
||||||
|
shape:
|
||||||
|
- - 2
|
||||||
|
- - 3
|
||||||
|
doc: Width, height and depth of image, or imaged area, in meters.
|
||||||
|
quantity: '?'
|
||||||
|
- name: data
|
||||||
|
dtype: numeric
|
||||||
|
dims:
|
||||||
|
- - frame
|
||||||
|
- x
|
||||||
|
- y
|
||||||
|
- - frame
|
||||||
|
- x
|
||||||
|
- y
|
||||||
|
- r, g, b
|
||||||
|
shape:
|
||||||
|
- - null
|
||||||
|
- null
|
||||||
|
- null
|
||||||
|
- - null
|
||||||
|
- null
|
||||||
|
- null
|
||||||
|
- 3
|
||||||
|
doc: Images presented to subject, either grayscale or RGB
|
||||||
|
- name: orientation
|
||||||
|
dtype: text
|
||||||
|
doc: Description of image relative to some reference frame (e.g., which way is
|
||||||
|
up). Must also specify frame of reference.
|
||||||
|
quantity: '?'
|
||||||
|
|
||||||
|
- neurodata_type_def: IndexSeries
|
||||||
|
neurodata_type_inc: TimeSeries
|
||||||
|
doc: Stores indices to image frames stored in an ImageSeries. The purpose of the
|
||||||
|
IndexSeries is to allow a static image stack to be stored in an Images
|
||||||
|
object, and the images in the stack to be referenced out-of-order. This can be for
|
||||||
|
the display of individual images, or of movie segments (as a movie is simply a
|
||||||
|
series of images). The data field stores the index of the frame in the referenced
|
||||||
|
Images object, and the timestamps array indicates when that image
|
||||||
|
was displayed.
|
||||||
|
datasets:
|
||||||
|
- name: data
|
||||||
|
dtype: uint32
|
||||||
|
dims:
|
||||||
|
- num_times
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
doc: Index of the image (using zero-indexing) in the linked Images object.
|
||||||
|
attributes:
|
||||||
|
- name: conversion
|
||||||
|
dtype: float32
|
||||||
|
doc: This field is unused by IndexSeries.
|
||||||
|
required: false
|
||||||
|
- name: resolution
|
||||||
|
dtype: float32
|
||||||
|
doc: This field is unused by IndexSeries.
|
||||||
|
required: false
|
||||||
|
- name: offset
|
||||||
|
dtype: float32
|
||||||
|
doc: This field is unused by IndexSeries.
|
||||||
|
required: false
|
||||||
|
- name: unit
|
||||||
|
dtype: text
|
||||||
|
value: N/A
|
||||||
|
doc: This field is unused by IndexSeries and has the value N/A.
|
||||||
|
links:
|
||||||
|
- name: indexed_timeseries
|
||||||
|
target_type: ImageSeries
|
||||||
|
doc: Link to ImageSeries object containing images that are indexed. Use of this link
|
||||||
|
is discouraged and will be deprecated. Link to an Images type instead.
|
||||||
|
quantity: '?'
|
||||||
|
- name: indexed_images
|
||||||
|
target_type: Images
|
||||||
|
doc: Link to Images object containing an ordered set of images that are indexed. The Images object
|
||||||
|
must contain a 'ordered_images' dataset specifying the order of the images in the Images type.
|
||||||
|
quantity: '?'
|
329
nwb-schema-linkml/src/data/tests/nwb.misc.yaml
Normal file
329
nwb-schema-linkml/src/data/tests/nwb.misc.yaml
Normal file
|
@ -0,0 +1,329 @@
|
||||||
|
groups:
|
||||||
|
- neurodata_type_def: AbstractFeatureSeries
|
||||||
|
neurodata_type_inc: TimeSeries
|
||||||
|
doc: Abstract features, such as quantitative descriptions of sensory stimuli. The
|
||||||
|
TimeSeries::data field is a 2D array, storing those features (e.g., for visual
|
||||||
|
grating stimulus this might be orientation, spatial frequency and contrast). Null
|
||||||
|
stimuli (eg, uniform gray) can be marked as being an independent feature (eg,
|
||||||
|
1.0 for gray, 0.0 for actual stimulus) or by storing NaNs for feature values,
|
||||||
|
or through use of the TimeSeries::control fields. A set of features is considered
|
||||||
|
to persist until the next set of features is defined. The final set of features
|
||||||
|
stored should be the null set. This is useful when storing the raw stimulus
|
||||||
|
is impractical.
|
||||||
|
datasets:
|
||||||
|
- name: data
|
||||||
|
dtype: numeric
|
||||||
|
dims:
|
||||||
|
- - num_times
|
||||||
|
- - num_times
|
||||||
|
- num_features
|
||||||
|
shape:
|
||||||
|
- - null
|
||||||
|
- - null
|
||||||
|
- null
|
||||||
|
doc: Values of each feature at each time.
|
||||||
|
attributes:
|
||||||
|
- name: unit
|
||||||
|
dtype: text
|
||||||
|
default_value: see 'feature_units'
|
||||||
|
doc: Since there can be different units for different features, store the units
|
||||||
|
in 'feature_units'. The default value for this attribute is "see 'feature_units'".
|
||||||
|
required: false
|
||||||
|
- name: feature_units
|
||||||
|
dtype: text
|
||||||
|
dims:
|
||||||
|
- num_features
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
doc: Units of each feature.
|
||||||
|
quantity: '?'
|
||||||
|
- name: features
|
||||||
|
dtype: text
|
||||||
|
dims:
|
||||||
|
- num_features
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
doc: Description of the features represented in TimeSeries::data.
|
||||||
|
|
||||||
|
- neurodata_type_def: AnnotationSeries
|
||||||
|
neurodata_type_inc: TimeSeries
|
||||||
|
doc: Stores user annotations made during an experiment. The data[]
|
||||||
|
field stores a text array, and timestamps are stored for each annotation (ie,
|
||||||
|
interval=1). This is largely an alias to a standard TimeSeries storing a text
|
||||||
|
array but that is identifiable as storing annotations in a machine-readable way.
|
||||||
|
datasets:
|
||||||
|
- name: data
|
||||||
|
dtype: text
|
||||||
|
dims:
|
||||||
|
- num_times
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
doc: Annotations made during an experiment.
|
||||||
|
attributes:
|
||||||
|
- name: resolution
|
||||||
|
dtype: float32
|
||||||
|
value: -1.0
|
||||||
|
doc: Smallest meaningful difference between values in data. Annotations have
|
||||||
|
no units, so the value is fixed to -1.0.
|
||||||
|
- name: unit
|
||||||
|
dtype: text
|
||||||
|
value: n/a
|
||||||
|
doc: Base unit of measurement for working with the data. Annotations have
|
||||||
|
no units, so the value is fixed to 'n/a'.
|
||||||
|
|
||||||
|
- neurodata_type_def: IntervalSeries
|
||||||
|
neurodata_type_inc: TimeSeries
|
||||||
|
doc: Stores intervals of data. The timestamps field stores the beginning and end
|
||||||
|
of intervals. The data field stores whether the interval just started (>0 value)
|
||||||
|
or ended (<0 value). Different interval types can be represented in the same series
|
||||||
|
by using multiple key values (eg, 1 for feature A, 2 for feature B, 3 for feature
|
||||||
|
C, etc). The field data stores an 8-bit integer. This is largely an alias of a
|
||||||
|
standard TimeSeries but that is identifiable as representing time intervals in
|
||||||
|
a machine-readable way.
|
||||||
|
datasets:
|
||||||
|
- name: data
|
||||||
|
dtype: int8
|
||||||
|
dims:
|
||||||
|
- num_times
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
doc: Use values >0 if interval started, <0 if interval ended.
|
||||||
|
attributes:
|
||||||
|
- name: resolution
|
||||||
|
dtype: float32
|
||||||
|
value: -1.0
|
||||||
|
doc: Smallest meaningful difference between values in data. Annotations have
|
||||||
|
no units, so the value is fixed to -1.0.
|
||||||
|
- name: unit
|
||||||
|
dtype: text
|
||||||
|
value: n/a
|
||||||
|
doc: Base unit of measurement for working with the data. Annotations have
|
||||||
|
no units, so the value is fixed to 'n/a'.
|
||||||
|
|
||||||
|
- neurodata_type_def: DecompositionSeries
|
||||||
|
neurodata_type_inc: TimeSeries
|
||||||
|
doc: Spectral analysis of a time series, e.g. of an LFP or a speech signal.
|
||||||
|
datasets:
|
||||||
|
- name: data
|
||||||
|
dtype: numeric
|
||||||
|
dims:
|
||||||
|
- num_times
|
||||||
|
- num_channels
|
||||||
|
- num_bands
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
- null
|
||||||
|
- null
|
||||||
|
doc: Data decomposed into frequency bands.
|
||||||
|
attributes:
|
||||||
|
- name: unit
|
||||||
|
dtype: text
|
||||||
|
default_value: no unit
|
||||||
|
doc: Base unit of measurement for working with the data. Actual stored values are
|
||||||
|
not necessarily stored in these units. To access the data in these units,
|
||||||
|
multiply 'data' by 'conversion'.
|
||||||
|
- name: metric
|
||||||
|
dtype: text
|
||||||
|
doc: The metric used, e.g. phase, amplitude, power.
|
||||||
|
- name: source_channels
|
||||||
|
neurodata_type_inc: DynamicTableRegion
|
||||||
|
doc: DynamicTableRegion pointer to the channels that this decomposition series was generated from.
|
||||||
|
quantity: '?'
|
||||||
|
groups:
|
||||||
|
- name: bands
|
||||||
|
neurodata_type_inc: DynamicTable
|
||||||
|
doc: Table for describing the bands that this series was generated from. There
|
||||||
|
should be one row in this table for each band.
|
||||||
|
datasets:
|
||||||
|
- name: band_name
|
||||||
|
neurodata_type_inc: VectorData
|
||||||
|
dtype: text
|
||||||
|
doc: Name of the band, e.g. theta.
|
||||||
|
- name: band_limits
|
||||||
|
neurodata_type_inc: VectorData
|
||||||
|
dtype: float32
|
||||||
|
dims:
|
||||||
|
- num_bands
|
||||||
|
- low, high
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
- 2
|
||||||
|
doc: Low and high limit of each band in Hz. If it is a Gaussian filter, use
|
||||||
|
2 SD on either side of the center.
|
||||||
|
- name: band_mean
|
||||||
|
neurodata_type_inc: VectorData
|
||||||
|
dtype: float32
|
||||||
|
dims:
|
||||||
|
- num_bands
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
doc: The mean Gaussian filters, in Hz.
|
||||||
|
- name: band_stdev
|
||||||
|
neurodata_type_inc: VectorData
|
||||||
|
dtype: float32
|
||||||
|
dims:
|
||||||
|
- num_bands
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
doc: The standard deviation of Gaussian filters, in Hz.
|
||||||
|
links:
|
||||||
|
- name: source_timeseries
|
||||||
|
target_type: TimeSeries
|
||||||
|
doc: Link to TimeSeries object that this data was calculated from. Metadata about
|
||||||
|
electrodes and their position can be read from that ElectricalSeries so it is
|
||||||
|
not necessary to store that information here.
|
||||||
|
quantity: '?'
|
||||||
|
|
||||||
|
- neurodata_type_def: Units
|
||||||
|
neurodata_type_inc: DynamicTable
|
||||||
|
default_name: Units
|
||||||
|
doc: Data about spiking units. Event times of observed units (e.g. cell, synapse,
|
||||||
|
etc.) should be concatenated and stored in spike_times.
|
||||||
|
datasets:
|
||||||
|
- name: spike_times_index
|
||||||
|
neurodata_type_inc: VectorIndex
|
||||||
|
doc: Index into the spike_times dataset.
|
||||||
|
quantity: '?'
|
||||||
|
- name: spike_times
|
||||||
|
neurodata_type_inc: VectorData
|
||||||
|
dtype: float64
|
||||||
|
doc: Spike times for each unit in seconds.
|
||||||
|
quantity: '?'
|
||||||
|
attributes:
|
||||||
|
- name: resolution
|
||||||
|
dtype: float64
|
||||||
|
doc: The smallest possible difference between two spike times. Usually 1 divided by the acquisition sampling rate
|
||||||
|
from which spike times were extracted, but could be larger if the acquisition time series was downsampled or
|
||||||
|
smaller if the acquisition time series was smoothed/interpolated and it is possible for the spike time to be
|
||||||
|
between samples.
|
||||||
|
required: false
|
||||||
|
- name: obs_intervals_index
|
||||||
|
neurodata_type_inc: VectorIndex
|
||||||
|
doc: Index into the obs_intervals dataset.
|
||||||
|
quantity: '?'
|
||||||
|
- name: obs_intervals
|
||||||
|
neurodata_type_inc: VectorData
|
||||||
|
dtype: float64
|
||||||
|
dims:
|
||||||
|
- num_intervals
|
||||||
|
- start|end
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
- 2
|
||||||
|
doc: Observation intervals for each unit.
|
||||||
|
quantity: '?'
|
||||||
|
- name: electrodes_index
|
||||||
|
neurodata_type_inc: VectorIndex
|
||||||
|
doc: Index into electrodes.
|
||||||
|
quantity: '?'
|
||||||
|
- name: electrodes
|
||||||
|
neurodata_type_inc: DynamicTableRegion
|
||||||
|
doc: Electrode that each spike unit came from, specified using a DynamicTableRegion.
|
||||||
|
quantity: '?'
|
||||||
|
- name: electrode_group
|
||||||
|
neurodata_type_inc: VectorData
|
||||||
|
dtype:
|
||||||
|
target_type: ElectrodeGroup
|
||||||
|
reftype: object
|
||||||
|
doc: Electrode group that each spike unit came from.
|
||||||
|
quantity: '?'
|
||||||
|
- name: waveform_mean
|
||||||
|
neurodata_type_inc: VectorData
|
||||||
|
dtype: float32
|
||||||
|
dims:
|
||||||
|
- - num_units
|
||||||
|
- num_samples
|
||||||
|
- - num_units
|
||||||
|
- num_samples
|
||||||
|
- num_electrodes
|
||||||
|
shape:
|
||||||
|
- - null
|
||||||
|
- null
|
||||||
|
- - null
|
||||||
|
- null
|
||||||
|
- null
|
||||||
|
doc: Spike waveform mean for each spike unit.
|
||||||
|
quantity: '?'
|
||||||
|
attributes:
|
||||||
|
- name: sampling_rate
|
||||||
|
dtype: float32
|
||||||
|
doc: Sampling rate, in hertz.
|
||||||
|
required: false
|
||||||
|
- name: unit
|
||||||
|
dtype: text
|
||||||
|
value: volts
|
||||||
|
doc: Unit of measurement. This value is fixed to 'volts'.
|
||||||
|
required: false
|
||||||
|
- name: waveform_sd
|
||||||
|
neurodata_type_inc: VectorData
|
||||||
|
dtype: float32
|
||||||
|
dims:
|
||||||
|
- - num_units
|
||||||
|
- num_samples
|
||||||
|
- - num_units
|
||||||
|
- num_samples
|
||||||
|
- num_electrodes
|
||||||
|
shape:
|
||||||
|
- - null
|
||||||
|
- null
|
||||||
|
- - null
|
||||||
|
- null
|
||||||
|
- null
|
||||||
|
doc: Spike waveform standard deviation for each spike unit.
|
||||||
|
quantity: '?'
|
||||||
|
attributes:
|
||||||
|
- name: sampling_rate
|
||||||
|
dtype: float32
|
||||||
|
doc: Sampling rate, in hertz.
|
||||||
|
required: false
|
||||||
|
- name: unit
|
||||||
|
dtype: text
|
||||||
|
value: volts
|
||||||
|
doc: Unit of measurement. This value is fixed to 'volts'.
|
||||||
|
required: false
|
||||||
|
- name: waveforms
|
||||||
|
neurodata_type_inc: VectorData
|
||||||
|
dtype: numeric
|
||||||
|
dims:
|
||||||
|
- num_waveforms
|
||||||
|
- num_samples
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
- null
|
||||||
|
doc: "Individual waveforms for each spike on each electrode. This is a doubly indexed column. The 'waveforms_index'
|
||||||
|
column indexes which waveforms in this column belong to the same spike event for a given unit, where each waveform
|
||||||
|
was recorded from a different electrode. The 'waveforms_index_index' column indexes the 'waveforms_index' column
|
||||||
|
to indicate which spike events belong to a given unit. For example, if the
|
||||||
|
'waveforms_index_index' column has values [2, 5, 6], then the first 2 elements of the 'waveforms_index' column
|
||||||
|
correspond to the 2 spike events of the first unit, the next 3 elements of the 'waveforms_index' column correspond
|
||||||
|
to the 3 spike events of the second unit, and the next 1 element of the 'waveforms_index' column corresponds to
|
||||||
|
the 1 spike event of the third unit. If the 'waveforms_index' column has values [3, 6, 8, 10, 12, 13], then
|
||||||
|
the first 3 elements of the 'waveforms' column contain the 3 spike waveforms that were recorded from 3 different
|
||||||
|
electrodes for the first spike time of the first unit. See
|
||||||
|
https://nwb-schema.readthedocs.io/en/stable/format_description.html#doubly-ragged-arrays for a graphical
|
||||||
|
representation of this example. When there is only one electrode for each unit (i.e., each spike time is
|
||||||
|
associated with a single waveform), then the 'waveforms_index' column will have values 1, 2, ..., N, where N is
|
||||||
|
the number of spike events. The number of electrodes for each spike event should be the same within a given unit.
|
||||||
|
The 'electrodes' column should be used to indicate which electrodes are associated with each unit, and the order
|
||||||
|
of the waveforms within a given unit x spike event should be in the same order as the electrodes referenced in
|
||||||
|
the 'electrodes' column of this table. The number of samples for each waveform must be the same."
|
||||||
|
quantity: '?'
|
||||||
|
attributes:
|
||||||
|
- name: sampling_rate
|
||||||
|
dtype: float32
|
||||||
|
doc: Sampling rate, in hertz.
|
||||||
|
required: false
|
||||||
|
- name: unit
|
||||||
|
dtype: text
|
||||||
|
value: volts
|
||||||
|
doc: Unit of measurement. This value is fixed to 'volts'.
|
||||||
|
required: false
|
||||||
|
- name: waveforms_index
|
||||||
|
neurodata_type_inc: VectorIndex
|
||||||
|
doc: Index into the waveforms dataset. One value for every spike event. See 'waveforms' for more detail.
|
||||||
|
quantity: '?'
|
||||||
|
- name: waveforms_index_index
|
||||||
|
neurodata_type_inc: VectorIndex
|
||||||
|
doc: Index into the waveforms_index dataset. One value for every unit (row in the table). See 'waveforms' for more
|
||||||
|
detail.
|
||||||
|
quantity: '?'
|
60
nwb-schema-linkml/src/data/tests/nwb.namespace.yaml
Normal file
60
nwb-schema-linkml/src/data/tests/nwb.namespace.yaml
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
namespaces:
|
||||||
|
- name: core
|
||||||
|
doc: NWB namespace
|
||||||
|
author:
|
||||||
|
- Andrew Tritt
|
||||||
|
- Oliver Ruebel
|
||||||
|
- Ryan Ly
|
||||||
|
- Ben Dichter
|
||||||
|
- Keith Godfrey
|
||||||
|
- Jeff Teeters
|
||||||
|
contact:
|
||||||
|
- ajtritt@lbl.gov
|
||||||
|
- oruebel@lbl.gov
|
||||||
|
- rly@lbl.gov
|
||||||
|
- bdichter@lbl.gov
|
||||||
|
- keithg@alleninstitute.org
|
||||||
|
- jteeters@berkeley.edu
|
||||||
|
full_name: NWB core
|
||||||
|
schema:
|
||||||
|
- namespace: hdmf-common
|
||||||
|
- doc: This source module contains base data types used throughout the NWB data
|
||||||
|
format.
|
||||||
|
source: nwb.base.yaml
|
||||||
|
title: Base data types
|
||||||
|
- doc: This source module contains neurodata_types for device data.
|
||||||
|
source: nwb.device.yaml
|
||||||
|
title: Devices
|
||||||
|
- doc: This source module contains neurodata_types for epoch data.
|
||||||
|
source: nwb.epoch.yaml
|
||||||
|
title: Epochs
|
||||||
|
- doc: This source module contains neurodata_types for image data.
|
||||||
|
source: nwb.image.yaml
|
||||||
|
title: Image data
|
||||||
|
- doc: Main NWB file specification.
|
||||||
|
source: nwb.file.yaml
|
||||||
|
title: NWB file
|
||||||
|
- doc: Miscellaneous types.
|
||||||
|
source: nwb.misc.yaml
|
||||||
|
title: Miscellaneous neurodata_types.
|
||||||
|
- doc: This source module contains neurodata_types for behavior data.
|
||||||
|
source: nwb.behavior.yaml
|
||||||
|
title: Behavior
|
||||||
|
- doc: This source module contains neurodata_types for extracellular electrophysiology
|
||||||
|
data.
|
||||||
|
source: nwb.ecephys.yaml
|
||||||
|
title: Extracellular electrophysiology
|
||||||
|
- doc: This source module contains neurodata_types for intracellular electrophysiology
|
||||||
|
data.
|
||||||
|
source: nwb.icephys.yaml
|
||||||
|
title: Intracellular electrophysiology
|
||||||
|
- doc: This source module contains neurodata_types for opto-genetics data.
|
||||||
|
source: nwb.ogen.yaml
|
||||||
|
title: Optogenetics
|
||||||
|
- doc: This source module contains neurodata_types for optical physiology data.
|
||||||
|
source: nwb.ophys.yaml
|
||||||
|
title: Optical physiology
|
||||||
|
- doc: This source module contains neurodata_type for retinotopy data.
|
||||||
|
source: nwb.retinotopy.yaml
|
||||||
|
title: Retinotopy
|
||||||
|
version: "2.6.0-alpha"
|
42
nwb-schema-linkml/src/data/tests/nwb.ogen.yaml
Normal file
42
nwb-schema-linkml/src/data/tests/nwb.ogen.yaml
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
groups:
|
||||||
|
- neurodata_type_def: OptogeneticSeries
|
||||||
|
neurodata_type_inc: TimeSeries
|
||||||
|
doc: An optogenetic stimulus.
|
||||||
|
datasets:
|
||||||
|
- name: data
|
||||||
|
dtype: numeric
|
||||||
|
dims:
|
||||||
|
- num_times
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
doc: Applied power for optogenetic stimulus, in watts.
|
||||||
|
attributes:
|
||||||
|
- name: unit
|
||||||
|
dtype: text
|
||||||
|
value: watts
|
||||||
|
doc: Unit of measurement for data, which is fixed to 'watts'.
|
||||||
|
links:
|
||||||
|
- name: site
|
||||||
|
target_type: OptogeneticStimulusSite
|
||||||
|
doc: Link to OptogeneticStimulusSite object that describes the site to which this
|
||||||
|
stimulus was applied.
|
||||||
|
|
||||||
|
- neurodata_type_def: OptogeneticStimulusSite
|
||||||
|
neurodata_type_inc: NWBContainer
|
||||||
|
doc: A site of optogenetic stimulation.
|
||||||
|
datasets:
|
||||||
|
- name: description
|
||||||
|
dtype: text
|
||||||
|
doc: Description of stimulation site.
|
||||||
|
- name: excitation_lambda
|
||||||
|
dtype: float32
|
||||||
|
doc: Excitation wavelength, in nm.
|
||||||
|
- name: location
|
||||||
|
dtype: text
|
||||||
|
doc: Location of the stimulation site. Specify the area, layer, comments on estimation
|
||||||
|
of area/layer, stereotaxic coordinates if in vivo, etc. Use standard atlas
|
||||||
|
names for anatomical regions when possible.
|
||||||
|
links:
|
||||||
|
- name: device
|
||||||
|
target_type: Device
|
||||||
|
doc: Device that generated the stimulus.
|
360
nwb-schema-linkml/src/data/tests/nwb.ophys.yaml
Normal file
360
nwb-schema-linkml/src/data/tests/nwb.ophys.yaml
Normal file
|
@ -0,0 +1,360 @@
|
||||||
|
groups:
|
||||||
|
- neurodata_type_def: OnePhotonSeries
|
||||||
|
neurodata_type_inc: ImageSeries
|
||||||
|
doc: Image stack recorded over time from 1-photon microscope.
|
||||||
|
attributes:
|
||||||
|
- name: pmt_gain
|
||||||
|
dtype: float32
|
||||||
|
doc: Photomultiplier gain.
|
||||||
|
required: false
|
||||||
|
- name: scan_line_rate
|
||||||
|
dtype: float32
|
||||||
|
doc: Lines imaged per second. This is also stored in /general/optophysiology but
|
||||||
|
is kept here as it is useful information for analysis, and so good to be stored
|
||||||
|
w/ the actual data.
|
||||||
|
required: false
|
||||||
|
- name: exposure_time
|
||||||
|
dtype: float32
|
||||||
|
doc: Exposure time of the sample; often the inverse of the frequency.
|
||||||
|
required: false
|
||||||
|
- name: binning
|
||||||
|
dtype: uint8
|
||||||
|
doc: Amount of pixels combined into 'bins'; could be 1, 2, 4, 8, etc.
|
||||||
|
required: false
|
||||||
|
- name: power
|
||||||
|
dtype: float32
|
||||||
|
doc: Power of the excitation in mW, if known.
|
||||||
|
required: false
|
||||||
|
- name: intensity
|
||||||
|
dtype: float32
|
||||||
|
doc: Intensity of the excitation in mW/mm^2, if known.
|
||||||
|
required: false
|
||||||
|
links:
|
||||||
|
- name: imaging_plane
|
||||||
|
target_type: ImagingPlane
|
||||||
|
doc: Link to ImagingPlane object from which this TimeSeries data was generated.
|
||||||
|
|
||||||
|
- neurodata_type_def: TwoPhotonSeries
|
||||||
|
neurodata_type_inc: ImageSeries
|
||||||
|
doc: Image stack recorded over time from 2-photon microscope.
|
||||||
|
attributes:
|
||||||
|
- name: pmt_gain
|
||||||
|
dtype: float32
|
||||||
|
doc: Photomultiplier gain.
|
||||||
|
required: false
|
||||||
|
- name: scan_line_rate
|
||||||
|
dtype: float32
|
||||||
|
doc: Lines imaged per second. This is also stored in /general/optophysiology but
|
||||||
|
is kept here as it is useful information for analysis, and so good to be stored
|
||||||
|
w/ the actual data.
|
||||||
|
required: false
|
||||||
|
datasets:
|
||||||
|
- name: field_of_view
|
||||||
|
dtype: float32
|
||||||
|
dims:
|
||||||
|
- - width|height
|
||||||
|
- - width|height|depth
|
||||||
|
shape:
|
||||||
|
- - 2
|
||||||
|
- - 3
|
||||||
|
doc: Width, height and depth of image, or imaged area, in meters.
|
||||||
|
quantity: '?'
|
||||||
|
links:
|
||||||
|
- name: imaging_plane
|
||||||
|
target_type: ImagingPlane
|
||||||
|
doc: Link to ImagingPlane object from which this TimeSeries data was generated.
|
||||||
|
|
||||||
|
- neurodata_type_def: RoiResponseSeries
|
||||||
|
neurodata_type_inc: TimeSeries
|
||||||
|
doc: ROI responses over an imaging plane. The first dimension represents time.
|
||||||
|
The second dimension, if present, represents ROIs.
|
||||||
|
datasets:
|
||||||
|
- name: data
|
||||||
|
dtype: numeric
|
||||||
|
dims:
|
||||||
|
- - num_times
|
||||||
|
- - num_times
|
||||||
|
- num_ROIs
|
||||||
|
shape:
|
||||||
|
- - null
|
||||||
|
- - null
|
||||||
|
- null
|
||||||
|
doc: Signals from ROIs.
|
||||||
|
- name: rois
|
||||||
|
neurodata_type_inc: DynamicTableRegion
|
||||||
|
doc: DynamicTableRegion referencing into an ROITable containing information on the ROIs
|
||||||
|
stored in this timeseries.
|
||||||
|
|
||||||
|
- neurodata_type_def: DfOverF
|
||||||
|
neurodata_type_inc: NWBDataInterface
|
||||||
|
default_name: DfOverF
|
||||||
|
doc: dF/F information about a region of interest (ROI). Storage hierarchy of dF/F
|
||||||
|
should be the same as for segmentation (i.e., same names for ROIs and for image
|
||||||
|
planes).
|
||||||
|
groups:
|
||||||
|
- neurodata_type_inc: RoiResponseSeries
|
||||||
|
doc: RoiResponseSeries object(s) containing dF/F for a ROI.
|
||||||
|
quantity: '+'
|
||||||
|
|
||||||
|
- neurodata_type_def: Fluorescence
|
||||||
|
neurodata_type_inc: NWBDataInterface
|
||||||
|
default_name: Fluorescence
|
||||||
|
doc: Fluorescence information about a region of interest (ROI). Storage hierarchy
|
||||||
|
of fluorescence should be the same as for segmentation (ie, same names for ROIs
|
||||||
|
and for image planes).
|
||||||
|
groups:
|
||||||
|
- neurodata_type_inc: RoiResponseSeries
|
||||||
|
doc: RoiResponseSeries object(s) containing fluorescence data for a ROI.
|
||||||
|
quantity: '+'
|
||||||
|
|
||||||
|
- neurodata_type_def: ImageSegmentation
|
||||||
|
neurodata_type_inc: NWBDataInterface
|
||||||
|
default_name: ImageSegmentation
|
||||||
|
doc: Stores pixels in an image that represent different regions of interest (ROIs)
|
||||||
|
or masks. All segmentation for a given imaging plane is stored together, with
|
||||||
|
storage for multiple imaging planes (masks) supported. Each ROI is stored in its
|
||||||
|
own subgroup, with the ROI group containing both a 2D mask and a list of pixels
|
||||||
|
that make up this mask. Segments can also be used for masking neuropil. If segmentation
|
||||||
|
is allowed to change with time, a new imaging plane (or module) is required and
|
||||||
|
ROI names should remain consistent between them.
|
||||||
|
groups:
|
||||||
|
- neurodata_type_inc: PlaneSegmentation
|
||||||
|
doc: Results from image segmentation of a specific imaging plane.
|
||||||
|
quantity: '+'
|
||||||
|
|
||||||
|
- neurodata_type_def: PlaneSegmentation
|
||||||
|
neurodata_type_inc: DynamicTable
|
||||||
|
doc: Results from image segmentation of a specific imaging plane.
|
||||||
|
datasets:
|
||||||
|
- name: image_mask
|
||||||
|
neurodata_type_inc: VectorData
|
||||||
|
dims:
|
||||||
|
- - num_roi
|
||||||
|
- num_x
|
||||||
|
- num_y
|
||||||
|
- - num_roi
|
||||||
|
- num_x
|
||||||
|
- num_y
|
||||||
|
- num_z
|
||||||
|
shape:
|
||||||
|
- - null
|
||||||
|
- null
|
||||||
|
- null
|
||||||
|
- - null
|
||||||
|
- null
|
||||||
|
- null
|
||||||
|
- null
|
||||||
|
doc: ROI masks for each ROI. Each image mask is the size of the original imaging
|
||||||
|
plane (or volume) and members of the ROI are finite non-zero.
|
||||||
|
quantity: '?'
|
||||||
|
- name: pixel_mask_index
|
||||||
|
neurodata_type_inc: VectorIndex
|
||||||
|
doc: Index into pixel_mask.
|
||||||
|
quantity: '?'
|
||||||
|
- name: pixel_mask
|
||||||
|
neurodata_type_inc: VectorData
|
||||||
|
dtype:
|
||||||
|
- name: x
|
||||||
|
dtype: uint32
|
||||||
|
doc: Pixel x-coordinate.
|
||||||
|
- name: y
|
||||||
|
dtype: uint32
|
||||||
|
doc: Pixel y-coordinate.
|
||||||
|
- name: weight
|
||||||
|
dtype: float32
|
||||||
|
doc: Weight of the pixel.
|
||||||
|
doc: 'Pixel masks for each ROI: a list of indices and weights for the ROI. Pixel
|
||||||
|
masks are concatenated and parsing of this dataset is maintained by the PlaneSegmentation'
|
||||||
|
quantity: '?'
|
||||||
|
- name: voxel_mask_index
|
||||||
|
neurodata_type_inc: VectorIndex
|
||||||
|
doc: Index into voxel_mask.
|
||||||
|
quantity: '?'
|
||||||
|
- name: voxel_mask
|
||||||
|
neurodata_type_inc: VectorData
|
||||||
|
dtype:
|
||||||
|
- name: x
|
||||||
|
dtype: uint32
|
||||||
|
doc: Voxel x-coordinate.
|
||||||
|
- name: y
|
||||||
|
dtype: uint32
|
||||||
|
doc: Voxel y-coordinate.
|
||||||
|
- name: z
|
||||||
|
dtype: uint32
|
||||||
|
doc: Voxel z-coordinate.
|
||||||
|
- name: weight
|
||||||
|
dtype: float32
|
||||||
|
doc: Weight of the voxel.
|
||||||
|
doc: 'Voxel masks for each ROI: a list of indices and weights for the ROI. Voxel
|
||||||
|
masks are concatenated and parsing of this dataset is maintained by the PlaneSegmentation'
|
||||||
|
quantity: '?'
|
||||||
|
groups:
|
||||||
|
- name: reference_images
|
||||||
|
doc: Image stacks that the segmentation masks apply to.
|
||||||
|
groups:
|
||||||
|
- neurodata_type_inc: ImageSeries
|
||||||
|
doc: One or more image stacks that the masks apply to (can be one-element
|
||||||
|
stack).
|
||||||
|
quantity: '*'
|
||||||
|
links:
|
||||||
|
- name: imaging_plane
|
||||||
|
target_type: ImagingPlane
|
||||||
|
doc: Link to ImagingPlane object from which this data was generated.
|
||||||
|
|
||||||
|
- neurodata_type_def: ImagingPlane
|
||||||
|
neurodata_type_inc: NWBContainer
|
||||||
|
doc: An imaging plane and its metadata.
|
||||||
|
datasets:
|
||||||
|
- name: description
|
||||||
|
dtype: text
|
||||||
|
doc: Description of the imaging plane.
|
||||||
|
quantity: '?'
|
||||||
|
- name: excitation_lambda
|
||||||
|
dtype: float32
|
||||||
|
doc: Excitation wavelength, in nm.
|
||||||
|
- name: imaging_rate
|
||||||
|
dtype: float32
|
||||||
|
doc: Rate that images are acquired, in Hz. If the corresponding TimeSeries is present, the rate should be stored
|
||||||
|
there instead.
|
||||||
|
quantity: '?'
|
||||||
|
- name: indicator
|
||||||
|
dtype: text
|
||||||
|
doc: Calcium indicator.
|
||||||
|
- name: location
|
||||||
|
dtype: text
|
||||||
|
doc: Location of the imaging plane. Specify the area, layer, comments on estimation
|
||||||
|
of area/layer, stereotaxic coordinates if in vivo, etc. Use standard atlas
|
||||||
|
names for anatomical regions when possible.
|
||||||
|
- name: manifold
|
||||||
|
dtype: float32
|
||||||
|
dims:
|
||||||
|
- - height
|
||||||
|
- width
|
||||||
|
- x, y, z
|
||||||
|
- - height
|
||||||
|
- width
|
||||||
|
- depth
|
||||||
|
- x, y, z
|
||||||
|
shape:
|
||||||
|
- - null
|
||||||
|
- null
|
||||||
|
- 3
|
||||||
|
- - null
|
||||||
|
- null
|
||||||
|
- null
|
||||||
|
- 3
|
||||||
|
doc: "DEPRECATED Physical position of each pixel. 'xyz' represents the position\
|
||||||
|
\ of the pixel relative to the defined coordinate space. Deprecated in favor of origin_coords and grid_spacing."
|
||||||
|
quantity: '?'
|
||||||
|
attributes:
|
||||||
|
- name: conversion
|
||||||
|
dtype: float32
|
||||||
|
default_value: 1.0
|
||||||
|
doc: Scalar to multiply each element in data to convert it to the specified 'unit'.
|
||||||
|
If the data are stored in acquisition system units or other units
|
||||||
|
that require a conversion to be interpretable, multiply the data by 'conversion'
|
||||||
|
to convert the data to the specified 'unit'. e.g. if the data acquisition system
|
||||||
|
stores values in this object as pixels from x = -500 to 499, y = -500 to 499
|
||||||
|
that correspond to a 2 m x 2 m range, then the 'conversion' multiplier to get
|
||||||
|
from raw data acquisition pixel units to meters is 2/1000.
|
||||||
|
required: false
|
||||||
|
- name: unit
|
||||||
|
dtype: text
|
||||||
|
default_value: meters
|
||||||
|
doc: Base unit of measurement for working with the data. The default value is 'meters'.
|
||||||
|
required: false
|
||||||
|
- name: origin_coords
|
||||||
|
dtype: float32
|
||||||
|
dims:
|
||||||
|
- - x, y
|
||||||
|
- - x, y, z
|
||||||
|
shape:
|
||||||
|
- - 2
|
||||||
|
- - 3
|
||||||
|
doc: Physical location of the first element of the imaging plane (0, 0) for 2-D data or (0, 0, 0) for 3-D data.
|
||||||
|
See also reference_frame for what the physical location is relative to (e.g., bregma).
|
||||||
|
quantity: '?'
|
||||||
|
attributes:
|
||||||
|
- name: unit
|
||||||
|
dtype: text
|
||||||
|
default_value: meters
|
||||||
|
doc: Measurement units for origin_coords. The default value is 'meters'.
|
||||||
|
- name: grid_spacing
|
||||||
|
dtype: float32
|
||||||
|
dims:
|
||||||
|
- - x, y
|
||||||
|
- - x, y, z
|
||||||
|
shape:
|
||||||
|
- - 2
|
||||||
|
- - 3
|
||||||
|
doc: Space between pixels in (x, y) or voxels in (x, y, z) directions, in the specified unit.
|
||||||
|
Assumes imaging plane is a regular grid. See also reference_frame to interpret the grid.
|
||||||
|
quantity: '?'
|
||||||
|
attributes:
|
||||||
|
- name: unit
|
||||||
|
dtype: text
|
||||||
|
default_value: meters
|
||||||
|
doc: Measurement units for grid_spacing. The default value is 'meters'.
|
||||||
|
- name: reference_frame
|
||||||
|
dtype: text
|
||||||
|
doc: Describes reference frame of origin_coords and grid_spacing.
|
||||||
|
For example, this can be a text description of the anatomical location and orientation of the grid
|
||||||
|
defined by origin_coords and grid_spacing or the vectors needed to transform or rotate the grid to
|
||||||
|
a common anatomical axis (e.g., AP/DV/ML). This field is necessary to interpret origin_coords and grid_spacing.
|
||||||
|
If origin_coords and grid_spacing are not present, then this field is not required.
|
||||||
|
For example, if the microscope takes 10 x 10 x 2 images, where the first value of the data matrix
|
||||||
|
(index (0, 0, 0)) corresponds to (-1.2, -0.6, -2) mm relative to bregma, the spacing between pixels is 0.2 mm in
|
||||||
|
x, 0.2 mm in y and 0.5 mm in z, and larger numbers in x means more anterior, larger numbers in y means more
|
||||||
|
rightward, and larger numbers in z means more ventral, then enter the following --
|
||||||
|
origin_coords = (-1.2, -0.6, -2)
|
||||||
|
grid_spacing = (0.2, 0.2, 0.5)
|
||||||
|
reference_frame = "Origin coordinates are relative to bregma. First dimension corresponds to anterior-posterior
|
||||||
|
axis (larger index = more anterior). Second dimension corresponds to medial-lateral axis (larger index = more
|
||||||
|
rightward). Third dimension corresponds to dorsal-ventral axis (larger index = more ventral)."
|
||||||
|
quantity: '?'
|
||||||
|
groups:
|
||||||
|
- neurodata_type_inc: OpticalChannel
|
||||||
|
doc: An optical channel used to record from an imaging plane.
|
||||||
|
quantity: '+'
|
||||||
|
links:
|
||||||
|
- name: device
|
||||||
|
target_type: Device
|
||||||
|
doc: Link to the Device object that was used to record from this electrode.
|
||||||
|
|
||||||
|
- neurodata_type_def: OpticalChannel
|
||||||
|
neurodata_type_inc: NWBContainer
|
||||||
|
doc: An optical channel used to record from an imaging plane.
|
||||||
|
datasets:
|
||||||
|
- name: description
|
||||||
|
dtype: text
|
||||||
|
doc: Description or other notes about the channel.
|
||||||
|
- name: emission_lambda
|
||||||
|
dtype: float32
|
||||||
|
doc: Emission wavelength for channel, in nm.
|
||||||
|
|
||||||
|
- neurodata_type_def: MotionCorrection
|
||||||
|
neurodata_type_inc: NWBDataInterface
|
||||||
|
default_name: MotionCorrection
|
||||||
|
doc: 'An image stack where all frames are shifted (registered) to a common coordinate
|
||||||
|
system, to account for movement and drift between frames. Note: each frame at
|
||||||
|
each point in time is assumed to be 2-D (has only x & y dimensions).'
|
||||||
|
groups:
|
||||||
|
- neurodata_type_inc: CorrectedImageStack
|
||||||
|
doc: Reuslts from motion correction of an image stack.
|
||||||
|
quantity: '+'
|
||||||
|
|
||||||
|
- neurodata_type_def: CorrectedImageStack
|
||||||
|
neurodata_type_inc: NWBDataInterface
|
||||||
|
doc: Reuslts from motion correction of an image stack.
|
||||||
|
groups:
|
||||||
|
- name: corrected
|
||||||
|
neurodata_type_inc: ImageSeries
|
||||||
|
doc: Image stack with frames shifted to the common coordinates.
|
||||||
|
- name: xy_translation
|
||||||
|
neurodata_type_inc: TimeSeries
|
||||||
|
doc: Stores the x,y delta necessary to align each frame to the common coordinates,
|
||||||
|
for example, to align each frame to a reference image.
|
||||||
|
links:
|
||||||
|
- name: original
|
||||||
|
target_type: ImageSeries
|
||||||
|
doc: Link to ImageSeries object that is being registered.
|
234
nwb-schema-linkml/src/data/tests/nwb.retinotopy.yaml
Normal file
234
nwb-schema-linkml/src/data/tests/nwb.retinotopy.yaml
Normal file
|
@ -0,0 +1,234 @@
|
||||||
|
groups:
|
||||||
|
- neurodata_type_def: ImagingRetinotopy
|
||||||
|
neurodata_type_inc: NWBDataInterface
|
||||||
|
default_name: ImagingRetinotopy
|
||||||
|
doc: 'Intrinsic signal optical imaging or widefield imaging for measuring retinotopy.
|
||||||
|
Stores orthogonal maps (e.g., altitude/azimuth; radius/theta) of responses to
|
||||||
|
specific stimuli and a combined polarity map from which to identify visual areas.
|
||||||
|
This group does not store the raw responses imaged during retinotopic mapping or the
|
||||||
|
stimuli presented, but rather the resulting phase and power maps after applying a Fourier
|
||||||
|
transform on the averaged responses.
|
||||||
|
Note: for data consistency, all images and arrays are stored in the format [row][column]
|
||||||
|
and [row, col], which equates to [y][x]. Field of view and dimension arrays may
|
||||||
|
appear backward (i.e., y before x).'
|
||||||
|
datasets:
|
||||||
|
- name: axis_1_phase_map
|
||||||
|
dtype: float32
|
||||||
|
dims:
|
||||||
|
- num_rows
|
||||||
|
- num_cols
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
- null
|
||||||
|
doc: Phase response to stimulus on the first measured axis.
|
||||||
|
attributes:
|
||||||
|
- name: dimension
|
||||||
|
dtype: int32
|
||||||
|
dims:
|
||||||
|
- num_rows, num_cols
|
||||||
|
shape:
|
||||||
|
- 2
|
||||||
|
doc: 'Number of rows and columns in the image. NOTE: row, column representation
|
||||||
|
is equivalent to height, width.'
|
||||||
|
- name: field_of_view
|
||||||
|
dtype: float32
|
||||||
|
dims:
|
||||||
|
- height, width
|
||||||
|
shape:
|
||||||
|
- 2
|
||||||
|
doc: Size of viewing area, in meters.
|
||||||
|
- name: unit
|
||||||
|
dtype: text
|
||||||
|
doc: Unit that axis data is stored in (e.g., degrees).
|
||||||
|
- name: axis_1_power_map
|
||||||
|
dtype: float32
|
||||||
|
dims:
|
||||||
|
- num_rows
|
||||||
|
- num_cols
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
- null
|
||||||
|
doc: Power response on the first measured axis. Response is scaled so 0.0 is no
|
||||||
|
power in the response and 1.0 is maximum relative power.
|
||||||
|
quantity: '?'
|
||||||
|
attributes:
|
||||||
|
- name: dimension
|
||||||
|
dtype: int32
|
||||||
|
dims:
|
||||||
|
- num_rows, num_cols
|
||||||
|
shape:
|
||||||
|
- 2
|
||||||
|
doc: 'Number of rows and columns in the image. NOTE: row, column representation
|
||||||
|
is equivalent to height, width.'
|
||||||
|
- name: field_of_view
|
||||||
|
dtype: float32
|
||||||
|
dims:
|
||||||
|
- height, width
|
||||||
|
shape:
|
||||||
|
- 2
|
||||||
|
doc: Size of viewing area, in meters.
|
||||||
|
- name: unit
|
||||||
|
dtype: text
|
||||||
|
doc: Unit that axis data is stored in (e.g., degrees).
|
||||||
|
- name: axis_2_phase_map
|
||||||
|
dtype: float32
|
||||||
|
dims:
|
||||||
|
- num_rows
|
||||||
|
- num_cols
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
- null
|
||||||
|
doc: Phase response to stimulus on the second measured axis.
|
||||||
|
attributes:
|
||||||
|
- name: dimension
|
||||||
|
dtype: int32
|
||||||
|
dims:
|
||||||
|
- num_rows, num_cols
|
||||||
|
shape:
|
||||||
|
- 2
|
||||||
|
doc: 'Number of rows and columns in the image. NOTE: row, column representation
|
||||||
|
is equivalent to height, width.'
|
||||||
|
- name: field_of_view
|
||||||
|
dtype: float32
|
||||||
|
dims:
|
||||||
|
- height, width
|
||||||
|
shape:
|
||||||
|
- 2
|
||||||
|
doc: Size of viewing area, in meters.
|
||||||
|
- name: unit
|
||||||
|
dtype: text
|
||||||
|
doc: Unit that axis data is stored in (e.g., degrees).
|
||||||
|
- name: axis_2_power_map
|
||||||
|
dtype: float32
|
||||||
|
dims:
|
||||||
|
- num_rows
|
||||||
|
- num_cols
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
- null
|
||||||
|
doc: Power response on the second measured axis. Response is scaled so 0.0 is
|
||||||
|
no power in the response and 1.0 is maximum relative power.
|
||||||
|
quantity: '?'
|
||||||
|
attributes:
|
||||||
|
- name: dimension
|
||||||
|
dtype: int32
|
||||||
|
dims:
|
||||||
|
- num_rows, num_cols
|
||||||
|
shape:
|
||||||
|
- 2
|
||||||
|
doc: 'Number of rows and columns in the image. NOTE: row, column representation
|
||||||
|
is equivalent to height, width.'
|
||||||
|
- name: field_of_view
|
||||||
|
dtype: float32
|
||||||
|
dims:
|
||||||
|
- height, width
|
||||||
|
shape:
|
||||||
|
- 2
|
||||||
|
doc: Size of viewing area, in meters.
|
||||||
|
- name: unit
|
||||||
|
dtype: text
|
||||||
|
doc: Unit that axis data is stored in (e.g., degrees).
|
||||||
|
- name: axis_descriptions
|
||||||
|
dtype: text
|
||||||
|
dims:
|
||||||
|
- axis_1, axis_2
|
||||||
|
shape:
|
||||||
|
- 2
|
||||||
|
doc: Two-element array describing the contents of the two response axis fields.
|
||||||
|
Description should be something like ['altitude', 'azimuth'] or '['radius',
|
||||||
|
'theta'].
|
||||||
|
- name: focal_depth_image
|
||||||
|
dtype: uint16
|
||||||
|
dims:
|
||||||
|
- num_rows
|
||||||
|
- num_cols
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
- null
|
||||||
|
doc: 'Gray-scale image taken with same settings/parameters (e.g., focal depth,
|
||||||
|
wavelength) as data collection. Array format: [rows][columns].'
|
||||||
|
quantity: '?'
|
||||||
|
attributes:
|
||||||
|
- name: bits_per_pixel
|
||||||
|
dtype: int32
|
||||||
|
doc: Number of bits used to represent each value. This is necessary to determine
|
||||||
|
maximum (white) pixel value.
|
||||||
|
- name: dimension
|
||||||
|
dtype: int32
|
||||||
|
dims:
|
||||||
|
- num_rows, num_cols
|
||||||
|
shape:
|
||||||
|
- 2
|
||||||
|
doc: 'Number of rows and columns in the image. NOTE: row, column representation
|
||||||
|
is equivalent to height, width.'
|
||||||
|
- name: field_of_view
|
||||||
|
dtype: float32
|
||||||
|
dims:
|
||||||
|
- height, width
|
||||||
|
shape:
|
||||||
|
- 2
|
||||||
|
doc: Size of viewing area, in meters.
|
||||||
|
- name: focal_depth
|
||||||
|
dtype: float32
|
||||||
|
doc: Focal depth offset, in meters.
|
||||||
|
- name: format
|
||||||
|
dtype: text
|
||||||
|
doc: Format of image. Right now only 'raw' is supported.
|
||||||
|
- name: sign_map
|
||||||
|
dtype: float32
|
||||||
|
dims:
|
||||||
|
- num_rows
|
||||||
|
- num_cols
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
- null
|
||||||
|
doc: Sine of the angle between the direction of the gradient in axis_1 and axis_2.
|
||||||
|
quantity: '?'
|
||||||
|
attributes:
|
||||||
|
- name: dimension
|
||||||
|
dtype: int32
|
||||||
|
dims:
|
||||||
|
- num_rows, num_cols
|
||||||
|
shape:
|
||||||
|
- 2
|
||||||
|
doc: 'Number of rows and columns in the image. NOTE: row, column representation
|
||||||
|
is equivalent to height, width.'
|
||||||
|
- name: field_of_view
|
||||||
|
dtype: float32
|
||||||
|
dims:
|
||||||
|
- height, width
|
||||||
|
shape:
|
||||||
|
- 2
|
||||||
|
doc: Size of viewing area, in meters.
|
||||||
|
- name: vasculature_image
|
||||||
|
dtype: uint16
|
||||||
|
dims:
|
||||||
|
- num_rows
|
||||||
|
- num_cols
|
||||||
|
shape:
|
||||||
|
- null
|
||||||
|
- null
|
||||||
|
doc: 'Gray-scale anatomical image of cortical surface. Array structure: [rows][columns]'
|
||||||
|
attributes:
|
||||||
|
- name: bits_per_pixel
|
||||||
|
dtype: int32
|
||||||
|
doc: Number of bits used to represent each value. This is necessary to determine
|
||||||
|
maximum (white) pixel value
|
||||||
|
- name: dimension
|
||||||
|
dtype: int32
|
||||||
|
dims:
|
||||||
|
- num_rows, num_cols
|
||||||
|
shape:
|
||||||
|
- 2
|
||||||
|
doc: 'Number of rows and columns in the image. NOTE: row, column representation
|
||||||
|
is equivalent to height, width.'
|
||||||
|
- name: field_of_view
|
||||||
|
dtype: float32
|
||||||
|
dims:
|
||||||
|
- height, width
|
||||||
|
shape:
|
||||||
|
- 2
|
||||||
|
doc: Size of viewing area, in meters.
|
||||||
|
- name: format
|
||||||
|
dtype: text
|
||||||
|
doc: Format of image. Right now only 'raw' is supported.
|
0
nwb-schema-linkml/src/nwb_schema_language/__init__.py
Normal file
0
nwb-schema-linkml/src/nwb_schema_language/__init__.py
Normal file
|
@ -1,5 +1,5 @@
|
||||||
# Auto generated from nwb_schema_language.yaml by pythongen.py version: 0.0.1
|
# Auto generated from nwb_schema_language.yaml by pythongen.py version: 0.0.1
|
||||||
# Generation date: 2023-08-16T15:57:41
|
# Generation date: 2023-08-16T23:21:37
|
||||||
# Schema: nwb-schema-language
|
# Schema: nwb-schema-language
|
||||||
#
|
#
|
||||||
# id: https://w3id.org/p2p_ld/nwb-schema-language
|
# id: https://w3id.org/p2p_ld/nwb-schema-language
|
||||||
|
@ -21,8 +21,8 @@ from linkml_runtime.utils.formatutils import camelcase, underscore, sfx
|
||||||
from linkml_runtime.utils.enumerations import EnumDefinitionImpl
|
from linkml_runtime.utils.enumerations import EnumDefinitionImpl
|
||||||
from rdflib import Namespace, URIRef
|
from rdflib import Namespace, URIRef
|
||||||
from linkml_runtime.utils.curienamespace import CurieNamespace
|
from linkml_runtime.utils.curienamespace import CurieNamespace
|
||||||
from linkml_runtime.linkml_model.types import Date, Integer, String, Uriorcurie
|
from linkml_runtime.linkml_model.types import Boolean, Date, String
|
||||||
from linkml_runtime.utils.metamodelcore import URIorCURIE, XSDDate
|
from linkml_runtime.utils.metamodelcore import Bool, XSDDate
|
||||||
|
|
||||||
metamodel_version = "1.7.0"
|
metamodel_version = "1.7.0"
|
||||||
version = None
|
version = None
|
||||||
|
@ -31,9 +31,6 @@ version = None
|
||||||
dataclasses._init_fn = dataclasses_init_fn_with_kwargs
|
dataclasses._init_fn = dataclasses_init_fn_with_kwargs
|
||||||
|
|
||||||
# Namespaces
|
# Namespaces
|
||||||
PATO = CurieNamespace('PATO', 'http://purl.obolibrary.org/obo/PATO_')
|
|
||||||
BIOLINK = CurieNamespace('biolink', 'https://w3id.org/biolink/')
|
|
||||||
EXAMPLE = CurieNamespace('example', 'https://example.org/')
|
|
||||||
LINKML = CurieNamespace('linkml', 'https://w3id.org/linkml/')
|
LINKML = CurieNamespace('linkml', 'https://w3id.org/linkml/')
|
||||||
NWB_SCHEMA_LANGUAGE = CurieNamespace('nwb_schema_language', 'https://w3id.org/p2p_ld/nwb-schema-language/')
|
NWB_SCHEMA_LANGUAGE = CurieNamespace('nwb_schema_language', 'https://w3id.org/p2p_ld/nwb-schema-language/')
|
||||||
SCHEMA = CurieNamespace('schema', 'http://schema.org/')
|
SCHEMA = CurieNamespace('schema', 'http://schema.org/')
|
||||||
|
@ -43,50 +40,71 @@ DEFAULT_ = NWB_SCHEMA_LANGUAGE
|
||||||
# Types
|
# Types
|
||||||
|
|
||||||
# Class references
|
# Class references
|
||||||
class NamedThingId(URIorCURIE):
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
class NamespacesId(NamedThingId):
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class NamedThing(YAMLRoot):
|
class Namespace(YAMLRoot):
|
||||||
"""
|
|
||||||
A generic grouping for any identifiable entity
|
|
||||||
"""
|
|
||||||
_inherited_slots: ClassVar[List[str]] = []
|
_inherited_slots: ClassVar[List[str]] = []
|
||||||
|
|
||||||
class_class_uri: ClassVar[URIRef] = SCHEMA.Thing
|
class_class_uri: ClassVar[URIRef] = NWB_SCHEMA_LANGUAGE.Namespace
|
||||||
class_class_curie: ClassVar[str] = "schema:Thing"
|
class_class_curie: ClassVar[str] = "nwb_schema_language:Namespace"
|
||||||
class_name: ClassVar[str] = "NamedThing"
|
class_name: ClassVar[str] = "Namespace"
|
||||||
class_model_uri: ClassVar[URIRef] = NWB_SCHEMA_LANGUAGE.NamedThing
|
class_model_uri: ClassVar[URIRef] = NWB_SCHEMA_LANGUAGE.Namespace
|
||||||
|
|
||||||
id: Union[str, NamedThingId] = None
|
doc: str = None
|
||||||
name: Optional[str] = None
|
name: str = None
|
||||||
description: Optional[str] = None
|
version: str = None
|
||||||
|
author: Union[str, List[str]] = None
|
||||||
|
contact: Union[str, List[str]] = None
|
||||||
|
full_name: Optional[str] = None
|
||||||
|
date: Optional[Union[str, XSDDate]] = None
|
||||||
|
schema: Optional[Union[Union[dict, "Schema"], List[Union[dict, "Schema"]]]] = empty_list()
|
||||||
|
|
||||||
def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):
|
def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):
|
||||||
if self._is_empty(self.id):
|
if self._is_empty(self.doc):
|
||||||
self.MissingRequiredField("id")
|
self.MissingRequiredField("doc")
|
||||||
if not isinstance(self.id, NamedThingId):
|
if not isinstance(self.doc, str):
|
||||||
self.id = NamedThingId(self.id)
|
self.doc = str(self.doc)
|
||||||
|
|
||||||
if self.name is not None and not isinstance(self.name, str):
|
if self._is_empty(self.name):
|
||||||
|
self.MissingRequiredField("name")
|
||||||
|
if not isinstance(self.name, str):
|
||||||
self.name = str(self.name)
|
self.name = str(self.name)
|
||||||
|
|
||||||
if self.description is not None and not isinstance(self.description, str):
|
if self._is_empty(self.version):
|
||||||
self.description = str(self.description)
|
self.MissingRequiredField("version")
|
||||||
|
if not isinstance(self.version, str):
|
||||||
|
self.version = str(self.version)
|
||||||
|
|
||||||
|
if self._is_empty(self.author):
|
||||||
|
self.MissingRequiredField("author")
|
||||||
|
if not isinstance(self.author, list):
|
||||||
|
self.author = [self.author] if self.author is not None else []
|
||||||
|
self.author = [v if isinstance(v, str) else str(v) for v in self.author]
|
||||||
|
|
||||||
|
if self._is_empty(self.contact):
|
||||||
|
self.MissingRequiredField("contact")
|
||||||
|
if not isinstance(self.contact, list):
|
||||||
|
self.contact = [self.contact] if self.contact is not None else []
|
||||||
|
self.contact = [v if isinstance(v, str) else str(v) for v in self.contact]
|
||||||
|
|
||||||
|
if self.full_name is not None and not isinstance(self.full_name, str):
|
||||||
|
self.full_name = str(self.full_name)
|
||||||
|
|
||||||
|
if self.date is not None and not isinstance(self.date, XSDDate):
|
||||||
|
self.date = XSDDate(self.date)
|
||||||
|
|
||||||
|
print(self.schema)
|
||||||
|
if not isinstance(self.schema, list):
|
||||||
|
self.schema = [self.schema] if self.schema is not None else []
|
||||||
|
self.schema = [v if isinstance(v, Schema) else Schema(**as_dict(v)) for v in self.schema]
|
||||||
|
|
||||||
super().__post_init__(**kwargs)
|
super().__post_init__(**kwargs)
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class Namespaces(NamedThing):
|
class Namespaces(YAMLRoot):
|
||||||
"""
|
|
||||||
Represents a Namespaces
|
|
||||||
"""
|
|
||||||
_inherited_slots: ClassVar[List[str]] = []
|
_inherited_slots: ClassVar[List[str]] = []
|
||||||
|
|
||||||
class_class_uri: ClassVar[URIRef] = NWB_SCHEMA_LANGUAGE.Namespaces
|
class_class_uri: ClassVar[URIRef] = NWB_SCHEMA_LANGUAGE.Namespaces
|
||||||
|
@ -94,100 +112,579 @@ class Namespaces(NamedThing):
|
||||||
class_name: ClassVar[str] = "Namespaces"
|
class_name: ClassVar[str] = "Namespaces"
|
||||||
class_model_uri: ClassVar[URIRef] = NWB_SCHEMA_LANGUAGE.Namespaces
|
class_model_uri: ClassVar[URIRef] = NWB_SCHEMA_LANGUAGE.Namespaces
|
||||||
|
|
||||||
id: Union[str, NamespacesId] = None
|
namespaces: Optional[Union[Union[dict, Namespace], List[Union[dict, Namespace]]]] = empty_list()
|
||||||
primary_email: Optional[str] = None
|
|
||||||
birth_date: Optional[Union[str, XSDDate]] = None
|
|
||||||
age_in_years: Optional[int] = None
|
|
||||||
vital_status: Optional[Union[str, "PersonStatus"]] = None
|
|
||||||
|
|
||||||
def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):
|
def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):
|
||||||
if self._is_empty(self.id):
|
self._normalize_inlined_as_dict(slot_name="namespaces", slot_type=Namespace, key_name="doc", keyed=False)
|
||||||
self.MissingRequiredField("id")
|
|
||||||
if not isinstance(self.id, NamespacesId):
|
|
||||||
self.id = NamespacesId(self.id)
|
|
||||||
|
|
||||||
if self.primary_email is not None and not isinstance(self.primary_email, str):
|
|
||||||
self.primary_email = str(self.primary_email)
|
|
||||||
|
|
||||||
if self.birth_date is not None and not isinstance(self.birth_date, XSDDate):
|
|
||||||
self.birth_date = XSDDate(self.birth_date)
|
|
||||||
|
|
||||||
if self.age_in_years is not None and not isinstance(self.age_in_years, int):
|
|
||||||
self.age_in_years = int(self.age_in_years)
|
|
||||||
|
|
||||||
if self.vital_status is not None and not isinstance(self.vital_status, PersonStatus):
|
|
||||||
self.vital_status = PersonStatus(self.vital_status)
|
|
||||||
|
|
||||||
super().__post_init__(**kwargs)
|
super().__post_init__(**kwargs)
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class NamespacesCollection(YAMLRoot):
|
class Schema(YAMLRoot):
|
||||||
"""
|
|
||||||
A holder for Namespaces objects
|
|
||||||
"""
|
|
||||||
_inherited_slots: ClassVar[List[str]] = []
|
_inherited_slots: ClassVar[List[str]] = []
|
||||||
|
|
||||||
class_class_uri: ClassVar[URIRef] = NWB_SCHEMA_LANGUAGE.NamespacesCollection
|
class_class_uri: ClassVar[URIRef] = NWB_SCHEMA_LANGUAGE.Schema
|
||||||
class_class_curie: ClassVar[str] = "nwb_schema_language:NamespacesCollection"
|
class_class_curie: ClassVar[str] = "nwb_schema_language:Schema"
|
||||||
class_name: ClassVar[str] = "NamespacesCollection"
|
class_name: ClassVar[str] = "Schema"
|
||||||
class_model_uri: ClassVar[URIRef] = NWB_SCHEMA_LANGUAGE.NamespacesCollection
|
class_model_uri: ClassVar[URIRef] = NWB_SCHEMA_LANGUAGE.Schema
|
||||||
|
|
||||||
entries: Optional[Union[Dict[Union[str, NamespacesId], Union[dict, Namespaces]], List[Union[dict, Namespaces]]]] = empty_dict()
|
doc: str = None
|
||||||
|
source: Optional[str] = None
|
||||||
|
namespace: Optional[str] = None
|
||||||
|
title: Optional[str] = None
|
||||||
|
neurodata_types: Optional[Union[str, List[str]]] = empty_list()
|
||||||
|
|
||||||
def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):
|
def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):
|
||||||
self._normalize_inlined_as_dict(slot_name="entries", slot_type=Namespaces, key_name="id", keyed=True)
|
if self._is_empty(self.doc):
|
||||||
|
self.MissingRequiredField("doc")
|
||||||
|
if not isinstance(self.doc, str):
|
||||||
|
self.doc = str(self.doc)
|
||||||
|
|
||||||
|
if self.source is not None and not isinstance(self.source, str):
|
||||||
|
self.source = str(self.source)
|
||||||
|
|
||||||
|
if self.namespace is not None and not isinstance(self.namespace, str):
|
||||||
|
self.namespace = str(self.namespace)
|
||||||
|
|
||||||
|
if self.title is not None and not isinstance(self.title, str):
|
||||||
|
self.title = str(self.title)
|
||||||
|
|
||||||
|
if not isinstance(self.neurodata_types, list):
|
||||||
|
self.neurodata_types = [self.neurodata_types] if self.neurodata_types is not None else []
|
||||||
|
self.neurodata_types = [v if isinstance(v, str) else str(v) for v in self.neurodata_types]
|
||||||
|
|
||||||
super().__post_init__(**kwargs)
|
super().__post_init__(**kwargs)
|
||||||
|
|
||||||
|
|
||||||
# Enumerations
|
@dataclass
|
||||||
class PersonStatus(EnumDefinitionImpl):
|
class Group(YAMLRoot):
|
||||||
|
_inherited_slots: ClassVar[List[str]] = []
|
||||||
|
|
||||||
ALIVE = PermissibleValue(
|
class_class_uri: ClassVar[URIRef] = NWB_SCHEMA_LANGUAGE.Group
|
||||||
text="ALIVE",
|
class_class_curie: ClassVar[str] = "nwb_schema_language:Group"
|
||||||
description="the person is living",
|
class_name: ClassVar[str] = "Group"
|
||||||
meaning=PATO["0001421"])
|
class_model_uri: ClassVar[URIRef] = NWB_SCHEMA_LANGUAGE.Group
|
||||||
DEAD = PermissibleValue(
|
|
||||||
text="DEAD",
|
doc: str = None
|
||||||
description="the person is deceased",
|
neurodata_type_def: Optional[str] = None
|
||||||
meaning=PATO["0001422"])
|
neurodata_type_inc: Optional[str] = None
|
||||||
UNKNOWN = PermissibleValue(
|
name: Optional[str] = None
|
||||||
text="UNKNOWN",
|
default_name: Optional[str] = None
|
||||||
description="the vital status is not known")
|
quantity: Optional[str] = 1
|
||||||
|
linkable: Optional[Union[bool, Bool]] = None
|
||||||
|
attributes: Optional[Union[Union[dict, "Attribute"], List[Union[dict, "Attribute"]]]] = empty_list()
|
||||||
|
datasets: Optional[Union[Union[dict, "Dataset"], List[Union[dict, "Dataset"]]]] = empty_list()
|
||||||
|
groups: Optional[Union[Union[dict, "Group"], List[Union[dict, "Group"]]]] = empty_list()
|
||||||
|
links: Optional[Union[Union[dict, "Link"], List[Union[dict, "Link"]]]] = empty_list()
|
||||||
|
|
||||||
|
def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):
|
||||||
|
if self._is_empty(self.doc):
|
||||||
|
self.MissingRequiredField("doc")
|
||||||
|
if not isinstance(self.doc, str):
|
||||||
|
self.doc = str(self.doc)
|
||||||
|
|
||||||
|
if self.neurodata_type_def is not None and not isinstance(self.neurodata_type_def, str):
|
||||||
|
self.neurodata_type_def = str(self.neurodata_type_def)
|
||||||
|
|
||||||
|
if self.neurodata_type_inc is not None and not isinstance(self.neurodata_type_inc, str):
|
||||||
|
self.neurodata_type_inc = str(self.neurodata_type_inc)
|
||||||
|
|
||||||
|
if self.name is not None and not isinstance(self.name, str):
|
||||||
|
self.name = str(self.name)
|
||||||
|
|
||||||
|
if self.default_name is not None and not isinstance(self.default_name, str):
|
||||||
|
self.default_name = str(self.default_name)
|
||||||
|
|
||||||
|
if self.quantity is not None and not isinstance(self.quantity, str):
|
||||||
|
self.quantity = str(self.quantity)
|
||||||
|
|
||||||
|
if self.linkable is not None and not isinstance(self.linkable, Bool):
|
||||||
|
self.linkable = Bool(self.linkable)
|
||||||
|
|
||||||
|
self._normalize_inlined_as_dict(slot_name="attributes", slot_type=Attribute, key_name="name", keyed=False)
|
||||||
|
|
||||||
|
self._normalize_inlined_as_dict(slot_name="datasets", slot_type=Dataset, key_name="doc", keyed=False)
|
||||||
|
|
||||||
|
self._normalize_inlined_as_dict(slot_name="groups", slot_type=Group, key_name="doc", keyed=False)
|
||||||
|
|
||||||
|
self._normalize_inlined_as_dict(slot_name="links", slot_type=Link, key_name="doc", keyed=False)
|
||||||
|
|
||||||
|
super().__post_init__(**kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class Attribute(YAMLRoot):
|
||||||
|
_inherited_slots: ClassVar[List[str]] = []
|
||||||
|
|
||||||
|
class_class_uri: ClassVar[URIRef] = NWB_SCHEMA_LANGUAGE.Attribute
|
||||||
|
class_class_curie: ClassVar[str] = "nwb_schema_language:Attribute"
|
||||||
|
class_name: ClassVar[str] = "Attribute"
|
||||||
|
class_model_uri: ClassVar[URIRef] = NWB_SCHEMA_LANGUAGE.Attribute
|
||||||
|
|
||||||
|
name: str = None
|
||||||
|
doc: str = None
|
||||||
|
dims: Optional[Union[str, List[str]]] = empty_list()
|
||||||
|
shape: Optional[Union[str, List[str]]] = empty_list()
|
||||||
|
value: Optional[Union[dict, "AnyType"]] = None
|
||||||
|
default_value: Optional[Union[dict, "AnyType"]] = None
|
||||||
|
required: Optional[Union[bool, Bool]] = True
|
||||||
|
dtype: Optional[str] = None
|
||||||
|
|
||||||
|
def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):
|
||||||
|
if self._is_empty(self.name):
|
||||||
|
self.MissingRequiredField("name")
|
||||||
|
if not isinstance(self.name, str):
|
||||||
|
self.name = str(self.name)
|
||||||
|
|
||||||
|
if self._is_empty(self.doc):
|
||||||
|
self.MissingRequiredField("doc")
|
||||||
|
if not isinstance(self.doc, str):
|
||||||
|
self.doc = str(self.doc)
|
||||||
|
|
||||||
|
if not isinstance(self.dims, list):
|
||||||
|
self.dims = [self.dims] if self.dims is not None else []
|
||||||
|
self.dims = [v if isinstance(v, str) else str(v) for v in self.dims]
|
||||||
|
|
||||||
|
if not isinstance(self.shape, list):
|
||||||
|
self.shape = [self.shape] if self.shape is not None else []
|
||||||
|
self.shape = [v if isinstance(v, str) else str(v) for v in self.shape]
|
||||||
|
|
||||||
|
if self.required is not None and not isinstance(self.required, Bool):
|
||||||
|
self.required = Bool(self.required)
|
||||||
|
|
||||||
|
if self.dtype is not None and not isinstance(self.dtype, str):
|
||||||
|
self.dtype = str(self.dtype)
|
||||||
|
|
||||||
|
super().__post_init__(**kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class Link(YAMLRoot):
|
||||||
|
_inherited_slots: ClassVar[List[str]] = []
|
||||||
|
|
||||||
|
class_class_uri: ClassVar[URIRef] = NWB_SCHEMA_LANGUAGE.Link
|
||||||
|
class_class_curie: ClassVar[str] = "nwb_schema_language:Link"
|
||||||
|
class_name: ClassVar[str] = "Link"
|
||||||
|
class_model_uri: ClassVar[URIRef] = NWB_SCHEMA_LANGUAGE.Link
|
||||||
|
|
||||||
|
doc: str = None
|
||||||
|
target_type: str = None
|
||||||
|
name: Optional[str] = None
|
||||||
|
quantity: Optional[str] = 1
|
||||||
|
|
||||||
|
def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):
|
||||||
|
if self._is_empty(self.doc):
|
||||||
|
self.MissingRequiredField("doc")
|
||||||
|
if not isinstance(self.doc, str):
|
||||||
|
self.doc = str(self.doc)
|
||||||
|
|
||||||
|
if self._is_empty(self.target_type):
|
||||||
|
self.MissingRequiredField("target_type")
|
||||||
|
if not isinstance(self.target_type, str):
|
||||||
|
self.target_type = str(self.target_type)
|
||||||
|
|
||||||
|
if self.name is not None and not isinstance(self.name, str):
|
||||||
|
self.name = str(self.name)
|
||||||
|
|
||||||
|
if self.quantity is not None and not isinstance(self.quantity, str):
|
||||||
|
self.quantity = str(self.quantity)
|
||||||
|
|
||||||
|
super().__post_init__(**kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class Dataset(YAMLRoot):
|
||||||
|
_inherited_slots: ClassVar[List[str]] = []
|
||||||
|
|
||||||
|
class_class_uri: ClassVar[URIRef] = NWB_SCHEMA_LANGUAGE.Dataset
|
||||||
|
class_class_curie: ClassVar[str] = "nwb_schema_language:Dataset"
|
||||||
|
class_name: ClassVar[str] = "Dataset"
|
||||||
|
class_model_uri: ClassVar[URIRef] = NWB_SCHEMA_LANGUAGE.Dataset
|
||||||
|
|
||||||
|
doc: str = None
|
||||||
|
neurodata_type_def: Optional[str] = None
|
||||||
|
neurodata_type_inc: Optional[str] = None
|
||||||
|
name: Optional[str] = None
|
||||||
|
default_name: Optional[str] = None
|
||||||
|
dims: Optional[Union[str, List[str]]] = empty_list()
|
||||||
|
shape: Optional[Union[str, List[str]]] = empty_list()
|
||||||
|
value: Optional[Union[dict, "AnyType"]] = None
|
||||||
|
default_value: Optional[Union[dict, "AnyType"]] = None
|
||||||
|
quantity: Optional[str] = 1
|
||||||
|
linkable: Optional[Union[bool, Bool]] = None
|
||||||
|
attributes: Optional[Union[Union[dict, Attribute], List[Union[dict, Attribute]]]] = empty_list()
|
||||||
|
dtype: Optional[str] = None
|
||||||
|
|
||||||
|
def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):
|
||||||
|
if self._is_empty(self.doc):
|
||||||
|
self.MissingRequiredField("doc")
|
||||||
|
if not isinstance(self.doc, str):
|
||||||
|
self.doc = str(self.doc)
|
||||||
|
|
||||||
|
if self.neurodata_type_def is not None and not isinstance(self.neurodata_type_def, str):
|
||||||
|
self.neurodata_type_def = str(self.neurodata_type_def)
|
||||||
|
|
||||||
|
if self.neurodata_type_inc is not None and not isinstance(self.neurodata_type_inc, str):
|
||||||
|
self.neurodata_type_inc = str(self.neurodata_type_inc)
|
||||||
|
|
||||||
|
if self.name is not None and not isinstance(self.name, str):
|
||||||
|
self.name = str(self.name)
|
||||||
|
|
||||||
|
if self.default_name is not None and not isinstance(self.default_name, str):
|
||||||
|
self.default_name = str(self.default_name)
|
||||||
|
|
||||||
|
if not isinstance(self.dims, list):
|
||||||
|
self.dims = [self.dims] if self.dims is not None else []
|
||||||
|
self.dims = [v if isinstance(v, str) else str(v) for v in self.dims]
|
||||||
|
|
||||||
|
if not isinstance(self.shape, list):
|
||||||
|
self.shape = [self.shape] if self.shape is not None else []
|
||||||
|
self.shape = [v if isinstance(v, str) else str(v) for v in self.shape]
|
||||||
|
|
||||||
|
if self.quantity is not None and not isinstance(self.quantity, str):
|
||||||
|
self.quantity = str(self.quantity)
|
||||||
|
|
||||||
|
if self.linkable is not None and not isinstance(self.linkable, Bool):
|
||||||
|
self.linkable = Bool(self.linkable)
|
||||||
|
|
||||||
|
self._normalize_inlined_as_dict(slot_name="attributes", slot_type=Attribute, key_name="name", keyed=False)
|
||||||
|
|
||||||
|
if self.dtype is not None and not isinstance(self.dtype, str):
|
||||||
|
self.dtype = str(self.dtype)
|
||||||
|
|
||||||
|
super().__post_init__(**kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class ReferenceDtype(YAMLRoot):
|
||||||
|
_inherited_slots: ClassVar[List[str]] = []
|
||||||
|
|
||||||
|
class_class_uri: ClassVar[URIRef] = NWB_SCHEMA_LANGUAGE.ReferenceDtype
|
||||||
|
class_class_curie: ClassVar[str] = "nwb_schema_language:ReferenceDtype"
|
||||||
|
class_name: ClassVar[str] = "ReferenceDtype"
|
||||||
|
class_model_uri: ClassVar[URIRef] = NWB_SCHEMA_LANGUAGE.ReferenceDtype
|
||||||
|
|
||||||
|
target_type: str = None
|
||||||
|
reftype: Optional[Union[str, "ReftypeOptions"]] = None
|
||||||
|
|
||||||
|
def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):
|
||||||
|
if self._is_empty(self.target_type):
|
||||||
|
self.MissingRequiredField("target_type")
|
||||||
|
if not isinstance(self.target_type, str):
|
||||||
|
self.target_type = str(self.target_type)
|
||||||
|
|
||||||
|
if self.reftype is not None and not isinstance(self.reftype, ReftypeOptions):
|
||||||
|
self.reftype = ReftypeOptions(self.reftype)
|
||||||
|
|
||||||
|
super().__post_init__(**kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class CompoundDtype(YAMLRoot):
|
||||||
|
_inherited_slots: ClassVar[List[str]] = []
|
||||||
|
|
||||||
|
class_class_uri: ClassVar[URIRef] = NWB_SCHEMA_LANGUAGE.CompoundDtype
|
||||||
|
class_class_curie: ClassVar[str] = "nwb_schema_language:CompoundDtype"
|
||||||
|
class_name: ClassVar[str] = "CompoundDtype"
|
||||||
|
class_model_uri: ClassVar[URIRef] = NWB_SCHEMA_LANGUAGE.CompoundDtype
|
||||||
|
|
||||||
|
name: str = None
|
||||||
|
doc: str = None
|
||||||
|
dtype: Union[str, "FlatDtype"] = None
|
||||||
|
|
||||||
|
def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):
|
||||||
|
if self._is_empty(self.name):
|
||||||
|
self.MissingRequiredField("name")
|
||||||
|
if not isinstance(self.name, str):
|
||||||
|
self.name = str(self.name)
|
||||||
|
|
||||||
|
if self._is_empty(self.doc):
|
||||||
|
self.MissingRequiredField("doc")
|
||||||
|
if not isinstance(self.doc, str):
|
||||||
|
self.doc = str(self.doc)
|
||||||
|
|
||||||
|
if self._is_empty(self.dtype):
|
||||||
|
self.MissingRequiredField("dtype")
|
||||||
|
if not isinstance(self.dtype, FlatDtype):
|
||||||
|
self.dtype = FlatDtype(self.dtype)
|
||||||
|
|
||||||
|
super().__post_init__(**kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class DtypeMixin(YAMLRoot):
|
||||||
|
_inherited_slots: ClassVar[List[str]] = []
|
||||||
|
|
||||||
|
class_class_uri: ClassVar[URIRef] = NWB_SCHEMA_LANGUAGE.DtypeMixin
|
||||||
|
class_class_curie: ClassVar[str] = "nwb_schema_language:DtypeMixin"
|
||||||
|
class_name: ClassVar[str] = "DtypeMixin"
|
||||||
|
class_model_uri: ClassVar[URIRef] = NWB_SCHEMA_LANGUAGE.DtypeMixin
|
||||||
|
|
||||||
|
dtype: Optional[str] = None
|
||||||
|
|
||||||
|
def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):
|
||||||
|
if self.dtype is not None and not isinstance(self.dtype, str):
|
||||||
|
self.dtype = str(self.dtype)
|
||||||
|
|
||||||
|
super().__post_init__(**kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
class NamingMixin(YAMLRoot):
|
||||||
|
"""
|
||||||
|
require either neurodata_type_def or name to be present
|
||||||
|
"""
|
||||||
|
_inherited_slots: ClassVar[List[str]] = []
|
||||||
|
|
||||||
|
class_class_uri: ClassVar[URIRef] = NWB_SCHEMA_LANGUAGE.NamingMixin
|
||||||
|
class_class_curie: ClassVar[str] = "nwb_schema_language:NamingMixin"
|
||||||
|
class_name: ClassVar[str] = "NamingMixin"
|
||||||
|
class_model_uri: ClassVar[URIRef] = NWB_SCHEMA_LANGUAGE.NamingMixin
|
||||||
|
|
||||||
|
|
||||||
|
AnyType = Any
|
||||||
|
|
||||||
|
# Enumerations
|
||||||
|
class ReftypeOptions(EnumDefinitionImpl):
|
||||||
|
|
||||||
|
ref = PermissibleValue(
|
||||||
|
text="ref",
|
||||||
|
description="Reference to another group or dataset of the given target_type")
|
||||||
|
reference = PermissibleValue(
|
||||||
|
text="reference",
|
||||||
|
description="Reference to another group or dataset of the given target_type")
|
||||||
|
object = PermissibleValue(
|
||||||
|
text="object",
|
||||||
|
description="Reference to another group or dataset of the given target_type")
|
||||||
|
region = PermissibleValue(
|
||||||
|
text="region",
|
||||||
|
description="Reference to a region (i.e. subset) of another dataset of the given target_type")
|
||||||
|
|
||||||
_defn = EnumDefinition(
|
_defn = EnumDefinition(
|
||||||
name="PersonStatus",
|
name="ReftypeOptions",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
class QuantityEnum(EnumDefinitionImpl):
|
||||||
|
|
||||||
|
zero_or_many = PermissibleValue(
|
||||||
|
text="zero_or_many",
|
||||||
|
description="Zero or more instances, equivalent to *")
|
||||||
|
one_or_many = PermissibleValue(
|
||||||
|
text="one_or_many",
|
||||||
|
description="One or more instances, equivalent to +")
|
||||||
|
zero_or_one = PermissibleValue(
|
||||||
|
text="zero_or_one",
|
||||||
|
description="Zero or one instances, equivalent to ?")
|
||||||
|
|
||||||
|
_defn = EnumDefinition(
|
||||||
|
name="QuantityEnum",
|
||||||
|
)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def _addvals(cls):
|
||||||
|
setattr(cls, "*",
|
||||||
|
PermissibleValue(
|
||||||
|
text="*",
|
||||||
|
description="Zero or more instances, equivalent to zero_or_many"))
|
||||||
|
setattr(cls, "?",
|
||||||
|
PermissibleValue(
|
||||||
|
text="?",
|
||||||
|
description="Zero or one instances, equivalent to zero_or_one"))
|
||||||
|
setattr(cls, "+",
|
||||||
|
PermissibleValue(
|
||||||
|
text="+",
|
||||||
|
description="One or more instances, equivalent to one_or_many"))
|
||||||
|
|
||||||
|
class FlatDtype(EnumDefinitionImpl):
|
||||||
|
|
||||||
|
float = PermissibleValue(
|
||||||
|
text="float",
|
||||||
|
description="single precision floating point (32 bit)")
|
||||||
|
float32 = PermissibleValue(
|
||||||
|
text="float32",
|
||||||
|
description="single precision floating point (32 bit)")
|
||||||
|
double = PermissibleValue(
|
||||||
|
text="double",
|
||||||
|
description="double precision floating point (64 bit)")
|
||||||
|
float64 = PermissibleValue(
|
||||||
|
text="float64",
|
||||||
|
description="double precision floating point (64 bit)")
|
||||||
|
long = PermissibleValue(
|
||||||
|
text="long",
|
||||||
|
description="signed 64 bit integer")
|
||||||
|
int64 = PermissibleValue(
|
||||||
|
text="int64",
|
||||||
|
description="signed 64 bit integer")
|
||||||
|
int = PermissibleValue(
|
||||||
|
text="int",
|
||||||
|
description="signed 32 bit integer")
|
||||||
|
int32 = PermissibleValue(
|
||||||
|
text="int32",
|
||||||
|
description="signed 32 bit integer")
|
||||||
|
int16 = PermissibleValue(
|
||||||
|
text="int16",
|
||||||
|
description="signed 16 bit integer")
|
||||||
|
short = PermissibleValue(
|
||||||
|
text="short",
|
||||||
|
description="signed 16 bit integer")
|
||||||
|
int8 = PermissibleValue(
|
||||||
|
text="int8",
|
||||||
|
description="signed 8 bit integer")
|
||||||
|
uint = PermissibleValue(
|
||||||
|
text="uint",
|
||||||
|
description="unsigned 32 bit integer")
|
||||||
|
uint32 = PermissibleValue(
|
||||||
|
text="uint32",
|
||||||
|
description="unsigned 32 bit integer")
|
||||||
|
uint16 = PermissibleValue(
|
||||||
|
text="uint16",
|
||||||
|
description="unsigned 16 bit integer")
|
||||||
|
uint8 = PermissibleValue(
|
||||||
|
text="uint8",
|
||||||
|
description="unsigned 8 bit integer")
|
||||||
|
uint64 = PermissibleValue(
|
||||||
|
text="uint64",
|
||||||
|
description="unsigned 64 bit integer")
|
||||||
|
numeric = PermissibleValue(
|
||||||
|
text="numeric",
|
||||||
|
description="any numeric type (i.e., any int, uint, float)")
|
||||||
|
text = PermissibleValue(
|
||||||
|
text="text",
|
||||||
|
description="8-bit Unicode")
|
||||||
|
utf = PermissibleValue(
|
||||||
|
text="utf",
|
||||||
|
description="8-bit Unicode")
|
||||||
|
utf8 = PermissibleValue(
|
||||||
|
text="utf8",
|
||||||
|
description="8-bit Unicode")
|
||||||
|
ascii = PermissibleValue(
|
||||||
|
text="ascii",
|
||||||
|
description="ASCII text")
|
||||||
|
bool = PermissibleValue(
|
||||||
|
text="bool",
|
||||||
|
description="8 bit integer with valid values 0 or 1")
|
||||||
|
isodatetime = PermissibleValue(
|
||||||
|
text="isodatetime",
|
||||||
|
description="ISO 8601 datetime string")
|
||||||
|
|
||||||
|
_defn = EnumDefinition(
|
||||||
|
name="FlatDtype",
|
||||||
|
)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def _addvals(cls):
|
||||||
|
setattr(cls, "utf-8",
|
||||||
|
PermissibleValue(
|
||||||
|
text="utf-8",
|
||||||
|
description="8-bit Unicode"))
|
||||||
|
|
||||||
# Slots
|
# Slots
|
||||||
class slots:
|
class slots:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
slots.id = Slot(uri=SCHEMA.identifier, name="id", curie=SCHEMA.curie('identifier'),
|
slots.doc = Slot(uri=NWB_SCHEMA_LANGUAGE.doc, name="doc", curie=NWB_SCHEMA_LANGUAGE.curie('doc'),
|
||||||
model_uri=NWB_SCHEMA_LANGUAGE.id, domain=None, range=URIRef)
|
model_uri=NWB_SCHEMA_LANGUAGE.doc, domain=None, range=str)
|
||||||
|
|
||||||
slots.name = Slot(uri=SCHEMA.name, name="name", curie=SCHEMA.curie('name'),
|
slots.name = Slot(uri=NWB_SCHEMA_LANGUAGE.name, name="name", curie=NWB_SCHEMA_LANGUAGE.curie('name'),
|
||||||
model_uri=NWB_SCHEMA_LANGUAGE.name, domain=None, range=Optional[str])
|
model_uri=NWB_SCHEMA_LANGUAGE.name, domain=None, range=Optional[str])
|
||||||
|
|
||||||
slots.description = Slot(uri=SCHEMA.description, name="description", curie=SCHEMA.curie('description'),
|
slots.full_name = Slot(uri=NWB_SCHEMA_LANGUAGE.full_name, name="full_name", curie=NWB_SCHEMA_LANGUAGE.curie('full_name'),
|
||||||
model_uri=NWB_SCHEMA_LANGUAGE.description, domain=None, range=Optional[str])
|
model_uri=NWB_SCHEMA_LANGUAGE.full_name, domain=None, range=Optional[str])
|
||||||
|
|
||||||
slots.primary_email = Slot(uri=SCHEMA.email, name="primary_email", curie=SCHEMA.curie('email'),
|
slots.version = Slot(uri=NWB_SCHEMA_LANGUAGE.version, name="version", curie=NWB_SCHEMA_LANGUAGE.curie('version'),
|
||||||
model_uri=NWB_SCHEMA_LANGUAGE.primary_email, domain=None, range=Optional[str])
|
model_uri=NWB_SCHEMA_LANGUAGE.version, domain=None, range=str,
|
||||||
|
pattern=re.compile(r'^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$'))
|
||||||
|
|
||||||
slots.birth_date = Slot(uri=SCHEMA.birthDate, name="birth_date", curie=SCHEMA.curie('birthDate'),
|
slots.date = Slot(uri=SCHEMA.dateModified, name="date", curie=SCHEMA.curie('dateModified'),
|
||||||
model_uri=NWB_SCHEMA_LANGUAGE.birth_date, domain=None, range=Optional[Union[str, XSDDate]])
|
model_uri=NWB_SCHEMA_LANGUAGE.date, domain=None, range=Optional[Union[str, XSDDate]])
|
||||||
|
|
||||||
slots.age_in_years = Slot(uri=NWB_SCHEMA_LANGUAGE.age_in_years, name="age_in_years", curie=NWB_SCHEMA_LANGUAGE.curie('age_in_years'),
|
slots.author = Slot(uri=SCHEMA.author, name="author", curie=SCHEMA.curie('author'),
|
||||||
model_uri=NWB_SCHEMA_LANGUAGE.age_in_years, domain=None, range=Optional[int])
|
model_uri=NWB_SCHEMA_LANGUAGE.author, domain=None, range=Union[str, List[str]])
|
||||||
|
|
||||||
slots.vital_status = Slot(uri=NWB_SCHEMA_LANGUAGE.vital_status, name="vital_status", curie=NWB_SCHEMA_LANGUAGE.curie('vital_status'),
|
slots.contact = Slot(uri=SCHEMA.email, name="contact", curie=SCHEMA.curie('email'),
|
||||||
model_uri=NWB_SCHEMA_LANGUAGE.vital_status, domain=None, range=Optional[Union[str, "PersonStatus"]])
|
model_uri=NWB_SCHEMA_LANGUAGE.contact, domain=None, range=Union[str, List[str]])
|
||||||
|
|
||||||
slots.namespacesCollection__entries = Slot(uri=NWB_SCHEMA_LANGUAGE.entries, name="namespacesCollection__entries", curie=NWB_SCHEMA_LANGUAGE.curie('entries'),
|
slots.schema = Slot(uri=NWB_SCHEMA_LANGUAGE.schema, name="schema", curie=NWB_SCHEMA_LANGUAGE.curie('schema'),
|
||||||
model_uri=NWB_SCHEMA_LANGUAGE.namespacesCollection__entries, domain=None, range=Optional[Union[Dict[Union[str, NamespacesId], Union[dict, Namespaces]], List[Union[dict, Namespaces]]]])
|
model_uri=NWB_SCHEMA_LANGUAGE.schema, domain=None, range=Optional[Union[Union[dict, Schema], List[Union[dict, Schema]]]])
|
||||||
|
|
||||||
slots.Namespaces_primary_email = Slot(uri=SCHEMA.email, name="Namespaces_primary_email", curie=SCHEMA.curie('email'),
|
slots.source = Slot(uri=NWB_SCHEMA_LANGUAGE.source, name="source", curie=NWB_SCHEMA_LANGUAGE.curie('source'),
|
||||||
model_uri=NWB_SCHEMA_LANGUAGE.Namespaces_primary_email, domain=Namespaces, range=Optional[str],
|
model_uri=NWB_SCHEMA_LANGUAGE.source, domain=None, range=Optional[str],
|
||||||
pattern=re.compile(r'^\S+@[\S+\.]+\S+'))
|
pattern=re.compile(r'.*\.(yml|yaml|json)'))
|
||||||
|
|
||||||
|
slots.namespace = Slot(uri=NWB_SCHEMA_LANGUAGE.namespace, name="namespace", curie=NWB_SCHEMA_LANGUAGE.curie('namespace'),
|
||||||
|
model_uri=NWB_SCHEMA_LANGUAGE.namespace, domain=None, range=Optional[str])
|
||||||
|
|
||||||
|
slots.namespaces = Slot(uri=NWB_SCHEMA_LANGUAGE.namespaces, name="namespaces", curie=NWB_SCHEMA_LANGUAGE.curie('namespaces'),
|
||||||
|
model_uri=NWB_SCHEMA_LANGUAGE.namespaces, domain=None, range=Optional[Union[Union[dict, Namespace], List[Union[dict, Namespace]]]])
|
||||||
|
|
||||||
|
slots.neurodata_types = Slot(uri=NWB_SCHEMA_LANGUAGE.neurodata_types, name="neurodata_types", curie=NWB_SCHEMA_LANGUAGE.curie('neurodata_types'),
|
||||||
|
model_uri=NWB_SCHEMA_LANGUAGE.neurodata_types, domain=None, range=Optional[Union[str, List[str]]])
|
||||||
|
|
||||||
|
slots.title = Slot(uri=NWB_SCHEMA_LANGUAGE.title, name="title", curie=NWB_SCHEMA_LANGUAGE.curie('title'),
|
||||||
|
model_uri=NWB_SCHEMA_LANGUAGE.title, domain=None, range=Optional[str])
|
||||||
|
|
||||||
|
slots.neurodata_type_def = Slot(uri=NWB_SCHEMA_LANGUAGE.neurodata_type_def, name="neurodata_type_def", curie=NWB_SCHEMA_LANGUAGE.curie('neurodata_type_def'),
|
||||||
|
model_uri=NWB_SCHEMA_LANGUAGE.neurodata_type_def, domain=None, range=Optional[str])
|
||||||
|
|
||||||
|
slots.neurodata_type_inc = Slot(uri=NWB_SCHEMA_LANGUAGE.neurodata_type_inc, name="neurodata_type_inc", curie=NWB_SCHEMA_LANGUAGE.curie('neurodata_type_inc'),
|
||||||
|
model_uri=NWB_SCHEMA_LANGUAGE.neurodata_type_inc, domain=None, range=Optional[str])
|
||||||
|
|
||||||
|
slots.default_name = Slot(uri=NWB_SCHEMA_LANGUAGE.default_name, name="default_name", curie=NWB_SCHEMA_LANGUAGE.curie('default_name'),
|
||||||
|
model_uri=NWB_SCHEMA_LANGUAGE.default_name, domain=None, range=Optional[str])
|
||||||
|
|
||||||
|
slots.quantity = Slot(uri=NWB_SCHEMA_LANGUAGE.quantity, name="quantity", curie=NWB_SCHEMA_LANGUAGE.curie('quantity'),
|
||||||
|
model_uri=NWB_SCHEMA_LANGUAGE.quantity, domain=None, range=Optional[str])
|
||||||
|
|
||||||
|
slots.linkable = Slot(uri=NWB_SCHEMA_LANGUAGE.linkable, name="linkable", curie=NWB_SCHEMA_LANGUAGE.curie('linkable'),
|
||||||
|
model_uri=NWB_SCHEMA_LANGUAGE.linkable, domain=None, range=Optional[Union[bool, Bool]])
|
||||||
|
|
||||||
|
slots.attributes = Slot(uri=NWB_SCHEMA_LANGUAGE.attributes, name="attributes", curie=NWB_SCHEMA_LANGUAGE.curie('attributes'),
|
||||||
|
model_uri=NWB_SCHEMA_LANGUAGE.attributes, domain=None, range=Optional[Union[Union[dict, Attribute], List[Union[dict, Attribute]]]])
|
||||||
|
|
||||||
|
slots.datasets = Slot(uri=NWB_SCHEMA_LANGUAGE.datasets, name="datasets", curie=NWB_SCHEMA_LANGUAGE.curie('datasets'),
|
||||||
|
model_uri=NWB_SCHEMA_LANGUAGE.datasets, domain=None, range=Optional[Union[Union[dict, Dataset], List[Union[dict, Dataset]]]])
|
||||||
|
|
||||||
|
slots.groups = Slot(uri=NWB_SCHEMA_LANGUAGE.groups, name="groups", curie=NWB_SCHEMA_LANGUAGE.curie('groups'),
|
||||||
|
model_uri=NWB_SCHEMA_LANGUAGE.groups, domain=None, range=Optional[Union[Union[dict, Group], List[Union[dict, Group]]]])
|
||||||
|
|
||||||
|
slots.links = Slot(uri=NWB_SCHEMA_LANGUAGE.links, name="links", curie=NWB_SCHEMA_LANGUAGE.curie('links'),
|
||||||
|
model_uri=NWB_SCHEMA_LANGUAGE.links, domain=None, range=Optional[Union[Union[dict, Link], List[Union[dict, Link]]]])
|
||||||
|
|
||||||
|
slots.dtype = Slot(uri=NWB_SCHEMA_LANGUAGE.dtype, name="dtype", curie=NWB_SCHEMA_LANGUAGE.curie('dtype'),
|
||||||
|
model_uri=NWB_SCHEMA_LANGUAGE.dtype, domain=None, range=Optional[str])
|
||||||
|
|
||||||
|
slots.dims = Slot(uri=NWB_SCHEMA_LANGUAGE.dims, name="dims", curie=NWB_SCHEMA_LANGUAGE.curie('dims'),
|
||||||
|
model_uri=NWB_SCHEMA_LANGUAGE.dims, domain=None, range=Optional[Union[str, List[str]]])
|
||||||
|
|
||||||
|
slots.shape = Slot(uri=NWB_SCHEMA_LANGUAGE.shape, name="shape", curie=NWB_SCHEMA_LANGUAGE.curie('shape'),
|
||||||
|
model_uri=NWB_SCHEMA_LANGUAGE.shape, domain=None, range=Optional[Union[str, List[str]]])
|
||||||
|
|
||||||
|
slots.value = Slot(uri=NWB_SCHEMA_LANGUAGE.value, name="value", curie=NWB_SCHEMA_LANGUAGE.curie('value'),
|
||||||
|
model_uri=NWB_SCHEMA_LANGUAGE.value, domain=None, range=Optional[Union[dict, AnyType]])
|
||||||
|
|
||||||
|
slots.default_value = Slot(uri=NWB_SCHEMA_LANGUAGE.default_value, name="default_value", curie=NWB_SCHEMA_LANGUAGE.curie('default_value'),
|
||||||
|
model_uri=NWB_SCHEMA_LANGUAGE.default_value, domain=None, range=Optional[Union[dict, AnyType]])
|
||||||
|
|
||||||
|
slots.required = Slot(uri=NWB_SCHEMA_LANGUAGE.required, name="required", curie=NWB_SCHEMA_LANGUAGE.curie('required'),
|
||||||
|
model_uri=NWB_SCHEMA_LANGUAGE.required, domain=None, range=Optional[Union[bool, Bool]])
|
||||||
|
|
||||||
|
slots.target_type = Slot(uri=NWB_SCHEMA_LANGUAGE.target_type, name="target_type", curie=NWB_SCHEMA_LANGUAGE.curie('target_type'),
|
||||||
|
model_uri=NWB_SCHEMA_LANGUAGE.target_type, domain=None, range=str)
|
||||||
|
|
||||||
|
slots.reftype = Slot(uri=NWB_SCHEMA_LANGUAGE.reftype, name="reftype", curie=NWB_SCHEMA_LANGUAGE.curie('reftype'),
|
||||||
|
model_uri=NWB_SCHEMA_LANGUAGE.reftype, domain=None, range=Optional[Union[str, "ReftypeOptions"]])
|
||||||
|
|
||||||
|
slots.Namespace_name = Slot(uri=NWB_SCHEMA_LANGUAGE.name, name="Namespace_name", curie=NWB_SCHEMA_LANGUAGE.curie('name'),
|
||||||
|
model_uri=NWB_SCHEMA_LANGUAGE.Namespace_name, domain=Namespace, range=str)
|
||||||
|
|
||||||
|
slots.Schema_doc = Slot(uri=NWB_SCHEMA_LANGUAGE.doc, name="Schema_doc", curie=NWB_SCHEMA_LANGUAGE.curie('doc'),
|
||||||
|
model_uri=NWB_SCHEMA_LANGUAGE.Schema_doc, domain=Schema, range=str)
|
||||||
|
|
||||||
|
slots.Attribute_name = Slot(uri=NWB_SCHEMA_LANGUAGE.name, name="Attribute_name", curie=NWB_SCHEMA_LANGUAGE.curie('name'),
|
||||||
|
model_uri=NWB_SCHEMA_LANGUAGE.Attribute_name, domain=Attribute, range=str)
|
||||||
|
|
||||||
|
slots.CompoundDtype_name = Slot(uri=NWB_SCHEMA_LANGUAGE.name, name="CompoundDtype_name", curie=NWB_SCHEMA_LANGUAGE.curie('name'),
|
||||||
|
model_uri=NWB_SCHEMA_LANGUAGE.CompoundDtype_name, domain=CompoundDtype, range=str)
|
||||||
|
|
||||||
|
slots.CompoundDtype_dtype = Slot(uri=NWB_SCHEMA_LANGUAGE.dtype, name="CompoundDtype_dtype", curie=NWB_SCHEMA_LANGUAGE.curie('dtype'),
|
||||||
|
model_uri=NWB_SCHEMA_LANGUAGE.CompoundDtype_dtype, domain=CompoundDtype, range=Union[str, "FlatDtype"])
|
|
@ -11,86 +11,373 @@ see_also:
|
||||||
prefixes:
|
prefixes:
|
||||||
nwb_schema_language: https://w3id.org/p2p_ld/nwb-schema-language/
|
nwb_schema_language: https://w3id.org/p2p_ld/nwb-schema-language/
|
||||||
linkml: https://w3id.org/linkml/
|
linkml: https://w3id.org/linkml/
|
||||||
biolink: https://w3id.org/biolink/
|
|
||||||
schema: http://schema.org/
|
schema: http://schema.org/
|
||||||
PATO: http://purl.obolibrary.org/obo/PATO_
|
|
||||||
example: https://example.org/
|
|
||||||
default_prefix: nwb_schema_language
|
default_prefix: nwb_schema_language
|
||||||
default_range: string
|
default_range: string
|
||||||
|
|
||||||
imports:
|
imports:
|
||||||
- linkml:types
|
- linkml:types
|
||||||
|
|
||||||
classes:
|
settings:
|
||||||
|
email: "\\S+@\\S+{\\.\\w}+"
|
||||||
|
protected_string: "^[A-Za-z_][A-Za-z0-9_]*$"
|
||||||
|
|
||||||
NamedThing:
|
classes:
|
||||||
description: >-
|
Namespace:
|
||||||
A generic grouping for any identifiable entity
|
|
||||||
slots:
|
slots:
|
||||||
- id
|
- doc
|
||||||
- name
|
- name
|
||||||
- description
|
- full_name
|
||||||
class_uri: schema:Thing
|
- version
|
||||||
|
- date
|
||||||
|
- author
|
||||||
|
- contact
|
||||||
|
- schema
|
||||||
|
slot_usage:
|
||||||
|
name:
|
||||||
|
required: true
|
||||||
|
|
||||||
Namespaces:
|
Namespaces:
|
||||||
is_a: NamedThing
|
|
||||||
description: >-
|
|
||||||
Represents a Namespaces
|
|
||||||
slots:
|
slots:
|
||||||
- primary_email
|
- namespaces
|
||||||
- birth_date
|
|
||||||
- age_in_years
|
Schema:
|
||||||
- vital_status
|
slots:
|
||||||
|
- source
|
||||||
|
- namespace
|
||||||
|
- doc
|
||||||
|
- title
|
||||||
|
- neurodata_types
|
||||||
slot_usage:
|
slot_usage:
|
||||||
primary_email:
|
doc:
|
||||||
pattern: "^\\S+@[\\S+\\.]+\\S+"
|
required: false
|
||||||
|
rules:
|
||||||
|
- preconditions: {slot_conditions: { namespace: { value_presence: ABSENT }}}
|
||||||
|
postconditions: {slot_conditions: { source: {required: true }}}
|
||||||
|
description: If namespace is absent, source is required
|
||||||
|
- preconditions: {slot_conditions: { source: { value_presence: ABSENT }}}
|
||||||
|
postconditions: {slot_conditions: { namespace: {required: true }}}
|
||||||
|
description: If source is absent, namespace is required.
|
||||||
|
- preconditions: { slot_conditions: { namespace: { value_presence: PRESENT }}}
|
||||||
|
postconditions: { slot_conditions: { source: { value_presence: ABSENT }}}
|
||||||
|
description: If namespace is present, source is cannot be
|
||||||
|
- preconditions: { slot_conditions: { source: { value_presence: PRESENT }}}
|
||||||
|
postconditions: { slot_conditions: { namespace: { value_presence: ABSENT }}}
|
||||||
|
description: If source is present, namespace cannot be.
|
||||||
|
|
||||||
NamespacesCollection:
|
Group:
|
||||||
tree_root: true
|
mixins:
|
||||||
description: >-
|
- NamingMixin
|
||||||
A holder for Namespaces objects
|
slots:
|
||||||
attributes:
|
- neurodata_type_def
|
||||||
entries:
|
- neurodata_type_inc
|
||||||
range: Namespaces
|
- name
|
||||||
|
- default_name
|
||||||
|
- doc
|
||||||
|
- quantity
|
||||||
|
- linkable
|
||||||
|
- attributes
|
||||||
|
- datasets
|
||||||
|
- groups
|
||||||
|
- links
|
||||||
|
|
||||||
|
Attribute:
|
||||||
|
mixins:
|
||||||
|
- DtypeMixin
|
||||||
|
slots:
|
||||||
|
- name
|
||||||
|
- dims
|
||||||
|
- shape
|
||||||
|
- value
|
||||||
|
- default_value
|
||||||
|
- doc
|
||||||
|
- required
|
||||||
|
slot_usage:
|
||||||
|
name:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
Link:
|
||||||
|
slots:
|
||||||
|
- name
|
||||||
|
- doc
|
||||||
|
- target_type
|
||||||
|
- quantity
|
||||||
|
|
||||||
|
Dataset:
|
||||||
|
mixins:
|
||||||
|
- DtypeMixin
|
||||||
|
- NamingMixin
|
||||||
|
slots:
|
||||||
|
- neurodata_type_def
|
||||||
|
- neurodata_type_inc
|
||||||
|
- name
|
||||||
|
- default_name
|
||||||
|
- dims
|
||||||
|
- shape
|
||||||
|
- value
|
||||||
|
- default_value
|
||||||
|
- doc
|
||||||
|
- quantity
|
||||||
|
- linkable
|
||||||
|
- attributes
|
||||||
|
|
||||||
|
ReferenceDtype:
|
||||||
|
slots:
|
||||||
|
- target_type
|
||||||
|
- reftype
|
||||||
|
|
||||||
|
CompoundDtype:
|
||||||
|
slots:
|
||||||
|
- name
|
||||||
|
- doc
|
||||||
|
- dtype
|
||||||
|
slot_usage:
|
||||||
|
name:
|
||||||
|
required: true
|
||||||
|
dtype:
|
||||||
|
required: true
|
||||||
|
range: FlatDtype
|
||||||
|
|
||||||
|
DtypeMixin:
|
||||||
|
mixin: true
|
||||||
|
slots:
|
||||||
|
- dtype
|
||||||
|
rules:
|
||||||
|
- preconditions:
|
||||||
|
slot_conditions:
|
||||||
|
dtype:
|
||||||
|
range: CompoundDtype
|
||||||
|
postconditions:
|
||||||
|
slot_conditions:
|
||||||
|
dtype:
|
||||||
multivalued: true
|
multivalued: true
|
||||||
inlined: true
|
|
||||||
|
NamingMixin:
|
||||||
|
mixin: true
|
||||||
|
description: require either neurodata_type_def or name to be present
|
||||||
|
rules:
|
||||||
|
- preconditions: { slot_conditions: { neurodata_type_def: { value_presence: ABSENT } } }
|
||||||
|
postconditions: { slot_conditions: { name: { required: true } } }
|
||||||
|
description: If not defining a new type, a name is required
|
||||||
|
- preconditions: { slot_conditions: { name: { value_presence: ABSENT } } }
|
||||||
|
postconditions: { slot_conditions: { neurodata_type_def: { required: true } } }
|
||||||
|
description: If a name is not given, must be defining a new type
|
||||||
|
|
||||||
|
AnyType:
|
||||||
|
class_uri: linkml:Any
|
||||||
|
|
||||||
|
|
||||||
slots:
|
slots:
|
||||||
id:
|
# namespaces
|
||||||
identifier: true
|
doc:
|
||||||
slot_uri: schema:identifier
|
required: true
|
||||||
range: uriorcurie
|
description: Description of corresponding object.
|
||||||
description: A unique identifier for a thing
|
|
||||||
name:
|
name:
|
||||||
slot_uri: schema:name
|
structured_pattern:
|
||||||
description: A human-readable name for a thing
|
syntax: "{protected_string}"
|
||||||
description:
|
interpolated: true
|
||||||
slot_uri: schema:description
|
full_name:
|
||||||
description: A human-readable description for a thing
|
description: Optional string with extended full name for the namespace.
|
||||||
primary_email:
|
version:
|
||||||
slot_uri: schema:email
|
required: true
|
||||||
description: The main email address of a person
|
pattern: "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$"
|
||||||
birth_date:
|
date:
|
||||||
slot_uri: schema:birthDate
|
|
||||||
range: date
|
range: date
|
||||||
description: Date on which a person is born
|
slot_uri: schema:dateModified
|
||||||
age_in_years:
|
description: Date that a namespace was last modified or released
|
||||||
range: integer
|
examples:
|
||||||
description: Number of years since birth
|
- value: 2017-04-25 17:14:13
|
||||||
vital_status:
|
author:
|
||||||
range: PersonStatus
|
multivalued: true
|
||||||
description: living or dead status
|
required: true
|
||||||
|
slot_uri: schema:author
|
||||||
|
description: List of strings with the names of the authors of the namespace.
|
||||||
|
contact:
|
||||||
|
multivalued: true
|
||||||
|
required: true
|
||||||
|
slot_uri: schema:email
|
||||||
|
structured_pattern:
|
||||||
|
syntax: "{email}"
|
||||||
|
interpolated: true
|
||||||
|
description: List of strings with the contact information for the authors. Ordering of the contacts should match the ordering of the authors.
|
||||||
|
schema:
|
||||||
|
multivalued: true
|
||||||
|
range: Schema
|
||||||
|
description: List of the schema to be included in this namespace.
|
||||||
|
inlined_as_list: true
|
||||||
|
|
||||||
|
# schema
|
||||||
|
source:
|
||||||
|
description: describes the name of the YAML (or JSON) file with the schema specification. The schema files should be located in the same folder as the namespace file.
|
||||||
|
pattern: ".*\\.(yml|yaml|json)"
|
||||||
|
namespace:
|
||||||
|
description: describes a named reference to another namespace. In contrast to source, this is a reference by name to a known namespace (i.e., the namespace is resolved during the build and must point to an already existing namespace). This mechanism is used to allow, e.g., extension of a core namespace (here the NWB core namespace) without requiring hard paths to the files describing the core namespace. Either source or namespace must be specified, but not both.
|
||||||
|
namespaces:
|
||||||
|
multivalued: true
|
||||||
|
range: Namespace
|
||||||
|
neurodata_types:
|
||||||
|
multivalued: true
|
||||||
|
any_of:
|
||||||
|
- range: Dataset
|
||||||
|
- range: Group
|
||||||
|
description: an optional list of strings indicating which data types should be included from the given specification source or namespace. The default is null indicating that all data types should be included.
|
||||||
|
title:
|
||||||
|
description: a descriptive title for a file for documentation purposes.
|
||||||
|
|
||||||
|
# groups
|
||||||
|
neurodata_type_def:
|
||||||
|
structured_pattern:
|
||||||
|
syntax: "{protected_string}"
|
||||||
|
interpolated: true
|
||||||
|
neurodata_type_inc:
|
||||||
|
structured_pattern:
|
||||||
|
syntax: "{protected_string}"
|
||||||
|
interpolated: true
|
||||||
|
default_name:
|
||||||
|
structured_pattern:
|
||||||
|
syntax: "{protected_string}"
|
||||||
|
interpolated: true
|
||||||
|
quantity:
|
||||||
|
any_of:
|
||||||
|
- range: integer
|
||||||
|
minimum_value: 1
|
||||||
|
- range: QuantityEnum
|
||||||
|
ifabsent: int(1)
|
||||||
|
todos:
|
||||||
|
- logic to check that the corresponding class can only be implemented quantity times.
|
||||||
|
linkable:
|
||||||
|
range: boolean
|
||||||
|
|
||||||
|
# Recursive properties
|
||||||
|
attributes:
|
||||||
|
range: Attribute
|
||||||
|
multivalued: true
|
||||||
|
datasets:
|
||||||
|
range: Dataset
|
||||||
|
multivalued: true
|
||||||
|
groups:
|
||||||
|
range: Group
|
||||||
|
multivalued: true
|
||||||
|
links:
|
||||||
|
range: Link
|
||||||
|
multivalued: true
|
||||||
|
|
||||||
|
# attributes
|
||||||
|
dtype:
|
||||||
|
exactly_one_of:
|
||||||
|
- range: FlatDtype
|
||||||
|
- range: CompoundDtype
|
||||||
|
- range: ReferenceDtype
|
||||||
|
dims:
|
||||||
|
multivalued: true
|
||||||
|
range: string
|
||||||
|
todos:
|
||||||
|
- Can't quite figure out how to allow an array of arrays
|
||||||
|
shape:
|
||||||
|
multivalued: true
|
||||||
|
exactly_one_of:
|
||||||
|
- range: integer
|
||||||
|
minimum_value: 1
|
||||||
|
- equals_string: "null"
|
||||||
|
todos:
|
||||||
|
- Can't quite figure out how to allow an array of arrays
|
||||||
|
value:
|
||||||
|
range: AnyType
|
||||||
|
description: Optional constant, fixed value for the attribute.
|
||||||
|
default_value:
|
||||||
|
range: AnyType
|
||||||
|
description: Optional default value for variable-valued attributes.
|
||||||
|
required:
|
||||||
|
range: boolean
|
||||||
|
description: Optional boolean key describing whether the attribute is required. Default value is True.
|
||||||
|
ifabsent: "true"
|
||||||
|
|
||||||
|
# links
|
||||||
|
target_type:
|
||||||
|
description: Describes the neurodata_type of the target that the reference points
|
||||||
|
to
|
||||||
|
required: true
|
||||||
|
any_of:
|
||||||
|
- range: Dataset
|
||||||
|
- range: Group
|
||||||
|
reftype:
|
||||||
|
description: describes the kind of reference
|
||||||
|
range: reftype_options
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
enums:
|
enums:
|
||||||
PersonStatus:
|
reftype_options:
|
||||||
permissible_values:
|
permissible_values:
|
||||||
ALIVE:
|
ref: { description: Reference to another group or dataset of the given target_type }
|
||||||
description: the person is living
|
reference: { description: Reference to another group or dataset of the given target_type }
|
||||||
meaning: PATO:0001421
|
object: { description: Reference to another group or dataset of the given target_type }
|
||||||
DEAD:
|
region: { description: Reference to a region (i.e. subset) of another dataset of the given target_type}
|
||||||
description: the person is deceased
|
QuantityEnum:
|
||||||
meaning: PATO:0001422
|
permissible_values:
|
||||||
UNKNOWN:
|
"*":
|
||||||
description: the vital status is not known
|
description: Zero or more instances, equivalent to zero_or_many
|
||||||
todos:
|
"?":
|
||||||
- map this to an ontology
|
description: Zero or one instances, equivalent to zero_or_one
|
||||||
|
"+":
|
||||||
|
description: One or more instances, equivalent to one_or_many
|
||||||
|
"zero_or_many":
|
||||||
|
description: Zero or more instances, equivalent to *
|
||||||
|
"one_or_many":
|
||||||
|
description: One or more instances, equivalent to +
|
||||||
|
"zero_or_one":
|
||||||
|
description: Zero or one instances, equivalent to ?
|
||||||
|
FlatDtype:
|
||||||
|
permissible_values:
|
||||||
|
"float":
|
||||||
|
description: single precision floating point (32 bit)
|
||||||
|
"float32":
|
||||||
|
description: single precision floating point (32 bit)
|
||||||
|
"double":
|
||||||
|
description: double precision floating point (64 bit)
|
||||||
|
"float64":
|
||||||
|
description: double precision floating point (64 bit)
|
||||||
|
"long":
|
||||||
|
description: signed 64 bit integer
|
||||||
|
"int64":
|
||||||
|
description: signed 64 bit integer
|
||||||
|
"int":
|
||||||
|
description: signed 32 bit integer
|
||||||
|
"int32":
|
||||||
|
description: signed 32 bit integer
|
||||||
|
"int16":
|
||||||
|
description: signed 16 bit integer
|
||||||
|
"short":
|
||||||
|
description: signed 16 bit integer
|
||||||
|
"int8":
|
||||||
|
description: signed 8 bit integer
|
||||||
|
"uint":
|
||||||
|
description: unsigned 32 bit integer
|
||||||
|
"uint32":
|
||||||
|
description: unsigned 32 bit integer
|
||||||
|
"uint16":
|
||||||
|
description: unsigned 16 bit integer
|
||||||
|
"uint8":
|
||||||
|
description: unsigned 8 bit integer
|
||||||
|
"uint64":
|
||||||
|
description: unsigned 64 bit integer
|
||||||
|
"numeric":
|
||||||
|
description: any numeric type (i.e., any int, uint, float)
|
||||||
|
"text":
|
||||||
|
description: 8-bit Unicode
|
||||||
|
"utf":
|
||||||
|
description: 8-bit Unicode
|
||||||
|
"utf8":
|
||||||
|
description: 8-bit Unicode
|
||||||
|
"utf-8":
|
||||||
|
description: 8-bit Unicode
|
||||||
|
"ascii":
|
||||||
|
description: ASCII text
|
||||||
|
"bool":
|
||||||
|
description: 8 bit integer with valid values 0 or 1
|
||||||
|
"isodatetime":
|
||||||
|
description: ISO 8601 datetime string
|
||||||
|
examples:
|
||||||
|
- value: 2018-09-28T14:43:54.123+02:00
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ from linkml_runtime.loaders import yaml_loader
|
||||||
from nwb_schema_language.datamodel.nwb_schema_language import Namespaces
|
from nwb_schema_language.datamodel.nwb_schema_language import Namespaces
|
||||||
|
|
||||||
ROOT = os.path.join(os.path.dirname(__file__), '..')
|
ROOT = os.path.join(os.path.dirname(__file__), '..')
|
||||||
DATA_DIR = os.path.join(ROOT, "src", "data", "examples")
|
DATA_DIR = os.path.join(ROOT, "src", "data", "tests")
|
||||||
|
|
||||||
EXAMPLE_FILES = glob.glob(os.path.join(DATA_DIR, '*.yaml'))
|
EXAMPLE_FILES = glob.glob(os.path.join(DATA_DIR, '*.yaml'))
|
||||||
|
|
||||||
|
@ -15,8 +15,8 @@ EXAMPLE_FILES = glob.glob(os.path.join(DATA_DIR, '*.yaml'))
|
||||||
class TestData(unittest.TestCase):
|
class TestData(unittest.TestCase):
|
||||||
"""Test data and datamodel."""
|
"""Test data and datamodel."""
|
||||||
|
|
||||||
def test_data(self):
|
def test_namespaces(self):
|
||||||
"""Date test."""
|
"""Date test."""
|
||||||
for path in EXAMPLE_FILES:
|
namespace_file = [f for f in EXAMPLE_FILES if 'namespace.yaml' in f][0]
|
||||||
obj = yaml_loader.load(path, target_class=Namespaces)
|
obj = yaml_loader.load(namespace_file, target_class=Namespaces)
|
||||||
assert obj
|
assert obj
|
||||||
|
|
Loading…
Reference in a new issue