{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Fasting (Python Package)\n", "## _Make use of your fasting logs._\n", "\n", "This tutorial provides a brief overview of how to use the [**fasting**](https://github.com/DigitalBiomarkerDiscoveryPipeline/fasting) library. We'll use a sample data export from [**Zero**](https://www.zerofasting.com/) in the tutorial.\n", "\n", "This package is part of the [**Digital Biomarker Discovery Pipeline (DBDP)**](https://dbdp.org/). You can read more about the DBDP [here](https://medium.com/digital-biomarker-discovery/digital-biomarker-discovery-pipeline-fbfe75cdd9a4). If you track your fasts, there's a chance you also track biomarkers with wearables and other hardware in the modern health stack. The goal of this package is to enable you to utilize _**your**_ data for your own purpose, like cross analyzing fasting performance with other biomarkers. Check out an example [here](https://share.streamlit.io/jbpauly/glucose-sleep-analysis/main/src/app.py).\n", "\n", "\n", "### Fasting\n", "Fasting is a technique used to improve metabolic health, reduce inflammation, rebalance gut health, lose weight, increase longevity, improve mental clarity and focus. \n", "\n", "There's various forms of fasting, with **Intermittent Fasting (IF)** likely being the most common. You can read about **IF** and other types of fasting on the [Zero blog](https://www.zerofasting.com/which-type-of-fasting-is-right-for-you/)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Getting Started\n", "\n", "Let's start by importing the packages we'll need for this tutorial. " ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from fasting import quantify\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "from matplotlib.ticker import FormatStrFormatter" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Data\n", "**Zero** provides a data export feature in their app.\n", "This [dataset](https://github.com/jbpauly/fasting/blob/main/docs/tutorials/zero_export.csv) is a sample users can expect to see from their own export.\n", "\n", "### Exporting Data from Zero\n", "The data export feature in Zero can be found in the **My Data** section in the **me** page settings. To export your own data:\n", "- Me (lower right) -> Settings (upper right) -> My Data -> Export Data\n", "\n", "### Loading the Data\n", "First we'll load the raw data export into a Pandas DataFrame to better understand _why_ we need to use the **fasting** library." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "export = \"https://raw.githubusercontent.com/jbpauly/fasting/main/docs/tutorials/zero_export.csv\"" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
DateStartEndHoursNight Eating
241/18/2119:1411:44161
251/17/2119:1512:00161
261/16/2119:4510:14142
271/15/2121:0010:00133
281/14/2119:0011:22161
\n", "
" ], "text/plain": [ " Date Start End Hours Night Eating\n", "24 1/18/21 19:14 11:44 16 1\n", "25 1/17/21 19:15 12:00 16 1\n", "26 1/16/21 19:45 10:14 14 2\n", "27 1/15/21 21:00 10:00 13 3\n", "28 1/14/21 19:00 11:22 16 1" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "zero_export = pd.read_csv(export)\n", "\n", "zero_export[-5:]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here we can see the raw data export provides sufficient data around each fast a user participated in through the **Zero** app. \n", "\n", "- **Date**: Start date of the fast\n", "- **Start**: Start time of the fast\n", "- **End**: End time of the fast\n", "- **Hours**: Duration of the fast rounded to the nearest hour\n", "- **Night Eating**: Duration of time between sunset and fast start in hours\n", "\n", "Alone, **hours** and **night eating** are usable metrics, but there's much more to gather out of our dataset. To do so, we'll simplify the logs to a **start datetime** and **end datetime** for each fast by combining **date**, **start**, **end**, **hours**.\n", "\n", "## Discrete Logs: Start and End Datetime\n", "To create the discrete logs, lets read in the data using the **zero_fasts** function in the **quantify** module." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
start_dtend_dt
02021-01-14 19:00:002021-01-15 11:22:00
12021-01-15 21:00:002021-01-16 10:00:00
22021-01-16 19:45:002021-01-17 10:14:00
32021-01-17 19:15:002021-01-18 12:00:00
42021-01-18 19:14:002021-01-19 11:44:00
\n", "
" ], "text/plain": [ " start_dt end_dt\n", "0 2021-01-14 19:00:00 2021-01-15 11:22:00\n", "1 2021-01-15 21:00:00 2021-01-16 10:00:00\n", "2 2021-01-16 19:45:00 2021-01-17 10:14:00\n", "3 2021-01-17 19:15:00 2021-01-18 12:00:00\n", "4 2021-01-18 19:14:00 2021-01-19 11:44:00" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fasts_discrete = quantify.zero_fasts(export)\n", "\n", "fasts_discrete[:5]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We now have a start and end datetime (start_dt, end_dt) to work with for each fast. Additionally, the fasts are reindexed from oldest to newest, and any incomplete or ongoing fasts have been dropped.\n", "\n", "### Why start and end datetime?\n", "Because fasting is primarily a time based protocol, it's important to get our data into a datetime format. From here we can take it one step further from discrete logs with start and end datetimes to a continuous time series log. Time series data can be tricky to handle. To overcome many challenges working with time based data, it's useful to work with it _as a time series_. \n", "\n", "## Continuous Log: Time Series of Fasting Status (not fasting/fasting)\n", "Lets now convert the the discrete logs to a single continuous log using the **continuous_fasts** function in the **quantify** module. This function reads in the discrete fasts as a Pandas DataFrame and returns a binary Pandas Series:\n", "- 0: Not fasting\n", "- 1: Fasting\n", "\n", "The series duration spans from the **start_dt** of the first fast in the discrete fasts log to the **end_dt** of the last fast in the discrete fasts log and has a sample rate of one minute." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2021-01-14 19:00:00 1\n", "2021-01-14 19:01:00 1\n", "2021-01-14 19:02:00 1\n", "2021-01-14 19:03:00 1\n", "2021-01-14 19:04:00 1\n", "Freq: T, dtype: int64" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fasts_continuous = quantify.continuous_fasts(fasts_discrete)\n", "\n", "fasts_continuous[:5]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It's now less useful to tabularize the data. Instead, we can visualize it." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(figsize=(12,6))\n", "ax.plot(fasts_continuous)\n", "fig.autofmt_xdate()\n", "plt.title('Binary Fasting Log: 0 (Not Fasting), 1 (Fasting)')\n", "plt.xlabel('Date')\n", "plt.ylabel('Fasting Status')\n", "ax.set_yticks([0,1])\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Why a continuous time series?\n", "Pandas and other Python libraries support a vast array of time series functionality. To utilize these libraries, we often need our data as a series to perform aggregations, windowing functions, etc.\n", "\n", "For data storage, it may be best to write discrete logs to a database instead of a continuous log. Two data points (start and end datetime) is much less than the thousands of points in a single fast continuous log. \n", "\n", "## Fasting Metrics \n", "With the continuous log, we can now calculate various metrics of interest around our fasts.\n", "\n", "### Continuous Metrics\n", "There may be some instances where it's useful to stay in the continuous space, like calculating the cumulative sum (consecutive) minutes of each fast." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2021-01-14 19:00:00 1\n", "2021-01-14 19:01:00 2\n", "2021-01-14 19:02:00 3\n", "2021-01-14 19:03:00 4\n", "2021-01-14 19:04:00 5\n", "Freq: T, dtype: int64" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "consecutive_minutes = quantify.consecutive_minutes(fasts_continuous)\n", "\n", "consecutive_minutes[:5]" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(figsize=(12,6))\n", "ax.plot(consecutive_minutes)\n", "fig.autofmt_xdate()\n", "plt.title('Running Consecutive Minutes of Fasting')\n", "plt.xlabel('Date')\n", "plt.ylabel('Minutes')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "With the consecutive minutes, you could label each time step with the associated fasting zone*:\n", "- **Anabolic** (0-4 hours)\n", "- **Catabolic** (4-16 hours)\n", "- **Fat Burning** (16-24 hours)\n", "- **Ketosis** (24-72 hours)\n", "- **Deep Ketosis** (72+ hours)\n", "\n", "*Note: this can be provided as a function in future versions of the package.\n", "\n", "![](https://www.zerofasting.com/wp-content/uploads/2019/08/1_NcXg95jV94rWENSAcdPEmg.jpg)\n", "Unique physiologic effects occur within each fasting zone. You can learn more about the physiology of fasting from Zero [here](https://www.zerofasting.com/the-physiology-of-fasting/).\n", "\n", "### Discrete Metrics\n", "Often times, biometrics are rolled up to discrete metrics at a specified frequency (i.e. daily). Since fasts can span across multiple days and multiple fasts can occur in a single day, we have to be careful how we roll up our discrete metrics. The image below helps explain calculations like **cumulative hours** and **maximum consecutive hours** fasted." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "![Link](https://raw.githubusercontent.com/jbpauly/glucose-sleep-analysis/main/src/content/data/fast_breakdown.jpg)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This diagram also reiterates the importance of working with time data as a time series. Even though we are calculating discrete metrics, it's easier to go from a higher data space (continuous log) down to a lower data space (daily metrics)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Cumulative Hours\n", "Simply the cumulative hours fasting each day. Since the continuous log is a binary series of 0's and 1's, we can sum the series at a daily frequency." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2021-01-14 5.000000\n", "2021-01-15 14.383333\n", "2021-01-16 14.266667\n", "2021-01-17 15.000000\n", "2021-01-18 16.783333\n", "Freq: D, dtype: float64" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cumulative_hours = quantify.daily_cumulative_hours(fasts_continuous)\n", "\n", "cumulative_hours[:5]" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(figsize=(12,6))\n", "ax.bar(cumulative_hours.index, cumulative_hours.values)\n", "fig.autofmt_xdate()\n", "plt.title('Cumulative Hours of Fasting per Day')\n", "plt.xlabel('Date')\n", "plt.ylabel('Hours')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Maximum Consecutive Hours\n", "You may participate in multiple fasts each day. Maybe you complete one fast at 12PM with lunch and start your next fast at 7PM after dinner. The **maximum consecutive hours** is the maximum consecutive hours fasted within each day. It can included hours rolled over from the previous day(s)." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2021-01-14 5.000000\n", "2021-01-15 16.383333\n", "2021-01-16 13.016667\n", "2021-01-17 14.500000\n", "2021-01-18 16.766667\n", "Freq: D, dtype: float64" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "max_consecutive_hours = quantify.daily_max_consecutive_hours(fasts_continuous)\n", "\n", "max_consecutive_hours[:5]" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(figsize=(12,6))\n", "ax.bar(max_consecutive_hours.index, max_consecutive_hours.values)\n", "fig.autofmt_xdate()\n", "plt.title('Maximum Consecutive Hours of Fasting per Day')\n", "plt.xlabel('Date')\n", "plt.ylabel('Hours')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Summary\n", "That's it! We've loaded a data export from Zero and explored some of the metrics we can calculate with the **fasting** package. How can you use your data along with other tracked biometrics? Check out this [app](https://share.streamlit.io/jbpauly/glucose-sleep-analysis/main/src/app.py) and explore of the relationship be lifestyle and metabolic health." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.7.6" } }, "nbformat": 4, "nbformat_minor": 4 }