Source code for cbgen.typing

from dataclasses import dataclass
from typing import Any

__all__ = ["CData", "DtypeLike", "Variants", "Genotype", "Partition"]

# Waiting for official type hint: https://foss.heptapod.net/pypy/cffi/issues/456
CData = Any

# Waiting for numpy release: https://github.com/numpy/numpy/labels/static%20typing
DtypeLike = Any


[docs]@dataclass class Genotype: """ Genotype. >>> import cbgen >>> >>> bgen = cbgen.bgen_file(cbgen.example.get("haplotypes.bgen")) >>> mf = cbgen.bgen_metafile(cbgen.example.get("haplotypes.bgen.metafile")) >>> part = mf.read_partition(0) >>> gt = bgen.read_genotype(part.variants.offset[0]) >>> print(type(gt)) <class 'cbgen.typing.Genotype'> >>> print(gt.probability) [[1. 0. 1. 0.] [0. 1. 1. 0.] [1. 0. 0. 1.] [0. 1. 0. 1.]] >>> print(gt.phased) True >>> print(gt.ploidy) [2 2 2 2] >>> print(gt.missing) [False False False False] >>> mf.close() >>> bgen.close() Attributes ---------- Probability Probability. phased Phasedness. ploidy Ploidy. missing Missingness. """ probability: DtypeLike phased: DtypeLike ploidy: DtypeLike missing: DtypeLike
[docs]@dataclass class Variants: """ Variants. >>> import cbgen >>> >>> bgen = cbgen.bgen_file(cbgen.example.get("haplotypes.bgen")) >>> mf = cbgen.bgen_metafile(cbgen.example.get("haplotypes.bgen.metafile")) >>> part = mf.read_partition(0) >>> variants = part.variants >>> print(type(variants)) <class 'cbgen.typing.Variants'> >>> print(variants.size) 4 >>> print(variants.id[3]) b'SNP4' >>> print(variants.rsid[3]) b'RS4' >>> print(variants.chromosome[3]) b'1' >>> print(variants.position[3]) 4 >>> print(variants.nalleles[3]) 2 >>> print(variants.allele_ids[3]) b'A,G' >>> print(variants.offset[3]) 273 >>> mf.close() >>> bgen.close() Attributes ---------- id Identification. rsid Reference SNP cluster ID. chromosome Chromosome. position Position. nalleles Number of alleles per variant. allele_ids Allele identifications. offset Variant offset. """ id: DtypeLike rsid: DtypeLike chromosome: DtypeLike position: DtypeLike nalleles: DtypeLike allele_ids: DtypeLike offset: DtypeLike @property def size(self) -> int: """ Number of variants. Returns ------- Number of variants. """ return self.id.shape[0]
[docs]@dataclass class Partition: """ Partition of variants. >>> import cbgen >>> >>> bgen = cbgen.bgen_file(cbgen.example.get("haplotypes.bgen")) >>> mf = cbgen.bgen_metafile(cbgen.example.get("haplotypes.bgen.metafile")) >>> part = mf.read_partition(0) >>> print(type(part)) <class 'cbgen.typing.Partition'> >>> print(part.offset) 0 >>> print(type(part.variants)) <class 'cbgen.typing.Variants'> >>> mf.close() >>> bgen.close() Attributes ---------- offset Partition offset. variants Variants. """ offset: int variants: Variants