This library provides functions to analyzes food logging data.
Project description
TREETS
Time Restricted Eating ExperimenTS.
Link to the documetation page: https://qiwenzz.github.io/treets/core.html
Install
pip install treets
Example for high level data analysis on the study with experimental phases
import treets.core as treets
import pandas as pd
Take a brief look on the food logging dataset and the reference information sheet
treets.file_loader('data/col_test_data','yrt*').head(2)
read the csv files in data/col_test_data folder successfully.
Unnamed: 0 | original_logtime | desc_text | food_type | PID | |
---|---|---|---|---|---|
0 | 0 | 2021-05-12 02:30:00 +0000 | milk | b | yrt1999 |
1 | 1 | 2021-05-12 02:45:00 +0000 | some medication | m | yrt1999 |
pd.read_excel('data/col_test_data/toy_data_17May2021.xlsx').head(2)
mCC_ID | Participant_Study_ID | Study Phase | Intervention group (TRE or HABIT) | Start_Day | End_day | Eating_Window_Start | Eating_Window_End | |
---|---|---|---|---|---|---|---|---|
0 | yrt1999 | 2 | S-REM | TRE | 2021-05-12 | 2021-05-14 | 00:00:00 | 23:59:00 |
1 | yrt1999 | 2 | T3-INT | TRE | 2021-05-15 | 2021-05-18 | 08:00:00 | 18:00:00 |
make the table that contains extra analytic information that we want
df = treets.summarize_data_with_experiment_phases(treets.file_loader('data/col_test_data','yrt*')\
, pd.read_excel('data/col_test_data/toy_data_17May2021.xlsx'))
read the csv files in data/col_test_data folder successfully.
Participant yrt1999 didn't log any food items in the following day(s):
2021-05-18
Participant yrt2000 didn't log any food items in the following day(s):
2021-05-12
2021-05-13
2021-05-14
2021-05-15
2021-05-16
2021-05-17
2021-05-18
Participant yrt1999 have bad logging day(s) in the following day(s):
2021-05-12
2021-05-15
Participant yrt1999 have bad window day(s) in the following day(s):
2021-05-15
2021-05-17
Participant yrt1999 have non adherent day(s) in the following day(s):
2021-05-12
2021-05-15
2021-05-17
df
mCC_ID | Participant_Study_ID | Study Phase | Intervention group (TRE or HABIT) | Start_Day | End_day | Eating_Window_Start | Eating_Window_End | phase_duration | caloric_entries | ... | logging_day_counts | %_logging_day_counts | good_logging_days | %_good_logging_days | good_window_days | %_good_window_days | outside_window_days | %_outside_window_days | adherent_days | %_adherent_days | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | yrt1999 | 2 | S-REM | TRE | 2021-05-12 | 2021-05-14 | 00:00:00 | 23:59:00 | 3 days | 7.0 | ... | 3.0 | 1.00 | 2.0 | 0.666667 | 3.0 | 1.00 | 0.0 | 0.0 | 2.0 | 0.666667 |
1 | yrt1999 | 2 | T3-INT | TRE | 2021-05-15 | 2021-05-18 | 08:00:00 | 18:00:00 | 4 days | 8.0 | ... | 3.0 | 0.75 | 2.0 | 0.500000 | 1.0 | 0.25 | 2.0 | 0.5 | 1.0 | 0.250000 |
2 | yrt2000 | 3 | T3-INT | TRE | 2021-05-12 | 2021-05-14 | 08:00:00 | 16:00:00 | 3 days | 0.0 | ... | 0.0 | 0.00 | 0.0 | 0.000000 | 0.0 | 0.00 | 0.0 | 0.0 | 0.0 | 0.000000 |
3 | yrt2000 | 3 | T3-INT | TRE | 2021-05-15 | 2021-05-18 | 08:00:00 | 16:00:00 | 4 days | 0.0 | ... | 0.0 | 0.00 | 0.0 | 0.000000 | 0.0 | 0.00 | 0.0 | 0.0 | 0.0 | 0.000000 |
4 | yrt2001 | 4 | T12-A | TRE | NaT | NaT | NaN | NaN | NaT | NaN | ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
5 rows × 26 columns
df.iloc[0]
mCC_ID yrt1999
Participant_Study_ID 2
Study Phase S-REM
Intervention group (TRE or HABIT) TRE
Start_Day 2021-05-12 00:00:00
End_day 2021-05-14 00:00:00
Eating_Window_Start 00:00:00
Eating_Window_End 23:59:00
phase_duration 3 days 00:00:00
caloric_entries 7.0
mean_daily_eating_window 13.75
std_daily_eating_window 11.986972
earliest_entry 4.5
2.5% NaN
97.5% NaN
duration mid 95% NaN
logging_day_counts 3.0
%_logging_day_counts 1.0
good_logging_days 2.0
%_good_logging_days 0.666667
good_window_days 3.0
%_good_window_days 1.0
outside_window_days 0.0
%_outside_window_days 0.0
adherent_days 2.0
%_adherent_days 0.666667
Name: 0, dtype: object
df.iloc[1]
mCC_ID yrt1999
Participant_Study_ID 2
Study Phase T3-INT
Intervention group (TRE or HABIT) TRE
Start_Day 2021-05-15 00:00:00
End_day 2021-05-18 00:00:00
Eating_Window_Start 08:00:00
Eating_Window_End 18:00:00
phase_duration 4 days 00:00:00
caloric_entries 8.0
mean_daily_eating_window 8.666667
std_daily_eating_window 8.504901
earliest_entry 7.5
2.5% NaN
97.5% NaN
duration mid 95% NaN
logging_day_counts 3.0
%_logging_day_counts 0.75
good_logging_days 2.0
%_good_logging_days 0.5
good_window_days 1.0
%_good_window_days 0.25
outside_window_days 2.0
%_outside_window_days 0.5
adherent_days 1.0
%_adherent_days 0.25
Name: 1, dtype: object
Example for data analysis using time restricted eating experiments without experiment phases
take a look at the original dataset
df = treets.file_loader('data/test_food_details.csv')
df.head(2)
Unnamed: 0 | ID | unique_code | research_info_id | desc_text | food_type | original_logtime | foodimage_file_name | |
---|---|---|---|---|---|---|---|---|
0 | 1340147 | 7572733 | alqt14018795225 | 150 | Water | w | 2017-12-08 17:30:00+00:00 | NaN |
1 | 1340148 | 411111 | alqt14018795225 | 150 | Coffee White | b | 2017-12-09 00:01:00+00:00 | NaN |
preprocess the data to have extra basic features
df = treets.load_public_data(df,'unique_code', 'original_logtime',4)
df.head(2)
<style scoped>
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
Unnamed: 0 | ID | unique_code | research_info_id | desc_text | food_type | original_logtime | date | local_time | time | week_from_start | year | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1340147 | 7572733 | alqt14018795225 | 150 | Water | w | 2017-12-08 17:30:00+00:00 | 2017-12-08 | 17.500000 | 17:30:00 | 1 | 2017 |
1 | 1340148 | 411111 | alqt14018795225 | 150 | Coffee White | b | 2017-12-09 00:01:00+00:00 | 2017-12-08 | 24.016667 | 00:01:00 | 1 | 2017 |
do a brief annalysis
df = treets.summarize_data(df, 'unique_code', 'local_time', 'date')
df.head(2)
<style scoped>
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
unique_code | num_days | num_total_items | num_f_n_b | num_medications | num_water | first_cal_avg | first_cal_std | last_cal_avg | last_cal_std | eating_win_avg | eating_win_std | good_logging_count | first_cal variation (90%-10%) | last_cal variation (90%-10%) | 2.5% | 95% | duration mid 95% | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | alqt1148284857 | 13 | 149 | 96 | 19 | 34 | 7.821795 | 6.710717 | 23.485897 | 4.869082 | 15.664103 | -1.841635 | 146 | 2.966667 | 9.666667 | 4.535000 | 26.813333 | 22.636667 |
1 | alqt14018795225 | 64 | 488 | 484 | 3 | 1 | 7.525781 | 5.434563 | 25.858594 | 3.374839 | 18.332813 | -2.059723 | 484 | 13.450000 | 3.100000 | 4.183333 | 27.438333 | 23.416667 |
df.iloc[0]
unique_code alqt1148284857
num_days 13
num_total_items 149
num_f_n_b 96
num_medications 19
num_water 34
first_cal_avg 7.821795
first_cal_std 6.710717
last_cal_avg 23.485897
last_cal_std 4.869082
eating_win_avg 15.664103
eating_win_std -1.841635
good_logging_count 146
first_cal variation (90%-10%) 2.966667
last_cal variation (90%-10%) 9.666667
2.5% 4.535
95% 26.813333
duration mid 95% 22.636667
Name: 0, dtype: object
df.iloc[1]
unique_code alqt14018795225
num_days 64
num_total_items 488
num_f_n_b 484
num_medications 3
num_water 1
first_cal_avg 7.525781
first_cal_std 5.434563
last_cal_avg 25.858594
last_cal_std 3.374839
eating_win_avg 18.332813
eating_win_std -2.059723
good_logging_count 484
first_cal variation (90%-10%) 13.45
last_cal variation (90%-10%) 3.1
2.5% 4.183333
95% 27.438333
duration mid 95% 23.416667
Name: 1, dtype: object
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
treets-1.0.1.tar.gz
(31.7 kB
view hashes)
Built Distribution
treets-1.0.1-py3-none-any.whl
(148.3 kB
view hashes)