bio-dbsnp 0.1.1
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/.document +5 -0
- data/.rspec +2 -0
- data/Gemfile +14 -0
- data/Gemfile.lock +30 -0
- data/LICENSE.txt +20 -0
- data/README.rdoc +23 -0
- data/Rakefile +50 -0
- data/VERSION +1 -0
- data/bio-dbsnp.gemspec +65 -0
- data/lib/bio-dbsnp.rb +12 -0
- data/lib/bio/ncbi/dbsnp.rb +1 -0
- data/lib/bio/ncbi/dbsnp/bitfield.rb +198 -0
- data/spec/bio-dbsnp_spec.rb +156 -0
- data/spec/spec_helper.rb +12 -0
- metadata +119 -0
data/.document
ADDED
data/.rspec
ADDED
data/Gemfile
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
source "http://rubygems.org"
|
2
|
+
# Add dependencies required to use your gem here.
|
3
|
+
# Example:
|
4
|
+
# gem "activesupport", ">= 2.3.5"
|
5
|
+
|
6
|
+
# Add dependencies to develop your gem here.
|
7
|
+
# Include everything needed to run rake, tests, features, etc.
|
8
|
+
group :development do
|
9
|
+
gem "rspec", "~> 2.3.0"
|
10
|
+
gem "bundler", "~> 1.0.0"
|
11
|
+
gem "jeweler", "~> 1.6.4"
|
12
|
+
gem "rcov", ">= 0"
|
13
|
+
gem "bio", ">= 1.4.1"
|
14
|
+
end
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
GEM
|
2
|
+
remote: http://rubygems.org/
|
3
|
+
specs:
|
4
|
+
bio (1.4.2)
|
5
|
+
diff-lcs (1.1.3)
|
6
|
+
git (1.2.5)
|
7
|
+
jeweler (1.6.4)
|
8
|
+
bundler (~> 1.0)
|
9
|
+
git (>= 1.2.5)
|
10
|
+
rake
|
11
|
+
rake (0.9.2)
|
12
|
+
rcov (0.9.10)
|
13
|
+
rspec (2.3.0)
|
14
|
+
rspec-core (~> 2.3.0)
|
15
|
+
rspec-expectations (~> 2.3.0)
|
16
|
+
rspec-mocks (~> 2.3.0)
|
17
|
+
rspec-core (2.3.1)
|
18
|
+
rspec-expectations (2.3.0)
|
19
|
+
diff-lcs (~> 1.1.2)
|
20
|
+
rspec-mocks (2.3.0)
|
21
|
+
|
22
|
+
PLATFORMS
|
23
|
+
ruby
|
24
|
+
|
25
|
+
DEPENDENCIES
|
26
|
+
bio (>= 1.4.1)
|
27
|
+
bundler (~> 1.0.0)
|
28
|
+
jeweler (~> 1.6.4)
|
29
|
+
rcov
|
30
|
+
rspec (~> 2.3.0)
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2011 Hiroyuki Mishima
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
= bio-dbsnp
|
2
|
+
|
3
|
+
A library to decode "bitfield" information in dbSNP. In VCF format, bitfiled is contained in the "VP" field in the INFO column.
|
4
|
+
|
5
|
+
Further details of the format is shown in ftp://ftp.ncbi.nlm.nih.gov/snp/specs/dbSNP_BitField_latest.pdf
|
6
|
+
|
7
|
+
= how to install
|
8
|
+
gem install bio-dbsnp
|
9
|
+
|
10
|
+
= how to use
|
11
|
+
require 'bio-dbsnp'
|
12
|
+
|
13
|
+
vp = "050000000000000000000200"
|
14
|
+
bf = Bio::NCBI::Dbsnp::Bitfield.parse vp
|
15
|
+
bf.version #=> 5
|
16
|
+
bf.variation_class #=> :dips
|
17
|
+
|
18
|
+
See lib/bio/ncbi/dbsnp/bitfield.rb for implementation. spec/bio-dbsnp_spec.rb also describes a usage.
|
19
|
+
|
20
|
+
== Copyright
|
21
|
+
|
22
|
+
Copyright (c) 2011 Hiroyuki Mishima (missy at be.to, @mishimahryk at Twitter).
|
23
|
+
See LICENSE.txt (the MIT Licence) for further details.
|
data/Rakefile
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'bundler'
|
5
|
+
begin
|
6
|
+
Bundler.setup(:default, :development)
|
7
|
+
rescue Bundler::BundlerError => e
|
8
|
+
$stderr.puts e.message
|
9
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
10
|
+
exit e.status_code
|
11
|
+
end
|
12
|
+
require 'rake'
|
13
|
+
|
14
|
+
require 'jeweler'
|
15
|
+
Jeweler::Tasks.new do |gem|
|
16
|
+
# gem is a Gem::Specification...
|
17
|
+
# see http://docs.rubygems.org/read/chapter/20 for more options
|
18
|
+
gem.name = "bio-dbsnp"
|
19
|
+
gem.homepage = "http://github.com/misshie/bioruby-dbsnp"
|
20
|
+
gem.license = "MIT"
|
21
|
+
gem.summary = %Q{decoding the dbSNP bitfield}
|
22
|
+
gem.description = %Q{decoding the dbSNP bitfield containg detaild information}
|
23
|
+
gem.email = "missy@be.to"
|
24
|
+
gem.authors = ["Hiroyuki Mishima"]
|
25
|
+
# dependencies defined in Gemfile
|
26
|
+
end
|
27
|
+
Jeweler::RubygemsDotOrgTasks.new
|
28
|
+
|
29
|
+
require 'rspec/core'
|
30
|
+
require 'rspec/core/rake_task'
|
31
|
+
RSpec::Core::RakeTask.new(:spec) do |spec|
|
32
|
+
spec.pattern = FileList['spec/**/*_spec.rb']
|
33
|
+
end
|
34
|
+
|
35
|
+
RSpec::Core::RakeTask.new(:rcov) do |spec|
|
36
|
+
spec.pattern = 'spec/**/*_spec.rb'
|
37
|
+
spec.rcov = true
|
38
|
+
end
|
39
|
+
|
40
|
+
task :default => :spec
|
41
|
+
|
42
|
+
require 'rake/rdoctask'
|
43
|
+
Rake::RDocTask.new do |rdoc|
|
44
|
+
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
45
|
+
|
46
|
+
rdoc.rdoc_dir = 'rdoc'
|
47
|
+
rdoc.title = "bio-dbsnp #{version}"
|
48
|
+
rdoc.rdoc_files.include('README*')
|
49
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
50
|
+
end
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.1.1
|
data/bio-dbsnp.gemspec
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{bio-dbsnp}
|
8
|
+
s.version = "0.1.1"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = [%q{Hiroyuki Mishima}]
|
12
|
+
s.date = %q{2011-11-03}
|
13
|
+
s.description = %q{decoding the dbSNP bitfield containg detaild information}
|
14
|
+
s.email = %q{missy@be.to}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE.txt",
|
17
|
+
"README.rdoc"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
".document",
|
21
|
+
".rspec",
|
22
|
+
"Gemfile",
|
23
|
+
"Gemfile.lock",
|
24
|
+
"LICENSE.txt",
|
25
|
+
"README.rdoc",
|
26
|
+
"Rakefile",
|
27
|
+
"VERSION",
|
28
|
+
"bio-dbsnp.gemspec",
|
29
|
+
"lib/bio-dbsnp.rb",
|
30
|
+
"lib/bio/ncbi/dbsnp.rb",
|
31
|
+
"lib/bio/ncbi/dbsnp/bitfield.rb",
|
32
|
+
"spec/bio-dbsnp_spec.rb",
|
33
|
+
"spec/spec_helper.rb"
|
34
|
+
]
|
35
|
+
s.homepage = %q{http://github.com/misshie/bioruby-dbsnp}
|
36
|
+
s.licenses = [%q{MIT}]
|
37
|
+
s.require_paths = [%q{lib}]
|
38
|
+
s.rubygems_version = %q{1.8.6}
|
39
|
+
s.summary = %q{decoding the dbSNP bitfield}
|
40
|
+
|
41
|
+
if s.respond_to? :specification_version then
|
42
|
+
s.specification_version = 3
|
43
|
+
|
44
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
45
|
+
s.add_development_dependency(%q<rspec>, ["~> 2.3.0"])
|
46
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
47
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
|
48
|
+
s.add_development_dependency(%q<rcov>, [">= 0"])
|
49
|
+
s.add_development_dependency(%q<bio>, [">= 1.4.1"])
|
50
|
+
else
|
51
|
+
s.add_dependency(%q<rspec>, ["~> 2.3.0"])
|
52
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
53
|
+
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
54
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
55
|
+
s.add_dependency(%q<bio>, [">= 1.4.1"])
|
56
|
+
end
|
57
|
+
else
|
58
|
+
s.add_dependency(%q<rspec>, ["~> 2.3.0"])
|
59
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
60
|
+
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
61
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
62
|
+
s.add_dependency(%q<bio>, [">= 1.4.1"])
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
data/lib/bio-dbsnp.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
# Please require your code below, respecting the bioruby directory tree.
|
2
|
+
# For instance, perhaps the only uncommented line in this file might
|
3
|
+
# be something like this:
|
4
|
+
#
|
5
|
+
# require 'bio/sequence/awesome_sequence_plugin_thingy'
|
6
|
+
#
|
7
|
+
# and then create the ruby file 'lib/bio/sequence/awesome_sequence_thingy.rb'
|
8
|
+
# and put your plugin's code there. It is bad practice to write other code
|
9
|
+
# directly into this file, because doing so causes confusion if this biogem
|
10
|
+
# was ever to get merged into the main bioruby tree.
|
11
|
+
|
12
|
+
require 'bio/ncbi/dbsnp'
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'bio/ncbi/dbsnp/bitfield'
|
@@ -0,0 +1,198 @@
|
|
1
|
+
module Bio
|
2
|
+
module NCBI
|
3
|
+
module Dbsnp
|
4
|
+
|
5
|
+
class Bitfield
|
6
|
+
def initialize(byte_stream)
|
7
|
+
@byte_stream = byte_stream
|
8
|
+
ver = version
|
9
|
+
raise "Unsupported bitfield version (ver.#{ver})" unless ver == 5
|
10
|
+
end
|
11
|
+
|
12
|
+
attr_reader :byte_stream
|
13
|
+
|
14
|
+
def self.parse(bitfield_str)
|
15
|
+
byte_stream = Array.new
|
16
|
+
bitfield_str.tr("_","").chars.each_slice(2) do |byte_str|
|
17
|
+
byte_stream << Integer("0x#{byte_str.join("")}")
|
18
|
+
end
|
19
|
+
self.new(byte_stream)
|
20
|
+
end
|
21
|
+
|
22
|
+
def field(fnum)
|
23
|
+
case fnum
|
24
|
+
when 0
|
25
|
+
byte_stream[0]
|
26
|
+
when 1
|
27
|
+
(byte_stream[2] << 8) + byte_stream[1]
|
28
|
+
when 2
|
29
|
+
(byte_stream[4] << 8) + byte_stream[3]
|
30
|
+
else
|
31
|
+
byte_stream[fnum + 2]
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
# field F0
|
36
|
+
def version
|
37
|
+
field(0) & 0b0000_1111
|
38
|
+
end
|
39
|
+
|
40
|
+
# field F1
|
41
|
+
def resource_link
|
42
|
+
fld = field(1)
|
43
|
+
res = Array.new
|
44
|
+
res << :clinical if bit? fld, 0b100_0000_0000_0000
|
45
|
+
res << :precious if bit? fld, 0b010_0000_0000_0000
|
46
|
+
res << :provisional_tpa if bit? fld, 0b001_0000_0000_0000
|
47
|
+
res << :pubmed_central_article if bit? fld, 0b000_1000_0000_0000
|
48
|
+
res << :short_read_archive if bit? fld, 0b000_0100_0000_0000
|
49
|
+
res << :organism_dblink if bit? fld, 0b000_0010_0000_0000
|
50
|
+
res << :mgc_clone if bit? fld, 0b000_0001_0000_0000
|
51
|
+
res << :trace_archive if bit? fld, 0b000_0000_1000_0000
|
52
|
+
res << :assemby_archive if bit? fld, 0b000_0000_0100_0000
|
53
|
+
res << :entrez_geo if bit? fld, 0b000_0000_0010_0000
|
54
|
+
res << :peobe_db if bit? fld, 0b000_0000_0001_0000
|
55
|
+
res << :entrez_gene if bit? fld, 0b000_0000_0000_1000
|
56
|
+
res << :entrez_sts if bit? fld, 0b000_0000_0000_0100
|
57
|
+
res << :threed_structure if bit? fld, 0b000_0000_0000_0010
|
58
|
+
res << :submitter_link_out if bit? fld, 0b000_0000_0000_0001
|
59
|
+
res
|
60
|
+
end
|
61
|
+
|
62
|
+
# field F2
|
63
|
+
def gene_function
|
64
|
+
fld = field(2)
|
65
|
+
res = Array.new
|
66
|
+
res << :stop_loss if bit? fld, 0b10_0000_0000_0000
|
67
|
+
res << :non_synonymous_frameshift if bit? fld, 0b01_0000_0000_0000
|
68
|
+
res << :non_synonymous_missense if bit? fld, 0b00_1000_0000_0000
|
69
|
+
res << :stop_gain if bit? fld, 0b00_0100_0000_0000
|
70
|
+
res << :reference if bit? fld, 0b00_0010_0000_0000
|
71
|
+
res << :synonymous if bit? fld, 0b00_0001_0000_0000
|
72
|
+
res << :utr_3p if bit? fld, 0b00_0000_1000_0000
|
73
|
+
res << :utr_5p if bit? fld, 0b00_0000_0100_0000
|
74
|
+
res << :acceptor_splice_site if bit? fld, 0b00_0000_0010_0000
|
75
|
+
res << :donor_splice_site if bit? fld, 0b00_0000_0001_0000
|
76
|
+
res << :intron if bit? fld, 0b00_0000_0000_1000
|
77
|
+
res << :gene_region_3p if bit? fld, 0b00_0000_0000_0100
|
78
|
+
res << :gene_region_5p if bit? fld, 0b00_0000_0000_0010
|
79
|
+
res << :gene_segment if bit? fld, 0b00_0000_0000_0001
|
80
|
+
res
|
81
|
+
end
|
82
|
+
|
83
|
+
# field F3
|
84
|
+
def mapping
|
85
|
+
fld = field(3)
|
86
|
+
res = Array.new
|
87
|
+
res << :other_snp if bit? fld, 0b1_0000
|
88
|
+
res << :assembly_conflict if bit? fld, 0b0_1000
|
89
|
+
res << :assembly_specific if bit? fld, 0b0_0100
|
90
|
+
res << :weight3 if bit? fld, 0b0_0011
|
91
|
+
res << :weight2 if bit? fld, 0b0_0010
|
92
|
+
res << :weight1 if bit? fld, 0b0_0001
|
93
|
+
res << :unmapped if (fld & 0b0000_0011) == 0
|
94
|
+
res
|
95
|
+
end
|
96
|
+
|
97
|
+
# field F4
|
98
|
+
def allele_frequency
|
99
|
+
fld = field(4)
|
100
|
+
res = Array.new
|
101
|
+
res << :mutation if bit? fld, 0b1000
|
102
|
+
res << :validated if bit? fld, 0b0100
|
103
|
+
res << :maf_gt5_each_and_all_populations if bit? fld, 0b0010
|
104
|
+
res << :maf_gt5_in_1plus_populations if bit? fld, 0b0001
|
105
|
+
res
|
106
|
+
end
|
107
|
+
|
108
|
+
# field F5
|
109
|
+
def genotype
|
110
|
+
fld = field(5)
|
111
|
+
res = Array.new
|
112
|
+
res << :high_density if bit? fld, 0b0100
|
113
|
+
res << :haplotype_tagging_set if bit? fld, 0b0010
|
114
|
+
res << :available if bit? fld, 0b0001
|
115
|
+
res
|
116
|
+
end
|
117
|
+
|
118
|
+
# field F6
|
119
|
+
def validation
|
120
|
+
fld = field(6)
|
121
|
+
res = Array.new
|
122
|
+
res << :tgp_2010_production if bit? fld, 0b100_0000
|
123
|
+
res << :tgp_validated if bit? fld, 0b010_0000
|
124
|
+
res << :tgp_2010_pilot if bit? fld, 0b001_0000
|
125
|
+
res << :tgp_2009_phase1 if bit? fld, 0b000_1000
|
126
|
+
res << :phase_3_genotyped if bit? fld, 0b000_0100
|
127
|
+
res << :phase_2_genotyped if bit? fld, 0b000_0010
|
128
|
+
res << :phase_1_genotyped if bit? fld, 0b000_0001
|
129
|
+
res
|
130
|
+
end
|
131
|
+
|
132
|
+
# field F7
|
133
|
+
def phenotype
|
134
|
+
fld = field(7)
|
135
|
+
res = Array.new
|
136
|
+
res << :mesh_disease if bit? fld, 0b1000_0000
|
137
|
+
res << :clinical_diagnosis if bit? fld, 0b0100_0000
|
138
|
+
res << :transciption_factor if bit? fld, 0b0010_0000
|
139
|
+
res << :locus_specific_database if bit? fld, 0b0001_0000
|
140
|
+
res << :dbgap_p_valued if bit? fld, 0b0000_1000
|
141
|
+
res << :dbgap_lod if bit? fld, 0b0000_0100
|
142
|
+
res << :tpa_gwas_page if bit? fld, 0b0000_0010
|
143
|
+
res << :omim_omia if bit? fld, 0b0000_0001
|
144
|
+
res
|
145
|
+
end
|
146
|
+
|
147
|
+
# field F8
|
148
|
+
def variation_class
|
149
|
+
case (field(8) & 0b0000_1111)
|
150
|
+
when 0b0001
|
151
|
+
:snp
|
152
|
+
when 0b0010
|
153
|
+
:dips
|
154
|
+
when 0b0011
|
155
|
+
:heterozygous
|
156
|
+
when 0b0100
|
157
|
+
:microsatellite
|
158
|
+
when 0b0101
|
159
|
+
:named_variation
|
160
|
+
when 0b0110
|
161
|
+
:novariation
|
162
|
+
when 0b0111
|
163
|
+
:mixed_class
|
164
|
+
when 0b1000
|
165
|
+
:multibase_polymorphism
|
166
|
+
else
|
167
|
+
raise "Should not happen! Check bitfield verison."
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
# field F9
|
172
|
+
def quality_check
|
173
|
+
fld = field(9)
|
174
|
+
res = Array.new
|
175
|
+
res << :suspect if bit? fld, 0b00_0000_0100_0000
|
176
|
+
res << :somatic if bit? fld, 0b00_0000_0010_0000
|
177
|
+
res << :reference_allele_missing if bit? fld, 0b00_0000_0001_0000
|
178
|
+
res << :withdrawn_by_submitter if bit? fld, 0b00_0000_0000_1000
|
179
|
+
res << :no_allele_overlap if bit? fld, 0b00_0000_0000_0100
|
180
|
+
res << :strain_specific_fiexed_defference if bit? fld, 0b00_0000_0000_0010
|
181
|
+
res << :genotype_conflict if bit? fld, 0b00_0000_0000_0001
|
182
|
+
res
|
183
|
+
end
|
184
|
+
|
185
|
+
private
|
186
|
+
|
187
|
+
def bit?(subj, bit)
|
188
|
+
if (subj & bit) == bit
|
189
|
+
true
|
190
|
+
else
|
191
|
+
false
|
192
|
+
end
|
193
|
+
end
|
194
|
+
end # class Bitfield
|
195
|
+
|
196
|
+
end # module Dbsnp
|
197
|
+
end # module NCBI
|
198
|
+
end #module Bio
|
@@ -0,0 +1,156 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
|
3
|
+
describe "Dbsnp" do
|
4
|
+
describe "Bitfield" do
|
5
|
+
|
6
|
+
describe ".parse" do
|
7
|
+
context "given a string '050000000009000110000100'" do
|
8
|
+
it "returns a new instance of Bio::NCBI::Dbsnp" do
|
9
|
+
obj = Bio::NCBI::Dbsnp::Bitfield.parse('050000000009000110000100')
|
10
|
+
obj.should be_an_instance_of(Bio::NCBI::Dbsnp::Bitfield)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
context "given a string '010000000009000110000100' for .parse" do
|
15
|
+
it "raises RuntimeError" do
|
16
|
+
str = '010000000009000110000100'
|
17
|
+
expect { Bio::NCBI::Dbsnp::Bitfield.parse(str) }.to raise_error(RuntimeError)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "#byte_stream" do
|
24
|
+
context "given a string '050000000009000110000100' for .parse" do
|
25
|
+
it "returns an array ary[0] == 5" do
|
26
|
+
obj = Bio::NCBI::Dbsnp::Bitfield.parse('050000000009000110000100')
|
27
|
+
obj.byte_stream[0].should == 5
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe "#field" do
|
33
|
+
context "given (1) with a string '050102030405060708090A0B' for .parse" do
|
34
|
+
it "returns 0x0201" do
|
35
|
+
obj = Bio::NCBI::Dbsnp::Bitfield.parse('050102030405060708090A0B')
|
36
|
+
obj.field(1).should == 0x0201
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe "#bit? (private method)" do
|
42
|
+
context "given (0b0010, 0b0010)" do
|
43
|
+
it "returns true" do
|
44
|
+
obj = Bio::NCBI::Dbsnp::Bitfield.parse('050000000000000000000200')
|
45
|
+
obj.__send__(:bit?, 0b0010, 0b0010).should be_true
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
context "given (0b0010, 0b0111)" do
|
50
|
+
it "returns false" do
|
51
|
+
obj = Bio::NCBI::Dbsnp::Bitfield.parse('050000000000000000000200')
|
52
|
+
obj.__send__(:bit?, 0b0010, 0b0111).should be_false
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
context "given (0b1111, 0b0111)" do
|
57
|
+
it "returns true" do
|
58
|
+
obj = Bio::NCBI::Dbsnp::Bitfield.parse('050000000000000000000200')
|
59
|
+
obj.__send__(:bit?, 0b1111, 0b0111).should be_true
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
describe "[F0] #version" do
|
65
|
+
context "given a string '050000000009000110000100' for .parse" do
|
66
|
+
it "returns 5" do
|
67
|
+
obj = Bio::NCBI::Dbsnp::Bitfield.parse('050000000009000110000100')
|
68
|
+
obj.version.should == 5
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
describe "[F1] #resource_link" do
|
74
|
+
context "given a string '050300000301040400000100' of rs55874132 for .parse" do
|
75
|
+
it "returns an array containing :threed_structure and :submitter_link_out" do
|
76
|
+
obj = Bio::NCBI::Dbsnp::Bitfield.parse('050300000301040400000100')
|
77
|
+
obj.resource_link.should include(:threed_structure, :submitter_link_out)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
describe "[F2] #gene_function" do
|
83
|
+
context "given a string '050300000301040400000100' of rs55874132 for .parse" do
|
84
|
+
it "returns an array containing :reference, :synonymous" do
|
85
|
+
obj = Bio::NCBI::Dbsnp::Bitfield.parse('050300000301040400000100')
|
86
|
+
obj.gene_function.should include(:reference, :synonymous)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
describe "[F3] #mapping" do
|
92
|
+
context "given a string '05_0300_0003_01_04_04_00_00_01_00' of rs55874132 for .parse" do
|
93
|
+
it "returns an array containing :weight1" do
|
94
|
+
obj = Bio::NCBI::Dbsnp::Bitfield.parse('05_0300_0003_01_04_04_00_00_01_00')
|
95
|
+
obj.mapping.should include(:weight1)
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
describe "[F4] #allele_frequency" do
|
101
|
+
context "given a string '05_0300_0003_01_04_04_00_00_01_00' of rs55874132 for .parse" do
|
102
|
+
it "returns an array containing :validated" do
|
103
|
+
obj = Bio::NCBI::Dbsnp::Bitfield.parse('05_0300_0003_01_04_04_00_00_01_00')
|
104
|
+
obj.allele_frequency.should include(:validated)
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
describe "[F5] #genotype" do
|
110
|
+
context "given a string '05_0300_0003_01_04_04_00_00_01_00' of rs55874132 for .parse" do
|
111
|
+
it "returns an array containing :high_density" do
|
112
|
+
obj = Bio::NCBI::Dbsnp::Bitfield.parse('05_0300_0003_01_04_04_00_00_01_00')
|
113
|
+
obj.genotype.should include(:high_density)
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
describe "[F6] #validation" do
|
119
|
+
context "given a string '05_0000_0000_05_03_00_10_00_01_00' of rs117577454 for .parse" do
|
120
|
+
it "returns an array containing :tgp_2010_pilot" do
|
121
|
+
obj = Bio::NCBI::Dbsnp::Bitfield.parse('05_0000_0000_05_03_00_10_00_01_00')
|
122
|
+
obj.validation.should include(:tgp_2010_pilot)
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
describe "[F7] #phenotype" do
|
128
|
+
context "given a string '05_0128_0000_01_03_05_12_02_01_00' of rs3934834 for .parse" do
|
129
|
+
it "returns an array containing :tpa_gwas_page" do
|
130
|
+
obj = Bio::NCBI::Dbsnp::Bitfield.parse('05_0128_0000_01_03_05_12_02_01_00')
|
131
|
+
obj.phenotype.should include(:tpa_gwas_page)
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
describe "[F8] #variation_class" do
|
137
|
+
context "given a string '05_0000_0000_00_00_00_00_00_02_00' for .parse" do
|
138
|
+
it "returns ':indel'" do
|
139
|
+
obj = Bio::NCBI::Dbsnp::Bitfield.parse('05_0000_0000_00_00_00_00_00_02_00')
|
140
|
+
obj.variation_class.should == :dips
|
141
|
+
end
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
describe "[F9] #quality_check" do
|
146
|
+
context "given a string '05_0000_0000_01_00_00_10_00_01_40' of rs62637813 for .parse" do
|
147
|
+
it "returns an array containing ':suspect'" do
|
148
|
+
obj = Bio::NCBI::Dbsnp::Bitfield.parse('05_0000_0000_01_00_00_10_00_01_40')
|
149
|
+
# 0x40 = 0b0100_0000
|
150
|
+
obj.quality_check.should include(:suspect)
|
151
|
+
end
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
end
|
156
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
3
|
+
require 'rspec'
|
4
|
+
require 'bio-dbsnp'
|
5
|
+
|
6
|
+
# Requires supporting files with custom matchers and macros, etc,
|
7
|
+
# in ./support/ and its subdirectories.
|
8
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
9
|
+
|
10
|
+
RSpec.configure do |config|
|
11
|
+
|
12
|
+
end
|
metadata
ADDED
@@ -0,0 +1,119 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: bio-dbsnp
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Hiroyuki Mishima
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2011-11-03 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rspec
|
16
|
+
requirement: &96529700 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 2.3.0
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *96529700
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: bundler
|
27
|
+
requirement: &96529100 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ~>
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 1.0.0
|
33
|
+
type: :development
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *96529100
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: jeweler
|
38
|
+
requirement: &96528600 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ~>
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 1.6.4
|
44
|
+
type: :development
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *96528600
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: rcov
|
49
|
+
requirement: &96528080 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *96528080
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: bio
|
60
|
+
requirement: &96527500 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: 1.4.1
|
66
|
+
type: :development
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *96527500
|
69
|
+
description: decoding the dbSNP bitfield containg detaild information
|
70
|
+
email: missy@be.to
|
71
|
+
executables: []
|
72
|
+
extensions: []
|
73
|
+
extra_rdoc_files:
|
74
|
+
- LICENSE.txt
|
75
|
+
- README.rdoc
|
76
|
+
files:
|
77
|
+
- .document
|
78
|
+
- .rspec
|
79
|
+
- Gemfile
|
80
|
+
- Gemfile.lock
|
81
|
+
- LICENSE.txt
|
82
|
+
- README.rdoc
|
83
|
+
- Rakefile
|
84
|
+
- VERSION
|
85
|
+
- bio-dbsnp.gemspec
|
86
|
+
- lib/bio-dbsnp.rb
|
87
|
+
- lib/bio/ncbi/dbsnp.rb
|
88
|
+
- lib/bio/ncbi/dbsnp/bitfield.rb
|
89
|
+
- spec/bio-dbsnp_spec.rb
|
90
|
+
- spec/spec_helper.rb
|
91
|
+
homepage: http://github.com/misshie/bioruby-dbsnp
|
92
|
+
licenses:
|
93
|
+
- MIT
|
94
|
+
post_install_message:
|
95
|
+
rdoc_options: []
|
96
|
+
require_paths:
|
97
|
+
- lib
|
98
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
99
|
+
none: false
|
100
|
+
requirements:
|
101
|
+
- - ! '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
segments:
|
105
|
+
- 0
|
106
|
+
hash: 3024424425824902007
|
107
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
108
|
+
none: false
|
109
|
+
requirements:
|
110
|
+
- - ! '>='
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: '0'
|
113
|
+
requirements: []
|
114
|
+
rubyforge_project:
|
115
|
+
rubygems_version: 1.8.6
|
116
|
+
signing_key:
|
117
|
+
specification_version: 3
|
118
|
+
summary: decoding the dbSNP bitfield
|
119
|
+
test_files: []
|