rbfam 12.0.0 → 12.0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +5 -5
- data/README.md +65 -1
- data/lib/rbfam/db_config.rb +22 -9
- data/lib/rbfam/rna.rb +9 -2
- data/lib/rbfam/version.rb +1 -1
- data/rbfam.gemspec +3 -3
- metadata +6 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5e8a9a60da5c870fecc28993c07e92ca3d4094b6
|
4
|
+
data.tar.gz: dff5a43d67ed40d3a5a7c7841a34da852a20ab8e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b79607c06c28a80d1870c4d2d220e9ef4c2521c112f67b7e516f28c3211bb25c369ea606331cdb1e3c103d21777063582361f31253ca33a4b3448bf073b045fb
|
7
|
+
data.tar.gz: 821524e61a2db5a246e3edfefcf948f8040f6586001c790cf3e79551db7247b527d2169920b748131fae4df55e0fd4415b17e2eaaf644dd7faeb80ededdaa3cb
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
rbfam (12.0.
|
4
|
+
rbfam (12.0.1)
|
5
5
|
active_record_migrations (~> 4.2, >= 4.2.0.1)
|
6
6
|
activerecord (~> 4.2, >= 4.2.0)
|
7
7
|
activerecord-import (~> 0.7, >= 0.7.0)
|
@@ -97,7 +97,7 @@ GEM
|
|
97
97
|
thread_safe (0.3.4)
|
98
98
|
tzinfo (1.2.2)
|
99
99
|
thread_safe (~> 0.1)
|
100
|
-
virtus (1.0.
|
100
|
+
virtus (1.0.4)
|
101
101
|
axiom-types (~> 0.1)
|
102
102
|
coercible (~> 1.0)
|
103
103
|
descendants_tracker (~> 0.0, >= 0.0.3)
|
@@ -107,8 +107,8 @@ PLATFORMS
|
|
107
107
|
ruby
|
108
108
|
|
109
109
|
DEPENDENCIES
|
110
|
-
awesome_print (~> 1.2
|
110
|
+
awesome_print (~> 1.2)
|
111
111
|
bundler (~> 1.7)
|
112
|
-
gem-release (~> 0.7
|
113
|
-
rake (~> 10.
|
112
|
+
gem-release (~> 0.7)
|
113
|
+
rake (~> 10.4)
|
114
114
|
rbfam!
|
data/README.md
CHANGED
@@ -1,4 +1,68 @@
|
|
1
1
|
rbfam
|
2
2
|
=====
|
3
3
|
|
4
|
-
Light wrapper for RFam data in Ruby.
|
4
|
+
Light wrapper for RFam data in Ruby. Provides two [`ActiveRecord::Base`](http://api.rubyonrails.org/classes/ActiveRecord/Base.html) models, `Rbfam::Family` and `Rbfam::Rna`. `Rbfam::Rna#seq` objects are cast as [`Bio::Sequence::NA`](http://bioruby.org/rdoc/Bio/Sequence/NA.html), and support any methods provided by that class.
|
5
|
+
|
6
|
+
```
|
7
|
+
Rbfam::Family(id: integer, created_at: datetime, updated_at: datetime, name: string, description: string, consensus_structure: text)
|
8
|
+
Rbfam::Rna(id: integer, created_at: datetime, updated_at: datetime, family_id: integer, accession: string, sequence: text, gapped_sequence: text, from: integer, to: integer)
|
9
|
+
```
|
10
|
+
|
11
|
+
Versioning follows a variant of semver, where release X.Y.Z.A has RFam major version X, RFam minor version Y, minor version Z and patch level A.
|
12
|
+
|
13
|
+
### Usage
|
14
|
+
|
15
|
+
```ruby
|
16
|
+
require "rbfam"
|
17
|
+
Rbfam.db.connect
|
18
|
+
|
19
|
+
Rbfam::Family.count #=> 2450
|
20
|
+
Rbfam::Rna.count #=> 47218
|
21
|
+
|
22
|
+
Rbfam::Family.rf(5).name #=> "RF00005"
|
23
|
+
Rbfam::Family.rf(5).description #=> "tRNA"
|
24
|
+
Rbfam::Family.rf(5).class.superclass #=> ActiveRecord::Base
|
25
|
+
Rbfam::Family.named("microRNA").count #=> 524
|
26
|
+
|
27
|
+
Rbfam::Family.rf(167).rnas.count #=> 133
|
28
|
+
Rbfam::Family.rf(167).rnas.plus_strand.count #=> 76
|
29
|
+
Rbfam::Family.rf(167).rnas.first.description #=> "X83878.1/168-267"
|
30
|
+
Rbfam::Family.rf(167).rnas.first.seq.gc_content #=> (23/50)
|
31
|
+
Rbfam::Family.rf(167).rnas.first.seq.class #=> Bio::Sequence::NA
|
32
|
+
```
|
33
|
+
|
34
|
+
### Installation
|
35
|
+
|
36
|
+
To install via Rubygems:
|
37
|
+
|
38
|
+
```
|
39
|
+
gem install rbfam
|
40
|
+
```
|
41
|
+
|
42
|
+
To install from source:
|
43
|
+
|
44
|
+
```
|
45
|
+
git clone https://github.com/evansenter/rbfam.git
|
46
|
+
cd rbfam
|
47
|
+
bundle install
|
48
|
+
rake install
|
49
|
+
```
|
50
|
+
|
51
|
+
### Configuration
|
52
|
+
|
53
|
+
The default configuration for the database resides in [`db/config.yml`](https://github.com/evansenter/rbfam/blob/master/db/config.yml), but is easily overridable. Rbfam uses the `Rbfam.db.scoped_config` function to access the database, which retrieves the configuration from the `Rbfam.db.config` object, keyed by `Rbfam.db.env`. Both of these functions have writers as well for user-specific configuration.
|
54
|
+
|
55
|
+
```ruby
|
56
|
+
Rbfam.db.scoped_config #=> {"adapter"=>"mysql2", "database"=>"rbfam", "username"=>"root", "password"=>nil}
|
57
|
+
Rbfam.db.config #=> {"rbfam"=>{"adapter"=>"mysql2", "database"=>"rbfam", "username"=>"root", "password"=>nil}}
|
58
|
+
Rbfam.db.env #=> "rbfam"
|
59
|
+
```
|
60
|
+
|
61
|
+
### Initialization
|
62
|
+
|
63
|
+
The first time that you use Rbfam, you need to build and populate the database. This process takes approximately 15 minutes as all the data from Rfam 12.0 is loaded into MySQL. To do this, one does the following:
|
64
|
+
|
65
|
+
```ruby
|
66
|
+
require "rbfam"
|
67
|
+
Rbfam.db.bootstrap!
|
68
|
+
```
|
data/lib/rbfam/db_config.rb
CHANGED
@@ -11,21 +11,21 @@ module Rbfam
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def bootstrap!
|
14
|
-
|
15
|
-
|
16
|
-
|
14
|
+
ensure_action("Are you sure you'd like to completely rebuild the database? This takes around 10 minutes.") do
|
15
|
+
Rake::Task["db:reset"].invoke
|
16
|
+
end
|
17
17
|
end
|
18
18
|
|
19
19
|
def seed!
|
20
|
-
|
21
|
-
|
22
|
-
|
20
|
+
ensure_action("Are you sure you'd like to re-seed the database? This is faster than bootstrap!, and won't delete data.") do
|
21
|
+
Rake::Task["db:seed"].invoke
|
22
|
+
end
|
23
23
|
end
|
24
24
|
|
25
25
|
def clear!
|
26
|
-
|
27
|
-
|
28
|
-
|
26
|
+
ensure_action("Are you sure you'd like drop the database? This can't be un-done.") do
|
27
|
+
Rake::Task["db:drop"].invoke
|
28
|
+
end
|
29
29
|
end
|
30
30
|
|
31
31
|
def connect
|
@@ -34,6 +34,19 @@ module Rbfam
|
|
34
34
|
|
35
35
|
private
|
36
36
|
|
37
|
+
def ensure_action(string, &block)
|
38
|
+
puts "#{string} (y/n)"
|
39
|
+
response = gets.chomp.downcase
|
40
|
+
if response == ?y
|
41
|
+
load_rakefile
|
42
|
+
yield block
|
43
|
+
true
|
44
|
+
else
|
45
|
+
puts "Bailing, no changes were made."
|
46
|
+
false
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
37
50
|
def load_rakefile
|
38
51
|
Rake.load_rakefile(File.join(File.dirname(__FILE__), "..", "..", "Rakefile"))
|
39
52
|
end
|
data/lib/rbfam/rna.rb
CHANGED
@@ -6,6 +6,9 @@ module Rbfam
|
|
6
6
|
validates :from, :to, numericality: { only_integer: true, greater_than_or_equal_to: 0 }
|
7
7
|
validates :accession, uniqueness: { scope: [:sequence, :from, :to] }
|
8
8
|
|
9
|
+
scope :plus_strand, ->{ where(arel_table[:to].gt(arel_table[:from])) }
|
10
|
+
scope :minus_strand, ->{ where(arel_table[:to].lt(arel_table[:from])) }
|
11
|
+
|
9
12
|
def strand
|
10
13
|
plus_strand? ? :plus : :minus
|
11
14
|
end
|
@@ -34,14 +37,18 @@ module Rbfam
|
|
34
37
|
as_bioseq(read_attribute(:gapped_sequence))
|
35
38
|
end
|
36
39
|
|
40
|
+
def description
|
41
|
+
"%s/%s-%s" % [accession, from, to]
|
42
|
+
end
|
43
|
+
|
37
44
|
def _id
|
38
|
-
|
45
|
+
description.gsub(/\W+/, "_")
|
39
46
|
end
|
40
47
|
|
41
48
|
private
|
42
49
|
|
43
50
|
def as_bioseq(string)
|
44
|
-
Bio::Sequence::NA.new(string)
|
51
|
+
Bio::Sequence::NA.new(string)
|
45
52
|
end
|
46
53
|
end
|
47
54
|
end
|
data/lib/rbfam/version.rb
CHANGED
data/rbfam.gemspec
CHANGED
@@ -20,10 +20,10 @@ Gem::Specification.new do |spec|
|
|
20
20
|
|
21
21
|
spec.required_ruby_version = ">= 2.0"
|
22
22
|
|
23
|
-
spec.add_development_dependency "awesome_print", "~> 1.2
|
23
|
+
spec.add_development_dependency "awesome_print", "~> 1.2"
|
24
24
|
spec.add_development_dependency "bundler", "~> 1.7"
|
25
|
-
spec.add_development_dependency "gem-release", "~> 0.7"
|
26
|
-
spec.add_development_dependency "rake", "~> 10.
|
25
|
+
spec.add_development_dependency "gem-release", "~> 0.7"
|
26
|
+
spec.add_development_dependency "rake", "~> 10.4"
|
27
27
|
|
28
28
|
spec.add_runtime_dependency "activerecord", "~> 4.2", ">= 4.2.0"
|
29
29
|
spec.add_runtime_dependency "activerecord-import", "~> 0.7", ">= 0.7.0"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rbfam
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 12.0.0
|
4
|
+
version: 12.0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Evan Senter
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-01-
|
11
|
+
date: 2015-01-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: awesome_print
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.2
|
19
|
+
version: '1.2'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 1.2
|
26
|
+
version: '1.2'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -45,9 +45,6 @@ dependencies:
|
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0.7'
|
48
|
-
- - ">="
|
49
|
-
- !ruby/object:Gem::Version
|
50
|
-
version: 0.7.3
|
51
48
|
type: :development
|
52
49
|
prerelease: false
|
53
50
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -55,23 +52,20 @@ dependencies:
|
|
55
52
|
- - "~>"
|
56
53
|
- !ruby/object:Gem::Version
|
57
54
|
version: '0.7'
|
58
|
-
- - ">="
|
59
|
-
- !ruby/object:Gem::Version
|
60
|
-
version: 0.7.3
|
61
55
|
- !ruby/object:Gem::Dependency
|
62
56
|
name: rake
|
63
57
|
requirement: !ruby/object:Gem::Requirement
|
64
58
|
requirements:
|
65
59
|
- - "~>"
|
66
60
|
- !ruby/object:Gem::Version
|
67
|
-
version: '10.
|
61
|
+
version: '10.4'
|
68
62
|
type: :development
|
69
63
|
prerelease: false
|
70
64
|
version_requirements: !ruby/object:Gem::Requirement
|
71
65
|
requirements:
|
72
66
|
- - "~>"
|
73
67
|
- !ruby/object:Gem::Version
|
74
|
-
version: '10.
|
68
|
+
version: '10.4'
|
75
69
|
- !ruby/object:Gem::Dependency
|
76
70
|
name: activerecord
|
77
71
|
requirement: !ruby/object:Gem::Requirement
|