@@ -472,3 +472,58 @@ def test_copy_of_obsvar_names(edata_333, adata_33):
472472 edata_obsvar_subset = edata_obsvar_subset .copy ()
473473 assert not edata_obsvar_subset .is_view
474474 _assert_shape_matches (edata_obsvar_subset , (1 , 2 , 3 ))
475+
476+
477+ def test_inplace_subset_obs (edata_333 ):
478+ edata_333_copy = edata_333 .copy ()
479+
480+ # simple subset
481+ edata_333 ._inplace_subset_obs ([0 , 2 ])
482+
483+ _assert_shape_matches (edata_333 , (2 , 3 , 3 ))
484+
485+ assert np .allclose (edata_333_copy .X [[0 , 2 ], :], edata_333 .X )
486+ assert np .allclose (edata_333_copy .R [[0 , 2 ], :, :], edata_333 .R )
487+ assert pd .DataFrame .equals (edata_333 .tem , edata_333_copy .tem )
488+
489+ # repeated subset
490+ edata_333 ._inplace_subset_obs ([1 ])
491+
492+ _assert_shape_matches (edata_333 , (1 , 3 , 3 ))
493+ assert np .allclose (edata_333_copy .X [[2 ], :], edata_333 .X )
494+ assert np .allclose (edata_333_copy .R [[2 ], :, :], edata_333 .R )
495+ assert pd .DataFrame .equals (edata_333 .tem , edata_333_copy .tem )
496+
497+ # mixed subset
498+ edata_333 ._inplace_subset_var ([0 , 2 ])
499+ _assert_shape_matches (edata_333 , (1 , 2 , 3 ))
500+ assert np .allclose (edata_333_copy .X [[2 ], [0 , 2 ]], edata_333 .X )
501+ assert np .allclose (edata_333_copy .R [[2 ], [0 , 2 ], :], edata_333 .R )
502+ assert pd .DataFrame .equals (edata_333 .tem , edata_333_copy .tem )
503+
504+
505+ def test_inplace_subset_var (edata_333 ):
506+ edata_333_copy = edata_333 .copy ()
507+ # simple subset
508+ edata_333 ._inplace_subset_var ([0 , 2 ])
509+
510+ _assert_shape_matches (edata_333 , (3 , 2 , 3 ))
511+
512+ assert np .allclose (edata_333_copy .X [:, [0 , 2 ]], edata_333 .X )
513+ assert np .allclose (edata_333_copy .R [:, [0 , 2 ], :], edata_333 .R )
514+ assert pd .DataFrame .equals (edata_333 .tem , edata_333_copy .tem )
515+
516+ # repeated subset
517+ edata_333 ._inplace_subset_var ([1 ])
518+
519+ _assert_shape_matches (edata_333 , (3 , 1 , 3 ))
520+ assert np .allclose (edata_333_copy .X [:, [2 ]], edata_333 .X )
521+ assert np .allclose (edata_333_copy .R [:, [2 ], :], edata_333 .R )
522+ assert pd .DataFrame .equals (edata_333 .tem , edata_333_copy .tem )
523+
524+ # mixed subset
525+ edata_333 ._inplace_subset_obs ([0 , 2 ])
526+ _assert_shape_matches (edata_333 , (2 , 1 , 3 ))
527+ assert np .allclose (edata_333_copy .X [[0 , 2 ], [2 ]].reshape (- 1 , 1 ), edata_333 .X )
528+ assert np .allclose (edata_333_copy .R [[0 , 2 ], [2 ], :].reshape (- 1 , 1 , 3 ), edata_333 .R )
529+ assert pd .DataFrame .equals (edata_333 .tem , edata_333_copy .tem )
0 commit comments