vienna_rna 0.9.2 → 0.10.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.
- checksums.yaml +4 -4
- data/README.md +15 -0
- data/lib/vienna_rna.rb +3 -5
- data/lib/vienna_rna/global/chain_extensions.rb +29 -0
- data/lib/vienna_rna/global/rna.rb +3 -7
- data/lib/vienna_rna/global/rna_extensions.rb +1 -15
- data/lib/vienna_rna/global/run_extensions.rb +86 -0
- data/lib/vienna_rna/graphing/r.rb +4 -0
- data/lib/vienna_rna/package/base.rb +28 -86
- data/lib/vienna_rna/package/energy_grid_2d.rb +12 -0
- data/lib/vienna_rna/package/eval.rb +2 -0
- data/lib/vienna_rna/package/fftbor2d.rb +3 -6
- data/lib/vienna_rna/package/fold.rb +1 -11
- data/lib/vienna_rna/package/mfpt.rb +35 -0
- data/lib/vienna_rna/package/rna2dfold.rb +4 -4
- data/lib/vienna_rna/package/xbor.rb +4 -4
- metadata +6 -31
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 064267b829cc8e40a82c40eec4db4acb4f710fb8
|
4
|
+
data.tar.gz: 2e6ec0c50d34abe789ea52cb2a77c9e6ab248840
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9e0a39db0c7c85a01604f2bea3bff2ca5dd7119556d25c734883805f8d22fd2ea50511f4d446bdd91f3dff4947caf7f5e1a2abcba06c3e0f0d0c660a89a97174
|
7
|
+
data.tar.gz: cdc48b4f2457ed25eac73a3d8031662b5bad97de71c38980b3d9780dccef4e96120801f35cb9a183dc33a989eb2629156d6221ac123c1d3f201eca8487e80289
|
data/README.md
CHANGED
@@ -20,3 +20,18 @@ Simple use case:
|
|
20
20
|
#=> echo CCUCGAGGGGAACCCGAAAGGGACCCGAGAGG | rnafold --noPS
|
21
21
|
#=> Total runtime: 0.013 sec.
|
22
22
|
#=> #<ViennaRna::Rna CCUCGAGGGGAACCCGAAAG... ((((..(((...(((....) [truncated]>
|
23
|
+
|
24
|
+
... and now you can even do crazy stuff like this (taking a sequence, inferring the MFE, calculating the 2D energy landscape and computing the MFPT by chaining commands)!
|
25
|
+
|
26
|
+
RNA("GGGGGCCCCC", :empty, fold: { d: 0 }).run(:fftbor2d).chain(:mfpt).mfpt
|
27
|
+
#=> ViennaRna::Package::Fold: {"-noPS"=>:empty, :d=>0}
|
28
|
+
#=> echo 'GGGGGCCCCC' | RNAfold --noPS -d 0
|
29
|
+
#=> Total runtime: 0.014 sec.
|
30
|
+
#=> ViennaRna::Package::Fftbor2d: {:S=>:empty}
|
31
|
+
#=> Running FFTbor2D on #<ViennaRna::Global::Rna GGGGGCCCCC .......... (((....)))>
|
32
|
+
#=> FFTbor2D -S /var/folders/_2/0js_xvm95zz8jv0lxlh8p__40000gn/T/rna20131103-7845-1ok9xnt
|
33
|
+
#=> Total runtime: 0.041 sec.
|
34
|
+
#=> ViennaRna::Package::Mfpt: {:X=>:empty, :H=>:empty, :N=>10, :Q=>"1e-8"}
|
35
|
+
#=> RNAmfpt -X -H -N 10 -Q 1e-8 /var/folders/_2/0js_xvm95zz8jv0lxlh8p__40000gn/T/rna20131103-7845-1h1uz0l
|
36
|
+
#=> Total runtime: 0.012 sec.
|
37
|
+
#=> 2160.58769316
|
data/lib/vienna_rna.rb
CHANGED
@@ -1,31 +1,29 @@
|
|
1
1
|
require "benchmark"
|
2
2
|
require "set"
|
3
|
-
require "bio"
|
4
3
|
require "shuffle"
|
5
|
-
require "matrix"
|
6
4
|
require "rinruby"
|
7
|
-
require "rroc"
|
8
5
|
require "tempfile"
|
9
6
|
require "bigdecimal"
|
10
7
|
require "diverge"
|
11
8
|
require "active_support/inflector"
|
12
9
|
require "active_support/core_ext/class"
|
13
|
-
require "active_support/core_ext/module/aliasing"
|
14
10
|
|
15
11
|
require "vienna_rna/global/rna_extensions"
|
16
12
|
require "vienna_rna/global/rna"
|
17
13
|
require "vienna_rna/global/parser"
|
14
|
+
require "vienna_rna/global/run_extensions"
|
15
|
+
require "vienna_rna/global/chain_extensions"
|
18
16
|
require "vienna_rna/graphing/r"
|
19
17
|
require "vienna_rna/package/base"
|
20
18
|
|
21
19
|
begin; R.quit; rescue IOError; end
|
22
20
|
|
23
21
|
module ViennaRna
|
22
|
+
RT = 1e-3 * 1.9872041 * (273.15 + 37) # kcal / K / mol @ 37C
|
24
23
|
@debug = true
|
25
24
|
|
26
25
|
module Package
|
27
26
|
Dir[File.join(File.dirname(__FILE__), "vienna_rna", "package", "*.rb")].reject { |file| file =~ /\/base.rb/ }.each do |file|
|
28
|
-
# Doesn't support autoloading modules that are of the form: TwoWords
|
29
27
|
autoload(File.basename(file, ".rb").camelize.to_sym, "vienna_rna/package/#{File.basename(file, '.rb')}")
|
30
28
|
end
|
31
29
|
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module ViennaRna
|
2
|
+
module Global
|
3
|
+
module ChainExtensions
|
4
|
+
def self.included(base)
|
5
|
+
base.send(:include, InstanceMethods)
|
6
|
+
end
|
7
|
+
|
8
|
+
module InstanceMethods
|
9
|
+
def chain(package, flags = {})
|
10
|
+
class_chaining_to = ViennaRna::Package.lookup(package)
|
11
|
+
|
12
|
+
unless instance_variable_defined?(:@response)
|
13
|
+
raise ArgumentError.new("Can only chain a package that is not the first to be called")
|
14
|
+
end
|
15
|
+
|
16
|
+
unless class_chaining_to.instance_methods.include?(:transform_for_chaining)
|
17
|
+
raise ArgumentError.new("#{class_chaining_to.name} doesn't support chaining because it doesn't define transform_for_chaining")
|
18
|
+
end
|
19
|
+
|
20
|
+
unless [chains_from].flatten.any? { |chaining_from| kind_of?(chaining_from) }
|
21
|
+
raise ArgumentError.new("#{class_chaining_to.name} doesn't support chaining from #{self.class.name} because it isn't in the chains_from list")
|
22
|
+
end
|
23
|
+
|
24
|
+
class_chaining_to.new(self, chaining: true).run(flags)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -97,15 +97,11 @@ module ViennaRna
|
|
97
97
|
end
|
98
98
|
|
99
99
|
def temp_fa_file!
|
100
|
-
write_fa!(Tempfile.new("")).path
|
100
|
+
write_fa!(Tempfile.new("rna")).path
|
101
101
|
end
|
102
102
|
|
103
|
-
def run(
|
104
|
-
|
105
|
-
rna_module.run(self, options)
|
106
|
-
else
|
107
|
-
raise ArgumentError.new("#{module_name} can't be resolved as an executable")
|
108
|
-
end
|
103
|
+
def run(package_name, options = {})
|
104
|
+
ViennaRna::Package.lookup(package_name).run(self, options)
|
109
105
|
end
|
110
106
|
|
111
107
|
def inspect
|
@@ -89,21 +89,7 @@ module ViennaRna
|
|
89
89
|
|
90
90
|
((bp_set_1 - bp_set_2) + (bp_set_2 - bp_set_1)).count
|
91
91
|
end
|
92
|
-
|
93
|
-
def symmetric_bp_distance(structure_1, structure_2)
|
94
|
-
# Takes two structures and calculates the distance between them by: sum { ((x_j - x_i) - (y_j - y_i)).abs }
|
95
|
-
raise "The two structures are not the same length" unless structure_1.length == structure_2.length
|
96
|
-
|
97
|
-
bp_dist = ->(array, i) { array[i] == -1 ? 0 : array[i] - i }
|
98
|
-
|
99
|
-
structure_1_pairings = get_pairings(structure_1)
|
100
|
-
structure_2_pairings = get_pairings(structure_2)
|
101
|
-
|
102
|
-
structure_1.length.times.inject(0) do |distance, i|
|
103
|
-
distance + (bp_dist[structure_1_pairings, i] - bp_dist[structure_2_pairings, i]).abs
|
104
|
-
end
|
105
|
-
end
|
106
92
|
end
|
107
93
|
end
|
108
94
|
end
|
109
|
-
end
|
95
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
module ViennaRna
|
2
|
+
module Global
|
3
|
+
module RunExtensions
|
4
|
+
def self.included(base)
|
5
|
+
base.send(:include, InstanceMethods)
|
6
|
+
base.extend(ClassMethods)
|
7
|
+
end
|
8
|
+
|
9
|
+
module ClassMethods
|
10
|
+
def exec_exists?(name)
|
11
|
+
!%x[which RNA#{name.to_s.downcase}].empty?
|
12
|
+
end
|
13
|
+
|
14
|
+
def run(*data)
|
15
|
+
flags = data.length > 1 && data.last.is_a?(Hash) ? data.pop : {}
|
16
|
+
new(data).run(flags)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
module InstanceMethods
|
21
|
+
def run(flags = {})
|
22
|
+
unless @response
|
23
|
+
tap do
|
24
|
+
@runtime = Benchmark.measure do
|
25
|
+
pre_run_check
|
26
|
+
merged_flags = recursively_merge_flags(flags)
|
27
|
+
runnable_command = run_command(merged_flags)
|
28
|
+
|
29
|
+
ViennaRna.debugger { runnable_command }
|
30
|
+
|
31
|
+
@response = %x[#{runnable_command}]
|
32
|
+
post_process if respond_to?(:post_process)
|
33
|
+
end
|
34
|
+
|
35
|
+
ViennaRna.debugger { "Total runtime: %.3f sec." % runtime.real }
|
36
|
+
end
|
37
|
+
else
|
38
|
+
self
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def pre_run_check
|
43
|
+
if %x[which #{exec_name}].empty?
|
44
|
+
raise RuntimeError.new("#{exec_name} is not defined on this machine")
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def exec_name
|
49
|
+
executable_name.respond_to?(:call) ? executable_name[self] : executable_name
|
50
|
+
end
|
51
|
+
|
52
|
+
def recursively_merge_flags(flags)
|
53
|
+
rmerge = ->(old_hash, new_hash) do
|
54
|
+
inner_hash = {}
|
55
|
+
|
56
|
+
old_hash.merge(new_hash) do |key, old_value, new_value|
|
57
|
+
inner_hash[key] = [old_value, new_value].map(&:class).uniq == [Hash] ? rmerge[old_value, new_value] : new_value
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
rmerge[base_flags(flags), flags].tap do |merged_flags|
|
62
|
+
ViennaRna.debugger { "%s: %s" % [self.class.name, merged_flags.inspect] }
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def base_flags(flags)
|
67
|
+
default_flags.respond_to?(:call) ? default_flags[self, flags] : default_flags
|
68
|
+
end
|
69
|
+
|
70
|
+
def run_command(flags)
|
71
|
+
"echo %s | %s %s" % [
|
72
|
+
"'%s'" % call_with.map { |datum| data.send(datum) }.join(?\n),
|
73
|
+
exec_name,
|
74
|
+
stringify_flags(flags)
|
75
|
+
]
|
76
|
+
end
|
77
|
+
|
78
|
+
def stringify_flags(flags)
|
79
|
+
flags.inject("") do |string, (flag, value)|
|
80
|
+
(string + (value == :empty ? " -%s" % flag : " -%s %s" % [flag, value])).strip
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
@@ -77,6 +77,10 @@ module ViennaRna
|
|
77
77
|
overlay([{ data: data }], title: title, type: type, x_label: x_label, y_label: y_label, legend: false, filename: filename)
|
78
78
|
end
|
79
79
|
|
80
|
+
def scatterplot(data, title: nil, x_label: "Independent", y_label: "Dependent", filename: false)
|
81
|
+
line_graph(data, title: title, type: ?p, x_label: x_label, y_label: y_label, filename: filename)
|
82
|
+
end
|
83
|
+
|
80
84
|
def histogram(data, title: nil, x_label: "Bins", num_bins: false, bin_size: 1, x_arrow: false, relative: false, filename: false)
|
81
85
|
half = bin_size / 2.0
|
82
86
|
range = Range.new((data.min - half).floor, (data.max + half).ceil)
|
@@ -1,29 +1,26 @@
|
|
1
1
|
module ViennaRna
|
2
2
|
module Package
|
3
|
+
def self.lookup(package_name)
|
4
|
+
const_missing("#{package_name}".camelize) || raise(ArgumentError.new("#{package_name} can't be resolved as an executable"))
|
5
|
+
end
|
6
|
+
|
3
7
|
class Base
|
8
|
+
include ViennaRna::Global::RunExtensions
|
9
|
+
include ViennaRna::Global::ChainExtensions
|
10
|
+
|
4
11
|
class_attribute :executable_name
|
5
|
-
|
6
|
-
class << self
|
7
|
-
def method_added(name)
|
8
|
-
if name == :run
|
9
|
-
unless @chaining
|
10
|
-
@chaining = true
|
11
|
-
alias_method_chain :run, :hooks
|
12
|
-
else
|
13
|
-
remove_instance_variable(:@chaining)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
12
|
+
self.executable_name = ->(context) { "RNA#{context.class.name.split('::').last.underscore}" }
|
17
13
|
|
18
|
-
|
19
|
-
|
20
|
-
end
|
14
|
+
class_attribute :call_with
|
15
|
+
self.call_with = [:seq]
|
21
16
|
|
22
|
-
|
23
|
-
|
24
|
-
new(data).run(flags)
|
25
|
-
end
|
17
|
+
class_attribute :default_flags
|
18
|
+
self.default_flags = {}
|
26
19
|
|
20
|
+
class_attribute :chains_from
|
21
|
+
self.chains_from = Object
|
22
|
+
|
23
|
+
class << self
|
27
24
|
def bootstrap(data: nil, output: "")
|
28
25
|
new(data).tap do |object|
|
29
26
|
object.instance_variable_set(:@response, File.exist?(output) ? File.read(output).chomp : output)
|
@@ -33,78 +30,23 @@ module ViennaRna
|
|
33
30
|
|
34
31
|
attr_reader :data, :response, :runtime
|
35
32
|
|
36
|
-
def
|
37
|
-
|
38
|
-
|
39
|
-
else
|
40
|
-
"RNA#{self.class.name.split('::').last.underscore}"
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
def exec_sequence_format
|
45
|
-
if data.str
|
46
|
-
'"%s
|
47
|
-
%s"' % [data.seq, data.str]
|
48
|
-
else
|
49
|
-
data.seq
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
def initialize(data)
|
54
|
-
data = [data] unless data.is_a?(Array)
|
33
|
+
def initialize(data, chaining: false)
|
34
|
+
unless chaining
|
35
|
+
data = [data] unless data.is_a?(Array)
|
55
36
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
def run_with_hooks(flags = {})
|
67
|
-
unless @response
|
68
|
-
tap do
|
69
|
-
@runtime = Benchmark.measure do
|
70
|
-
pre_run_check unless respond_to?(:run_command)
|
71
|
-
@response = run_without_hooks(flags)
|
72
|
-
post_process if respond_to?(:post_process)
|
73
|
-
end
|
74
|
-
|
75
|
-
ViennaRna.debugger { "Total runtime: %.3f sec." % runtime.real }
|
37
|
+
@data = case data.map(&:class)
|
38
|
+
when [ViennaRna::Global::Rna] then data.first
|
39
|
+
when *(1..3).map { |i| [String] * i } then RNA.from_string(*data)
|
40
|
+
when [Hash] then RNA.from_hash(*data)
|
41
|
+
when [Array] then RNA.from_array(*data)
|
42
|
+
when [NilClass] then ViennaRna::Global::Rna.placeholder
|
43
|
+
else raise TypeError.new("Unsupported ViennaRna::Global::Rna#initialize format: #{data}")
|
76
44
|
end
|
77
45
|
else
|
78
|
-
|
46
|
+
@data = transform_for_chaining(data)
|
79
47
|
end
|
80
48
|
end
|
81
49
|
|
82
|
-
def pre_run_check
|
83
|
-
if %x[which #{exec_name}].empty?
|
84
|
-
raise RuntimeError.new("#{exec_name} is not defined on this machine")
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
|
-
def stringify_flags(flags)
|
89
|
-
base_flags = self.class.const_defined?(:BASE_FLAGS) ? self.class.const_get(:BASE_FLAGS) : {}
|
90
|
-
|
91
|
-
flags.merge(base_flags).inject("") do |string, (flag, value)|
|
92
|
-
(string + (value == :empty ? " -%s" % flag : " -%s %s" % [flag, value])).strip
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
def run(flags = {})
|
97
|
-
command = if respond_to?(:run_command)
|
98
|
-
method(:run_command).arity.zero? ? run_command : run_command(flags)
|
99
|
-
else
|
100
|
-
"echo #{exec_sequence_format} | #{exec_name} #{stringify_flags(flags)}"
|
101
|
-
end
|
102
|
-
|
103
|
-
ViennaRna.debugger { command }
|
104
|
-
|
105
|
-
%x[#{command}]
|
106
|
-
end
|
107
|
-
|
108
50
|
def serialize
|
109
51
|
YAML.dump(self)
|
110
52
|
end
|
@@ -114,4 +56,4 @@ module ViennaRna
|
|
114
56
|
end
|
115
57
|
end
|
116
58
|
end
|
117
|
-
end
|
59
|
+
end
|
@@ -27,6 +27,10 @@ module ViennaRna
|
|
27
27
|
def <=>(other_row)
|
28
28
|
i == other_row.i ? j <=> other_row.j : i <=> other_row.i
|
29
29
|
end
|
30
|
+
|
31
|
+
def to_csv(energy_term: :p)
|
32
|
+
"%d,%d,%.8f" % [i, j, instance_variable_get(:"@#{energy_term}")]
|
33
|
+
end
|
30
34
|
|
31
35
|
def inspect
|
32
36
|
"#<Row2d (%d, %d), p: %s, ensemble: %s>" % [i, j, p, ensemble]
|
@@ -60,6 +64,14 @@ module ViennaRna
|
|
60
64
|
num_colors: num_colors
|
61
65
|
)
|
62
66
|
end
|
67
|
+
|
68
|
+
def to_csv(energy_term: :p)
|
69
|
+
map { |row| row.to_csv(energy_term: energy_term) }.join(?\n) + ?\n
|
70
|
+
end
|
71
|
+
|
72
|
+
def to_csv!(filename, energy_term: :p)
|
73
|
+
File.open(filename, ?w) { |file| file.write(to_csv(energy_term: energy_term)) }
|
74
|
+
end
|
63
75
|
|
64
76
|
def inspect
|
65
77
|
"#<#{self.class.name} on #{data.inspect}>"
|
@@ -1,18 +1,15 @@
|
|
1
1
|
module ViennaRna
|
2
2
|
module Package
|
3
3
|
class Fftbor2d < EnergyGrid2d
|
4
|
-
BASE_FLAGS = {
|
5
|
-
S: :empty
|
6
|
-
}
|
7
|
-
|
8
4
|
self.executable_name = "FFTbor2D"
|
5
|
+
self.default_flags = ->(_, flags) { (flags.keys & %i|X M S|).empty? ? { S: :empty } : {} }
|
9
6
|
|
10
|
-
def run_command(flags
|
7
|
+
def run_command(flags)
|
11
8
|
ViennaRna.debugger { "Running #{exec_name} on #{data.inspect}" }
|
12
9
|
|
13
10
|
"%s %s %s" % [
|
14
11
|
exec_name,
|
15
|
-
stringify_flags(
|
12
|
+
stringify_flags(flags),
|
16
13
|
data.temp_fa_file!
|
17
14
|
]
|
18
15
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module ViennaRna
|
2
2
|
module Package
|
3
3
|
class Fold < Base
|
4
|
-
|
4
|
+
self.default_flags = {
|
5
5
|
"-noPS" => :empty
|
6
6
|
}
|
7
7
|
|
@@ -16,16 +16,6 @@ module ViennaRna
|
|
16
16
|
@mfe_rna, @structure, @mfe = RNA.from_string(data.seq, structure), structure, ViennaRna::Global::Parser.rnafold_mfe(@response)
|
17
17
|
end
|
18
18
|
end
|
19
|
-
|
20
|
-
module Batch
|
21
|
-
def with_different_structures
|
22
|
-
run.inject(Hash.new { |hash, key| hash[key] = [] }) do |hash, folded_sequence|
|
23
|
-
hash.tap do
|
24
|
-
hash[folded_sequence.structure] << folded_sequence
|
25
|
-
end
|
26
|
-
end.values.map(&:first)
|
27
|
-
end
|
28
|
-
end
|
29
19
|
end
|
30
20
|
end
|
31
21
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module ViennaRna
|
2
|
+
module Package
|
3
|
+
class Mfpt < Base
|
4
|
+
self.chains_from = ViennaRna::Package::EnergyGrid2d
|
5
|
+
self.default_flags = ->(context, flags) { { X: :empty, H: :empty, N: context.data.seq.length, Q: "1e-8" } }
|
6
|
+
# These flags aren't well setup for alternative options at the moment.
|
7
|
+
|
8
|
+
attr_reader :mfpt
|
9
|
+
|
10
|
+
def transform_for_chaining(previous_package)
|
11
|
+
previous_package.data.tap do |data|
|
12
|
+
data.instance_eval do
|
13
|
+
@energy_grid_csv = Tempfile.new("rna").path.tap do |energy_grid_csv|
|
14
|
+
previous_package.to_csv!(energy_grid_csv)
|
15
|
+
end
|
16
|
+
|
17
|
+
def energy_grid_csv; @energy_grid_csv; end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def run_command(flags)
|
23
|
+
"%s %s %s" % [
|
24
|
+
exec_name,
|
25
|
+
stringify_flags(flags),
|
26
|
+
data.energy_grid_csv
|
27
|
+
]
|
28
|
+
end
|
29
|
+
|
30
|
+
def post_process
|
31
|
+
@mfpt = @response.to_f
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module ViennaRna
|
2
2
|
module Package
|
3
3
|
class Rna2dfold < EnergyGrid2d
|
4
|
-
|
4
|
+
self.default_flags = {
|
5
5
|
d: 0,
|
6
6
|
p: :empty,
|
7
7
|
"-noBT" => :empty
|
@@ -9,13 +9,13 @@ module ViennaRna
|
|
9
9
|
|
10
10
|
self.executable_name = "RNA2Dfold"
|
11
11
|
|
12
|
-
def run_command(flags
|
12
|
+
def run_command(flags)
|
13
13
|
ViennaRna.debugger { "Running RNA2Dfold on #{data.inspect}" }
|
14
14
|
|
15
|
-
"cat %s
|
15
|
+
"cat %s | %s %s" % [
|
16
16
|
data.temp_fa_file!,
|
17
17
|
exec_name,
|
18
|
-
stringify_flags(
|
18
|
+
stringify_flags(flags)
|
19
19
|
]
|
20
20
|
end
|
21
21
|
|
@@ -1,13 +1,13 @@
|
|
1
1
|
module ViennaRna
|
2
2
|
module Package
|
3
3
|
class Xbor < Base
|
4
|
-
|
4
|
+
self.default_flags = {
|
5
5
|
E: "/usr/local/bin/energy.par"
|
6
6
|
}
|
7
7
|
|
8
|
-
self.executable_name = -> { name.demodulize.gsub(/^([A-Z].*)bor$/) { |match| $1.upcase + "bor" } }
|
8
|
+
self.executable_name = ->(context) { context.class.name.demodulize.gsub(/^([A-Z].*)bor$/) { |match| $1.upcase + "bor" } }
|
9
9
|
|
10
|
-
def run_command(flags
|
10
|
+
def run_command(flags)
|
11
11
|
file = Tempfile.new("rna")
|
12
12
|
file.write("%s\n" % data.seq)
|
13
13
|
file.write("%s\n" % data.str)
|
@@ -17,7 +17,7 @@ module ViennaRna
|
|
17
17
|
|
18
18
|
"%s %s %s" % [
|
19
19
|
exec_name,
|
20
|
-
stringify_flags(
|
20
|
+
stringify_flags(flags),
|
21
21
|
file.path
|
22
22
|
]
|
23
23
|
end
|
metadata
CHANGED
@@ -1,29 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vienna_rna
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.10.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: 2013-
|
11
|
+
date: 2013-11-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: bio
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: 1.4.2
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ">="
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: 1.4.2
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: activesupport
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,20 +52,6 @@ dependencies:
|
|
66
52
|
- - ">="
|
67
53
|
- !ruby/object:Gem::Version
|
68
54
|
version: 2.0.3
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: rroc
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - ">="
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: 0.1.1
|
76
|
-
type: :runtime
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - ">="
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: 0.1.1
|
83
55
|
description: A Ruby 2.0 API for interacting with command line tools involving RNA
|
84
56
|
molecules through a standard interface.
|
85
57
|
email: evansenter@gmail.com
|
@@ -87,9 +59,11 @@ executables: []
|
|
87
59
|
extensions: []
|
88
60
|
extra_rdoc_files: []
|
89
61
|
files:
|
62
|
+
- lib/vienna_rna/global/chain_extensions.rb
|
90
63
|
- lib/vienna_rna/global/parser.rb
|
91
64
|
- lib/vienna_rna/global/rna.rb
|
92
65
|
- lib/vienna_rna/global/rna_extensions.rb
|
66
|
+
- lib/vienna_rna/global/run_extensions.rb
|
93
67
|
- lib/vienna_rna/graphing/r.rb
|
94
68
|
- lib/vienna_rna/package/base.rb
|
95
69
|
- lib/vienna_rna/package/energy_grid_2d.rb
|
@@ -98,6 +72,7 @@ files:
|
|
98
72
|
- lib/vienna_rna/package/fftbor2d.rb
|
99
73
|
- lib/vienna_rna/package/fold.rb
|
100
74
|
- lib/vienna_rna/package/heat.rb
|
75
|
+
- lib/vienna_rna/package/mfpt.rb
|
101
76
|
- lib/vienna_rna/package/rna2dfold.rb
|
102
77
|
- lib/vienna_rna/package/rnabor.rb
|
103
78
|
- lib/vienna_rna/package/subopt.rb
|
@@ -123,7 +98,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
123
98
|
version: '0'
|
124
99
|
requirements: []
|
125
100
|
rubyforge_project:
|
126
|
-
rubygems_version: 2.1.
|
101
|
+
rubygems_version: 2.1.9
|
127
102
|
signing_key:
|
128
103
|
specification_version: 4
|
129
104
|
summary: Bindings to the Vienna RNA package, and other major command line utilities
|