diff --git "a/test.ipynb" "b/test.ipynb" new file mode 100644--- /dev/null +++ "b/test.ipynb" @@ -0,0 +1,4522 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from tqdm import tqdm\n", + "from queries import (dieta_response,\n", + " clustering_esfuerzo_dieta_response,\n", + " clustering_objetivo_response,\n", + " clustering_entrenamiento_response,\n", + " clustering_cumplimiento_dieta_response,\n", + " clustering_compromiso_response,\n", + " clustering_diferencia_peso_response,\n", + " make_query,\n", + " get_min_max_mean_mode_macros_differences)\n", + "from find_matches import find_user_dates_matches, find_macros_that_match_dates_of_users\n", + "from input_options import (opciones_esfuerzo, opciones_objetivo, opciones_cumplimiento_entrenamiento,\n", + " opciones_cumplimiento_dieta, opciones_compromiso, diferencia_peso_options)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Esfuerzo dieta: \"No entiendo la calculadora, quiero menús tipo\" (\" | no data\") --> \"no data\"\n", + "Esfuerzo dieta: \"No costó nada\" (\" | no costo\") --> \"no costo\"\n", + "Esfuerzo dieta: \"Costó demasiado, súbeme macros\" (\" | costo subir macros\") --> \"costo subir macros\"\n", + "Esfuerzo dieta: \"Costó demasiado, bájame macros\" (\" | costo bajar macros\") --> \"costo bajar macros\"\n", + "Esfuerzo dieta: \"Costó, pero me adapto a nuevos ajustes\" (\" | costo y me adapto a nuevos ajustes\") --> \"costo y me adapto a nuevos ajustes\"\n", + "Esfuerzo dieta: \"Iba a coger menús tipo, pero al final por precio no\" (\" | no data\") --> \"no data\"\n", + "\n", + "\n", + "Objetivo: \"definición (nada cambia)\" (\" | definicion\") --> \"definicion\"\n", + "Objetivo: \"empezamos a definir (cambia)\" (\" | definicion\") --> \"definicion\"\n", + "Objetivo: \"perder peso (nada cambia)\" (\" | definicion\") --> \"definicion\"\n", + "Objetivo: \"volumen (nada cambia)\" (\" | volumen\") --> \"volumen\"\n", + "Objetivo: \"empezamos a coger volumen (cambia)\" (\" | volumen\") --> \"volumen\"\n", + "Objetivo: \"empezamos a coger volumen, sobre todo tren inferior (cambia)\" (\" | volumen\") --> \"volumen\"\n", + "Objetivo: \"empezamos a coger volumen, en todo el cuerpo (cambia)\" (\" | volumen\") --> \"volumen\"\n", + "\n", + "\n", + "Cumplimiento entrenamiento: \"Lo hice perfecto\" (\" | bien\") --> \"bien\"\n", + "Cumplimiento entrenamiento: \"He fallado algunos días, pero sí\" (\" | bien\") --> \"bien\"\n", + "Cumplimiento entrenamiento: \"Lesión importante\" (\" | mal\") --> \"mal\"\n", + "Cumplimiento entrenamiento: \"Lo hice prácticamente perfecto\" (\" | bien\") --> \"bien\"\n", + "Cumplimiento entrenamiento: \"Pequeña lesión\" (\" | mal\") --> \"mal\"\n", + "Cumplimiento entrenamiento: \"No hice nada, mantenemos la rutina un mes más\" (\" | mal\") --> \"mal\"\n", + "Cumplimiento entrenamiento: \"Alárgame la rutina una semana más\" (\" | mal\") --> \"mal\"\n", + "\n", + "\n", + "Cumplimiento dieta: \"al 70%\" (\" | bien\") --> \"bien\"\n", + "Cumplimiento dieta: \"regular, me cuesta llegar\" (\" | regular\") --> \"regular\"\n", + "Cumplimiento dieta: \"Nada, mantén mis macros\" (\" | mal\") --> \"mal\"\n", + "Cumplimiento dieta: \"casi perfecta\" (\" | bien\") --> \"bien\"\n", + "Cumplimiento dieta: \"regular, me salto la dieta\" (\" | regular\") --> \"regular\"\n", + "Cumplimiento dieta: \"Perfecta\" (\" | bien\") --> \"bien\"\n", + "\n", + "\n", + "Compromiso: \"Bueno, pero mejorable\" (\" | bueno\") --> \"bueno\"\n", + "Compromiso: \"Mal, pero a partir de ahora voy a por todas\" (\" | mal\") --> \"mal\"\n", + "Compromiso: \"Mal, demasiado exigente\" (\" | mal\") --> \"mal\"\n", + "Compromiso: \"Máximo\" (\" | bueno\") --> \"bueno\"\n", + "\n", + "\n", + "Diferencia peso: \"-5\" --> (-10, -5)\n", + "Diferencia peso: \"-4.5\" --> (-5, -4.5)\n", + "Diferencia peso: \"-4\" --> (-4.5, -4.0)\n", + "Diferencia peso: \"-3.5\" --> (-4.0, -3.5)\n", + "Diferencia peso: \"-3\" --> (-3.5, -3.0)\n", + "Diferencia peso: \"-2.5\" --> (-3.0, -2.5)\n", + "Diferencia peso: \"-2\" --> (-2.5, -2.0)\n", + "Diferencia peso: \"-1.5\" --> (-2.0, -1.5)\n", + "Diferencia peso: \"-1\" --> (-1.5, -1.0)\n", + "Diferencia peso: \"-0.5\" --> (-1.0, -0.5)\n", + "Diferencia peso: \"0\" --> (-0.5, 0.0)\n", + "Diferencia peso: \"0.5\" --> (0.0, 0.5)\n", + "Diferencia peso: \"1\" --> (0.5, 1.0)\n", + "Diferencia peso: \"1.5\" --> (1.0, 1.5)\n", + "Diferencia peso: \"2\" --> (1.5, 2.0)\n", + "Diferencia peso: \"2.5\" --> (2.0, 2.5)\n", + "Diferencia peso: \"3\" --> (2.5, 3.0)\n", + "Diferencia peso: \"3.5\" --> (3.0, 3.5)\n", + "Diferencia peso: \"4\" --> (3.5, 4.0)\n", + "Diferencia peso: \"4.5\" --> (4.0, 4.5)\n", + "Diferencia peso: \"5\" --> (4.5, 5.0)\n" + ] + } + ], + "source": [ + "debug = False\n", + "\n", + "esfuerzo_dieta_set = set()\n", + "for esfuerzo_dieta_option in opciones_esfuerzo:\n", + " esfuerzo_dieta_option_key = list(esfuerzo_dieta_option.keys())[0]\n", + " esfuerzo_dieta_option_text = esfuerzo_dieta_option[esfuerzo_dieta_option_key][\"text\"]\n", + " esfuerzo_dieta_option_value = esfuerzo_dieta_option[esfuerzo_dieta_option_key][\"value\"]\n", + " cluster_esfuerzo_dieta = clustering_esfuerzo_dieta_response(esfuerzo_dieta_option_value, debug=debug)\n", + " print(f\"Esfuerzo dieta: \\\"{esfuerzo_dieta_option_text}\\\" (\\\"{esfuerzo_dieta_option_value}\\\") --> \\\"{cluster_esfuerzo_dieta}\\\"\")\n", + " esfuerzo_dieta_set.add(cluster_esfuerzo_dieta)\n", + "\n", + "print(\"\\n\")\n", + "objetivo_set = set()\n", + "for objetivo_option in opciones_objetivo:\n", + " objetivo_option_key = list(objetivo_option.keys())[0]\n", + " objetivo_option_text = objetivo_option[objetivo_option_key][\"text\"]\n", + " objetivo_option_value = objetivo_option[objetivo_option_key][\"value\"]\n", + " cluster_objetivo = clustering_objetivo_response(objetivo_option_value, debug=debug)\n", + " print(f\"Objetivo: \\\"{objetivo_option_text}\\\" (\\\"{objetivo_option_value}\\\") --> \\\"{cluster_objetivo}\\\"\")\n", + " objetivo_set.add(cluster_objetivo)\n", + "\n", + "print(\"\\n\")\n", + "cumplimiento_entrenamiento_set = set()\n", + "for cumplimiento_entrenamiento_option in opciones_cumplimiento_entrenamiento:\n", + " cumplimiento_entrenamiento_option_key = list(cumplimiento_entrenamiento_option.keys())[0]\n", + " cumplimiento_entrenamiento_option_text = cumplimiento_entrenamiento_option[cumplimiento_entrenamiento_option_key][\"text\"]\n", + " cumplimiento_entrenamiento_option_value = cumplimiento_entrenamiento_option[cumplimiento_entrenamiento_option_key][\"value\"]\n", + " cluster_entrenamiento = clustering_entrenamiento_response(cumplimiento_entrenamiento_option_value, debug=debug)\n", + " print(f\"Cumplimiento entrenamiento: \\\"{cumplimiento_entrenamiento_option_text}\\\" (\\\"{cumplimiento_entrenamiento_option_value}\\\") --> \\\"{cluster_entrenamiento}\\\"\")\n", + " cumplimiento_entrenamiento_set.add(cluster_entrenamiento)\n", + "\n", + "print(\"\\n\")\n", + "cumplimiento_dieta_set = set()\n", + "for cumplimiento_dieta_option in opciones_cumplimiento_dieta:\n", + " cumplimiento_dieta_option_key = list(cumplimiento_dieta_option.keys())[0]\n", + " cumplimiento_dieta_option_text = cumplimiento_dieta_option[cumplimiento_dieta_option_key][\"text\"]\n", + " cumplimiento_dieta_option_value = cumplimiento_dieta_option[cumplimiento_dieta_option_key][\"value\"]\n", + " cluster_cumplimiento_dieta = clustering_cumplimiento_dieta_response(cumplimiento_dieta_option_value, debug=debug)\n", + " print(f\"Cumplimiento dieta: \\\"{cumplimiento_dieta_option_text}\\\" (\\\"{cumplimiento_dieta_option_value}\\\") --> \\\"{cluster_cumplimiento_dieta}\\\"\")\n", + " cumplimiento_dieta_set.add(cluster_cumplimiento_dieta)\n", + "\n", + "print(\"\\n\")\n", + "compromiso_set = set()\n", + "for compromiso_option in opciones_compromiso:\n", + " compromiso_option_key = list(compromiso_option.keys())[0]\n", + " compromiso_option_text = compromiso_option[compromiso_option_key][\"text\"]\n", + " compromiso_option_value = compromiso_option[compromiso_option_key][\"value\"]\n", + " cluster_compromiso = clustering_compromiso_response(compromiso_option_value, debug=debug)\n", + " print(f\"Compromiso: \\\"{compromiso_option_text}\\\" (\\\"{compromiso_option_value}\\\") --> \\\"{cluster_compromiso}\\\"\")\n", + " compromiso_set.add(cluster_compromiso)\n", + "\n", + "print(\"\\n\")\n", + "diferencia_peso_set = set()\n", + "for diferencia_peso_option in diferencia_peso_options:\n", + " cluster_diferencia_peso = clustering_diferencia_peso_response(diferencia_peso_option, debug=debug)\n", + " print(f\"Diferencia peso: \\\"{diferencia_peso_option}\\\" --> {cluster_diferencia_peso}\")\n", + " diferencia_peso_set.add(cluster_diferencia_peso)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "num_cluster_esfuerzo_dieta_options: 5\n", + "num_cluster_objetivo_options: 2\n", + "num_cluster_cumplimiento_entrenamiento_options: 2\n", + "num_cluster_cumplimiento_dieta_options: 3\n", + "num_cluster_compromiso_options: 2\n", + "num_cluster_diferencia_peso_options: 21\n", + "Total combinations: 2520\n" + ] + } + ], + "source": [ + "num_cluster_esfuerzo_dieta_options = len(esfuerzo_dieta_set)\n", + "num_cluster_objetivo_options = len(objetivo_set)\n", + "num_cluster_cumplimiento_entrenamiento_options = len(cumplimiento_entrenamiento_set)\n", + "num_cluster_cumplimiento_dieta_options = len(cumplimiento_dieta_set)\n", + "num_cluster_compromiso_options = len(compromiso_set)\n", + "num_cluster_diferencia_peso_options = len(diferencia_peso_options)\n", + "\n", + "total_combinations = num_cluster_esfuerzo_dieta_options * num_cluster_objetivo_options * num_cluster_cumplimiento_entrenamiento_options * num_cluster_cumplimiento_dieta_options * num_cluster_compromiso_options * num_cluster_diferencia_peso_options\n", + "print(f\"num_cluster_esfuerzo_dieta_options: {num_cluster_esfuerzo_dieta_options}\")\n", + "print(f\"num_cluster_objetivo_options: {num_cluster_objetivo_options}\")\n", + "print(f\"num_cluster_cumplimiento_entrenamiento_options: {num_cluster_cumplimiento_entrenamiento_options}\")\n", + "print(f\"num_cluster_cumplimiento_dieta_options: {num_cluster_cumplimiento_dieta_options}\")\n", + "print(f\"num_cluster_compromiso_options: {num_cluster_compromiso_options}\")\n", + "print(f\"num_cluster_diferencia_peso_options: {num_cluster_diferencia_peso_options}\")\n", + "print(f\"Total combinations: {total_combinations}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "def write_to_file(file_name, content):\n", + " with open(file_name, 'w') as file:\n", + " file.write(content)\n", + "\n", + "def append_to_file(file_name, content):\n", + " with open(file_name, 'a') as file:\n", + " file.write(\"\\n\" + content)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'definicion', 'volumen'}" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "objetivo_set" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Progress: 0%| | 0/2520 [00:00 {cluster_esfuerzo_dieta}\")\n", + " append_to_file(file_name, f\"\\tObjetivo: \\\"{objetivo_option}\\\" --> {cluster_objetivo}\")\n", + " append_to_file(file_name, f\"\\tCumplimiento entrenamiento: \\\"{cumplimiento_entrenamiento_option}\\\" --> {cluster_entrenamiento}\")\n", + " append_to_file(file_name, f\"\\tCumplimiento dieta: \\\"{cumplimiento_dieta_option}\\\" --> {cluster_cumplimiento_dieta}\")\n", + " append_to_file(file_name, f\"\\tCompromiso: \\\"{compromiso_option}\\\" --> {cluster_compromiso}\")\n", + " append_to_file(file_name, f\"\\tDiferencia peso: \\\"{diferencia_peso_option}\\\" --> {diff_peso_min}, {diff_peso_max}\")\n", + " append_to_file(file_name, f\"Query: {query}\")\n", + " append_to_file(file_name, f\"No se han encontrado usuarios que cumplen con la query\")\n", + "\n", + " if print_debug:\n", + " print(\"\\nCuando el usuario ha rellenado:\")\n", + " print(f\"\\tEsfuerzo dieta: \\\"{esfuerzo_dieta_option}\\\" --> {cluster_esfuerzo_dieta}\")\n", + " print(f\"\\tObjetivo: \\\"{objetivo_option}\\\" --> {cluster_objetivo}\")\n", + " print(f\"\\tCumplimiento entrenamiento: \\\"{cumplimiento_entrenamiento_option}\\\" --> {cluster_entrenamiento}\")\n", + " print(f\"\\tCumplimiento dieta: \\\"{cumplimiento_dieta_option}\\\" --> {cluster_cumplimiento_dieta}\")\n", + " print(f\"\\tCompromiso: \\\"{compromiso_option}\\\" --> {cluster_compromiso}\")\n", + " print(f\"\\tDiferencia peso: \\\"{diferencia_peso_option}\\\" --> {diff_peso_min}, {diff_peso_max}\")\n", + " print(f\"Se han encontrado {len(matches_dict)} usuarios que cumplen con la query, matches_dict: {matches_dict}\")\n", + "\n", + " if len(matches_dict) > 0:\n", + " macros_differences_list = find_macros_that_match_dates_of_users(matches_dict)\n", + " num_macros_differences_list = len(macros_differences_list)\n", + "\n", + " if num_macros_differences_list == 0:\n", + " if write_file:\n", + " append_to_file(file_name, \"\\n***Cuando el usuario ha rellenado:\")\n", + " append_to_file(file_name, f\"\\tEsfuerzo dieta: \\\"{esfuerzo_dieta_option}\\\" --> {cluster_esfuerzo_dieta}\")\n", + " append_to_file(file_name, f\"\\tObjetivo: \\\"{objetivo_option}\\\" --> {cluster_objetivo}\")\n", + " append_to_file(file_name, f\"\\tCumplimiento entrenamiento: \\\"{cumplimiento_entrenamiento_option}\\\" --> {cluster_entrenamiento}\")\n", + " append_to_file(file_name, f\"\\tCumplimiento dieta: \\\"{cumplimiento_dieta_option}\\\" --> {cluster_cumplimiento_dieta}\")\n", + " append_to_file(file_name, f\"\\tCompromiso: \\\"{compromiso_option}\\\" --> {cluster_compromiso}\")\n", + " append_to_file(file_name, f\"\\tDiferencia peso: \\\"{diferencia_peso_option}\\\" --> {diff_peso_min}, {diff_peso_max}\")\n", + " append_to_file(file_name, f\"Se han encontrado {num_matches} usuarios que cumplen con la query, matches_dict: {matches_dict}\")\n", + " append_to_file(file_name, f\"No se han encontrado macros en la fecha de los usuarios\")\n", + " else:\n", + " if print_debug:\n", + " print(f\"macros_differences_list: {macros_differences_list}\")\n", + "\n", + " train_day_protein_std, train_day_carbs_std, train_day_fat_std, intratrain_protein_std, intratrain_carbs_std, rest_day_protein_std, rest_day_carbs_std, rest_day_fat_std = get_min_max_mean_mode_macros_differences(macros_differences_list)\n", + "\n", + " # if write_file:\n", + " # append_to_file(file_name, \"Se recomienda la siguiente variación de macros (g):\")\n", + " # append_to_file(file_name, f\"\\tDía de entrenamiento - proteínas: min: {train_day_protein_std[0]:.2f}, max: {train_day_protein_std[1]:.2f}, media: {train_day_protein_std[2]:.2f}, moda: {train_day_protein_std[3]:.2f}\")\n", + " # append_to_file(file_name, f\"\\tDía de entrenamiento - carbohidratos: min: {train_day_carbs_std[0]:.2f}, max: {train_day_carbs_std[1]:.2f}, media: {train_day_carbs_std[2]:.2f}, moda: {train_day_carbs_std[3]:.2f}\")\n", + " # append_to_file(file_name, f\"\\tDía de entrenamiento - grasa: min: {train_day_fat_std[0]:.2f}, max: {train_day_fat_std[1]:.2f}, media: {train_day_fat_std[2]:.2f}, moda: {train_day_fat_std[3]:.2f}\")\n", + " # append_to_file(file_name, f\"\\tIntraentreno - proteínas: min: {intratrain_protein_std[0]:.2f}, max: {intratrain_protein_std[1]:.2f}, media: {intratrain_protein_std[2]:.2f}, moda: {intratrain_protein_std[3]:.2f}\")\n", + " # append_to_file(file_name, f\"\\tIntraentreno - carbohidratos: min: {intratrain_carbs_std[0]:.2f}, max: {intratrain_carbs_std[1]:.2f}, media: {intratrain_carbs_std[2]:.2f}, moda: {intratrain_carbs_std[3]:.2f}\")\n", + " # append_to_file(file_name, f\"\\tDía de descanso - proteínas: min: {rest_day_protein_std[0]:.2f}, max: {rest_day_protein_std[1]:.2f}, media: {rest_day_protein_std[2]:.2f}, moda: {rest_day_protein_std[3]:.2f}\")\n", + " # append_to_file(file_name, f\"\\tDía de descanso - carbohidratos: min: {rest_day_carbs_std[0]:.2f}, max: {rest_day_carbs_std[1]:.2f}, media: {rest_day_carbs_std[2]:.2f}, moda: {rest_day_carbs_std[3]:.2f}\")\n", + " # append_to_file(file_name, f\"\\tDía de descanso - grasa: min: {rest_day_fat_std[0]:.2f}, max: {rest_day_fat_std[1]:.2f}, media: {rest_day_fat_std[2]:.2f}, moda: {rest_day_fat_std[3]:.2f}\")\n", + "\n", + " if print_debug:\n", + " print(\"Se recomienda la siguiente variación de macros (g):\")\n", + " print(f\"\\tDía de entrenamiento - proteínas: min: {train_day_protein_std[0]:.2f}, max: {train_day_protein_std[1]:.2f}, media: {train_day_protein_std[2]:.2f}, moda: {train_day_protein_std[3]:.2f}\")\n", + " print(f\"\\tDía de entrenamiento - carbohidratos: min: {train_day_carbs_std[0]:.2f}, max: {train_day_carbs_std[1]:.2f}, media: {train_day_carbs_std[2]:.2f}, moda: {train_day_carbs_std[3]:.2f}\")\n", + " print(f\"\\tDía de entrenamiento - grasa: min: {train_day_fat_std[0]:.2f}, max: {train_day_fat_std[1]:.2f}, media: {train_day_fat_std[2]:.2f}, moda: {train_day_fat_std[3]:.2f}\")\n", + " print(f\"\\tIntraentreno - proteínas: min: {intratrain_protein_std[0]:.2f}, max: {intratrain_protein_std[1]:.2f}, media: {intratrain_protein_std[2]:.2f}, moda: {intratrain_protein_std[3]:.2f}\")\n", + " print(f\"\\tIntraentreno - carbohidratos: min: {intratrain_carbs_std[0]:.2f}, max: {intratrain_carbs_std[1]:.2f}, media: {intratrain_carbs_std[2]:.2f}, moda: {intratrain_carbs_std[3]:.2f}\")\n", + " print(f\"\\tDía de descanso - proteínas: min: {rest_day_protein_std[0]:.2f}, max: {rest_day_protein_std[1]:.2f}, media: {rest_day_protein_std[2]:.2f}, moda: {rest_day_protein_std[3]:.2f}\")\n", + " print(f\"\\tDía de descanso - carbohidratos: min: {rest_day_carbs_std[0]:.2f}, max: {rest_day_carbs_std[1]:.2f}, media: {rest_day_carbs_std[2]:.2f}, moda: {rest_day_carbs_std[3]:.2f}\")\n", + " print(f\"\\tDía de descanso - grasa: min: {rest_day_fat_std[0]:.2f}, max: {rest_day_fat_std[1]:.2f}, media: {rest_day_fat_std[2]:.2f}, moda: {rest_day_fat_std[3]:.2f}\")\n", + " \n", + " progress_bar.update(1)\n", + "\n", + " if one_case:\n", + " break\n", + " if one_case:\n", + " break\n", + " if one_case:\n", + " break\n", + " if one_case:\n", + " break\n", + " if one_case:\n", + " break\n", + " if one_case:\n", + " break\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "firestore", + "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.12.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}