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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 73c4a2c6bb2e20a1eeddd818c01199c6aceca461
4
- data.tar.gz: 7ba0aa6f44ba94fbbf35cc234b7ad257c9dcdf00
3
+ metadata.gz: 5e8a9a60da5c870fecc28993c07e92ca3d4094b6
4
+ data.tar.gz: dff5a43d67ed40d3a5a7c7841a34da852a20ab8e
5
5
  SHA512:
6
- metadata.gz: bef8054a40a26e2f58d2f2e869f3bc8741d469db958066cfd8812117a768c47e7c2b6a1eefe17d125984262f6be47351ef4299848126583328c540bc432e2c8a
7
- data.tar.gz: 8c32403f117ed54c391c456b6125aa08949fab7ee6dd9f6de25a51028e829300010110135d7393709e2d0e206bbc9ad42827a37a6ba697ee3fdb831c3916719f
6
+ metadata.gz: b79607c06c28a80d1870c4d2d220e9ef4c2521c112f67b7e516f28c3211bb25c369ea606331cdb1e3c103d21777063582361f31253ca33a4b3448bf073b045fb
7
+ data.tar.gz: 821524e61a2db5a246e3edfefcf948f8040f6586001c790cf3e79551db7247b527d2169920b748131fae4df55e0fd4415b17e2eaaf644dd7faeb80ededdaa3cb
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rbfam (12.0.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.3)
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.0)
110
+ awesome_print (~> 1.2)
111
111
  bundler (~> 1.7)
112
- gem-release (~> 0.7, >= 0.7.3)
113
- rake (~> 10.0)
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
+ ```
@@ -11,21 +11,21 @@ module Rbfam
11
11
  end
12
12
 
13
13
  def bootstrap!
14
- load_rakefile
15
- Rake::Task["db:reset"].invoke
16
- true
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
- load_rakefile
21
- Rake::Task["db:seed"].invoke
22
- true
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
- load_rakefile
27
- Rake::Task["db:drop"].invoke
28
- true
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
@@ -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
- ("%s %s %s" % [accession, from, to]).gsub(/\W+/, "_")
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).upcase
51
+ Bio::Sequence::NA.new(string)
45
52
  end
46
53
  end
47
54
  end
@@ -1,3 +1,3 @@
1
1
  module Rbfam
2
- VERSION = "12.0.0"
2
+ VERSION = "12.0.1.0"
3
3
  end
@@ -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.0"
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", ">= 0.7.3"
26
- spec.add_development_dependency "rake", "~> 10.0"
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-02 00:00:00.000000000 Z
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.0
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.0
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.0'
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.0'
68
+ version: '10.4'
75
69
  - !ruby/object:Gem::Dependency
76
70
  name: activerecord
77
71
  requirement: !ruby/object:Gem::Requirement