Source code for snputils.snp.io.read.functional
import pathlib
from typing import TYPE_CHECKING, Union
from snputils.snp.genobj import SNPObject
if TYPE_CHECKING:
from snputils.snp.genobj.grgobj import GRGObject
[docs]
def read_snp(filename: Union[str, pathlib.Path], **kwargs) -> SNPObject:
"""
Automatically detect the file format and read it into a SNPObject.
Args:
filename: Filename of the file to read.
**kwargs: Additional arguments passed to the reader method.
Raises:
ValueError: If the filename does not have an extension or the extension is not supported.
"""
from snputils.snp.io.read.auto import SNPReader
return SNPReader(filename).read(**kwargs)
[docs]
def read_bed(filename: Union[str, pathlib.Path], **kwargs) -> SNPObject:
"""
Read a BED fileset into a SNPObject.
Args:
filename: Filename of the BED fileset to read.
**kwargs: Additional arguments passed to the reader method. See :class:`snputils.snp.io.read.bed.BEDReader` for possible parameters.
"""
from snputils.snp.io.read.bed import BEDReader
return BEDReader(filename).read(**kwargs)
[docs]
def read_pgen(filename: Union[str, pathlib.Path], **kwargs) -> SNPObject:
"""
Read a PGEN fileset into a SNPObject.
Args:
filename: Filename of the PGEN fileset to read.
**kwargs: Additional arguments passed to the reader method. See :class:`snputils.snp.io.read.pgen.PGENReader` for possible parameters.
"""
from snputils.snp.io.read.pgen import PGENReader
return PGENReader(filename).read(**kwargs)
[docs]
def read_vcf(filename: Union[str, pathlib.Path],
backend: str = 'default',
**kwargs) -> SNPObject:
"""
Read a VCF fileset into a SNPObject.
Args:
filename: Filename of the VCF fileset to read.
backend: Backend to use for reading the VCF file. Options are 'default' or 'polars'.
**kwargs: Additional arguments passed to the reader method. See :class:`snputils.snp.io.read.vcf.VCFReader` for possible parameters.
"""
from snputils.snp.io.read.vcf import VCFReader, VCFReaderPolars
if backend == 'default':
print(f"Reading {filename} with default backend")
return VCFReader(filename).read(**kwargs)
if backend == 'polars':
print(f"Reading {filename} with polars backend")
return VCFReaderPolars(filename).read(**kwargs)
raise ValueError(f"VCF backend not supported: {backend}")
[docs]
def read_grg(filename: Union[str, pathlib.Path], **kwargs) -> "GRGObject":
"""
Read a GRG file into a GRGObject.
Args:
filename: Filename of the GRG file to read.
**kwargs: Additional arguments passed to the reader method.
"""
try:
from snputils.snp.io.read.grg import GRGReader
except ModuleNotFoundError as exc:
if exc.name == "pygrgl":
raise ImportError(
"GRG support requires the optional dependency 'pygrgl'. "
"Install it with: pip install pygrgl"
) from exc
raise
return GRGReader(filename).read(**kwargs)