Hi-C API#
API to operate on .hic files. Compared to the generic API, this API provides:
more control over how files are opened
access to .hic-specific metadata
control over the interaction block cache
Common#
File handle#
-
class File#
Constructors
-
explicit File(std::string url_, std::uint32_t resolution_, MatrixType type_ = MatrixType::observed, MatrixUnit unit_ = MatrixUnit::BP, std::uint64_t block_cache_capacity = 0);#
Open/close methods
-
File &open(std::string url_, std::uint32_t resolution_, MatrixType type_ = MatrixType::observed, MatrixUnit unit_ = MatrixUnit::BP, std::uint64_t block_cache_capacity = 0);#
-
File &open(std::uint32_t resolution_, MatrixType type_ = MatrixType::observed, MatrixUnit unit_ = MatrixUnit::BP, std::uint64_t block_cache_capacity = 0);#
Accessors
-
[[nodiscard]] bool has_resolution(std::uint32_t resolution) const;#
-
[[nodiscard]] const std::string &path() const noexcept;#
-
[[nodiscard]] const std::string &name() const noexcept;#
-
[[nodiscard]] std::int32_t version() const noexcept;#
-
[[nodiscard]] std::uint32_t resolution() const noexcept;#
-
[[nodiscard]] std::uint64_t nbins() const;#
-
[[nodiscard]] std::uint64_t nchroms() const;#
-
[[nodiscard]] const std::string &assembly() const noexcept;#
-
[[nodiscard]] const std::vector<std::uint32_t> &avail_resolutions() const noexcept;#
-
[[nodiscard]] bool has_normalization(std::string_view normalization) const;#
-
[[nodiscard]] std::vector<balancing::Method> avail_normalizations() const;#
Fetch methods (1D queries)
-
[[nodiscard]] PixelSelectorAll fetch(balancing::Method norm = balancing::Method::NONE()) const;#
-
[[nodiscard]] PixelSelector fetch(std::string_view range, balancing::Method norm = balancing::Method::NONE(), QUERY_TYPE query_type = QUERY_TYPE::UCSC) const;#
-
[[nodiscard]] PixelSelector fetch(std::string_view chrom_name, std::uint32_t start, std::uint32_t end, balancing::Method norm = balancing::Method::NONE()) const;#
-
[[nodiscard]] PixelSelector fetch(std::uint64_t first_bin, std::uint64_t last_bin, balancing::Method norm = balancing::Method::NONE()) const;#
Fetch methods (2D queries)
-
[[nodiscard]] PixelSelector fetch(std::string_view range1, std::string_view range2, balancing::Method norm = balancing::Method::NONE(), QUERY_TYPE query_type = QUERY_TYPE::UCSC) const;#
-
[[nodiscard]] PixelSelector fetch(std::string_view chrom1_name, std::uint32_t start1, std::uint32_t end1, std::string_view chrom2_name, std::uint32_t start2, std::uint32_t end2, balancing::Method norm = balancing::Method::NONE()) const;#
-
[[nodiscard]] PixelSelector fetch(std::uint64_t first_bin1, std::uint64_t last_bin1, std::uint64_t first_bin2, std::uint64_t last_bin2, balancing::Method norm = balancing::Method::NONE()) const;#
Caching
-
[[nodiscard]] double block_cache_hit_rate() const noexcept;#
-
void reset_cache_stats() const noexcept;#
-
void clear_cache() noexcept;#
-
void optimize_cache_size(std::size_t upper_bound = (std::numeric_limits<std::size_t>::max)());#
-
void optimize_cache_size_for_iteration(std::size_t upper_bound = (std::numeric_limits<std::size_t>::max)());#
-
void optimize_cache_size_for_random_access(std::size_t upper_bound = (std::numeric_limits<std::size_t>::max)());#
-
[[nodiscard]] std::size_t cache_capacity() const noexcept;#
-
explicit File(std::string url_, std::uint32_t resolution_, MatrixType type_ = MatrixType::observed, MatrixUnit unit_ = MatrixUnit::BP, std::uint64_t block_cache_capacity = 0);#
Pixel selector#
-
class PixelSelector#
Operators
-
[[nodiscard]] bool operator==(const PixelSelector &other) const noexcept;#
-
[[nodiscard]] bool operator!=(const PixelSelector &other) const noexcept;#
Iteration
Fetch at once
-
template<typename N>
[[nodiscard]] Eigen::Matrix<N, Eigen::Dynamic, Eigen::Dynamic> read_dense() const;#
Accessors
-
[[nodiscard]] const PixelCoordinates &coord1() const noexcept;#
-
[[nodiscard]] const PixelCoordinates &coord2() const noexcept;#
-
[[nodiscard]] MatrixType matrix_type() const noexcept;#
-
[[nodiscard]] balancing::Method normalization() const noexcept;#
-
[[nodiscard]] MatrixUnit unit() const noexcept;#
-
[[nodiscard]] std::uint32_t resolution() const noexcept;#
-
[[nodiscard]] const Chromosome &chrom1() const noexcept;#
-
[[nodiscard]] const Chromosome &chrom2() const noexcept;#
-
[[nodiscard]] const balancing::Weights &weights1() const noexcept;#
-
[[nodiscard]] const balancing::Weights &weights2() const noexcept;#
-
[[nodiscard]] const internal::HiCFooterMetadata &metadata() const noexcept;#
-
[[nodiscard]] bool is_inter() const noexcept;#
-
[[nodiscard]] bool is_intra() const noexcept;#
-
[[nodiscard]] bool empty() const noexcept;#
Caching
-
[[nodiscard]] std::size_t estimate_optimal_cache_size(std::size_t num_samples = 500) const;#
-
void clear_cache() const;#
-
[[nodiscard]] bool operator==(const PixelSelector &other) const noexcept;#