vienna_rna 0.0.0
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/lib/modules/base.rb +51 -0
- data/lib/modules/batch.rb +1 -0
- data/lib/modules/fold.rb +7 -0
- data/lib/modules/utils.rb +12 -0
- data/lib/vienna_rna.rb +19 -0
- metadata +76 -0
data/lib/modules/base.rb
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
module ViennaRna
|
2
|
+
class Base
|
3
|
+
class_inheritable_accessor :exec_name
|
4
|
+
|
5
|
+
class << self
|
6
|
+
def method_added(name)
|
7
|
+
if name == :run
|
8
|
+
unless @chaining
|
9
|
+
@chaining = true
|
10
|
+
alias_method_chain :run, :hooks
|
11
|
+
else
|
12
|
+
remove_instance_variable(:@chaining)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def exec_exists?(name)
|
18
|
+
!%x[which rna#{name.to_s.downcase}].empty?
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
attr_reader :fasta
|
23
|
+
|
24
|
+
def exec_name
|
25
|
+
@exec_name || "rna#{self.class.name.split('::').last.underscore}"
|
26
|
+
end
|
27
|
+
|
28
|
+
def initialize(fasta)
|
29
|
+
@fasta = fasta
|
30
|
+
end
|
31
|
+
|
32
|
+
def run_with_hooks(flags = {})
|
33
|
+
pre_run_check
|
34
|
+
run_without_hooks
|
35
|
+
end
|
36
|
+
|
37
|
+
def pre_run_check
|
38
|
+
if self.class.exec_exists?(exec_name)
|
39
|
+
raise RuntimeError.new("#{exec_name} is not defined on this machine")
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def stringify_flags(flags)
|
44
|
+
flags.inject("") { |string, flag| (string + (" %s %s" % flag)).strip }
|
45
|
+
end
|
46
|
+
|
47
|
+
def run(flags = {})
|
48
|
+
%x[echo #{fasta.seq} | #{exec_name} #{stringify_flags(flags)}]
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
# This should be a meta-overlord class that runs the same command on a collection of subclasses of base.rb
|
data/lib/modules/fold.rb
ADDED
data/lib/vienna_rna.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
require "bio"
|
2
|
+
require "active_support/inflector"
|
3
|
+
require "active_support/core_ext/class"
|
4
|
+
require "active_support/core_ext/module"
|
5
|
+
|
6
|
+
# Clean up this include order.
|
7
|
+
Dir[File.join(File.dirname(__FILE__), "/modules/*")].each do |file|
|
8
|
+
require file
|
9
|
+
end
|
10
|
+
|
11
|
+
module ViennaRna
|
12
|
+
def self.const_missing(name)
|
13
|
+
if Base.exec_exists?(name)
|
14
|
+
module_eval do
|
15
|
+
const_set(name, Class.new(Base))
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
metadata
ADDED
@@ -0,0 +1,76 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: vienna_rna
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Evan Senter
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-03-26 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: bio
|
16
|
+
requirement: &70112760171500 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70112760171500
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: active_support
|
27
|
+
requirement: &70112760171060 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70112760171060
|
36
|
+
description: A Ruby API for interacting with the Vienna RNA package.
|
37
|
+
email: evansenter@gmail.com
|
38
|
+
executables: []
|
39
|
+
extensions: []
|
40
|
+
extra_rdoc_files: []
|
41
|
+
files:
|
42
|
+
- !binary |-
|
43
|
+
Li9saWIvbW9kdWxlcy9iYXNlLnJi
|
44
|
+
- !binary |-
|
45
|
+
Li9saWIvbW9kdWxlcy9iYXRjaC5yYg==
|
46
|
+
- !binary |-
|
47
|
+
Li9saWIvbW9kdWxlcy9mb2xkLnJi
|
48
|
+
- !binary |-
|
49
|
+
Li9saWIvbW9kdWxlcy91dGlscy5yYg==
|
50
|
+
- !binary |-
|
51
|
+
Li9saWIvdmllbm5hX3JuYS5yYg==
|
52
|
+
homepage: http://rubygems.org/gems/vienna_rna
|
53
|
+
licenses: []
|
54
|
+
post_install_message:
|
55
|
+
rdoc_options: []
|
56
|
+
require_paths:
|
57
|
+
- lib
|
58
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
59
|
+
none: false
|
60
|
+
requirements:
|
61
|
+
- - ! '>='
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: '0'
|
64
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
requirements: []
|
71
|
+
rubyforge_project:
|
72
|
+
rubygems_version: 1.8.11
|
73
|
+
signing_key:
|
74
|
+
specification_version: 3
|
75
|
+
summary: Bindings to the Vienna RNA package.
|
76
|
+
test_files: []
|