Solucion a problema de secuencias de ADN propuesto en http://www.programando.org
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
README.md
input.txt
input2.txt
input3.txt
seq.py

README.md

sequences

Solucion a problema de secuencias de ADN propuesto en http://www.programando.org/blog/2013/03/desafio-marzo-slash-abril-adn-forense/

Usese asi

python seq.py input.txt

El parsing del archivo y el esqueleto original fue tomado desde https://github.com/vramiro/secuencias

solve() construye una tabla de solución usando dynamic programming.

Se ordenan los datos para tomar partido de la repeticion de finales de secuencias que hace que la tabla no tenga que recalcular sus ultimas columnas.

Al ejecutarlo, se muestra una salida parecida a esto:

$ cat input.txt 
# Matriz
A:5,-1,-2,-1,-3
C:-1,5,-3,-2,-4
G:-2,-3,5,-2,-2
T:-1,-2,-2,5,-1
-:-3,-4,-2,-1,*
          # Evidencia
0:AGTGATG
          # ADN Sospechosos
1:AAATGC
2:AGGAA
3:AGTGATA
4:GATTACA

(Se muestra, para cada sospechoso, cual configuracion tiene el mayor puntaje, y se destacan los calces exactos)

$ python seq.py input.txt 
----------------------------------
Sospechoso 2  ADN: AGGAA
 Mejor calce con puntaje:  16
 AGTGATG
 AG-GA-A
 ^^ ^^  
----------------------------------
Sospechoso 4  ADN: GATTACA
 Mejor calce con puntaje:  5
 -AGTGATG
 GA-TTACA
  ^ ^ ^  
----------------------------------
Sospechoso 3  ADN: AGTGATA
 Mejor calce con puntaje:  28
 AGTGATG
 AGTGATA
 ^^^^^^ 
----------------------------------
Sospechoso 1  ADN: AAATGC
 Mejor calce con puntaje:  11
 AGTGATG-
 A--AATGC
 ^   ^^^
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  El culpable es el sospechoso numero 3 (AGTGATA) con valor 28

Evidencia  |AGTGATG|
ADN        |AGTGATA|
Calces      ^^^^^^

(Al final se muestra quien es el "culpable", aquel sospechoso que obtuvo mas puntaje)