class MS::Sim_Digester
Public Class Methods
new(opts,db)
click to toggle source
# File lib/ms/sim_digester.rb, line 12 def initialize(opts,db) @db = db @db.execute "CREATE TABLE IF NOT EXISTS digested(prot_id INTEGER PRIMARY KEY,header TEXT, abu REAL, sequence TEXT, peptides TEXT)" @digestor = opts[:digestor] @pH = opts[:pH] @missed_cleavages = opts[:missed_cleavages] @modifications = Modifications.new(opts[:modifications]).modifications @digested = nil end
Public Instance Methods
create_digested(file)
click to toggle source
# File lib/ms/sim_digester.rb, line 22 def create_digested(file) abundances = [] headers = [] inFile = File.open(file,"r") seq = "" inFile.each_line do |sequence| if sequence =~ />/ headers<<sequence num = sequence.match(/\#.+/).to_s.chomp.gsub('#','') if num != "" abundances<<(num.to_f)*10.0**-2 else abundances<<1.0 end sequence seq = seq<<";" elsif sequence == "/n"; else seq = seq<<sequence.chomp.upcase end end inFile.close proteins = seq.split(/;/).delete_if{|str| str == ""} trypsin = Mspire::Digester[@digestor] @digested = [] proteins.each_with_index do |prot,index| dig = trypsin.digest(prot,@missed_cleavages) # two missed cleavages for fig 6 @db.execute "INSERT INTO digested(header,abu,sequence,peptides) VALUES(\"#{headers[index]}\",#{abundances[index]},\"#{prot}\",'#{dig}')" dig.each do |d| d.abu = abundances[index] d.prot_id = index @digested<<d end end proteins.clear dige = @digested.uniq! num_digested = @digested.size puts "Number of peptides: #{num_digested}" end
digest(file)
click to toggle source
# File lib/ms/sim_digester.rb, line 65 def digest(file) prog = Progress.new("Creating peptides '#{file}':") create_digested(file) i = 0 count = 0 num = 0 total = @digested.size step = total/100.0 @digested.each do |peptide_seq| if count > step * (num + 1) num = ((count/total.to_f)*100.0).to_i prog.update(num) end charge_ratio = charge_at_pH(identify_potential_charges(peptide_seq), @pH) charge_f = charge_ratio.floor charge_c = charge_ratio.ceil peptide_f = MS::Peptide.new(peptide_seq, charge_f, peptide_seq.abu,@db,i,peptide_seq.prot_id,@modifications) if charge_f != 0 i += 1 if charge_f != 0 peptide_c = MS::Peptide.new(peptide_seq, charge_c, peptide_seq.abu,@db,i,peptide_seq.prot_id,@modifications) if charge_c != 0 i += 1 if charge_c != 0 count += 1 end prog.finish! end