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
- #clone_columns! ⇒ Object
-
#columns ⇒ Object
Return a list of Column objects.
- #columns_to_s ⇒ Object
-
#columns_where(&block) ⇒ Object
Return an alignment which match columns.
-
#num_columns ⇒ Object
def columns= list @columns = list end.
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 |
#columns ⇒ Object
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_s ⇒ Object
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_columns ⇒ Object
def columns= list
@columns = list
end
21 22 23 |
# File 'lib/bio-alignment/columns.rb', line 21 def num_columns rows.first.length end |