Class: SequenceLogo::SequenceWithSNP

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

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(left, allele_variants, right, options = {}) ⇒ SequenceWithSNP

Returns a new instance of SequenceWithSNP.



7
8
9
10
11
12
13
# File 'lib/sequence_logo/data_models/sequence_with_snp.rb', line 7

def initialize(left, allele_variants, right, options = {})
  raise unless Sequence.valid_sequence?(left)
  raise unless Sequence.valid_sequence?(right)
  raise unless allele_variants.all?{|letter| %w[A C G T].include?(letter.upcase) }
  @left, @allele_variants, @right = left, allele_variants, right
  @name = options[:name] || (left + '_' + allele_variants.join('-') + '_' + right)
end

Instance Attribute Details

#allele_variantsObject (readonly)

Returns the value of attribute allele_variants.



6
7
8
# File 'lib/sequence_logo/data_models/sequence_with_snp.rb', line 6

def allele_variants
  @allele_variants
end

#leftObject (readonly)

Returns the value of attribute left.



6
7
8
# File 'lib/sequence_logo/data_models/sequence_with_snp.rb', line 6

def left
  @left
end

#nameObject (readonly)

Returns the value of attribute name.



6
7
8
# File 'lib/sequence_logo/data_models/sequence_with_snp.rb', line 6

def name
  @name
end

#rightObject (readonly)

Returns the value of attribute right.



6
7
8
# File 'lib/sequence_logo/data_models/sequence_with_snp.rb', line 6

def right
  @right
end

Class Method Details

.from_string(sequence, options = {}) ⇒ Object



15
16
17
18
19
# File 'lib/sequence_logo/data_models/sequence_with_snp.rb', line 15

def self.from_string(sequence, options = {})
  left, mid, right = sequence.split(/[\[\]]/)
  allele_variants = mid.split('/')
  SequenceWithSNP.new(left, allele_variants, right, options)
end

Instance Method Details

#lengthObject



21
22
23
# File 'lib/sequence_logo/data_models/sequence_with_snp.rb', line 21

def length
  left.length + 1 + right.length
end

#render(canvas_factory) ⇒ Object



31
32
33
34
35
36
37
38
# File 'lib/sequence_logo/data_models/sequence_with_snp.rb', line 31

def render(canvas_factory)
  canvas = LogoCanvas.new(canvas_factory)
  canvas.background(canvas_factory.background_fill)
  left.each_char{|letter| canvas.add_letter(letter) }
  canvas.add_position_ordered(snp_position_heights)
  right.each_char{|letter| canvas.add_letter(letter) }
  canvas.image
end

#revcompObject



25
26
27
28
29
# File 'lib/sequence_logo/data_models/sequence_with_snp.rb', line 25

def revcomp
  SequenceWithSNP.new(Sequence.revcomp(right),
                      allele_variants.map{|letter| Sequence.complement(letter) },
                      Sequence.revcomp(left))
end