diff --git a/src/board.py b/src/board.py index 28a5179..96a9afe 100644 --- a/src/board.py +++ b/src/board.py @@ -6,7 +6,7 @@ import pandas as pd from pathlib import Path - +#Se inicializa la pagina poniendole titulo, un icono, y estableciendo el estado de la disposicion y la barra lateral st.beta_set_page_config( page_title="AutoGOAL Board", page_icon=str(Path(__file__).parent.parent / "img" / "autogoal-logo-embedded.png"), @@ -16,18 +16,20 @@ def main(): + #Se restablece la configuracion de la opcion showfileUploaderEncoding para evitar una advertencia indeseada st.set_option("deprecation.showfileUploaderEncoding", False) - + + #Se carga la imagen de la página st.image( str(Path(__file__).parent.parent / "img" / "autogoal-banner.png"), # width=600, use_column_width=True, ) - + #Se da a escoger como se quiere cargar el archivo mediante una selectbox input_mode = st.sidebar.selectbox("Input mode", ["Upload file", "Enter path"]) - + #Se crea la variable "fp" donde se guardara el archivo en cuestion fp = None - + #Segun la opcion escogida se le asigna a la variable fb el valor que debe tener if input_mode == "Enter path": path = st.sidebar.text_input("Input path") if path: @@ -38,16 +40,17 @@ def main(): if fp is None: return - + #Se muestra en la barra lateral un widget donde se puede aumentar o disminuir las "Pipeline features" y se almacena este numero en una variable number_features = st.sidebar.number_input("Pipeline features", 0, None, 1) + #Se crea una lista "features" para almacenar expresiones regulares features = [] - + #Se añaden los elementos a features for i in range(number_features): features.append(st.sidebar.text_input("Feature %i" % i, key="feature_%i" % i, value="\w+=[a-zA-Z_]+")) process(fp, features) - +#Trata de castear el pipeline a string y si no lo consigue lo devuelve igual que entró def describe(pipeline): try: return black.format_str(pipeline, mode=black.FileMode()) @@ -59,9 +62,10 @@ def extract_features(pipeline, features): results = [] for f in features: + #(no entiendo por que se usa el not f, si f es un str, no un valor booleano) if not f: continue - + #Se comprueba cuales strs coinciden con la expresion regular definida, y se añaden a ¨results¨ for m in re.findall(f, pipeline): results.append((f, m)) @@ -69,11 +73,13 @@ def extract_features(pipeline, features): def process(fp, features): + #Se crea la variable "lines" y se abre un espacio para esta en la barra lateral lines = st.sidebar.empty() - + #Muestra un checkbox en la barra lateral que permite decidir si Ignore fitness = 0 ignore_zero = st.sidebar.checkbox("Ignore fitness=0") - + #Se crea la variable "max_fitness" donde se almacenara al maximo valor que alcance "fitness" en la grafica, y se abre un espacio para esta en la pagina max_fitness = st.empty() + #Se crea el grafico que se muestra en la pagina (me causan dudas las especificidades de COMO se crea el grafico) chart = st.altair_chart( alt.Chart(data=None) .mark_bar() @@ -102,11 +108,11 @@ def process(fp, features): ), use_container_width=True, ) - + #Se crea un checkbox en la barra lateral que permite decidir si se desean mostrar los features como tabla show_features_table = st.sidebar.checkbox("Show features as table") features_table = st.empty() all_features = [] - + st.markdown("### Best pipeline") best_text = st.empty() @@ -115,9 +121,11 @@ def process(fp, features): avg_fit = [] for i, line in enumerate(fp): + #Muestra que linea del archivo se esta cargando lines.info(f"Loading line: {i}") + #se guarda en la variable "data" el contenido linea por linea del archivo data = json.loads(line) - + #(esto me confunde, creo que aqui se realiza como tal el procesamiento especifico de los datos de cada linea del archivo que se cargó, pero no se bien que hace) if "evaluating_pipeline" in data: fitness = data["evaluating_pipeline"].get("fitness", 0.0) pipeline_str = describe(data["evaluating_pipeline"]["pipeline"]) @@ -143,15 +151,17 @@ def process(fp, features): records=("feature_value", "count"), ) ) - + #Se actualiza, de ser necesario, el valor maximo de fitness if fitness >= max_fit: max_fit = fitness + #Se muestra en la pagina el codigo del pipeline best_text.code(pipeline_str) - + #Muestra en la pagina un label con el maximo valor alcanzado por fitness y la media de los valores de fitness max_fitness.info( f"- **Max Fitness:** `{max_fit}` \n - **Average Fitness:** `{sum(avg_fit) / len(avg_fit) if avg_fit else 0.0:0.3}`" ) + #(no se por que o para que este pedazo) if fitness > 0 or not ignore_zero: pipeline += 1 avg_fit.append(fitness) @@ -166,9 +176,9 @@ def process(fp, features): ) ] ) - + #Muestra un mensaje cuando se hayan cargado todas las lineas del archivo lines.success("File loaded succesfully") - +#(no entiendo que variable es "_name_", ni por que se hace esta condicional antes de llamar al main) if __name__ == "__main__": main()