Skip to content

Add space and allow AnatomicalCoordinatesTable.add_row to accept ap, ml, dv kwargs #5

@rly

Description

@rly

I think we should provide a pre-defined space for stereotactic coordinates for when someone wants to specify their surgical target. Sometimes people collect data without histology and so they don't necessarily have CCF coordinates or think in those terms. They usually have AP, ML, DV (or Z) and many papers report those coordinates. (Aside: Sometimes if the probe was inserted at an angle that is not parallel to the DV axis, they have AP, ML, DV for a target point and then an additional rotation, tilt, and depth.) I forget whether we decided that handling stereotactic coordinates was in or out of scope for this extension, but if it is in scope, I think it needs to be handled with its own pre-defined space for convenience.

That space could look like:

PREDEFINED_SPACES = {
    "Mouse_Bregma_AP_ML_DV": {
        "name": "Mouse_Bregma_AP_ML_DV",
        "space_name": "Mouse_Bregma_AP_ML_DV",
        "origin": "Bregma at the cortical surface",
        "units": "mm",
        "orientation": "PRS",
    }
}

TODO:

  • Confirm the zero point for DV is often at the cortical surface, not the skull
  • Confirm that DV values are often negative, so orientation is S and not I.

In addition, it would help someone reading NWB writing/conversion code if AnatomicalCoordinatesTable.add_row could accept keyword arguments like "ap", "ml" (or "lr" to be more informative), and "dv" (or "ap_in_mm", etc.). Maybe add_row could accept variable keyword arguments and PREDEFINED_SPACES could include a mapping of aliases, e.g.,

aliases: {
  "x": "ap",
  "y": "ml",
  "z": "dv"
}

so that they could do table.add_row(ap=2.5, ml=1.5, dv=-2.0, location="CA1", localized_entity=0)

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