Skip to content

Commit

Permalink
Reset position of CRAM reader channel for each region read
Browse files Browse the repository at this point in the history
  • Loading branch information
athos committed May 15, 2024
1 parent 125ccb4 commit b1b0ea4
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 12 deletions.
25 changes: 14 additions & 11 deletions src/cljam/io/cram/core.clj
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
(ns cljam.io.cram.core
(:require [cljam.io.crai :as crai]
[cljam.io.cram.reader :as reader.core]
[cljam.io.cram.reader :as reader]
[cljam.io.cram.seq-resolver :as resolver]
[cljam.io.sam.util.refs :as util.refs]
[cljam.io.util.byte-buffer :as bb]
Expand All @@ -25,14 +25,16 @@
seq-resolver (some-> reference resolver/seq-resolver)
header (volatile! nil)
refs (delay (vec (util.refs/make-refs @header)))
offset (volatile! nil)
idx (delay
(try
(crai/read-index (str f ".crai") @refs)
(catch FileNotFoundException _
nil)))
rdr (reader.core/->CRAMReader url ch bb header refs idx seq-resolver)]
(reader.core/read-file-definition rdr)
(vreset! header (reader.core/read-header rdr))
rdr (reader/->CRAMReader url ch bb header refs offset idx seq-resolver)]
(reader/read-file-definition rdr)
(vreset! header (reader/read-header rdr))
(vreset! offset (.position ch))
rdr))

(defn clone-reader
Expand All @@ -44,11 +46,12 @@
(into-array OpenOption [StandardOpenOption/READ]))
bb (bb/allocate-lsb-byte-buffer 256)
seq-resolver (some-> (.-seq-resolver rdr) resolver/clone-seq-resolver)
rdr' (reader.core/->CRAMReader url ch bb
(delay @(.-header rdr))
(delay @(.-refs rdr))
(delay @(.-index rdr))
seq-resolver)]
(reader.core/read-file-definition rdr')
(reader.core/skip-container rdr')
rdr' (reader/->CRAMReader url ch bb
(delay @(.-header rdr))
(delay @(.-refs rdr))
(delay @(.-offset rdr))
(delay @(.-index rdr))
seq-resolver)]
(reader/read-file-definition rdr')
(reader/skip-container rdr')
rdr'))
3 changes: 2 additions & 1 deletion src/cljam/io/cram/reader.clj
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

(declare read-alignments read-alignments-in-region)

(deftype CRAMReader [url channel buffer header refs index seq-resolver]
(deftype CRAMReader [url channel buffer header refs offset index seq-resolver]
Closeable
(close [_]
(when seq-resolver
Expand Down Expand Up @@ -194,6 +194,7 @@
(if (identical? alns ::skipped)
(recur)
(concat alns (lazy-seq (step)))))))]
(.position ch (long @(.-offset rdr)))
(filter-overlapping-records chr start end (step)))))

(defn- read-alignments-in-region
Expand Down

0 comments on commit b1b0ea4

Please sign in to comment.