(
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
)
)
)
)