htslib 0.1.0 → 0.2.2

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.
data/lib/hts/libhts.rb CHANGED
@@ -4,6 +4,7 @@ require_relative "ffi_ext/struct"
4
4
  require_relative "ffi_ext/pointer"
5
5
 
6
6
  module HTS
7
+ # A Module for working with native C HTSlib structures and functions.
7
8
  module LibHTS
8
9
  extend FFI::Library
9
10
 
data/lib/hts/tbx.rb CHANGED
@@ -8,7 +8,7 @@ module HTS
8
8
  class Tbx < Hts
9
9
  include Enumerable
10
10
 
11
- attr_reader :file_name
11
+ attr_reader :file_name, :index_name, :mode, :nthreads
12
12
 
13
13
  def self.open(*args, **kw)
14
14
  file = new(*args, **kw) # do not yield
@@ -22,24 +22,55 @@ module HTS
22
22
  file
23
23
  end
24
24
 
25
- def initialize(file_name, threads: nil)
25
+ def initialize(file_name, mode = "r", index: nil, threads: nil, build_index: false)
26
26
  if block_given?
27
27
  message = "HTS::Tbx.new() dose not take block; Please use HTS::Tbx.open() instead"
28
28
  raise message
29
29
  end
30
30
 
31
- @file_name = file_name
32
-
33
31
  # NOTE: Do not check for the existence of local files, since file_names may be remote URIs.
34
32
 
35
- @mode = "r"
33
+ @file_name = file_name
34
+ @index_name = index
35
+ @mode = mode
36
+ @nthreads = threads
36
37
  @hts_file = LibHTS.hts_open(@file_name, @mode)
37
38
 
38
39
  raise Errno::ENOENT, "Failed to open #{@file_name}" if @hts_file.null?
39
40
 
40
- if threads&.> 0
41
- r = LibHTS.hts_set_threads(@hts_file, threads)
42
- raise "Failed to set number of threads: #{threads}" if r < 0
41
+ set_threads(threads) if threads
42
+
43
+ # return if @mode[0] == "w"
44
+ raise "Not implemented" if @mode[0] == "w"
45
+
46
+ # build_index(index) if build_index
47
+ @idx = load_index(index)
48
+
49
+ super # do nothing
50
+ end
51
+
52
+ def build_index
53
+ raise "Not implemented yet"
54
+ end
55
+
56
+ def load_index(index_name = nil)
57
+ if index_name
58
+ LibHTS.tbx_index_load2(@file_name, index_name)
59
+ else
60
+ LibHTS.tbx_index_load3(@file_name, nil, 2)
61
+ end
62
+ end
63
+
64
+ def tid(name)
65
+ LibHTS.tbx_name2id(@idx, name)
66
+ end
67
+
68
+ def seqnames
69
+ nseq = FFI::MemoryPointer.new(:int)
70
+ LibHTS.tbx_seqnames(@idx, nseq).then do |pts|
71
+ pts.read_array_of_pointer(nseq.read_int).map do |pt|
72
+ pt.read_string
73
+ end
43
74
  end
44
75
  end
45
76
  end
data/lib/hts/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module HTS
4
- VERSION = "0.1.0"
4
+ VERSION = "0.2.2"
5
5
  end
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.1.0
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - kojix2
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-05-06 00:00:00.000000000 Z
11
+ date: 2022-08-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi
@@ -140,6 +140,7 @@ files:
140
140
  - lib/hts/bcf.rb
141
141
  - lib/hts/bcf/format.rb
142
142
  - lib/hts/bcf/header.rb
143
+ - lib/hts/bcf/header_record.rb
143
144
  - lib/hts/bcf/info.rb
144
145
  - lib/hts/bcf/record.rb
145
146
  - lib/hts/faidx.rb
@@ -158,6 +159,7 @@ files:
158
159
  - lib/hts/libhts/sam.rb
159
160
  - lib/hts/libhts/sam_funcs.rb
160
161
  - lib/hts/libhts/tbx.rb
162
+ - lib/hts/libhts/tbx_funcs.rb
161
163
  - lib/hts/libhts/thread_pool.rb
162
164
  - lib/hts/libhts/vcf.rb
163
165
  - lib/hts/libhts/vcf_funcs.rb
@@ -176,7 +178,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
176
178
  requirements:
177
179
  - - ">="
178
180
  - !ruby/object:Gem::Version
179
- version: '2.7'
181
+ version: '3.1'
180
182
  required_rubygems_version: !ruby/object:Gem::Requirement
181
183
  requirements:
182
184
  - - ">="