Descripcion: ------------ Hacer un pequeño programa en Perl, Java o cualquier otro lenguaje que lea informacion sobre redes metabolicas de KEGG y exporte sub-redes como grafos en el formato .dot que es capaz de leer el programa "dotty". Esto permitira generar representaciones graficas de estas subredes. El programa deberia generar grafos metabolicos con las sigiuientes 3 opciones, como minimo: - Toda la subred metabolica que parta de un compuesto X hasta distancia N (reacciones). - La ruta mas corta entre dos compuestos X e Y - Un pathway de KEGG completo. Todo ello siempre restringiendose a un organismo determinado. En el fichero "enzyme" (ver abajo) viene informacion sobre los organismos en que esta presente el gen de una determinada enzima. Se asume que una reaccion se dara en los organismos en que ese gen este presente. Adicionalmente, se valorara: - Inclusion de informacion adicional en la representacion: - Codigo EC de la enzima. - Peso molecular del compuesto (i.e. como anchura de la linea de su nodo, color, o cualquier otro atributo). - Otras caracteristicas topologicas de compuestos (nodos) y/o enzimas (conexiones). P.ej. numero de conexiones, numero de caminos que pasan por ahi, etc. - Cualquier otra informacion que el alumno quiera incluir. - Representacion de todas las rutas posibles entre dos compuestos X e Y. - Cualquier otra posibilidad que el alumno quiera incluir. Material: --------- La informacion metabolica necesaria esta en los ficheros "reaction", "compound" y "enzyme" que se pueden descargar de: http://www.biowebdb.org/pub/kegg/ligand/ Los programas "dot" y "dotty", del paquete "Graphviz" deberian estar instalados en los ordenadores del curso. Se pueden descargar para varias plataformas en: http://www.graphviz.org/ El manual de "dot", donde se describe el formato del fichero de descripcion del grafo (.dot), viene con el paquete y tambien se puede descargar de: http://www.graphviz.org/Documentation/dotguide.pdf Aunque este formato es muy sencillo y casi se aprende mas rapido viendo y cambiando algunos ejemplos: ejemplo.dot --> ejemplo.png Notas importantes: ------------------ - Una determinada reaccion (RXXXXX) en el fichero "reaction" de KEGG puede tener mas de un sustrato o producto. En las ultimas versiones de KEGG se han anotado manualmente las transformaciones principales (de un compuesto a otro) que ocurren en esa reaccion, distinguiendolas de otras secundarias (que implican cofactores, agua, etc). Esto esta en las entradas "RPAIR" del fichero "reaction". Deben de tomarse como conexiones para el grafo los pares de compuestos anotados como "main" en "RPAIR". Por ejemplo, en la reaccion "C01083 + C00001 <=> 2 C00031", el par que aparece como "main" es "C01083-C00031" (ya que C00001 es agua), y por tanto esta reaccion debe de representarse en el grafo como "C01083 --> C00031" (la direccionalidad se saca de otro fichero -ver mas abajo-). Si para una reaccion hay varios "RPAIR main" se representan todos en el grafo. - Si una determinada enzima (codigo EC) no esta asociada a ningun organismo (gen) vamos a asumir, para simplificar, que se esta presente en todos los organismos. - La direccionalidad "estandard" de las reacciones esta en un fichero llamado "reaction_mapformula.lst". En el fichero "reaction" todas aparecen como bidireccionales. - Los compuestos usados en muchas reacciones quimicas (i.e. H2O, ATP, ...) crean conexiones "irreales" en estas representaciones de grafos y es facil ver que aparecen como nodos conectados con muchisimos otros (hubs). Esto puede crear problemas en las partes de calculos de rutas entre compuestos. Normalmente estos compuestos se excluyen en las representaciones metabolicas en forma de grafos. Al quedarse con los "RPAIR main" (primer punto arriba) estos compuestos no deberian aparecer. Si aparecen, las posibilidades para excluirlos son: 1.- Calcular el numero total de conexiones para todos los compuestos y exluir los que tengan mas de N conexiones. 2.- Exluir una lista fija de compuestos. - Si no se desea descargar los ficheros de KEGG para usarlos localmente, se pueden abrir directamente a traves de Internet usando las librerias que tiene Perl para abrir URLs, o simplemente con el "open" normal usando "wget" o similar: open(KEGGREACT,"wget -O - http://www.biowebdb.org/pub/kegg/ligand/reaction/reaction |"); Una ventaja adicional de este sistema es que, de esta manera, el programa siempre estara usando la version mas actual de KEGG disponible en ese sitio web. Como contrapartida, este sistema es mucho mas lento que leer ficheros locales. - Si se prefiere, se podran generar las representaciones en formato CytoScape, en lugar de dot. - Se puede hacer usando la API de KEGG en vez de parsear los ficheros planos: http://www.kegg.jp/kegg/soap/ Posibles ejemplos de uso: ------------------------- $ ./kegg2dot.pl /mydatabases/KEGG/ -shortest "D-Glucose" "2 Betaine aldehyde" ECO > path.dot (Representa la ruta mas corta entre estos dos compuestos en E coli) $ ./kegg2dot.pl /mydatabases/KEGG/ -path "C5-Branched dibasic acid metabolism" ATH > path.dot (Representa ese pathway en A. Thaliana) Y estos grafos se pueden ya visualizar: $ dotty path.dot & ...O generar directamente un fichero grafico: $ dot -Tpng path.dot >path.png En vez de los nombres completos de compuestos, pathways, etc. se pueden usar identificadores de KEGG. P.ej: $ ./kegg2dot.pl /mydatabases/KEGG/ -path rn00660 ATH > path.dot $ ./kegg2dot.pl /mydatabases/KEGG/ -shortest C00029 C00576 ECO > path.dot Ejemplo de representacion: -------------------------- [ex.png] Bibliografia: ------------- En este libro se describe la implementacion de muchos tipos de algoritmos en lenguaje Perl, con codigo de ejemplo, incluyendo algoritmos relacionados con grafos y redes: Orwant, J., et al. (1999). "Mastering Algorithms with Perl". O'Reilly eds. ISBN: 1565923987. Un libro mas exhaustivo y profundo sobre implementacion de algoritmos. En este caso las implementaciones se dan en pseudocodigo: Sedgewick, R. (1988). "Algorithms". 2nd ed. Addison-Wesley. ISBN:02001066734.
Para cualquier aclaracion adicional, pregunta, etc., por favor contactad con Florencio Pazos91.5854669