SergioSCA commited on
Commit
a48c7f7
verified
1 Parent(s): c09a626

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +10 -93
app.py CHANGED
@@ -1,94 +1,11 @@
1
  import gradio as gr
2
- from datasets import load_dataset
3
- import requests
4
- import json
5
- import matplotlib.pyplot as plt
6
-
7
- # Cargar modalidades y tareas desde un archivo JSON
8
- with open("modalidades_tareas.json", "r") as file:
9
- MODALIDAD_TAREAS = json.load(file)
10
-
11
- def validar_modalidades_tareas(modalidades_tareas):
12
- for modalidad, tareas in modalidades_tareas.items():
13
- if not isinstance(modalidad, str) or not isinstance(tareas, list):
14
- raise ValueError(f"Formato incorrecto para la modalidad: {modalidad}")
15
- for tarea in tareas:
16
- if not isinstance(tarea, str):
17
- raise ValueError(f"Formato incorrecto para la tarea: {tarea} en la modalidad {modalidad}")
18
-
19
- # Validar el diccionario
20
- validar_modalidades_tareas(MODALIDAD_TAREAS)
21
-
22
- # Funci贸n para generar la gr谩fica de barras
23
- def generar_grafica_barras(tareas_seleccionadas):
24
- # Contar la cantidad de tareas seleccionadas por modalidad
25
- conteo_modalidades = {}
26
- for modalidad, tareas in MODALIDAD_TAREAS.items():
27
- conteo_modalidades[modalidad] = len([tarea for tarea in tareas if tarea in tareas_seleccionadas])
28
-
29
- modalidades = list(conteo_modalidades.keys())
30
- cantidades = [conteo_modalidades[modalidad] for modalidad in modalidades]
31
-
32
- # Crear la gr谩fica de barras horizontal
33
- fig, ax = plt.subplots(figsize=(10, 6))
34
- ax.barh(modalidades, cantidades, color='skyblue', edgecolor='black')
35
- ax.set_xlabel('Cantidad de Tareas Seleccionadas')
36
- ax.set_ylabel('Modalidades')
37
- ax.set_title('Distribuci贸n de Tareas Seleccionadas por Modalidad')
38
- ax.invert_yaxis() # Invertir el eje Y para que las modalidades aparezcan de arriba hacia abajo
39
-
40
- return fig
41
-
42
- # Funci贸n para generar el encabezado del CSV
43
- def generar_encabezado(tareas_seleccionadas):
44
- if not tareas_seleccionadas:
45
- raise ValueError("Debes seleccionar al menos una tarea.")
46
-
47
- columnas = ["id"] # A帽adimos 'id' como primer elemento
48
- for tarea in tareas_seleccionadas:
49
- columnas.append(f"{tarea.lower().replace(' ', '_')}_label")
50
- return ",".join(columnas)
51
-
52
- # Funci贸n para buscar datasets compatibles en HuggingFace
53
- def buscar_datasets(tareas_seleccionadas, filtro_tama帽o=None, filtro_licencia=None):
54
- query = "+".join(tareas_seleccionadas)
55
- url = f"https://huggingface.co/api/datasets?search={query}"
56
- response = requests.get(url)
57
- datasets = response.json()
58
-
59
- resultados = []
60
- for dataset in datasets:
61
- # Aplicar filtros adicionales
62
- if filtro_tama帽o and dataset.get("size_categories") != filtro_tama帽o:
63
- continue
64
- if filtro_licencia and dataset.get("license") != filtro_licencia:
65
- continue
66
- resultados.append(f"- {dataset['id']}: {dataset['description']}")
67
- return "\n".join(resultados)
68
-
69
- # Funci贸n para generar el dataset
70
- def generar_dataset(encabezado, datasets_seleccionados, pagina_actual=1, filas_por_pagina=5):
71
- if not datasets_seleccionados:
72
- raise ValueError("Debes seleccionar al menos un dataset.")
73
-
74
- columnas = encabezado.split(",")
75
- filas = []
76
-
77
- # Cargar datos reales desde los datasets seleccionados
78
- for dataset_id in datasets_seleccionados.split("\n"):
79
- dataset_id = dataset_id.strip("- ").split(":")[0] # Extraer ID del dataset
80
- try:
81
- dataset = load_dataset(dataset_id, split="train")
82
- inicio = (pagina_actual - 1) * filas_por_pagina
83
- fin = pagina_actual * filas_por_pagina
84
- for i, fila in enumerate(dataset[inicio:fin]):
85
- valores = [str(fila.get(col, "valor_default")) for col in columnas[1:]] # Ignorar 'id'
86
- filas.append(f"id_{inicio + i}," + ",".join(valores))
87
- except Exception as e:
88
- filas.append(f"Error cargando dataset {dataset_id}: {str(e)}")
89
-
90
- contenido_csv = "\n".join([encabezado] + filas)
91
- return contenido_csv
92
 
93
  # Interfaz Gradio
94
  with gr.Blocks() as demo:
@@ -96,14 +13,14 @@ with gr.Blocks() as demo:
96
 
97
  # Panel 1: Lista de Tareas Disponibles con Checkboxes
98
  with gr.Row():
99
- #gr.Markdown("### Selecciona Tareas")
100
  todas_las_tareas = [tarea for tareas in MODALIDAD_TAREAS.values() for tarea in tareas]
101
  tareas_seleccionadas = gr.CheckboxGroup(choices=todas_las_tareas, label="Tareas Disponibles", interactive=True)
102
 
103
  # Panel 2: Gr谩fica de Barras
104
  with gr.Row():
105
- #gr.Markdown("### Distribuci贸n de Tareas Seleccionadas por Modalidad")
106
- grafica_barras = gr.Plot(label="Distribuci贸n de Tareas Seleccionadas por Modalidad")
107
  btn_actualizar_grafica = gr.Button("Actualizar Gr谩fica")
108
  btn_actualizar_grafica.click(
109
  fn=lambda tareas: generar_grafica_barras(tareas),
 
1
  import gradio as gr
2
+ from functions import (
3
+ MODALIDAD_TAREAS,
4
+ generar_grafica_barras,
5
+ generar_encabezado,
6
+ buscar_datasets,
7
+ generar_dataset
8
+ )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
 
10
  # Interfaz Gradio
11
  with gr.Blocks() as demo:
 
13
 
14
  # Panel 1: Lista de Tareas Disponibles con Checkboxes
15
  with gr.Row():
16
+ gr.Markdown("### Selecciona Tareas")
17
  todas_las_tareas = [tarea for tareas in MODALIDAD_TAREAS.values() for tarea in tareas]
18
  tareas_seleccionadas = gr.CheckboxGroup(choices=todas_las_tareas, label="Tareas Disponibles", interactive=True)
19
 
20
  # Panel 2: Gr谩fica de Barras
21
  with gr.Row():
22
+ gr.Markdown("### Distribuci贸n de Tareas Seleccionadas por Modalidad")
23
+ grafica_barras = gr.Plot(label="Gr谩fica de Barras")
24
  btn_actualizar_grafica = gr.Button("Actualizar Gr谩fica")
25
  btn_actualizar_grafica.click(
26
  fn=lambda tareas: generar_grafica_barras(tareas),