(ns cljam.io.crai (:require [cljam.util :as util] [cljam.util.intervals :as intervals] [clojure.java.io :as io] [clojure.string :as str])) | |
Reads a CRAI file | (defn read-index [f refs] (let [refs (vec refs)] (with-open [rdr (io/reader (util/compressor-input-stream f))] (->> (line-seq rdr) (map (fn [line] (let [[^long seq-id ^long start ^long span container-offset slice-offset size] (map #(Long/parseLong %) (str/split line #"\t")) unmapped? (neg? seq-id)] {:chr (if unmapped? "*" (:name (nth refs seq-id))) :start (if unmapped? 0 start) :end (if unmapped? 0 (+ start span)) :container-offset container-offset :slice-offset slice-offset :size size}))) intervals/index-intervals)))) |
Finds and returns all entries from the index that overlap with the specified region. | (defn find-overlapping-entries [idx chr start end] (intervals/find-overlap-intervals idx chr start end)) |