Data#

Classes for using in-memory data from a miniscope

pydantic model miniscope_io.data.Frame#

An individual frame from a miniscope recording

Typically returned from SDCard.read()

Show JSON schema
{
   "title": "Frame",
   "type": "object",
   "properties": {
      "data": {
         "default": null,
         "title": "Data"
      },
      "headers": {
         "anyOf": [
            {
               "items": {
                  "$ref": "#/$defs/DataHeader"
               },
               "type": "array"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "title": "Headers"
      }
   },
   "$defs": {
      "DataHeader": {
         "description": "Header data at the start of each frame",
         "properties": {
            "length": {
               "title": "Length",
               "type": "integer"
            },
            "linked_list": {
               "title": "Linked List",
               "type": "integer"
            },
            "frame_num": {
               "title": "Frame Num",
               "type": "integer"
            },
            "buffer_count": {
               "title": "Buffer Count",
               "type": "integer"
            },
            "frame_buffer_count": {
               "title": "Frame Buffer Count",
               "type": "integer"
            },
            "write_buffer_count": {
               "title": "Write Buffer Count",
               "type": "integer"
            },
            "dropped_buffer_count": {
               "title": "Dropped Buffer Count",
               "type": "integer"
            },
            "timestamp": {
               "title": "Timestamp",
               "type": "integer"
            },
            "data_length": {
               "title": "Data Length",
               "type": "integer"
            },
            "write_timestamp": {
               "anyOf": [
                  {
                     "type": "integer"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Write Timestamp"
            },
            "battery_voltage": {
               "anyOf": [
                  {
                     "type": "integer"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Battery Voltage"
            }
         },
         "required": [
            "length",
            "linked_list",
            "frame_num",
            "buffer_count",
            "frame_buffer_count",
            "write_buffer_count",
            "dropped_buffer_count",
            "timestamp",
            "data_length"
         ],
         "title": "DataHeader",
         "type": "object"
      }
   }
}

Config:
  • arbitrary_types_allowed: bool = True

Fields:
Validators:
field data: ndarray | None = None#
field headers: List[DataHeader] | None = None#
Validated by:
validator frame_nums_must_be_equal  »  headers#

Each frame_number field in each header must be the same (they come from the same frame!)

property frame_num: int#

Frame number for this set of headers

pydantic model miniscope_io.data.Frames#

A collection of frames from a miniscope recording

Show JSON schema
{
   "title": "Frames",
   "type": "object",
   "properties": {
      "frames": {
         "default": null,
         "title": "Frames"
      }
   }
}

Fields:
field frames: List[Frame] [Required]#
flatten_headers(as_dict: Literal[False] = False) List[DataHeader]#
flatten_headers(as_dict: Literal[True] = True) List[dict]

Return flat list of headers, not grouped by frame

Parameters:

as_dict (bool) – If True, return a list of dictionaries, if False (default), return a list of DataHeader s.

to_df(what: Literal['headers'] = 'headers') DataFrame#

Convert frames to pandas dataframe

Parameters:

what ('headers') – What information from the frame to include in the df, currently only ‘headers’ is possible