Skip to content

Commit

Permalink
Fix a bug in twobit reader.
Browse files Browse the repository at this point in the history
  • Loading branch information
alumi committed Mar 8, 2017
1 parent 79e7b4c commit e6e97fb
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 2 deletions.
4 changes: 2 additions & 2 deletions src/cljam/twobit.clj
Original file line number Diff line number Diff line change
Expand Up @@ -108,8 +108,8 @@
(.readFully ^RandomAccessFile (.reader rdr) ba)
(dotimes [out-pos (inc (- end' start'))]
(let [ref-pos (+ out-pos start')
ba-pos (quot (- ref-pos (max 1 start')) 4)
bit-pos (mod (- ref-pos (max 1 start')) 4)]
ba-pos (- (quot (dec ref-pos) 4) start-offset)
bit-pos (mod (dec ref-pos) 4)]
(if (<= 1 ref-pos len)
(.put cb (.charAt ^String (twobit-to-str (+ (aget ba ba-pos) 128)) bit-pos))
(.put cb \N))))
Expand Down
8 changes: 8 additions & 0 deletions test/cljam/t_twobit.clj
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@
(tb/read-sequence r {:chr "ref"}) => "AGCATGTTAGATAAGATAGCTGTGCTAGTAGGCAGTCAGCGCCAT"
(tb/read-sequence r {:chr "ref2"}) => "AGGTTTTATAAAACAATTAAGTCTACAGAGCAACTACGCG"
(tb/read-sequence r {:chr "ref2" :mask? true}) => "aggttttataaaacaattaagtctacagagcaactacgcg"
(for [i (range 1 45) j (range i 46)]
(tb/read-sequence r {:chr "ref" :start i :end j}))
=> (for [i (range 1 45) j (range i 46)]
(subs "AGCATGTTAGATAAGATAGCTGTGCTAGTAGGCAGTCAGCGCCAT" (dec i) j))
(tb/read-sequence r {:chr "ref" :start 1 :end 4}) => "AGCA"
(tb/read-sequence r {:chr "ref" :start 0 :end 4}) => "NAGCA"
(tb/read-sequence r {:chr "ref" :start 41 :end 50}) => "GCCATNNNNN"
Expand All @@ -22,6 +26,10 @@
(tb/read-sequence r {:chr "ref"}) => "NNNNNGTTAGATAAGATAGCNNTGCTAGTAGGCAGTCNNNNCCAT"
(tb/read-sequence r {:chr "ref2"}) => "AGNNNTTATAAAACAATTANNNCTACAGAGCAACTANNNN"
(tb/read-sequence r {:chr "ref2" :mask? true}) => "agNNNttataaaacaattaNNNctacagagcaactaNNNN"
(for [i (range 1 45) j (range i 46)]
(tb/read-sequence r {:chr "ref" :start i :end j}))
=> (for [i (range 1 45) j (range i 46)]
(subs "NNNNNGTTAGATAAGATAGCNNTGCTAGTAGGCAGTCNNNNCCAT" (dec i) j))
(tb/read-sequence r {:chr "ref" :start 1 :end 4}) => "NNNN"
(tb/read-sequence r {:chr "ref" :start 0 :end 4}) => "NNNNN"
(tb/read-sequence r {:chr "ref" :start 41 :end 50}) => "NCCATNNNNN"
Expand Down

0 comments on commit e6e97fb

Please sign in to comment.