dPUC 2

Domain Prediction Using Context

por Alejandro Ochoa García, Manuel Llinás, Mona Singh

¡Extienda sus predicciones de Pfam sin perder precisión usando el contexto de dominios!

Imagen miniatura
VIIIA

es-mx en-us - - Mándame un correo

Aquí puedes bajar nuestro código, y aprender como usarlo. Esta página es el manual del programa.

Acerca de dPUC 2

El programa de dPUC (por sus siglas en inglés de Domain Prediction Using Context) mejora la predicción de dominios de proteina por considerar a cada dominio en el context de los otros dominios, en lugar de considerarlo independientemente como los métodos comunes lo hacen. Nuestro método maximiza la probabilidad de los datos bajo una aproximación, lo cual se reduce a un problema de contexto de parejas, y hemos mostrado que nuestro método probabilistico es de hecho más poderoso que los métodos de la competencia.

La serie de dPUC 2.xx es una gran actualización de dPUC 1.0. Para el usuario promedio, lo que importa es que ahora dPUC funciona con HMMER 3 y Pfam 24 en adelante, y dPUC es mucho más rápido que antes. Si usted fue un usuario de dPUC 1.0, debería saber que las entradas y salidas son completamente diferentes; la configuración nueva es más simple dados los cambios que han traido HMMER3 y los Pfams más nuevos. Por último, hay mejorías en la parametrización de la red de contexto, más notablemente la adición del contexto dirigido. Vea las notas de la versión para mayor información.

Código fuente

/dl.png Dpuc-2.06.tgz (75 KB)

Baje nuestro código fuente Perl, en un archivo tar comprimido con gzip. Es un proyecto muy grande, con 12 paquetes y 3 guiones para un total de 1753 lineas de código (de acuerdo a cloc).

Todo mi código está publicado bajo la GNU GPLv3 (Licencia Pública General de GNU, versión 3).

Este proyecto ahora está en GitHub, donde usted puede contribuir y mejorar este programa.

Versiones previas

Código Dpuc-2.05.tgz (74 KB) y manual 2.05.

Código Dpuc-2.04.tgz (73 KB) y manual 2.04.

Código Dpuc-2.03.tgz (73 KB) y manual 2.03.

Código Dpuc-2.02.tgz (79 KB) y manual 2.02.

Código Dpuc-2.01.tgz (78 KB) y manual 2.01.

Código Dpuc-2.00.tgz (73 KB) y manual 2.00.

Código beta Dpuc-2.00b.tgz (192 KB), el cual era más grande que versiones más recientes porque contenía archivos de muestra que ya no están incluidos.

La versión original 1.00 está disponible y documentada en el sitio de dPUC 1.0.

Instalación, dependencias

dPUC 2 requiere Perl 5 y el paquete de Perl Inline::C, el cual se puede instalar con cpan (el cual está incluido en las instaciones normales de Perl) corriendo el siguiente comando como el usuario raíz,

cpan Inline::C
y procediendo con las instrucciones (puede que necesite instalar paquetes adicionales). No dude en mándame un correo si la instalación falla y necesita más asistencia.

Este código también requiere la biblioteca de lp_solve 5.5 (pero no el ejecutable). En el Linux de Fedora/RedHat, puede instalarla usando el siguiente comando como raíz,

yum install lpsolve-devel

Fuera de eso, todo lo que necesita hacer es desempacar el código y correr los guiones del directorio que los contiene. En este modo, todos los guiones y paquetes deberían quedarse juntos en el mismo directorio. También puede correr mis guiones desde directorios arbitrarios.

También necesitará HMMER3 (sólo los ejecutables hmmpress y hmmscan son necesarios). Nuestro código también asume que gzip está disponible en su sistema.

Compilando el código C

Cuando las dos dependencias exteriores estén instaladas correctamente, deberá de compilar la porción en C de dPUC. Esta compliación pasará automáticamente la primera vez que 1dpuc2.pl corra, así que puede correr simplemente

perl -w 1dpuc2.pl
el cual tardará un poco, luego mostrará el mensage del "uso". Si ve un error acerca de no encontrar la biblioteca de lp_solve, deberá cambiar la ruta a la biblioteca que está codificada en mi paquete DpucLpSolve.pm (por favor mándame un correo si esto o algún otro error sucede, me gustaría saber de ellos).

Corriendo los guiones de dPUC

Bases de datos de HMM

La versión actual de dPUC solo funciona con Pfam. Usted deberá bajar Pfam-A.hmm.gz y Pfam-A.hmm.dat.gz del sitio FTP de Pfam. Será necesario usar hmmpress de HMMER3 en esta base de datos de HMM antes de que hmmscan la pueda usar. Los siguientes comandos logran eso.

# descomprima la base de datos HMM primero 
gunzip Pfam-A.hmm.gz 

# prepare la base de datos HMM para búsquedas con HMMER3 (la cual provée hmmpress) 
# cuatro archivos diferentes se generarán, con nombres Pfam-A.hmm.h3{f,i,m,p} 
hmmpress Pfam-A.hmm 

# (opcional) recomprima el archivo HMM original (HMMER3 no lo usa) 
gzip Pfam-A.hmm

Estos archivo pueden permanecer comprimidos de ahora en adelante, ¡dPUC los leera correctamente!

Red de conteos de contexto de dPUC

Para que esté completa, mi distribución incluye un guión que genera la red dirigida de conteo de pares de familias de dominio de dPUC a partir de Pfam-A.full.uniprot.gz para Pfam 29-31 (Pfam-A.full.gz para Pfam 23-28). Sin embargo, bajar Pfam-A.full.uniprot.gz toma mucho tiempo (en Pfam 31, ese archivo ocupa 9.1 GB!). Para la mayoría de los usuarios tiene más sentido bajar mis archivos de red precalculadas, las cuales proveo para cada versión de Pfam a partir de la versión 23.

Nótese que el formato de los archivos de red de contexto cambió con la versión 2.01 de dPUC. Todos los archivos abajo están en el nuevo formato. Los archivos con el formato antiguo ya no están disponibles.

/dl.png dpucNet.pfam31.txt.gz (1.2 MB)

dpucNet.pfam30.txt.gz (925K KB)

dpucNet.pfam29.txt.gz (842 KB)

dpucNet.pfam28.txt.gz (718 KB)

dpucNet.pfam27.txt.gz (503 KB)

dpucNet.pfam26.txt.gz (409 KB)

dpucNet.pfam25.txt.gz (271 KB)

dpucNet.pfam24.txt.gz (242 KB)

dpucNet.pfam23.txt.gz (175 KB)

Estos archivos también están disponibles en un repositorio de GitHub, dpuc2-data.

Archivo de secuencia de muestra

Para tratar estos ejemplos, cualquier archivo de sequencias de proteina formato FASTA se puede usar. Si gusta, puede usar este archivo mínimo de muestra, sample.fa.gz, que consiste de 10 proteinas escogidas al azar del proteoma de Plasmodium falciparum. Los dos archivos de salida de muestra son sample.31.txt.gz y sample.31.dpuc.txt.gz.

Los archivos de salida de muestra para estas proteinas fueron creados usando Pfam 31 y la version de 64 bits de HMMER 3.1b2. Podrán haber pequeñas diferencias en archivos de salida tan sólo usando una arquitectura de 32 bits, para su información. Adicionalmente, HMMER 3.1b2 fechea al archivo de salida, así que cada corrida parecera generar archivos diferentes si se comparan con funciones de resumen criprográfico como SHA o MD5, así que no las use. Es mejor comparar cada linea con una herramienta como zdiff, que es como diff pero para archivos comprimidos.

Sinopsis de guiones

Los siguientes comandos pueden correrse en los archivos de ejemplo provistos arriba, mas los dos archivos de Pfam, todos colocados en el mismo directorio que el código y llamados de ese mismo lugar. Todos los archivos de entrada pueden estar comprimidos con gzip y también pueden ser especificados con o sin la extensión GZ. Los archivos de salida serán comprimidos con gzip, ya sea si la ruta de salida indique la extensión GZ o no. Así que los comandos así como se muestran abajo producirán y funcionarán completamente con archivos comprimidos, sin una sola extension GZ indicada.

# cree la red de conteos de contexto de dPUC para su versión de Pfam 
# (salte este paso bajando arriba la red de dPUC precalculada que necesite) 
perl -w dpucNet.pl Pfam-A.full.uniprot dpucNet.txt 

# produzca predicciones de dominios con HMMER3 (provée hmmscan) con filtros débiles. 
# este es el paso más lento 
perl -w 0runHmmscan.pl hmmscan Pfam-A.hmm sample.fa sample.txt 
# (opcional) comprima el archivo de salida, nuestros guiones lo leerán de todos modos 
gzip sample.txt 

# Produzca predicciones de dPUC con parámetros estándares 
perl -w 1dpuc2.pl Pfam-A.hmm.dat dpucNet.txt sample.txt sample.dpuc.txt 

# Produzca predicciones de dPUC para más de un contraste de valores p para dominios candidatos 
# (produce una salida para cada contraste) 
perl -w 1dpuc2.pl Pfam-A.hmm.dat dpucNet.txt sample.txt sample.dpuc.txt --pvalues 1e-1 1e-4

dpucNet.pl 1.01 - Extrae de las predicciones de Pfam una red de conteos de contexto.

perl -w dpucNet.pl <Pfam-A.full.uniprot> <dpucNet output>
Las entradas requeridas son

Este guión específico para Pfam cuenta cada par ordenado de familias de dominio observado en las predicciones completas de las versiones normales de Pfam. Este código está muy optimizado para leer este archivo tan grande rápidamente y guardar las predicciones de dominio usando memoria mínima (desafortunadamente, Pfam-A.full.uniprot lista a los dominios agrupados primero por familia, mientras que los conteos de pares de familia sólo pueden ser calculados si las predicciones se agrupan primero por proteína, así que todos los datos deben estar en la memoria antes de que se puedan reorganizar). La corrida para Pfam 28 usó 10.6 GB de RAM y duró 20 minutos.

Sólo se necesita correr este comando una vez por versión de Pfam. Además, se puede saltar este paso completamente si baja las redes de conteos de contexto de dPUC precalculadas que yo proveo arriba (que es lo que recomiendo, ya que bajar Pfam-A.full.uniprot se tarda mucho tiempo). Este guión está incluido principalmente para que todo esté completo y para que la comunidad pueda inspeccionarlo, encontrar errores, y mejorarlo de cualquier caso.

0runHmmscan.pl 1.01 - Adquiera predicciones de dominios para sus secuencias de proteína

perl -w 0runHmmscan.pl <hmmscan> <Pfam-A.hmm> <FASTA input> <output table>
Las entradas requeridas son

Este guión no corre simplemente a hmmscan con parámetros estándares, de hecho cambia varias opciones que son importantes para que dPUC funcione. En partcular, se asegura que las salidas reporten valores \(p\) en lugar de valores \(E\), y relaja los filtros heurísticos de valores \(p\) para que pasen más predicciones. Este guión fija el contraste de valor \(p\) más estricto a 1e-4, igual que el contraste de valor \(p\) para dominios candidatos que dPUC usa, y que fue el contraste que funcionó mejor en nuestras pruebas.

1dpuc2.pl 1.01 - Produzca predicciones de dominios de dPUC a partir de datos sin procesar de hmmscan.

perl -w 1dpuc2.pl [-options] <Pfam-A.hmm.dat> <dpucNet> <input table> <output table>
Las entradas requeridas son

Opciones:

Si hay más de un contraste de valores \(p\) proveidos para los dominios candidatos: Nótese que las predicciones de dPUC no estan necesariamente anhidadas cuando se varía el contraste de dominios candidatos, ya que dPUC resuelve un problema de optimización de parejas complicado, así que estos archivos no son redundantes y no se pueden obtener filtrando el archivo más grande. Cada salida es como si dPUC se hubiera corrido por separado con el contraste de valores \(p\) bajo consideración, aunque el código hace esto eficientemente factorizando pasos compartidos a través de los contrastes.

Compatibilidad

Este código fue probado con HMMER versiones 3.0, 3.1b1, 3.1b2, contra las bases de datos HMM de Pfam 25, 27-31. El codigo funcionó con Inline::C 0.53 y 0.62, y con lp_solve 5.5.2.0.

Notas compartidas con otros proyectos

Por favor lea notas adicionales siguiendo el vínculo a continuación.

Mi código público
Mi código público, descripción de mis paquetes originales de Perl
La unión de código a través de las distribuciones de DomStratStats, dPUC, y RandProt más recientes.

Citas

2017-04-12. Alejandro Ochoa, Mona Singh. Domain prediction with probabilistic directional context. Bioinf 2017 btx221 Pubmed Artículo. bioRxiv 2016-12-14.

2015-11-17. Alejandro Ochoa, John D Storey, Manuel Llinás, and Mona Singh. Beyond the E-value: stratified statistics for protein domain prediction. PLoS Comput Biol. 11 e1004509. Pubmed Artículo arXiv 2014-09-23.

2011-03-31. Alejandro Ochoa, Manuel Llinás, and Mona Singh. Using context to improve protein domain identification. BMC Bioinformatics, 12:90. Pubmed Artículo

Notas de la versión

2017-03-10 - Rehice pruebas para Pfam 31 (código sin cambios)

Rehice los ejemplos incluidos en esta página usando este Pfam más nuevo, confirmando que mi cógido sirve.

2016-12-14 - Prepublicación lista! (código sin cambios)

Notese que dPUC 2.06 fue la versión usada en esta prepublicación.

2016-08-10 - Rehice pruebas para Pfam 30 (código sin cambios)

Rehice los ejemplos incluidos en esta página usando este Pfam más nuevo, confirmando que mi cógido sirve.

2015-12-23 - dPUC 2.06

Pfam 29 salió ayer. Rehice los ejemplos incluidos en esta página usando este Pfam más nuevo y también el HMMER más nuevo (3.1b2). Desafortunadamente, cambios en Pfam quebraron mi código que extrae la "red de contexto" de Pfam-A.full. Para Pfam 29, el archivo correcto por usar como entrada es ahora Pfam-A.full.uniprot, y mi lector tuvo que cambiar porque unos comentarios en que dependía ya no están en este archivo de entrada. Finalmente, ahora la salida esta ordenada internamente (la primera linea, la lista de vértices, tiene accessiones ordenadas; el resto de las lineas estan ordenadas respecto unas a las otras), así que cuando cambie mi código voy a poder verificar más fácilmente si las salidas cambiaron o no.

Verifiqué que mi lector nuevo en DpucNet.pm genere las mismas salidas que el lector anterior para Pfam 23-28 (si son ordenadas igual). Remplacé las redes viejas de context que hago disponibles en este sitio con las versiones ordenadas.

Hay un problema más con Pfam 29. En versiones anteriores de Pfam, todas las accesiones están presentes en Pfam-A.full. Sin embargo, en Pfam 29, ¡260 familias presentes en Pfam-A.hmm y Pfam-A.hmm.dat faltan en Pfam-A.full y Pfam-A.full.uniprot! My código depende en que estas dos listas estén de acuerdo para asegurar que la misma versión de Pfam este siendo usada. Para evitar problemas, alteré la red de contexto de Pfam 29 que he hecho disponible en linea; tiene la lista de accesiones de Pfam-A.hmm.dat en lugar de la lista observada en Pfam-A.full.uniprot. Como esta alteración es simple pero malvada (porque mi prueba no debería de ser evitada tan fácilmente a propósito), no he hecho públicamente disponible el código que lo implementa. Espero que la siguiente versión de Pfam no requiera un truco tan sucio.

2015-11-26 - dPUC 2.05

Hice unos cambios a la función objetivo y a las restricciones, las cuales acercan el modelo de dPUC al modelo Markov de primer orden de Coin, et al (2003). En el objetivo, los puntajes de contexto ahora valen la mitad de lo que valían antes (cada arista se cuenta una vez en lugar de dos veces). El objetivo ahora también tiene términos que aproximan al contraste de secuencia. Finalmente, se removieron los contrastes explícitos de puntajes de dominios y sequencias (aunque hay contrastes equivalentes implicitos en el objetivo; esto se describirá en un artículo venidero). El ILP resultante es más simple y dPUC ahora corre un poco más rápido por estos cambios, y la calidad de las predicciones no cambió prácticamente. El pseudoconteo por defecto ahora es 1e-3 (se tuvo que encojer porque los puntajes de contexto ahora valen la mitad que antes).

2015-10-31 - dPUC 2.04

El pseudoconteo, o "alpha" de la distribución a priori Dirichlet para puntajes de conteo ahora se parametriza directamente, en lugar de darla a través del logaritmo de un valor de "escala" (de pseudoconteos totales a conteos observados totales). El valor por defecto de este pseudoconteo es 0.01, lo cual está muy cerca al valor por defecto anterior para Pfam 25 (de 0.008, pero el valor exacto dependía de la versión de Pfam). Recalculé todas mis muestras usando la nueva versión, y ví que todas se quedaron igual (para Pfam 28). Así que nada cambió de verdad al menos que hayas estado jugando con la opción '--scale', ahora tienes que usar '--alpha' y los números que se usan son diferentes.

2015-09-04 - dPUC 2.03

El guión principal ahora permite cambiar una multitud de opciones (la mayoría solían estar escondidas dentro del código, sólo los contrastes de valores \(p\) estaban expuestos antes).

La escala por defecto se ha cambiado de 23 a 3. Ya que el contexto negative es approximadamente -escala, esto significa que ahora dPUC penaliza a las parejas de familias de dominio sin observarse mucho menos que antes, permitiendo que el contexto negativo sea sobrellevado si hay suficiente contexto positivo. Nuestras pruebas encontraron que escala=3 se desempeña mejor para Pfam 25.

Internamente, el código fuente fue limpiado bastante, removiendo opciones "experimentales" que no estaban documentadas y que no mejoraronel desempeño en mis últimas pruebas. El código que genera los puntajes de contexto de los conteos es ahora particularmente transparente.

2015-07-27 - dPUC 2.02

El guión principal ahora permite que múltiples contrastes de valores \(p\) para los dominios candidatos sean pasados como opción en la linea de comandos. El guión solía tener un sólo contraste fijo en el código, y no podía generar salidas para contrastes múltiples.

2015-07-23 - dPUC 2.01

El cambio más importante es la adición de nuevas pruebas de familias de dominio para asegurarse que la versión correcta de Pfam se este usando en todos los archivos.

El código fue probado con Pfam 28, el cual salió en Mayo 2015. Todos los archivos muestra proveidos ahora son de esta versión. Cuando lo probé, encontré un error en el archivo Pfam-A.hmm.dat, cuyas asociaciones de anidación entre familias de dominio estaban en blanco, y esto causaba que mi lector de Pfam-A.hmm.dat se quejara mucho a STDERR. Ajusté mi código para que esto ya no suceda. Desafortunadamente, para el Pfam-A.hmm.dat actual de Pfam 28, no hay información de anidación disponible para usarse, aunque contacté al equipo de Pfam y puede que el error se arregle en el futuro (y mi código funcionará correctamente cuando eso suceda).

2014-09-18 - dPUC 2.00

Esta fue la primera versión pública de la segunda serie del código.

Comparada a la versión 1.0, bastante ha cambiado. En resumen, la serie 2.xx funciona con HMMER3/Pfam 24 (y en adelante), y está muy altamente optimizada para reducir el tiempo de ejecución. Importantemente, el formato de salida ha cambiado (ahora es simplemente como los archivos de salida tabulares de dominio de HMMER3).

Comparada a la versión beta, muchos paquetes fueron reorganizados, en general para lo mejor. También incluí código para general la red de conteos de dPUC (la versión beta simplemente proveyó la red para Pfam 24, y esa red tenía filtros raros que he removido en esta nueva versión pública).

2014-02-37 - dPUC 2.00 beta

Preparé esta versión para Juliana Bernardes, pero hasta que la publiqué junto con la versión 2.00 final, creo que nadie más había visto esta versión, así que no la considero una versión pública.

2011-02-06 - dPUC 1.0

Último cambio grabado en el código fuente. Vea el sitio de dPUC (1.0) y nuestro artículo para mayor información.

VIIIA

Historial