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