Source code for dolomite_ranges.save_genomic_ranges
import os
from typing import Optional
import dolomite_base as dl
import h5py
from genomicranges import GenomicRanges
[docs]
@dl.save_object.register
@dl.validate_saves
def save_genomic_ranges(
x: GenomicRanges, path: str, data_frame_args: Optional[dict] = None, **kwargs
):
"""Method for saving :py:class:`~genomicranges.GenomicRanges.GenomicRanges`
objects to their corresponding file representations, see
:py:meth:`~dolomite_base.save_object.save_object` for details.
Args:
x:
Object to be staged.
path:
Path to a directory in which to save ``x``.
data_frame_args:
Further arguments to pass to the ``save_object`` method for
``mcols``.
kwargs:
Further arguments to be passed to individual methods.
Returns:
`x` is saved to `path`.
"""
os.mkdir(path)
if data_frame_args is None:
data_frame_args = {}
_info = {"genomic_ranges": {"version": "1.0"}}
dl.save_object_file(path, "genomic_ranges", _info)
# sequence information
spath = os.path.join(path, "sequence_information")
dl.save_object(x.get_seqinfo(), spath)
with h5py.File(os.path.join(path, "ranges.h5"), "w") as handle:
ghandle = handle.create_group("genomic_ranges")
_seqnames = x.get_seqnames(as_type="factor")
dl.write_integer_vector_to_hdf5(
ghandle, name="sequence", h5type="u4", x=_seqnames.get_codes()
)
_ranges = x.get_ranges()
dl.write_integer_vector_to_hdf5(
ghandle, name="start", h5type="i4", x=_ranges.get_start()
)
dl.write_integer_vector_to_hdf5(
ghandle, name="width", h5type="u4", x=_ranges.get_width()
)
dl.write_integer_vector_to_hdf5(
ghandle, name="strand", h5type="i4", x=x.get_strand()
)
if x.get_names() is not None:
dl.write_string_vector_to_hdf5(ghandle, name="name", x=x.get_names())
_range_annotation = x.get_mcols()
if _range_annotation is not None and _range_annotation.shape[1] > 0:
dl.alt_save_object(
_range_annotation,
path=os.path.join(path, "range_annotations"),
**data_frame_args,
)
_meta = x.get_metadata()
if _meta is not None and len(_meta) > 0:
dl.alt_save_object(
_meta, path=os.path.join(path, "other_annotations"), **kwargs
)
return