fbpx

Las habilidades de programación bioinformática se están convirtiendo en una necesidad en muchas facetas de la biología y la medicina, debido en parte a la explosión continua de la agregación de datos biológicos y la complejidad y escala de las preguntas que ahora se abordan a través de la bioinformática moderna. A continuación te compartimos los principios clave de la programación bioinformática efectiva.

Crea tu caja de herramientas tecnológicas

Dada la diversidad y la naturaleza compleja de los problemas en biología, medicina y bioinformática, es necesario poder abordar cada problema con un conocimiento integral de las herramientas computacionales disponibles, de modo que se puedan seleccionar las mejores herramientas para el problema en cuestión. Las herramientas más fundamentales y versátiles de tu caja de herramientas tecnológicas son los lenguajes de programación.

La mayoría de los lenguajes de programación son capaces de realizar cualquier cantidad de hazañas computacionales, algunos son más aptos para tareas particulares que otros. Por ejemplo, el lenguaje R es casi incomparable en sus capacidades de cálculo estadístico en el campo científico. Dado el aprendizaje y la práctica necesarios para convertirse en un usuario eficaz de un lenguaje de programación, es previsible conocer más de un lenguaje de programación. El dominio del lenguaje de programación permite una programación más eficiente y menos tiempo dedicado a leer manuales y cometer errores de principiante.

La importancia de las habilidades UNIX

Aunque decidas no tener un sistema operativo (SO) basado en UNIX, el conocimiento de UNIX es tremendamente útil en bioinformática. Aunque la plataforma Windows es perfectamente adecuada para la bioinformática, la simple verdad es que la mayoría de la computación bioinformática ocurre en sistemas informáticos basados ​​en UNIX. Una parte de esta circunstancia puede atribuirse a la tradición de la informática científica en UNIX y a la disponibilidad de muchos sistemas operativos gratuitos basados ​​en UNIX de código abierto, como Linux.

Una de las razones más convincentes para aprender UNIX es evitar la programación por completo aprovechando el entorno de shell UNIX. Los sistemas UNIX brindan acceso a una amplia gama de utilidades especializadas que son ejecutadas por un intérprete de comandos conocido como shell UNIX. Si bien estos comandos a menudo se limitan a funciones muy especializadas (por ejemplo, el comando “cat” simplemente concatena e imprime archivos), el operador de “pipe” UNIX, “|”, hace posible crear tuberías de software ad hoc conectando la salida de un comando a la entrada de otro.

Muchas preguntas biológicas se evalúan encadenando herramientas bioinformáticas especializadas en una pipeline de análisis (por ejemplo, búsqueda BLAST → Alineación de secuencias múltiples → Análisis filogenético) utilizando un lenguaje de scripting. En muchos casos, es posible evitar tareas de programación que consumen mucho tiempo simplemente encadenando una serie de comandos UNIX.

Mantener tu código fuente

Quizás las únicas certezas en la programación de computadoras son que (i) existe una alta probabilidad de que introduzca nuevos errores cada vez que modificas tu código y (ii) el hardware de tu computadora acumula una mayor probabilidad previa de falla durante su vida útil. A pesar de esto, muchos programadores mantienen su código fuente esparcido por sus unidades de disco en forma de archivos. Los sistemas de control de versiones (VCS) realizan un seguimiento de los cambios en los archivos de código fuente a lo largo del tiempo ofrecen la capacidad de revertir y fusionar cambios.

Los VCS de código abierto como CVS, Subversion y Git son ​​fáciles de obtener, configurar y usar y están disponibles gratuitamente. También existen servicios en línea gratuitos como GitHub que ofrecen capacidades VCS estándar con muchas características adicionales. El uso de VCS también se puede expandir más allá del código fuente y, a menudo, se utilizan para rastrear y administrar múltiples versiones de subvenciones y manuscritos. La experiencia con dichos sistemas servirá para potenciar una carrera personal y profesional en bioinformática.

Mantener los proyectos documentados y manejables

Es difícil producir código limpio, sin errores y reutilizable sin una buena higiene de programación. Esto incluye el uso de una convención de nomenclatura de variables clara y coherente, la documentación de su código y, para proyectos suficientemente grandes y complejos, la realización de pruebas y la creación de su código de forma regular. Desafortunadamente, estas actividades a menudo son tediosas. No obstante, existen una gran cantidad de herramientas disponibles cuyo único propósito es automatizar estos procesos.

Una buena documentación es clave para entender bien el código. La mejor manera de adquirir el hábito de una buena documentación de código es automatizarla. Herramientas como Doxygen, JavaDoc, PyDoc y otras permiten documentar código y generar fácilmente documentación de código formalizado. Una buena denominación de variables también es un aspecto importante de una buena documentación.

Comprender las capacidades del hardware

Aunque recomendamos el uso de lenguajes de secuencias de comandos de alto nivel para muchos aspectos de la bioinformática, sigue siendo importante comprender cómo se pueden aprovechar varias características del hardware para mejorar y acelerar sustancialmente la bioinformática. Muchas innovaciones recientes en los diseños de hardware de computadora nacieron de las necesidades de los juegos de computadora en 3D, donde las necesidades matemáticas y computacionales a menudo están a la par con las de la bioinformática. Por lo tanto, los bioinformáticos pueden y han reutilizado estas tecnologías para mejorar y acelerar una amplia gama de tareas bioinformáticas.

Referencias

Dudley, J., & Butte, A. (2009). A Quick Guide for Developing Effective Bioinformatics Programming Skills.