131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
|
# File 'lib/hts/faidx.rb', line 131
def fetch_qual(name, start = nil, stop = nil)
name = name.to_s
rlen = FFI::MemoryPointer.new(:int)
if start.nil? && stop.nil?
result = LibHTS.fai_fetchqual64(@fai, name, rlen)
else
start < 0 && raise(ArgumentError, "Expect start to be >= 0")
stop < 0 && raise(ArgumentError, "Expect stop to be >= 0")
start > stop && raise(ArgumentError, "Expect start to be <= stop")
stop >= seq_len(name) && raise(ArgumentError, "Expect stop to be < seq_len")
result = LibHTS.faidx_fetch_qual64(@fai, name, start, stop, rlen)
end
case rlen.read_int
when -2 then raise "Invalid chromosome name: #{name}"
when -1 then raise "Error fetching sequence: #{name}:#{start}-#{stop}"
end
result
end
|