Si algunos de nuestros foros, manuales, ALDOS, paquetería o proyectos te han resultado de ayuda, apreciaremos mucho nos apoyes con un donativo.

Simulación de Biomoléculas en Python

Examinamos otro caso de éxito, en esta ocasión el que trata del MMTK. Este proyecto, Molecular Modeling Toolkit (MMTK), iniciado por Konrad Hinsen, investigador del Centre Nationale de la Recherche Scientifique (CNRS), consiste en un conjunto de herramientas (toolkit) para modelar y hacer simulación con moléculas.

MMTK está escrito en una mezcla de Python y C. Mientras que C es usado en la parte de bajo nivel de la modelación, la cual es muy costosa en tiempo y requiere de la máxima eficiencia, Python se usa en el control y ejecución de la aplicación a alto nivel.

Desde 1970 existían ya varios paquetes de modelación de moléculas escritos en FORTRAN, pero eran difíciles de usar y sobre todo de extender. Hinsen estaba interesado en la modelación y en el desarrollo de nuevas técnicas de simulación, por lo que era importante que el paquete se pudiera modificar con facilidad.

Con requerimientos contrarios en principio, de un desarrollo rápido junto con gran eficiencia de recursos y velocidad, Hinsen concluyó que sólo una mezcla de un lenguaje para "scripts" y otro compilado muy eficiente podría servir para sus propósitos.

Para la parte de alto nivel, Tcl fue descartado porque no podía manejar las estructuras de datos complejas que requería el proyecto. Se eliminó a Perl por su sintaxis -aunque esta fue una decisión subjetiva personal del autor- y por su soporte para orientación a objetos, el cual está integrado en forma deficiente. Python fue elegido por ser legible, por su soporte a OO, sus librerías (NumPy, la librería de procesamiento numérico) y su integración con lenguajes compilados.

[Ahora Perl cuenta con un nuevo mecanismo de integración para OO más a la altura de los tiempos, aunque de cualquier forma, hablamos de decisiones tomadas en 1996, además de que la sintaxis es la misma hoy que entonces].

Para la parte de bajo nivel, FORTRAN 77 fue eliminado debido a su manejo arcaico de los caracteres, la carencia de manejo de memoria dinámica y problema de portabilidad al interconectarse con lenguajes compilados. Aunque se consideró a C++, finalmente no fué elegido porque en aquélla época todavía había problemas de compatibilidad entre compiladores, además de que las porciones escritas en C eran de tal suerte que se consideró superfluo trabajar con la compleja sintaxis de C++.

El paquete MMTK utiliza tanto NumPy, como LAPACK (el paquete de álgebra lineal originalmente escrito para las computadoras Cray y que hoy es de dominio público) y soporta varios modelos de cómputo paralelo.

En total, MMTK consta de 18,000 líneas de Python y unas 12,000 líneas de C, aproximadamente, que han sido desarrolladas a lo largo de varios años de trabajo de investigación. Como lo expresa su autor, "en el trabajo metodológico, el desarrollo y el tiempo de prueba son críticos, de modo que una idea que puede probarse en una tarde se prueba, mientras que otra que requeriría una semana para ver si funciona normalmente es hecha a un lado". Indudablemente, para este tipo de trabajo Python parece ser ideal.


Atención: Salvo que se indique lo contrario, la licencia del texto de este documento es Creative Commons Reconocimiento 2.5, mediante la cual usted tiene permitido copiar, modificar, comunicar y distribuir el contenido de este texto, de manera total o parcial, y publicarlo o difundirlo en cualquier otro sitio de Internet o medio de comunicaciòn, siempre y cuando incluya o cite (1)el nombre de este sitio de Internet, (2)enlace permanente de este documento, (3)nombre del autor y (4)la misma licencia de distribución.

Opciones: Imprimir | Recomendar | Enlace permanente

Twitter Facebook Google Bookmarks Bitacoras.com Wikio Menéame Technorati Bloglines Digg Yahoo Buzz

Seguimientos (Trackback)

URL de seguimiento para esta entrada:
http://www.alcancelibre.org/trackback.php/20111103202501642
Agregar comentario

Los siguientes comentarios son de la persona que los haya enviado. Este sitio se deslinda de cualquier responsabilidad respecto de las opiniones expresadas por los participantes en nuestros foros y secciones de comentarios, y el hecho de publicar las mismas no significa que se esté de acuerdo con éstas.