class CONSENSUS::Sequences
Public Class Methods
calcConsensus(seqs)
click to toggle source
# File lib/most_frequent_seq.rb, line 39 def self.calcConsensus(seqs) seql = seqs[0].length - 1 seqr = "" #loop through each base index for i in 0..seql #establish array for counting bases at i position bases = [0,0,0,0,0,0,0] # A,G,C,T,N,-,U #for each seq, count the type of base at each index seqs.each { |n| n = n.upcase if(n[i]=='A') bases[0] = bases[0]+1 end if(n[i]=='G') bases[1] = bases[1]+1 end if(n[i]=='C') bases[2] = bases[2]+1 end if(n[i]=='T') bases[3] = bases[3]+1 end if(n[i]=='N') bases[4] = bases[4]+1 end if(n[i]=='-') bases[5] = bases[5]+1 end if(n[i]=='U') bases[6] = bases[6]+1 end } #find the max frequency , most frequent base at this index cb = bases.each_with_index.max[1] #convert back to string if(cb==0) base = 'A' end if(cb==1) base = 'G' end if(cb==2) base = 'C' end if(cb==3) base = 'T' end if(cb==4) base = 'N' end if(cb==5) base = '-' end if(cb==6) base = 'U' end #concat base to our consensus sequence seqr.concat(base.to_s) end return seqr end