* Copyright (C) 2023 Dennis J. Darland
* This file is part of Dennis J Darland's Glucose Prediction Software.
* It is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* This is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with it. If not, see .
&DUMP = 0
&TRACE = 0
datechar = "0123456789/"
echo = 0
dig = "0123456789.-"
eqno = 1
OUTPUT('out',3,128,'relate_several_cross_out5.mxt')
OUT = 'low_actual := 99999999.0;'
OUT = 'low_prediction := 99999999.0;'
OUT = 'high_actual := 0.0;'
OUT = 'high_prediction := 0.0;'
TRACE('prediction')
TRACE('C_ksteps')
TRACE('C2_ksteps')
TRACE('equation')
OUT = "# Copyright (C) 2023 Dennis J. Darland"
OUT = "# This file is part of Dennis J Darland's Glucose Prediction Software."
OUT = "# darland's philosophy is free software: you can redistribute it and/or modify"
OUT = "# it under the terms of the GNU General Public License as published by"
OUT = "# the Free Software Foundation, either version 3 of the License, or"
OUT = "# (at your option) any later version."
OUT = "# This is distributed in the hope that it will be useful, "
OUT = "# but WITHOUT ANY WARRANTY; without even the implied warranty of"
OUT = "# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the"
OUT = "# GNU General Public License for more details."
OUT = "# You should have received a copy of the GNU General Public License"
OUT = "# along with darland's philosophy. If not, see ."
INPUT('recommended',2,128,'recommended.txt')
recommended_ksteps = recommended
kstep_exponent = recommended
kstep_factor = recommended
recommended_fat = recommended
recommended_carb = recommended
recommended_prot = recommended
recommended_fiber = recommended
recommended_sugar = recommended
recommended_saturated = recommended
delta_method = recommended
kstep_method = recommended
order2 = recommended
factor1 = recommended
factor2 = recommended
result_file = recommended
recommended_fasted = recommended
prior_factor = recommended
fasted_factor = recommended
eliminate_extremes = recommended
metabolism = recommended
cal_per_gram_carb = recommended
cal_per_gram_prot = recommended
cal_per_gram_fat = recommended
cal_per_ksteps = recommended
recommended_carb_other = recommended_carb - recommended_fiber - recommended_sugar
recommended_fat_other = recommended_fat - recommended_saturated
out = 'recommended_ksteps := ' recommended_ksteps ';'
out = 'kstep_exponent := ' kstep_exponent ';'
out = 'kstep_factor := ' kstep_factor ';'
out = 'recommended_fat := ' recommended_fat ';'
out = 'recommended_carb := ' recommended_carb ';'
out = 'recommended_prot := ' recommended_prot ';'
out = 'recommended_fiber := ' recommended_fiber ';'
out = 'recommended_sugar := ' recommended_sugar ';'
out = 'recommended_saturated := ' recommended_saturated ';'
out = 'delta_method := ' delta_method ';'
out = 'kstep_method := ' kstep_method ';'
out = 'order2 := ' order2 ';'
out = 'factor1 := ' factor1 ';'
out = 'factor2 := ' factor2 ';'
out = 'fasted_factor := ' fasted_factor ';'
out = 'recommended_fasted := ' recommended_fasted ';'
out = 'recommended_carb_other := ' recommended_carb_other ';'
out = 'recommended_fat_other := ' recommended_fat_other ';'
out = 'eliminate_extremes := ' eliminate_extremes ';'
out = 'cal_per_gram_carb := ' cal_per_gram_carb ';'
out = 'cal_per_gram_fat := ' cal_per_gram_fat ';'
out = 'cal_per_gram_prot := ' cal_per_gram_prot ';'
out = 'cal_per_ksteps := ' cal_per_ksteps ';'
INPUT('results_cross',9,128,result_file)
C_ksteps = results_cross
C_fat_other = results_cross
C_carb_other = results_cross
C_protein = results_cross
C_fiber = results_cross
C_sugar = results_cross
C_saturated = results_cross
C_fasted = results_cross
* C_metabolism = results_cross
C2_ksteps = results_cross
C2_fat_Other = results_cross
C2_carb_Other = results_cross
C2_protein = results_cross
C2_fiber = results_cross
C2_sugar = results_cross
C2_saturated = results_cross
C2_ksteps_fat_other = results_cross
C2_carb_other_fat_other = results_cross
C2_protein_fat_other = results_cross
C2_fiber_fat_other = results_cross
C2_sugar_fat_other = results_cross
C2_saturated_fat_other = results_cross
C2_ksteps_carb_other = results_cross
C2_protein_carb_other = results_cross
C2_fiber_carb_other = results_cross
C2_sugar_carb_other = results_cross
C2_saturated_carb_other = results_cross
C2_ksteps_protein = results_cross
C2_fiber_protein = results_cross
C2_sugar_protein = results_cross
C2_saturated_protein = results_cross
C2_ksteps_fiber = results_cross
C2_sugar_fiber = results_cross
C2_saturated_fiber = results_cross
C2_ksteps_sugar = results_cross
C2_saturated_sugar = results_cross
C2_ksteps_saturated = results_cross
###############
OUT = "prior_factor := " prior_factor ";"
OUT = "fasted_factor := " fasted_factor ";"
OUT = "count := 0.0;"
OUT = "min_perc_err := 99999999.0;"
OUT = "max_perc_err := 0;"
OUT = "tot_perc_err := 0;"
OUT = "C_ksteps := " C_Ksteps ";"
OUT = "C_fat_other := " C_Fat_other ";"
OUT = "C_carb_other := " C_Carb_other ";"
OUT = "C_protein := " C_Protein ";"
OUT = "C_fiber := " C_Fiber ";"
OUT = "C_sugar := " C_Sugar ";"
OUT = "C_saturated := " C_Saturated ";"
OUT = "C_fasted := " C_Fasted ";"
* OUT = "C_metabolism:= " C_Metabolism ";"
LT(order2,2) :s(skip3)
OUT = "C2_ksteps := " C2_Ksteps ";"
OUT = "C2_fat_other := " C2_Fat_other ";"
OUT = "C2_carbl_other := " C2_Carb_other ";"
OUT = "C2_protein := " C2_Protein ";"
OUT = "C2_fiber := " C2_Fiber ";"
OUT = "C2_sugar := " C2_Sugar ";"
OUT = "C2_saturated := " C2_Saturated ";"
LT(order2,3) :s(skip3)
OUT = "C2_ksteps_fat_other := " C2_ksteps_Fat_other ";"
OUT = "C2_carb_other_fat_other := " C2_Carb_other_Fat_other ";"
OUT = "C2_protein_fat_other := " C2_Protein_Fat_other ";"
OUT = "C2_fiber_fat_other := " C2_Fiber_Fat_other ";"
OUT = "C2_sugar_fat_other := " C2_Sugar_Fat_other ";"
OUT = "C2_saturated_fat_other := " C2_Saturated_Fat_other ";"
OUT = "C2_ksteps_carb_other := " C2_ksteps_Carb_other ";"
OUT = "C2_protein_carb_other := " C2_Protein_Carb_other ";"
OUT = "C2_fiber_carb_other := " C2_Fiber_Carb_other ";"
OUT = "C2_sugar_carb_other := " C2_Sugar_Carb_other ";"
OUT = "C2_saturated_carb_other := " C2_Saturated_Carb_other ";"
OUT = "C2_ksteps_protein := " C2_ksteps_Protein ";"
OUT = "C2_fiber_protein := " C2_Fiber_Protein ";"
OUT = "C2_sugar_protein := " C2_Sugar_Protein ";"
OUT = "C2_saturated_protein := " C2_Saturated_Protein ";"
OUT = "C2_ksteps_fiber := " C2_ksteps_Fiber ";"
OUT = "C2_sugar_fiber := " C2_Sugar_Fiber ";"
OUT = "C2_saturated_fiber := " C2_Saturated_Fiber ";"
OUT = "C2_ksteps_sugar := " C2_ksteps_Sugar ";"
OUT = "C2_saturated_sugar := " C2_Saturated_Sugar ";"
OUT = "C2_ksteps_saturated := " C2_ksteps_Saturated ";"
##########
skip3
LINE = INPUT :F(END)
TOP2 LINE = INPUT :F(FINISH)
TOP LINE SPAN(datechar) . occurred ARB . part1 RPOS(0) :f(TOP2)
part1 SPAN(' \t') SPAN(dig) . glucose ARB . part2 RPOS(0)
part2 SPAN(' \t') SPAN(dig) . pglucose ARB . part3 RPOS(0)
part3 SPAN(' \t') SPAN(dig) . cal ARB . part4 RPOS(0)
part4 SPAN(' \t') SPAN(dig) . ksteps ARB . part5 RPOS(0)
part5 SPAN(' \t') SPAN(dig) . fat ARB . part6 RPOS(0)
part6 SPAN(' \t') SPAN(dig) . carb ARB . part7 RPOS(0)
part7 SPAN(' \t') SPAN(dig) . prot ARB . part8 RPOS(0)
part8 SPAN(' \t') SPAN(dig) . fiber ARB . part9 RPOS(0)
part9 SPAN(' \t') SPAN(dig) . sugar ARB . part10 RPOS(0)
part10 SPAN(' \t') SPAN(dig) . saturated ARB . part11 RPOS(0)
part11 SPAN(' \t') SPAN(dig) . fasted ARB RPOS(0)
OUT = 'ksteps := ' ksteps ';'
OUT = 'kstep_factor := ' kstep_factor ';'
OUT = 'fat := ' fat ';'
OUT = 'carb := ' carb ';'
OUT = 'prot := ' prot ';'
OUT = 'fiber := ' fiber ';'
OUT = 'sugar := ' sugar ';'
OUT = 'saturated := ' saturated ';'
OUT = 'fasted := ' fasted ';'
OUT = 'fat_other := ' fat - saturated ';'
OUT = 'carb_other := ' carb - fiber - sugar ';'
didk1 eq(delta_method,3) :s(method3)
eq(delta_method,1) :s(method1)
OUT = 'delta_ksteps := ((' recommended_ksteps ' - ' ksteps ') * ' kstep_factor ' ) / ' recommended_ksteps ' / recommended_ksteps ;'
OUT = 'delta_fat_other := (fat_other - recommended_fat_other) / recommended_fat_other / recommended_fat_other;'
OUT = 'delta_carb_other := (carb_other - recommended_carb_other) / recommended_carb_other / recommended_carb_other;'
OUT = 'delta_prot := (prot - recommended_prot) / recommended_prot / recommended_prot;'
OUT = 'delta_fiber := (fiber - recommended_fiber) / recommended_fiber / recommended_fiber;'
OUT = 'delta_sugar := (sugar - recommended_sugar) / recommended_sugar / recommended_sugar;'
OUT = 'delta_saturated := (saturated - recommended_saturated) / recommended_saturated / recommended_saturated;'
OUT = 'delta_fasted := (fasted - recommended_fasted) * fasted_factor / recommended_fasted / recommended_fasted;'
:(didm2)
method1
OUT = 'delta_ksteps := ((' recommended_ksteps ' - ' ksteps ') * ' kstep_factor ' ) / ' recommended_ksteps ' ;'
OUT = 'delta_fat_other := (fat_other - recommended_fat_other) / recommended_fat_other;'
OUT = 'delta_carb_other := (carb_other - recommended_carb_other) / recommended_carb_other;'
OUT = 'delta_prot := (prot - recommended_prot) / recommended_prot;'
OUT = 'delta_fiber := (fiber - recommended_fiber) / recommended_fiber;'
OUT = 'delta_sugar := (sugar - recommended_sugar) / recommended_sugar;'
OUT = 'delta_saturated := (saturated - recommended_saturated) / recommended_saturated;'
OUT = 'delta_fasted := (fasted - recommended_fasted) * fasted_factor / recommended_fasted ;' :(didm2)
method3
OUT = 'delta_ksteps := (recommended_ksteps - ksteps) * kstep_factor;'
OUT = 'delta_fat_other := (fat_other - recommended_fat_other);'
OUT = 'delta_carb_other := (carb_other - recommended_carb_other);'
OUT = 'delta_prot := (prot - recommended_prot);'
OUT = 'delta_fiber := (fiber - recommended_fiber);'
OUT = 'delta_sugar := (sugar - recommended_sugar);'
OUT = 'delta_saturated := (saturated - recommended_saturated);'
OUT = 'delta_fasted := (fasted - recommended_fasted) * fasted_factor;'
didm2
OUT = 'it_previous := ' pglucose ';'
OUT = 'metabolism := ' metabolism ';'
OUT = 'it_ksteps := (C_ksteps) * (delta_ksteps);'
OUT = 'it_fat_other := factor1 * ( C_fat_other ) * ( (delta_fat_other) );'
OUT = 'it_carb_other := factor1 * ( C_carb_other ) * ( (delta_carb_other) );'
OUT = 'it_prot := factor1 * ( C_protein ) * ( (delta_prot) );'
OUT = 'it_fiber := factor1 * ( C_fiber ) * ( (delta_fiber) );'
OUT = 'it_sugar := factor1 * ( C_sugar ) * ( (delta_sugar) );'
OUT = 'it_saturated := factor1 * ( C_saturated ) * ( (delta_saturated) );'
OUT = 'it_fasted := ( C_fasted ) * ( (delta_fasted) );'
* OUT = 'it_metabolism := factor1 * ( C_metabolism ); '
OUT = 'prediction := evalf(it_previous * prior_factor'
OUT = ' + metabolism'
OUT = ' + it_ksteps * cal_per_ksteps'
OUT = ' + it_fat_other * cal_per_gram_fat'
OUT = ' + it_carb_other * cal_per_gram_carb'
OUT = ' + it_prot * cal_per_gram_prot'
OUT = ' + it_fiber * cal_per_gram_carb'
OUT = ' + it_sugar * cal_per_gram_carb'
OUT = ' + it_saturated * cal_per_gram_fat'
OUT = ' + it_fasted);'
OUT = 'it_previous := ' pglucose ';'
OUTPUT = "before 1A order = " order2
LE(order2,1) :s(DOING_1A)
OUTPUT = " DOING 2A"
OUT = " + " factor2 " * (" C2_ksteps ") * (" (delta_ksteps) ") * (" (delta_ksteps) ")"
OUT = " + " factor2 " * (" C2_fat_other ") * (" (delta_fat_other) ") * (" (delta_fat_other) ")"
OUT = " + " factor2 " * (" C2_carb_other ") * (" (delta_carb_other) ") * (" (delta_carb_other) ")"
OUT = " + " factor2 " * (" C2_protein ") * (" (delta_prot) ") * (" (delta_prot) ")"
OUT = " + " factor2 " * (" C2_fiber ") * (" (delta_fiber) ") * (" (delta_fiber) ")"
OUT = " + " factor2 " * (" C2_sugar ") * (" (delta_sugar) ") * (" (delta_sugar) ")"
OUT = " + " factor2 " * (" C2_saturated ") * (" (delta_saturated) ") * (" (delta_saturated) ")"
LE(order2,2) :s(DOING_1A)
OUT = " + " factor2 " * (" C2_ksteps_fat_other ") * (" (delta_ksteps) ") * (" (delta_fat_other) ")"
OUT = " + " factor2 " * (" C2_carb_other_fat_other ") * (" (delta_carb_other) ") * (" (delta_fat_other) ")"
OUT = " + " factor2 " * (" C2_protein_fat_other ") * (" (delta_prot) ") * (" (delta_fat_other) ")"
OUT = " + " factor2 " * (" C2_fiber_fat_other ") * (" (delta_fiber) ") * (" (delta_fat_other) ")"
OUT = " + " factor2 " * (" C2_sugar_fat_other ") * (" (delta_sugar) ") * (" (delta_fat_other) ")"
OUT = " + " factor2 " * (" C2_saturated_fat_other ") * (" (delta_saturated) ") * (" (delta_fat_other) ")"
OUT = " + " factor2 " * (" C2_ksteps_carb_other ") * (" (delta_ksteps) ") * (" (delta_carb_other) ")"
OUT = " + " factor2 " * (" C2_protein_carb_other ") * (" (delta_prot) ") * (" (delta_carb_other) ")"
OUT = " + " factor2 " * (" C2_fiber_carb_other ") * (" (delta_fiber) ") * (" (delta_carb_other) ")"
OUT = " + " factor2 " * (" C2_sugar_carb_other ") * (" (delta_sugar) ") * (" (delta_carb_other) ")"
OUT = " + " factor2 " * (" C2_saturated_carb_other ") * (" (delta_saturated) ") * (" (delta_carb_other) ")"
OUT = " + " factor2 " * (" C2_ksteps_protein ") * (" (delta_ksteps) ") * (" (delta_prot) ")"
OUT = " + " factor2 " * (" C2_fiber_protein ") * (" (delta_fiber) ") * (" (delta_prot) ")"
OUT = " + " factor2 " * (" C2_sugar_protein ") * (" (delta_sugar) ") * (" (delta_prot) ")"
OUT = " + " factor2 " * (" C2_saturated_protein ") * (" (delta_saturated) ") * (" (delta_prot) ")"
OUT = " + " factor2 " * (" C2_ksteps_fiber ") * (" (delta_ksteps) ") * (" (delta_fiber) ")"
OUT = " + " factor2 " * (" C2_sugar_fiber ") * (" (delta_sugar) ") * (" (delta_fiber) ")"
OUT = " + " factor2 " * (" C2_saturated_fiber ") * (" (delta_saturated) ") * (" (delta_fiber) ")"
OUT = " + " factor2 " * (" C2_ksteps_sugar ") * (" (delta_ksteps) ") * (" (delta_sugar) ")"
OUT = " + " factor2 " * (" C2_saturated_sugar ") * (" (delta_saturated) ") * (" (delta_sugar) ")"
OUT = " + " factor2 " * (" C2_ksteps_saturated ") * (" (delta_ksteps) ") * (" (delta_saturated) ")"
DOING_1A
OUTPUT = "DID 1A"
OUTPUT = "eqno = " eqno
OUTPUT = "equation = " equation
eqno = eqno + 1
OUT = 'actual := ' glucose ';'
OUT = 'previous := ' pglucose ';'
OUT = 'err := abs(prediction - actual);'
OUT = 'perc_err := abs(err * 100.0) / actual;'
OUT = 'delta_glucose := abs(previous - actual);'
OUT = 'perc_delta := (delta_glucose * 100.0) / actual;'
OUT = 'if (perc_err < min_perc_err) then min_perc_err := perc_err; fi;'
OUT = 'if (perc_err > max_perc_err) then max_perc_err := perc_err; fi;'
OUT = 'tot_perc_err := tot_perc_err + perc_err;'
OUT = 'if (actual < low_actual) then low_actual := actual; fi;'
OUT = 'if (actual > high_actual) then high_actual := actual; fi;'
OUT = 'if (prediction < low_prediction) then low_prediction := prediction; fi;'
OUT = 'if (prediction > high_prediction) then high_prediction := prediction; fi;'
OUT = 'count := count + 1.0;'
* This becomes row in table2
out = 'out2 := [count, perc_err, actual,prediction,it_previous,it_previous * prior_factor,metabolism,it_ksteps * cal_per_ksteps,it_fat_other*cal_per_gram_fat,it_carb_other*cal_per_gram_carb,it_prot*cal_per_gram_prot,it_fiber*cal_per_gram_carb,it_sugar*cal_per_gram_carb,it_saturated*cal_per_gram_fat,it_fasted,order2, delta_method, kstep_method, recommended_ksteps, kstep_exponent, kstep_factor, recommended_fat, recommended_carb, recommended_prot, recommended_fiber, recommended_sugar, recommended_saturated ,factor1, factor2, recommended_fasted,prior_factor,fasted_factor,eliminate_extremes,ksteps,fat_other,carb_other,prot,fiber,sugar,saturated,fasted,C_ksteps,C_fat_other,C_carb_other,C_protein,C_fiber,C_sugar,C_saturated,C_fasted,cal_per_gram_carb,cal_per_gram_prot,cal_per_gram_fat,cal_per_ksteps];'
out = 'writedata("OUT/out' eqno '_work.tmp", out2);'
LINE = INPUT :S(TOP)
FINISH
OUT = 'order2 := ' order2 ';'
OUT = 'factor1 := ' factor1 ';'
OUT = 'factor2 := ' factor2 ';'
OUT = 'delta_method := ' delta_method ';'
OUT = 'kstep_method := ' kstep_method ';'
OUT = 'recommended_ksteps := ' recommended_ksteps ';'
OUT = 'kstep_exponent := ' kstep_exponent ';'
OUT = 'kstep_factor := ' kstep_factor ';'
OUT = 'recommended_fat := ' recommended_fat ';'
OUT = 'recommended_carb := ' recommended_carb ';'
OUT = 'recommended_prot := ' recommended_prot ';'
OUT = 'recommended_fiber := ' recommended_fiber ';'
OUT = 'recommended_sugar := ' recommended_sugar ';'
OUT = 'recommended_saturated := ' recommended_saturated ';'
OUT = 'recommended_fasted := ' recommended_fasted ';'
OUT = 'print("max_perc_err := ", max_err);'
OUT = 'ave_perc_err := tot_perc_err / count;'
OUT = 'print("min_max_how_good := ", 100.0 / max_how_good);'
* this becomes row in table.html
OUT = 'out := [ave_perc_err, min_perc_err, max_perc_err, low_actual,high_actual,low_prediction,high_prediction, order2, delta_method, kstep_method, recommended_ksteps, kstep_exponent, kstep_factor, recommended_fat, recommended_carb, recommended_prot, recommended_fiber, recommended_sugar, recommended_saturated ,factor1, factor2, recommended_fasted,prior_factor,fasted_factor,eliminate_extremes,metabolism];'
OUT = 'writedata("entry_work.txt", out);'
out = 'out2 := [0, 0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];'
out = 'writedata("OUT/out___________work.tmp", out2);'
OUT = "quit;"
END