def _calciumTablets(): res = [] # source: online shop res += [makeProduct( name = 'calcium dietary supplement "caltrate"', nameShort = 'Ca1', price = 1493, priceMass = 150, # tablets elementsMass = 1, **_convert( elements = makeElements( calcium = (600, 'mg') )))] # source: online shop res += [makeProduct( name = 'ultra calcium with vitamin d3 "vitacost"', nameShort = 'Ca2', dataUrl = 'http://www.vitacost.com/vitacost-ultra-calcium-1200-mg-with-vitamin-d3-700-iu-per-serving-300-softgels-7', price = 1149, priceMass = 150, # tablets elementsMass = 1, **_convert( elements = makeElements( energy = (10, 'kcal'), fat = (1, 'g'), calcium = (1200, 'mg') )))] return res
def _distilledWater(): return [makeProduct( name = 'distilled water', nameShort = 'water', price = 0, priceMass = 100, **_convert( elementsMass = (100, 'g'), elements = makeElements( water = (100, 'g') )))]
def _ironTablets(): # source: online shop return [makeProduct( name = 'iron tablets "nature made"', price = 674, priceMass = 180, # tablets elementsMass = 1, **_convert( elements = makeElements( iron = (65, 'mg') )))]
def _copperTablets(): # source: online shop return [makeProduct( name = 'copper tablets "twinlab"', price = 621, priceMass = 100, # tablets elementsMass = 1, **_convert( elements = makeElements( copper = (2, 'mg') )))]
def _seleniumTablets(): # source: online shop return [makeProduct( name = 'hypo-selenium tablets "douglas laboratories"', price = 1160, priceMass = 90, # tablets elementsMass = 1, **_convert( elements = makeElements( selenium = (200, 'mcg') )))]
def _vitaminB6Tablets(): # source: online shop return [makeProduct( name = 'vitamin b-6 "nature\'s way"', price = 639, priceMass = 100, # tablets elementsMass = 1, **_convert( elements = makeElements( carb = (1, 'g'), vitaminB6 = (100, 'mg') )))]
def _vitaminDTablets(): # source: online shop return [makeProduct( name = 'vitamin d "vitacost"', nameShort = 'vit d', dataUrl = 'http://www.vitacost.com/vitacost-vitamin-d3-as-cholecalciferol-1000-iu-200-capsules-1', price = 599, priceMass = 200, # tablets elementsMass = 1, **_convert( elements = makeElements( vitaminD = (1000, 'IU_vitaminD') )))]
def _vitaminB12Tablets(): # source: online shop return [makeProduct( name = 'vitamin b-12 tablets "solgar"', nameShort = 'vit b12', dataUrl = 'http://www.vitacost.com/solgar-vitamin-b12-100-mcg-100-tablets', price = 559, priceMass = 100, # tablets elementsMass = 1, **_convert( elements = makeElements( vitaminB12 = (100, 'mcg') )))]
def _potassiumPowder(): # source: http://www.iherb.com/Now-Foods-Potassium-Chloride-Powder-8-oz-227-g/777 return [makeProduct( name = 'potassium chloride powder "bulk supplements"', nameShort = 'K', dataUrl = 'http://www.amazon.com/BulkSupplements-Potassium-Chloride-Powder-grams/dp/B00ENS39WG', price = 1996, **_convert( priceMass = (1000, 'g'), elementsMass = (1.4, 'g'), elements = makeElements( potassium = (730, 'mg') )))]
def _molybdenumTablets(): # source: online shop return [makeProduct( name = 'molybdenum tablets "kal"', nameShort = 'Mo', dataUrl = 'http://www.vitacost.com/kal-molybdenum-chelated-250-mcg-100-microtablets', price = 499, priceMass = 100, # tablets elementsMass = 1, **_convert( elements = makeElements( molybdenum = (250, 'mcg') )))]
def _biotinTablets(): # source: online shop return [makeProduct( name = 'biotin "source naturals"', nameShort = 'biotin', dataUrl = 'http://www.vitacost.com/source-naturals-biotin-600-mcg-200-tablets', price = 709, priceMass = 200, # tablets elementsMass = 1, **_convert( elements = makeElements( biotin = (600, 'mcg') )))]
def _iodineTablets(): # source: online shop return [makeProduct( name = 'kelp tablets "nature\'s way"', nameShort = 'I', dataUrl = 'http://www.vitacost.com/natures-way-kelp', price = 569, priceMass = 180, # tablets elementsMass = 1, **_convert( elements = makeElements( iodine = (400, 'mcg') )))]
def _chromiumTablets(): # source: online shop return [makeProduct( name = 'chromium picolinate tablets "vitacost"', nameShort = 'Cr', dataUrl = 'http://www.vitacost.com/vitacost-chromium-picolinate', price = 939, priceMass = 300, # tablets elementsMass = 1, **_convert( elements = makeElements( chromium = (200, 'mcg') )))]
def _cholineTablets(): # source: online shop return [makeProduct( name = 'choline tablets "nature\'s way"', nameShort = 'choline', dataUrl = 'http://www.vitacost.com/natures-way-choline', price = 639, priceMass = 100, # tablets elementsMass = 1, **_convert( elements = makeElements( choline = (500, 'mg') )))]
def _zincTablets(): # source: online shop return [makeProduct( name = 'zinc tablets "vitacost"', nameShort = 'Zn', dataUrl = 'http://www.vitacost.com/vitacost-l-optizinc', price = 899, priceMass = 200, # tablets elementsMass = 1, **_convert( elements = makeElements( zinc = (30, 'mg') )))]
def _riboflavinTablets(): # source: online shop return [makeProduct( name = 'vitamin b-2 "solgar"', nameShort = 'vit b2', dataUrl = 'http://www.vitacost.com/solgar-vitamin-b2-riboflavin-50-mg-100-tablets', price = 719, priceMass = 100, # tablets elementsMass = 1, **_convert( elements = makeElements( riboflavin = (50, 'mg') )))]
def _potassiumTablets(): # source: online shop return [makeProduct( name = 'potassium citrate "vitacost"', nameShort = 'K2', dataUrl = 'http://www.vitacost.com/vitacost-potassium-citrate', price = 699, priceMass = 300, # tablets elementsMass = 1, **_convert( elements = makeElements( potassium = (99, 'mg') )))]
def _vitaminCTablets(): # source: online shop return [makeProduct( name = 'vitamin c tablets "vitacost"', nameShort = 'vit c', dataUrl = 'http://www.vitacost.com/vitacost-vitamin-c-1000-mg-250-capsules', price = 1176, priceMass = 250, # tablets elementsMass = 1, **_convert( elements = makeElements( vitaminC = (1000, 'mg') )))]
def _magnesiumTablets(): # source: online shop return [makeProduct( name = 'magnesium tablets "vitacost"', nameShort = 'Mg', dataUrl = 'http://www.vitacost.com/vitacost-magnesium-400-mg-200-capsules-1', price = 649, priceMass = 200, # tablets elementsMass = 1, **_convert( elements = makeElements( magnesium = (400, 'mg'), magnesiumSup = (400, 'mg') )))]
def _floricalTablets(): # source: online shop return [makeProduct( name = 'florical tablets "mericon"', nameShort = 'F', dataUrl = 'http://www.amazon.com/Florical-Calcium-Fluoride-supplements-Industries/dp/B000M4C5TS', price = 1359, priceMass = 100, # tablets elementsMass = 1, **_convert( elements = makeElements( calcium = (145, 'mg'), fluoride = (3.75, 'mg') )))]
def _vitaminETablets(): # source: online shop return [makeProduct( name = 'vitamin e "vitacost"', nameShort = 'vit e', dataUrl = 'http://www.vitacost.com/vitacost-gamma-e-tocopherol-complex-200-iu-60-softgels', price = 899, priceMass = 60, # tablets elementsMass = 1, **_convert( elements = makeElements( vitaminE = (200, 'IU_vitaminE_d_alphatocopherol'), vitaminESup = (200, 'IU_vitaminE_d_alphatocopherol') )))]
def _vitaminKTablets(): # source: online shop return [makeProduct( name = 'vitamin k tablets "vitacost"', nameShort = 'vit k', dataUrl = 'http://www.vitacost.com/vitacost-vitamin-k-complex-with-k1-k2-400-mcg-180-softgels', price = 2499, priceMass = 180, # tablets elementsMass = 1, **_convert( elements = makeElements( vitaminK = (400, 'mcg'), vitaminC = (10, 'mg') )))]
def _optiMen(): # source: package return [makeProduct( name = 'vitamins opti-men "optimum nutrition"', price = 2149, priceMass = 180, **_convert( elementsMass = (3, 'g'), # 3 tablets elements = makeElements( calcium = (200, 'mg'), vitaminA = (10000, 'IU_vitaminA_betacarotine_sup'), vitaminC = (300, 'mg'), vitaminD = (300, 'IU_vitaminD'), vitaminE = (200, 'IU_vitaminE_d_alphatocopherol'), vitaminESup = (200, 'IU_vitaminE_d_alphatocopherol'), vitaminK = (75, 'mcg'), thiamin = (75, 'mg'), riboflavin = (75, 'mg'), niacin = (75, 'mg'), niacinSup = (75, 'mg'), vitaminB6 = (50, 'mg'), folate = (600, 'mcg_folicAcid'), folateSup = (600, 'mcg_folicAcid'), vitaminB12 = (100, 'mcg'), pantothenicAcid = (75, 'mg'), biotin = (300, 'mcg'), choline = (10, 'mg'), chromium = (120, 'mcg'), copper = (2, 'mg'), iodine = (150, 'mcg'), magnesium = (100, 'mg'), magnesiumSup = (100, 'mg'), manganese = (5, 'mg'), molybdenum = (80, 'mcg'), selenium = (200, 'mcg'), zinc = (30, 'mg'), boron = (2, 'mg'), silicon = (5, 'mg'), vanadium = (100, 'mcg') )))]
def elementsPriority(): return dict([(k, 1) for k in makeElements().keys()])
def goal(): mass = 89.0 # kg # There's no need to track what is referenced in DRI tables as "chloride". # It means only chloride part of NaCl, therefore it's tracked implicitly # by tracking sodium. # (Dietary Reference Intakes for Water, Potassium, Sodium, Chloride, and Sulfate) # Dietary Reference Intake Tables (USDA) waterPerDay = 3.7 # kg (AI) sodiumPerDay = 1500.0 # mg (AI) sodiumMaxPerDay = 2300.0 # mg potassiumPerDay = 4700.0 # mg (AI) fiberPerDay = 38.0 # g (AI) sugarMaxEnergyPercent = 25.0 # % ironMaxPerDay = 45.0 # mg calciumPerDay = 1000.0 # mg (RDA) calciumMaxPerDay = 2500.0 # mg vitaminAPerDay = 900.0 # RAE (RDA) retinolMaxPerDay = 3000.0 # mcg vitaminCPerDay = 90.0 # mg (RDA) vitaminCMaxPerDay = 2000.0 # mg vitaminDPerDay = 15.0 # mcg (RDA) vitaminDMaxPerDay = 100.0 # mcg vitaminEPerDay = 15.0 # mg (RDA) vitaminESupMaxPerDay = 1000.0 # mg vitaminKPerDay = 120.0 # mcg (AI) thiaminPerDay = 1.2 # mg (RDA) riboflavinPerDay = 1.3 # mg (RDA) niacinPerDay = 16.0 # mg (RDA) niacinSupMaxPerDay = 35.0 # mg vitaminB6PerDay = 1.3 # mg (RDA) vitaminB6MaxPerDay = 100.0 # mg folatePerDay = 400.0 # DFE (RDA) folateSupMaxPerDay = 1000.0 # DFE vitaminB12PerDay = 2.4 # mcg (RDA) pantothenicAcidPerDay = 5.0 # mg (AI) biotinPerDay = 30.0 # mcg (AI) cholinePerDay = 550.0 # mg (AI) cholineMaxPerDay = 3500.0 # mg chromiumPerDay = 35.0 # mcg (AI) copperPerDay = 900.0 # mcg (RDA) copperMaxPerDay = 10000.0 # mcg fluoridePerDay = 4.0 # mg (AI) fluorideMaxPerDay = 10.0 # mg iodinePerDay = 150.0 # mcg (RDA) iodineMaxPerDay = 1100.0 # mcg magnesiumPerDay = 420.0 # mg (RDA) magnesiumSupMaxPerDay = 350.0 # mg manganesePerDay = 2.3 # mg (AI) manganeseMaxPerDay = 11.0 # mg molybdenumPerDay = 45.0 # mcg (RDA) molybdenumMaxPerDay = 2000.0 # mcg phosphorusPerDay = 700.0 # mg (RDA) phosphorusMaxPerDay = 4000.0 # mg seleniumPerDay = 55.0 # mcg (RDA) seleniumMaxPerDay = 400.0 # mcg zincPerDay = 11.0 # mg (RDA) zincMaxPerDay = 40.0 # mg boronMaxPerDay = 20.0 # mg nickelMaxPerDay = 1.0 # mg siliconMaxPerDay = 0 vanadiumMaxPerDay = 1.8 # mg # Treating High Level Cholesterol (National Heart, Lung and Blood Institute) fatSatMaxEnergyPercent = 7.0 # % cholMaxPerDay = 200.0 # mg # Google fatEnergyPerGram = 9.0 # kcal carbEnergyPerGram = 4.0 # kcal # The Complete Guide to Food for Sports Performance (Burke, Cox) # pick products with low (GI < 55)-to-moderate (55 < GI < 70) sugar range # use www.glycemicindex.com to find product GI fatEnergyPercent = 25.0 # % carbScaleLow = 3.0 # g*kg-1 light training program carbScaleMed = 7.0 # g*kg-1 moderate excercise program proteinScale = 1.6 # g*kg-1 resistance training, weight gain ironPerDay = 17.5 # mg bmr = 8.4 / 0.0042 # kcal (for 88 kg body mass, 30 years old) activity = 1.4 # sedatory lifestyle energyRateBig = 0.236 # kcal*kg-1*min-1 (in a 30 seconds) Energy Cost of Resistance Exercises: an Update (Reis, Junior, Zajac, Oliveira) energyRateMed = 0.101 # kcal*kg-1*min-1 Energy Cost of Moderate-Duration Resistance and Aerobic Excercise (Bloomer) energyRateLow = 0.06 # kcal*kg-1*min-1 (pull-ups, push-ups, curl-ups, lunges) Energy Expenditure of Resistance Training Activities in Young Men (Vezina) # my data # each set ~= 1 min timeWarmup = 5.0 # min timeDeadLift = 4.0 # min timeBenchPress = 4.0 # min timeBentOverRow = 3.0 # min timeBenchPressCloseGrip = 3.0 # min timeCurl = 2.0 # min timePinch = 5.0 # min timeCrunches = 3.0 # min timeBig = timeDeadLift + timeBenchPress # min timeMed = timeBentOverRow + timeBenchPressCloseGrip # min timeLow = timeCurl + timePinch + timeCrunches + timeWarmup # min timeTotal = timeLow + timeMed + timeBig # min timeReal = 120.0 # min timeScale = timeReal / timeTotal energyScale = timeBig*energyRateBig + timeMed*energyRateMed + timeLow*energyRateLow # kcal*kg-1 energyScale *= timeScale energyWorkout = energyScale * mass # kcal daysPerWeek = 7.0 workoutsPerWeek = 1.0 energyPerDay = (bmr*activity*daysPerWeek + energyWorkout*workoutsPerWeek) / daysPerWeek # kcal carbPerDay = mass * (carbScaleLow*(daysPerWeek - workoutsPerWeek) + carbScaleMed*workoutsPerWeek) / daysPerWeek # g proteinPerDay = mass * proteinScale # g fatPerDay = energyPerDay*fatEnergyPercent / (100.0 * fatEnergyPerGram) fatSatMaxPerDay = energyPerDay*fatSatMaxEnergyPercent / (100.0 * fatEnergyPerGram) sugarMaxPerDay = energyPerDay*sugarMaxEnergyPercent / (100.0 * carbEnergyPerGram) def relaxed(v): return [v*0.99, v*1.01] def unbound(v): return [v, v*100.0] def upper(v): return [0, max(v, 0.1)] return makeConverter().convertDict(makeElements( energy = (relaxed(energyPerDay), 'kcal'), water = (relaxed(waterPerDay), 'kg'), protein = (relaxed(proteinPerDay), 'g'), fat = (relaxed(fatPerDay), 'g'), fatSat = (upper(fatSatMaxPerDay), 'g'), carb = ([carbPerDay, carbPerDay*1.5], 'g'), # increased to meet energy needs sugar = (upper(sugarMaxPerDay), 'g'), sodium = ([sodiumPerDay, sodiumMaxPerDay], 'mg'), chol = (upper(cholMaxPerDay), 'mg'), fiber = (relaxed(fiberPerDay), 'g'), potassium = (unbound(potassiumPerDay), 'mg'), iron = ([ironPerDay, ironMaxPerDay], 'mg'), calcium = ([calciumPerDay, calciumMaxPerDay], 'mg'), vitaminA = (unbound(vitaminAPerDay), 'RAE'), retinol = (upper(retinolMaxPerDay), 'mcg'), vitaminC = ([vitaminCPerDay, vitaminCMaxPerDay], 'mg'), vitaminD = ([vitaminDPerDay, vitaminDMaxPerDay], 'mcg'), vitaminE = (unbound(vitaminEPerDay), 'mg'), vitaminESup = (upper(vitaminESupMaxPerDay), 'mg'), vitaminK = (relaxed(vitaminKPerDay), 'mcg'), thiamin = (relaxed(thiaminPerDay), 'mg'), riboflavin = (relaxed(riboflavinPerDay), 'mg'), niacin = (unbound(niacinPerDay), 'mg'), niacinSup = (upper(niacinSupMaxPerDay), 'mg'), vitaminB6 = ([vitaminB6PerDay, vitaminB6MaxPerDay], 'mg'), folate = (unbound(folatePerDay), 'DFE'), folateSup = (upper(folateSupMaxPerDay), 'DFE'), vitaminB12 = (relaxed(vitaminB12PerDay), 'mcg'), pantothenicAcid = (relaxed(pantothenicAcidPerDay), 'mg'), biotin = (relaxed(biotinPerDay), 'mcg'), choline = ([cholinePerDay, cholineMaxPerDay], 'mg'), chromium = (relaxed(chromiumPerDay), 'mcg'), copper = ([copperPerDay, copperMaxPerDay], 'mcg'), fluoride = ([fluoridePerDay, fluorideMaxPerDay], 'mg'), iodine = ([iodinePerDay, iodineMaxPerDay], 'mcg'), magnesium = (unbound(magnesiumPerDay), 'mg'), magnesiumSup = (upper(magnesiumSupMaxPerDay), 'mg'), manganese = ([manganesePerDay, manganeseMaxPerDay], 'mg'), molybdenum = ([molybdenumPerDay, molybdenumMaxPerDay], 'mcg'), phosphorus = ([phosphorusPerDay, phosphorusMaxPerDay], 'mg'), selenium = ([seleniumPerDay, seleniumMaxPerDay], 'mcg'), zinc = ([zincPerDay, zincMaxPerDay], 'mg'), boron = (upper(boronMaxPerDay), 'mg'), nickel = (upper(nickelMaxPerDay), 'mg'), silicon = (upper(siliconMaxPerDay), 'mg'), vanadium = (upper(vanadiumMaxPerDay), 'mg') ), makeProductUnits()['elements'])
def goal(): mass = 89.0 # kg # There's no need to track what is referenced in DRI tables as "chloride". # It means only chloride part of NaCl, therefore it's tracked implicitly # by tracking sodium. # (Dietary Reference Intakes for Water, Potassium, Sodium, Chloride, and Sulfate) # Dietary Reference Intake Tables (USDA) waterPerDay = 3.7 # kg (AI) sodiumPerDay = 1500.0 # mg (AI) sodiumMaxPerDay = 2300.0 # mg potassiumPerDay = 4700.0 # mg (AI) fiberPerDay = 38.0 # g (AI) sugarMaxEnergyPercent = 25.0 # % ironMaxPerDay = 45.0 # mg calciumPerDay = 1000.0 # mg (RDA) calciumMaxPerDay = 2500.0 # mg vitaminAPerDay = 900.0 # RAE (RDA) retinolMaxPerDay = 3000.0 # mcg vitaminCPerDay = 90.0 # mg (RDA) vitaminCMaxPerDay = 2000.0 # mg vitaminDPerDay = 15.0 # mcg (RDA) vitaminDMaxPerDay = 100.0 # mcg vitaminEPerDay = 15.0 # mg (RDA) vitaminESupMaxPerDay = 1000.0 # mg vitaminKPerDay = 120.0 # mcg (AI) thiaminPerDay = 1.2 # mg (RDA) riboflavinPerDay = 1.3 # mg (RDA) niacinPerDay = 16.0 # mg (RDA) niacinSupMaxPerDay = 35.0 # mg vitaminB6PerDay = 1.3 # mg (RDA) vitaminB6MaxPerDay = 100.0 # mg folatePerDay = 400.0 # DFE (RDA) folateSupMaxPerDay = 1000.0 # DFE vitaminB12PerDay = 2.4 # mcg (RDA) pantothenicAcidPerDay = 5.0 # mg (AI) biotinPerDay = 30.0 # mcg (AI) cholinePerDay = 550.0 # mg (AI) cholineMaxPerDay = 3500.0 # mg chromiumPerDay = 35.0 # mcg (AI) copperPerDay = 900.0 # mcg (RDA) copperMaxPerDay = 10000.0 # mcg fluoridePerDay = 4.0 # mg (AI) fluorideMaxPerDay = 10.0 # mg iodinePerDay = 150.0 # mcg (RDA) iodineMaxPerDay = 1100.0 # mcg magnesiumPerDay = 420.0 # mg (RDA) magnesiumSupMaxPerDay = 350.0 # mg manganesePerDay = 2.3 # mg (AI) manganeseMaxPerDay = 11.0 # mg molybdenumPerDay = 45.0 # mcg (RDA) molybdenumMaxPerDay = 2000.0 # mcg phosphorusPerDay = 700.0 # mg (RDA) phosphorusMaxPerDay = 4000.0 # mg seleniumPerDay = 55.0 # mcg (RDA) seleniumMaxPerDay = 400.0 # mcg zincPerDay = 11.0 # mg (RDA) zincMaxPerDay = 40.0 # mg boronMaxPerDay = 20.0 # mg nickelMaxPerDay = 1.0 # mg siliconMaxPerDay = 0 vanadiumMaxPerDay = 1.8 # mg # Treating High Level Cholesterol (National Heart, Lung and Blood Institute) fatSatMaxEnergyPercent = 7.0 # % cholMaxPerDay = 200.0 # mg # Google fatEnergyPerGram = 9.0 # kcal carbEnergyPerGram = 4.0 # kcal # The Complete Guide to Food for Sports Performance (Burke, Cox) # pick products with low (GI < 55)-to-moderate (55 < GI < 70) sugar range # use www.glycemicindex.com to find product GI fatEnergyPercent = 25.0 # % carbScaleLow = 3.0 # g*kg-1 light training program carbScaleMed = 7.0 # g*kg-1 moderate excercise program proteinScale = 1.6 # g*kg-1 resistance training, weight gain ironPerDay = 17.5 # mg bmr = 8.4 / 0.0042 # kcal (for 88 kg body mass, 30 years old) activity = 1.4 # sedatory lifestyle energyRateBig = 0.236 # kcal*kg-1*min-1 (in a 30 seconds) Energy Cost of Resistance Exercises: an Update (Reis, Junior, Zajac, Oliveira) energyRateMed = 0.101 # kcal*kg-1*min-1 Energy Cost of Moderate-Duration Resistance and Aerobic Excercise (Bloomer) energyRateLow = 0.06 # kcal*kg-1*min-1 (pull-ups, push-ups, curl-ups, lunges) Energy Expenditure of Resistance Training Activities in Young Men (Vezina) # my data # each set ~= 1 min timeWarmup = 5.0 # min timeDeadLift = 4.0 # min timeBenchPress = 4.0 # min timeBentOverRow = 3.0 # min timeBenchPressCloseGrip = 3.0 # min timeCurl = 2.0 # min timePinch = 5.0 # min timeCrunches = 3.0 # min timeBig = timeDeadLift + timeBenchPress # min timeMed = timeBentOverRow + timeBenchPressCloseGrip # min timeLow = timeCurl + timePinch + timeCrunches + timeWarmup # min timeTotal = timeLow + timeMed + timeBig # min timeReal = 120.0 # min timeScale = timeReal / timeTotal energyScale = timeBig * energyRateBig + timeMed * energyRateMed + timeLow * energyRateLow # kcal*kg-1 energyScale *= timeScale energyWorkout = energyScale * mass # kcal daysPerWeek = 7.0 workoutsPerWeek = 1.0 energyPerDay = (bmr * activity * daysPerWeek + energyWorkout * workoutsPerWeek) / daysPerWeek # kcal carbPerDay = mass * (carbScaleLow * (daysPerWeek - workoutsPerWeek) + carbScaleMed * workoutsPerWeek) / daysPerWeek # g proteinPerDay = mass * proteinScale # g fatPerDay = energyPerDay * fatEnergyPercent / (100.0 * fatEnergyPerGram) fatSatMaxPerDay = energyPerDay * fatSatMaxEnergyPercent / ( 100.0 * fatEnergyPerGram) sugarMaxPerDay = energyPerDay * sugarMaxEnergyPercent / (100.0 * carbEnergyPerGram) def relaxed(v): return [v * 0.99, v * 1.01] def unbound(v): return [v, v * 100.0] def upper(v): return [0, max(v, 0.1)] return makeConverter().convertDict( makeElements( energy=(relaxed(energyPerDay), 'kcal'), water=(relaxed(waterPerDay), 'kg'), protein=(relaxed(proteinPerDay), 'g'), fat=(relaxed(fatPerDay), 'g'), fatSat=(upper(fatSatMaxPerDay), 'g'), carb=([carbPerDay, carbPerDay * 1.5], 'g'), # increased to meet energy needs sugar=(upper(sugarMaxPerDay), 'g'), sodium=([sodiumPerDay, sodiumMaxPerDay], 'mg'), chol=(upper(cholMaxPerDay), 'mg'), fiber=(relaxed(fiberPerDay), 'g'), potassium=(unbound(potassiumPerDay), 'mg'), iron=([ironPerDay, ironMaxPerDay], 'mg'), calcium=([calciumPerDay, calciumMaxPerDay], 'mg'), vitaminA=(unbound(vitaminAPerDay), 'RAE'), retinol=(upper(retinolMaxPerDay), 'mcg'), vitaminC=([vitaminCPerDay, vitaminCMaxPerDay], 'mg'), vitaminD=([vitaminDPerDay, vitaminDMaxPerDay], 'mcg'), vitaminE=(unbound(vitaminEPerDay), 'mg'), vitaminESup=(upper(vitaminESupMaxPerDay), 'mg'), vitaminK=(relaxed(vitaminKPerDay), 'mcg'), thiamin=(relaxed(thiaminPerDay), 'mg'), riboflavin=(relaxed(riboflavinPerDay), 'mg'), niacin=(unbound(niacinPerDay), 'mg'), niacinSup=(upper(niacinSupMaxPerDay), 'mg'), vitaminB6=([vitaminB6PerDay, vitaminB6MaxPerDay], 'mg'), folate=(unbound(folatePerDay), 'DFE'), folateSup=(upper(folateSupMaxPerDay), 'DFE'), vitaminB12=(relaxed(vitaminB12PerDay), 'mcg'), pantothenicAcid=(relaxed(pantothenicAcidPerDay), 'mg'), biotin=(relaxed(biotinPerDay), 'mcg'), choline=([cholinePerDay, cholineMaxPerDay], 'mg'), chromium=(relaxed(chromiumPerDay), 'mcg'), copper=([copperPerDay, copperMaxPerDay], 'mcg'), fluoride=([fluoridePerDay, fluorideMaxPerDay], 'mg'), iodine=([iodinePerDay, iodineMaxPerDay], 'mcg'), magnesium=(unbound(magnesiumPerDay), 'mg'), magnesiumSup=(upper(magnesiumSupMaxPerDay), 'mg'), manganese=([manganesePerDay, manganeseMaxPerDay], 'mg'), molybdenum=([molybdenumPerDay, molybdenumMaxPerDay], 'mcg'), phosphorus=([phosphorusPerDay, phosphorusMaxPerDay], 'mg'), selenium=([seleniumPerDay, seleniumMaxPerDay], 'mcg'), zinc=([zincPerDay, zincMaxPerDay], 'mg'), boron=(upper(boronMaxPerDay), 'mg'), nickel=(upper(nickelMaxPerDay), 'mg'), silicon=(upper(siliconMaxPerDay), 'mg'), vanadium=(upper(vanadiumMaxPerDay), 'mg')), makeProductUnits()['elements'])