Skip to content

API reference

Core

dataioc.DataIoC

logger property

with_data(*data)

add(data_type, data=None)

add_provider(data_type, provider)

find_builder(dtype)

查找构造器

  • 直接以类别指定的构造器:适用于所有id下的 IndexedDataTypeDescriptor ,可以通用

  • 以特定 DataDescriptor 指定的构造器:只适用于特定的 DataDescriptor

dataioc.DataDescriptor

Bases: Generic[DataT]

用于在DataIoC中唯一标识一个数据和/或构造数据的数据类型描述符

Parameters:

Name Type Description Default
id

数据id

DefaultWeakID
Notes

DataDescriptor 需要作为字典的键,因此子类需要保证可哈希与可比较。 如果每个成员变量均满足条件,则子类自动满足该条件。

相同类型的多个不同数据可以通过id来区分,不显式指定时默认为 0 。 例如三个个同类型的传感器读数可以使用 SensorSensor[1]Sensor[2] 来标识, 此时他们在 DataIoC 中可以映射到不同的数据上。

Examples:

默认创建的数据类型描述符例如 Sensor 具有弱id,用于指示数据类型。 在 build 中使用这类描述符提取数据,会自动重映射到具体的id索引。

>>> from dataioc import DataDescriptor, DataIoC, DataNDArray
>>>
>>> class SensorData(DataNDArray):
...     def __new__(cls, data, **kwargs):
...         return super().__new__(cls, data, **kwargs)
>>>
>>> class Sum(DataDescriptor):
...     def __build__(self, container: DataIoC):
...         return container[SensorData].sum()  # SensorData 和 Sum 具有相同的id
>>>
>>> container = DataIoC().with_data(
...     SensorData([1, 1, 1]), SensorData[1]([2, 2, 2])
... )
>>> print(container[Sum[0]], container[Sum[1]])
3 6

手动指定索引的数据类型描述符例如 Sensor[1] 具有强id,指示某组具体的数据, 在 build 中不会被重新映射。

>>> class OffsetSensor0(DataDescriptor):
...     def __build__(self, container: DataIoC):
...         base = container[SensorData[0]].sum()  # 显式获取 0 号 SensorData
...         return base + container[SensorData]
>>>
>>> print(container[OffsetSensor0[0]], container[OffsetSensor0[1]])
[4 4 4] [5 5 5]

index(new_index, weak=True)

将当前数据描述符绑定到新的id索引,以实现关联同类别的不同数据

例如三个个同类型的传感器读数可以使用:

  • Sensor[0]
  • Sensor[1]
  • Sensor[2]

标识

Parameters:

Name Type Description Default
new_index

新的数据索引

required
weak

是否为弱绑定,弱绑定下,如果目标为强索引,则索引失效

True

Returns:

Type Description
新的索引id的数据类型

__getitem__(index)

直接强制绑定为新的id索引

Notes

内部代码应优先使用 index_implicit 以支持弱id的自动重绑定。

dataioc.IndexedData

dataioc.UniqueData

NumPy

dataioc.DataNDArray

Bases: ndarray, IndexedData