jueves, 29 de mayo de 2014

[INVESTIGACIÓN] Finalización de un producto entregable

Para la última semana se entrega al menos uno de los cuatro productos entregables propuestos:
  • Tesis: Debe estar registrado en la facultad y enviado a revisión.
  • Póster: Presentado o enviado a un evento académico.
  • Artículo: Enviado a una revista o congreso.
  • Presentación: De tipo abstract-only para un congreso.
De los 4 productos se tienen 2 posibles: tesis (la misma que se ha redactado desde inicio del curso) y un póster (presentado en la exposición de pósters del aniversario del CIIDIT).

Las últimas correcciones se han hecho a la tesis aún a la espera de completar las pruebas, marcando en rojo lo que falta (datos no reales y partes de la redacción que podrían modificarse dependiendo de los resultados).

El poster fué la primera opción (además de tesis) que me propuse a realizar. Basado en mi trabajo de tesis, el 22 de mayo de 2014 se presentó en el CIIDIT en un concurso de posters por el 6to aniversario del mismo. Durante el evento los jueces y algunos otros participantes me dieron valiosa retroalimentación sobre mi proyecto, así como diferentes enfoques a los cuales se puede destinar en un futuro.

miércoles, 21 de mayo de 2014

[INVESTIGACIÓN] Finalización de la tesis

Para esta semana la tarea era terminar los pendientes de tesis para poder ser enviada a revisión.

Durante el semestre modifiqué un documento donde escribía los pendientes, tanto comentarios de mi asesora como notas personales, al día de hoy he cubierto gran parte de esas notas.

También utilizé un documento donde anotaba los cambios realizados en la implementación para posteriormente documentarlos en la tesis.

Lo que se envía será solo un borrador sin los experimentos reales, esperando retroalimentación de los revisores sobre el contenido.

Avance de proyecto

Por ahora no hay avance, he dedicado mayor parte del tiempo en acabar la redacción de tesis, poster y presentación, pero se espera, como se mencionó en la entrada pasada, continuar con las pruebas reales para terminar la redacción de tesis por completo (tomando en cuenta la retroalimentación que los revisores llegaran a dar).

viernes, 16 de mayo de 2014

[INVESTIGACIÓN] Preparación de un artículo

Para esta semana se encargó investigar sobre congresos y revistas de ciencias que acepten trabajos de cualquiera siempre que sean originales y hablen de alguno de los temas que se cubren.

Seleccioné el Congreso Internacional en Ciencias Computacionales (CiComp) el cual celebra en la ciudad de Ensenada, B.C. México del 5 al 7 de Noviembre de 2014. Enlace al sitio.

CiComp acepta trabajos en diferentes áreas de ciencias computacionales, desde ingeniería de software en general hasta temas complejos como inteligencia artificial.

Para que el artículo sea aceptado debe cumplir una serie de requisitos:
  • Estar escrito en idioma inglés (Si se quiere formar parte de la publicación Research in Computer Science (ISSN 1870-4069)).
  • Máximo 8 páginas (4 si se trata de un poster).
  • Cumplir con el formato LNCS. Enlace al sitio.
Mi artículo por ahora tiene 16 páginas y las figuras son directamente las que utilizo en la tesis, aún tienen colores lo cual no es permitido según el formato LNCS, igualmente los cuadros les falta el formato especificado.

Avance de proyecto

Esta semana no hay avance de proyecto, para las próximas semanas se espera terminar las pruebas de rendimiento.

viernes, 9 de mayo de 2014

[INVESTIGACIÓN] Preparación de un póster

Para esta semana se realizó un póster de investigación basado en la tesis.

Se utilizó el paquete "a0poster" de LaTeX.

La información utilizada para el póster se tuvo que resumir a mencionar los procedimientos y la metodología utilizada para el desarrollo del proyecto, con la intención de dar a conocer la forma en que éste funciona. Al término de la etapa de experimentación quizá se incluyan las tablas con los datos obtenidos (si es que se tienen antes del 22 de mayo).

Avance de proyecto

Esta semana no hay avance de proyecto.

jueves, 1 de mayo de 2014

[INVESTIGACIÓN] Preparación de una presentación

Para esta semana la tarea era generar una presentación con la información que tenemos en la tesis hasta ahora.

Se utilizó el paquete "Beamer" de LaTeX que sirve para hacer este tipo de documentos.

Para hacer la presentación se copió la información actual en la tesis y una vez que ya era compilable se procedió a resumir la información.

También para esta semana se encargó tener un borrador de tesis, por lo que me di a la tarea de terminar el resto de redacción que me faltaba, aunque aún existen algunas figuras pendientes, partes de redacción que aún no se definen hasta que se llegue a la siguiente fase del proyecto, en este caso terminar las pruebas y aún falta agregar algunas referencias y modificar algunas que me parecen poco convincentes.

Avance de proyecto

Durante este periodo de tiempo se trabajo en modificar la rutina de análisis que anteriormente se había mencionado que era poco eficiente.

Se modificaron algunos aspectos mínimos para agilizar el proceso, como por ejemplo; antes se procesaban posibles patrones que contenían diferencias las cuales inutilizaban esos datos, ahora se detectan esas diferencias antes del análisis y se descartan, ahorrando varios minutos de procesamiento.

Adicionalmente a estas modificaciones, se reescribió la rutina de análisis por completo en el lenguaje Java. En un principio la carga de datos era muy pesada causando errores de falta de memoria. La solución fue lanzar el subproceso con parámetros específicos que aumentan la capacidad de la máquina virtual de Java:

Al ejecutar con estos parámetros, la máquina virtual se ejecuta con 2 GB de memoria y en modo 64 bits.

El análisis pasó de tardar de 3 a 4 minutos por canción a 15 a 20 segundos por canción.

Al tener buenos tiempos de ejecución ahora puedo continuar con la fase de transición entre pistas y por lo pronto pensar en métodos para seleccionar las pistas a procesar, probablemente se emplee un heurístico que se base en las pistas recientes. La intención de ésto es porque aunque la velocidad de análisis es buena, cuando en el directorio haya demasiadas pistas probablemente el procesamiento tardará más de lo que tarde la pista en finalizar.

jueves, 10 de abril de 2014

[INVESTIGACIÓN] Conclusiones y trabajo a futuro

Para esta semana se pidió redactar la parte de conclusiones y trabajo a futuro. Debido a que las conclusiones aún no son ciertas del todo, marqué en rojo aquellas partes de la discusión que pueden ser cambiadas o removidas.
  • Se redactó un resumen del proyecto en general, abarcando principalmente la implementación de software y explicando lo que hace (tomando en cuenta que aún está en desarrollo).
  • Se explicaron algunos resultados de las pruebas y las conclusiones a las que se llegó con esos resultados, mencionando lo que se podría hacer para mejorar.
  • Se agregó la parte del trabajo a futuro, donde se mencionan algunas cosas que no se lograron durante el desarrollo propuesto pero que siguen en planes para implementar en un futuro.
Avance de proyecto

Durante esta semana se trabajo en mejorar algunos aspectos de funcionamiento del programa, específicamente analizar algunos errores que se generan a veces y modificar algunas rutinas que causan que el programa se quede congelado.

Para evitar los congelamientos repentinos, cambié algunas rutinas y las separé de la implementación principal. Ahora en lugar de ejecutar una parte del programa en un hilo, ejecuto un script en un subproceso distinto.

Aún ejecuto un hilo que espera una respuesta del subproceso, sin embargo, es un hilo que tiene poca carga, por lo tanto no causa congelamientos.

Una ventaja es que la lógica del script es que puede ser implementada en un lenguaje distinto a Python, lo cual puede causar una mejora de rendimiento, la cual es necesaria ya que el procesamiento tarda varios minutos actualmente en terminar, si deseo alcanzar la meta de procesamiento en tiempo real, será necesario hacer algo al respecto con ello.

En cuanto a los errores que se detectaron, parece ser que la causa es el procesar un archivo el cual no presenta patrones reconocibles. Como solución rápida, al detectar el error, en lugar de regresar la pista siguiente obtenida mediante el análisis, se regresa una pista al azar diferente a la actual.

Normalmente cuando no hay errores, se obtiene una lista de reproducción constante como la siguiente:

La primera parte corresponde al archivo a reproducir, la segunda dice la forma en que se obtuvo ya sea mediante el análisis (process) o mediante la selección al azar (random).

Cuando sucede el error ésto es lo que internamente sucede en el programa:

Se puede observar que el archivo conflictivo es "Qtam1t-120.wav", ya que después de reproducirse causa un error.

Por ahora continuaré trabajando en mejorar el análisis y hacerlo más rápido, muy probablemente cambie el lenguaje de programación exclusivamente para esta parte (una vez que ya sea eficiente).

También analizaré los datos de este archivo conflictivo y dar una solución más viable.

El desarrollo de los efectos de transición y la interfaz gráfica aún están en proceso.

miércoles, 2 de abril de 2014

[INVESTIGACIÓN] Análisis de experimentos

Para esta semana se redactó parte de lo que será la sección de análisis de experimentos la cual consiste en verificar los resultados de las evaluaciones obtenidas.

Cada prueba se analiza por separado y se explican las variables de cada prueba, así como el por qué se decidió utilizar tales variables. También se explica el por qué se realiza ese experimento y la intención de saber sus resultados.

Los análisis finales se redactarán una vez concluidas las pruebas, en ellos se explicará el motivo del comportamiento de los resultados obtenidos.

Avance de proyecto

Durante esta semana se trabajó en la selección automática de pistas. En la entrada anterior se explico que para encontrar patrones se analizan coincidencias de intensidades y se almacenan los tiempos y la cantidad de coincidencias.

Para seleccionar una pista de todas las existentes primero se analiza para cada una sus patrones y se obtienen sus tiempos y los patrones que puedan coincidir.

En cada lista se tienen los patrones compatibles con la pista actual y se procede a encontrar en cada lista un patrón que tenga la cantidad máxima de coincidencias posibles pero el tiempo de inicio mínimo posible.

Por cada lista se obtiene un candidato de tiempo de inicio y se guarda su número de coincidencias. Se evalúa de la misma forma con el candidato de cada pista y de esa manera se obtiene una sola.

A continuación se muestra en el video una prueba de la reproducción y la selección de pistas de forma automática:

video

Como se puede observar en el video se nota un patrón de reproducción con las pistas siguientes en orden: Stam1h-120.wav > Fill1s-120.wav > Qtam1t-120.wav, siendo la cuarta pista siempre variable.

Debido a que a veces se tiende a presentar este tipo de repetición, se agregó un factor aleatorio para cambiar a una pista compatible. Sin embargo es posible que en el futuro se cambie por una lista tabú, o algún método más eficiente en la selección de pistas.

Por ahora se genera una reproducción basada en la compatibilidad de patrones entre pistas y no una lista de reproducción en sí.

Para el resto del proyecto se trabajará en mejorar aspectos de este algoritmo y en producir una transición suave entre pistas.

También para esta última etapa se empezarán con las pruebas, inicialmente con ciertas pruebas de rendimiento, una vez que el proyecto esté completo se concluirán con las pruebas de rendimiento restantes y finalmente se realizarán las pruebas con usuarios.