htslib 0.2.2 → 0.2.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/hts/bam/{aux.rb → auxi.rb} +6 -0
- data/lib/hts/bam/record.rb +1 -1
- data/lib/hts/libhts/constants.rb +4 -4
- data/lib/hts/libhts/cram.rb +39 -0
- data/lib/hts/libhts/sam_funcs.rb +16 -0
- data/lib/hts/libhts/vcf.rb +84 -2
- data/lib/hts/libhts/vcf_funcs.rb +33 -0
- data/lib/hts/libhts.rb +2 -1
- data/lib/hts/version.rb +1 -1
- data/lib/htslib.rb +15 -1
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ea47a473d63b90fd2b1db4ecd65aa1ef38d47bbe5624e24ac583b5329301e5cb
|
4
|
+
data.tar.gz: aab96376972d7b0a587978484b22e41ee049ea742cba937cd57c66a9c0c42f2a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 76d9aa699d0176557d8e44171018b132fc4df2c0e1f47a9784388693103799cf920c2ae437fb97f8429422a1edb5ebd43eae7b28a1f18452a5eeeac38244a981
|
7
|
+
data.tar.gz: f2f1d50099a66e71574c4019e66452dd100371cbdc7d08b144856bab8f59f04aac4e207585534f26e29a06342a7fafe5c3ea0fb0d0e2e8dd9ed1822ddbcbdfe8
|
@@ -1,5 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
# Q. Why is the file name auxi.rb and not aux.rb?
|
4
|
+
#
|
5
|
+
# A. This is for compatibility with Windows.
|
6
|
+
# In Windows, aux is a reserved word
|
7
|
+
# You cannot create a file named aux.
|
8
|
+
|
3
9
|
module HTS
|
4
10
|
class Bam < Hts
|
5
11
|
# Auxiliary record data
|
data/lib/hts/bam/record.rb
CHANGED
data/lib/hts/libhts/constants.rb
CHANGED
@@ -195,7 +195,7 @@ module HTS
|
|
195
195
|
:reg, :string,
|
196
196
|
:intervals, :pointer, # hts_pair_pos_t
|
197
197
|
:tid, :int,
|
198
|
-
:count, :
|
198
|
+
:count, :uint32,
|
199
199
|
:min_beg, :hts_pos_t,
|
200
200
|
:max_end, :hts_pos_t
|
201
201
|
end
|
@@ -352,7 +352,7 @@ module HTS
|
|
352
352
|
:qpos, :int32_t,
|
353
353
|
:indel, :int,
|
354
354
|
:level, :int,
|
355
|
-
:_flags, :
|
355
|
+
:_flags, :uint32, # bit_fields
|
356
356
|
:cd, BamPileupCd,
|
357
357
|
:cigar_ind, :int
|
358
358
|
|
@@ -506,8 +506,8 @@ module HTS
|
|
506
506
|
:rlen, :hts_pos_t,
|
507
507
|
:rid, :int32_t,
|
508
508
|
:qual, :float,
|
509
|
-
:_n_info_allele, :
|
510
|
-
:_n_fmt_sample, :
|
509
|
+
:_n_info_allele, :uint32,
|
510
|
+
:_n_fmt_sample, :uint32,
|
511
511
|
:shared, KString,
|
512
512
|
:indiv, KString,
|
513
513
|
:d, BcfDec,
|
data/lib/hts/libhts/cram.rb
CHANGED
@@ -7,6 +7,8 @@ module HTS
|
|
7
7
|
typedef :pointer, :cram_block
|
8
8
|
typedef :pointer, :cram_metrics
|
9
9
|
|
10
|
+
# cram_fd
|
11
|
+
|
10
12
|
attach_function \
|
11
13
|
:cram_fd_get_header,
|
12
14
|
[:cram_fd],
|
@@ -82,6 +84,8 @@ module HTS
|
|
82
84
|
[:cram_fd],
|
83
85
|
:int
|
84
86
|
|
87
|
+
# cram_block
|
88
|
+
|
85
89
|
attach_function \
|
86
90
|
:cram_block_get_content_id,
|
87
91
|
[:cram_block],
|
@@ -157,71 +161,88 @@ module HTS
|
|
157
161
|
%i[cram_block size_t],
|
158
162
|
:void
|
159
163
|
|
164
|
+
# Computes the size of a cram block, including the block header itself.
|
160
165
|
attach_function \
|
161
166
|
:cram_block_size,
|
162
167
|
[:cram_block],
|
163
168
|
:uint32
|
164
169
|
|
170
|
+
# Renumbers RG numbers in a cram compression header.
|
165
171
|
attach_function \
|
166
172
|
:cram_transcode_rg,
|
167
173
|
%i[cram_fd cram_fd cram_container int pointer pointer],
|
168
174
|
:int
|
169
175
|
|
176
|
+
# Copies the blocks representing the next num_slice slices from a
|
177
|
+
# container from 'in' to 'out'.
|
170
178
|
attach_function \
|
171
179
|
:cram_copy_slice,
|
172
180
|
%i[cram_fd cram_fd int32],
|
173
181
|
:int
|
174
182
|
|
183
|
+
# Returns the number of cram blocks within this slice.
|
175
184
|
attach_function \
|
176
185
|
:cram_slice_hdr_get_num_blocks,
|
177
186
|
[:pointer],
|
178
187
|
:int32
|
179
188
|
|
189
|
+
# Returns the block content_id for the block containing an embedded
|
190
|
+
# reference sequence.
|
180
191
|
attach_function \
|
181
192
|
:cram_slice_hdr_get_embed_ref_id,
|
182
193
|
[:pointer],
|
183
194
|
:int
|
184
195
|
|
196
|
+
# Returns slice reference ID, start and span (length) coordinates.
|
185
197
|
attach_function \
|
186
198
|
:cram_slice_hdr_get_coords,
|
187
199
|
%i[pointer pointer pointer pointer],
|
188
200
|
:void
|
189
201
|
|
202
|
+
# Decodes a slice header from a cram block.
|
190
203
|
attach_function \
|
191
204
|
:cram_decode_slice_header,
|
192
205
|
%i[pointer pointer],
|
193
206
|
:pointer
|
194
207
|
|
208
|
+
# Frees a cram_block_slice_hdr structure.
|
195
209
|
attach_function \
|
196
210
|
:cram_free_slice_header,
|
197
211
|
[:pointer],
|
198
212
|
:void
|
199
213
|
|
214
|
+
# Allocates a new cram_block structure with a specified content_type
|
215
|
+
# and id.
|
200
216
|
attach_function \
|
201
217
|
:cram_new_block,
|
202
218
|
[CramContentType, :int],
|
203
219
|
:cram_block
|
204
220
|
|
221
|
+
# Reads a block from a cram file.
|
205
222
|
attach_function \
|
206
223
|
:cram_read_block,
|
207
224
|
[:cram_fd],
|
208
225
|
:cram_block
|
209
226
|
|
227
|
+
# Writes a CRAM block.
|
210
228
|
attach_function \
|
211
229
|
:cram_write_block,
|
212
230
|
%i[cram_fd cram_block],
|
213
231
|
:int
|
214
232
|
|
233
|
+
# Frees a CRAM block, deallocating internal data too.
|
215
234
|
attach_function \
|
216
235
|
:cram_free_block,
|
217
236
|
[:cram_block],
|
218
237
|
:void
|
219
238
|
|
239
|
+
# Uncompresses a CRAM block, if compressed.
|
220
240
|
attach_function \
|
221
241
|
:cram_uncompress_block,
|
222
242
|
[:cram_block],
|
223
243
|
:int
|
224
244
|
|
245
|
+
# Compresses a block.
|
225
246
|
attach_function \
|
226
247
|
:cram_compress_block,
|
227
248
|
%i[cram_fd cram_block cram_metrics int int],
|
@@ -232,6 +253,8 @@ module HTS
|
|
232
253
|
# %i[cram_fd cram_slice cram_block cram_metrics int int],
|
233
254
|
# :int
|
234
255
|
|
256
|
+
# Creates a new container, specifying the maximum number of slices
|
257
|
+
# and records permitted.
|
235
258
|
attach_function \
|
236
259
|
:cram_new_container,
|
237
260
|
%i[int int],
|
@@ -242,16 +265,20 @@ module HTS
|
|
242
265
|
[:cram_container],
|
243
266
|
:void
|
244
267
|
|
268
|
+
# Reads a container header.
|
245
269
|
attach_function \
|
246
270
|
:cram_read_container,
|
247
271
|
[:cram_fd],
|
248
272
|
:cram_container
|
249
273
|
|
274
|
+
# Writes a container structure.
|
250
275
|
attach_function \
|
251
276
|
:cram_write_container,
|
252
277
|
%i[cram_fd cram_container],
|
253
278
|
:int
|
254
279
|
|
280
|
+
# Stores the container structure in dat and returns *size as the
|
281
|
+
# number of bytes written to dat[].
|
255
282
|
attach_function \
|
256
283
|
:cram_store_container,
|
257
284
|
%i[cram_fd cram_container string pointer],
|
@@ -262,61 +289,73 @@ module HTS
|
|
262
289
|
[:cram_container],
|
263
290
|
:int
|
264
291
|
|
292
|
+
# Opens a CRAM file for read (mode "rb") or write ("wb").
|
265
293
|
attach_function \
|
266
294
|
:cram_open,
|
267
295
|
%i[string string],
|
268
296
|
:cram_fd
|
269
297
|
|
298
|
+
# Opens an existing stream for reading or writing.
|
270
299
|
attach_function \
|
271
300
|
:cram_dopen,
|
272
301
|
%i[pointer string string],
|
273
302
|
:cram_fd
|
274
303
|
|
304
|
+
# Closes a CRAM file.
|
275
305
|
attach_function \
|
276
306
|
:cram_close,
|
277
307
|
[:cram_fd],
|
278
308
|
:int
|
279
309
|
|
310
|
+
# Seek within a CRAM file.
|
280
311
|
attach_function \
|
281
312
|
:cram_seek,
|
282
313
|
%i[pointer off_t int],
|
283
314
|
:int # FIXME: pointer should be :cram_fd
|
284
315
|
|
316
|
+
# Flushes a CRAM file.
|
285
317
|
attach_function \
|
286
318
|
:cram_flush,
|
287
319
|
[:cram_fd],
|
288
320
|
:int
|
289
321
|
|
322
|
+
# Checks for end of file on a cram_fd stream.
|
290
323
|
attach_function \
|
291
324
|
:cram_eof,
|
292
325
|
[:cram_fd],
|
293
326
|
:int
|
294
327
|
|
328
|
+
# Sets options on the cram_fd.
|
295
329
|
attach_function \
|
296
330
|
:cram_set_option,
|
297
331
|
[:cram_fd, HtsFmtOption, :varargs],
|
298
332
|
:int
|
299
333
|
|
334
|
+
# Sets options on the cram_fd.
|
300
335
|
attach_function \
|
301
336
|
:cram_set_voption,
|
302
337
|
[:cram_fd, HtsFmtOption, :pointer], # va_list
|
303
338
|
:int
|
304
339
|
|
340
|
+
# Attaches a header to a cram_fd.
|
305
341
|
attach_function \
|
306
342
|
:cram_set_header,
|
307
343
|
[:cram_fd, SamHdr.by_ref],
|
308
344
|
:int
|
309
345
|
|
346
|
+
# Check if this file has a proper EOF block
|
310
347
|
attach_function \
|
311
348
|
:cram_check_EOF,
|
312
349
|
[:cram_fd],
|
313
350
|
:int
|
314
351
|
|
352
|
+
# As int32_decoded/encode, but from/to blocks instead of cram_fd
|
315
353
|
attach_function \
|
316
354
|
:int32_put_blk,
|
317
355
|
%i[cram_block int32_t],
|
318
356
|
:int
|
319
357
|
|
358
|
+
# Returns the refs_t structure used by a cram file handle.
|
320
359
|
attach_function \
|
321
360
|
:cram_get_refs,
|
322
361
|
[HtsFile.by_ref],
|
data/lib/hts/libhts/sam_funcs.rb
CHANGED
@@ -58,58 +58,72 @@ module HTS
|
|
58
58
|
# macros
|
59
59
|
# function-like macros
|
60
60
|
class << self
|
61
|
+
# Get whether the query is on the reverse strand
|
61
62
|
def bam_is_rev(b)
|
62
63
|
b[:core][:flag] & BAM_FREVERSE != 0
|
63
64
|
end
|
64
65
|
|
66
|
+
# Get whether the query's mate is on the reverse strand
|
65
67
|
def bam_is_mrev(b)
|
66
68
|
b[:core][:flag] & BAM_FMREVERSE != 0
|
67
69
|
end
|
68
70
|
|
71
|
+
# Get the name of the query
|
69
72
|
def bam_get_qname(b)
|
70
73
|
b[:data]
|
71
74
|
end
|
72
75
|
|
76
|
+
# Get the CIGAR array
|
73
77
|
def bam_get_cigar(b)
|
74
78
|
b[:data] + b[:core][:l_qname]
|
75
79
|
end
|
76
80
|
|
81
|
+
# Get query sequence
|
77
82
|
def bam_get_seq(b)
|
78
83
|
b[:data] + (b[:core][:n_cigar] << 2) + b[:core][:l_qname]
|
79
84
|
end
|
80
85
|
|
86
|
+
# Get query quality
|
81
87
|
def bam_get_qual(b)
|
82
88
|
b[:data] + (b[:core][:n_cigar] << 2) + b[:core][:l_qname] + ((b[:core][:l_qseq] + 1) >> 1)
|
83
89
|
end
|
84
90
|
|
91
|
+
# Get auxiliary data
|
85
92
|
def bam_get_aux(b)
|
86
93
|
b[:data] + (b[:core][:n_cigar] << 2) + b[:core][:l_qname] + ((b[:core][:l_qseq] + 1) >> 1) + b[:core][:l_qseq]
|
87
94
|
end
|
88
95
|
|
96
|
+
# Get length of auxiliary data
|
89
97
|
def bam_get_l_aux(b)
|
90
98
|
b[:l_data] - (b[:core][:n_cigar] << 2) - b[:core][:l_qname] - b[:core][:l_qseq] - ((b[:core][:l_qseq] + 1) >> 1)
|
91
99
|
end
|
92
100
|
|
101
|
+
# Get a base on read
|
93
102
|
def bam_seqi(s, i)
|
94
103
|
(s[i >> 1].read_uint8 >> ((~i & 1) << 2)) & 0xf
|
95
104
|
end
|
96
105
|
|
106
|
+
# Modifies a single base in the bam structure.
|
97
107
|
def bam_set_seqi(s, i, b)
|
98
108
|
s[i >> 1] = (s[i >> 1] & (0xf0 >> ((~i & 1) << 2))) | ((b) << ((~i & 1) << 2))
|
99
109
|
end
|
100
110
|
|
111
|
+
# Returns the SAM formatted text of the \@HD header line
|
101
112
|
def sam_hdr_find_hd(h, ks)
|
102
113
|
sam_hdr_find_line_id(h, "HD", nil, nil, ks)
|
103
114
|
end
|
104
115
|
|
116
|
+
# Returns the value associated with a given \@HD line tag
|
105
117
|
def sam_hdr_find_tag_hd(h, key, ks)
|
106
118
|
sam_hdr_find_tag_id(h, "HD", nil, nil, key, ks)
|
107
119
|
end
|
108
120
|
|
121
|
+
# Adds or updates tags on the header \@HD line
|
109
122
|
def sam_hdr_update_hd(h, *args)
|
110
123
|
sam_hdr_update_line(h, "HD", nil, nil, *args, nil)
|
111
124
|
end
|
112
125
|
|
126
|
+
# Removes the \@HD line tag with the given key
|
113
127
|
def sam_hdr_remove_tag_hd(h, key)
|
114
128
|
sam_hdr_remove_tag_id(h, "HD", nil, nil, key)
|
115
129
|
end
|
@@ -122,6 +136,8 @@ module HTS
|
|
122
136
|
alias bam_itr_querys sam_itr_querys
|
123
137
|
alias bam_itr_next sam_itr_next
|
124
138
|
|
139
|
+
# Load/build .csi or .bai BAM index file. Does not work with CRAM.
|
140
|
+
# It is recommended to use the sam_index_* functions below instead.
|
125
141
|
def bam_index_load(fn)
|
126
142
|
hts_idx_load(fn, HTS_FMT_BAI)
|
127
143
|
end
|
data/lib/hts/libhts/vcf.rb
CHANGED
@@ -2,41 +2,50 @@
|
|
2
2
|
|
3
3
|
module HTS
|
4
4
|
module LibHTS
|
5
|
+
# Create an empty BCF header.
|
5
6
|
attach_function \
|
6
7
|
:bcf_hdr_init,
|
7
8
|
[:string],
|
8
9
|
BcfHdr.by_ref
|
9
10
|
|
11
|
+
# Destroy a BCF header struct
|
10
12
|
attach_function \
|
11
13
|
:bcf_hdr_destroy,
|
12
14
|
[BcfHdr],
|
13
15
|
:void
|
14
16
|
|
17
|
+
# Allocate and initialize a bcf1_t object.
|
15
18
|
attach_function \
|
16
19
|
:bcf_init,
|
17
20
|
[],
|
18
21
|
Bcf1.by_ref
|
19
22
|
|
23
|
+
# Deallocate a bcf1_t object
|
20
24
|
attach_function \
|
21
25
|
:bcf_destroy,
|
22
26
|
[Bcf1],
|
23
27
|
:void
|
24
28
|
|
29
|
+
# Same as bcf_destroy() but frees only the memory allocated by bcf1_t,
|
30
|
+
# not the bcf1_t object itself.
|
25
31
|
attach_function \
|
26
32
|
:bcf_empty,
|
27
33
|
[Bcf1],
|
28
34
|
:void
|
29
35
|
|
36
|
+
# Make the bcf1_t object ready for next read.
|
30
37
|
attach_function \
|
31
38
|
:bcf_clear,
|
32
39
|
[Bcf1],
|
33
40
|
:void
|
34
41
|
|
42
|
+
# Read a VCF or BCF header
|
35
43
|
attach_function \
|
36
44
|
:bcf_hdr_read,
|
37
45
|
[HtsFile],
|
38
46
|
BcfHdr.by_ref
|
39
47
|
|
48
|
+
# for more efficient VCF parsing when only one/few samples are needed
|
40
49
|
attach_function \
|
41
50
|
:bcf_hdr_set_samples,
|
42
51
|
[BcfHdr, :string, :int],
|
@@ -47,36 +56,43 @@ module HTS
|
|
47
56
|
[BcfHdr, Bcf1],
|
48
57
|
:int
|
49
58
|
|
59
|
+
# Write a VCF or BCF header
|
50
60
|
attach_function \
|
51
61
|
:bcf_hdr_write,
|
52
62
|
[HtsFile, BcfHdr],
|
53
63
|
:int
|
54
64
|
|
65
|
+
# Parse VCF line contained in kstring and populate the bcf1_t struct
|
55
66
|
attach_function \
|
56
67
|
:vcf_parse,
|
57
68
|
[KString, BcfHdr, Bcf1],
|
58
69
|
:int
|
59
70
|
|
71
|
+
# Complete the file opening mode, according to its extension.
|
60
72
|
attach_function \
|
61
73
|
:vcf_open_mode,
|
62
74
|
%i[string string string],
|
63
75
|
:int
|
64
76
|
|
77
|
+
# The opposite of vcf_parse.
|
65
78
|
attach_function \
|
66
79
|
:vcf_format,
|
67
80
|
[BcfHdr, Bcf1, KString],
|
68
81
|
:int
|
69
82
|
|
83
|
+
# Read next VCF or BCF record
|
70
84
|
attach_function \
|
71
85
|
:bcf_read,
|
72
86
|
[HtsFile, BcfHdr, Bcf1],
|
73
87
|
:int
|
74
88
|
|
89
|
+
# unpack/decode a BCF record (fills the bcf1_t::d field)
|
75
90
|
attach_function \
|
76
91
|
:bcf_unpack,
|
77
92
|
[Bcf1, :int],
|
78
93
|
:int
|
79
94
|
|
95
|
+
# Create a copy of BCF record.
|
80
96
|
attach_function \
|
81
97
|
:bcf_dup,
|
82
98
|
[Bcf1],
|
@@ -87,80 +103,95 @@ module HTS
|
|
87
103
|
[Bcf1, Bcf1],
|
88
104
|
Bcf1.by_ref
|
89
105
|
|
106
|
+
# Write one VCF or BCF record.
|
90
107
|
attach_function \
|
91
108
|
:bcf_write,
|
92
109
|
[HtsFile, BcfHdr, Bcf1],
|
93
110
|
:int
|
94
111
|
|
112
|
+
# Read a VCF format header
|
95
113
|
attach_function \
|
96
114
|
:vcf_hdr_read,
|
97
115
|
[HtsFile],
|
98
116
|
BcfHdr.by_ref
|
99
117
|
|
118
|
+
# Write a VCF format header
|
100
119
|
attach_function \
|
101
120
|
:vcf_hdr_write,
|
102
121
|
[HtsFile, BcfHdr],
|
103
122
|
:int
|
104
123
|
|
124
|
+
# Read a record from a VCF file
|
105
125
|
attach_function \
|
106
126
|
:vcf_read,
|
107
127
|
[HtsFile, BcfHdr, Bcf1],
|
108
128
|
:int
|
109
129
|
|
130
|
+
# Write a record to a VCF file
|
110
131
|
attach_function \
|
111
132
|
:vcf_write,
|
112
133
|
[HtsFile, BcfHdr, Bcf1],
|
113
134
|
:int
|
114
135
|
|
136
|
+
# Helper function for the bcf_itr_next() macro
|
115
137
|
attach_function \
|
116
138
|
:bcf_readrec,
|
117
139
|
[BGZF, :pointer, :pointer, :pointer, :hts_pos_t, :hts_pos_t],
|
118
140
|
:int
|
119
141
|
|
142
|
+
# Write a line to a VCF file
|
120
143
|
attach_function \
|
121
144
|
:vcf_write_line,
|
122
145
|
[HtsFile, KString],
|
123
146
|
:int
|
124
147
|
|
148
|
+
# Header querying and manipulation routines
|
149
|
+
|
150
|
+
# Create a new header using the supplied template
|
125
151
|
attach_function \
|
126
152
|
:bcf_hdr_dup,
|
127
153
|
[BcfHdr],
|
128
154
|
BcfHdr.by_ref
|
129
155
|
|
130
|
-
# DEPRECATED
|
156
|
+
# DEPRECATED please use bcf_hdr_merge instead
|
131
157
|
#
|
132
158
|
# attach_function \
|
133
159
|
# :bcf_hdr_combine,
|
134
160
|
# [BcfHdr, BcfHdr],
|
135
161
|
# :int
|
136
162
|
|
163
|
+
# Copy header lines from src to dst, see also bcf_translate()
|
137
164
|
attach_function \
|
138
165
|
:bcf_hdr_merge,
|
139
166
|
[BcfHdr, BcfHdr],
|
140
167
|
BcfHdr.by_ref
|
141
168
|
|
169
|
+
# Add a new sample.
|
142
170
|
attach_function \
|
143
171
|
:bcf_hdr_add_sample,
|
144
172
|
[BcfHdr, :string],
|
145
173
|
:int
|
146
174
|
|
175
|
+
# Read VCF header from a file and update the header
|
147
176
|
attach_function \
|
148
177
|
:bcf_hdr_set,
|
149
178
|
[BcfHdr, :string],
|
150
179
|
:int
|
151
180
|
|
181
|
+
# Appends formatted header text to _str_.
|
152
182
|
attach_function \
|
153
183
|
:bcf_hdr_format,
|
154
184
|
[BcfHdr, :int, KString],
|
155
185
|
:int
|
156
186
|
|
157
|
-
# DEPRECATED
|
187
|
+
# DEPRECATED use bcf_hdr_format() instead
|
158
188
|
#
|
159
189
|
# attach_function \
|
160
190
|
# :bcf_hdr_fmt_text,
|
161
191
|
# [BcfHdr, :int, :pointer],
|
162
192
|
# :string
|
163
193
|
|
194
|
+
# Append new VCF header line
|
164
195
|
attach_function \
|
165
196
|
:bcf_hdr_append,
|
166
197
|
[BcfHdr, :string],
|
@@ -171,26 +202,31 @@ module HTS
|
|
171
202
|
[BcfHdr, :string, :varargs],
|
172
203
|
:int
|
173
204
|
|
205
|
+
# VCF version, e.g. VCFv4.2
|
174
206
|
attach_function \
|
175
207
|
:bcf_hdr_get_version,
|
176
208
|
[BcfHdr],
|
177
209
|
:string
|
178
210
|
|
211
|
+
# Set version in bcf header
|
179
212
|
attach_function \
|
180
213
|
:bcf_hdr_set_version,
|
181
214
|
[BcfHdr, :string],
|
182
215
|
:int
|
183
216
|
|
217
|
+
# Remove VCF header tag
|
184
218
|
attach_function \
|
185
219
|
:bcf_hdr_remove,
|
186
220
|
[BcfHdr, :int, :string],
|
187
221
|
:void
|
188
222
|
|
223
|
+
# Creates a new copy of the header removing unwanted samples
|
189
224
|
attach_function \
|
190
225
|
:bcf_hdr_subset,
|
191
226
|
[BcfHdr, :int, :pointer, :pointer],
|
192
227
|
BcfHdr.by_ref
|
193
228
|
|
229
|
+
# Creates a list of sequence names.
|
194
230
|
attach_function \
|
195
231
|
:bcf_hdr_seqnames,
|
196
232
|
[BcfHdr, :pointer],
|
@@ -201,16 +237,19 @@ module HTS
|
|
201
237
|
[BcfHdr, :string],
|
202
238
|
:int
|
203
239
|
|
240
|
+
# Synchronize internal header structures
|
204
241
|
attach_function \
|
205
242
|
:bcf_hdr_sync,
|
206
243
|
[BcfHdr],
|
207
244
|
:int
|
208
245
|
|
246
|
+
# parse a single line of VCF textual header
|
209
247
|
attach_function \
|
210
248
|
:bcf_hdr_parse_line,
|
211
249
|
[BcfHdr, :string, :pointer],
|
212
250
|
BcfHrec.by_ref
|
213
251
|
|
252
|
+
# Convert a bcf header record to string form
|
214
253
|
attach_function \
|
215
254
|
:bcf_hrec_format,
|
216
255
|
[BcfHrec, KString],
|
@@ -221,21 +260,25 @@ module HTS
|
|
221
260
|
[BcfHdr, BcfHrec],
|
222
261
|
:int
|
223
262
|
|
263
|
+
# Get header line info
|
224
264
|
attach_function \
|
225
265
|
:bcf_hdr_get_hrec,
|
226
266
|
[BcfHdr, :int, :string, :string, :string],
|
227
267
|
BcfHrec.by_ref
|
228
268
|
|
269
|
+
# Duplicate a header record
|
229
270
|
attach_function \
|
230
271
|
:bcf_hrec_dup,
|
231
272
|
[BcfHrec],
|
232
273
|
BcfHrec.by_ref
|
233
274
|
|
275
|
+
# Add a new header record key
|
234
276
|
attach_function \
|
235
277
|
:bcf_hrec_add_key,
|
236
278
|
[BcfHrec, :string, :size_t],
|
237
279
|
:int
|
238
280
|
|
281
|
+
# Set a header record value
|
239
282
|
attach_function \
|
240
283
|
:bcf_hrec_set_val,
|
241
284
|
[BcfHrec, :int, :string, :size_t, :int],
|
@@ -246,46 +289,57 @@ module HTS
|
|
246
289
|
[BcfHrec, :string],
|
247
290
|
:int
|
248
291
|
|
292
|
+
# Add an IDX header record
|
249
293
|
attach_function \
|
250
294
|
:hrec_add_idx,
|
251
295
|
[BcfHrec, :int],
|
252
296
|
:int
|
253
297
|
|
298
|
+
# Free up a header record and associated structures
|
254
299
|
attach_function \
|
255
300
|
:bcf_hrec_destroy,
|
256
301
|
[BcfHrec],
|
257
302
|
:void
|
258
303
|
|
304
|
+
# Individual record querying and manipulation routines
|
305
|
+
|
306
|
+
# See the description of bcf_hdr_subset()
|
259
307
|
attach_function \
|
260
308
|
:bcf_subset,
|
261
309
|
[BcfHdr, Bcf1, :int, :pointer],
|
262
310
|
:int
|
263
311
|
|
312
|
+
# Translate tags ids to be consistent with different header.
|
264
313
|
attach_function \
|
265
314
|
:bcf_translate,
|
266
315
|
[BcfHdr, BcfHdr, Bcf1],
|
267
316
|
:int
|
268
317
|
|
318
|
+
# Get variant types in a BCF record
|
269
319
|
attach_function \
|
270
320
|
:bcf_get_variant_types,
|
271
321
|
[Bcf1],
|
272
322
|
:int
|
273
323
|
|
324
|
+
# Get variant type in a BCF record, for a given allele
|
274
325
|
attach_function \
|
275
326
|
:bcf_get_variant_type,
|
276
327
|
[Bcf1, :int],
|
277
328
|
:int
|
278
329
|
|
330
|
+
# Check for presence of variant types in a BCF record
|
279
331
|
attach_function \
|
280
332
|
:bcf_has_variant_types,
|
281
333
|
[Bcf1, :uint32, :int],
|
282
334
|
:int
|
283
335
|
|
336
|
+
# Check for presence of variant types in a BCF record, for a given allele
|
284
337
|
attach_function \
|
285
338
|
:bcf_has_variant_type,
|
286
339
|
[Bcf1, :int, :uint32],
|
287
340
|
:int
|
288
341
|
|
342
|
+
# Return the number of bases affected by a variant, for a given allele
|
289
343
|
attach_function \
|
290
344
|
:bcf_variant_length,
|
291
345
|
[Bcf1, :int],
|
@@ -296,26 +350,32 @@ module HTS
|
|
296
350
|
[Bcf1],
|
297
351
|
:int
|
298
352
|
|
353
|
+
# Sets the FILTER column
|
299
354
|
attach_function \
|
300
355
|
:bcf_update_filter,
|
301
356
|
[BcfHdr, Bcf1, :pointer, :int],
|
302
357
|
:int
|
303
358
|
|
359
|
+
# Adds to the FILTER column
|
304
360
|
attach_function \
|
305
361
|
:bcf_add_filter,
|
306
362
|
[BcfHdr, Bcf1, :int],
|
307
363
|
:int
|
308
364
|
|
365
|
+
# Removes from the FILTER column
|
309
366
|
attach_function \
|
310
367
|
:bcf_remove_filter,
|
311
368
|
[BcfHdr, Bcf1, :int, :int],
|
312
369
|
:int
|
313
370
|
|
371
|
+
# Returns 1 if present, 0 if absent, or -1 if filter does not exist.
|
372
|
+
# "PASS" and "." can be used interchangeably.
|
314
373
|
attach_function \
|
315
374
|
:bcf_has_filter,
|
316
375
|
[BcfHdr, Bcf1, :string],
|
317
376
|
:int
|
318
377
|
|
378
|
+
# Update REF and ALT column
|
319
379
|
attach_function \
|
320
380
|
:bcf_update_alleles,
|
321
381
|
[BcfHdr, Bcf1, :pointer, :int],
|
@@ -326,6 +386,7 @@ module HTS
|
|
326
386
|
[BcfHdr, Bcf1, :string],
|
327
387
|
:int
|
328
388
|
|
389
|
+
# Sets new ID string
|
329
390
|
attach_function \
|
330
391
|
:bcf_update_id,
|
331
392
|
[BcfHdr, Bcf1, :string],
|
@@ -336,6 +397,7 @@ module HTS
|
|
336
397
|
[BcfHdr, Bcf1, :string],
|
337
398
|
:int
|
338
399
|
|
400
|
+
# Functions for updating INFO fields
|
339
401
|
attach_function \
|
340
402
|
:bcf_update_info,
|
341
403
|
[BcfHdr, Bcf1, :string, :pointer, :int, :int],
|
@@ -346,11 +408,13 @@ module HTS
|
|
346
408
|
[BcfHdr, Bcf1, :string, :pointer, :int],
|
347
409
|
:int
|
348
410
|
|
411
|
+
# Functions for updating FORMAT fields
|
349
412
|
attach_function \
|
350
413
|
:bcf_update_format,
|
351
414
|
[BcfHdr, Bcf1, :string, :pointer, :int, :int],
|
352
415
|
:int
|
353
416
|
|
417
|
+
# Returns pointer to FORMAT's field data
|
354
418
|
attach_function \
|
355
419
|
:bcf_get_fmt,
|
356
420
|
[BcfHdr, Bcf1, :string],
|
@@ -361,6 +425,7 @@ module HTS
|
|
361
425
|
[BcfHdr, Bcf1, :string],
|
362
426
|
BcfInfo.by_ref
|
363
427
|
|
428
|
+
# Returns pointer to FORMAT/INFO field data given the header index instead of the string ID
|
364
429
|
attach_function \
|
365
430
|
:bcf_get_fmt_id,
|
366
431
|
[Bcf1, :int],
|
@@ -371,6 +436,7 @@ module HTS
|
|
371
436
|
[Bcf1, :int],
|
372
437
|
BcfInfo.by_ref
|
373
438
|
|
439
|
+
# get INFO values
|
374
440
|
attach_function \
|
375
441
|
:bcf_get_info_values,
|
376
442
|
[BcfHdr, Bcf1, :string, :pointer, :pointer, :int],
|
@@ -386,11 +452,15 @@ module HTS
|
|
386
452
|
[BcfHdr, Bcf1, :string, :pointer, :pointer, :int],
|
387
453
|
:int
|
388
454
|
|
455
|
+
# Helper functions
|
456
|
+
|
457
|
+
# Translates string into numeric ID
|
389
458
|
attach_function \
|
390
459
|
:bcf_hdr_id2int,
|
391
460
|
[BcfHdr, :int, :string],
|
392
461
|
:int
|
393
462
|
|
463
|
+
# Convert BCF FORMAT data to string form
|
394
464
|
attach_function \
|
395
465
|
:bcf_fmt_array,
|
396
466
|
[KString, :int, :int, :pointer],
|
@@ -401,51 +471,63 @@ module HTS
|
|
401
471
|
[KString, :pointer],
|
402
472
|
:uint8_t
|
403
473
|
|
474
|
+
# Encode a variable-length char array in BCF format
|
404
475
|
attach_function \
|
405
476
|
:bcf_enc_vchar,
|
406
477
|
[KString, :int, :string],
|
407
478
|
:int
|
408
479
|
|
480
|
+
# Encode a variable-length integer array in BCF format
|
409
481
|
attach_function \
|
410
482
|
:bcf_enc_vint,
|
411
483
|
[KString, :int, :pointer, :int],
|
412
484
|
:int
|
413
485
|
|
486
|
+
# Encode a variable-length float array in BCF format
|
414
487
|
attach_function \
|
415
488
|
:bcf_enc_vfloat,
|
416
489
|
[KString, :int, :pointer],
|
417
490
|
:int
|
418
491
|
|
492
|
+
# BCF index
|
493
|
+
|
494
|
+
# Load a BCF index from a given index file name
|
419
495
|
attach_function \
|
420
496
|
:bcf_index_load2,
|
421
497
|
%i[string string],
|
422
498
|
HtsIdx.by_ref
|
423
499
|
|
500
|
+
# Load a BCF index from a given index file name
|
424
501
|
attach_function \
|
425
502
|
:bcf_index_load3,
|
426
503
|
%i[string string int],
|
427
504
|
HtsIdx.by_ref
|
428
505
|
|
506
|
+
# Generate and save an index file
|
429
507
|
attach_function \
|
430
508
|
:bcf_index_build,
|
431
509
|
%i[string int],
|
432
510
|
:int
|
433
511
|
|
512
|
+
# Generate and save an index to a specific file
|
434
513
|
attach_function \
|
435
514
|
:bcf_index_build2,
|
436
515
|
%i[string string int],
|
437
516
|
:int
|
438
517
|
|
518
|
+
# Generate and save an index to a specific file
|
439
519
|
attach_function \
|
440
520
|
:bcf_index_build3,
|
441
521
|
%i[string string int int],
|
442
522
|
:int
|
443
523
|
|
524
|
+
# Initialise fp->idx for the current format type, for VCF and BCF files.
|
444
525
|
attach_function \
|
445
526
|
:bcf_idx_init,
|
446
527
|
[HtsFile, BcfHdr, :int, :string],
|
447
528
|
:int
|
448
529
|
|
530
|
+
# Writes the index initialised with bcf_idx_init to disk.
|
449
531
|
attach_function \
|
450
532
|
:bcf_idx_save,
|
451
533
|
[HtsFile],
|
data/lib/hts/libhts/vcf_funcs.rb
CHANGED
@@ -87,105 +87,130 @@ module HTS
|
|
87
87
|
BCF_UN_ALL = (BCF_UN_SHR | BCF_UN_FMT) # everything
|
88
88
|
|
89
89
|
class << self
|
90
|
+
# Get number of samples
|
90
91
|
def bcf_hdr_nsamples(hdr)
|
91
92
|
hdr[:n][BCF_DT_SAMPLE]
|
92
93
|
end
|
93
94
|
|
95
|
+
# Function for updating INFO fields
|
94
96
|
def bcf_update_info_int32(hdr, line, key, values, n)
|
95
97
|
bcf_update_info(hdr, line, key, values, n, BCF_HT_INT)
|
96
98
|
end
|
97
99
|
|
100
|
+
# Function for updating INFO fields
|
98
101
|
def bcf_update_info_float(hdr, line, key, values, n)
|
99
102
|
bcf_update_info(hdr, line, key, values, n, BCF_HT_REAL)
|
100
103
|
end
|
101
104
|
|
105
|
+
# Function for updating INFO fields
|
102
106
|
def bcf_update_info_flag(hdr, line, key, string, n)
|
103
107
|
bcf_update_info(hdr, line, key, string, n, BCF_HT_FLAG)
|
104
108
|
end
|
105
109
|
|
110
|
+
# Function for updating INFO fields
|
106
111
|
def bcf_update_info_string(hdr, line, key, string)
|
107
112
|
bcf_update_info(hdr, line, key, string, 1, BCF_HT_STR)
|
108
113
|
end
|
109
114
|
|
115
|
+
# Function for updating FORMAT fields
|
110
116
|
def bcf_update_format_int32(hdr, line, key, values, n)
|
111
117
|
bcf_update_format(hdr, line, key, values, n,
|
112
118
|
BCF_HT_INT)
|
113
119
|
end
|
114
120
|
|
121
|
+
# Function for updating FORMAT fields
|
115
122
|
def bcf_update_format_float(hdr, line, key, values, n)
|
116
123
|
bcf_update_format(hdr, line, key, values, n,
|
117
124
|
BCF_HT_REAL)
|
118
125
|
end
|
119
126
|
|
127
|
+
# Function for updating FORMAT fields
|
120
128
|
def bcf_update_format_char(hdr, line, key, values, n)
|
121
129
|
bcf_update_format(hdr, line, key, values, n,
|
122
130
|
BCF_HT_STR)
|
123
131
|
end
|
124
132
|
|
133
|
+
# Function for updating FORMAT fields
|
125
134
|
def bcf_update_genotypes(hdr, line, gts, n)
|
126
135
|
bcf_update_format(hdr, line, "GT", gts, n, BCF_HT_INT)
|
127
136
|
end
|
128
137
|
|
138
|
+
# Macro for setting genotypes correctly
|
129
139
|
def bcf_gt_phased(idx)
|
130
140
|
((idx + 1) << 1 | 1)
|
131
141
|
end
|
132
142
|
|
143
|
+
# Macro for setting genotypes correctly
|
133
144
|
def bcf_gt_unphased(idx)
|
134
145
|
((idx + 1) << 1)
|
135
146
|
end
|
136
147
|
|
148
|
+
# Macro for setting genotypes correctly
|
137
149
|
def bcf_gt_missing
|
138
150
|
0
|
139
151
|
end
|
140
152
|
|
153
|
+
# Macro for setting genotypes correctly
|
141
154
|
def bcf_gt_is_missing(val)
|
142
155
|
(val >> 1 ? 0 : 1)
|
143
156
|
end
|
144
157
|
|
158
|
+
# Macro for setting genotypes correctly
|
145
159
|
def bcf_gt_is_phased(idx)
|
146
160
|
(idx & 1)
|
147
161
|
end
|
148
162
|
|
163
|
+
# Macro for setting genotypes correctly
|
149
164
|
def bcf_gt_allele(val)
|
150
165
|
((val >> 1) - 1)
|
151
166
|
end
|
152
167
|
|
168
|
+
# Conversion between alleles indexes to Number=G genotype index (assuming diploid, all 0-based)
|
153
169
|
def bcf_alleles2gt(a, b)
|
154
170
|
((a) > (b) ? (a * (a + 1) / 2 + b) : (b * (b + 1) / 2 + a))
|
155
171
|
end
|
156
172
|
|
173
|
+
# Get INFO values
|
157
174
|
def bcf_get_info_int32(hdr, line, tag, dst, ndst)
|
158
175
|
bcf_get_info_values(hdr, line, tag, dst, ndst, BCF_HT_INT)
|
159
176
|
end
|
160
177
|
|
178
|
+
# Get INFO values
|
161
179
|
def bcf_get_info_float(hdr, line, tag, dst, ndst)
|
162
180
|
bcf_get_info_values(hdr, line, tag, dst, ndst, BCF_HT_REAL)
|
163
181
|
end
|
164
182
|
|
183
|
+
# Get INFO values
|
165
184
|
def bcf_get_info_string(hdr, line, tag, dst, ndst)
|
166
185
|
bcf_get_info_values(hdr, line, tag, dst, ndst, BCF_HT_STR)
|
167
186
|
end
|
168
187
|
|
188
|
+
# Get INFO values
|
169
189
|
def bcf_get_info_flag(hdr, line, tag, dst, ndst)
|
170
190
|
bcf_get_info_values(hdr, line, tag, dst, ndst, BCF_HT_FLAG)
|
171
191
|
end
|
172
192
|
|
193
|
+
# Get FORMAT values
|
173
194
|
def bcf_get_format_int32(hdr, line, tag, dst, ndst)
|
174
195
|
bcf_get_format_values(hdr, line, tag, dst, ndst, BCF_HT_INT)
|
175
196
|
end
|
176
197
|
|
198
|
+
# Get FORMAT values
|
177
199
|
def bcf_get_format_float(hdr, line, tag, dst, ndst)
|
178
200
|
bcf_get_format_values(hdr, line, tag, dst, ndst, BCF_HT_REAL)
|
179
201
|
end
|
180
202
|
|
203
|
+
# Get FORMAT values
|
181
204
|
def bcf_get_format_char(hdr, line, tag, dst, ndst)
|
182
205
|
bcf_get_format_values(hdr, line, tag, dst, ndst, BCF_HT_STR)
|
183
206
|
end
|
184
207
|
|
208
|
+
# Get FORMAT values
|
185
209
|
def bcf_get_genotypes(hdr, line, dst, ndst)
|
186
210
|
bcf_get_format_values(hdr, line, "GT", dst, ndst, BCF_HT_INT)
|
187
211
|
end
|
188
212
|
|
213
|
+
# Translates numeric ID into string
|
189
214
|
def bcf_hdr_int2id(hdr, type, int_id)
|
190
215
|
LibHTS::BcfIdpair.new(
|
191
216
|
hdr[:id][type].to_ptr +
|
@@ -193,10 +218,12 @@ module HTS
|
|
193
218
|
)[:key]
|
194
219
|
end
|
195
220
|
|
221
|
+
# Translates sequence names (chromosomes) into numeric ID
|
196
222
|
def bcf_hdr_name2id(hdr, id)
|
197
223
|
bcf_hdr_id2int(hdr, BCF_DT_CTG, id)
|
198
224
|
end
|
199
225
|
|
226
|
+
# Translates numeric ID to sequence name
|
200
227
|
def bcf_hdr_id2name(hdr, rid)
|
201
228
|
return nil if hdr.null? || rid < 0 || rid >= hdr[:n][LibHTS::BCF_DT_CTG]
|
202
229
|
|
@@ -206,6 +233,7 @@ module HTS
|
|
206
233
|
)[:key]
|
207
234
|
end
|
208
235
|
|
236
|
+
# Macro for accessing bcf_idinfo_t
|
209
237
|
def bcf_hdr_id2length(hdr, type, int_id)
|
210
238
|
LibHTS::BcfIdpair.new(
|
211
239
|
hdr[:id][LibHTS::BCF_DT_ID].to_ptr +
|
@@ -213,6 +241,7 @@ module HTS
|
|
213
241
|
)[:val][:info][type] >> 8 & 0xf
|
214
242
|
end
|
215
243
|
|
244
|
+
# Macro for accessing bcf_idinfo_t
|
216
245
|
def bcf_hdr_id2number(hdr, type, int_id)
|
217
246
|
LibHTS::BcfIdpair.new(
|
218
247
|
hdr[:id][LibHTS::BCF_DT_ID].to_ptr +
|
@@ -220,6 +249,7 @@ module HTS
|
|
220
249
|
)[:val][:info][type] >> 12
|
221
250
|
end
|
222
251
|
|
252
|
+
# Macro for accessing bcf_idinfo_t
|
223
253
|
def bcf_hdr_id2type(hdr, type, int_id)
|
224
254
|
LibHTS::BcfIdpair.new(
|
225
255
|
hdr[:id][LibHTS::BCF_DT_ID].to_ptr +
|
@@ -227,6 +257,7 @@ module HTS
|
|
227
257
|
)[:val][:info][type] >> 4 & 0xf
|
228
258
|
end
|
229
259
|
|
260
|
+
# Macro for accessing bcf_idinfo_t
|
230
261
|
def bcf_hdr_id2coltype(hdr, type, int_id)
|
231
262
|
LibHTS::BcfIdpair.new(
|
232
263
|
hdr[:id][LibHTS::BCF_DT_ID].to_ptr +
|
@@ -252,10 +283,12 @@ module HTS
|
|
252
283
|
hts_itr_querys(idx, s, @@bcf_hdr_name2id, hdr, @@hts_itr_query, @@bcf_readrec)
|
253
284
|
end
|
254
285
|
|
286
|
+
# Load a BCF index
|
255
287
|
def bcf_index_load(fn)
|
256
288
|
hts_idx_load(fn, HTS_FMT_CSI)
|
257
289
|
end
|
258
290
|
|
291
|
+
# Load a BCF index
|
259
292
|
def bcf_index_seqnames(idx, hdr, nptr)
|
260
293
|
hts_idx_seqnames(idx, nptr, @@bcf_hdr_id2name, hdr)
|
261
294
|
end
|
data/lib/hts/libhts.rb
CHANGED
@@ -15,12 +15,13 @@ module HTS
|
|
15
15
|
end
|
16
16
|
|
17
17
|
# @!macro attach_function
|
18
|
+
# @!scope class
|
18
19
|
# @!method $1(${2--2})
|
19
20
|
# @return [${-1}] the return value of $0
|
20
21
|
def self.attach_function(*)
|
21
22
|
super
|
22
23
|
rescue FFI::NotFoundError => e
|
23
|
-
warn e.message
|
24
|
+
warn e.message if $VERBOSE
|
24
25
|
end
|
25
26
|
end
|
26
27
|
end
|
data/lib/hts/version.rb
CHANGED
data/lib/htslib.rb
CHANGED
@@ -30,9 +30,23 @@ module HTS
|
|
30
30
|
|
31
31
|
warn "htslib shared library '#{name}' not found."
|
32
32
|
end
|
33
|
+
|
34
|
+
def search_htslib_windows
|
35
|
+
ENV["HTSLIBDIR"] ||= [
|
36
|
+
RubyInstaller::Runtime.msys2_installation.msys_path,
|
37
|
+
RubyInstaller::Runtime.msys2_installation.mingwarch
|
38
|
+
].join(File::ALT_SEPARATOR)
|
39
|
+
path = File.expand_path("bin/hts-3.dll", ENV["HTSLIBDIR"])
|
40
|
+
RubyInstaller::Runtime.add_dll_directory(File.dirname(path))
|
41
|
+
path
|
42
|
+
end
|
33
43
|
end
|
34
44
|
|
35
|
-
self.lib_path =
|
45
|
+
self.lib_path = if Object.const_defined?(:RubyInstaller)
|
46
|
+
search_htslib_windows
|
47
|
+
else
|
48
|
+
search_htslib
|
49
|
+
end
|
36
50
|
|
37
51
|
# You can change the path of the shared library with `HTS.lib_path=`
|
38
52
|
# before calling the LibHTS module.
|
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.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- kojix2
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-09-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ffi
|
@@ -132,7 +132,7 @@ files:
|
|
132
132
|
- LICENSE.txt
|
133
133
|
- README.md
|
134
134
|
- lib/hts/bam.rb
|
135
|
-
- lib/hts/bam/
|
135
|
+
- lib/hts/bam/auxi.rb
|
136
136
|
- lib/hts/bam/cigar.rb
|
137
137
|
- lib/hts/bam/flag.rb
|
138
138
|
- lib/hts/bam/header.rb
|
@@ -169,7 +169,8 @@ files:
|
|
169
169
|
homepage: https://github.com/kojix2/ruby-htslib
|
170
170
|
licenses:
|
171
171
|
- MIT
|
172
|
-
metadata:
|
172
|
+
metadata:
|
173
|
+
msys2_mingw_dependencies: htslib
|
173
174
|
post_install_message:
|
174
175
|
rdoc_options: []
|
175
176
|
require_paths:
|