Skip to content

Commit f997fde

Browse files
committed
Allow variant/ALT to be 1D
1 parent 5bd2f70 commit f997fde

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

sgkit/io/vcfzarr_reader.py

+7-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,12 @@
1010
from ..utils import encode_array
1111

1212

13+
def _ensure_2d(arr: ArrayLike) -> ArrayLike:
14+
if arr.ndim == 1:
15+
arr = arr.reshape(-1, 1)
16+
return arr
17+
18+
1319
def read_vcfzarr(path: PathType) -> xr.Dataset:
1420
"""Read a VCF Zarr file.
1521
@@ -52,7 +58,7 @@ def max_str_len(arr: ArrayLike) -> Any:
5258
da.compute(max_str_len(variants_ref), max_str_len(variants_alt))
5359
)
5460
variants_ref_alt = da.concatenate(
55-
[variants_ref.reshape(-1, 1), variants_alt], axis=1
61+
[_ensure_2d(variants_ref), _ensure_2d(variants_alt)], axis=1
5662
)
5763
variant_alleles = variants_ref_alt.astype(f"S{max_allele_length}")
5864

sgkit/tests/test_vcfzarr_reader.py

+6
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from numpy.testing import assert_array_equal
33

44
from sgkit import read_vcfzarr
5+
from sgkit.io.vcfzarr_reader import _ensure_2d
56

67

78
def test_read_vcfzarr(shared_datadir):
@@ -62,3 +63,8 @@ def test_read_vcfzarr(shared_datadir):
6263
assert_array_equal(ds["call/genotype"], call_genotype)
6364
assert_array_equal(ds["call/genotype_mask"], call_genotype < 0)
6465
assert "call/genotype_phased" not in ds
66+
67+
68+
def test_ensure_2d():
69+
assert_array_equal(_ensure_2d(np.array([0, 2, 1])), np.array([[0], [2], [1]]))
70+
assert_array_equal(_ensure_2d(np.array([[0], [2], [1]])), np.array([[0], [2], [1]]))

0 commit comments

Comments
 (0)