21
Bioinformática práctica: procesamiento de cadenas y secuencias biológicas Eugenio Jacobo Hernández Valdelamar Fundación Arturo Rosenblueth. Insurgentes Sur 670-3. Colonia del Valle. CP 03100. México, D.F., México [email protected] [email protected] Resumen. En este artículo se aborda el tema del procesamiento de información biológica con técnicas para el procesamiento de cadenas de caracteres. El objetivo es tratar el tema desde una perspectiva de computación e informática para mostrar que hay cosas en el área que pueden aplicarse en proyectos interdisciplinarios. Palabras clave: biocomputación, bioinformática, procesamiento de cadenas de caracteres, procesamiento de información biológica. 1. Introducción Actualmente, aunque términos como bioinformática o biotecnología son muy sonados, pocas personas conocen su alcance. Más aún, la comunidad de tecnologías de la información (TI) aún no cuenta con información completa sobre todo lo que podría aplicar en el área de la biología. El objetivo de este articulo es introducir a la comunidad de TI al mundo de la bioinformática pero desde una perspectiva que le sea familiar, es decir, en lugar de iniciar hablando de genomas y ADN, el punto de inicio de este trabajo son los algoritmos y el procesamiento de datos e información.

Bioinformática práctica: PROCESAMIENTO DE CADENAS Y SECUENCIAS BIOLÓGICAS

Embed Size (px)

DESCRIPTION

Eugenio Jacobo Hernández Valdelamar. Congreso de sistemas e informática CONSI 2003. San Luis Potosí. Octubre, 2003.

Citation preview

Page 1: Bioinformática práctica: PROCESAMIENTO DE CADENAS Y SECUENCIAS BIOLÓGICAS

Bioinformática práctica: procesamiento de cadenas y secuencias biológicas

Eugenio Jacobo Hernández Valdelamar

Fundación Arturo Rosenblueth. Insurgentes Sur 670-3.

Colonia del Valle. CP 03100. México, D.F., México

[email protected]

[email protected]

Resumen. En este artículo se aborda el tema del procesamiento de información biológica con técnicas para el procesamiento de cadenas de caracteres. El objetivo es tratar el tema desde una perspectiva de computación e informática para mostrar que hay cosas en el área que pueden aplicarse en proyectos interdisciplinarios.

Palabras clave: biocomputación, bioinformática, procesamiento de cadenas de caracteres, procesamiento de información biológica.

1. Introducción

Actualmente, aunque términos como bioinformática o biotecnología son muy sonados, pocas personas conocen su alcance. Más aún, la comunidad de tecnologías de la información (TI) aún no cuenta con información completa sobre todo lo que podría aplicar en el área de la biología.

El objetivo de este articulo es introducir a la comunidad de TI al mundo de la bioinformática pero desde una perspectiva que le sea familiar, es decir, en lugar de iniciar hablando de genomas y ADN, el punto de inicio de este trabajo son los algoritmos y el procesamiento de datos e información.

Una de las tareas básicas de todo desarrollador de software es crear programas para procesar datos. No importa el tipo de aplicación, siempre habrá que hacer conversiones entre tipos de datos, procesar archivos de texto o binarios, o integrar, comparar o analizar cadenas de caracteres.

Esta última actividad tiene mucho que ver con la bioinformática, pues todos los datos que se obtienen de los laboratorios deben analizarse, no solo para encontrar algo específico, sino para encontrar relaciones de las que no se tiene conocimiento o referencia.

Page 2: Bioinformática práctica: PROCESAMIENTO DE CADENAS Y SECUENCIAS BIOLÓGICAS

Aquellos dedicados al desarrollo de software, por lo general lidian con datos que van desde el nombre de una persona, su dirección, fecha de nacimiento, etc. , hasta información más compleja que puede ser una expresión regular o datos codificados. En el caso de la bioinformática la información tiene que ver con la construcción y mantenimiento de un organismo (genotipo), con sus características físicas (fenotipo) o su comportamiento.

En ambos casos es un hecho el tener que enfrentar el procesamiento de grandes volúmenes de información. La diferencia se da en el tipo de procesamiento que hay que aplicarle a los datos o a la información.

2. Procesamiento de cadenas de caracteres

Las computadoras trabajan con datos digitales (0 y 1), que son la base del sistema de numeración binario. Las computadoras usan este sistema de numeración para denotar los datos en forma de bits. Una serie de 8 bits es un byte. La computadora puede representar los datos en forma numérica o en forma de caracteres alfanuméricos.

Cuando están en forma numérica, se refiere a los datos que son cifras y serán usados en operaciones aritméticas. Y si están en forma de caracteres, quiere decir que son letras, números o símbolos que no se usarán en dichas operaciones. Por lo general, los datos alfanuméricos o de caracteres se representan mediante el código ASCII (American Standard Code for Information Interchange).

Los caracteres son los bloques de construcción fundamentales para el intercambio de datos y procesamiento de los mismos. En el caso del procesamiento, los programas fuente se componen de una secuencia de caracteres que, agrupados de manera significativa, son interpretados por la computadora como una serie de instrucciones que sirven para llevar a cabo una tarea. En el caso de intercambio de datos, los caracteres pueden agruparse para representar identificadores, claves, valores o formar textos que el usuario requiera.

Una cadena de caracteres es una secuencia de cero o más caracteres representables por la computadora, que se almacenan en un área contigua de memoria. Una cadena puede incluir letras, dígitos y diversos caracteres especiales, como +, -, *, /, $ y otros.

El almacenamiento de los caracteres puede realizarse en la memoria principal o en dispositivos de almacenamiento secundario. En ambos casos es necesario el uso de estructuras de datos, que son un conjunto de variables de un determinado tipo agrupadas y organizadas de alguna manera para representar un comportamiento. Lo que se pretende con las estructuras de datos es facilitar un esquema lógico para manipular los datos en función del problema que haya que tratar y el algoritmo para resolverlo.

Según su comportamiento durante la ejecución del programa se distinguen estructuras de datos [7]:

- Estáticas: su tamaño en memoria es fijo. Ejemplo: arreglos.

Page 3: Bioinformática práctica: PROCESAMIENTO DE CADENAS Y SECUENCIAS BIOLÓGICAS

- Dinámicas: su tamaño en memoria es variable. Ejemplo: listas ligadas con apuntadores, archivos, etc.

En los lenguajes de programación las cadenas de caracteres se abstraen por lo general mediante arreglos, que son estructura de datos que constan de un número fijo de elementos del mismo tipo, en este caso caracteres.

Algunas operaciones típicas que se realizan para manipular las cadenas de caracteres son:

Determinar la longitud de una cadena (contar cuantos caracteres contiene)

Encontrar determinado carácter o secuencia de caracteres dentro de una cadena

Obtener una subcadena de la cadena original

Comparar 2 cadenas

Unir 2 o más cadenas

Convertir una cadena en otro tipo de dato específico

De este punto en adelante el procesamiento puede ser más sofisticado, por ejemplo:

Determinar si una cadena es palíndromo

Codificar los caracteres de la cadena en otro tipo de información

Procesar subcadenas separadas por delimitadores

Procesar un vector de caracteres como si fuese una matriz

Interpretar un comando contenido en la cadena

A continuación se explora más a fondo el proceso de comparación de cadenas de caracteres.

3. Comparación de cadenas de caracteres

La comparación entre cadenas consiste en aplicar operaciones de igualdad a cada uno de los elementos de cada una de las cadenas, y determinar si la correspondencia en uno a uno. Por lo general cuando se comparan cadenas de caracteres el resultado es binario; es o no es igual. Un caso un poco más sofisticado es la función strcmp() del lenguaje C que compara el primer argumento con el segundo, carácter por carácter. La función devuelve 0 si las cadenas son iguales, un valor negativo si la primera cadena es menor que la segunda y un valor positivo si la primera cadena es mayor que la segunda.

Sin embargo hay casos donde la similitud parcial puede arrojar resultados relevantes (p.ej. búsqueda en la Web, un corrector ortográfico, etc.). Si lo que se requiere es comparar la similitud entre cadenas, hay varias formas de abordar el problema:

Page 4: Bioinformática práctica: PROCESAMIENTO DE CADENAS Y SECUENCIAS BIOLÓGICAS

Fig. 1. Tipos de comparaciones parciales de cadenas de caracteres.

Comparación posicional. Dadas 2 cadenas C1 y C2, se alinean y se procede a comparar sus elementos (listado 1); aquellas ocurrencias de elementos que se encuentren en la misma posición se suman y después se calcula el promedio para obtener un porcentaje de similitud (fig. 1 caso 1). Este mismo proceso puede ser visualizado en una matriz y marcar en las celdas las ocurrencias positivas (fig. 1 caso 3).

public int comparacionPosicional (String sec1, String sec2) {

int sl=sec1.length(), hits=0;

Character a,b;

for (int i=0; i<sl; i++){

a=new Character(sec1.charAt(i)); b=new Character(sec2.charAt(i));

if (a.compareTo(b)==0)

hits++;

}

return hits;

}

Listado 1. Método en Java para comparar 2 cadenas por la posiciones de sus elementos.

Page 5: Bioinformática práctica: PROCESAMIENTO DE CADENAS Y SECUENCIAS BIOLÓGICAS

Comparación de elementos contenidos. Dadas 2 cadenas C1 y C2, se alinean y se procede a comparar sus elementos; en este caso lo que se quiere saber es cuantos elementos de C1 se encuentran en C2, sin importar su posición (listado 2). Se cuentan como similitudes las ocurrencias de los elementos de C1 en C2 sin contar las repeticiones (fig. 1 caso 2).

public int comparacionElementos (String sec1, String sec2) {

int sl=sec1.length(),hits=0;

Integer tmp;

boolean flag=false;

Character a,b; //elementos de las cadenas

Map mapc= new TreeMap(); //estructura sin repeticiones

for (int i=0;i<sl;i++)

mapc.put(new Character(sec1.charAt(i)),new Integer(0));

for (Iterator it=mapc.entrySet().iterator(); it.hasNext(); ) {

Map.Entry e = (Map.Entry) it.next();

for (int i=0;i<sl;i++){

if (e.getKey().equals(new Character(sec2.charAt(i)))){

tmp= (Integer) e.getValue();

int t= tmp.intValue();

e.setValue(new Integer(t++));

flag=true;

}

}

if (flag) {

hits++; flag=false;

}

}

return hits;

}

Listado 2. Método en Java para comparar 2 cadenas por los elementos que contienen.

Comparación por patrones. Dadas 2 cadenas C1 y C2, se alinean y se determina uno o varios subconjuntos de C1 y se procede a buscar sus ocurrencias en C2. Las similitudes pueden ser absolutas, si el subconjunto exacto de C1 esta en C2 o relativas si un subconjunto de C1 se encuentra parcialmente en C2 (fig. 1 caso 4).

Cabe mencionar que existen otros métodos de comparación se basan en métricas [4], como la distancia de Levenstein, la distancia de Needleman-Wunch o la distancia de Smith-Waterman.

Page 6: Bioinformática práctica: PROCESAMIENTO DE CADENAS Y SECUENCIAS BIOLÓGICAS

Hay que tomar en cuenta que los casos presentados tienen la peculiaridad de operar sobre cadenas del mismo tamaño, pero ¿qué pasa si sus longitudes son diferentes?

Fig. 2. Comparación posicional de 2 cadenas de diferente longitud.

En este caso (fig. 2) el grado de similitud varia si comparamos C1 vs. C2 o C2 vs. C1. Y esto no es todo, pues ¿qué pasa si se quieren comparar más de 2 cadenas?

Fig. 3. Comparación posicional de 3 cadenas.

Al aumentar el numero de conjuntos a comparar las similitudes varían, y pueden tenerse resultados por pares o un promedio global (fig. 3) . En el ejemplo solo 3 elementos de las 3 cadenas coinciden en la comparación posicional.

Page 7: Bioinformática práctica: PROCESAMIENTO DE CADENAS Y SECUENCIAS BIOLÓGICAS

Hasta el momento se ha asumido que los elementos de las cadenas están en un orden adecuado para las comparaciones, pero ¿qué pasa si los elementos de las cadenas no están en una posición adecuada para compararlos?

Fig. 4. Comparación posicional de 2 cadenas alineadas y no alineadas.

En un caso así puede que el resultado de la comparación no sea muy útil. Supóngase que la cadena C2 se rota hacia la derecha 3 posiciones (fig. 4). Lo que en un principio producía un grado de similitud de más del 70%, ahora sería igual a cero. Esto lo que implica es que deberán aplicarse transformaciones posicionales para alinear las cadenas para aumentar el grado de similitud de la comparación, ya sea rotando la cadena a la izquierda o a la derecha (fig. 5), o expandiéndola, es decir, agregando espacios de manera que los contenidos coincidan.

Fig. 5. Rotación para la comparación posicional de 2 cadenas no alineadas.

En el listado 3 se muestra la codificación de un método para rotar cadenas de caracteres, n posiciones hacia la izquierda o hacia la derecha. Este método en conjunto con el presentado en el listado 1 que realiza la

Page 8: Bioinformática práctica: PROCESAMIENTO DE CADENAS Y SECUENCIAS BIOLÓGICAS

comparación posicional de 2 cadenas pueden combinarse para buscar la mejor alineación de 2 cadenas tratando con todas las posibles combinaciones.

/** Rotar str, n posiciones hacia la derecha (0) o a la izq.(1) * */

public String rotar(String str, int n, int dir) {

int isl= str.length();

if (dir == 0)

return str.substring(isl-n,isl)+str.substring(0,isl-n);

else

return str.substring(n,isl)+str.substring(0,n);

}

/** encontrar la mejor similitud rotando una de las secuencias */

public int alineaRotacion(String s1, String s2) {

int isl= s1.length();

Comparacion comp=new Comparacion();

for (int i=0; i<isl; i++){

System.out.println(s1+"-"+s2+"->"+comp.comparacionPosicional(s1,s2));

s2=this.rotar(s2,1,0);

}

return 0;

}

...

alin.alineaRotacion("abcdecchi","cghiabcde");

...

// Salida del método de alineación por rotación

abcdecchi-cghiabcde->1

abcdecchi-ecghiabcd->0

abcdecchi-decghiabc->1

abcdecchi-cdecghiab->0

abcdecchi-bcdecghia->0

abcdecchi-abcdecghi->8

abcdecchi-iabcdecgh->1

abcdecchi-hiabcdecg->0

abcdecchi-ghiabcdec->1

Listado 3. Métodos en Java para rotar 2 cadenas y encontrar la mejor alineación por rotación.

Como puede apreciarse la comparación de similitud entre cadenas de caracteres es un problema interesante y complejo. La pregunta inmediata es ¿ y cómo se aplica esto en la bioinformática?

Page 9: Bioinformática práctica: PROCESAMIENTO DE CADENAS Y SECUENCIAS BIOLÓGICAS

4. Procesamiento de información biológica

Puesto que no hay una definición formal de lo que es la información biológica, se propone que puesto que la información es un conjunto de datos o hechos que sirven para solucionar un problema o responder una pregunta (datos + significado), por tanto:

o la información biológica es un conjunto de datos o hechos que sirven para solucionar problemas o responder preguntas en el área de la biología. Está información proviene de los seres vivos.

La información biológica puede ser de dos tipos [9]:

Fenotipo: es la información de las características físicas del organismo; cualquier cosa observable de la estructura, funcionamiento o comportamiento de un organismo vivo.

Genotipo: es la información necesaria para construir y mantener a los organismos vivos; se encuentra por lo general en las células y se pasa de una generación a otra. Estas instrucciones controlan los aspectos de la vida de una célula o un organismo.

La bioinformática se ocupa de la aplicación de la computación a la información biológica, tales como ADN o proteínas [10]. Los tipos de datos del genotipo incluyen secuencias de nucleótidos y aminoácidos, dominios de proteínas y estructura de proteínas.

Page 10: Bioinformática práctica: PROCESAMIENTO DE CADENAS Y SECUENCIAS BIOLÓGICAS

Fig. 6. Bioinformática: información biológica y procesamiento.

En este contexto (fig. 6) es donde el procesamiento de cadenas de caracteres cobra sentido, pues los laboratorios que generan las bases de datos con información de genomas o proteomas, dejan a disposición una gran cantidad de datos para procesar.

Fig. 7. Áreas de trabajo en Bioinformática.

Existe un área de trabajo en la bioinformática análisis e interpretación de secuencias biológicas dedicada al desarrollo e implementación de herramientas que permitan el acceso, uso y manejo de varios tipos de información. Esto implica el desarrollo de nuevos algoritmos con los cuales se pueda relacionar partes de un conjunto enorme de datos, como por ejemplo métodos para localizar un gen dentro de una secuencia, predecir estructura o función de proteínas y poder agrupar secuencias de proteínas en familias relacionadas.

En específico el análisis de secuencias biológicas consiste en comparar las secuencias y hacer alineamientos con las mismas.

En el caso de los sistemas de explotación, muchas tareas comunes en el trabajo con secuencias de ADN y proteínas, por ejemplo su lectura, alineamiento, manejo de bases de datos, etc., son realizadas por medio de programas comerciales, por ejemplo BLAST, FASTA, GCG; a fin de cuentas son soluciones para comparar cadenas de caracteres, realizar alineamientos y visualizar las similitudes entre secuencias biológicas.

5. Comparación de secuencias biológicas

Page 11: Bioinformática práctica: PROCESAMIENTO DE CADENAS Y SECUENCIAS BIOLÓGICAS

Una secuencia es una cadena lineal, finita y ordenada de símbolos pertenecientes a un alfabeto. El número de símbolos de la cadena representa su longitud.

Un alfabeto (A) es un conjunto de símbolos diferentes usados para representar las secuencias.

ADN A = { a,c,g,t|u }

Proteínas A = { a,c,d,e,f,g,h,i,k,l,m,n,p,q,r,s,t,v,w,y }

Existen diversos alfabetos (carácter químico, funcional, estructural, etc.) en función de lo que se desea expresar y mecanismos de traducción entre alfabetos.

El objetivo (inicial y algorítmico) de comparar dos secuencias es encontrar la posición relativa de ambas en las que se produzca mayor número de coincidencias entre sus componentes.

La comparación de secuencias consiste en buscar todas las zonas de similitud significativa entre dos o más secuencias para localizar características de interés comunes o diferenciales entre varias secuencias.

Comparar exhaustivamente dos secuencias implica comprobar cada posición de una de ellas contra cada posición de la otra. La información derivada puede relacionarse con las funciones, la estructura o evolución de células u organismos. Las relaciones entre secuencias pueden ser [1]:

Homologas: secuencias similares en 2 organismos diferentes derivadas de una secuencia ancestro común.

Ortólogas: secuencias similares en 2 organismos diferentes que aparecen a causa de un evento que marque la aparición de una nueva especie (mutación). La funcionalidad se conserva.

Parálogas: secuencias similares en un mismo organismo que aparecen a causa de un evento de duplicación de genes.

Xenólogas: secuencias similares que aparecen a causa de eventos de transferencia horizontal (simbiosis, virus, etc.)

Este proceso produce una matriz de comparación que puede ser inspeccionada para detectar regiones de similitud relevante. Hay dos métodos básicos para construir matrices de comparación:

Comparación con ventana/astringencia. El método de ventana/astringencia busca un número mínimo de coincidencias o una puntuación mínima (astringencia) en una región cualquiera de un tamaño mínimo dado (ventana) de las secuencias. Es más lento, pero no fracasa en similitudes amplias con diferencias difusas o en coincidencias exactas demasiado cortas (a no ser que se ponga la astringencia muy alta). Por tanto este método puede no detectar estructuras muy pequeñas como promotores. Pero si las regiones de similitud están débilmente relacionadas, el método de ventana/astringencia funcionará mejor que el de palabras.

Comparación de palabras. Cuando se usan palabras, la comparación considera bloques del tamaño indicado, es decir, el tamaño mínimo de una coincidencia es el de una palabra. Este método puede ir unas mil veces más deprisa que el de ventana/astringencia, pero tiene un costo en sensibilidad: si

Page 12: Bioinformática práctica: PROCESAMIENTO DE CADENAS Y SECUENCIAS BIOLÓGICAS

una región de similitud posee un parecido alto (p.ej. 75%) pero está mezclada muy uniformemente con diferencias (p.ej que uno de cada cuatro residuos falla), usando un tamaño de palabra inadecuado (p.ej. 4) puede perderse por completo.

Fig. 8. Comparación de secuencias por palabras.

Puesto que considerar todas las combinaciones posibles puede llevar potencialmente demasiado tiempo, es recomendable inicial las comparaciones usando el método de palabras, y luego, si resulta ser poco efectivo, pasar al de ventana/astringencia.

6. Alineamiento de secuencias biológicas

A menudo, la similitud entre secuencias es bastante sencilla, y una vez que se han identificado las zonas de similitud puede desearse mirarlas de cerca, lo que resulta más sencillo colocando las secuencias una al lado de la otra y alineando los residuos comunes. Es decir, una inspección detallada de la similitud de secuencias requiere alinear las regiones comunes de ambas secuencias.

Obviamente, esto tiene un costo: al alinear las secuencias colocándolas una junto a otra, solo se puede alinear un segmento de una secuencia con un segmento de la otra y deben mantenerse en el orden en que aparecen.

Alinear secuencias consiste en juiciosamente introducirles espacios para destacar su parecido. Si se alinean 2 secuencias se llama alineamiento apareado (pairwise). Si se alinean más de 2 se llama alineamiento múltiple. Para determinar el parecido pueden aplicarse los métodos basados en métricas [4].

Los alineamientos sirven para [5]:

Encontrar patrones de conservación.

Descubrir homólogos.

Construir taxonomías.

Inferir los eventos del proceso evolutivo.

Algunos métodos para alineamiento de 2 secuencias son [2][3]:

Visuales. Si el carácter de la columna y el renglón coinciden se llena la celda. Se considera a las diagonales como regiones de similaridad (fig. 9).

Page 13: Bioinformática práctica: PROCESAMIENTO DE CADENAS Y SECUENCIAS BIOLÓGICAS

o Gráficas de puntos (dot plots)

Fuerza bruta. Determinar todas las posibles subsecuencias para X y Y (similar a algunas técnicas de desencripción usadas por los hackers).

Programación dinámica. La idea de la programación dinámica es plantear la solución de un problema en términos de un caso más sencillo, y este en términos de otro más sencillo, y así sucesivamente (enfoque recursivo). En el caso de un alineamiento, problema para dos secuencias se puede plantear recursivamente en términos de subsecuencias de cada vez menor tamaño. El problema se resuelve en N x M cálculos. La programación dinámica evita evaluar todas las trayectorias. Se usa cuando hay muchas soluciones posibles, y se necesita encontrar una solución óptima.

o Alineamiento global (Needleman-Wunsch)

o Alineamiento local (Smith-Waterman)

o Matrices PAM o Dayhoff

o Matrices BLOSUM

Algoritmos heurísticos. Una heurística es un procedimiento que permite hallar una solución aproximada a un determinado problema, sin asegurar que el resultado es óptimo, pero ofreciendo a cambio mayor velocidad de cálculo (y en ocasiones, la única posibilidad de hallar una solución) [5].

o Basados en palabras (k tupla)

BLAST

El más sencillo es el método visual equivalente a la comparación posicional de cadenas en forma de matriz (fig. 1 caso 3).

Fig. 9. Ejemplo de una gráfica de puntos y regiones de similaridad.

Page 14: Bioinformática práctica: PROCESAMIENTO DE CADENAS Y SECUENCIAS BIOLÓGICAS

Alinear puede ser visto como un proceso de optimización, ya que se maximiza el parecido entre las secuencias. Por lo tanto el parecido debe que tener un valor cuantitativo, el cual está definido en el criterio de evaluación, el cual tiene al menos dos partes [5]:

cómo valorar una sustitución (idéntica o no),

y cómo evaluar un hueco (gap).

7. Conclusiones

El área de análisis e interpretación de secuencias biológicas está planteando el uso y desarrollo de métodos para la comparación y alineamiento de cadenas de caracteres. Aunque en su contexto las secuencias biológicas aportan información sobre las características de los seres vivos, plantean en el área de computación el desarrollo de algoritmos y herramientas que permitan a los biólogos manipular los datos de las bases de información biológica.

Algo que vale la pena comentar es la diferencia entre comparar y alinear en el contexto de la bioinformática. La comparación implica que las secuencias se encuentren en una posición dada, mientras que la alineación implica encontrar la posición optima para conseguir un mejor resultado en la comparación.

Para programar comparaciones o alineamientos es posible usar cualquier lenguaje de programación, y si tiene funciones/métodos de manipulación de cadenas de caracteres, mucho mejor. Estas aplicaciones pueden tender a un análisis manual de los resultados o a la automatización de dicho análisis.

Debe notarse que los problemas planteados por la bioinformática en relación al procesamiento de secuencias, son problemas que ya existían en el área de computación, simplemente el contexto de aplicación varía.

Sin embargo, el factor velocidad es importante a causa del volumen de datos. El crecimiento de los datos referidos a las secuencias biológicas es espectacular. Así, la primera proteína secuenciada (la insulina humana), requirió, con la tecnología disponible en los años 50 alrededor de 10 años, en los 60 este trabajo podría haber requerido 3 años, en los 70 sólo 1 año y en los 80 una semana [5]. Por ello, contar con computadoras potentes no es suficiente si no se cuenta con algoritmos eficientes.

Ciertamente los diseñadores y programadores no se volverán expertos en biología, pero con su trabajo contribuirán al desarrollo de la bioinformática, biología y medicina.

Page 15: Bioinformática práctica: PROCESAMIENTO DE CADENAS Y SECUENCIAS BIOLÓGICAS

Referencias

Page 16: Bioinformática práctica: PROCESAMIENTO DE CADENAS Y SECUENCIAS BIOLÓGICAS

[1] CECS 694-02 Introduction to bionformatics. Lecture notes. Eric C. Rouchka. University of Louisville. 2003. http://kbrin.kwing.louisville.edu/~rouchka/CECS694/

[2] Algorithms for Sequence Alignments. Lecture notes. .A. Brüngger, Labhead Bioinformatics Novartis Pharma AG. 2003. [email protected]

[3] Protein sequence alignments. University of Wyoming. MOLB5650. Spring 2002

[4] Record Linkage Tutorial: Distance Metrics for Text. William W. Cohen. CALD. 2003.

[5] Conceptos básicos de alineamiento de secuencias y de búsquedas por homología en las bases de secuencias. Alejandro Garciarrubio y Enrique Merino. 2003.

[6] Algorithms for pairwise alignment of biological sequences. Peter Sestoft. [email protected]. Department of Mathematics and Physics, KVL. 2000-04-05

[7] Estructuras de datos http://old.algoritmia.net/ed/

[8] Computational Molecular Biology: An Introduction. Peter Clote and Rolf Backofen, John Wiley & Sons, Inc. 1998.

http://www.cs.bc.edu/~clote/computationalBiologyTableOfContents.html

[9] Biological information. Professor John Blamire . 2000. http://www.brooklyn.cuny.edu/bc/ahp/BioInfo/

[10] Bioinformática: una nueva área de oportunidad. Eugenio Jacobo Hernández Valdelamar. CNCIIC ANIEI 2002.

[11] Sequence Analysis With Distributed Resources http://bibiserv.techfak.uni-bielefeld.de/sadr/index2.html