21 de noviembre de 2012

Comprimiendo BLAST

Hola,
ya hemos hablado antes en este blog de las crecientes aplicaciones de los algoritmos de compresión en la bioinformática. Hoy precisamente quería enlazar a dos artículos recientes que los explotan para acelerar algo que a priori parece imposible, la herramienta más universal de la biología computacional, BLAST.

En un paper en Nature Biotech, Loh, Maym y Berger nos presentan el prototipo Compression-accelerated BLAST (fuente C++ aquí), que en pruebas empíricas acelera varios órdenes de magnitud las búsquedas de BLAST simplemente haciendo las operaciones en un espacio comprimido. Como ventaja añadida se generan archivos de resultados de tamaños significativamente menores. Obviamente pagamos una pequeña pérdida de sensibilidad, pero puede ser perfectamente asumible para tareas de mapeo de lecturas (reads) de secuenciación de última generación:

Original de http://www.nature.com/nbt/journal/v30/n7/full/nbt.2241.html.

En otro paper recientemente publicado en Bioinformatics, Koskinen y Holm, aplican el marco de los vectores de sufijos (ya discutidos aquí) a la búsqueda de proteínas homólogas con una identidad superior al 50%, acelerando de nuevo varias órdenes de magnitud por encima de BLAST.

Familias de algoritmos para la búsqueda inexacta de secuencias, según Koskinen y Hol (http://bioinformatics.oxfordjournals.org/content/28/18/i438.full).
El programa que implementa estas ideas se llama SANS, escrito en FORTRAN 90, está disponible en este enlace,
un saludo,
Bruno

31 de octubre de 2012

Tutorial de modelado comparativo

Hola,
en colaboración con mis colegas Daniela Medeot, Romina Rivero y Edgardo Jofré de la Universidad Nacional de Río Cuarto (Argentina) hemos organizado recientemente un curso de posgrado titulado "Herramientas de bioinformática aplicadas al análisis de ácidos nucleicos y proteínas", al que asistieron cerca de 20 alumnos.

Además de hacer una introducción práctica al uso de Perl en diferentes tareas cotidianas de la bioinformática, mi participación se centró en un taller práctico para el que preparé el tutorial "Modelado comparativo de proteínas"  que espero pueda servir de ayuda a personas interesadas en aprender a modelar proteínas. El material puede utilzarse desde el navegador web o descargarse como un documento PDF,
un saludo, Bruno

18 de septiembre de 2012

TFcompare - a tool for structural alignment of DNA binding protein complexes

I want to introduce you the new bioinformatic contribution of our lab to the science world: TFcompare (http://floresta.eead.csic.es/tfcompare/)

TFcompare is a tool for structural alignment of DNA motifs and protein domains from DNA binding protein complexes in Protein Data Bank

The TFcompare algorithm calculates structural alignments between three dimensional structures of two DNA-protein complexes. The most interesting feature of TFcompare when compared with other methods is that it extracts individual protein domains and their recognized DNA sequences, aligning them separately and returning not only the structure superposition but the DNA sequence superposition too. In this way we can compare single domain affinity for different DNA sequences in DNA-protein complexes, especially transcription factors and their recognized cis elements.

The working schema of TFcompare is the following:




TFcompare takes as input two PDB identifiers. Structures from PDB are retrieved automatically and Pfam domains contacting DNA are calculated and trimmed from the original structure. Then all the domains from the first structure are aligned to all the domains from the second in several steps:
  1. The program MAMMOTH performs the structural alignment.
  2. The produced transformation matrices are applied to the coordinates of the DNA binding sites in order to derive the equivalent cis element superpositions.
  3. Root-mean-squared deviations of superposed coordinates are calculated with beta-carbon atoms (proteins) and with N9 (purines) and N1 (pyrimidines) atoms (DNA).
  4. Structural alignments are scored in terms of i) the number of identical superposed nucleotides (DNA Score 1-0) and ii) the sum of N9 and N1 atom pairs within 3.5 Å (DNA Score).
We can take as example the alignment of 1D5Y and 1BL0 structures, both are bacterial proteins with Helix-turn-helix (HTH) protein domains binding DNA.
We obtain the following results:

Results are ordered by structural similarity (RMSD), from both protein domain and DNA. In green colour are showed the alignment of similar structures (protein RMSD <=5.0 Å and DNA RMSD <= 3.5 Å) and in red colour dissimilar ones. 1D5Y contains two protein chains with HTH domains contacting DNA (trimmed domain structures are 1d5y_A1 and 1d5y_C1). 1BL0 have two HTH domains in its unique chain A (1bl0_A1 and 1bl0_A2). Structural alignment results show how 1bl0_A1 superposes very well with 1d5y_A1 and 1d5y_C1 (green colour). When DNA sequences recognized by these domains are aligned, they show a DNA motif conserved with three common nucleotides ‘CAC’. However, 1bl0_A2 superpositions (red colour) are not as good as previous ones, and DNA motif ‘CAC’ is not preserved when checking the resulting DNA alignment.

Each row contains an alignment of a pair of DNA binding domains, showing a picture of their structures before and after superposition. DNA alignment is also shown.

PDB files with aligned structures can be downloaded by left-clicking on the domain names and DNA sequences. Opening them with PDB viewer software (Pymol for ex.) is possible to visualize the resulting superposition after structural alignment.

Results column headers and their meaning:
Pair: Pair number
Domain_Query: PDB name, chain and domain number of the Query
Domain_Sbjct: PDB name, chain and domain number of the Sbjct
DNA_Query: DNA site recognized by the Query domain
DNA_Sbjct: DNA site recognized by the Query domain
Similar: 1 if both protein domains and DNA sites are below RMSD thresholds, 5.0 A and 3.5 A
respectively
DNA_Alignment: DNA sites structurally aligned
DNA_Aligned: Number of aligned nucleotides
DNA_Score_1-0: Number of identical nucleotides
DNA_Score: Structural alignment score
DNA_RMSD: RMSD of the structurally aligned DNA sites
PROT_RMSD: RMSD of the structurally aligned protein domains
3D_Alignment: 3D Visualization of aligned structures

9 de septiembre de 2012

Un SSD con Kubuntu 12 para gobernarlos a todos

ACTUALIZACIÓN: en la actualidad tengo instalado Kubuntu 12 de 64 bits en un disco de 256GB Samsung.

Hace ya unos meses cuando se liberó la versión beta de Ubuntu Pagolin 12.04 LTS me planteé instalarla en mi ordenador de trabajo. La principal novedad de Ubuntu 12.04 es que es una versión estable que será soportada durante 5 años. Uno de los inconvenientes que a mi parecer tiene Ubuntu es su falta de estabilidad en la migración de una versión a otra (yo siempre hago copia de seguridad antes). Siempre tengo problemas al actualizar una determinada versión y me tengo que quedar con la antigua si no quiero reconfigurar todo el ordenador de cero, cosa que con mi Windows XP nunca me ha pasado. Así que con Ubuntu 12.04 puedo estar tranquilo al menos 5 años :)



A su vez, me planteé la posibilidad del teletrabajo, aunque más que teletrabajo suele ser llevarse trabajo extra a casa. Y debido a las restricciones de acceso que tengo a mi ordenador de trabajo desde el exterior de mi centro y a la necesidad de portabilidad cuando viajo al extranjero, me surgió una vieja idea que tenía en mi cabeza... llevar mi ordenador en un pendrive. Haciendo cuentas de espacio, necesitaba un mínimo de 50GB para montar un sistema linux con todos los programas y bases de datos que suelo utilizar.
Los actuales pendrives a precios razonables no llegan a dicha capacidad, además son muy lentos comparados con los discos duros tradicionales y los modernos SSDs. Encontré por casa un disco duro viejo de portátil que tenía en una carcasa externa para hacer copias de seguridad y decidí instalar la versión de 64 bits de Kubuntu 12.04 para probar como funcionaba en un disco externo conectado por USB.

Disco duro IDE de portátil (2,5' 100GB) con carcasa USB.

Primero copié la imagen ISO de Kubuntu en un pendrive (así se evita desperdiciar 1 CD) con el programa LinuxLive USB. Entonces instalé Kubuntu tal y como se explica en los numerosos tutoriales que hay en internet, teniendo cuidado de elegir el disco correcto (en mi caso '/dev/sdc') y particionando el disco en una partición root ('/') de 20GB y una para el home ('/home') de 80GB. El espacio Swap no lo asigné a una partición sino a un archivo tras finalizar la instalación, ver más abajo.

Particionado de mi disco duro externo.
Al probar la instalación de Kubuntu en el disco externo USB quedé sorprendido que funcionaba con la misma fluided que mi anterior instalación en un disco fijo SATA. Para tareas ordinarias parece que la velocidad USB es suficientemente alta como para no notarlo en el rendimiento. Ahora llegaba la prueba de fuego... conectar el disco en otro ordenador por USB y ver si también funcionaba. La instalación de Kubuntu no arrancaba en mi portátil (un poco antiguo por cierto), la explicación es que mi portátil no soporta sistemas operativos de 64 bits.
NOTA: aunque sigo siendo partidario de los 32 bits, recomiendo instalar 64 bits a todo el que trabaje en NGS, si no programas como Bowtie o Trinity nunca funcionarán.

Volví a instalar Kubuntu, pero esta vez la versión de 32 bits en el disco y ahora sí que funcionaba, tanto en mi ordenador de sobremesa de 64 bits, en mi portátil de 32 e incluso en mi netbook Acer Aspire One, reconociendo tanto tarjetas de video, sonido y wifi en todos ellos. Con la sorpresa que en el netbook aparecía un escritorio diferente, el KDE Netbook Plasma. Dicho escritorio es algo raro al principio, pero según te acostumbras resulta más cómodo para trabajar con pantallas pequeñas. Haciendo una prueba sencilla de rendimiento, con la versión de 32 bits perdía un 10% de velocidad al ejecutar scripts de perl, una pérdida que no me importaba debido a su gran compatibilidad. Seguramente en programas optimizados de compresión de vídeo o retoque fotográfico el rendimiento será peor, pero en mi caso los programas científicos que requieren alto rendimiento están en servidores externos, y en mi ordenador simplemente pruebo scripts o tareas que más tarde puedo mandar a los servidores.

Aspecto del KDE Netbook Plasma.


Ahora tenía lo que quería... UN DISCO CON LINUX QUE PUEDO CONECTAR A CUALQUIER ORDENADOR Y TRABAJAR CON ÉL.

Tras probar "mi nuevo ordenador" durante varios meses en el trabajo, en casa, viajando... he tenido tan buenas experiencias que he decidido "ampliarlo". La ampliación ha consistido en migrar el sistema a un disco externo SSD. En teoría la mejora en rendimiento de un disco duro clásico a uno SSD es sustancial. El disco elegido ha sido un Samsung 830 de 128GB, tuve dudas entre éste y un Crucial M4, pero me decanté por el Samsung debido a la mínima diferencia de precio y la fiabilidad de la marca

Disco SSD y carcasa externa.
El primer paso de la migración fue usar un pendrive con Clonezilla (también creado con LinuxLive USB). Tras arrancar el ordenador con el pendrive y los 2 discos externos USB conectados, seleccionando la opción 'device-device' pude clonar mi antiguo disco externo en el nuevo SSD. Sin embargo, debido a las diferencias entre los discos, el nuevo disco no arrancaba. Para arreglarlo, retomé mi pendrive de Kubuntu y lo reinstalé en mi partición root ('/') copiada en el disco SSD. El instalador de Kubuntu es bastante inteligente y restaura el registro de arranque (MBR) y alguna cosa más sin alterar la partición root y los programas que ya teníamos instalados.

Pantalla ejemplo de Clonezilla.
Ya sólo quedaba comprobar que funcionaba en mis varios ordenadores...
(sólo se resiste a reconocerlo una placa base Gygabyte GA-965P-DS4 rev. 1.0)


Respecto a la mejora en el rendimiento, hasta el momento sólo puedo decir que el tiempo de arranque es menor y que LibreOffice se inicia en la mitad de tiempo usando el disco SSD.

Disco en la carcasa comparado en tamaño con un bolígrafo.
Y aún se puede optimizar más el discoy alargar su vida útil, básicamente minimizando las operaciones de lectura/escritura en disco, para ello podemos hacer las siguientes modificaciones en nuestro linux:
  • Añadir a '/etc/fstab' las opciones noatime,nodiratime y discard en todos los puntos de montaje del disco.
  • Crear y montar el archivo swap indicando que sólo se use cuando sea estrictamente necesario:
  1. Crear el archivo:
    • sudo dd if=/dev/zero of=/media/swapfile bs=1M count=4000 
  2. Activar el archivo swap:
    • sudo mkswap /media/swapfile
    • sudo swapon /media/swapfile
  3. Añadir en '/etc/fstab' la siguiente línea para que se active al arrancar:
    • /media/swapfile swap    swap    defaults        0       0  
  4. Añadir la siguiente línea en '/etc/sysctl.conf' para dar preferencia de uso a la memoria RAM:
    •  vm.swappiness = 0
  5.  Comprobar el funcionamiento:
    •  cat /proc/swaps
  • Montar en RAM el cache del sistema, para ello añadir a '/etc/fstab' la línea:
    • tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
Más detalles sobre la optimización en:
http://askubuntu.com/questions/1400/how-do-i-optimize-the-os-for-ssds
http://www.howtogeek.com/62761/how-to-tweak-your-ssd-in-ubuntu-for-better-performance

Al instalar Kubuntu 12.04 de 64 bits el ordenador se volvió anormalmente lento y no funcionaba mi conexión a monitor externo, lo cual se solucionó actualizando los drivers de NVIDIA:
http://askubuntu.com/questions/133181/ubuntu-12-04-x64-very-slow-response-and-sluggishness

30 de agosto de 2012

Cuando no queda nada para secuenciar...

Normalmente pensamos que una DNA polimerasa puede amplificar cualquier resto de materia orgánica, sin embargo sucesos tan desafortunados como el error en la investigación policial de 2 niños "supuestamente" asesinados que ha conmocionado a la sociedad española en los últimos días hacen replantearnos los límites de la ciencia.

Cualquier juez, abogado o persona de a pie pensaría que la prueba de ADN es infalible para identificar restos humanos. Sin embargo la ciencia tiene límites, y en casos extremos como el mencionado, hay que recurrir a técnicas clásicas de reconocimiento forense de restos humanos, por ejemplo la observación al microscopio.

Leyendo la literatura científica podemos encontrar un interesantes artículo científico del laboratorio de la Dra. Nicole von Wurmb-Schwark
titulado "Reliable genetic identification of burnt human remains".  En el mismo se estudia la posibilidad de éxito en la identificación genética de cadáveres mediante restos de ADN en huesos quemados o calcinados.

Se estudian 71 fragmentos de huesos de 13 cadáveres. Los fragmentos se dividen en 5 categorías, según su grado de combustión (de menor a mayor):
  • A: Bien conservado
  • B: Semi-qiemado (200–300 °C)
  • C: Quemado negro (300–350 °C)
  • D: Quemado azul-gris (550–600 °C)
  • E: Quemado azul-gris-blanco (>650 °C)

La conclusión obtenida es que el análisis genético de los restos de ADN en los huesos quemados es muy complicada por tres motivos:
  1. La excasez y degradación del ADN en las muestras.
  2. La posible contaminación por ADN foráneo.
  3. La existencia de inhibidores de la polimerasa: colágeno, gasolinas, plásticos, componentes textiles...
Finalmente se concluyó que la identificación de forma reproducible de los cadáveres era posible únicamente en huesos bien conservados (A) o semi-quemados (B). La mayoría de los casos de huesos quemados negros (C) se podían identificar, aunque con perfiles incompletos, y también en algunos casos de los huesos quemados azul-gris (D). Sin embargo la identificación con huesos
quemados azul-gris-blanco (E) era infructuosa en la mayoría de los casos.

El estudio sugiere la amplificación de un fragmento de 220 pares de bases de la región HVI mitocondrial como último recurso para la identificación de huesos
quemados azul-gris-blanco (E), con éxito en el 30% de estos casos extremos.