SergioSCA commited on
Commit
7c0815f
verified
1 Parent(s): 10d99a7

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +46 -8
app.py CHANGED
@@ -23,6 +23,8 @@ def actualizar_tareas(modalidades_seleccionadas):
23
 
24
  # Funci贸n para generar el encabezado del CSV (ahora incluye 'id')
25
  def generar_encabezado(modalidades_seleccionadas, tareas_seleccionadas):
 
 
26
  columnas = ["id"] # A帽adimos 'id' como primer elemento
27
  for modalidad in modalidades_seleccionadas:
28
  columnas.append(f"{modalidad.lower()}_input")
@@ -32,22 +34,43 @@ def generar_encabezado(modalidades_seleccionadas, tareas_seleccionadas):
32
  return ",".join(columnas)
33
 
34
  # Funci贸n para buscar datasets compatibles en HuggingFace
35
- def buscar_datasets(modalidades_seleccionadas, tareas_seleccionadas):
36
  query = "+".join(modalidades_seleccionadas + tareas_seleccionadas)
37
  url = f"https://huggingface.co/api/datasets?search={query}"
38
  response = requests.get(url)
39
  datasets = response.json()
 
40
  resultados = []
41
  for dataset in datasets:
 
 
 
 
 
42
  resultados.append(f"- {dataset['id']}: {dataset['description']}")
43
  return "\n".join(resultados)
44
 
45
  # Funci贸n para generar el dataset
46
  def generar_dataset(encabezado, datasets_seleccionados):
47
- # Aqu铆 puedes implementar la l贸gica para extraer datos reales de internet o datasets
48
- # Por simplicidad, generaremos un dataset ficticio basado en el encabezado
 
49
  columnas = encabezado.split(",")
50
- filas = [",".join([f"valor_{i}" for i in range(len(columnas))])]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
  contenido_csv = "\n".join([encabezado] + filas)
52
  return contenido_csv
53
 
@@ -60,9 +83,9 @@ with gr.Blocks() as demo:
60
  modalidades = list(MODALIDAD_TAREAS.keys())
61
  modalidades_seleccionadas = gr.CheckboxGroup(choices=modalidades, label="Selecciona Modalidades")
62
 
63
- # Panel 2: Configuraci贸n de Tareas (CheckboxGroup)
64
  with gr.Row():
65
- tareas_disponibles = gr.CheckboxGroup(choices=[], label="Selecciona Tareas")
66
  modalidades_seleccionadas.change(actualizar_tareas, inputs=modalidades_seleccionadas, outputs=tareas_disponibles)
67
 
68
  # Panel 3: Generar Encabezado del CSV
@@ -71,11 +94,18 @@ with gr.Blocks() as demo:
71
  encabezado_generado = gr.Textbox(label="Encabezado Generado", interactive=False)
72
  btn_generar_encabezado.click(generar_encabezado, inputs=[modalidades_seleccionadas, tareas_disponibles], outputs=encabezado_generado)
73
 
74
- # Panel 4: Buscar Datasets Compatibles
75
  with gr.Row():
 
 
 
76
  btn_buscar_datasets = gr.Button("Buscar Datasets Compatibles")
77
  datasets_encontrados = gr.Textbox(label="Datasets Encontrados", interactive=False)
78
- btn_buscar_datasets.click(buscar_datasets, inputs=[modalidades_seleccionadas, tareas_disponibles], outputs=datasets_encontrados)
 
 
 
 
79
 
80
  # Panel 5: Generar Dataset
81
  with gr.Row():
@@ -84,5 +114,13 @@ with gr.Blocks() as demo:
84
  btn_descargar_csv = gr.File(label="Descargar CSV")
85
  btn_generar_dataset.click(generar_dataset, inputs=[encabezado_generado, datasets_encontrados], outputs=vista_previa_csv)
86
 
 
 
 
 
 
 
 
 
87
  # Ejecutar la aplicaci贸n
88
  demo.launch()
 
23
 
24
  # Funci贸n para generar el encabezado del CSV (ahora incluye 'id')
25
  def generar_encabezado(modalidades_seleccionadas, tareas_seleccionadas):
26
+ if not modalidades_seleccionadas or not tareas_seleccionadas:
27
+ raise ValueError("Debes seleccionar al menos una modalidad y una tarea.")
28
  columnas = ["id"] # A帽adimos 'id' como primer elemento
29
  for modalidad in modalidades_seleccionadas:
30
  columnas.append(f"{modalidad.lower()}_input")
 
34
  return ",".join(columnas)
35
 
36
  # Funci贸n para buscar datasets compatibles en HuggingFace
37
+ def buscar_datasets(modalidades_seleccionadas, tareas_seleccionadas, filtro_tama帽o=None, filtro_licencia=None):
38
  query = "+".join(modalidades_seleccionadas + tareas_seleccionadas)
39
  url = f"https://huggingface.co/api/datasets?search={query}"
40
  response = requests.get(url)
41
  datasets = response.json()
42
+
43
  resultados = []
44
  for dataset in datasets:
45
+ # Aplicar filtros adicionales
46
+ if filtro_tama帽o and dataset.get("size_categories") != filtro_tama帽o:
47
+ continue
48
+ if filtro_licencia and dataset.get("license") != filtro_licencia:
49
+ continue
50
  resultados.append(f"- {dataset['id']}: {dataset['description']}")
51
  return "\n".join(resultados)
52
 
53
  # Funci贸n para generar el dataset
54
  def generar_dataset(encabezado, datasets_seleccionados):
55
+ if not datasets_seleccionados:
56
+ raise ValueError("Debes seleccionar al menos un dataset.")
57
+
58
  columnas = encabezado.split(",")
59
+ filas = []
60
+
61
+ # Cargar datos reales desde los datasets seleccionados
62
+ for dataset_id in datasets_seleccionados.split("\n"):
63
+ dataset_id = dataset_id.strip("- ").split(":")[0] # Extraer ID del dataset
64
+ try:
65
+ dataset = load_dataset(dataset_id, split="train")
66
+ for i, fila in enumerate(dataset):
67
+ if i >= 5: # Limitar a 5 filas por simplicidad
68
+ break
69
+ valores = [str(fila.get(col, "valor_default")) for col in columnas[1:]] # Ignorar 'id'
70
+ filas.append(f"id_{i}," + ",".join(valores))
71
+ except Exception as e:
72
+ filas.append(f"Error cargando dataset {dataset_id}: {str(e)}")
73
+
74
  contenido_csv = "\n".join([encabezado] + filas)
75
  return contenido_csv
76
 
 
83
  modalidades = list(MODALIDAD_TAREAS.keys())
84
  modalidades_seleccionadas = gr.CheckboxGroup(choices=modalidades, label="Selecciona Modalidades")
85
 
86
+ # Panel 2: Configuraci贸n de Tareas (CheckboxGroup expandido)
87
  with gr.Row():
88
+ tareas_disponibles = gr.CheckboxGroup(choices=[], label="Selecciona Tareas", interactive=True, elem_classes=["expanded-checkbox"])
89
  modalidades_seleccionadas.change(actualizar_tareas, inputs=modalidades_seleccionadas, outputs=tareas_disponibles)
90
 
91
  # Panel 3: Generar Encabezado del CSV
 
94
  encabezado_generado = gr.Textbox(label="Encabezado Generado", interactive=False)
95
  btn_generar_encabezado.click(generar_encabezado, inputs=[modalidades_seleccionadas, tareas_disponibles], outputs=encabezado_generado)
96
 
97
+ # Panel 4: Buscar Datasets Compatibles con Filtros Adicionales
98
  with gr.Row():
99
+ with gr.Column():
100
+ filtro_tama帽o = gr.Dropdown(choices=["small", "medium", "large"], label="Filtrar por Tama帽o")
101
+ filtro_licencia = gr.Dropdown(choices=["mit", "apache-2.0", "cc-by-4.0"], label="Filtrar por Licencia")
102
  btn_buscar_datasets = gr.Button("Buscar Datasets Compatibles")
103
  datasets_encontrados = gr.Textbox(label="Datasets Encontrados", interactive=False)
104
+ btn_buscar_datasets.click(
105
+ buscar_datasets,
106
+ inputs=[modalidades_seleccionadas, tareas_disponibles, filtro_tama帽o, filtro_licencia],
107
+ outputs=datasets_encontrados
108
+ )
109
 
110
  # Panel 5: Generar Dataset
111
  with gr.Row():
 
114
  btn_descargar_csv = gr.File(label="Descargar CSV")
115
  btn_generar_dataset.click(generar_dataset, inputs=[encabezado_generado, datasets_encontrados], outputs=vista_previa_csv)
116
 
117
+ # Estilo CSS para expandir el 谩rea de selecci贸n de tareas
118
+ demo.css = """
119
+ .expanded-checkbox {
120
+ max-height: 200px; /* Altura m谩xima */
121
+ overflow-y: auto; /* Scroll vertical si es necesario */
122
+ }
123
+ """
124
+
125
  # Ejecutar la aplicaci贸n
126
  demo.launch()