{"id":131419,"date":"2014-02-26T20:10:18","date_gmt":"2014-02-26T19:10:18","guid":{"rendered":"http:\/\/www.madrimasd.org\/blogs\/bioinformatica\/?p=131419"},"modified":"2014-02-27T16:25:33","modified_gmt":"2014-02-27T15:25:33","slug":"tophat-2-arreglos-para-algunos-fallos-tecnicos","status":"publish","type":"post","link":"https:\/\/www.madrimasd.org\/blogs\/bioinformatica\/2014\/02\/26\/131419","title":{"rendered":"TopHat 2: arreglos para algunos fallos t\u00e9cnicos"},"content":{"rendered":"<p>Una parte de la bioinform\u00e1tica actual gira en torno a los an\u00e1lisis de datos de experimentos de <a href=\"http:\/\/es.wikipedia.org\/wiki\/Secuenciaci%C3%B3n_del_ADN#Secuenciaci.C3.B3n_de_alto_rendimiento_o_.22next-generation.22\" target=\"_blank\">ultrasecuenciaci\u00f3n<\/a>: <a title=\"ChIP-Seq\" href=\"http:\/\/en.wikipedia.org\/wiki\/ChIP-sequencing\" target=\"_blank\">ChIP-Seq<\/a>, <a title=\"FAIRE Sequencing\" href=\"http:\/\/en.wikipedia.org\/wiki\/FAIRE-Seq\" target=\"_blank\">FAIRE-Seq<\/a> y <a title=\"DNase-Seq\" href=\"http:\/\/en.wikipedia.org\/wiki\/DNase-Seq\" target=\"_blank\">DNase-Seq<\/a>, <a title=\"Exome sequencing\" href=\"http:\/\/en.wikipedia.org\/wiki\/Exome_sequencing\" target=\"_blank\">exome sequecing<\/a>, <a href=\"http:\/\/en.wikipedia.org\/wiki\/RNA-Seq\" target=\"_blank\">RNA-Seq<\/a>, &#8230; Una de las herramientas es <a title=\"TopHat\" href=\"http:\/\/tophat.cbcb.umd.edu\/\" target=\"_blank\">TopHat<\/a>\u00a0(en el momento de escribir esta entrada iba por la versi\u00f3n 2.0.10), que se usa en los experimentos de RNA-Seq para identificar <em>splice junctions<\/em> tipo ex\u00f3n-ex\u00f3n&#8230; Para entender qu\u00e9 \u00a0es esto de los <em>splice junctions<\/em>\u00a0tipo ex\u00f3n-ex\u00f3n, primero hay que recordar c\u00f3mo funciona la <a href=\"http:\/\/es.wikipedia.org\/wiki\/Traducci%C3%B3n_(gen%C3%A9tica)\" target=\"_blank\">s\u00edntesis de prote\u00ednas<\/a>\u00a0con estos esquemas de la Wikipedia inglesa:<\/p>\n<div style=\"text-align: center;\"><a href=\"http:\/\/en.wikipedia.org\/wiki\/File:MRNA-interaction.png\"><img decoding=\"async\" class=\"alignnone\" title=\"Interacci\u00f3n del ARN mensajero en una c\u00e9lula\" src=\"http:\/\/upload.wikimedia.org\/wikipedia\/commons\/f\/fb\/MRNA-interaction.png\" alt=\"\" \/><\/a><\/div>\n<p>Cuando una prote\u00edna del c\u00f3digo gen\u00e9tico de la c\u00e9lula va a ser producida por la maquinaria celular, lo primero que se hace es, dentro del n\u00facleo, copiar el c\u00f3digo gen\u00e9tico correspondiente a los <a href=\"http:\/\/es.wikipedia.org\/wiki\/Ex%C3%B3n\" target=\"_blank\">exones<\/a>\u00a0que representan a esa prote\u00edna, descartando normalmente otros exones alternativos del mismo <a href=\"http:\/\/es.wikipedia.org\/wiki\/Gen\" target=\"_blank\">gen<\/a> (y de los dem\u00e1s genes). Todos esos exones son puestos de forma consecutiva en un ARN mensajero, que es el que sale del n\u00facleo de la c\u00e9lula con esa informaci\u00f3n y viaja por el <a href=\"http:\/\/es.wikipedia.org\/wiki\/Citoplasma\" target=\"_blank\">citoplasma<\/a>\u00a0hasta llegar a un <a href=\"http:\/\/es.wikipedia.org\/wiki\/Ribosoma\" target=\"_blank\">ribosoma<\/a>. Pero los procesos biol\u00f3gicos encargados de la composici\u00f3n del ARN mensajero pueden fallar, por ejemplo juntando exones correspondientes a prote\u00ednas de distintos genes. Estos procesos pueden estar alterados por defectos gen\u00e9ticos, y por diversas enfermedades, como por ejemplo todos los tipos de c\u00e1ncer.<\/p>\n<div style=\"text-align: center;\"><a href=\"http:\/\/en.wikipedia.org\/wiki\/File:Protein_synthesis.svg\" target=\"_blank\"><img decoding=\"async\" class=\"aligncenter\" title=\"S\u00edntesis de prote\u00ednas\" src=\"http:\/\/upload.wikimedia.org\/wikipedia\/commons\/thumb\/4\/44\/Protein_synthesis.svg\/1000px-Protein_synthesis.svg.png\" alt=\"\" width=\"90%\" \/><\/a><\/div>\n<p>Los experimentos de RNA-Seq tratan de capturar la informaci\u00f3n sobre parte del <a href=\"http:\/\/es.wikipedia.org\/wiki\/Transcriptoma\" target=\"_blank\">transcriptoma<\/a> (que ser\u00eda el conjunto de todos los posibles ARN mensajeros), justo aqu\u00e9llos que se encuentran en uso en las muestras usadas para el experimento de RNA-Seq. TopHat usa un genoma de referencia relacionado con los datos a analizar (por ejemplo, el genoma humano), informaci\u00f3n sobre los exones conocidos y a qu\u00e9 genes corresponden (proveniente de <a title=\"UCSC Genome Browser\" href=\"http:\/\/genome.ucsc.edu\/\" target=\"_blank\">UCSC Genome Browser<\/a> o <a href=\"http:\/\/www.ensembl.org\/\" target=\"_blank\">Ensembl<\/a>), y los datos a analizar como tal (del orden de decenas de GB).<\/p>\n<p>TopHat, como casi todas las herramientas y <em>pipelines<\/em> de an\u00e1lisis del mundo NGS, est\u00e1 en continuo desarrollo y es bastante complejo (est\u00e1 escrito en Python 2.7 y C++), con lo que es inevitable que contenga fallos t\u00e9cnicos. Los datos de un experimento de RNA-Seq que tuvo que analizar una compa\u00f1era de trabajo han tenido la \u00absuerte\u00bb de ser capaz de disparar tres de estos fallos t\u00e9cnicos.<\/p>\n<ol>\n<li><a href=\"http:\/\/es.wikipedia.org\/wiki\/Segmentation_fault\" target=\"_blank\"><em>Segmentation fault<\/em><\/a> en <tt>segment_juncs<\/tt>: Como se puede ver en <a href=\"https:\/\/groups.google.com\/forum\/#!topic\/tuxedo-tools-users\/8IqdrUB0lrM\" target=\"_blank\">esta entrada de un foro de Google Groups<\/a>, es un fallo existente de antes. La suerte es que en esa entrada vienen las pistas de c\u00f3mo arreglar dicho fallo en el c\u00f3digo fuente, en el fichero src\/segment_juncs.cpp .<\/li>\n<li><tt>AttributeError: 'NoneType' object has no attribute 'split'<\/tt>\u00a0de tophat al relanzar un trabajo terminado abruptamente: tophat viene con la posibilidad de reiniciar trabajos de an\u00e1lisis que hayan terminado de forma abrupta, desde el punto en el que haya fallado. Pero ese mecanismo tiene fallos&#8230; Para los que program\u00e9is en otros lenguajes de programaci\u00f3n, pero no en Python, &#8216;NoneType&#8217; es la clase de los &#8216;None&#8217;, el equivalente a &#8216;undef&#8217; de Perl, &#8216;nil&#8217; de Ruby, &#8216;NULL&#8217; de C y C++, &#8216;undefined&#8217; de JavaScript, etc&#8230; Tambi\u00e9n hubo suerte, porque en <a href=\"https:\/\/groups.google.com\/forum\/#!topic\/tuxedo-tools-users\/IMJucC83K60\" target=\"_blank\">esta otra entrada del mismo foro de Google Groups<\/a>, un usuario propone un arreglo que, aunque no sea muy ortodoxo ni correcto, hace que tophat contin\u00fae.<\/li>\n<li><a href=\"http:\/\/es.wikipedia.org\/wiki\/Segmentation_fault\" target=\"_blank\"><em>Segmentation fault<\/em><\/a>\u00a0en <tt>tophat_reports<\/tt>: Aunque este fallo est\u00e1 <a href=\"https:\/\/groups.google.com\/forum\/#!msg\/tuxedo-tools-users\/a3TXz72Z3F8\/UtLS0XcWKnUJ\" target=\"_blank\">m\u00e1s o menos documentado en el mismo foro de Google Groups<\/a>, nadie propone un arreglo. Pero investigando un poco aqu\u00ed, descubr\u00ed que el fallo se encuentra en el fichero src\/tophat_reports.cpp, por una raz\u00f3n similar a la descrita en el fallo de <tt>segment_juncs<\/tt>.<\/li>\n<\/ol>\n<p><span style=\"text-decoration: underline;\">\u00a0Actualizaci\u00f3n<\/span><\/p>\n<p>Para que os sea m\u00e1s f\u00e1cil arreglar estos problemas si os top\u00e1is con ellos, he puesto los parches derivados de los arreglos en un repositorio de GitHub:\u00a0<a href=\"https:\/\/github.com\/inab\/tophat2-patches\" target=\"_blank\">https:\/\/github.com\/inab\/tophat2-patches<\/a><\/p>\n<p><span style=\"text-decoration: underline;\">Actualizaci\u00f3n 2<\/span><\/p>\n<p>Hemos encontrado para nuestro caso la causa principal de los dos Segmentation fault. Hab\u00eda discrepancias entre el genoma de referencia y sus \u00edndices de bowtie, que se solucionaron ejecutando de vuelta bowtie-build.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Una parte de la bioinform\u00e1tica actual gira en torno a los an\u00e1lisis de datos de experimentos de ultrasecuenciaci\u00f3n: ChIP-Seq, FAIRE-Seq y DNase-Seq, exome sequecing, RNA-Seq, &#8230; Una de las herramientas es TopHat\u00a0(en el momento de escribir esta entrada iba por la versi\u00f3n 2.0.10), que se usa en los experimentos de RNA-Seq para identificar splice junctions tipo ex\u00f3n-ex\u00f3n&#8230; Para entender qu\u00e9 \u00a0es esto de los splice junctions\u00a0tipo ex\u00f3n-ex\u00f3n, primero hay que recordar c\u00f3mo funciona la s\u00edntesis de prote\u00ednas\u00a0con estos esquemas de la Wikipedia inglesa: Cuando una prote\u00edna del c\u00f3digo gen\u00e9tico de la c\u00e9lula va a ser producida por la maquinaria celular,\u2026<\/p>\n","protected":false},"author":25,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0},"categories":[1],"tags":[],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":4}},"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.madrimasd.org\/blogs\/bioinformatica\/wp-json\/wp\/v2\/posts\/131419"}],"collection":[{"href":"https:\/\/www.madrimasd.org\/blogs\/bioinformatica\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.madrimasd.org\/blogs\/bioinformatica\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.madrimasd.org\/blogs\/bioinformatica\/wp-json\/wp\/v2\/users\/25"}],"replies":[{"embeddable":true,"href":"https:\/\/www.madrimasd.org\/blogs\/bioinformatica\/wp-json\/wp\/v2\/comments?post=131419"}],"version-history":[{"count":12,"href":"https:\/\/www.madrimasd.org\/blogs\/bioinformatica\/wp-json\/wp\/v2\/posts\/131419\/revisions"}],"predecessor-version":[{"id":131429,"href":"https:\/\/www.madrimasd.org\/blogs\/bioinformatica\/wp-json\/wp\/v2\/posts\/131419\/revisions\/131429"}],"wp:attachment":[{"href":"https:\/\/www.madrimasd.org\/blogs\/bioinformatica\/wp-json\/wp\/v2\/media?parent=131419"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.madrimasd.org\/blogs\/bioinformatica\/wp-json\/wp\/v2\/categories?post=131419"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.madrimasd.org\/blogs\/bioinformatica\/wp-json\/wp\/v2\/tags?post=131419"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}