@@ -2414,13 +2414,37 @@ def test_variants_lifecycle(self):
24142414 del variant
24152415 assert np .array_equal (genotypes , expected )
24162416
2417- def test_copy (self ):
2417+ @pytest .mark .parametrize ("isolated_as_missing" , [True , False ])
2418+ @pytest .mark .parametrize ("samples" , [None , [], (0 ,)])
2419+ @pytest .mark .parametrize ("alleles" , [None , ("1" , "0" )])
2420+ def test_copy (self , isolated_as_missing , samples , alleles ):
24182421 ts = self .get_example_tree_sequence (random_seed = 42 )
2419- variant = _tskit .Variant (ts )
2422+ variant = _tskit .Variant (
2423+ ts ,
2424+ isolated_as_missing = isolated_as_missing ,
2425+ samples = samples ,
2426+ alleles = alleles ,
2427+ )
2428+
2429+ # Test taking a copy before decode
2430+ variant2 = variant .restricted_copy ()
2431+ assert variant .site_id == variant2 .site_id
2432+ assert variant .alleles == variant2 .alleles
2433+ print (variant .alleles )
2434+ assert np .array_equal (variant .genotypes , variant2 .genotypes )
2435+ assert np .array_equal (variant .samples , variant2 .samples )
2436+ assert variant .isolated_as_missing == variant2 .isolated_as_missing
2437+
24202438 variant .decode (0 )
24212439 # Everything below should work even if the Python ts is free'd
24222440 del ts
24232441 variant2 = variant .restricted_copy ()
2442+ assert variant .site_id == variant2 .site_id
2443+ assert variant .alleles == variant2 .alleles
2444+ assert np .array_equal (variant .genotypes , variant2 .genotypes )
2445+ assert np .array_equal (variant .samples , variant2 .samples )
2446+ assert variant .isolated_as_missing == variant2 .isolated_as_missing
2447+
24242448 # Take a copy for comparison, then move the variant to check the copy
24252449 # doesn't move too
24262450 genotypes = variant .genotypes
@@ -2434,13 +2458,18 @@ def test_copy(self):
24342458 variant2 .decode (1 )
24352459 assert site_id == variant2 .site_id
24362460 assert alleles == variant2 .alleles
2461+ # Other properties shouldn't have changed
2462+ assert np .array_equal (variant .samples , variant2 .samples )
2463+ assert variant .isolated_as_missing == variant2 .isolated_as_missing
24372464
24382465 # Variant should be equal to the copy we took earlier
24392466 assert np .array_equal (genotypes_copy , variant2 .genotypes )
24402467 # But not equal to the un-copies genotypes anymore as they
24412468 # have decoded a new site as a side effect of reusing the
24422469 # array when decoding
2443- assert not np .array_equal (genotypes , variant2 .genotypes )
2470+ assert len (variant .samples ) == 0 or not np .array_equal (
2471+ genotypes , variant2 .genotypes
2472+ )
24442473
24452474 # Check the lifecycle of copies and copies of copies
24462475 del variant
0 commit comments