Method: #calc_PI

Defined in:
lib/ms/isoelectric_calc.rb

#calc_PI(pep_charges) ⇒ Object



85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/ms/isoelectric_calc.rb', line 85

def calc_PI(pep_charges)
  pH = 8; pH_prev = 0.0; pH_next = 14.0
  charge = charge_at_pH(pep_charges, pH)
  while pH-pH_prev > Precision and pH_next-pH > Precision
    if charge < 0.0
      tmp = pH
      pH = pH - ((pH-pH_prev)/2)
      charge = charge_at_pH(pep_charges, pH)
      pH_next = tmp
    else
      tmp = pH
      pH = pH + ((pH_next - pH)/2)
      charge = charge_at_pH(pep_charges, pH)
      pH_prev = tmp
    end
    #	puts "charge: #{charge.round(2)}\tpH: #{pH.round(2)}\tpH_next: #{pH_next.round(2)}\tpH_prev: #{pH_prev.round(2)}"
  end
  pH
end