htslib 0.2.3 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/README.md +65 -47
 - data/TUTORIAL.md +270 -0
 - data/lib/hts/bam/auxi.rb +28 -2
 - data/lib/hts/bam/cigar.rb +46 -6
 - data/lib/hts/bam/flag.rb +43 -4
 - data/lib/hts/bam/header.rb +53 -2
 - data/lib/hts/bam/header_record.rb +11 -0
 - data/lib/hts/bam/record.rb +66 -24
 - data/lib/hts/bam.rb +88 -73
 - data/lib/hts/bcf/format.rb +28 -24
 - data/lib/hts/bcf/header.rb +79 -2
 - data/lib/hts/bcf/header_record.rb +35 -1
 - data/lib/hts/bcf/info.rb +28 -24
 - data/lib/hts/bcf.rb +118 -98
 - data/lib/hts/faidx/sequence.rb +64 -0
 - data/lib/hts/faidx.rb +64 -15
 - data/lib/hts/hts.rb +12 -9
 - data/lib/hts/libhts/constants.rb +46 -14
 - data/lib/hts/libhts/cram.rb +1 -1
 - data/lib/hts/libhts/sam.rb +4 -4
 - data/lib/hts/libhts/tbx.rb +2 -0
 - data/lib/hts/libhts/tbx_funcs.rb +3 -1
 - data/lib/hts/libhts/vcf.rb +1 -1
 - data/lib/hts/libhts/vcf_funcs.rb +16 -8
 - data/lib/hts/tbx.rb +50 -5
 - data/lib/hts/version.rb +1 -1
 - data/lib/htslib.rb +1 -0
 - metadata +6 -3
 
    
        data/lib/hts/hts.rb
    CHANGED
    
    | 
         @@ -31,8 +31,8 @@ module HTS 
     | 
|
| 
       31 
31 
     | 
    
         
             
                  end
         
     | 
| 
       32 
32 
     | 
    
         
             
                end
         
     | 
| 
       33 
33 
     | 
    
         | 
| 
       34 
     | 
    
         
            -
                def initialize(* 
     | 
| 
       35 
     | 
    
         
            -
                   
     | 
| 
      
 34 
     | 
    
         
            +
                def initialize(*_args)
         
     | 
| 
      
 35 
     | 
    
         
            +
                  raise TypeError, "Can't make instance of HTS abstract class"
         
     | 
| 
       36 
36 
     | 
    
         
             
                end
         
     | 
| 
       37 
37 
     | 
    
         | 
| 
       38 
38 
     | 
    
         
             
                def struct
         
     | 
| 
         @@ -69,6 +69,11 @@ module HTS 
     | 
|
| 
       69 
69 
     | 
    
         
             
                  @hts_file.nil? || @hts_file.null?
         
     | 
| 
       70 
70 
     | 
    
         
             
                end
         
     | 
| 
       71 
71 
     | 
    
         | 
| 
      
 72 
     | 
    
         
            +
                def fai=(fai)
         
     | 
| 
      
 73 
     | 
    
         
            +
                  check_closed
         
     | 
| 
      
 74 
     | 
    
         
            +
                  LibHTS.hts_set_fai_filename(@hts_file, fai) > 0 || raise
         
     | 
| 
      
 75 
     | 
    
         
            +
                end
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
       72 
77 
     | 
    
         
             
                def set_threads(n = nil)
         
     | 
| 
       73 
78 
     | 
    
         
             
                  if n.nil?
         
     | 
| 
       74 
79 
     | 
    
         
             
                    require "etc"
         
     | 
| 
         @@ -107,14 +112,12 @@ module HTS 
     | 
|
| 
       107 
112 
     | 
    
         
             
                end
         
     | 
| 
       108 
113 
     | 
    
         | 
| 
       109 
114 
     | 
    
         
             
                def rewind
         
     | 
| 
       110 
     | 
    
         
            -
                   
     | 
| 
       111 
     | 
    
         
            -
                    r = seek(@start_position)
         
     | 
| 
       112 
     | 
    
         
            -
                    raise "Failed to rewind: #{r}" if r < 0
         
     | 
| 
      
 115 
     | 
    
         
            +
                  raise "Cannot rewind: no start position" unless @start_position
         
     | 
| 
       113 
116 
     | 
    
         | 
| 
       114 
     | 
    
         
            -
             
     | 
| 
       115 
     | 
    
         
            -
                   
     | 
| 
       116 
     | 
    
         
            -
             
     | 
| 
       117 
     | 
    
         
            -
                   
     | 
| 
      
 117 
     | 
    
         
            +
                  r = seek(@start_position)
         
     | 
| 
      
 118 
     | 
    
         
            +
                  raise "Failed to rewind: #{r}" if r < 0
         
     | 
| 
      
 119 
     | 
    
         
            +
             
     | 
| 
      
 120 
     | 
    
         
            +
                  tell
         
     | 
| 
       118 
121 
     | 
    
         
             
                end
         
     | 
| 
       119 
122 
     | 
    
         | 
| 
       120 
123 
     | 
    
         
             
                private
         
     | 
    
        data/lib/hts/libhts/constants.rb
    CHANGED
    
    | 
         @@ -158,7 +158,7 @@ module HTS 
     | 
|
| 
       158 
158 
     | 
    
         
             
                    :specific,          :pointer
         
     | 
| 
       159 
159 
     | 
    
         
             
                end
         
     | 
| 
       160 
160 
     | 
    
         | 
| 
       161 
     | 
    
         
            -
                class HtsIdx < FFI::Struct
         
     | 
| 
      
 161 
     | 
    
         
            +
                class HtsIdx < FFI::Struct # FIXME: ManagedStruct
         
     | 
| 
       162 
162 
     | 
    
         
             
                  layout \
         
     | 
| 
       163 
163 
     | 
    
         
             
                    :fmt,            :int,
         
     | 
| 
       164 
164 
     | 
    
         
             
                    :min_shift,      :int,
         
     | 
| 
         @@ -188,6 +188,10 @@ module HTS 
     | 
|
| 
       188 
188 
     | 
    
         
             
                      :n_mapped,     :uint64,
         
     | 
| 
       189 
189 
     | 
    
         
             
                      :n_unmapped,   :uint64
         
     | 
| 
       190 
190 
     | 
    
         
             
                    )
         
     | 
| 
      
 191 
     | 
    
         
            +
             
     | 
| 
      
 192 
     | 
    
         
            +
                  def self.release(ptr)
         
     | 
| 
      
 193 
     | 
    
         
            +
                    LibHTS.hts_idx_destroy(ptr) unless ptr.null?
         
     | 
| 
      
 194 
     | 
    
         
            +
                  end
         
     | 
| 
       191 
195 
     | 
    
         
             
                end
         
     | 
| 
       192 
196 
     | 
    
         | 
| 
       193 
197 
     | 
    
         
             
                class HtsReglist < FFI::Struct
         
     | 
| 
         @@ -201,7 +205,7 @@ module HTS 
     | 
|
| 
       201 
205 
     | 
    
         
             
                end
         
     | 
| 
       202 
206 
     | 
    
         | 
| 
       203 
207 
     | 
    
         
             
                # HtsFile
         
     | 
| 
       204 
     | 
    
         
            -
                class SamHdr < FFI:: 
     | 
| 
      
 208 
     | 
    
         
            +
                class SamHdr < FFI::ManagedStruct
         
     | 
| 
       205 
209 
     | 
    
         
             
                  layout \
         
     | 
| 
       206 
210 
     | 
    
         
             
                    :n_targets,      :int32,
         
     | 
| 
       207 
211 
     | 
    
         
             
                    :ignore_sam_err, :int32,
         
     | 
| 
         @@ -213,6 +217,10 @@ module HTS 
     | 
|
| 
       213 
217 
     | 
    
         
             
                    :sdict,          :pointer,
         
     | 
| 
       214 
218 
     | 
    
         
             
                    :hrecs,          :pointer,
         
     | 
| 
       215 
219 
     | 
    
         
             
                    :ref_count,      :uint32
         
     | 
| 
      
 220 
     | 
    
         
            +
             
     | 
| 
      
 221 
     | 
    
         
            +
                  def self.release(ptr)
         
     | 
| 
      
 222 
     | 
    
         
            +
                    LibHTS.sam_hdr_destroy(ptr) unless ptr.null?
         
     | 
| 
      
 223 
     | 
    
         
            +
                  end
         
     | 
| 
       216 
224 
     | 
    
         
             
                end
         
     | 
| 
       217 
225 
     | 
    
         | 
| 
       218 
226 
     | 
    
         
             
                BamHdr = SamHdr
         
     | 
| 
         @@ -247,10 +255,14 @@ module HTS 
     | 
|
| 
       247 
255 
     | 
    
         | 
| 
       248 
256 
     | 
    
         
             
                SamFile = HtsFile
         
     | 
| 
       249 
257 
     | 
    
         | 
| 
       250 
     | 
    
         
            -
                class HtsTpool < FFI:: 
     | 
| 
      
 258 
     | 
    
         
            +
                class HtsTpool < FFI::ManagedStruct
         
     | 
| 
       251 
259 
     | 
    
         
             
                  layout \
         
     | 
| 
       252 
260 
     | 
    
         
             
                    :pool,           :pointer,
         
     | 
| 
       253 
261 
     | 
    
         
             
                    :qsize,          :int
         
     | 
| 
      
 262 
     | 
    
         
            +
             
     | 
| 
      
 263 
     | 
    
         
            +
                  def self.release(ptr)
         
     | 
| 
      
 264 
     | 
    
         
            +
                    LibHTS.hts_tpool_destroy(ptr) unless ptr.null?
         
     | 
| 
      
 265 
     | 
    
         
            +
                  end
         
     | 
| 
       254 
266 
     | 
    
         
             
                end
         
     | 
| 
       255 
267 
     | 
    
         | 
| 
       256 
268 
     | 
    
         
             
                class HtsOpt < FFI::Struct
         
     | 
| 
         @@ -265,7 +277,7 @@ module HTS 
     | 
|
| 
       265 
277 
     | 
    
         
             
                    :next,           HtsOpt.ptr
         
     | 
| 
       266 
278 
     | 
    
         
             
                end
         
     | 
| 
       267 
279 
     | 
    
         | 
| 
       268 
     | 
    
         
            -
                class HtsItr < FFI::BitStruct
         
     | 
| 
      
 280 
     | 
    
         
            +
                class HtsItr < FFI::BitStruct # FIXME: ManagedBitStruct
         
     | 
| 
       269 
281 
     | 
    
         
             
                  layout \
         
     | 
| 
       270 
282 
     | 
    
         
             
                    :_flags,         :uint32, # bit_fields
         
     | 
| 
       271 
283 
     | 
    
         
             
                    :tid,            :int,
         
     | 
| 
         @@ -300,6 +312,10 @@ module HTS 
     | 
|
| 
       300 
312 
     | 
    
         
             
                             :nocoor,    1,
         
     | 
| 
       301 
313 
     | 
    
         
             
                             :multi,     1,
         
     | 
| 
       302 
314 
     | 
    
         
             
                             :dummy,     27
         
     | 
| 
      
 315 
     | 
    
         
            +
             
     | 
| 
      
 316 
     | 
    
         
            +
                  def self.release(ptr)
         
     | 
| 
      
 317 
     | 
    
         
            +
                    LibHTS.hts_itr_destroy(ptr) unless ptr.null?
         
     | 
| 
      
 318 
     | 
    
         
            +
                  end
         
     | 
| 
       303 
319 
     | 
    
         
             
                end
         
     | 
| 
       304 
320 
     | 
    
         | 
| 
       305 
321 
     | 
    
         
             
                class Bam1Core < FFI::Struct
         
     | 
| 
         @@ -342,14 +358,14 @@ module HTS 
     | 
|
| 
       342 
358 
     | 
    
         
             
                class BamPileupCd < FFI::Union
         
     | 
| 
       343 
359 
     | 
    
         
             
                  layout \
         
     | 
| 
       344 
360 
     | 
    
         
             
                    :p,               :pointer,
         
     | 
| 
       345 
     | 
    
         
            -
                    :i,               : 
     | 
| 
      
 361 
     | 
    
         
            +
                    :i,               :int64,
         
     | 
| 
       346 
362 
     | 
    
         
             
                    :f,               :double
         
     | 
| 
       347 
363 
     | 
    
         
             
                end
         
     | 
| 
       348 
364 
     | 
    
         | 
| 
       349 
365 
     | 
    
         
             
                class BamPileup1 < FFI::BitStruct
         
     | 
| 
       350 
366 
     | 
    
         
             
                  layout \
         
     | 
| 
       351 
367 
     | 
    
         
             
                    :b,              Bam1.ptr,
         
     | 
| 
       352 
     | 
    
         
            -
                    :qpos,           : 
     | 
| 
      
 368 
     | 
    
         
            +
                    :qpos,           :int32,
         
     | 
| 
       353 
369 
     | 
    
         
             
                    :indel,          :int,
         
     | 
| 
       354 
370 
     | 
    
         
             
                    :level,          :int,
         
     | 
| 
       355 
371 
     | 
    
         
             
                    :_flags,         :uint32, # bit_fields
         
     | 
| 
         @@ -375,24 +391,32 @@ module HTS 
     | 
|
| 
       375 
391 
     | 
    
         
             
                    :line_skip,      :int32
         
     | 
| 
       376 
392 
     | 
    
         
             
                end
         
     | 
| 
       377 
393 
     | 
    
         | 
| 
       378 
     | 
    
         
            -
                class Tbx < FFI:: 
     | 
| 
      
 394 
     | 
    
         
            +
                class Tbx < FFI::ManagedStruct
         
     | 
| 
       379 
395 
     | 
    
         
             
                  layout \
         
     | 
| 
       380 
     | 
    
         
            -
                    :conf,           TbxConf 
     | 
| 
      
 396 
     | 
    
         
            +
                    :conf,           TbxConf,
         
     | 
| 
       381 
397 
     | 
    
         
             
                    :idx,            HtsIdx.ptr,
         
     | 
| 
       382 
398 
     | 
    
         
             
                    :dict,           :pointer
         
     | 
| 
      
 399 
     | 
    
         
            +
             
     | 
| 
      
 400 
     | 
    
         
            +
                  def self.release(ptr)
         
     | 
| 
      
 401 
     | 
    
         
            +
                    LibHTS.tbx_destroy(ptr) unless ptr.null?
         
     | 
| 
      
 402 
     | 
    
         
            +
                  end
         
     | 
| 
       383 
403 
     | 
    
         
             
                end
         
     | 
| 
       384 
404 
     | 
    
         | 
| 
       385 
405 
     | 
    
         
             
                # faidx
         
     | 
| 
       386 
406 
     | 
    
         | 
| 
       387 
407 
     | 
    
         
             
                FaiFormatOptions = enum(:FAI_NONE, :FAI_FASTA, :FAI_FASTQ)
         
     | 
| 
       388 
408 
     | 
    
         | 
| 
       389 
     | 
    
         
            -
                class Faidx < FFI::Struct
         
     | 
| 
       390 
     | 
    
         
            -
                  layout :bgzf,      BGZF,
         
     | 
| 
      
 409 
     | 
    
         
            +
                class Faidx < FFI::Struct # FIXME: ManagedStruct
         
     | 
| 
      
 410 
     | 
    
         
            +
                  layout :bgzf,      BGZF.ptr,
         
     | 
| 
       391 
411 
     | 
    
         
             
                         :n,         :int,
         
     | 
| 
       392 
412 
     | 
    
         
             
                         :m,         :int,
         
     | 
| 
       393 
413 
     | 
    
         
             
                         :name,      :pointer,
         
     | 
| 
       394 
414 
     | 
    
         
             
                         :hash,      :pointer,
         
     | 
| 
       395 
415 
     | 
    
         
             
                         :format,    FaiFormatOptions
         
     | 
| 
      
 416 
     | 
    
         
            +
             
     | 
| 
      
 417 
     | 
    
         
            +
                  def self.release(ptr)
         
     | 
| 
      
 418 
     | 
    
         
            +
                    LibHTS.fai_destroy(ptr) unless ptr.null?
         
     | 
| 
      
 419 
     | 
    
         
            +
                  end
         
     | 
| 
       396 
420 
     | 
    
         
             
                end
         
     | 
| 
       397 
421 
     | 
    
         | 
| 
       398 
422 
     | 
    
         
             
                # bcf
         
     | 
| 
         @@ -404,7 +428,7 @@ module HTS 
     | 
|
| 
       404 
428 
     | 
    
         
             
                end
         
     | 
| 
       405 
429 
     | 
    
         | 
| 
       406 
430 
     | 
    
         
             
                # Complete textual representation of a header line
         
     | 
| 
       407 
     | 
    
         
            -
                class BcfHrec < FFI:: 
     | 
| 
      
 431 
     | 
    
         
            +
                class BcfHrec < FFI::ManagedStruct
         
     | 
| 
       408 
432 
     | 
    
         
             
                  layout \
         
     | 
| 
       409 
433 
     | 
    
         
             
                    :type,           :int,
         
     | 
| 
       410 
434 
     | 
    
         
             
                    :key,            :string,
         
     | 
| 
         @@ -412,6 +436,10 @@ module HTS 
     | 
|
| 
       412 
436 
     | 
    
         
             
                    :nkeys,          :int,
         
     | 
| 
       413 
437 
     | 
    
         
             
                    :keys,           :pointer,
         
     | 
| 
       414 
438 
     | 
    
         
             
                    :vals,           :pointer
         
     | 
| 
      
 439 
     | 
    
         
            +
             
     | 
| 
      
 440 
     | 
    
         
            +
                  def self.release(ptr)
         
     | 
| 
      
 441 
     | 
    
         
            +
                    LibHTS.bcf_hrec_destroy(ptr) unless ptr.null?
         
     | 
| 
      
 442 
     | 
    
         
            +
                  end
         
     | 
| 
       415 
443 
     | 
    
         
             
                end
         
     | 
| 
       416 
444 
     | 
    
         | 
| 
       417 
445 
     | 
    
         
             
                class BcfInfo < FFI::BitStruct
         
     | 
| 
         @@ -435,7 +463,7 @@ module HTS 
     | 
|
| 
       435 
463 
     | 
    
         | 
| 
       436 
464 
     | 
    
         
             
                class BcfIdinfo < FFI::Struct
         
     | 
| 
       437 
465 
     | 
    
         
             
                  layout \
         
     | 
| 
       438 
     | 
    
         
            -
                    :info,           [: 
     | 
| 
      
 466 
     | 
    
         
            +
                    :info,           [:uint64, 3],
         
     | 
| 
       439 
467 
     | 
    
         
             
                    :hrec,           [BcfHrec.ptr, 3],
         
     | 
| 
       440 
468 
     | 
    
         
             
                    :id,             :int
         
     | 
| 
       441 
469 
     | 
    
         
             
                end
         
     | 
| 
         @@ -446,7 +474,7 @@ module HTS 
     | 
|
| 
       446 
474 
     | 
    
         
             
                    :val,            BcfIdinfo.ptr
         
     | 
| 
       447 
475 
     | 
    
         
             
                end
         
     | 
| 
       448 
476 
     | 
    
         | 
| 
       449 
     | 
    
         
            -
                class BcfHdr < FFI:: 
     | 
| 
      
 477 
     | 
    
         
            +
                class BcfHdr < FFI::ManagedStruct
         
     | 
| 
       450 
478 
     | 
    
         
             
                  layout \
         
     | 
| 
       451 
479 
     | 
    
         
             
                    :n,              [:int, 3],
         
     | 
| 
       452 
480 
     | 
    
         
             
                    :id,             [:pointer, 3], # BcfIdpair.ptr
         
     | 
| 
         @@ -461,6 +489,10 @@ module HTS 
     | 
|
| 
       461 
489 
     | 
    
         
             
                    :keep_samples,   :pointer,
         
     | 
| 
       462 
490 
     | 
    
         
             
                    :mem,            KString,
         
     | 
| 
       463 
491 
     | 
    
         
             
                    :m,              [:int, 3]
         
     | 
| 
      
 492 
     | 
    
         
            +
             
     | 
| 
      
 493 
     | 
    
         
            +
                  def self.release(ptr)
         
     | 
| 
      
 494 
     | 
    
         
            +
                    LibHTS.bcf_hdr_destroy(ptr) unless ptr.null?
         
     | 
| 
      
 495 
     | 
    
         
            +
                  end
         
     | 
| 
       464 
496 
     | 
    
         
             
                end
         
     | 
| 
       465 
497 
     | 
    
         | 
| 
       466 
498 
     | 
    
         
             
                class BcfFmt < FFI::BitStruct
         
     | 
| 
         @@ -504,7 +536,7 @@ module HTS 
     | 
|
| 
       504 
536 
     | 
    
         
             
                  layout \
         
     | 
| 
       505 
537 
     | 
    
         
             
                    :pos,            :hts_pos_t,
         
     | 
| 
       506 
538 
     | 
    
         
             
                    :rlen,           :hts_pos_t,
         
     | 
| 
       507 
     | 
    
         
            -
                    :rid,            : 
     | 
| 
      
 539 
     | 
    
         
            +
                    :rid,            :int32,
         
     | 
| 
       508 
540 
     | 
    
         
             
                    :qual,           :float,
         
     | 
| 
       509 
541 
     | 
    
         
             
                    :_n_info_allele, :uint32,
         
     | 
| 
       510 
542 
     | 
    
         
             
                    :_n_fmt_sample,  :uint32,
         
     | 
    
        data/lib/hts/libhts/cram.rb
    CHANGED
    
    
    
        data/lib/hts/libhts/sam.rb
    CHANGED
    
    | 
         @@ -242,13 +242,13 @@ module HTS 
     | 
|
| 
       242 
242 
     | 
    
         
             
                  [Bam1,
         
     | 
| 
       243 
243 
     | 
    
         
             
                   :size_t,
         
     | 
| 
       244 
244 
     | 
    
         
             
                   :string,
         
     | 
| 
       245 
     | 
    
         
            -
                   : 
     | 
| 
       246 
     | 
    
         
            -
                   : 
     | 
| 
      
 245 
     | 
    
         
            +
                   :uint16,
         
     | 
| 
      
 246 
     | 
    
         
            +
                   :int32,
         
     | 
| 
       247 
247 
     | 
    
         
             
                   :hts_pos_t,
         
     | 
| 
       248 
     | 
    
         
            -
                   : 
     | 
| 
      
 248 
     | 
    
         
            +
                   :uint8,
         
     | 
| 
       249 
249 
     | 
    
         
             
                   :size_t,
         
     | 
| 
       250 
250 
     | 
    
         
             
                   :string,
         
     | 
| 
       251 
     | 
    
         
            -
                   : 
     | 
| 
      
 251 
     | 
    
         
            +
                   :int32,
         
     | 
| 
       252 
252 
     | 
    
         
             
                   :hts_pos_t,
         
     | 
| 
       253 
253 
     | 
    
         
             
                   :hts_pos_t,
         
     | 
| 
       254 
254 
     | 
    
         
             
                   :size_t,
         
     | 
    
        data/lib/hts/libhts/tbx.rb
    CHANGED
    
    
    
        data/lib/hts/libhts/tbx_funcs.rb
    CHANGED
    
    | 
         @@ -1,3 +1,5 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
       1 
3 
     | 
    
         
             
            module HTS
         
     | 
| 
       2 
4 
     | 
    
         
             
              module LibHTS
         
     | 
| 
       3 
5 
     | 
    
         
             
                class << self
         
     | 
| 
         @@ -6,7 +8,7 @@ module HTS 
     | 
|
| 
       6 
8 
     | 
    
         
             
                  end
         
     | 
| 
       7 
9 
     | 
    
         | 
| 
       8 
10 
     | 
    
         
             
                  def tbx_itr_queryi(tbx, tid, beg, end_)
         
     | 
| 
       9 
     | 
    
         
            -
                    hts_itr_query(tbx[:idx], tid, beg, end_, tbx_readrec)
         
     | 
| 
      
 11 
     | 
    
         
            +
                    hts_itr_query(tbx[:idx], tid, beg, end_, @@tbx_readrec)
         
     | 
| 
       10 
12 
     | 
    
         
             
                  end
         
     | 
| 
       11 
13 
     | 
    
         | 
| 
       12 
14 
     | 
    
         
             
                  def tbx_itr_querys(tbx, s)
         
     | 
    
        data/lib/hts/libhts/vcf.rb
    CHANGED
    
    
    
        data/lib/hts/libhts/vcf_funcs.rb
    CHANGED
    
    | 
         @@ -294,15 +294,23 @@ module HTS 
     | 
|
| 
       294 
294 
     | 
    
         
             
                  end
         
     | 
| 
       295 
295 
     | 
    
         | 
| 
       296 
296 
     | 
    
         
             
                  # Typed value I/O
         
     | 
| 
       297 
     | 
    
         
            -
                   
     | 
| 
       298 
     | 
    
         
            -
                  def  
     | 
| 
       299 
     | 
    
         
            -
                   
     | 
| 
       300 
     | 
    
         
            -
                  def  
     | 
| 
      
 297 
     | 
    
         
            +
                  # INT8_MIN  + 1
         
     | 
| 
      
 298 
     | 
    
         
            +
                  def bcf_int8_vector_end  = -127
         
     | 
| 
      
 299 
     | 
    
         
            +
                  # INT16_MIN + 1
         
     | 
| 
      
 300 
     | 
    
         
            +
                  def bcf_int16_vector_end = -32_767
         
     | 
| 
      
 301 
     | 
    
         
            +
                  # INT32_MIN + 1
         
     | 
| 
      
 302 
     | 
    
         
            +
                  def bcf_int32_vector_end = -2_147_483_647
         
     | 
| 
      
 303 
     | 
    
         
            +
                  # INT64_MIN + 1
         
     | 
| 
      
 304 
     | 
    
         
            +
                  def bcf_int64_vector_end = -9_223_372_036_854_775_807
         
     | 
| 
       301 
305 
     | 
    
         
             
                  def bcf_str_vector_end   = 0
         
     | 
| 
       302 
     | 
    
         
            -
                   
     | 
| 
       303 
     | 
    
         
            -
                  def  
     | 
| 
       304 
     | 
    
         
            -
                   
     | 
| 
       305 
     | 
    
         
            -
                  def  
     | 
| 
      
 306 
     | 
    
         
            +
                  # INT8_MIN
         
     | 
| 
      
 307 
     | 
    
         
            +
                  def bcf_int8_missing     = -128
         
     | 
| 
      
 308 
     | 
    
         
            +
                  # INT16_MIN
         
     | 
| 
      
 309 
     | 
    
         
            +
                  def bcf_int16_missing    = (-32_767 - 1)
         
     | 
| 
      
 310 
     | 
    
         
            +
                  # INT32_MIN
         
     | 
| 
      
 311 
     | 
    
         
            +
                  def bcf_int32_missing    = (-2_147_483_647 - 1)
         
     | 
| 
      
 312 
     | 
    
         
            +
                  # INT64_MIN
         
     | 
| 
      
 313 
     | 
    
         
            +
                  def bcf_int64_missing    = (-9_223_372_036_854_775_807 - 1)
         
     | 
| 
       306 
314 
     | 
    
         
             
                  def bcf_str_missing      = 0x07
         
     | 
| 
       307 
315 
     | 
    
         | 
| 
       308 
316 
     | 
    
         
             
                  BCF_MAX_BT_INT8  = 0x7f           # INT8_MAX  */
         
     | 
    
        data/lib/hts/tbx.rb
    CHANGED
    
    | 
         @@ -45,8 +45,6 @@ module HTS 
     | 
|
| 
       45 
45 
     | 
    
         | 
| 
       46 
46 
     | 
    
         
             
                  # build_index(index) if build_index
         
     | 
| 
       47 
47 
     | 
    
         
             
                  @idx = load_index(index)
         
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
                  super # do nothing
         
     | 
| 
       50 
48 
     | 
    
         
             
                end
         
     | 
| 
       51 
49 
     | 
    
         | 
| 
       52 
50 
     | 
    
         
             
                def build_index
         
     | 
| 
         @@ -61,6 +59,10 @@ module HTS 
     | 
|
| 
       61 
59 
     | 
    
         
             
                  end
         
     | 
| 
       62 
60 
     | 
    
         
             
                end
         
     | 
| 
       63 
61 
     | 
    
         | 
| 
      
 62 
     | 
    
         
            +
                def index_loaded?
         
     | 
| 
      
 63 
     | 
    
         
            +
                  !@idx.null?
         
     | 
| 
      
 64 
     | 
    
         
            +
                end
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
       64 
66 
     | 
    
         
             
                def tid(name)
         
     | 
| 
       65 
67 
     | 
    
         
             
                  LibHTS.tbx_name2id(@idx, name)
         
     | 
| 
       66 
68 
     | 
    
         
             
                end
         
     | 
| 
         @@ -68,10 +70,53 @@ module HTS 
     | 
|
| 
       68 
70 
     | 
    
         
             
                def seqnames
         
     | 
| 
       69 
71 
     | 
    
         
             
                  nseq = FFI::MemoryPointer.new(:int)
         
     | 
| 
       70 
72 
     | 
    
         
             
                  LibHTS.tbx_seqnames(@idx, nseq).then do |pts|
         
     | 
| 
       71 
     | 
    
         
            -
                    pts.read_array_of_pointer(nseq.read_int).map 
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
       73 
     | 
    
         
            -
             
     | 
| 
      
 73 
     | 
    
         
            +
                    pts.read_array_of_pointer(nseq.read_int).map(&:read_string)
         
     | 
| 
      
 74 
     | 
    
         
            +
                  end
         
     | 
| 
      
 75 
     | 
    
         
            +
                end
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
                def query(region, start = nil, end_ = nil, &block)
         
     | 
| 
      
 78 
     | 
    
         
            +
                  check_closed
         
     | 
| 
      
 79 
     | 
    
         
            +
                  raise "Index file is required to call the query method." unless index_loaded?
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
                  if start && end_
         
     | 
| 
      
 82 
     | 
    
         
            +
                    queryi(tid(region), start, end_, &block)
         
     | 
| 
      
 83 
     | 
    
         
            +
                  else
         
     | 
| 
      
 84 
     | 
    
         
            +
                    querys(region, &block)
         
     | 
| 
      
 85 
     | 
    
         
            +
                  end
         
     | 
| 
      
 86 
     | 
    
         
            +
                end
         
     | 
| 
      
 87 
     | 
    
         
            +
             
     | 
| 
      
 88 
     | 
    
         
            +
                private
         
     | 
| 
      
 89 
     | 
    
         
            +
             
     | 
| 
      
 90 
     | 
    
         
            +
                def queryi(id, start, end_)
         
     | 
| 
      
 91 
     | 
    
         
            +
                  return to_enum(__method__, id, start, end_) unless block_given?
         
     | 
| 
      
 92 
     | 
    
         
            +
             
     | 
| 
      
 93 
     | 
    
         
            +
                  qiter = LibHTS.tbx_itr_queryi(@idx, id, start, end_)
         
     | 
| 
      
 94 
     | 
    
         
            +
             
     | 
| 
      
 95 
     | 
    
         
            +
                  raise "Failed to query region: #{id}:#{start}-#{end_}" if qiter.null?
         
     | 
| 
      
 96 
     | 
    
         
            +
             
     | 
| 
      
 97 
     | 
    
         
            +
                  r = LibHTS::KString.new
         
     | 
| 
      
 98 
     | 
    
         
            +
                  begin
         
     | 
| 
      
 99 
     | 
    
         
            +
                    yield r[:s] while LibHTS.tbx_itr_next(@hts_file, @idx, qiter, r) > 0
         
     | 
| 
      
 100 
     | 
    
         
            +
                  ensure
         
     | 
| 
      
 101 
     | 
    
         
            +
                    LibHTS.hts_itr_destroy(qiter)
         
     | 
| 
      
 102 
     | 
    
         
            +
                  end
         
     | 
| 
      
 103 
     | 
    
         
            +
                  self
         
     | 
| 
      
 104 
     | 
    
         
            +
                end
         
     | 
| 
      
 105 
     | 
    
         
            +
             
     | 
| 
      
 106 
     | 
    
         
            +
                def querys(region)
         
     | 
| 
      
 107 
     | 
    
         
            +
                  return to_enum(__method__, region) unless block_given?
         
     | 
| 
      
 108 
     | 
    
         
            +
             
     | 
| 
      
 109 
     | 
    
         
            +
                  qiter = LibHTS.tbx_itr_querys(@idx, region)
         
     | 
| 
      
 110 
     | 
    
         
            +
             
     | 
| 
      
 111 
     | 
    
         
            +
                  raise "Failed to query region: #{region}" if qiter.null?
         
     | 
| 
      
 112 
     | 
    
         
            +
             
     | 
| 
      
 113 
     | 
    
         
            +
                  r = LibHTS::KString.new
         
     | 
| 
      
 114 
     | 
    
         
            +
                  begin
         
     | 
| 
      
 115 
     | 
    
         
            +
                    yield r[:s].split("\t") while LibHTS.tbx_itr_next(@hts_file, @idx, qiter, r) > 0
         
     | 
| 
      
 116 
     | 
    
         
            +
                  ensure
         
     | 
| 
      
 117 
     | 
    
         
            +
                    LibHTS.hts_itr_destroy(qiter)
         
     | 
| 
       74 
118 
     | 
    
         
             
                  end
         
     | 
| 
      
 119 
     | 
    
         
            +
                  self
         
     | 
| 
       75 
120 
     | 
    
         
             
                end
         
     | 
| 
       76 
121 
     | 
    
         
             
              end
         
     | 
| 
       77 
122 
     | 
    
         
             
            end
         
     | 
    
        data/lib/hts/version.rb
    CHANGED
    
    
    
        data/lib/htslib.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: htslib
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.2. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.2.6
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - kojix2
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date:  
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2023-01-09 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: ffi
         
     | 
| 
         @@ -131,11 +131,13 @@ extra_rdoc_files: [] 
     | 
|
| 
       131 
131 
     | 
    
         
             
            files:
         
     | 
| 
       132 
132 
     | 
    
         
             
            - LICENSE.txt
         
     | 
| 
       133 
133 
     | 
    
         
             
            - README.md
         
     | 
| 
      
 134 
     | 
    
         
            +
            - TUTORIAL.md
         
     | 
| 
       134 
135 
     | 
    
         
             
            - lib/hts/bam.rb
         
     | 
| 
       135 
136 
     | 
    
         
             
            - lib/hts/bam/auxi.rb
         
     | 
| 
       136 
137 
     | 
    
         
             
            - lib/hts/bam/cigar.rb
         
     | 
| 
       137 
138 
     | 
    
         
             
            - lib/hts/bam/flag.rb
         
     | 
| 
       138 
139 
     | 
    
         
             
            - lib/hts/bam/header.rb
         
     | 
| 
      
 140 
     | 
    
         
            +
            - lib/hts/bam/header_record.rb
         
     | 
| 
       139 
141 
     | 
    
         
             
            - lib/hts/bam/record.rb
         
     | 
| 
       140 
142 
     | 
    
         
             
            - lib/hts/bcf.rb
         
     | 
| 
       141 
143 
     | 
    
         
             
            - lib/hts/bcf/format.rb
         
     | 
| 
         @@ -144,6 +146,7 @@ files: 
     | 
|
| 
       144 
146 
     | 
    
         
             
            - lib/hts/bcf/info.rb
         
     | 
| 
       145 
147 
     | 
    
         
             
            - lib/hts/bcf/record.rb
         
     | 
| 
       146 
148 
     | 
    
         
             
            - lib/hts/faidx.rb
         
     | 
| 
      
 149 
     | 
    
         
            +
            - lib/hts/faidx/sequence.rb
         
     | 
| 
       147 
150 
     | 
    
         
             
            - lib/hts/ffi_ext/README.md
         
     | 
| 
       148 
151 
     | 
    
         
             
            - lib/hts/ffi_ext/pointer.rb
         
     | 
| 
       149 
152 
     | 
    
         
             
            - lib/hts/ffi_ext/struct.rb
         
     | 
| 
         @@ -186,7 +189,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       186 
189 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       187 
190 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       188 
191 
     | 
    
         
             
            requirements: []
         
     | 
| 
       189 
     | 
    
         
            -
            rubygems_version: 3. 
     | 
| 
      
 192 
     | 
    
         
            +
            rubygems_version: 3.4.1
         
     | 
| 
       190 
193 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       191 
194 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       192 
195 
     | 
    
         
             
            summary: HTSlib bindings for Ruby
         
     |