@@ -242,6 +242,10 @@ def _get_masked_element(
242242 return element .loc [mask_values , :]
243243
244244
245+ def _region_as_str_if_list_of_len_one (region : list [str ]) -> str | list [str ]:
246+ return region if len (region ) > 1 else region [0 ]
247+
248+
245249def _right_exclusive_join_spatialelement_table (
246250 element_dict : dict [str , dict [str , Any ]],
247251 table : AnnData ,
@@ -279,9 +283,10 @@ def _right_exclusive_join_spatialelement_table(
279283 exclusive_table = table [keep , :] if has_match and keep .any () else None
280284 _inplace_fix_subset_categorical_obs (subset_adata = exclusive_table , original_adata = table )
281285 if exclusive_table is not None :
282- exclusive_table .uns [TableModel .ATTRS_KEY ][TableModel .REGION_KEY ] = (
286+ exclusive_table .uns [TableModel .ATTRS_KEY ][TableModel .REGION_KEY ] = _region_as_str_if_list_of_len_one (
283287 exclusive_table .obs [region_column_name ].unique ().tolist ()
284288 )
289+ TableModel .validate (exclusive_table )
285290 return element_dict , exclusive_table
286291
287292
@@ -383,9 +388,10 @@ def _inner_join_spatialelement_table(
383388
384389 _inplace_fix_subset_categorical_obs (subset_adata = joined_table , original_adata = table )
385390 if joined_table is not None :
386- joined_table .uns [TableModel .ATTRS_KEY ][TableModel .REGION_KEY ] = (
391+ joined_table .uns [TableModel .ATTRS_KEY ][TableModel .REGION_KEY ] = _region_as_str_if_list_of_len_one (
387392 joined_table .obs [region_column_name ].unique ().tolist ()
388393 )
394+ TableModel .validate (joined_table )
389395 return element_dict , joined_table
390396
391397
@@ -466,9 +472,10 @@ def _left_join_spatialelement_table(
466472 joined_table = table [joined_indices .tolist (), :].copy () if joined_indices is not None else None
467473 _inplace_fix_subset_categorical_obs (subset_adata = joined_table , original_adata = table )
468474 if joined_table is not None :
469- joined_table .uns [TableModel .ATTRS_KEY ][TableModel .REGION_KEY ] = (
475+ joined_table .uns [TableModel .ATTRS_KEY ][TableModel .REGION_KEY ] = _region_as_str_if_list_of_len_one (
470476 joined_table .obs [region_column_name ].unique ().tolist ()
471477 )
478+ TableModel .validate (joined_table )
472479 return element_dict , joined_table
473480
474481
0 commit comments