vienna_rna 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -16,11 +16,11 @@ module ViennaRna
16
16
  STDERR.puts "ERROR: The mode requested (%s) is not available" % flags[:mode]
17
17
  end
18
18
 
19
- case flags[:mode]
19
+ case mode = flags.delete(:mode)
20
20
  when :standalone then
21
21
  super(flags)
22
22
  when :dispatch then
23
- "%s -m 6 -tr 0 -s %s -ss '%s'" % [MODES[flags[:mode]], data.seq, data.safe_structure]
23
+ "%s -m 6 -tr 0 -s %s -ss '%s'" % [MODES[mode], data.seq, data.safe_structure]
24
24
  end
25
25
  end
26
26
 
@@ -38,6 +38,24 @@ module ViennaRna
38
38
  self.class.parse(response).map { |row| BigDecimal.new(row[1]) }
39
39
  end
40
40
 
41
+ def windows
42
+ # This is starting to feel pretty hackety.
43
+ response.gsub(/Sum.*\n+Window size:\s+\d+/) { |match| "[:separator:]" + match }.split("[:separator:]").map do |window_response|
44
+ window_size = window_response.match(/Window size:\s+(\d+)/)[1].to_i
45
+ window_index = window_response.match(/Window starting index:\s+(\d+)/)[1].to_i
46
+
47
+ self.class.new(seq: data.seq[window_index - 1, window_size], str: data.safe_structure[window_index - 1, window_size]).tap do |window_run|
48
+ class << window_run
49
+ attr_accessor :response, :window_size, :window_index
50
+ end
51
+
52
+ window_run.response = window_response
53
+ window_run.window_size = window_size
54
+ window_run.window_index = window_index
55
+ end
56
+ end
57
+ end
58
+
41
59
  def compare
42
60
  {
43
61
  dispatch: self.class.new(data).run(mode: :dispatch).distribution,
@@ -56,9 +56,12 @@ module ViennaRna
56
56
  end
57
57
  end
58
58
 
59
- def quick_plot(title, data)
60
- # data = [[x_0, y_0], [x_1, y_1], ...]
61
- plot([{ x: data.map(&:first), y: data.map(&:last), style: "linespoints" }], title: title)
59
+ def quick_plot(title, data, filename = false)
60
+ # data = [[x_0, y_0], [x_1, y_1], ...]
61
+ options = { title: title }
62
+ options.merge!(output: "file", filename: filename) if filename
63
+
64
+ plot([{ x: data.map(&:first), y: data.map(&:last), style: "linespoints" }], options)
62
65
  end
63
66
  end
64
67
  end
@@ -9,7 +9,7 @@ module ViennaRna
9
9
 
10
10
  self.executable_name = -> { name.demodulize.gsub(/^([A-Z].*)bor$/) { |match| $1.upcase + "bor" } }
11
11
 
12
- def run_command(flags)
12
+ def run_command(flags = {})
13
13
  file = Tempfile.new("rna")
14
14
  file.write("%s\n" % data.seq)
15
15
  file.write("%s\n" % data.safe_structure)
@@ -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) : {})),
20
+ stringify_flags(BASE_FLAGS.merge(self.class.const_defined?(:FLAGS) ? self.class.const_get(:FLAGS) : {}).merge(flags)),
21
21
  file.path
22
22
  ]
23
23
  end
@@ -28,13 +28,17 @@ module ViennaRna
28
28
 
29
29
  def full_distribution
30
30
  distribution = run.distribution
31
- full_distribution = distribution + ([0] * (data.seq.length - distribution.length + 1))
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]
32
36
  end
33
37
 
34
38
  def quick_plot
35
39
  ViennaRna::Utils.quick_plot(
36
40
  "%s\\n%s\\n%s" % [self.class.name, data.seq, data.safe_structure],
37
- full_distribution.each_with_index.to_a.map(&:reverse)
41
+ k_p_points
38
42
  )
39
43
  end
40
44
  end
data/lib/vienna_rna.rb CHANGED
@@ -6,8 +6,9 @@ require "active_support/core_ext/module/aliasing"
6
6
  module ViennaRna
7
7
  @debug = true
8
8
 
9
- Dir[File.join(File.dirname(__FILE__), "/modules/*")].each do |file|
10
- autoload File.basename(file, ".rb").camelize.to_sym, file
9
+ Dir[File.join(File.dirname(__FILE__), "vienna_rna", "modules", "*.rb")].each do |file|
10
+ # Doesn't support autoloading modules that are of the form: TwoWords
11
+ autoload(File.basename(file, ".rb").camelize.to_sym, "vienna_rna/modules/#{File.basename(file, '.rb')}")
11
12
  end
12
13
 
13
14
  def self.const_missing(name)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vienna_rna
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-07-23 00:00:00.000000000 Z
12
+ date: 2012-07-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bio
@@ -49,15 +49,15 @@ executables: []
49
49
  extensions: []
50
50
  extra_rdoc_files: []
51
51
  files:
52
- - ./lib/modules/base.rb
53
- - ./lib/modules/batch.rb
54
- - ./lib/modules/fftbor.rb
55
- - ./lib/modules/fold.rb
56
- - ./lib/modules/heat.rb
57
- - ./lib/modules/rnabor.rb
58
- - ./lib/modules/subopt.rb
59
- - ./lib/modules/utils.rb
60
- - ./lib/modules/xbor.rb
52
+ - ./lib/vienna_rna/modules/base.rb
53
+ - ./lib/vienna_rna/modules/batch.rb
54
+ - ./lib/vienna_rna/modules/fftbor.rb
55
+ - ./lib/vienna_rna/modules/fold.rb
56
+ - ./lib/vienna_rna/modules/heat.rb
57
+ - ./lib/vienna_rna/modules/rnabor.rb
58
+ - ./lib/vienna_rna/modules/subopt.rb
59
+ - ./lib/vienna_rna/modules/utils.rb
60
+ - ./lib/vienna_rna/modules/xbor.rb
61
61
  - ./lib/vienna_rna.rb
62
62
  homepage: http://rubygems.org/gems/vienna_rna
63
63
  licenses: []
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes