|
6 | 6 | import pytest |
7 | 7 | from pandas._testing import ( |
8 | 8 | assert_series_equal, |
| 9 | + assert_frame_equal, |
9 | 10 | ) |
10 | 11 |
|
| 12 | +from pandas_genomics import GenotypeArray |
| 13 | +from pandas_genomics.scalars import Variant, Region |
| 14 | + |
11 | 15 |
|
12 | 16 | def test_variant_score(data, data_for_encoding): |
13 | 17 | assert pd.Series(data).genomics.variant.score == float(data.variant.score) |
@@ -59,3 +63,52 @@ def test_filter_hwe(ga_inhwe, ga_nothwe, filter_value, num_cols_left): |
59 | 63 | else: |
60 | 64 | result = data.genomics.filter_variants_hwe(filter_value) |
61 | 65 | assert len(result.columns) == num_cols_left + 1 |
| 66 | + |
| 67 | + |
| 68 | +def test_region_series(): |
| 69 | + var = Variant("chr1", position=999, ref="A", alt=["a"]) |
| 70 | + s = pd.Series( |
| 71 | + GenotypeArray( |
| 72 | + [ |
| 73 | + var.make_genotype_from_str("A/A"), |
| 74 | + ] |
| 75 | + * 10 |
| 76 | + ) |
| 77 | + ) |
| 78 | + assert s.genomics.contained_by(Region("chr1", 900, 1000)) |
| 79 | + assert not s.genomics.contained_by(Region("chr2", 900, 1000)) |
| 80 | + assert not s.genomics.contained_by(Region("chr1", 900, 999)) |
| 81 | + |
| 82 | + |
| 83 | +def test_region_df(): |
| 84 | + var1 = Variant("chr1", position=999, ref="A", alt=["a"]) |
| 85 | + var2 = Variant("chr1", position=6789, ref="A", alt=["a"]) |
| 86 | + var3 = Variant("chr2", position=999, ref="A", alt=["a"]) |
| 87 | + var4 = Variant("chr3", position=25622, ref="A", alt=["a"]) |
| 88 | + df = pd.DataFrame( |
| 89 | + { |
| 90 | + f"var{idx+1}": GenotypeArray( |
| 91 | + [ |
| 92 | + var.make_genotype_from_str("A/A"), |
| 93 | + ] |
| 94 | + * 10 |
| 95 | + ) |
| 96 | + for idx, var in enumerate([var1, var2, var3, var4]) |
| 97 | + } |
| 98 | + ) |
| 99 | + assert_frame_equal( |
| 100 | + df.genomics.in_regions(Region("chr1", 900, 1000)), |
| 101 | + df[ |
| 102 | + [ |
| 103 | + "var1", |
| 104 | + ] |
| 105 | + ], |
| 106 | + ) |
| 107 | + assert_frame_equal( |
| 108 | + df.genomics.not_in_regions(Region("chr1", 900, 1000)), |
| 109 | + df[["var2", "var3", "var4"]], |
| 110 | + ) |
| 111 | + assert_frame_equal( |
| 112 | + df.genomics.in_regions([Region("chr1", 900, 1000), Region("chr2", 900, 1000)]), |
| 113 | + df[["var1", "var3"]], |
| 114 | + ) |
0 commit comments