jueves, 28 de febrero de 2013

Resumen. Suffix Tree

Reference to  "Algorithms on Strings, Trees, and Sequences" by Dan Gusfield.

Introduction

The string of lenght  m can be generated into m sufflix can be stored

  •  created this structure requieres time O(m)

  • for a parttner requieres tiimeO(n)
These two properties make the suffix tree an appealing structure for a diverse range of bioinformatics applications including: multiple genome alignment (Michael Hohl et al., 2002)

Biological Application

Genome Alignament

 Reference this book "Algorithms on Strings, Trees, and Sequences" by Dan Gusfield.

 At a least two programs based Suffix trees are available for whole gnome alignament. 

MUMmer and MGA both use common subsequences as anchors for the alignment. While they both use the same data structure:

MUMmer extracts Maximal Unique Matches (MUMs)  sequences that occur exactly once in each genome, sorts these sequences to find the longest set of MUMs occurring in the same order in both sequences, and uses this set of sequences to anchor the multiple alignment. 

For this the gaps between anchors are filled using the Needleman Wunsch dynamic programming alignment algorithm.  MUMmer is restricted to comparing two genomes.

The function

MGA computes the longest non-overlapping sequence of Maximal Multiple Exact Matches (multiMEMs) and uses these to guide the multiple alignment. A MEM is defined as a (K+1)-tuple (l, p_0, p_1, ... p_k-1) such that l indicates the length of the MEM, and p_i indicates the start coordinate of the exact match in genome i. A maximal MEM cannot be extended to the left or the right and is referred to as a multiMEM. Gaps are shortened by recursively extracting multiMEM sequences, and finally filled using ClustalW - a progressive/iterative multiple alignment method.

Bibliografia

Link1

martes, 26 de febrero de 2013

Lab #4. Observaciones y Recomendaciones para proyecto

Para esta entrada se realizarían comentarios o retroaliemntaciones a las presentaciones sobre diseño conceptual o contextual de los proyectos.

Auto Seguro (Sergio, Alex, Peke y Cris)

En mi opinion en base a esas encuestas o sugerencias de los usuarios que tomarón en cuenta podrían comenzar un prototipo inicial para ver como interactua el usuario con el sistema que quieren presentar, también observe en su presentación tienen varias tecnologías como aportación con estas  podrían poner cual sería las tecnologías que se acoplarian más a su idea de una manera más definida en el contexto que están presentando, para que no se vuelva mas complicado en el desarrollo.

Casa Segura(Rene, Raúl, Iván)
Su proyecto es muy bueno, por lo que veo en las preguntas de la encuesta tomarón dos temas no uno solo en especifico, si se abarcaran los dos una recomendación sería definir un alcance que tendría su proyecto para obtener un mejor resultado con los usuarios que llegaron a ser parte de esta encuesta, también sería mejor preguntar por características del producto además de las áreas en las que el usuario cree que debería haber mas seguridad.
 
Garage Inteligente (Emmanuel, Max, Carmen, Victor)
Es una idea innovadora  y sería muy util para casas que cuentan con este tipo de compartimento. Una sugerencia sería ampliar las herramientas con que trabajarían para obtener beneficio de quienes no cuentan con uno y ofrecer el producto en otros campos. Dato. Me parecio muy bien estructurado y planeado su poryecto 
Bloqueo de computadora(Obed, Ave, Pedro, Jona) 
Me parecio muy buena idea en cuanto a lo de reconocimiento facial o voz ya que ayudaría a personas que han sufrido algún tipo de broma en sus redes sociales, en sus encuestas me dí cuenta que podrían agregar que tan importante sería un software como este.


Despertador inteligente (Ramón, Cecy, Roberto)
Es una propuesta interestante, lo que observe en sus encuestas es que los usuarios les dieron una buena aportación que era enfocarlo mas a una aplicación y pienso sería mejor ya que la mayoría de esos usuarios cuentan con un smathphone y sería abarcar otro necesidad para los usuarios.

Oficina Inteligente (Lupe, Osvaldo, Triana, Esteban)
Es muy buena propuesta, a mi parecer en su entrevista si falto agregar a otros usuarios ya que los puntos en los que estan enfocados son variados, mi recomendación sería solo definir bien hacia que parte va dirigido,  por ejemplo algo de seguridad o cerrar ventanas o identificar personas para ver que tipo de tecnologías o herrmaientas podrían ser las mas aptas para su idea. 

Localizador GPS (Omar, Saúl Isaías)
Es de gran ayuda para muchos usuarios este tipo de dispositivo, pero no queda claro si será enfocado a niños o mascotas, ya que pienso podría ser diferente en cada caso en cuanto al funcional o en lo fisico también sería diferente ya que en personas si podria ser en forma de brazalete pero en perros sería preferible en collar a mi punto de vista. Y en las encuestas podrían haber recopilado ese dato si al usuario le gustaría que fuera usado en mascotas o niños, para en caso de niños el usuario que podría estar interesado serían las mamas y así ellas les darían su punto de vista.

CarNXP
Para este proyecto sería buena idea establecer otras edades para quien va dirigido el producto ya que no todas las personas mayores manejan o no tienen carro, me parece que sería mejor dirigirlo a jovenes y adultos  entre 20 y 50 años. 

Además, establecer si su producto es de uso compartido o es solo para una persona, y si las demás personas que usan el carro están dispuestas a aprender a usar la tecnología o utilizarla en sus autos.





jueves, 21 de febrero de 2013

Lab3. Convex Hull

Mi repositorio

Para esta semana se trabajo nuevamente con los bordes pero ahora, teníamos que ubicar los puntos de las orillas que al unirlos envuelve por completo una figura. 

El algoritmo usado para obtenerlo es  convex hull  al igual que de Jarvi’s march el cual resulta ser uno de los más sencillos
  • ·Se inicia a un punto extremo dentro de los puntos del contorno, normalmente el que se encuentre más a la izquierda. 
  • En cada paso, se prueba cada punto de los puntos y se encuentra cual hace la vuelta más larga hacia la derecha. Este punto debe estar en el contorno
En este caso no se obuvo el resultado al hacer el envolvimiento uniendo los puntos, pero si aparecen dentro de los bordes



Código

Tarea2. Metodos de Codificación

Se realizo una simulación utilizando los métodos de búsqueda para palabras utilice el algoritmo de boyer-moore es el unico implementado.

Este algoritmo analiza la cadena de derecha a izquierda esto es eliminando el ultimo elemento del patrón de palabras después de esto se invierte este patrón y se van insertando todos los elementos que no esten en el patrón referente a la cadena de texto.

Y como resultado no obtuve nada porque aun no esta terminado :(

Código

martes, 19 de febrero de 2013

Tecnicas de Diseño Conceptual

El  diseño  conceptual  es  una  parte  fundamental  en  el  proceso  de  diseño  ya que en esté se generan las posibles opciones a tomar en cuenta para el diseño
final. En  primer  lugar  se  deben  tomar  en  cuenta  los  requerimientos  planteados  para  la necesidad  a  cubrir.

Modelos de diseño:
Los modelos y métodos de diseño se pueden presentar dentro del campo que se califican como investigación en diseño cuyo objetivo es establecer nuevas formas o recomendaciones que potencién la eficiencia en el diseño.

Se clasifica los modelos de diseño en dos grupos: descriptivos y prescriptivos,
donde:
  • Los modelos descriptivos muestran la secuencia de actividades que ocurren en diseño.
  • Los prescriptivos, como su nombre lo indica, prescriben un patrón de actividades de diseño.
En la primera fase se buscan conceptos o principios de identificación de
solución al problema, para la cual se analiza el problema la necesidad identificado, se sintetiza una o varias posibles soluciones y se evalúan con respecto a restricciones (especificaciones)


En la fase de diseño preliminar se avanza en ser concretos en una solución al
problema, determinando componentes e interacciones con el suficiente grado como para poderla evaluar objetivamente.

Modelos cognitivos:
Los modelos cognitivos buscan hacer una descripción formal de la forma de actuación del conocimiento del individuo que diseña.

Se puede concluir que a pesar de las diferencias que pueden existir entre ellos, muestran algunas coincidencias que llevan a afirmar el reconocimiento de etapas comunes, como es el caso concreto de la etapa de generación de conceptos de diseño, esto es, de alternativas de solución al problema que se aborda en un momento determinado y tener creatividad.


Referencia:
Link1
Link2




lunes, 18 de febrero de 2013

Lab. Ubicom

Tarea 2(clase). Detección de formas


Para está tarea se utilizaron las rutinas anteriores para poder encontrar las separaciones que existen entre componentes de la imagen y poder diferenciarlos. 
Para detectar los contornos se realizaron los siguientes pasos:

  • Conversión de imagen a escala de grises.
  • Convolución de la imagen con la máscara aplicada anteriormente
  • Binarización de la imagen

Aplique lo anterior a una nueva imagen para ver el comportamiento de la imagen con menos componentes.




Detectar formas 
Para realizar el bfs utilice como base el algoritmo bfs utilizado por la Dra con texto ASCII visto en clase. Después de tener los contornos marcados donde tenemos un punto de inicio en las coordenadas x, y, se guarda el valor de su píxel en una variable, así poder recorrer todos los píxeles que son del mismo color y marcarlos de un color determinado. 


Mientras se recorren estos píxeles se va contando la cantidad de los píxeles para después calcular el porcentaje que tiene esa figura con respecto al total de píxeles y al ir recorreriendo cada píxel de la imagen binarizada, se aplicara BFS a cada pixel negro que se encuentre y coloreando sus vecinos con un color aleatorio. 


 

Ahora el componente más grande es el fondo y se colorea gris.
Para hacer esto primero se necesitaba tener coloreadas las figuras, después se saca un porcentaje dependiendo de la cantidad de píxeles que cubre una figura con respecto a la cantidad de píxeles totales de la imagen, una vez que se tiene cual es la de mayor porcentaje con ese color que se guardo se hace de nuevo bfs() para pintar todo el fondo de color gris.


Imagen con centros, porcentajes y etiquetas: 

Ahora lo que sigue es dibujar el centro de masa esto se obtiene sumando sus coordenadas "x" y "y"  para después promediarlas. Al lado del centro de masa se agrega una etiqueta del ID del componente al que pertenece.

Porcentajes



Otro ejemplo :




Repositorio :





jueves, 14 de febrero de 2013

Lab 2.Ruido Sal y Pimienta

Para esta semana se continuaando con imágenes ahora aplicando cierto ruido aleatorio y después eliminarlo.

Generación sal y pimienta:

Se observa que el ruido impulsivo tiene un efecto más extremo sobre un subconjunto del total de píxeles de la imagen. Un tanto por ciento de los píxeles de la imagen toman arbitrariamente el valor extremo 0 o 255.

La imagen original que utilice es la siguiente:


Aplicando Ruido

Aplicando a la imágen con el ruido generado aleatoriamente dentro de la imágen con una intensidad para el ruido sal y pimienta.

Al momento de eliminar el ruido en la imagén aún no lo hace por completo



 Código:

Aquí mi Repositorio
https://github.com/vane90/visioncomput/blob/master/v.py



lunes, 11 de febrero de 2013

Tarea1. Detección de Bordes

Para la tarea 1 se nos pido que realizaramos la detección de bordes en una imagen y binarizarla donde los pondría en color blanco y el resto de la imagen negro.

Para llegar esté objetivo se aplicaria primeramente un mascara de convolución, para la cual realice lo siguiente:

La imagen original es:
 

Obtener una imagen en escala de grises mostrada en lab

Después de esto aplicar un filtro a la imagen donde se verá que es mas borrosa y asi poder identificar los bordes.


Y finalmente para detectar bordes utilice como base la explicación en clase, aplicando el proceso de convolución, que se basa en una mascara que va reccoriendo cada pixel buscando variaciones y comparandose con los pixeles cercano.

La máscara aplicada la realice utilizando el operador Sobel. Estos operadores calculan las variaciones de intensidad de cada píxel en comparación con otros. 
Para aplicar éstos operadores es necesario multiplicar los valores de cada píxel por cada valor de las matrices pre-establecidas una para dirección en x(filas) y la segunda para dirección en y(columnas) y la magnitud de gradiente.


Código 



Aquí el resultado:



Aquí mi Repositorio