Module: Bio::BioAlignment::Columns

Included in:
Alignment
Defined in:
lib/bio-alignment/columns.rb

Overview

The Columns module provides accessors for the column list returning Column objects

Instance Method Summary collapse

Instance Method Details

#clone_columns!Object



43
44
45
46
47
48
49
50
# File 'lib/bio-alignment/columns.rb', line 43

def clone_columns!
  # clone the columns
  old_columns = @columns
  @columns = []
  old_columns.each do | old_column |
    @columns << old_column.clone
  end
end

#columnsObject

Return a list of Column objects. The contents of the

columns are accessed lazily



13
14
15
# File 'lib/bio-alignment/columns.rb', line 13

def columns
  @columns ||= (0..num_columns-1).map { | col | Column.new(self,col) }
end

#columns_to_sObject



39
40
41
# File 'lib/bio-alignment/columns.rb', line 39

def columns_to_s
  columns.map { |c| (c.respond_to?(:state) ? c.state.to_s : '?') }.join
end

#columns_where(&block) ⇒ Object

Return an alignment which match columns. The originating sequences should have methods ‘empty_copy’ and ‘<<’



27
28
29
30
31
32
33
34
35
36
37
# File 'lib/bio-alignment/columns.rb', line 27

def columns_where &block
  seqs = []
  rows.each do | seq | 
    new_seq = seq.empty_copy
    seq.each_with_index do | e,i |
      new_seq << e if block.call(columns[i])
    end
    seqs << new_seq
  end
  Alignment.new(seqs)
end

#num_columnsObject

def columns= list

@columns = list

end



21
22
23
# File 'lib/bio-alignment/columns.rb', line 21

def num_columns
  rows.first.length
end