nwb-linkml/docs/meta/todo.md

2.4 KiB

TODO

v0.2 - update to linkml-arrays and formal release

NWB schema translation

  • handle links field in groups
  • handle compound dtype like in ophys.PlaneSegmentation.pixel_mask
  • handle compound dtype like in TimeSeriesReferenceVectorData
  • Create a validator that checks if all the lists in a compound dtype dataset are same length
  • Move making target optional in vectorIndex from pydantic generator to linkml generators!

Cleanup

  • Update pydantic generator

  • Restore regressions from stripping the generator

  • Make any_of with array ranges work

  • PR upstream equals_string and ifabsent (if existing PR doesn't fix)

  • Use the class rather than a string in _get_class_slot_range_origin: or inlined_as_list or ( # sv.get_identifier_slot(range_cls.name, use_key=True) is None and

  • Make a minimal pydanticgen-only package to slim linkml deps?

  • Disambiguate "maps" terminology - split out simple maps from the eg. dataset mapping classes

  • Remove unnecessary imports

    • dask
    • nptyping
  • Adapt the split generation to the new split generator style

Important things that are not implemented yet!

  • {meth}nwb_linkml.adapters.classes.ClassAdapter.handle_dtype does not yet handle compound dtypes, leaving them as AnyType instead. This is fine for a first draft since they are used rarely within NWB, but we will need to handle them by making slots for each of the dtypes since they typically represent table-like data.
  • Need to handle DynamicTables!
    • Adding columns?
    • Validating eg. all are same length?
    • Or do we want to just say "no dynamictables, just subclass and add more slots since it's super easy to do that."
    • method to return a dataframe
    • append rows/this should just be a df basically.
    • existing handler is fucked, for example, in maps/hdmf
  • Handle indirect indexing eg. https://pynwb.readthedocs.io/en/stable/tutorials/general/plot_timeintervals.html#accessing-referenced-timeseries

Remove monkeypatches/overrides once PRs are closed

Tests

  • Ensure schemas and pydantic modules in repos are up to date

Loading

  • Top-level containers are still a little janky, eg. how ProcessingModule just accepts extra args rather than properly abstracting value as a __getitem__(self, key) -> T:

Docs TODOs