{ "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 }