Class: Bio::Phylip::PhylipFormat

Inherits:
Object
  • Object
show all
Defined in:
lib/bio/appl/phylip/alignment.rb

Overview

This is phylip multiple alignment format parser. The two formats, interleaved and non-interleaved, are automatically determined.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(str) ⇒ PhylipFormat

create a new object from a string


26
27
28
29
30
31
# File 'lib/bio/appl/phylip/alignment.rb', line 26

def initialize(str)
  @data = str.strip.split(/(?:\r\n|\r|\n)/)
  @first_line = @data.shift
  @number_of_sequences, @alignment_length =
    @first_line.to_s.strip.split(/\s+/).collect { |x| x.to_i }
end

Instance Attribute Details

#alignment_lengthObject (readonly)

alignment length


37
38
39
# File 'lib/bio/appl/phylip/alignment.rb', line 37

def alignment_length
  @alignment_length
end

#number_of_sequencesObject (readonly)

number of sequences


34
35
36
# File 'lib/bio/appl/phylip/alignment.rb', line 34

def number_of_sequences
  @number_of_sequences
end

Instance Method Details

#alignmentObject

Gets the alignment. Returns a Bio::Alignment object.


54
55
56
57
58
59
60
61
62
63
64
# File 'lib/bio/appl/phylip/alignment.rb', line 54

def alignment
  unless defined? @alignment then
    do_parse
    a = Bio::Alignment.new
    (0...@number_of_sequences).each do |i|
      a.add_seq(@sequences[i], @sequence_names[i])
    end
    @alignment = a
  end
  @alignment
end

#interleaved?Boolean

If the alignment format is “interleaved”, returns true. If not, returns false. It would mistake to determine if the alignment is very short.


42
43
44
45
46
47
48
49
50
51
# File 'lib/bio/appl/phylip/alignment.rb', line 42

def interleaved?
  unless defined? @interleaved_flag then
    if /\A +/ =~ @data[1].to_s then
      @interleaved_flag = false
    else
      @interleaved_flag = true
    end
  end
  @interleaved_flag
end