Skip to content

Separate data containers from model participants in asset classes #164

@raymondwjang

Description

@raymondwjang

The asset classes need some changes. It has been staying true to the bare minimum idea of assets (i.e. simply contain data),
but as interactions with these assets take place across multiple nodes, it is a good idea to provide some common API on how to interact with the these assets as cala continually updates them.

Currently, there are CRUD ways cala interacts with assets (which are all array type):

  1. use the array values (Read)
  2. update the array values (Update)
  3. extend the array (Create)
  4. deprecate parts of the array (Delete)

At the same time, there are three types of array classes in cala:

  1. transient containers (e.g., estimator candidates, Frame): these classes are mainly used for typechecking and validations (e.g., nonnegative constraint). No CRUD operation is really necessary with these as these are technically single data points even though they are "arrays". (but i guess we do perform coordinate descents...hmmm)
  2. scoped non-model containers (e.g., buffers): these classes contain multiple data points, but do not contain information on the actual model of the neurons (i.e. does not have the component-axis in it). Hence, CRUD operations on these are very simple.
  3. scoped model containers (e.g., Footprints, Traces, etc.): these classes contain multiple data points, and participate in modeling the neurons (i.e. has the component-axis). CRUD operations on these are more complex depending on their shape, and how they are updated is often coupled with how the update values are calculated.

For these reasons, the current Assets class (which is at this point a misnomer in cala) needs to be updated to at least separate the transient types (1) from the others (2, 3). It makes no sense to perform CRUD on a single data point.

At the same time, I would like to separate the non-model containers and model containers for interface's sake (model containers's idea of CRUD would be around estimators, so I would like to name these operations around the modeling idea (fit, for example) which would be nonsensical for the non-model containers.)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions