Changelog#

0.11.0 (unreleased)#

Breaking changes#

  • Support Python 3.12, 3.13, and 3.14, and drop Python 3.11 support. Require SciPy >= 1.16.2. (GH 1360)

  • Require Zarr Python >= 3 and Xarray >= 2026.9.0. The default on-disk Zarr format remains 2. (GH 1355)

  • Remove BGEN reading and conversion: sgkit.io.bgen.read_bgen, sgkit.io.bgen.bgen_to_zarr and sgkit.io.bgen.rechunk_bgen, along with the bgen extra and the cbgen and rechunker dependencies. Use bio2zarr for genetic file format conversion to Zarr, and load the result with load_dataset(). BGEN input requires a bio2zarr version with BGEN support (bio2zarr issue 417). The dependency-free sgkit.io.bgen.unpack_variables() helper remains for existing legacy packed stores. See BGEN. (PR 1325, GH 1355)

  • Remove PLINK reading and writing: the sgkit.io.plink module and its read_plink, plink_to_zarr, write_plink and zarr_to_plink functions, along with the plink extra and bed-reader dependency. Use bio2zarr for conversion to Zarr and vcztools for export. See PLINK, including companion-file metadata differences. (PR 1324, PR 1362, GH 1318)

Deprecations#

Bug fixes#

  • Unpacking legacy BGEN-derived Zarr datasets no longer imports or requires cbgen. Use sgkit.io.bgen.unpack_variables(); the original sgkit.io.bgen.bgen_reader.unpack_variables import is also preserved. Its documentation explains the legacy packing convention and when unpacking is needed; ordinary unpacked datasets and new bio2zarr output do not need it. (GH 1331)

  • Fixed bug causing high memory usage in pedigree_kinship() when evaluating a chunked relationship matrix with the Hamilton-Kerr method. (timothymillar, PR 1335, GH 1333)

0.10.0 (7 April 2025)#

New Features#

Breaking changes#

Improvements#

Documentation#

0.9.0 (24 June 2024)#

Deprecations#

Improvements#

0.8.0 (1 May 2024)#

New Features#

Improvements#

Bug fixes#

  • Fix error in missing data handling for VCF. Missing values for most fields were marked as the corresponding “fill” value. For example, missing string values were stored as the empty string (string fill value) rather than “.” (string missing value). Similarly for integer fields, missing values were stored as -2 (int fill) rather than -1 (int missing). (jeromekelleher, PR 1190, GH 1192)

  • Change max_str_len utility function to return a Python int rather than an array scalar. (tomwhite, PR 1086, GH 1085)

  • Turn off numba cache by default. (jeromekelleher, PR 1191, GH 1156)

  • Fix xarray repr in doctests. (tomwhite, PR 1205, GH 1204)

  • Avoid disabling jit on guvectorised functions. (timothymillar, PR 1199, GH 1194)

Documentation#

0.7.0 (2 May 2023)#

New Features#

Breaking changes#

  • Generate VCF header by default when writing VCF using sgkit.io.vcf.write_vcf or sgkit.io.vcf.zarr_to_vcf. Previously, the dataset had to contain a vcf_header attribute. (tomwhite, PR 1021, GH 1020)

Deprecations#

  • Store contig names in a contig_id array, and filters in a filter_id array. This change duplicates the information stored in dataset attributes, which should now be considered deprecated, and will be removed in a future release. (tomwhite, PR 1054, GH 1035)

  • Parameter founder_indices in sgkit.pedigree_kinship() is now considered deprecated, and will be removed in a future release. Instead, the founder_kinship parameter now expects a full sized kinship matrix in which non-founder values are ignored. (timothymillar, PR 1075, GH 1061)

Improvements#

Bug fixes#

0.6.0 (1 February 2023)#

New Features#

Breaking changes#

Improvements#

Bug fixes#