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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 75269157e25be08827f08546fffdb90af43be397
4
- data.tar.gz: a8b2094c492af287894e3219e3328233ecf31340
3
+ metadata.gz: 064267b829cc8e40a82c40eec4db4acb4f710fb8
4
+ data.tar.gz: 2e6ec0c50d34abe789ea52cb2a77c9e6ab248840
5
5
  SHA512:
6
- metadata.gz: 26a7068d00b8181041fc0ea12d38a25b65724ff3eb0dd2e910821bbea27c4bfa7317835956242881cac3e1cc64442e6cfc3a23e3135d5e16f2382c0648dbaa7a
7
- data.tar.gz: bd6799d8ca85f2ddf712fac00e97eb17700b01218e2a99579a0aba94ee2d0fd7a899bff56a473b8b719f7eec8112ab110dd02372a43f5326b19d107aac4ea829
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
@@ -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(module_name, options = {})
104
- if rna_module = ViennaRna::Package.const_missing("#{module_name}".camelize)
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
- def exec_exists?(name)
19
- !%x[which RNA#{name.to_s.downcase}].empty?
20
- end
14
+ class_attribute :call_with
15
+ self.call_with = [:seq]
21
16
 
22
- def run(*data)
23
- flags = data.length > 1 && data.last.is_a?(Hash) ? data.pop : {}
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 exec_name
37
- if executable_name
38
- executable_name.respond_to?(:call) ? self.class.module_exec(&executable_name) : executable_name
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
- @data = case data.map(&:class)
57
- when [ViennaRna::Global::Rna] then data.first
58
- when *(1..3).map { |i| [String] * i } then RNA.from_string(*data)
59
- when [Hash] then RNA.from_hash(*data)
60
- when [Array] then RNA.from_array(*data)
61
- when [NilClass] then ViennaRna::Global::Rna.placeholder
62
- else raise TypeError.new("Unsupported ViennaRna::Global::Rna#initialize format: #{data}")
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
- self
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,6 +1,8 @@
1
1
  module ViennaRna
2
2
  module Package
3
3
  class Eval < Base
4
+ self.call_with = [:seq, :str]
5
+
4
6
  attr_reader :mfe
5
7
 
6
8
  def post_process
@@ -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(BASE_FLAGS.merge(self.class.const_defined?(:FLAGS) ? self.class.const_get(:FLAGS) : {}).merge(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
- BASE_FLAGS = {
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
- BASE_FLAGS = {
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 | %s %s" % [
15
+ "cat %s | %s %s" % [
16
16
  data.temp_fa_file!,
17
17
  exec_name,
18
- stringify_flags(BASE_FLAGS.merge(self.class.const_defined?(:FLAGS) ? self.class.const_get(:FLAGS) : {}).merge(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
- BASE_FLAGS = {
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(BASE_FLAGS.merge(self.class.const_defined?(:FLAGS) ? self.class.const_get(:FLAGS) : {}).merge(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.9.2
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-10-07 00:00:00.000000000 Z
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.4
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