Class: ViennaRna::Package::Base

Inherits:
Object
  • Object
show all
Includes:
Global::ChainExtensions, Global::RunExtensions
Defined in:
lib/vienna_rna/package/base.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Global::ChainExtensions

included

Methods included from Global::RunExtensions

included

Constructor Details

#initialize(data, chaining: false) ⇒ Base

Returns a new instance of Base.



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/vienna_rna/package/base.rb', line 34

def initialize(data, chaining: false)
  unless chaining
    data  = [data] unless data.is_a?(Array)

    @data = case data.map(&:class)
    when [ViennaRna::Global::Rna]         then data.first
    when *(1..3).map { |i| [String] * i } then RNA.from_string(*data)
    when [Hash]                           then RNA.from_hash(*data)
    when [Array]                          then RNA.from_array(*data)
    when [NilClass]                       then ViennaRna::Global::Rna.placeholder
    else raise TypeError.new("Unsupported ViennaRna::Global::Rna#initialize format: #{data}")
    end
  else
    @data = transform_for_chaining(data)
  end
end

Instance Attribute Details

#dataObject (readonly)

Returns the value of attribute data.



32
33
34
# File 'lib/vienna_rna/package/base.rb', line 32

def data
  @data
end

#flagsObject (readonly)

Returns the value of attribute flags.



32
33
34
# File 'lib/vienna_rna/package/base.rb', line 32

def flags
  @flags
end

#responseObject (readonly)

Returns the value of attribute response.



32
33
34
# File 'lib/vienna_rna/package/base.rb', line 32

def response
  @response
end

#runtimeObject (readonly)

Returns the value of attribute runtime.



32
33
34
# File 'lib/vienna_rna/package/base.rb', line 32

def runtime
  @runtime
end

Class Method Details

.bootstrap(data: nil, output: "") ⇒ Object



24
25
26
27
28
29
# File 'lib/vienna_rna/package/base.rb', line 24

def bootstrap(data: nil, output: "")
  new(data).tap do |object|
    object.instance_variable_set(:@response, File.exist?(output) ? File.read(output).chomp : output)
    object.post_process if object.respond_to?(:post_process)
  end
end

Instance Method Details

#debugger(&block) ⇒ Object



55
56
57
# File 'lib/vienna_rna/package/base.rb', line 55

def debugger(&block)
  self.class.debugger(&block)
end

#inspectObject



59
60
61
62
63
64
65
66
67
# File 'lib/vienna_rna/package/base.rb', line 59

def inspect
  "#<%s (%.2f sec): data: %s, flags: %s, vars: %s>" % [
    self.class.name,
    runtime.real,
    data,
    flags,
    (instance_variables - %i|@data @flags @response @runtime|).map(&:to_s).sort.join(", ")
  ]
end

#serializeObject



51
52
53
# File 'lib/vienna_rna/package/base.rb', line 51

def serialize
  YAML.dump(self)
end