Attention: We made this custom calculator in ~2008 based on another script. There is a beautiful and modern tool now, which automatically uses a variety of values.

Input string:
" . \$string = \$_POST['string']; //Which letter appears how often? (save it in \$count[LETTER] ) echo "

Counts:
"; foreach (count_chars(\$string, 1) as \$i => \$val) { echo "
" . chr(\$i) . " (" . \$beauty[chr(\$i)] . "): " . \$val . "
"; \$count[chr(\$i)] = \$val; } echo "
Number of C-Charges: " . \$_POST['numc'] . "
"; echo "Number of NH2-Charges: " . \$_POST['numn']; echo "

"; //Calculation from Lukasz Kozlowski: http://isoelectric.ovh.org/files/practise-isoelectric-point.html \$pH = 0; \$NQ = 1; \$epsilon = 0.001; \$iterator = 0; echo "

"; while (\$NQ > 0) { \$pH = \$pH + \$epsilon; \$QN1 = 0; \$QP2 = 0; \$QN1 = (-\$_POST['numc'] / (1 + pow(10, (\$_POST['cterm'] - \$pH)))); //C-terminal charge \$QN2 = -\$count['D'] / (1 + pow(10, (\$_POST['d'] - \$pH))); //D charge \$QN3 = -\$count['E'] / (1 + pow(10, (\$_POST['e'] - \$pH))); //E charge \$QN4 = -\$count['C'] / (1 + pow(10, (\$_POST['c'] - \$pH))); //C charge \$QN5 = -\$count['Y'] / (1 + pow(10, (\$_POST['y'] - \$pH))); //Y charge \$QP1 = \$count['H'] / (1 + pow(10, (\$pH - \$_POST['h']))); //H charge \$QP2 = \$_POST['numn'] / (1 + pow(10, (\$pH - \$_POST['nh2']))); //NH2charge \$QP3 = \$count['K'] / (1 + pow(10, (\$pH - \$_POST['k']))); //K charge \$QP4 = \$count['R'] / (1 + pow(10, (\$pH - \$_POST['r']))); //R charge \$NQ = \$QN1 + \$QN2 + \$QN3 + \$QN4 + \$QN5 + \$QP1 + \$QP2 + \$QP3 + \$QP4; \$iterator++; if (\$iterator >= 100) {echo ""; \$iterator = 0;} if (\$pH > 14) {echo "
ERROR: pH > 14 !!!";} } \$treffer = \$pH; while (\$pH < 14) { \$pH = \$pH + \$epsilon; \$QN1 = 0; \$QP2 = 0; \$QN1 = (-\$_POST['numc'] / (1 + pow(10, (\$_POST['cterm'] - \$pH)))); //C-terminal charge \$QN2 = -\$count['D'] / (1 + pow(10, (\$_POST['d'] - \$pH))); //D charge \$QN3 = -\$count['E'] / (1 + pow(10, (\$_POST['e'] - \$pH))); //E charge \$QN4 = -\$count['C'] / (1 + pow(10, (\$_POST['c'] - \$pH))); //C charge \$QN5 = -\$count['Y'] / (1 + pow(10, (\$_POST['y'] - \$pH))); //Y charge \$QP1 = \$count['H'] / (1 + pow(10, (\$pH - \$_POST['h']))); //H charge \$QP2 = \$_POST['numn'] / (1 + pow(10, (\$pH - \$_POST['nh2']))); //NH2charge \$QP3 = \$count['K'] / (1 + pow(10, (\$pH - \$_POST['k']))); //K charge \$QP4 = \$count['R'] / (1 + pow(10, (\$pH - \$_POST['r']))); //R charge \$NQ = \$QN1 + \$QN2 + \$QN3 + \$QN4 + \$QN5 + \$QP1 + \$QP2 + \$QP3 + \$QP4; \$iterator++; if (\$iterator >= 100) {echo ""; \$iterator = 0;} } echo "
 " . \$pH . " " . \$NQ . " " . \$pH . " " . \$NQ . "

Protein isoelectric point:" . \$treffer . "
"; } ?>
Sequence:

 Value for C-terminal charge: Value for D(Asp) charge: Value for E(Glu) charge: Value for C(Cys) charge: Value for Y(Tyr) charge: Value for H(His) charge: Value for K(Lys) charge: Value for R(Arg) charge: Value for NH2charge :
Number of C charges
Number of NH2 charges

sourcecode. Author: Michael Senkler. Adapted script from: Lukasz Kozlowski
Legal Information:
Web Editor: Michael Senkler.
Address: Leibniz Universität Hannover - Institut für Pflanzengenetik - Herrenhäuser Str. 2 - 30419 Hannover