Issue and/or context: This follows on #2944 for issue #2407 / [sc-51048]. Here we implement shape for SOMA DataFrame, including its variant-indexed flavors.
Changes:
While SOMASparseNDArray and SOMADenseNDArray must always and only have int64 dims within the SOMA data model, SOMADataFrame is different. The default behavior -- which almost everyone uses -- has a single soma_joinid dim which is indeed of type int64. (Also note that exp.obs.shapedoes exist within TileDB-SOMA-Py, and people do call it.) However, the spec only requires that soma_joinid exist as a dim or an attr: it can be a dim along with others, or it can not be a dim at all. Here we do the right thing, without and with current-domain support, to produce the user-expected exp.obs.shape.
Issue and/or context: This follows on #2944 for issue #2407 / [sc-51048]. Here we implement
shape
for SOMADataFrame
, including its variant-indexed flavors.Changes:
While
SOMASparseNDArray
andSOMADenseNDArray
must always and only haveint64
dims within the SOMA data model,SOMADataFrame
is different. The default behavior -- which almost everyone uses -- has a singlesoma_joinid
dim which is indeed of typeint64
. (Also note thatexp.obs.shape
does exist within TileDB-SOMA-Py, and people do call it.) However, the spec only requires thatsoma_joinid
exist as a dim or an attr: it can be a dim along with others, or it can not be a dim at all. Here we do the right thing, without and with current-domain support, to produce the user-expectedexp.obs.shape
.Notes for Reviewer: