@@ -31,6 +31,25 @@ def self.open(*args, **kw)
3131 file
3232 end
3333
34+ def self . build_index ( file_name , index_name = nil , min_shift = 0 , threads = 0 , verbose = true )
35+ if verbose
36+ if index_name
37+ warn "Create index for #{ file_name } to #{ index_name } "
38+ else
39+ warn "Create index for #{ file_name } "
40+ end
41+ end
42+
43+ case LibHTS . sam_index_build3 ( file_name , index_name , min_shift , threads )
44+ when 0 # successful
45+ when -1 then raise "indexing failed"
46+ when -2 then raise "opening #{ file_name } failed"
47+ when -3 then raise "format not indexable"
48+ when -4 then raise "failed to create and/or save the index"
49+ else raise "unknown error"
50+ end
51+ end
52+
3453 def initialize ( file_name , mode = "r" , index : nil , fai : nil , threads : nil ,
3554 build_index : false )
3655 if block_given?
@@ -74,22 +93,10 @@ def initialize(file_name, mode = "r", index: nil, fai: nil, threads: nil,
7493 @start_position = tell
7594 end
7695
77- def build_index ( index_name = nil , min_shift : 0 , threads : 2 )
96+ def build_index ( index_name = nil , min_shift : 0 , threads : 2 , verbose : true )
7897 check_closed
7998
80- if index_name
81- warn "Create index for #{ @file_name } to #{ index_name } "
82- else
83- warn "Create index for #{ @file_name } "
84- end
85- case LibHTS . sam_index_build3 ( @file_name , index_name , min_shift , @nthreads || threads )
86- when 0 # successful
87- when -1 then raise "indexing failed"
88- when -2 then raise "opening #{ @file_name } failed"
89- when -3 then raise "format not indexable"
90- when -4 then raise "failed to create and/or save the index"
91- else raise "unknown error"
92- end
99+ self . class . build_index ( @file_name , index_name , min_shift , @nthreads || threads , verbose )
93100 self # for method chaining
94101 end
95102
0 commit comments