Blast Query Sequence Visualizer Demo II

retomando el tema de Blast, entre otras cosas actualice la interfaz para mostrar los datos de cada HSP de forma instantánea, aquí dejo un par de imágenes:

(puedes hacer clic sobre las imágenes para agrandar)

casi cualquier elemento de la pagina web “esta vivo”, los datos que se muestran instantáneamente al pasar el puntero del mouse sobre un elemento HSP ocasionan que se muestren tooltips dinamicamente con la información de cada HSP , de cada HIT y de la query correspondiente, aunque estos datos se muestran como un resumen alternativo rápido, la situación es que al seleccionar un HSP se mostrara la información completa y el alineamiento de cada HIT y HSP quizá siguiendo el estilo de NCBI.

cabe señalar que esto es solo un avance que al día de hoy es usable, pero falta mucho por desarrollar e incluir me refiero a cromosomas, cdna..etc.

Perl + Gtk 2

pues nunca había programado nada de Perl con Gtk 2, pero inicie con algunos ejemplos que vienen en los tutoriales de gtkPerl y le añadí algo mas de código al siguiente ejemplo:

use Gtk2;
use Term::ANSIColor;

Gtk2->init;
my $win = Gtk2::Window->new (’toplevel’);
my $btn = Gtk2::Button->new (’Salir’);

$win->set_title(’Perl + Gtk’);
Gtk2::Window::set_position($win,center);
$win->resize(200,150);
$btn->signal_connect (clicked => sub {
print color ‘bold blue’;
print “Saliendo del programa\n”;
print color ‘reset’;
Gtk2->main_quit
});
$win->add ($btn);
$win->show_all;
Gtk2->main;

este ejemplo define una ventana con un titulo, se redimensiona y tambien se define un procedimiento manejador para el evento “clicked” del boton e imprime en la consola o terminal en color azul negrita y termina la ejecución del programa.

muy rapido Perl + Gtk2!!!!

Nuevo Material

Al caer la tarde el día de ayer maggy y yo caminamos a una tienda de discos ,en Irapuato, Guanajuato, la cual esta ubicada en una famosa plaza que kbyte asiste regularmente. más tarde me anime a comprar el nuevo disco de éxitos de Dream Theater para sumarlo a mi colección de discos de Dream Theater.

Básicamente es una recopilación de los temas mas padres y en algunos temas hay mezclas..se los recomiendo mucho.

Dream Theater en auditorio (DF)

El pasado día 29 de abril fui al concierto de Dream Theater en el auditorio nacional de la ciudad de México, los temas fueron en mayoría sobre el ultimo disco Systematic Chaos, un muy buen trabajo por parte de Dream Theater.

El concierto empezó a las 9:30 p.m, y termino aproximadamente a las 11:30 p.m.

Al terminar el concierto compre una playera, una taza y regrese a casa muy animado en tocar guitarra ya que John Petrucci es un maestro en la guitarra.

Ahora espero ansiosamente a Pink Floyd para 2009, ahí estaré en primera fila!!!!

Blast Query Visualizer Demo by Jacob

En el trabajo he estado desarrollando varias herramientas para procesar datos en gran escala, al menos para mi es cierto, al inicio use PostgreSQL para almacenar mucha información, 8GB en registros aproximadamente, y plenamente confió en postgreSQL aunque primero hay que configurar postgreSQL para obtener un rendimiento optimo.

Entre varias herramientas de las cuales mas delante comentare, tiene sentido ahora comentar sobre Blast Query Visualizer Demo la cual es una aplicación web que al día de hoy sigo desarrollando. esta aplicación permite representar gráficamente la información que BLAST genera y con esto quiero decir que permite representar contigs con los hits asociados y hsps por cada hit, aunque platicando con varios compañeros de trabajo hay mucho trabajo por hacer, pero la parte sustancial que permite dibujar en una pagina web es estable.

Para darnos una idea les muestro primero una imagen:

Blast Query Visualizer Demo

En esta imagen pueden observar un contig(E09Contig125.1) de NR con 1 hit y 9 hsps y el color indica el score en bits muy al estilo del NCBI, aunque bueno esta pantalla realmente no esta terminada ni a un 40% hay cosas como la tabla de coordenadas que no debe aparecer ahi, esa informacion es para mi como desarrollador, la barra de escala no indica nada pero lo hara en algun momento
, por lo que los siguientes componentes estan en fase de pruebas:

  • El motor que dibuja hsps con un sustento de una base de datos MySql, PostgreSql, Sqlite y en un futuro XML crudo generado por BLAST, para ello necesito Linq a XML.
  • Las coordenadas de los hsps están a escala con base a 850 pixeles. Maggy y su servidor desarrollamos una formula de conversión de coordenadas BLAST a coordenadas en Html-Pixel, esto es :
  • hsp_queryfrom, hsp_queryto, hsp_hitfrom,hsp_hitto

El Desarrollo de este chisme:

  • El motor de generación gráfica de hsps lo estoy desarrollando con DojoToolkit.
  • Usa un Servicio Web escrito en C# en Mono como “capa de negocio” que interactua con la capa de datos para extraer la información de la base de datos.
  • Un poco de trabajo con objetos en Javascript (offobjects)
  • Parser en Javascript para la clasificación de los datos al vuelo provenientes en formato SOAP del servicio web , esto quiere decir Javascript+ XML - asincronico (el archifamoso AJAX).
  • Algunos puntos de comunicación entre Javascript y C# vía ASP.NET en Mono.

Algo interesante aparte de lo que estoy comentando es que debido a la estructura de los módulos se puede fácilmente quitar el servicio web en c# y reemplazarlo por uno escrito en Perl o algún otro lenguaje que para ustedes sea lo mejor.

Esta herramienta es la que mas tiempo me esta consumiendo pero con buenos resultados, por ahora estoy trabajando con hsps sobrelapados y como generar un despliegue vertical de los mismos dinamicamente. la idea principal sera dibujar toda la información completa y creo que la gente de biología o bioinformatica comprenderá que es toda la información. al día de hoy yo no me considero bioinformatico, solo un buen paria que intenta hacer herramientas de software para obtener resultados mas eficientemente aunque no tenga la mas mínima puta idea de la biología molecular.

ASP.NET 1.1 y 2.0 en Apache 2

En la reunión pasada de GLIB platique un poco sobre la configuracion del modulo mod_mono para soportar aplicaciones web ASP.NET en Apache 2.

Introducción

Mod_mono es un modulo que proporciona soporte de ASP.NET 1.1 y 2.0 para el servidor web Apache.

El modulo envía todas las peticiones a un programa externo “mod-mono-server” para que procese dichas peticiones.

La comunicación entre el modulo de Apache y mod-mono-server es establecida a traves de sockets (Unix y TCP).

Requerimientos

para soportar aplicaciones web escritas en ASP.NET con C#:

  • Mono
  • xsp 1.9. es un pequeño servidor para probar el desarrollo de ASP.NET 1.1 y 2.0
  • mod_mono 1.9

Compilar xsp

  • ./configure –prefix=/usr
  • make
  • make install (con privilegios de root)
  • Compilar mod_mono

    • ./configure –prefix=/usr
    • make
    • make install (con privilegios de root)

    nota: en este punto vamos a necesitar las librerías de apache2 y herramientas como APR(Apache Portable Runtime),de otro forma no pueden compilar el modulo.

    Configuración del modulo en Apache2

    ASP.NET 1.1 y 2.0

    Incluir en el archivo de configuración principal de Apache el siguiente archivo: mod_mono.conf

    Include /etc/apache2/mod_mono.conf

    contenido del archivo mod_mono.conf:

    <IfModule !mod_mono.c>
    LoadModule mono_module /usr/lib/apache2/modules/mod_mono.so
    AddType application/x-asp-net .aspx
    AddType application/x-asp-net .asmx
    AddType application/x-asp-net .ashx
    AddType application/x-asp-net .asax
    AddType application/x-asp-net .ascx
    AddType application/x-asp-net .soap
    AddType application/x-asp-net .rem
    AddType application/x-asp-net .axd
    AddType application/x-asp-net .cs
    AddType application/x-asp-net .config
    AddType application/x-asp-net .Config
    AddType application/x-asp-net .dll
    DirectoryIndex index.aspx
    DirectoryIndex Default.aspx
    DirectoryIndex default.aspx
    </IfModule>

    nota: este archivo se genera automáticamente al instalar mod_mono.

    Archivo de configuracion de su sitio web

    el siguiente paso es crear un archivo con su configuración de su sitio web: por ejemplo mywebsites_aspnet2.conf e incluirlo en Apache 2

    Include /etc/apache2/mywebsites_aspnet2.conf

    contenido del archivo mywebsites_aspnet2.conf:

    Alias /test "/home/jacob/Projects/aspnet1.1_2.0/helloworld"
    AddMonoApplications default "/test:/home/jacob/Projects/aspnet1.1_2.0/helloworld"
    MonoServerPath default /usr/bin/mod-mono-server2
    <Location /test>
    SetHandler mono
    </Location>

    El código fuente de la aplicación web ASP.NET

    helloworld.aspx

    <% @Page Language="C#" Inherits="helloworld" Codefile="helloworld.aspx.cs" %>
    <html>
    <head>
    <title>Hola Mundo desde ASP.NET 2.0</title>
    </head>
    <body>
    <form id="frmMain" runat="server">
    <asp:Button id="btnShowHello"
    runat="server"
    OnClick="OnShowHello"
    Text="Clic Aqui" />
    </form>
    </body>
    </html>

    helloworld.aspx.cs

    using System;
    using System.Web;
    using System.Web.UI;
    public partial class helloworld : Page  {
    string message = "Hello World GLIB";
    void Page_Load(object sender, EventArgs e)
    {
    Response.Write("Running ASP.NET 2.0");
    }
    protected void OnShowHello(object o, EventArgs e)
    {
    Response.Write(message);
    }
    }

    Reiniciar Apache 2

    solo resta reiniciar el servidor web Apache, en Ubuntu lo pueden hacer de la siguiente manera:

    sudo /etc/init.d/apache2 restart

    Prueba en navegador web

    y a continuación abrir su navegador web y escribir la siguiente url:

    http://127.0.0.1/test/helloworld.aspx

    et voila!!!

    Reunión GLIB !!Segunda llamada!!

    El próximo día 12 de abril el grupo linuxero del bajío se reunirá en la ciudad de Irapuato en el estado de Guanajuato en punto de las 14:00 p.m.

    La agenda es la siguiente:

    * Comida
    * Temas
    - Shorewall
    - Twitter, monoTwitt, ASP.NET en Apache.
    - Unison, Mysql, RatPoison, Bash y algo mas.

    La dirección es Acero #40 Fracc. La Valenciana, Por Soriana,
    Tel. 46235467 y Cel. 4621266460

    Los esperamos!!!!!

    Diagrama MonoTwitt v0.2

    a groso modo es la idea que voy a seguir para desarrollar monoTwitt versión 0.2.

    System.Xml.Linq funciona perfectamente bien con .Net framework 3.5…esperemos que sea mas madura la API en Mono ya que monoTwitt puede aprovechar como anillo al dedo Linq a Xml, aunque por mientras es suficiente System.Xml.dll.

    monoTwitter works!!!!

    yeahh this is my first monoTwitter version.

    yesterday i was developing a monoTwitter light fresh version

    the features are:

    • only send your updates using your twitter login credentials
    • run on Microsoft Windows and Linux, maybe in mac ..i will need to test
    • uses windows forms api…yeah im sorry.

    in version 0.2 i will add gtk support….so i will maintain two track versions: winforms and gtksharp2

    Downloads : mmm no….not yet !!!
    Some screenshots

    running on Ubuntu Linux

    mt2a.png

    mt3.png

    running on Windows XP SP2

    mt1.png ;) hack and be happy

    NFS (Network File System) en Ubuntu Linux

    Introducción

    NFS es un sistema de archivos de red que proporciona un acceso transparente a archivos residentes en discos remotos.

    Los sistemas de archivos de red son referidos como sistema de archivos distribuidos porque los archivos y directorios que proporcionan acceso pueden estar físicamente en diferentes computadoras.

    El método de comunicación es conocido como RPC el cual usa UDP.

    El servicio de NFS usa el puerto 2049 el cual se puede verificar desde el archivo /etc/services

    Instalacion

    Para instalar NFS , desde synaptic buscar la palabra “nfs”, instalar los paquetes “nfs-common”, nfs-kernel-server”.

    Configuración

    A continuación puede compartir sus directorios usando la herramienta de carpetas compartidas.

    Haga clic en el menú Sistema> Administración> Carpetas Compartidas, y seleccionar el directorio que va compartir en su red Linux y también a que equipos, redes va permitir el acceso, como se muestra en la siguiente figura:

    nfs.jpg

     

    El archivo de configuracion que identifica los directorios que van a ser exportados es:

    /etc/exports

    un ejemplo básico :

    /opt2 10.0.0.23/255.255.0.0(rw,async)

    ejectua el siguiente comando para exportar todos los directorios disponibles:

    $sudo exportfs -av

    El paquete nfs-common proporciona una utilidad llamada showmount la cual se ejecuta sobre NFS para mostrar una lista de directorios exportados por el servidor:

    $showmount –exports 10.0.245.210

    Exportar directorios manualmente

    Para exportar directorios manualmente hay que editar el archivo /etc/exports, en el cual las entradas siguen estas reglas:

    full-path-name-of-exported-directory hosts(mountoptions)
    por ejemplo :
    /home/jacob/nfscompartido 10.0.234.9(rw)
    /opt3 10.0.234.*(ro)
    /archivos 10.0.234.0(rw)

    donde:

    ro - significa solo lectura , rw - lectura y escritura

    Verificar que NFS este en ejecucion

    nfs depende del demonio portmapper, el cual se instala junto con nfs desde synaptic. el demonio es portmap o rpc.portmap, en las mas recientes distribuciones de linux este demonio inicia desde los scripts se arranque del sistema, pero asegúrate que este en ejecución tecleando:

    $ps aux | grep portmap

    Ahora consulta por medio de portmap con el comando:

    $rpcinfo -p

    program vers proto port
    100000 2 tcp 111 portmapper
    100000 2 udp 111 portmapper
    100003 2 udp 2049 nfs
    100003 3 udp 2049 nfs
    100003 4 udp 2049 nfs
    100021 1 udp 32771 nlockmgr
    100021 3 udp 32771 nlockmgr
    100021 4 udp 32771 nlockmgr
    100003 2 tcp 2049 nfs
    100003 3 tcp 2049 nfs
    100003 4 tcp 2049 nfs

    Configuración en el cliente: Montaje de directorios exportados por el servidor

    para montar el directorio que el servidor nfs esta ofreciendo en un equipo cliente, ejecuta el siguiente comando:

    #mount servidor:/opt2 /mnt/directorio

    para desmontar usa:

    #umount /mnt/directorio