Skip to content

Commit a331bed

Browse files
committed
Merge branch 'release/v0.1.3'
2 parents 1d90f6c + a9d8b83 commit a331bed

File tree

4 files changed

+30
-17
lines changed

4 files changed

+30
-17
lines changed

Project.toml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
name = "Indexes"
22
uuid = "4ffb77ac-cb80-11e8-1b35-4b78cc642f6d"
33
authors = ["Kenta Sato <bicycle1885@gmail.com>", "Ben J. Ward <benjward@protonmail.com>", "Ciarán O’Mara <CiaranOMara@utas.edu.au>"]
4-
version = "0.1.2"
4+
version = "0.1.3"
55

66
[deps]
77
BGZFStreams = "28d598bf-9b8f-59f1-b38c-5a06b4a0f5e6"
8-
BioCore = "37cfa864-2cd6-5c12-ad9e-b6597d696c81"
9-
BufferedStreams = "e1450e63-4bb3-523b-b2a4-4ffa8c0fd77d"
8+
BioGenerics = "47718e42-2ac5-11e9-14af-e5595289c2ea"
109
GenomicFeatures = "899a7d2d-5c61-547b-bef9-6698a8d05446"
10+
TranscodingStreams = "3bb67fe8-82b1-5028-8e26-92a6c54297fa"
1111

1212
[compat]
1313
BGZFStreams = "0.3"
14-
BioCore = "2"
15-
BufferedStreams = "1"
14+
BioGenerics = "0.1"
1615
GenomicFeatures = "2"
16+
TranscodingStreams = "0.9.5"
1717
julia = "1"
1818

1919
[extras]

src/Indexes.jl

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,24 @@
88

99
module Indexes
1010

11+
using TranscodingStreams
12+
1113
import BGZFStreams
12-
import BioCore
13-
import BufferedStreams
14+
import BioGenerics
1415
import GenomicFeatures: Interval
1516

17+
function Base.bytesavailable(stream::BGZFStreams.BGZFStream{IOStream})
18+
19+
block_index = BGZFStreams.ensure_buffered_data(stream)
20+
if block_index == 0
21+
return 0
22+
end
23+
block = stream.blocks[block_index]
24+
25+
return length(block.position:block.size)
26+
27+
end
28+
1629
include("chunk.jl")
1730
include("bgzfindex.jl")
1831
include("tabix.jl")

src/overlap.jl

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,16 +24,16 @@ end
2424
function Base.iterate(iter::TabixOverlapIterator)
2525
@assert iter.reader.index !== nothing
2626
# TODO: Use a method that resets the reading position.
27-
buffer = BioCore.IO.stream(iter.reader)
28-
iter.reader.state = BioCore.Ragel.State(1, BufferedStreams.BufferedInputStream(buffer.source))
27+
buffer = BioGenerics.IO.stream(iter.reader)
28+
iter.reader.state = BioGenerics.Automa.State(TranscodingStreams.NoopStream(buffer.stream), 1, 1, false)
2929
state = TabixOverlapIteratorState(Indexes.overlapchunks(iter.reader.index, iter.interval), 0, false, eltype(iter)())
3030

3131
return iterate(iter, state)
3232
end
3333

3434
function done(iter::TabixOverlapIterator, state)
35-
buffer = BioCore.IO.stream(iter.reader)
36-
source = buffer.source
35+
buffer = BioGenerics.IO.stream(iter.reader)
36+
source = buffer.stream
3737
if state.chunkid == 0
3838
if isempty(state.chunks)
3939
return true
@@ -76,13 +76,13 @@ function Base.iterate(iter::TabixOverlapIterator, state)
7676
end
7777

7878
function icmp(record, interval)
79-
c = cmp(BioCore.seqname(record), BioCore.seqname(interval))
79+
c = cmp(BioGenerics.seqname(record), BioGenerics.seqname(interval))
8080

81-
if c < 0 || (c == 0 && BioCore.rightposition(record) < BioCore.leftposition(interval))
81+
if c < 0 || (c == 0 && BioGenerics.rightposition(record) < BioGenerics.leftposition(interval))
8282
return -1
8383
end
8484

85-
if c > 0 || (c == 0 && BioCore.leftposition(record) > BioCore.rightposition(interval))
85+
if c > 0 || (c == 0 && BioGenerics.leftposition(record) > BioGenerics.rightposition(interval))
8686
return +1
8787
end
8888

src/tabix.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,11 +77,11 @@ Return chunks possibly overlapping with the range specified by `interval`.
7777
Note that records within the returned chunks are not guaranteed to actually overlap the query interval.
7878
"""
7979
function overlapchunks(tabix::Tabix, interval::Interval)
80-
seqid = findfirst(isequal(BioCore.seqname(interval)), tabix.names)
80+
seqid = findfirst(isequal(BioGenerics.seqname(interval)), tabix.names)
8181
if seqid == 0
82-
throw(ArgumentError("failed to find sequence name '$(BioCore.seqname(interval))'"))
82+
throw(ArgumentError("failed to find sequence name '$(BioGenerics.seqname(interval))'"))
8383
end
84-
return overlapchunks(tabix.index, seqid, BioCore.leftposition(interval):BioCore.rightposition(interval))
84+
return overlapchunks(tabix.index, seqid, BioGenerics.leftposition(interval):BioGenerics.rightposition(interval))
8585
end
8686

8787
# Check if `format` follows the BED rule (half-closed-half-open and 0-based).

0 commit comments

Comments
 (0)