vienna_rna 0.11.0 → 0.13.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: 8bc9776db2ef5845bd44177de91c170f00941ce8
4
- data.tar.gz: 99c917ee065b84b812f0e32358475f08c5e22880
3
+ metadata.gz: 099ebe746d12378a62249b9a704ad6774f81e517
4
+ data.tar.gz: bb38709cf960d5502eaecc608dc848acfdd10abf
5
5
  SHA512:
6
- metadata.gz: 8bcb4350ac15e7bd7c583adf2bcc81178856a4aa246124359f5fdf74dd6a3603dc182ec66a30f7be351da89363212cf99574f9b512e955c178532da1d2b16c6b
7
- data.tar.gz: 8f6b4f63ca2d9f8c41bdc212f35b7be261cfb058631462040fb73cc10fe78d752f122dad28b603c87e256d83509d05a9fc7d0c0787f17502cdf1cb7feb87925f
6
+ metadata.gz: ae8e3aa5cc99791d32f736a3bc20ef38a0e8a71aa79c96748bd1ceab68a8921e0d3df2519c65c3fd8028e4a3f4866aa001ee7f3a24de3046ac77440e8e8d4945
7
+ data.tar.gz: 5c35acf8d8ab2d1563c61c7ded6b1dfc155dce50d3e63818a01cebd4abe05eb8b7d3d10432f0ae3edf13d2bce04ebbe097ef2e57f862b2b2970b8ea4780628cd
@@ -2,7 +2,8 @@ module ViennaRna
2
2
  module Global
3
3
  module Parser
4
4
  REGEXP = {
5
- mfe: / \(\s*(-?\d*\.\d*)\)$/
5
+ number: /-?\d*\.\d*/,
6
+ mfe: / \(\s*(-?\d*\.\d*)\)$/
6
7
  }
7
8
 
8
9
  class << self
@@ -13,6 +14,10 @@ module ViennaRna
13
14
  def rnafold_mfe(response)
14
15
  response.split(/\n/)[1].match(REGEXP[:mfe])[1].to_f
15
16
  end
17
+
18
+ def rnafold_ensemble_energy(response)
19
+ response.split(/\n/)[2].split(/\s/).last.match(REGEXP[:number])[0].to_f
20
+ end
16
21
  end
17
22
  end
18
23
  end
@@ -4,14 +4,15 @@ module ViennaRna
4
4
  include RnaExtensions
5
5
 
6
6
  attr_accessor :comment
7
- attr_reader :sequence, :structure, :second_structure, :raw_data
7
+ attr_reader :sequence, :structure, :second_structure
8
8
 
9
9
  class << self
10
- def init_from_string(sequence, structure = nil, second_structure = nil)
10
+ def init_from_string(sequence, structure = nil, second_structure = nil, comment = nil)
11
11
  new(
12
12
  sequence: sequence,
13
13
  structure: structure,
14
- second_structure: second_structure
14
+ second_structure: second_structure,
15
+ comment: comment
15
16
  )
16
17
  end
17
18
 
@@ -20,8 +21,7 @@ module ViennaRna
20
21
  sequence: hash[:sequence] || hash[:seq],
21
22
  structure: hash[:structure] || hash[:str_1] || hash[:str],
22
23
  second_structure: hash[:second_structure] || hash[:str_2],
23
- comment: hash[:comment] || hash[:name],
24
- raw_data: hash
24
+ comment: hash[:comment] || hash[:name]
25
25
  )
26
26
  end
27
27
 
@@ -50,16 +50,15 @@ module ViennaRna
50
50
  sequence: rna.sequence,
51
51
  strucutre: rna.structure,
52
52
  second_strucutre: rna.second_structure,
53
- comment: rna.comment,
54
- raw_data: rna.raw_data
53
+ comment: rna.comment
55
54
  )
56
55
  end
57
56
 
58
57
  alias_method :placeholder, :new
59
58
  end
60
59
 
61
- def initialize(sequence: "", structure: "", second_structure: "", comment: "", raw_data: {})
62
- @sequence, @comment, @raw_data = sequence.kind_of?(Rna) ? sequence.seq : sequence, comment, raw_data
60
+ def initialize(sequence: "", structure: "", second_structure: "", comment: "")
61
+ @sequence, @comment = sequence.kind_of?(Rna) ? sequence.seq : sequence, comment
63
62
 
64
63
  [:structure, :second_structure].each do |structure_symbol|
65
64
  instance_variable_set(
@@ -96,8 +95,20 @@ module ViennaRna
96
95
  def empty_structure
97
96
  "." * seq.length
98
97
  end
99
-
98
+
100
99
  alias :empty_str :empty_structure
100
+
101
+ def one_structure(structure_1)
102
+ self.class.init_from_string(seq, structure_1.is_a?(Symbol) ? send(structure_1) : structure_1, nil, name)
103
+ end
104
+
105
+ def two_structures(structure_1, structure_2)
106
+ self.class.init_from_string(
107
+ seq,
108
+ *[structure_1, structure_2].map { |argument| argument.is_a?(Symbol) ? send(argument) : argument },
109
+ name
110
+ )
111
+ end
101
112
 
102
113
  def write_fa!(filename)
103
114
  filename.tap do |filename|
@@ -117,6 +128,12 @@ module ViennaRna
117
128
  def run(package_name, options = {})
118
129
  ViennaRna::Package.lookup(package_name).run(self, options)
119
130
  end
131
+
132
+ def method_missing(name, *args, &block)
133
+ if (name_str = "#{name}") =~ /^run_\w+$/
134
+ run(name_str.gsub(/^run_/, ""), *args)
135
+ else super end
136
+ end
120
137
 
121
138
  def inspect
122
139
  "#<RNA: %s>" % [
@@ -43,6 +43,10 @@ module ViennaRna
43
43
  def gc_content
44
44
  seq.split(//).select { |i| i =~ /[GC]/i }.size.to_f / seq.size
45
45
  end
46
+
47
+ def boltzmann_probability(dangle: 2)
48
+ Math.exp(-run(:eval, d: dangle).mfe / ViennaRna::RT) / Math.exp(-run(:fold, d: dangle, p: 0).ensemble_energy / ViennaRna::RT)
49
+ end
46
50
  end
47
51
 
48
52
  module OneStructureBasedMethods
@@ -19,7 +19,7 @@ module ViennaRna
19
19
 
20
20
  module InstanceMethods
21
21
  def run(flags = {})
22
- unless @response
22
+ unless response
23
23
  tap do
24
24
  @runtime = Benchmark.measure do
25
25
  pre_run_check
@@ -77,7 +77,9 @@ module ViennaRna
77
77
 
78
78
  def stringify_flags(flags)
79
79
  flags.inject("") do |string, (flag, value)|
80
- (string + (value == :empty ? " -%s" % flag : " -%s %s" % [flag, value])).strip
80
+ (string + (value == :empty || value.class == TrueClass ? " -%s" % flag : " -%s %s" % [flag, value])).strip
81
+ end.tap do
82
+ @flags = flags
81
83
  end
82
84
  end
83
85
  end
@@ -47,9 +47,9 @@ module ViennaRna
47
47
 
48
48
  r.eval <<-STR
49
49
  title(
50
- xlab = "#{x_label}",
51
- ylab = "#{y_label}",
52
- main = "#{title || 'Line Graph'}",
50
+ xlab = #{expressionify(x_label)},
51
+ ylab = #{expressionify(y_label)},
52
+ main = #{expressionify(title || "Line Graph")},
53
53
  cex.main = .9,
54
54
  cex.lab = .9
55
55
  )
@@ -60,11 +60,12 @@ module ViennaRna
60
60
  legend(
61
61
  "#{legend}",
62
62
  legend.titles,
63
- bty = "n",
63
+ bty = "o",
64
+ bg = rgb(1, 1, 1, .5, 1),
64
65
  col = line.colors,
65
66
  lty = rep(1, #{data.size}),
66
67
  pch = 0:#{data.size},
67
- cex = .9
68
+ cex = .6
68
69
  )
69
70
  STR
70
71
  end
@@ -78,7 +79,7 @@ module ViennaRna
78
79
  end
79
80
 
80
81
  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
+ line_graph(data, title: title || "Scatterplot", type: ?p, x_label: x_label, y_label: y_label, filename: filename)
82
83
  end
83
84
 
84
85
  def roc(data, title: nil, baseline: true, filename: false)
@@ -139,8 +140,8 @@ module ViennaRna
139
140
  hist(
140
141
  histogram.data,
141
142
  breaks = histogram.breaks,
142
- xlab = "#{x_label}",
143
- main = "#{title || 'Histogram'}",
143
+ xlab = #{expressionify(x_label)},
144
+ main = #{expressionify(title || "Histogram")},
144
145
  freq = #{relative ? 'F' : 'T'},
145
146
  cex.main = 0.9,
146
147
  cex.lab = 0.9,
@@ -191,7 +192,7 @@ module ViennaRna
191
192
  xlab = "#{x_label} (1-indexed)",
192
193
  ylab = "#{y_label} (1-indexed)"
193
194
  )
194
- title("#{title || 'Matrix Heatmap'}")
195
+ title(#{expressionify(title || "Matrix Heatmap")})
195
196
  STR
196
197
  end
197
198
  else
@@ -218,6 +219,10 @@ module ViennaRna
218
219
  def writing_file?(filename)
219
220
  filename && (filename = filename.end_with?(".pdf") ? filename : filename + ".pdf")
220
221
  end
222
+
223
+ def expressionify(string)
224
+ %w|expression paste|.any?(&string.method(:start_with?)) ? string : string.inspect
225
+ end
221
226
  end
222
227
  end
223
228
  end
@@ -24,11 +24,12 @@ module ViennaRna
24
24
  def bootstrap(data: nil, output: "")
25
25
  new(data).tap do |object|
26
26
  object.instance_variable_set(:@response, File.exist?(output) ? File.read(output).chomp : output)
27
+ object.post_process if object.respond_to?(:post_process)
27
28
  end
28
29
  end
29
30
  end
30
31
 
31
- attr_reader :data, :response, :runtime
32
+ attr_reader :data, :flags, :response, :runtime
32
33
 
33
34
  def initialize(data, chaining: false)
34
35
  unless chaining
@@ -54,6 +55,16 @@ module ViennaRna
54
55
  def debugger(&block)
55
56
  self.class.debugger(&block)
56
57
  end
58
+
59
+ def inspect
60
+ "#<%s (%.2f sec): data: %s, flags: %s, vars: %s>" % [
61
+ self.class.name,
62
+ runtime.real,
63
+ data,
64
+ flags,
65
+ (instance_variables - %i|@data @flags @response @runtime|).map(&:to_s).sort.join(", ")
66
+ ]
67
+ end
57
68
  end
58
69
  end
59
70
  end
@@ -6,7 +6,7 @@ module ViennaRna
6
6
  attr_reader :mfe
7
7
 
8
8
  def post_process
9
- @mfe = ViennaRna::Global::Parser.rnafold_mfe(@response)
9
+ @mfe = ViennaRna::Global::Parser.rnafold_mfe(response)
10
10
  end
11
11
  end
12
12
  end
@@ -0,0 +1,24 @@
1
+ # Maybe add something like flagsets so that common option groups can be combined together.
2
+ # Also, add a rerun feature.
3
+
4
+ module ViennaRna
5
+ module Package
6
+ class FftMfpt < Base
7
+ self.executable_name = "FFTmfpt"
8
+
9
+ attr_reader :mfpt
10
+
11
+ def run_command(flags)
12
+ "%s %s %s" % [
13
+ exec_name,
14
+ stringify_flags(flags),
15
+ data.temp_fa_file!
16
+ ]
17
+ end
18
+
19
+ def post_process
20
+ @mfpt = response.to_f
21
+ end
22
+ end
23
+ end
24
+ end
@@ -2,7 +2,24 @@ module ViennaRna
2
2
  module Package
3
3
  class Fftbor2d < EnergyGrid2d
4
4
  self.executable_name = "FFTbor2D"
5
- self.default_flags = ->(_, flags) { (flags.keys & %i|X M S|).empty? ? { S: :empty } : {} }
5
+ self.default_flags = ->(_, flags) { (flags.keys & %i|X Y M S|).empty? ? { S: :empty } : {} }
6
+
7
+ attr_reader :population_proportion_str_2_from_str_1, :population_proportion_for_str_1
8
+
9
+ class Population
10
+ attr_reader :proportion_over_time
11
+
12
+ def initialize(time, proportion)
13
+ @proportion_over_time = time.zip(proportion)
14
+ end
15
+
16
+ def time_range(from, to)
17
+ proportion_over_time.select { |time, _| ((from.to_f)..(to.to_f)) === time }
18
+ end
19
+
20
+ def time_points; proportion_over_time.map(&:first); end
21
+ def proportion_points; proportion_over_time.map(&:last); end
22
+ end
6
23
 
7
24
  def run_command(flags)
8
25
  ViennaRna.debugger { "Running #{exec_name} on #{data.inspect}" }
@@ -13,6 +30,14 @@ module ViennaRna
13
30
  data.temp_fa_file!
14
31
  ]
15
32
  end
33
+
34
+ def post_process
35
+ if flags.keys.include?(:Y)
36
+ time_points, proportion_str_2_from_str_1, proportion_for_str_1 = response.split(/\n/).map { |line| line.split(/\t/).map(&:to_f) }.transpose
37
+ @population_proportion_str_2_from_str_1 = Population.new(time_points, proportion_str_2_from_str_1)
38
+ @population_proportion_for_str_1 = Population.new(time_points, proportion_for_str_1)
39
+ end
40
+ end
16
41
 
17
42
  def distribution
18
43
  response.split(/\n/).map { |line| line.split(/\t/) }
@@ -5,15 +5,19 @@ module ViennaRna
5
5
  "-noPS" => :empty
6
6
  }
7
7
 
8
- attr_reader :mfe_rna, :structure, :mfe
8
+ attr_reader :mfe_rna, :structure, :mfe, :ensemble_energy
9
9
 
10
10
  def post_process
11
- structure = ViennaRna::Global::Parser.rnafold_mfe_structure(@response)
11
+ structure = ViennaRna::Global::Parser.rnafold_mfe_structure(response)
12
12
 
13
13
  unless data.seq.length == structure.length
14
14
  raise "Sequence: '#{data.seq}'\nStructure: '#{structure}'"
15
15
  else
16
- @mfe_rna, @structure, @mfe = RNA.from_string(data.seq, structure), structure, ViennaRna::Global::Parser.rnafold_mfe(@response)
16
+ @mfe_rna, @structure, @mfe = RNA.from_string(data.seq, structure), structure, ViennaRna::Global::Parser.rnafold_mfe(response)
17
+ end
18
+
19
+ if flags[:p] == 0
20
+ @ensemble_energy = ViennaRna::Global::Parser.rnafold_ensemble_energy(response)
17
21
  end
18
22
  end
19
23
  end
@@ -4,7 +4,7 @@ module ViennaRna
4
4
  attr_reader :specific_heats
5
5
 
6
6
  def post_process
7
- @specific_heats = @response.split(/\n/).map { |line| line.split(/\s+/).map(&:to_f) }.inject({}) do |hash, (temp, specific_heat)|
7
+ @specific_heats = response.split(/\n/).map { |line| line.split(/\s+/).map(&:to_f) }.inject({}) do |hash, (temp, specific_heat)|
8
8
  hash.tap do
9
9
  hash[temp] = specific_heat
10
10
  end
@@ -0,0 +1,24 @@
1
+ module ViennaRna
2
+ module Package
3
+ class Kinwalker < Base
4
+ self.executable_name = "kinwalker"
5
+ attr_reader :nodes
6
+
7
+ def post_process
8
+ @nodes = response.split("TRAJECTORY").last.split(?\n).reject(&:empty?)[0..-2].map { |line| Node.new(*line.split(/\s+/)) }
9
+ end
10
+
11
+ def mfpt
12
+ nodes.last.time
13
+ end
14
+
15
+ class Node
16
+ attr_reader :structure, :energy, :time, :barrier, :energy_barrier, :transcribed
17
+
18
+ def initialize(structure, energy, time, barrier, energy_barrier, transcribed)
19
+ @structure, @energy, @time, @barrier, @energy_barrier, @transcribed = structure, energy.to_f, time.to_f, barrier.to_f, energy_barrier.to_f, transcribed.to_i
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -1,4 +1,5 @@
1
1
  # Maybe add something like flagsets so that common option groups can be combined together.
2
+ # Also, add a rerun feature.
2
3
 
3
4
  module ViennaRna
4
5
  module Package
@@ -32,8 +33,8 @@ module ViennaRna
32
33
  end
33
34
 
34
35
  def post_process
35
- @mfpt = @response.to_f
36
+ @mfpt = response.to_f
36
37
  end
37
38
  end
38
39
  end
39
- end
40
+ end
@@ -3,8 +3,8 @@ module ViennaRna
3
3
  class Rna2dfold < EnergyGrid2d
4
4
  self.default_flags = {
5
5
  d: 0,
6
- p: :empty,
7
- "-noBT" => :empty
6
+ p: true,
7
+ "-noBT" => true
8
8
  }
9
9
 
10
10
  self.executable_name = "RNA2Dfold"
@@ -0,0 +1,24 @@
1
+ module ViennaRna
2
+ module Package
3
+ class Spectral < Base
4
+ self.default_flags = ->(context, flags) { { seq: context.data.seq, step_size: "1e-2" } }
5
+
6
+ attr_reader :eigenvalues, :time_kinetics
7
+
8
+ def run_command(flags)
9
+ "%s %s" % [
10
+ exec_name,
11
+ stringify_flags(flags)
12
+ ]
13
+ end
14
+
15
+ def post_process
16
+ if flags.keys.include?(:eigen_only)
17
+ @eigenvalues = response.split(?\n).map(&:to_f).sort_by(&:abs)
18
+ else
19
+ @time_kinetics = response.split(?\n).map { |line| line.split(?\t).map(&:to_f) }
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -4,7 +4,7 @@ module ViennaRna
4
4
  attr_reader :structures
5
5
 
6
6
  def post_process
7
- @structures = @response.split(/\n/)[1..-1].map { |output| RNA.from_string(data.seq, output.split(/\s+/).first) }
7
+ @structures = response.split(/\n/)[1..-1].map { |output| RNA.from_string(data.seq, output.split(/\s+/).first) }
8
8
  end
9
9
 
10
10
  def bin(count = 1)
@@ -21,7 +21,7 @@ module ViennaRna
21
21
  end
22
22
 
23
23
  def post_process
24
- @paths = @response.split(data.str_1 + ?\n).reject(&:empty?).map { |path_string| Path.new(data, path_string) }
24
+ @paths = response.split(data.str_1 + ?\n).reject(&:empty?).map { |path_string| Path.new(data, path_string) }
25
25
  end
26
26
 
27
27
  class Path
@@ -40,6 +40,10 @@ module ViennaRna
40
40
  def full_path?
41
41
  rna.str_1 == path.first && rna.str_2 == path.last
42
42
  end
43
+
44
+ def inspect
45
+ "#<#{self.class.name} with barrier %.2f and length %d on #{rna.inspect}>" % [barrier, best_weight]
46
+ end
43
47
  end
44
48
  end
45
49
  end
@@ -2,7 +2,7 @@ module ViennaRna
2
2
  module Package
3
3
  class Xbor < Base
4
4
  self.default_flags = {
5
- E: "/usr/local/bin/energy.par"
5
+ E: "/usr/local/bin/rna_turner2004.par"
6
6
  }
7
7
 
8
8
  self.executable_name = ->(context) { context.class.name.demodulize.gsub(/^([A-Z].*)bor$/) { |match| $1.upcase + "bor" } }
@@ -22,14 +22,6 @@ module ViennaRna
22
22
  ]
23
23
  end
24
24
 
25
- def self.bootstrap_from_file(path, klass = self)
26
- log = File.read(path)
27
- sequence = log.split(/\n/).first.split(/\s+/)[1]
28
- structure = log.split(/\n/).first.split(/\s+/)[2]
29
-
30
- klass.bootstrap(data: RNA.from_string(sequence, structure), output: log)
31
- end
32
-
33
25
  def self.parse(response)
34
26
  response.split(/\n/).select { |line| line =~ /^\d+\t-?\d+/ }.map { |line| line.split(/\t/) }
35
27
  end
@@ -46,12 +38,20 @@ module ViennaRna
46
38
  def expected_k
47
39
  k_p_points.map { |array| array.inject(&:*) }.inject(&:+)
48
40
  end
41
+
42
+ def to_csv
43
+ k_p_points.map { |k, p| "%d,%.8f" % [k, p] }.join(?\n) + ?\n
44
+ end
45
+
46
+ def to_csv!(filename)
47
+ File.open(filename, ?w) { |file| file.write(to_csv) }
48
+ end
49
49
 
50
- def quick_plot(options = {})
51
- ViennaRna::Graphing::Gnuplot.quick_plot(
50
+ def quick_plot(filename: false)
51
+ ViennaRna::Graphing::R.line_graph(
52
52
  k_p_points,
53
- options[:title] || "%s\\n%s\\n%s" % [self.class.name, data.seq, data.safe_structure],
54
- options
53
+ title: options[:title] || "%s\\n%s\\n%s" % [self.class.name, data.seq, data.safe_structure],
54
+ filename: false
55
55
  )
56
56
  end
57
57
 
data/lib/vienna_rna.rb CHANGED
@@ -63,6 +63,10 @@ unless defined? RNA
63
63
  end
64
64
 
65
65
  module RNA
66
+ def self.load_all(pattern: "*.fa")
67
+ Dir[pattern].map { |file| RNA.from_fasta(file) }
68
+ end
69
+
66
70
  def self.random(size, *args)
67
71
  RNA.from_array(args.unshift(ViennaRna::Global::Rna.generate_sequence(size).seq))
68
72
  end
metadata CHANGED
@@ -1,33 +1,36 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vienna_rna
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.0
4
+ version: 0.13.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-25 00:00:00.000000000 Z
11
+ date: 2014-02-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '3.2'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '3.2'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: shuffle
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.1'
31
34
  - - ">="
32
35
  - !ruby/object:Gem::Version
33
36
  version: 0.1.0
@@ -35,6 +38,9 @@ dependencies:
35
38
  prerelease: false
36
39
  version_requirements: !ruby/object:Gem::Requirement
37
40
  requirements:
41
+ - - "~>"
42
+ - !ruby/object:Gem::Version
43
+ version: '0.1'
38
44
  - - ">="
39
45
  - !ruby/object:Gem::Version
40
46
  version: 0.1.0
@@ -42,6 +48,9 @@ dependencies:
42
48
  name: rinruby
43
49
  requirement: !ruby/object:Gem::Requirement
44
50
  requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '2.0'
45
54
  - - ">="
46
55
  - !ruby/object:Gem::Version
47
56
  version: 2.0.3
@@ -49,6 +58,9 @@ dependencies:
49
58
  prerelease: false
50
59
  version_requirements: !ruby/object:Gem::Requirement
51
60
  requirements:
61
+ - - "~>"
62
+ - !ruby/object:Gem::Version
63
+ version: '2.0'
52
64
  - - ">="
53
65
  - !ruby/object:Gem::Version
54
66
  version: 2.0.3
@@ -56,6 +68,9 @@ dependencies:
56
68
  name: rroc
57
69
  requirement: !ruby/object:Gem::Requirement
58
70
  requirements:
71
+ - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: '0.1'
59
74
  - - ">="
60
75
  - !ruby/object:Gem::Version
61
76
  version: 0.1.1
@@ -63,6 +78,9 @@ dependencies:
63
78
  prerelease: false
64
79
  version_requirements: !ruby/object:Gem::Requirement
65
80
  requirements:
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: '0.1'
66
84
  - - ">="
67
85
  - !ruby/object:Gem::Version
68
86
  version: 0.1.1
@@ -73,6 +91,8 @@ executables: []
73
91
  extensions: []
74
92
  extra_rdoc_files: []
75
93
  files:
94
+ - README.md
95
+ - lib/vienna_rna.rb
76
96
  - lib/vienna_rna/global/chain_extensions.rb
77
97
  - lib/vienna_rna/global/parser.rb
78
98
  - lib/vienna_rna/global/rna.rb
@@ -82,20 +102,21 @@ files:
82
102
  - lib/vienna_rna/package/base.rb
83
103
  - lib/vienna_rna/package/energy_grid_2d.rb
84
104
  - lib/vienna_rna/package/eval.rb
105
+ - lib/vienna_rna/package/fft_mfpt.rb
85
106
  - lib/vienna_rna/package/fftbor.rb
86
107
  - lib/vienna_rna/package/fftbor2d.rb
87
108
  - lib/vienna_rna/package/ffthairpin.rb
88
109
  - lib/vienna_rna/package/fftmultiloop.rb
89
110
  - lib/vienna_rna/package/fold.rb
90
111
  - lib/vienna_rna/package/heat.rb
112
+ - lib/vienna_rna/package/kinwalker.rb
91
113
  - lib/vienna_rna/package/mfpt.rb
92
114
  - lib/vienna_rna/package/rna2dfold.rb
93
115
  - lib/vienna_rna/package/rnabor.rb
116
+ - lib/vienna_rna/package/spectral.rb
94
117
  - lib/vienna_rna/package/subopt.rb
95
118
  - lib/vienna_rna/package/tabu_path.rb
96
119
  - lib/vienna_rna/package/xbor.rb
97
- - lib/vienna_rna.rb
98
- - README.md
99
120
  homepage: http://rubygems.org/gems/vienna_rna
100
121
  licenses: []
101
122
  metadata: {}
@@ -115,7 +136,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
115
136
  version: '0'
116
137
  requirements: []
117
138
  rubyforge_project:
118
- rubygems_version: 2.1.11
139
+ rubygems_version: 2.2.1
119
140
  signing_key:
120
141
  specification_version: 4
121
142
  summary: Bindings to the Vienna RNA package, and other major command line utilities