wrnap 0.0.1
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 +7 -0
- data/.gitignore +22 -0
- data/Gemfile +4 -0
- data/LICENSE.md +21 -0
- data/README.md +47 -0
- data/Rakefile +2 -0
- data/lib/wrnap/global/chain_extensions.rb +29 -0
- data/lib/wrnap/global/parser.rb +24 -0
- data/lib/wrnap/global/rna.rb +148 -0
- data/lib/wrnap/global/rna_extensions.rb +99 -0
- data/lib/wrnap/global/run_extensions.rb +98 -0
- data/lib/wrnap/graphing/r.rb +229 -0
- data/lib/wrnap/package/base.rb +73 -0
- data/lib/wrnap/package/energy_grid_2d.rb +81 -0
- data/lib/wrnap/package/eval.rb +13 -0
- data/lib/wrnap/package/fft_mfpt.rb +24 -0
- data/lib/wrnap/package/fftbor.rb +19 -0
- data/lib/wrnap/package/fftbor2d.rb +22 -0
- data/lib/wrnap/package/ffthairpin.rb +7 -0
- data/lib/wrnap/package/fftmultiloop.rb +7 -0
- data/lib/wrnap/package/fold.rb +25 -0
- data/lib/wrnap/package/heat.rb +15 -0
- data/lib/wrnap/package/kinwalker.rb +24 -0
- data/lib/wrnap/package/mfpt.rb +40 -0
- data/lib/wrnap/package/plot.rb +19 -0
- data/lib/wrnap/package/population.rb +84 -0
- data/lib/wrnap/package/rna2dfold.rb +27 -0
- data/lib/wrnap/package/rnabor.rb +32 -0
- data/lib/wrnap/package/spectral.rb +24 -0
- data/lib/wrnap/package/subopt.rb +26 -0
- data/lib/wrnap/package/tabu_path.rb +50 -0
- data/lib/wrnap/package/xbor.rb +63 -0
- data/lib/wrnap/version.rb +3 -0
- data/lib/wrnap.rb +80 -0
- data/wrnap.gemspec +28 -0
- metadata +162 -0
@@ -0,0 +1,84 @@
|
|
1
|
+
module Wrnap
|
2
|
+
module Package
|
3
|
+
class Population < Base
|
4
|
+
THREE_COLUMN_REGEX = /^([+-]\d+\.\d+\t){2}[+-]\d+\.\d+$/
|
5
|
+
|
6
|
+
attr_reader :str_1_to_str_2, :str_1_to_str_1
|
7
|
+
|
8
|
+
self.default_flags = ->(context, flags) do
|
9
|
+
{
|
10
|
+
"-fftbor2d-i" => context.data.seq,
|
11
|
+
"-fftbor2d-j" => context.data.str_1,
|
12
|
+
"-fftbor2d-k" => context.data.str_2,
|
13
|
+
"-spectral-i" => -10,
|
14
|
+
"-spectral-j" => 10,
|
15
|
+
"-spectral-p" => 1e-2,
|
16
|
+
}
|
17
|
+
end
|
18
|
+
self.quote_flag_params = %w|-fftbor2d-i -fftbor2d-j -fftbor2d-k|
|
19
|
+
|
20
|
+
class PopulationProportion
|
21
|
+
include Enumerable
|
22
|
+
|
23
|
+
attr_reader :proportion_over_time
|
24
|
+
|
25
|
+
def initialize(time, proportion)
|
26
|
+
@proportion_over_time = time.zip(proportion)
|
27
|
+
end
|
28
|
+
|
29
|
+
def time_range(from, to)
|
30
|
+
proportion_over_time.select { |time, _| ((from.to_f)..(to.to_f)) === time }
|
31
|
+
end
|
32
|
+
|
33
|
+
def equilibrium(percentile: 95, window_size: 5, epsilon: 1e-4)
|
34
|
+
start = proportion_points.first
|
35
|
+
stop = proportion_points.last
|
36
|
+
sign = stop > start ? :increasing : :decreasing
|
37
|
+
# If the population is increasing over time, we want the 95%, otherwise we want the 5%
|
38
|
+
spread_100 = (start.zero? || stop.zero? ? [start, stop].max : (stop / start).abs) / 100
|
39
|
+
# Look for the first index at the percentile we're interested in, and scan to the right from there.
|
40
|
+
start_index = proportion_points.each_with_index.find do |proportion, i|
|
41
|
+
case sign
|
42
|
+
when :increasing then proportion > (stop - (spread_100 * (100 - percentile)))
|
43
|
+
when :decreasing then proportion < (stop + (spread_100 * (100 - percentile)))
|
44
|
+
end
|
45
|
+
end.last
|
46
|
+
|
47
|
+
# The first slice starting at x we find where abs(p(x + i), p(x)) < epslion for all 1 <= x < window_size is equilibrium,
|
48
|
+
# and we return that time point.
|
49
|
+
proportion_over_time[start_index..-1].each_cons(window_size).find do |proportion_slice|
|
50
|
+
proportion_slice.all? { |time, proportion| (proportion - proportion_slice.first.last).abs < epsilon }
|
51
|
+
end.first.first
|
52
|
+
end
|
53
|
+
|
54
|
+
def time_points; proportion_over_time.map(&:first); end
|
55
|
+
def proportion_points; proportion_over_time.map(&:last); end
|
56
|
+
|
57
|
+
def each
|
58
|
+
proportion_over_time.each { |_| yield _ }
|
59
|
+
end
|
60
|
+
|
61
|
+
def inspect
|
62
|
+
"#<Wrnap::Package::Population::PopulationProportion time: (%f..%f), proportion: (%f..%f)>" % [
|
63
|
+
time_points[0],
|
64
|
+
time_points[-1],
|
65
|
+
proportion_points[0],
|
66
|
+
proportion_points[-1],
|
67
|
+
]
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
def run_command(flags)
|
72
|
+
Wrnap.debugger { "Running #{exec_name} on #{data.inspect}" }
|
73
|
+
|
74
|
+
"%s %s" % [exec_name, stringify_flags(flags)]
|
75
|
+
end
|
76
|
+
|
77
|
+
def post_process
|
78
|
+
time_points, str_1_to_str_2, str_1_to_str_1 = response.split(/\n/).select { |line| line =~ THREE_COLUMN_REGEX }.map { |line| line.split(/\t/).map(&:to_f) }.transpose
|
79
|
+
@str_1_to_str_2 = PopulationProportion.new(time_points, str_1_to_str_2)
|
80
|
+
@str_1_to_str_1 = PopulationProportion.new(time_points, str_1_to_str_1)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Wrnap
|
2
|
+
module Package
|
3
|
+
class Rna2dfold < EnergyGrid2d
|
4
|
+
self.default_flags = {
|
5
|
+
d: 0,
|
6
|
+
p: true,
|
7
|
+
"-noBT" => true
|
8
|
+
}
|
9
|
+
|
10
|
+
self.executable_name = "RNA2Dfold"
|
11
|
+
|
12
|
+
def run_command(flags)
|
13
|
+
Wrnap.debugger { "Running RNA2Dfold on #{data.inspect}" }
|
14
|
+
|
15
|
+
"cat %s | %s %s" % [
|
16
|
+
data.temp_fa_file!,
|
17
|
+
exec_name,
|
18
|
+
stringify_flags(flags)
|
19
|
+
]
|
20
|
+
end
|
21
|
+
|
22
|
+
def distribution
|
23
|
+
response.split(/\n/)[6..-1].map { |line| line.split(/\t/).at_indexes([0, 1, 2, 6]) }
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Wrnap
|
2
|
+
module Package
|
3
|
+
class Rnabor < Xbor
|
4
|
+
FLAGS = {
|
5
|
+
nodangle: :empty
|
6
|
+
}
|
7
|
+
|
8
|
+
def partition
|
9
|
+
non_zero_shells.inject(&:+)
|
10
|
+
end
|
11
|
+
|
12
|
+
def total_count
|
13
|
+
counts.inject(&:+)
|
14
|
+
end
|
15
|
+
|
16
|
+
def counts
|
17
|
+
(non_zero_counts = self.class.parse(response).map { |row| BigDecimal.new(row[2]).to_i }) + [0] * (data.seq.length - non_zero_counts.length + 1)
|
18
|
+
end
|
19
|
+
|
20
|
+
def distribution(options = {})
|
21
|
+
options = { precision: 4 }.merge(options)
|
22
|
+
|
23
|
+
distribution_before_precision = (non_zero_distribution = non_zero_shells.map { |i| i / partition }) + [0.0] * (data.seq.length - non_zero_distribution.length + 1)
|
24
|
+
distribution_before_precision.map { |value| options[:precision].zero? ? value : (value * 10 ** options[:precision]).truncate / 10.0 ** options[:precision] }
|
25
|
+
end
|
26
|
+
|
27
|
+
def non_zero_shells
|
28
|
+
self.class.parse(response).map { |row| BigDecimal.new(row[1]) }
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Wrnap
|
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
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Wrnap
|
2
|
+
module Package
|
3
|
+
class Subopt < Base
|
4
|
+
attr_reader :structures
|
5
|
+
|
6
|
+
def post_process
|
7
|
+
@structures = response.split(/\n/)[1..-1].map do |output|
|
8
|
+
structure, mfe = output.split(/\s+/)
|
9
|
+
|
10
|
+
RNA.from_string(data.seq, structure).tap do |rna|
|
11
|
+
rna.instance_variable_set(:@mfe, mfe.to_f)
|
12
|
+
rna.class_eval { attr_reader :mfe }
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def bin(count = 1)
|
18
|
+
run(p: count).structures.inject(Hash.new { |hash, key| hash[key] = 0 }) do |hash, structure|
|
19
|
+
hash.tap do
|
20
|
+
hash[structure] += 1
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module Wrnap
|
2
|
+
module Package
|
3
|
+
class TabuPath < Base
|
4
|
+
self.executable_name = "get_barrier_tabu"
|
5
|
+
self.default_flags = ->(context, flags) { { iterations: 10, min_weight: 10, max_weight: 70 } }
|
6
|
+
|
7
|
+
attr_reader :paths
|
8
|
+
|
9
|
+
def run_command(flags)
|
10
|
+
Wrnap.debugger { "Running #{exec_name} on #{data.inspect}" }
|
11
|
+
|
12
|
+
[
|
13
|
+
exec_name,
|
14
|
+
data.seq.inspect,
|
15
|
+
data.str_1.inspect,
|
16
|
+
data.str_2.inspect,
|
17
|
+
flags[:iterations],
|
18
|
+
flags[:min_weight],
|
19
|
+
flags[:max_weight]
|
20
|
+
].join(" ")
|
21
|
+
end
|
22
|
+
|
23
|
+
def post_process
|
24
|
+
@paths = response.split(data.str_1 + ?\n).reject(&:empty?).map { |path_string| Path.new(data, path_string) }
|
25
|
+
end
|
26
|
+
|
27
|
+
class Path
|
28
|
+
attr_reader :rna, :path, :barrier, :best_weight
|
29
|
+
|
30
|
+
def initialize(rna, output)
|
31
|
+
@rna = rna
|
32
|
+
@path = output.split(?\n)[0..-2].unshift(rna.str_1)
|
33
|
+
@barrier, _, @best_weight = output.split(?\n)[-1].gsub(/[^\d\.]/, " ").strip.split(/\s+/).map(&:to_f)
|
34
|
+
end
|
35
|
+
|
36
|
+
def length
|
37
|
+
path.length
|
38
|
+
end
|
39
|
+
|
40
|
+
def full_path?
|
41
|
+
rna.str_1 == path.first && rna.str_2 == path.last
|
42
|
+
end
|
43
|
+
|
44
|
+
def inspect
|
45
|
+
"#<#{self.class.name} with barrier %.2f and length %d on #{rna.inspect}>" % [barrier, best_weight]
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
module Wrnap
|
2
|
+
module Package
|
3
|
+
class Xbor < Base
|
4
|
+
self.default_flags = {
|
5
|
+
E: "/usr/local/bin/rna_turner2004.par"
|
6
|
+
}
|
7
|
+
|
8
|
+
self.executable_name = ->(context) { context.class.name.demodulize.gsub(/^([A-Z].*)bor$/) { |match| $1.upcase + "bor" } }
|
9
|
+
|
10
|
+
def run_command(flags)
|
11
|
+
file = Tempfile.new("rna")
|
12
|
+
file.write("%s\n" % data.seq)
|
13
|
+
file.write("%s\n" % data.str)
|
14
|
+
file.close
|
15
|
+
|
16
|
+
Wrnap.debugger { "Running FFTbor on #{data.inspect}" }
|
17
|
+
|
18
|
+
"%s %s %s" % [
|
19
|
+
exec_name,
|
20
|
+
stringify_flags(flags),
|
21
|
+
file.path
|
22
|
+
]
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.parse(response)
|
26
|
+
response.split(/\n/).select { |line| line =~ /^\d+\t-?\d+/ }.map { |line| line.split(/\t/) }
|
27
|
+
end
|
28
|
+
|
29
|
+
def full_distribution
|
30
|
+
distribution = run.distribution
|
31
|
+
full_distribution = distribution + ([0.0] * ((differnece = data.seq.length - distribution.length + 1) < 0 ? 0 : differnece))
|
32
|
+
end
|
33
|
+
|
34
|
+
def k_p_points
|
35
|
+
full_distribution.each_with_index.to_a.map(&:reverse)[0..data.seq.length]
|
36
|
+
end
|
37
|
+
|
38
|
+
def expected_k
|
39
|
+
k_p_points.map { |array| array.inject(&:*) }.inject(&:+)
|
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
|
+
|
50
|
+
def quick_plot(filename: false)
|
51
|
+
Wrnap::Graphing::R.line_graph(
|
52
|
+
k_p_points,
|
53
|
+
title: options[:title] || "%s\\n%s\\n%s" % [self.class.name, data.seq, data.safe_structure],
|
54
|
+
filename: false
|
55
|
+
)
|
56
|
+
end
|
57
|
+
|
58
|
+
def inspect
|
59
|
+
"#<#{self.class.name} #{data.inspect}>"
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
data/lib/wrnap.rb
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
require "benchmark"
|
2
|
+
require "set"
|
3
|
+
require "shuffle"
|
4
|
+
require "rinruby"
|
5
|
+
require "tempfile"
|
6
|
+
require "bigdecimal"
|
7
|
+
require "rroc"
|
8
|
+
require "active_support/inflector"
|
9
|
+
require "active_support/core_ext/class"
|
10
|
+
|
11
|
+
require "wrnap/version"
|
12
|
+
require "wrnap/global/rna_extensions"
|
13
|
+
require "wrnap/global/rna"
|
14
|
+
require "wrnap/global/parser"
|
15
|
+
require "wrnap/global/run_extensions"
|
16
|
+
require "wrnap/global/chain_extensions"
|
17
|
+
require "wrnap/graphing/r"
|
18
|
+
require "wrnap/package/base"
|
19
|
+
|
20
|
+
begin; R.quit; rescue IOError; end
|
21
|
+
|
22
|
+
module Wrnap
|
23
|
+
RT = 1e-3 * 1.9872041 * (273.15 + 37) # kcal / K / mol @ 37C
|
24
|
+
@debug = true
|
25
|
+
|
26
|
+
module Package
|
27
|
+
Dir[File.join(File.dirname(__FILE__), "wrnap", "package", "*.rb")].reject { |file| file =~ /\/base.rb/ }.each do |file|
|
28
|
+
autoload(File.basename(file, ".rb").camelize.to_sym, "wrnap/package/#{File.basename(file, '.rb')}")
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.const_missing(name)
|
32
|
+
if const_defined?(name)
|
33
|
+
const_get(name)
|
34
|
+
elsif Base.exec_exists?(name)
|
35
|
+
module_eval do
|
36
|
+
const_set(name, Class.new(Base))
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def self.deserialize(string)
|
43
|
+
YAML.load(File.exist?(string) ? File.read(string) : string)
|
44
|
+
end
|
45
|
+
|
46
|
+
def self.debugger
|
47
|
+
STDERR.puts yield if Wrnap.debug
|
48
|
+
end
|
49
|
+
|
50
|
+
def self.debug
|
51
|
+
@debug
|
52
|
+
end
|
53
|
+
|
54
|
+
def self.debug=(value)
|
55
|
+
@debug = value
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
# This dirties up the public namespace, but I use it so many times that I want a shorthand to it
|
60
|
+
unless defined? RNA
|
61
|
+
def RNA(*args)
|
62
|
+
RNA.from_array(args)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
module RNA
|
67
|
+
def self.load_all(pattern = "*.fa")
|
68
|
+
Dir[File.directory?(pattern) ? pattern + "/*.fa" : pattern].map { |file| RNA.from_fasta(file) }
|
69
|
+
end
|
70
|
+
|
71
|
+
def self.random(size, *args)
|
72
|
+
RNA.from_array(args.unshift(Wrnap::Global::Rna.generate_sequence(size).seq))
|
73
|
+
end
|
74
|
+
|
75
|
+
def self.method_missing(name, *args, &block)
|
76
|
+
if "#{name}" =~ /^from_\w+$/
|
77
|
+
Wrnap::Global::Rna.send("init_#{name}", *args)
|
78
|
+
else super end
|
79
|
+
end
|
80
|
+
end
|
data/wrnap.gemspec
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'wrnap/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "wrnap"
|
8
|
+
spec.version = Wrnap::VERSION
|
9
|
+
spec.authors = ["Evan Senter"]
|
10
|
+
spec.email = ["evansenter@gmail.com"]
|
11
|
+
spec.summary = %q{A comprehensive wrapper (wRNApper) for various RNA CLI programs.}
|
12
|
+
spec.description = %q{}
|
13
|
+
spec.homepage = ""
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0")
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.6"
|
22
|
+
spec.add_development_dependency "rake"
|
23
|
+
|
24
|
+
spec.add_runtime_dependency "activesupport", "~> 4.0"
|
25
|
+
spec.add_runtime_dependency "shuffle", "~> 0.1"
|
26
|
+
spec.add_runtime_dependency "rinruby", "~> 2.0"
|
27
|
+
spec.add_runtime_dependency "rroc", "~> 0.1"
|
28
|
+
end
|
metadata
ADDED
@@ -0,0 +1,162 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: wrnap
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Evan Senter
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-04-10 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.6'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.6'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: activesupport
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '4.0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '4.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: shuffle
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0.1'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0.1'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rinruby
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '2.0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '2.0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rroc
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0.1'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0.1'
|
97
|
+
description: ''
|
98
|
+
email:
|
99
|
+
- evansenter@gmail.com
|
100
|
+
executables: []
|
101
|
+
extensions: []
|
102
|
+
extra_rdoc_files: []
|
103
|
+
files:
|
104
|
+
- ".gitignore"
|
105
|
+
- Gemfile
|
106
|
+
- LICENSE.md
|
107
|
+
- README.md
|
108
|
+
- Rakefile
|
109
|
+
- lib/wrnap.rb
|
110
|
+
- lib/wrnap/global/chain_extensions.rb
|
111
|
+
- lib/wrnap/global/parser.rb
|
112
|
+
- lib/wrnap/global/rna.rb
|
113
|
+
- lib/wrnap/global/rna_extensions.rb
|
114
|
+
- lib/wrnap/global/run_extensions.rb
|
115
|
+
- lib/wrnap/graphing/r.rb
|
116
|
+
- lib/wrnap/package/base.rb
|
117
|
+
- lib/wrnap/package/energy_grid_2d.rb
|
118
|
+
- lib/wrnap/package/eval.rb
|
119
|
+
- lib/wrnap/package/fft_mfpt.rb
|
120
|
+
- lib/wrnap/package/fftbor.rb
|
121
|
+
- lib/wrnap/package/fftbor2d.rb
|
122
|
+
- lib/wrnap/package/ffthairpin.rb
|
123
|
+
- lib/wrnap/package/fftmultiloop.rb
|
124
|
+
- lib/wrnap/package/fold.rb
|
125
|
+
- lib/wrnap/package/heat.rb
|
126
|
+
- lib/wrnap/package/kinwalker.rb
|
127
|
+
- lib/wrnap/package/mfpt.rb
|
128
|
+
- lib/wrnap/package/plot.rb
|
129
|
+
- lib/wrnap/package/population.rb
|
130
|
+
- lib/wrnap/package/rna2dfold.rb
|
131
|
+
- lib/wrnap/package/rnabor.rb
|
132
|
+
- lib/wrnap/package/spectral.rb
|
133
|
+
- lib/wrnap/package/subopt.rb
|
134
|
+
- lib/wrnap/package/tabu_path.rb
|
135
|
+
- lib/wrnap/package/xbor.rb
|
136
|
+
- lib/wrnap/version.rb
|
137
|
+
- wrnap.gemspec
|
138
|
+
homepage: ''
|
139
|
+
licenses:
|
140
|
+
- MIT
|
141
|
+
metadata: {}
|
142
|
+
post_install_message:
|
143
|
+
rdoc_options: []
|
144
|
+
require_paths:
|
145
|
+
- lib
|
146
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
147
|
+
requirements:
|
148
|
+
- - ">="
|
149
|
+
- !ruby/object:Gem::Version
|
150
|
+
version: '0'
|
151
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
152
|
+
requirements:
|
153
|
+
- - ">="
|
154
|
+
- !ruby/object:Gem::Version
|
155
|
+
version: '0'
|
156
|
+
requirements: []
|
157
|
+
rubyforge_project:
|
158
|
+
rubygems_version: 2.2.2
|
159
|
+
signing_key:
|
160
|
+
specification_version: 4
|
161
|
+
summary: A comprehensive wrapper (wRNApper) for various RNA CLI programs.
|
162
|
+
test_files: []
|