bio-twobit 0.1.2 → 0.1.3
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 +17 -3
- data/bio-twobit.gemspec +1 -3
- data/ext/bio/twobit/2bit.c +5 -4
- data/lib/bio/twobit/version.rb +1 -1
- data/lib/bio/twobit.rb +14 -0
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 13e0df3d77589aedc725b0cffa8c5362ac749990a5eef6e1c10d0d137ae8e4d3
|
4
|
+
data.tar.gz: 56e92c1e74b96a040cc8c22c786f2c03d1f6fac7aabb969c34e9f0e81b496055
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d4b7fa2a849a682739b2ae9686000adf397ad972412df8ee965feb0c165df7743a94f1f4d1b7b7d6fba0066e4b7a12b9d5fff87f5db47c7d8a76bf6bd2753456
|
7
|
+
data.tar.gz: 593012ebcbb5eed16157ab6990db9f6cebcb9164c2b171eff04f3e5ebc4f88360c079c118d4e064f63d7205e113a1c889c3897cfdc92a59de8915d7b57df0aeb
|
data/README.md
CHANGED
@@ -18,8 +18,7 @@ gem install bio-twobit
|
|
18
18
|
Downlaod BSgenome.Hsapiens.UCSC.hg38
|
19
19
|
|
20
20
|
```sh
|
21
|
-
wget
|
22
|
-
tar xvf BSgenome.Hsapiens.UCSC.hg38_1.4.4.tar.gz
|
21
|
+
wget http://hgdownload.soe.ucsc.edu/goldenPath/hg38/bigZips/hg38.2bit
|
23
22
|
```
|
24
23
|
|
25
24
|
Quick Start
|
@@ -27,7 +26,10 @@ Quick Start
|
|
27
26
|
```ruby
|
28
27
|
require 'bio/twobit'
|
29
28
|
|
30
|
-
hg38 = Bio::TwoBit.open("
|
29
|
+
hg38 = Bio::TwoBit.open("hg38.2bit")
|
30
|
+
|
31
|
+
hg38.path
|
32
|
+
# "hg38.2bit"
|
31
33
|
|
32
34
|
hg38.info
|
33
35
|
# {"file_size"=>818064875,
|
@@ -75,6 +77,10 @@ Bio::TwoBit.open("test/fixtures/foo.2bit") do |t|
|
|
75
77
|
end
|
76
78
|
```
|
77
79
|
|
80
|
+
```ruby
|
81
|
+
tb.closed? # true / false
|
82
|
+
```
|
83
|
+
|
78
84
|
If you would like to include information about soft-masked bases, you need to manually specify `masked: true`
|
79
85
|
|
80
86
|
```ruby
|
@@ -89,10 +95,18 @@ tb.soft_masked_blocks("chr1")
|
|
89
95
|
# => [[62, 70]]
|
90
96
|
```
|
91
97
|
|
98
|
+
```ruby
|
99
|
+
tb.masked? # true / false
|
100
|
+
```
|
101
|
+
|
92
102
|
## Development
|
93
103
|
|
94
104
|
Bug reports and pull requests are welcome on GitHub at https://github.com/ruby-on-bioc/bio-twobit.
|
95
105
|
|
106
|
+
Do you need commit rights to my repository?
|
107
|
+
Do you want to get admin rights and take over the project?
|
108
|
+
If so, please feel free to contact us @kojix2.
|
109
|
+
|
96
110
|
## License
|
97
111
|
|
98
112
|
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
data/bio-twobit.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
|
11
11
|
spec.summary = "A ruby library for accessing 2bit files"
|
12
12
|
spec.description = "This is a Ruby binding for lib2bit(https://github.com/dpryan79/lib2bit), " \
|
13
|
-
|
13
|
+
"which provides high-speed access to genomic data in 2bit file format."
|
14
14
|
spec.homepage = "https://github.com/ruby-on-bioc/bio-twobit"
|
15
15
|
spec.license = "MIT"
|
16
16
|
spec.required_ruby_version = ">= 2.6.0"
|
@@ -20,8 +20,6 @@ Gem::Specification.new do |spec|
|
|
20
20
|
(f == __FILE__) || f.match(%r{\A(?:(?:test|spec|features)/|\.(?:git|travis|circleci)|appveyor)})
|
21
21
|
end
|
22
22
|
end
|
23
|
-
spec.bindir = "exe"
|
24
|
-
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
25
23
|
spec.require_paths = ["lib"]
|
26
24
|
spec.extensions = ["ext/bio/twobit/extconf.rb"]
|
27
25
|
end
|
data/ext/bio/twobit/2bit.c
CHANGED
@@ -278,6 +278,7 @@ uint8_t getByteMaskFromOffset(int offset) {
|
|
278
278
|
void *twobitBasesWorker(TwoBit *tb, uint32_t tid, uint32_t start, uint32_t end, int fraction) {
|
279
279
|
void *out;
|
280
280
|
uint32_t tmp[4] = {0, 0, 0, 0}, len = end - start + (start % 4), i = 0, j = 0;
|
281
|
+
uint32_t seqLen = end - start;
|
281
282
|
uint32_t blockStart, blockEnd, maskIdx = (uint32_t) -1, maskStart, maskEnd, foo;
|
282
283
|
uint8_t *bytes = NULL, mask = 0, offset;
|
283
284
|
|
@@ -375,10 +376,10 @@ void *twobitBasesWorker(TwoBit *tb, uint32_t tid, uint32_t start, uint32_t end,
|
|
375
376
|
//out is in TCAG order, since that's how 2bit is stored.
|
376
377
|
//However, for whatever reason I went with ACTG in the first release...
|
377
378
|
if(fraction) {
|
378
|
-
((double*) out)[0] = ((double) tmp[2])/((double)
|
379
|
-
((double*) out)[1] = ((double) tmp[1])/((double)
|
380
|
-
((double*) out)[2] = ((double) tmp[0])/((double)
|
381
|
-
((double*) out)[3] = ((double) tmp[3])/((double)
|
379
|
+
((double*) out)[0] = ((double) tmp[2])/((double) seqLen);
|
380
|
+
((double*) out)[1] = ((double) tmp[1])/((double) seqLen);
|
381
|
+
((double*) out)[2] = ((double) tmp[0])/((double) seqLen);
|
382
|
+
((double*) out)[3] = ((double) tmp[3])/((double) seqLen);
|
382
383
|
} else {
|
383
384
|
((uint32_t*) out)[0] = tmp[2];
|
384
385
|
((uint32_t*) out)[1] = tmp[1];
|
data/lib/bio/twobit/version.rb
CHANGED
data/lib/bio/twobit.rb
CHANGED
@@ -40,19 +40,33 @@ module Bio
|
|
40
40
|
@masked
|
41
41
|
end
|
42
42
|
|
43
|
+
# Since "end" is a reserved word in Ruby, use "stop" instead.
|
44
|
+
|
43
45
|
def sequence(chrom, start = 0, stop = 0)
|
46
|
+
raise ArgumentError, "negative start position" if start.negative?
|
47
|
+
raise ArgumentError, "negative stop position" if stop.negative?
|
48
|
+
|
44
49
|
sequence_raw(chrom, start, stop)
|
45
50
|
end
|
46
51
|
|
47
52
|
def bases(chrom, start = 0, stop = 0, fraction: true)
|
53
|
+
raise ArgumentError, "negative start position" if start.negative?
|
54
|
+
raise ArgumentError, "negative stop position" if stop.negative?
|
55
|
+
|
48
56
|
bases_raw(chrom, start, stop, fraction ? 1 : 0)
|
49
57
|
end
|
50
58
|
|
51
59
|
def hard_masked_blocks(chrom, start = 0, stop = 0)
|
60
|
+
raise ArgumentError, "negative start position" if start.negative?
|
61
|
+
raise ArgumentError, "negative stop position" if stop.negative?
|
62
|
+
|
52
63
|
hard_masked_blocks_raw(chrom, start, stop)
|
53
64
|
end
|
54
65
|
|
55
66
|
def soft_masked_blocks(chrom, start = 0, stop = 0)
|
67
|
+
raise ArgumentError, "negative start position" if start.negative?
|
68
|
+
raise ArgumentError, "negative stop position" if stop.negative?
|
69
|
+
|
56
70
|
soft_masked_blocks_raw(chrom, start, stop)
|
57
71
|
end
|
58
72
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bio-twobit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- kojix2
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-07-29 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: This is a Ruby binding for lib2bit(https://github.com/dpryan79/lib2bit),
|
14
14
|
which provides high-speed access to genomic data in 2bit file format.
|
@@ -52,7 +52,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
52
52
|
- !ruby/object:Gem::Version
|
53
53
|
version: '0'
|
54
54
|
requirements: []
|
55
|
-
rubygems_version: 3.3.
|
55
|
+
rubygems_version: 3.3.7
|
56
56
|
signing_key:
|
57
57
|
specification_version: 4
|
58
58
|
summary: A ruby library for accessing 2bit files
|