class Alignment

Attributes

cols[R]
seqs[R]

Public Class Methods

new() click to toggle source
# File lib/rocker/alignment.rb, line 13
def initialize
   @seqs = {}
end

Public Instance Methods

<<(seq) click to toggle source
# File lib/rocker/alignment.rb, line 38
def <<(seq)
   @seqs[seq.id] = seq
   @cols = seq.cols if self.cols.nil?
   raise "Aligned sequence #{seq.id} has a different length (#{seq.cols} vs #{self.cols})" unless seq.cols == self.cols
end
get_ids() click to toggle source
# File lib/rocker/alignment.rb, line 43
def get_ids
   regexps = [/^[A-Za-z]+\|([A-Za-z0-9_]+)\|/, /^([A-Za-z0-9_]+)$/, /^([A-Za-z0-9_]+) /]
   prot_ids = []
   self.seqs.keys.each do |id|
      prot_id = nil
      regexps.each do |regexp|
         unless regexp.match(id).nil?
            prot_id = $1
            break
         end
      end
      prot_ids << prot_id unless prot_id.nil?
   end
   prot_ids
end
read_fasta(file) click to toggle source
# File lib/rocker/alignment.rb, line 16
def read_fasta(file) self.read_file(file, false) end
read_file(file, is_rocker) click to toggle source
# File lib/rocker/alignment.rb, line 18
def read_file(file, is_rocker)
   f = File.open(file, 'r')
   id = nil
   sq = ""
   while ln = f.gets
      if is_rocker
         next if /^#:(.*)/.match(ln).nil?
         ln = $1
      end
      m = /^>(\S+)/.match(ln)
      if m.nil?
         sq += ln
      else
         self << Sequence.new(id, sq) unless id.nil?
         id = m[1]
         sq = ""
      end
   end
   self << Sequence.new(id, sq) unless id.nil?
end
read_rocker(file) click to toggle source
# File lib/rocker/alignment.rb, line 17
def read_rocker(file) self.read_file(file, true) end
seq(id) click to toggle source
# File lib/rocker/alignment.rb, line 58
def seq(id) @seqs[id] end
size() click to toggle source
# File lib/rocker/alignment.rb, line 59
def size() self.seqs.size end
to_s() click to toggle source
# File lib/rocker/alignment.rb, line 61
def to_s() self.seqs.values.map{|s| s.to_s}.join + "\n" end
to_seq_s() click to toggle source
# File lib/rocker/alignment.rb, line 60
def to_seq_s() self.seqs.values.map{|s| s.to_seq_s}.join + "\n" end