1
0
Fork 0
mirror of https://github.com/MillironX/XAM.jl.git synced 2024-12-25 06:08:19 +00:00
XAM.jl/src/bam/bai.jl
Ciarán O'Mara 1a3c986152 Minimal code adjustments for working separation
- Update to use GenomicFeatures v2.
- BioAlignments v2.
- BioSequences v2.
- Indexes v0.1.
2020-02-20 21:19:07 +11:00

55 lines
1 KiB
Julia

# BAI
# ===
#
# Index for BAM files.
# An index type for the BAM file format.
struct BAI
# BGZF file index
index::Indexes.BGZFIndex
# number of unmapped reads
n_no_coors::Union{Nothing, Int}
end
"""
BAI(filename::AbstractString)
Load a BAI index from `filename`.
"""
function BAI(filename::AbstractString)
return open(read_bai, filename)
end
"""
BAI(input::IO)
Load a BAI index from `input`.
"""
function BAI(input::IO)
return read_bai(input)
end
# Read a BAI object from `input`.
function read_bai(input::IO)
# check magic bytes
B = read(input, UInt8)
A = read(input, UInt8)
I = read(input, UInt8)
x = read(input, UInt8)
if B != UInt8('B') || A != UInt8('A') || I != UInt8('I') || x != 0x01
error("input is not a valid BAI file")
end
# read contents
n_refs = read(input, Int32)
index = Indexes.read_bgzfindex(input, n_refs)
if !eof(input)
n_no_coors = read(input, UInt64)
else
n_no_coors = nothing
end
return BAI(index, n_no_coors)
end