miércoles, 1 de diciembre de 2010

Manifiesto por una red neutral

Los ciudadanos y las empresas usuarias de Internet adheridas a este texto manifestamos:1. Que Internet es una Red Neutral por diseño, desde su creación hasta su actual implementación, en la que la información fluye de manera libre, sin discriminación alguna en función de origen, destino, protocolo o contenido.
2. Que las empresas, emprendedores y usuarios de Internet han podido crear servicios y productos en esa Red Neutral sin necesidad de autorizaciones ni acuerdos previos, dando lugar a una barrera de entrada prácticamente inexistente que ha permitido la explosión creativa, de innovación y de servicios que define el estado de la red actual.
3. Que todos los usuarios, emprendedores y empresas de Internet han podido definir y ofrecer sus servicios en condiciones de igualdad llevando el concepto de la libre competencia hasta extremos nunca antes conocidos.
4. Que Internet es el vehículo de libre expresión, libre información y desarrollo social más importante con el que cuentan ciudadanos y empresas. Su naturaleza no debe ser puesta en riesgo bajo ningún concepto.
5. Que para posibilitar esa Red Neutral las operadoras deben transportar paquetes de datos de manera neutral sin erigirse en “aduaneros” del tráfico y sin favorecer o perjudicar a unos contenidos por encima de otros.
6. Que la gestión del tráfico en situaciones puntuales y excepcionales de saturación de las redes debe acometerse de forma transparente, de acuerdo a criterios homogéneos de interés público y no discriminatorios ni comerciales.
7. Que dicha restricción excepcional del tráfico por parte de las operadoras no puede convertirse en una alternativa sostenida a la inversión en redes.
8. Que dicha Red Neutral se ve amenazada por operadoras interesadas en llegar a acuerdos comerciales por los que se privilegie o degrade el contenido según su relación comercial con la operadora.
9. Que algunos operadores del mercado quieren “redefinir” la Red Neutral para manejarla de acuerdo con sus intereses, y esa pretensión debe ser evitada; la definición de las reglas fundamentales del funcionamiento de Internet debe basarse en el interés de quienes la usan, no de quienes la proveen.
10. Que la respuesta ante esta amenaza para la red no puede ser la inacción: no hacer nada equivale a permitir que intereses privados puedan de facto llevar a cabo prácticas que afectan a las libertades fundamentales de los ciudadanos y la capacidad de las empresas para competir en igualdad de condiciones.
11. Que es preciso y urgente instar al Gobierno a proteger de manera clara e inequívoca la Red Neutral, con el fin de proteger el valor de Internet de cara al desarrollo de una economía más productiva, moderna, eficiente y libre de injerencias e intromisiones indebidas. Para ello es preciso que cualquier moción que se apruebe vincule de manera indisoluble la definición de Red Neutral en el contenido de la futura ley que se promueve, y no condicione su aplicación a cuestiones que poco tienen que ver con ésta.
La Red Neutral es un concepto claro y definido en el ámbito académico, donde no suscita debate: los ciudadanos y las empresas tienen derecho a que el tráfico de datos recibido o generado no sea manipulado, tergiversado, impedido, desviado, priorizado o retrasado en función del tipo de contenido, del protocolo o aplicación utilizado, del origen o destino de la comunicación ni de cualquier otra consideración ajena a la de su propia voluntad. Ese tráfico se tratará como una comunicación privada y exclusivamente bajo mandato judicial podrá ser espiado, trazado, archivado o analizado en su contenido, como correspondencia privada que es en realidad.
Europa, y España en particular, se encuentran en medio de una crisis económica tan importante que obligará al cambio radical de su modelo productivo, y a un mejor aprovechamiento de la creatividad de sus ciudadanos. La Red Neutral es crucial a la hora de preservar un ecosistema que favorezca la competencia e innovación para la creación de los innumerables productos y servicios que quedan por inventar y descubrir. La capacidad de trabajar en red, de manera colaborativa, y en mercados conectados, afectará a todos los sectores y todas las empresas de nuestro país, lo que convierte a Internet en un factor clave actual y futuro en nuestro desarrollo económico y social, determinando en gran medida el nivel de competitividad del país. De ahí nuestra profunda preocupación por la preservación de la Red Neutral. Por eso instamos con urgencia al Gobierno español a ser proactivo en el contexto europeo y a legislar de manera clara e inequívoca en ese sentido.
Si te sientes representado por este manifiesto te pedimos encarecidamente que lo copies y lo publiques en tu blog o que lo menciones en tu cuenta de Twitter o en Facebook usando el hashtag #redneutral. ¡Muchas gracias!

sábado, 29 de agosto de 2009

Algoritmos genéticos y simulación en genética de poblaciones. Dinámica de sistemas multiloci

En genética de poblaciones modelar la dinámica, esto es la evolución a lo largo del tiempo, de un cierto número de genes en presencia de selección, mutación y recombinación exige usar el método de simulación de Montecarlo. Nótese que si no hay recombinación los genes se comportan como uno sólo y estaríamos hablando de un modelo de un sólo gen (o locus si nos referimos al lugar que ocupa el gen en el genoma). Este es el único caso en que la dinámica del sistema, el conocimiento de puntos de equilibrio y su estabilidad, es perfectamente conocida.

Sin embargo, en cuanto consideramos más de un gen, incluso en el caso de sólo dos, la situación se complica. Se podría pensar que a estas alturas el caso de un mísero par de genes bialélicos debería estar perfectamente resuelto para cualquier modelo de eficacia biológica o fitness. Lo cierto es que a pesar de que sí ha sido muy estudiado, sobre todo para casos especiales de la función de “fitness” (véase una interesante revisión en [1]), dista de estar completamente resuelto incluso en el caso sin mutación pudiendo aparecer dinámicas de comportamiento bastante complejo [2]. Que no decir si hablamos de tres o más genes [3, 4]. En cuanto a la dinámica de estos sistemas multiloci podemos considerar la selección a nivel haploide (sobre los gametos) o diploide (sobre los zigotos) teniendo en cuenta que la correspondencia entre unos modelos y otros dependerá del esquema de fitness asumido [5]. En cualquier caso y debido a la dificultad para analizar estos modelos multigénicos o multiloci, surge el uso de la herramienta de simulación la cual permite estudiar la evolución de los susodichos sistemas bajo distintas condiciones de mutación, selección, recombinación, tamaño poblacional etc.

El algoritmo de simulación clásico, que implementa el modelo de reproducción de Wright-Fisher y sus diferentes variantes incluyendo selección, mutación y recombinación es similar a un algoritmo genético (AG) en su versión básica, el conocido SGA (Simple Genetic Algorithm), con la peculiaridad de que los genes no son resultado de una codificación para representar un problema dado sino que podríamos decir que se representan a sí mismos o más precisamente a un fenotipo P = f(G,E) donde G es el genoma o conjunto de genes y f es la función, incluyendo la identidad, que mapea el fenotipo a partir de un genotipo y ambiente E dados. La fitness será a su vez una función sobre P. Es decir, el modelo de simulación en genética de poblaciones es formalmente un SGA pero que evita el problema de la representación asociado al caso de codificación binaria porque no es necesario inventarse una codificación genética para los puntos del espacio de soluciones de un problema dado pues los individuos bajo estudio ya incorporan su propio código genético. A parte de esto, lo que diferencia a ambos enfoques es simplemente la finalidad con la que utilizamos el algoritmo. En el caso del SGA nosotros dirigimos el proceso evolutivo mediante la función de fitness de modo que esta es máxima en la dirección en que se resuelve nuestro problema ya sea este de maximización, minimización, estimación, control, etc. Esto es, ignoramos el valor exacto de la solución pero conocemos la dirección y el sentido del vector solución y definimos la función de fitness en consecuencia. Lo que esperamos del algoritmo es que el proceso evolutivo vía selección, mutación y recombinación baraje la combinación adecuada de genes que nos lleve al punto o región deseada. Esa combinación genética al decodificarla nos dará la solución que buscamos. En genética de poblaciones el tipo de problema es bien distinto puesto que de entrada no dirigimos el proceso evolutivo si no más bien deseamos comprender ese mismo proceso y las diferentes relaciones entre los parámetros implicados y de estos con la función de fitness, el ambiente e incluso determinados factores estocásticos generados por el tamaño poblacional finito. En este sentido los algoritmos genéticos (AGs) en general son interesantes porque se caracterizan por manejar tamaños de población muy pequeños y con un componente selectivo grande. Desde el punto de vista evolutivo este es un terreno adecuado para el efecto de Hill-Robertson [6, 7] el cual predice que tenderán a aparecer combinaciones genéticas intermedias es decir gametos con alelos favorables en unos loci y desfavorables en otros. El que, de un modo u otro, cierto tipo de combinaciones se vean favorecidas genera lo que se conoce como desequilibrio de ligamiento, en este caso negativo (al favorecerse combinaciones intermedias) lo que a su vez provoca que la recombinación tenga un efecto beneficioso sobre la fitness poblacional.

Dicho lo anterior, podemos esperar que en los algoritmos genéticos el efecto de la recombinación sea especialmente importante. En cuanto a la selección, el modelo clásico en el SGA es el de selección proporcional a la fitness que garantiza que, en promedio, los individuos serán seleccionados en proporción a su fitness de modo que cuanto mayor es esta mayor opción de reproducirse. El problema aquí es lo comentado sobre los tamaños poblacionales pequeños, debido a la elevada estocasticidad (deriva genética en la terminología de la genética de poblaciones) que ello genera, se pierde la garantía de que las mejores combinaciones sean seleccionadas. Por ello se utilizan a menudo AGs con otros esquemas de selección alejados del modelo biológico como la selección elitista (nos quedamos con los mejores) o por torneo (combina elitista y proporcional). El problema de estos modelos es la pérdida de variabilidad que subyace en sus estrategias; obviamente si encontrar la solución fuera tan simple como ir siguiendo las variantes óptimas de cada generación apenas necesitaríamos usar la estrategia evolutiva. En realidad la clave en el uso de la estrategia de selección proporcional a la fitness sería una adecuada combinación de los parámetros de intensidad de selección, tamaño poblacional, mutación y recombinación. Justamente, comprender la relación entre estos parámetros es el objetivo de la genética de poblaciones teórica. En el caso específico de los AGs y dado su bajo tamaño poblacional, el estudio de las condiciones del efecto de H-R y la recombinación deberían ser los aspectos principales a tener en cuenta. En este sentido, aunque desde una perspectiva puramente heurística, se han desarrollado algoritmos meta-genéticos que autoajustan los propios parámetros de búsqueda (mutación y recombinación), así como metapoblaciones de AGs realizando búsquedas independientes que se comunican vía migración esporádica de soluciones de una población a otra.

Otro aspecto que se plantea desde el punto de vista de la teoría de control y optimización, donde los AGs inicialmente surgen [8], es porqué y cómo funcionan los algoritmos genéticos. El porqué es, al menos desde el punto de vista de la genética de poblaciones, obvio. Funcionan porque las combinaciones peores se reproducen menos y las mejores más por tanto, dadas unas fuentes de variabilidad primaria, la mutación y secundaria, la recombinación, con el paso del tiempo obtenemos un conjunto de soluciones óptimas o cuasi-óptimas. Respecto al cómo, se han hecho incursiones teóricas en la dinámica de los algoritmos usando herramientas de matemática avanzada como la mecánica estadística de la física cuántica [9, 10] sin embargo, tal y como hemos comentado al principio, si ya la dinámica de unos pocos genes es compleja, difícil es obtener soluciones explícitas para el caso de muchos genes. Con todo, es interesante percatarse de que mientras la genética de poblaciones se ha centrado siempre en descripciones de la evolución de la frecuencia de las distintas combinaciones genéticas y la conexión de estas con los parámetros del modelo y con los correspondientes valores de fitness, en el ámbito de los AGs el enfoque ha sido, quizás no sorprendentemente, mucho más mecanicista. Es decir, la explicación del camino a la solución o a la fitness final se da en términos de la construcción de los bloques genéticos adecuados y no del contexto que lleva a ello. Una de las hipótesis más significativas, aunque todavía sometida a debate, sobre el funcionamiento de los AGs es el teorema de los esquemas que viene a decir que la solución se obtiene construyendo con pequeños bloques o esquemas formados por grupos de unos pocos buenos genes no muy distantes unos de otros. Lo de pocos sería para que la probabilidad de que la mutación altere los genes buenos sea baja y lo de próximos para que la recombinación no rompa esas combinaciones.

La diferencia entre ambos planteamientos, genética de poblaciones versus AGs, es fiel reflejo de las distintas finalidades en ambos campos, como ya se dijo, una se centra en el propio proceso evolutivo, el otro quiere llegar a un objetivo sin que importe el contexto en que ello ocurre. Sin embargo, la cuestión sobre cómo trabajan los AGs para encontrar la solución a un problema, es la misma que se mencionó al comienzo, esto es, conocer las pautas de comportamiento a lo largo del tiempo de un conjunto de genes, dados unos valores de mutación, recombinación y selección con la dificultad añadida de que el tamaño poblacional es apreciablemente finito lo que incorpora una importante componente estocástica al problema.

Es pues este un ejemplo de cómo un modelo que es sencillo de simular se muestra tremendamente complejo a la hora de analizar su dinámica. Lo interesante es percibir cómo dos ámbitos absolutamente separados, a saber, la genética de poblaciones en biología y las áreas relacionadas con problemas de optimización, automatización, y control en ingeniería han tratado de teorizar sobre esta dinámica realizando, curiosamente, muy poco trabajo interdisciplinar. En mi opinión, todos tienen que ganar aquí, los teóricos de los AGs con el enfoque de la genética de poblaciones, pues el contexto se mostrará clave en cuanto a la resolución eficiente de problemas difíciles. Así mismo, los biólogos tienen en el campo de los algoritmos genéticos, por un lado una aplicación muy interesante de los modelos evolutivos y por otro la posibilidad de combinar sus conocimientos del contexto, las interacciones entre selección, deriva, mutación, recombinación etc con el nuevo enfoque donde se trata de ver el modo en que los diferentes bloques genotípicos son parcialmente construidos mediante esquemas.

Bibliografía

1. Li CC: Genetic equilibrium under selection. Biometrics 1967, 23(3):397-484.
2. Bürger R: The Mathematical theory of selection, recombination, and mutation. Chichester: John Wiley; 2000.
3. Robinson WP, Asmussen MA, Thomson G: Three-locus systems impose additional constraints on pairwise disequilibria. Genetics 1991, 129(3):925-930.
4. Baake M, Baake E: Erratum to: An exactly solved model for mutation, recombination and selection. Canadian Journal of Mathematics 2008, 60(2):264-265.
5. Kirzhner V, Lyubich Y: Multilocus dynamics under haploid selection. J Math Biol 1997, 35(4):391-408.
6. Hill WG, Robertson A: The effect of linkage on limits to artificial selection. Genet Res 1966, 8(3):269-294.
7. Zeng Z-B: The Hill-Robertson effect is a consequence of interplay between linkage, selection and drift: a commentary on The effect of linkage on limits to artificial selection by W. G. Hill and A. Robertson. Genet Res 2008, 89(Special Issue 5-6):309-310.
8. Goldberg DE: Genetic algorithms in search, optimization, and machine learning. Reading, Mass.: Addison-Wesley; 1989.
9. Prugel-Bennett A, Shapiro J: The dynamics of a genetic algorithm for simple random Ising systems. Phys D 1997, 104(1):75-114.
10. Shapiro J, Prugel Bennett A, Rattray M: A Statistical Mechanical Formulation of the Dynamics of Genetic Algorithms. In: Selected Papers from AISB Workshop on Evolutionary Computing. Springer-Verlag; 1994.

lunes, 22 de diciembre de 2008

Simulación de modelos evolutivos mediante Procesos de Markov: El problema de los modelos no-reversibles

(Tras leer el artículo: Pathological rate matrices: from primates to pathogens Schranz y col. BMC Bioinformatics 2008)

En genética evolutiva, procesos como la divergencia genética a lo largo del tiempo se modelan mediante procesos de Markov que son un tipo de procesos estocásticos que no tiene memoria, es decir el estado presente sólo depende del inmediato anterior, por ejemplo, la probabilidad de mutación de un nucleótido A que cambia a otro T no se ve afectada por la historia previa que llevó hasta A. En estos modelos las tasas de cambio entre diferentes estados discretos de la secuencia de ADN se describen mediante matrices de transición. Cuando los procesos de Markov son continuos en el tiempo, la matriz Q representa la tasa de cambio instantánea y las probabilidades de transición entre estados vienen dadas por la relación P = exp (Qt), donde t es el tiempo que, a menudo, corresponde a la longitud de las ramas de un árbol o al número de substituciones nucleotídicas a lo largo de esa misma rama. Habitualmente las matrices Q utilizadas representan procesos reversibles en el tiempo. Sin embargo esto no siempre se ajusta a la realidad biológica y se ha comprobado de hecho que, en ciertos casos, el uso de matrices no reversibles permite obtener mejores estimas de los parámetros bajo estudio.

El método más simple para calcular un exponente matricial (calcular P) es usar la expansión mediante la serie de Taylor. El problema surge aquí con la convergencia de la serie que depende de ciertas propiedades de la matriz Q que de no cumplirse implican que la ocurrencia de convergencia necesita de muchos más términos en la serie, incrementándose de este modo el error asociado a la aproximación, es decir la matriz P obtenida no es la que debiera. El problema es que las matrices Q más reales desde un punto de vista biológico parecen ser aquellas con las que la expansión por Taylor funciona peor.

Hay otros muchos algoritmos para calcular el exponente matriz, curiosamente el considerado más robusto, el método de Padé, es muy poco usado en el campo de la evolución molecular siendo el más usado un método poco robusto como es la descomposición por valores propios (eigenvalues). El motivo es que para modelos filogenéticos que asumen una misma matriz Q por árbol la descomposición se realiza sólo una vez para la evaluación de cada modelo y por tanto computacionalmente se generan algoritmos más eficientes. Además, este método funciona bien cuando las matrices son reversibles (lo cual garantiza la diagonalización de la matriz con sus valores propios) pero falla cuando las matrices no reversibles no cumplen una serie de características. Un trabajo recién publicado de Schranz y col. BMC Bioinformatics 2008, 9:550, analiza si las matrices obtenidas a partir de datos reales, desde microorganismos hasta primates, son "patológicas", es decir, generan malas estimas de P, para estos algoritmos. En general las matrices de nucleótidos se estimaron bien con los 3 algoritmos. Sin embargo hasta el 30% de las matrices de codones (tripletes) fueron “patológicas” para el método basado en descomposición por valores propios. En general, tanto el método de expansión por Taylor como el de valores propios mostraron ser inadecuados para evaluar modelos de evolución no-reversibles o en general cuando se usan datos donde falta más de uno de los estados posibles (por ejemplo matrices 64x64 con datos donde no hay codones de parada). Los autores concluyen que el algoritmo de Padé parece ser el más adecuado para los modelos evolutivos no reversibles y/o hay datos incompletos (en el sentido ya mencionado).

Alguien se estará preguntando que tiene todo esto que ver con la simulación de procesos evolutivos. Pues de hecho mucho, porque todas las simulaciones que usan el llamado modelo coalescente es decir simulaciones del proceso evolutivo hacia atrás (del presente al pasado) hasta alcanzar el llamado ancestro común más reciente, asumen un proceso de Markov como los arriba mencionados y calculan las probabilidades de transición entre estados mediante la ecuación P = exp(Qt). De hecho la mayoría (si no todos) los simuladores coalescentes resuelven la ecuación mediante el método de los valores propios siendo P = Uexp(λt)U-1, donde λ representa la matriz diagonal de valores propios de Q y U es el vector propio. Lo cual como han mostrado Schranz y colegas está muy bien si las matrices son reversibles pero no tanto si no lo son. La siguiente pregunta sería, ¿existen simuladores, o ya puestos, programas de estimación, que usan modelos no reversibles?. Si la respuesta es afirmativa sería interesante saber si estos programas obtienen P mediante la expansión de valores propios o no. Caso de que la respuesta volviera a ser afirmativa sería recomendable comparar siempre la salida de estos programas con otros que usen otro método para resolver P. Podríamos dar un paso más y hacer lo que se llama un meta-análisis para ver cuantos trabajos han usado un método u otro y si los resultados son consistentes.


Para saber más:

Schranz et al.. Pathological rate matrices: from primates to pathogens BMC Bioinformatics 2008, 9:550

Moler, C., Van Loan, C.: Nineteen Dubious Ways to Compute the Exponential of a Matrix, Twenty Five Years Later. SIAM Review 2003, 45: 3-49

viernes, 19 de diciembre de 2008

Otra de Algoritmos Genéticos

En directo: La evolución del todo terreno usando circulos y polígonos. Habría que añadir algunos elementos para obtener modelos más actuales pero no está mal para lo sencillo que es.

miércoles, 17 de diciembre de 2008

Biología y computación: Ejemplos

Ejemplo 1: Algoritmos genéticos

En el blog YOKOFAKUN de Pierre Lindenbaum aparece un ejemplo bastante interesante de cómo usar un algoritmo genético para reproducir imágenes usando triángulos: El ejemplo es con la imagen de Darwin. La idea original proviene del blog de Roger Alsin donde usa la programación genética para reproducir la Mona Lisa a partir de polígonos. Ambos resultados me parecen bastante impresionantes. La mayor dificultad técnica, al menos para los que nunca hemos programado con imágenes, estará en el método para capturar la información de la imagen original y comparar con la imagen que evoluciona. Le he echado un vistazo breve al código que es Java y en cada iteración (generación de evolución) efectivamente compara el área de solapamiento de los triángulos con la imagen original y asigna el valor de fitness en consecuencia. Ya les han hecho algún comentario en este sentido pero sería un interesante método de compactación de imágenes si la ratio entre la imagen original sin formar y la final es buena. Sólo faltaría obtener algoritmos que evolucionasen muy rápido y el "pequeño detalle" de poder acceder a la imagen final claro. Es lo "malo" de los algoritmos genéticos que hay que indicarles hacia donde deben evolucionar. O, dicho de manera más precisa y correcta, hay que generar el ambiente adecuado para que el resultado de la adaptación al mismo sea la solución que nosotros buscamos ;-)

Ejemplo 2: Vida Artificial

Una simulación de vida artificial mostrando la evolución




Ejemplo 3: Influencia de la biología en la informática futura


Curiosamente no sólo la biología se está beneficiando de la informática. Aquí os dejo una presentación de slideshare sobre la influencia que la biología ya está teniendo en ciencias de la computación:

lunes, 15 de diciembre de 2008

Proyecto BiosDev

Bienvenido al proyecto biodesarrolladores.
El ámbito del proyecto se centra en todo lo relacionado con la programación y desarrollo de modelos de utilidad en investigación y/o docencia en biología. El enfoque es la interdisciplinariedad entre biología, matemática, estadística e informática. El blog está especialmente orientado a la simulación de modelos evolutivos de genética de poblaciones y/o ecología. Incluso dentro de este ámbito las posibilidades son inmensas. En mi caso particular trataré de hablar del tipo de modelos de los que sé un poco por haber trabajo en ellos. Modelos orientados a la ecología evolutiva como por ejemplo estudios de genética de la conservación y procesos de especiación. Otros modelos orientados a la evolución de virus como el VIH para estudiar la relación entre factores poblacionales como tamaño de población vírica y/o recombinación genética y aparición de resistencia a medicamentos. También trataré de abordar el interesante campo de los algoritmos genéticos en su doble vertiente, como aplicación inmediata, en el mundo actual, de las ideas del modelo neodarwinista y como herramienta de estudio del mismo (por ejemplo, su uso en estimación de parámetros de modelos englobados en la susodicha teoría).