Class: SequenceLogo::Sequence

Inherits:
Object
  • Object
show all
Defined in:
lib/sequence_logo/data_models/sequence.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(sequence, options = {}) ⇒ Sequence

Returns a new instance of Sequence.



6
7
8
9
10
# File 'lib/sequence_logo/data_models/sequence.rb', line 6

def initialize(sequence, options = {})
  raise 'Wrong sequence' unless Sequence.valid_sequence?(sequence)
  @sequence = sequence
  @name = options[:name] || sequence
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



5
6
7
# File 'lib/sequence_logo/data_models/sequence.rb', line 5

def name
  @name
end

#sequenceObject (readonly)

Returns the value of attribute sequence.



5
6
7
# File 'lib/sequence_logo/data_models/sequence.rb', line 5

def sequence
  @sequence
end

Class Method Details

.complement(sequence) ⇒ Object



29
30
31
# File 'lib/sequence_logo/data_models/sequence.rb', line 29

def self.complement(sequence)
  sequence.tr('acgtACGT', 'tgcaTGCA')
end

.revcomp(sequence) ⇒ Object



32
33
34
# File 'lib/sequence_logo/data_models/sequence.rb', line 32

def self.revcomp(sequence)
  complement(sequence).reverse
end

.valid_sequence?(sequence) ⇒ Boolean

Returns:

  • (Boolean)


36
37
38
# File 'lib/sequence_logo/data_models/sequence.rb', line 36

def self.valid_sequence?(sequence)
  sequence.match /\A[acgt]+\z/i
end

Instance Method Details

#lengthObject



12
13
14
# File 'lib/sequence_logo/data_models/sequence.rb', line 12

def length
  sequence.length
end

#render(canvas_factory) ⇒ Object



20
21
22
23
24
25
26
27
# File 'lib/sequence_logo/data_models/sequence.rb', line 20

def render(canvas_factory)
  canvas = LogoCanvas.new(canvas_factory)
  canvas.background(Magick::HatchFill.new('white', 'white'))
  sequence.each_char do |letter|
    canvas.add_letter(letter)
  end
  canvas.image
end

#revcompObject



16
17
18
# File 'lib/sequence_logo/data_models/sequence.rb', line 16

def revcomp
  Sequence.new(Sequence.revcomp(sequence), name: name)
end