Skip to content

Table(ak.Array) doesn't preserve AOESA #208

@Yuan-Ru-Lin

Description

@Yuan-Ru-Lin
import numpy as np
from lgdo import Table, ArrayOfEqualSizedArrays

t = Table({"waveforms": ArrayOfEqualSizedArrays(nda=np.array([[1,2,3], [4,5,6]]))})
ak_arr = t.view_as("ak")
t_back = Table(ak_arr)

assert isinstance(t_back["waveforms"], VectorOfVectors)  # Not ArrayOfEqualSizedArrays

It's because AOESA isn't handled in the following function.

def _ak_to_lgdo_or_col_dict(array: ak.Array):
if isinstance(array.type.content, ak.types.RecordType):
return {field: _ak_to_lgdo_or_col_dict(array[field]) for field in array.fields}
# be smart and just use Array when it makes sense
if (
isinstance(array.type.content, ak.types.NumpyType)
or array.type.content.parameters.get("__array__") == "string"
):
return Array(array)
# otherwise fallback to VoV
return VectorOfVectors(array)

Will submit a PR soon

Metadata

Metadata

Assignees

No one assigned

    Labels

    typesLGDO types

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions