mirror of
https://github.com/lleene/hugo-site.git
synced 2025-01-23 12:02:22 +01:00
151 lines
4.3 KiB
Plaintext
151 lines
4.3 KiB
Plaintext
|
{
|
||
|
"cells": [
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 3,
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"import csv\n",
|
||
|
"import re\n",
|
||
|
"import numpy as np\n",
|
||
|
"from cds2py import plot_svg\n",
|
||
|
"from datetime import datetime, date\n",
|
||
|
"from collections import namedtuple\n",
|
||
|
"from slugify import slugify\n",
|
||
|
"from quantiphy import Quantity\n",
|
||
|
"from tabulate import tabulate"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 4,
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"with open('diet.csv') as csvfile:\n",
|
||
|
" data = list(csv.reader(csvfile, delimiter=','))\n",
|
||
|
"\n",
|
||
|
"DietEntry = namedtuple(\"DietEntry\", [slugify(elem).replace(\"-\",\"_\") for elem in data[0]])\n",
|
||
|
"\n",
|
||
|
"def quantify_elem(elem:str, field:str):\n",
|
||
|
" if field == \"date\":\n",
|
||
|
" return datetime.strptime(elem,\"%Y-%m-%d\")\n",
|
||
|
" elif field == \"completed\":\n",
|
||
|
" return elem == \"true\"\n",
|
||
|
" elif field.split(\"_\")[-1] == \"mg\":\n",
|
||
|
" return Quantity(float(elem)*1e-3, units=\"g\")\n",
|
||
|
" elif field.split(\"_\")[-1] == \"ug\":\n",
|
||
|
" return Quantity(float(elem)*1e-6, units=\"g\")\n",
|
||
|
" elif field.split(\"_\")[-1] == \"iu\":\n",
|
||
|
" return Quantity(float(elem)*1e-6/40, units=\"g\")\n",
|
||
|
" elif field.split(\"_\")[-1] == \"kcal\":\n",
|
||
|
" return Quantity(float(elem)*1e3, units=\"cal\")\n",
|
||
|
" else:\n",
|
||
|
" return Quantity(elem, units=field.split(\"_\")[-1])\n",
|
||
|
"\n",
|
||
|
"quantities = [\n",
|
||
|
" DietEntry(\n",
|
||
|
" *[\n",
|
||
|
" quantify_elem(value, DietEntry._fields[index])\n",
|
||
|
" for index,value in enumerate(elem)\n",
|
||
|
" ]\n",
|
||
|
" ) for elem in data[1:]\n",
|
||
|
"]\n"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": null,
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"darray = np.array(quantities)[:,1:-1].astype(float)\n",
|
||
|
"Names = [re.sub(\" [kmiu]\",\" \", elem.replace(\"_\",\" \")).replace(\" u\",\" g\") for elem in DietEntry._fields[1:-1]]\n",
|
||
|
"metric_table = np.vstack(\n",
|
||
|
" ( Names, [ Quantity(elem).render(prec=2) for elem in darray.mean(axis=0) ], [ Quantity(elem).render(prec=2) for elem in darray.std(axis=0) ] )\n",
|
||
|
" )\n",
|
||
|
"\n",
|
||
|
"with open(\"diet.table\",\"w\") as mdfile:\n",
|
||
|
" mdfile.write(\n",
|
||
|
" tabulate( metric_table.T, headers=[\"Metric\", \"Average\", \"Deviation\"],)\n",
|
||
|
" )"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 34,
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"import importlib.resources as rsc\n",
|
||
|
"import json\n",
|
||
|
"import re\n",
|
||
|
"import nutrimetrics.resources.dri\n",
|
||
|
"\n",
|
||
|
"src_txt = rsc.read_text(nutrimetrics.resources.dri,\"ear-male.json\")\n",
|
||
|
"average_requirement = json.loads(re.sub(\"//.*\",\"\",src_txt))[\"dietary_reference_intakes\"]\n",
|
||
|
"src_txt = rsc.read_text(nutrimetrics.resources.dri,\"rda-male.json\")\n",
|
||
|
"average_allowance = json.loads(re.sub(\"//.*\",\"\",src_txt))[\"dietary_reference_intakes\"]\n"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 37,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"name": "stdout",
|
||
|
"output_type": "stream",
|
||
|
"text": [
|
||
|
"folate\n",
|
||
|
"vitamin-a\n",
|
||
|
"vitamin-c\n",
|
||
|
"vitamin-d\n",
|
||
|
"vitamin-e\n",
|
||
|
"calcium\n",
|
||
|
"copper\n",
|
||
|
"iron\n",
|
||
|
"magnesium\n",
|
||
|
"manganese\n",
|
||
|
"phosphorus\n",
|
||
|
"potassium\n",
|
||
|
"selenium\n",
|
||
|
"sodium\n",
|
||
|
"zinc\n"
|
||
|
]
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"\n",
|
||
|
"for name, average, _ in metric_table.T:\n",
|
||
|
" nutrient = name.replace(\" \",\"-\").replace(\"-g\",\"\")\n",
|
||
|
" if nutrient in average_requirement:\n",
|
||
|
" print(nutrient)\n",
|
||
|
" # print(Quantity(average_requirement[nutrient],units=\"g\")/Quantity(average, units=\"g\"))"
|
||
|
]
|
||
|
}
|
||
|
],
|
||
|
"metadata": {
|
||
|
"kernelspec": {
|
||
|
"display_name": "git",
|
||
|
"language": "python",
|
||
|
"name": "python3"
|
||
|
},
|
||
|
"language_info": {
|
||
|
"codemirror_mode": {
|
||
|
"name": "ipython",
|
||
|
"version": 3
|
||
|
},
|
||
|
"file_extension": ".py",
|
||
|
"mimetype": "text/x-python",
|
||
|
"name": "python",
|
||
|
"nbconvert_exporter": "python",
|
||
|
"pygments_lexer": "ipython3",
|
||
|
"version": "3.10.12"
|
||
|
}
|
||
|
},
|
||
|
"nbformat": 4,
|
||
|
"nbformat_minor": 2
|
||
|
}
|