mirror of
https://github.com/p2p-ld/nwb-linkml.git
synced 2025-01-10 06:04:28 +00:00
add numpy type to language element types
This commit is contained in:
parent
2e7670a2bd
commit
43187bfa3e
3 changed files with 51 additions and 14 deletions
|
@ -2,7 +2,7 @@
|
||||||
Language elements in nwb schema language that have a fixed, alternative representation
|
Language elements in nwb schema language that have a fixed, alternative representation
|
||||||
in LinkML. These are exported as an nwb.language.yml file along with every generated namespace
|
in LinkML. These are exported as an nwb.language.yml file along with every generated namespace
|
||||||
"""
|
"""
|
||||||
|
from typing import List
|
||||||
from linkml_runtime.linkml_model import (
|
from linkml_runtime.linkml_model import (
|
||||||
ClassDefinition,
|
ClassDefinition,
|
||||||
EnumDefinition,
|
EnumDefinition,
|
||||||
|
@ -12,7 +12,7 @@ from linkml_runtime.linkml_model import (
|
||||||
TypeDefinition,
|
TypeDefinition,
|
||||||
)
|
)
|
||||||
|
|
||||||
from nwb_linkml.maps import flat_to_linkml
|
from nwb_linkml.maps import flat_to_linkml, flat_to_np
|
||||||
from nwb_schema_language.datamodel.nwb_schema_pydantic import FlatDtype as FlatDtype_source
|
from nwb_schema_language.datamodel.nwb_schema_pydantic import FlatDtype as FlatDtype_source
|
||||||
|
|
||||||
FlatDType = EnumDefinition(
|
FlatDType = EnumDefinition(
|
||||||
|
@ -20,6 +20,8 @@ FlatDType = EnumDefinition(
|
||||||
permissible_values=[PermissibleValue(p) for p in FlatDtype_source.__members__],
|
permissible_values=[PermissibleValue(p) for p in FlatDtype_source.__members__],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def _make_dtypes() -> List[TypeDefinition]:
|
||||||
DTypeTypes = []
|
DTypeTypes = []
|
||||||
for nwbtype, linkmltype in flat_to_linkml.items():
|
for nwbtype, linkmltype in flat_to_linkml.items():
|
||||||
# skip the dtypes that are the same as the builtin linkml types (which should already exist)
|
# skip the dtypes that are the same as the builtin linkml types (which should already exist)
|
||||||
|
@ -31,8 +33,15 @@ for nwbtype, linkmltype in flat_to_linkml.items():
|
||||||
if nwbtype.startswith("uint"):
|
if nwbtype.startswith("uint"):
|
||||||
amin = 0
|
amin = 0
|
||||||
|
|
||||||
atype = TypeDefinition(name=nwbtype, minimum_value=amin, typeof=linkmltype)
|
np_type = flat_to_np[nwbtype]
|
||||||
|
|
||||||
|
repr_string = f'np.{np_type.__name__}' if np_type.__module__ == 'numpy' else None
|
||||||
|
|
||||||
|
atype = TypeDefinition(name=nwbtype, minimum_value=amin, typeof=linkmltype, repr=repr_string)
|
||||||
DTypeTypes.append(atype)
|
DTypeTypes.append(atype)
|
||||||
|
return DTypeTypes
|
||||||
|
|
||||||
|
DTypeTypes = _make_dtypes()
|
||||||
|
|
||||||
AnyType = ClassDefinition(
|
AnyType = ClassDefinition(
|
||||||
name="AnyType",
|
name="AnyType",
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
Mapping from one domain to another
|
Mapping from one domain to another
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from nwb_linkml.maps.dtype import flat_to_linkml, flat_to_nptyping
|
from nwb_linkml.maps.dtype import flat_to_linkml, flat_to_nptyping, flat_to_np
|
||||||
from nwb_linkml.maps.map import Map
|
from nwb_linkml.maps.map import Map
|
||||||
from nwb_linkml.maps.postload import MAP_HDMF_DATATYPE_DEF, MAP_HDMF_DATATYPE_INC
|
from nwb_linkml.maps.postload import MAP_HDMF_DATATYPE_DEF, MAP_HDMF_DATATYPE_INC
|
||||||
from nwb_linkml.maps.quantity import QUANTITY_MAP
|
from nwb_linkml.maps.quantity import QUANTITY_MAP
|
||||||
|
@ -13,5 +13,6 @@ __all__ = [
|
||||||
"QUANTITY_MAP",
|
"QUANTITY_MAP",
|
||||||
"Map",
|
"Map",
|
||||||
"flat_to_linkml",
|
"flat_to_linkml",
|
||||||
|
"flat_to_np",
|
||||||
"flat_to_nptyping",
|
"flat_to_nptyping",
|
||||||
]
|
]
|
||||||
|
|
|
@ -69,6 +69,33 @@ flat_to_nptyping = {
|
||||||
"object": "Object",
|
"object": "Object",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
flat_to_np = {
|
||||||
|
"float": float,
|
||||||
|
"float32": np.float32,
|
||||||
|
"double": np.double,
|
||||||
|
"float64": np.float64,
|
||||||
|
"long": np.longlong,
|
||||||
|
"int64": np.int64,
|
||||||
|
"int": int,
|
||||||
|
"int32": np.int32,
|
||||||
|
"int16": np.int16,
|
||||||
|
"short": np.short,
|
||||||
|
"int8": np.int8,
|
||||||
|
"uint": np.uint,
|
||||||
|
"uint32": np.uint32,
|
||||||
|
"uint16": np.uint16,
|
||||||
|
"uint8": np.uint8,
|
||||||
|
"uint64": np.uint64,
|
||||||
|
"numeric": np.number,
|
||||||
|
"text": str,
|
||||||
|
"utf": str,
|
||||||
|
"utf8": str,
|
||||||
|
"utf_8": str,
|
||||||
|
"ascii": str,
|
||||||
|
"bool": bool,
|
||||||
|
"isodatetime": np.datetime64,
|
||||||
|
}
|
||||||
|
|
||||||
np_to_python = {
|
np_to_python = {
|
||||||
Any: Any,
|
Any: Any,
|
||||||
np.number: float,
|
np.number: float,
|
||||||
|
|
Loading…
Reference in a new issue