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 "" . $pH . " | " . $NQ . " | ";
$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 "
" . $pH . " | " . $NQ . " | ";
$iterator = 0;}
}
echo "
Protein isoelectric point:" . $treffer . "
";
}
?>
sourcecode. Author: Michael Senkler. Adapted script from:
Lukasz Kozlowski