Skip to content

Instantly share code, notes, and snippets.

@event15
Created February 9, 2021 14:59
Show Gist options
  • Save event15/d520647d30acb7f5680cbb32ddc832c5 to your computer and use it in GitHub Desktop.
Save event15/d520647d30acb7f5680cbb32ddc832c5 to your computer and use it in GitHub Desktop.
Badanie poziomu IG produktu
<?php
function incrementalArea(array $levels, float $xUnit = 1.0): float
{
$yFactorTotal = 0.0;
$zeroLevel = $levels[0];
$relativeLevels = array_map(static function ($level) use ($zeroLevel) {
return $level - $zeroLevel;
}, $levels);
$n = count($relativeLevels);
for ($i = 1; $i < $n; $i++) {
$current = $relativeLevels[$i];
$previous = $relativeLevels[$i - 1];
if ($current >= 0 && $previous >= 0) {
// positive trapezoid
$increase = $current + $previous;
} else if ($current <= 0 && $previous <= 0) {
// skipping negative trapezoid
$increase = 0.0;
} else {
$positive = max($previous, $current);
$negative = min($previous, $current);
$increase = $positive * $positive / (abs($negative) + $positive);
}
$yFactorTotal += $increase;
}
return $yFactorTotal * $xUnit / 2.0;
}
$test1 = [90, 93, 145, 206, 217, 205, 189, 163, 159, 126];
$iaucTest1 = incrementalArea($test1, 15.0);
echo "IAUC (test 1) = {$iaucTest1} [min*mg/dL]" . PHP_EOL;
$test2 = [98, 104, 148, 186, 185, 180, 166, 141, 122, 116];
$iaucTest2 = incrementalArea($test2, 15.0);
echo "IAUC (test 2) = {$iaucTest2} [min*mg/dL]" . PHP_EOL;
$test3 = [90, 93, 155, 176, 179, 183, 146, 132, 96, 70];
$iaucTest3 = incrementalArea($test3, 15.0);
echo "IAUC (test 3) = {$iaucTest3} [min*mg/dL]" . PHP_EOL;
$chleb = [92, 94, 102, 128, 125, 125, 99, 96, 90, 88];
$iuacChleb = incrementalArea($chleb, 15.0);
echo "IAUC (chleb) = {$iuacChleb} [min*mg/dL]" . PHP_EOL;
$avg = ($iaucTest1 + $iaucTest2 + $iaucTest3)/3;
echo "AVG tests = " . $avg . ' [min*mg/dL]' . PHP_EOL;
$ig = round(($iuacChleb)/$avg*100.0);
echo "IG (z avg) = {$ig}" . PHP_EOL;
$ig = round(($iuacChleb)/$iaucTest2*100.0);
echo "IG (bez avg) = {$ig}";
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment