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