¿Por qué Perl se usa tan extensamente en la investigación de biología?
bioinformatics biometrics (12)
Trabajo como personal de apoyo en un instituto de investigación de biología como estudiante, y parece que Perl se usa en todas partes. No para cada proyecto, pero parece que más de la mitad de las personas aquí tienen algunos libros Perl en su oficina / escritorio.
¿Por qué Perl se utiliza tanto en biología?
Esta parece ser una respuesta bastante completa. Sin embargo, quizás una cosa que falta es que la mayoría de los biólogos (hasta hace poco, tal vez) no tienen mucha experiencia en programación. La curva de aprendizaje de Perl es mucho más baja que la de los lenguajes compilados (como C o Java) y, sin embargo, Perl aún ofrece muchas funciones cuando se trata de procesamiento de texto. Entonces, ¿qué pasa si lleva más tiempo correr? Los biólogos definitivamente pueden manejar eso. Los experimentos de laboratorio suelen durar una hora o más, por lo que esperar unos minutos más para que el procesamiento de datos termine no los va a matar.
Solo tenga en cuenta que estoy hablando de biólogos que programan por necesidad. Entiendo que hay algunos programadores y científicos informáticos muy capacitados que también usan Perl, y es posible que estos comentarios no se apliquen a ellos.
La bioinformática se ocupa principalmente del análisis de texto y Perl es el mejor lenguaje de programación para el trabajo, ya que está hecho para el análisis sintáctico de cadenas. Como el libro de O''Reilly (Beginning Perl for Bioinformatics) dice que "con la capacidad altamente desarrollada de [Perl] para detectar patrones en los datos, Perl se ha convertido en uno de los idiomas más populares para el análisis de datos biológicos".
La gente se olvidó de DBI , la interfaz de base de datos abstracta de Perl que hace que sea realmente fácil trabajar con bases de datos bioinformáticas.
También está el ángulo de one-liner . Puede escribir algo para reformatear datos en una sola línea en Perl y simplemente use el indicador -pe
para insertarlo en la línea de comando. Muchas personas que usan AWK y sed mudaron a Perl. Incluso en programas completos, la E / S de archivos es increíblemente fácil y rápida de escribir, y la transformación de texto es expresiva a un alto nivel en comparación con cualquier lenguaje de ingeniería. Las personas que usan Java o incluso Python para la transformación de texto única son demasiado perezosas para aprender otro idioma. Java especialmente tiene una alta dependencia de la implementación de JVM y su rendimiento de E / S.
Al menos, usted sabe qué tan rápido o lento será Perl en todas partes, un poco más lento que CI / O. No aprenda grep , cut , sed o AWK ; simplemente aprenda Perl como su herramienta de línea de comandos, incluso si no produce programas grandes con ella. Con respecto a CGI, Perl tiene muchos mejores frameworks web como Catalyst y Mojolicious , pero el interés en la información definitivamente proviene de CGI y la bioinformática es uno de los primeros usuarios pesados de Internet.
La respuesta real probablemente tiene menos que ver con Perl de lo que piensas. Muchas de las cosas que suceden son accidentes de la historia. En ese momento, cuando Perl era bastante popular, Java se estaba volviendo más popular, no mucha gente estaba prestando atención a Python, y Ruby recién comenzaba.
Las personas que necesitaban terminar el trabajo usaron Perl e hicieron algunas bibliotecas en Perl, y otras personas comenzaron a usar esas bibliotecas. Una vez que la gente comienza a usar algo que es moderadamente útil para ellos, tienden a no cambiar (los economistas los llaman "costos de cambio"). A partir de ahí, aún más personas comienzan a usarlo porque muchas otras personas lo están usando.
La misma evolución podría no suceder hoy. Diría que Perl, Python y Ruby son completamente adecuados y están a la altura de la tarea. Todas las cosas que mobrule cita de Lincoln Stein podrían aplicarse a cualquiera de las tres de hoy. Si todos tuvieran que empezar desde cero hoy, cualquiera de esos idiomas podría ser el que todos usen.
Sin embargo, desde mi propia base de clientes (una muestra muy pequeña y no representativa de biotecnología), me di cuenta de que la gente que impulsaba la programación de muchos de los aspectos biológicos parecía ser al menos administradores de tiempo parcial que apoyaban a los científicos. Los científicos se preocuparon por la ciencia e hicieron algo de programación ligera, pero la gente de soporte de TI estaba haciendo mucho trabajo pesado para las partes no científicas. Perl está muy bien posicionado como una herramienta sysadmin ya que es la cinta aislante de Internet.
Lincoln Stein destacó algunas de las gracias salvadoras de Perl para la bioinformática en su artículo: Cómo Perl Salvó el Proyecto del Genoma Humano .
De su análisis:
Creo que varios factores son responsables:
Perl es notablemente bueno para cortar, cortar en cubitos, retorcer, retorcer, suavizar, resumir y, de otro modo, manipular texto. Aunque las ciencias biológicas sí implican una gran cantidad de análisis numérico ahora, la mayoría de los datos primarios siguen siendo texto: nombres de clones, anotaciones, comentarios, referencias bibliográficas. Incluso las secuencias de ADN son textuales. Interconvertir formatos de datos incompatibles es una cuestión de manipulación de texto combinada con algunas conjeturas creativas. Los poderosos operadores de correspondencia de expresiones regulares y manipulación de cadenas de Perl simplifican este trabajo de una manera que no es igualada por ningún otro lenguaje moderno.
Perl es indulgente. Los datos biológicos a menudo son incompletos, los campos pueden faltar, o un campo que se espera que esté presente una vez que ocurra varias veces (porque, por ejemplo, un experimento se ejecutó por duplicado), o los datos se ingresaron a mano y no funcionan del todo adaptarse al formato esperado. A Perl no le importa particularmente si un valor está vacío o contiene caracteres impares. Se pueden escribir expresiones regulares para recoger y corregir una variedad de errores comunes en la entrada de datos. Por supuesto, esta flexibilidad también puede ser una maldición. Hablo más sobre los problemas con Perl a continuación.
Perl está orientado a componentes. Perl alienta a las personas a escribir su software en pequeños módulos, ya sea utilizando módulos de biblioteca Perl o con el enfoque clásico orientado a herramientas de Unix. Los programas externos se pueden incorporar fácilmente en una secuencia de comandos de Perl mediante un conducto, una llamada al sistema o un socket. El cargador dinámico presentado con Perl5 permite a las personas extender el lenguaje Perl con rutinas C o hacer que bibliotecas compiladas completas estén disponibles para el intérprete Perl. Actualmente se está haciendo un esfuerzo para reunir toda la sabiduría recopilada en todo el mundo sobre los datos biológicos en un conjunto de módulos llamado "bioPerl" (discutido detalladamente en un artículo que se publicará más adelante en Perl Journal).
Perl es fácil de escribir y rápido de desarrollar. El intérprete no requiere que declare todos sus prototipos de funciones y tipos de datos de antemano, surgen nuevas variables según sea necesario, las llamadas a funciones indefinidas solo causan un error cuando la función es necesario. El depurador funciona bien con Emacs y permite un cómodo estilo de desarrollo interactivo.
Perl es un buen lenguaje de creación de prototipos. Debido a que Perl es rápido y sucio, a menudo tiene sentido prototipar nuevos algoritmos en Perl antes de moverlos a un lenguaje rápido compilado. A veces resulta que Perl es lo suficientemente rápido para que el algoritmo no tenga que ser portado; con mayor frecuencia uno puede escribir un pequeño núcleo del algoritmo en C, compilarlo como un módulo cargado dinámicamente o ejecutable externo, y dejar el resto de la aplicación en Perl (para un ejemplo de una aplicación compleja de mapeo de genoma implementada de esta manera, consulte http://waldo.wi.mit.edu/ftp/distribution/software/rhmapper/ ).
Perl es un buen lenguaje para las secuencias de comandos CGI Web, y está adquiriendo más importancia a medida que más laboratorios recurren a la Web para publicar sus datos.
Perl básicamente fuerza ciclos de desarrollo muy cortos. Ese es el tipo de desarrollo que hace las cosas.
Es suficiente para compensar las desventajas de Perl.
Perl es muy fácil de aprender en comparación con otros idiomas. Puede explotar completamente los datos biológicos que se están convirtiendo en los grandes datos. Puede manipular Big Data y funcionar bien para la conservación de datos de manipulación y todo tipo de programación de ADN, la automatización de la biología se ha vuelto fácil debido a idiomas como Perl, Python y Ruby . Es muy fácil para quienes saben biología, pero no saben cómo programar eso en otros lenguajes de programación.
Perl es muy poderoso cuando se trata de texto y está presente en casi todas las distribuciones de Linux / Unix. En bioinformática, no solo los datos de secuencia son muy fáciles de manipular con Perl, sino que la mayoría de los algoritmos de bionformática producirán algún tipo de texto.
Entonces, los centros de bioinformática más grandes como el EBI tenían a ese gran tipo, Ewan Birney, que dirigía el proyecto BioPerl . Esa biblioteca tiene muchos analizadores sintácticos para cada tipo de algoritmo bioinformático popular y para manipular los diferentes formatos de secuencia utilizados en las principales bases de datos de secuencias.
Hoy en día, sin embargo, Perl no es el único lenguaje utilizado por los bioinformáticos: junto con los datos de secuencia, los laboratorios producen cada vez más tipos diferentes de datos y otros idiomas se utilizan con más frecuencia en esas áreas.
El lenguaje de programación de estadísticas R , por ejemplo, se utiliza ampliamente para el análisis estadístico de microarrays y datos de qPCR (entre otros). De nuevo, ¿por qué lo estamos usando tanto? Porque tiene grandes bibliotecas para ese tipo de datos (ver proyecto de bioconductor ).
Ahora, cuando se trata de desarrollo web, CGI no es realmente lo último en tecnología hoy en día, pero las personas que conocen Perl pueden apegarse a él. En mi compañía, aunque ya no se usa ...
Espero que esto ayude.
Perl parece ser el lenguaje de elección para la bioinformática; incluso hay un título de O''Reilly sobre este tema: Beginning Perl for Bioinformatics .
Personalmente, y sé que esto me va a salir, pero es porque primero aprendí Perl. Me estaban pidiendo que tomara archivos FASTA y los mezclara con otros archivos FASTA. Perl fue la herramienta recomendada cuando pregunté por ahí.
En ese momento había pasado por algunas clases de informática, pero realmente no sabía programar tan bien.
Perl demostró ser bastante fácil de aprender. Una vez que tuve expresiones regulares en mi cabeza estaba analizando y haciendo nuevos archivos FASTA dentro de un día.
Como se ha sugerido, yo no era un programador. Era un graduado de bioquímica que trabajaba en un laboratorio y cometí el error de instalar un servidor Linux donde todos pudieran verme. Esto fue en el día en que era un proyecto de todo el día.
De todos modos, Perl se convirtió en mi destino para todo lo que tenía que hacer en el laboratorio. Fue increíble, fácil de usar, súper flexible, otros chicos de Perl en otros laboratorios nos parecemos mucho a nosotros.
Por lo tanto, para abreviar, Perl es fácil de aprender, flexible y tolerante, e hizo lo que necesitaba.
Una vez que realmente me metí en la bioinformática recogí R, Python e incluso Java. Perl no es tan bueno para ayudar a crear código de mantenimiento, sobre todo porque es muy flexible. Ahora solo uso el idioma para el trabajo, pero Perl sigue siendo uno de mis idiomas favoritos, como un primer beso o algo así.
Para reiterar, la mayoría de la gente de la bioinformática aprendió la codificación al juntar cosas, y la mayoría de las veces solo está tratando de obtener una respuesta para el investigador principal (PI), por lo que no puede dedicar días al diseño del código. Perl es excelente solo para obtener una respuesta, probablemente no funcionará por segunda vez, y no comprenderá nada en su propio código si lo ve seis meses después; PERO, si necesita algo ahora, entonces es una buena opción, aunque ahora uso Python principalmente.
Espero que eso te dé una respuesta de alguien que lo vivió.
Probablemente porque Perl es bueno en la manipulación de cadenas, y mucha investigación en genética implica la manipulación de cadenas muy largas "ACTGCATG ...". Solo adivinando...
Uso mucho Perl para manejar datos cualitativos y cuantitativos en investigación de ciencias sociales. En términos de hacer las cosas (en gran parte con texto) rápidamente, encontrar bibliotecas en CPAN (buena ubicación central) y, en general, solo hacer las cosas rápidamente, no se puede superar.
Perl también es excelente, así que si tienes algunos registros instrumentales y necesitas pegarlos a las rutinas de análisis de datos, entonces Perl es tu lenguaje.