Почему Perl так широко используется в биологических исследованиях? [закрытый]
Я работаю в качестве вспомогательного персонала в Институте биологических исследований в качестве студента, и Perl, кажется, используется везде. Не для каждого проекта, но кажется, что больше половины людей здесь есть несколько книг Perl в/на кабинет/рабочий стол.
Почему Perl так много используется в биологии?
12 ответов
Линкольн Штайн выделил некоторые из спасительных достоинств Perl для биоинформатики в своей статье: как Perl спас проект генома человека.
из его анализа:
Я думаю несколько факторов:
Perl замечательно хорош для нарезки, нарезки кубиками, скручивания, отжима, сглаживания, суммирования и другого искажения текста. Хотя биологические науки включают в себя многое в настоящее время большинство первичных данных по-прежнему являются текстовыми: имена клонов, аннотации, комментарии, библиографические ссылки. Даже последовательностей ДНК textlike. Interconverting несовместимых форматов данных, является предметом текста коверканье в сочетании с некоторыми творческими догадками. Мощные операторы сопоставления регулярных выражений Perl и манипуляции строками упрощают эту работу таким образом, что она не может сравниться ни с одним другим современным языком.
Perl прощает. Биологические данные часто неполные поля могут отсутствовать, или поле, которое, как ожидается, будет присутствовать один раз, происходит несколько раз (потому что, например, эксперимент был выполнен в дубликате), или данные были введены вручную и не совсем соответствуют ожидаемому формату. Perl не особенно возражает, если значение пустое или содержит нечетные символы. Регулярные выражения могут быть написаны, чтобы подобрать и исправить множество распространенных ошибок при вводе данных. Конечно, эта гибкость может быть и проклятием. Я больше говорю о проблемы с Perl ниже.
Perl ориентирован на компоненты. Perl поощряет людей писать свое программное обеспечение в небольших модулях, либо используя модули библиотеки Perl, либо с классическим подходом, ориентированным на инструменты Unix. Внешние программы можно легко включить в сценарий Perl используя трубу, системный вызов или гнездо. Динамический загрузчик, введенный с Perl5, позволяет расширить язык Perl с помощью подпрограмм C или сделать все скомпилированные библиотеки доступными для Perl переводчик. В настоящее время предпринимаются усилия по сбору всей мировой информации о биологических данных в набор модулей под названием "bioPerl" (подробно обсуждается в статье, которая будет опубликована позднее в журнале Perl).
Perl легко писать и быстро развиваться. Интерпретатор не требует, чтобы вы объявляли все свои прототипы функций и типы данных заранее, новые переменные возникают по мере необходимости, вызовы неопределенных функций только вызывают ошибка при необходимости функции. Отладчик работает с Emacs и обеспечивает удобный интерактивный стиль развития.
Perl-хороший язык прототипирования. Поскольку Perl быстрый и грязный, часто имеет смысл прототипировать новые алгоритмы в Perl, прежде чем перемещать их на быстрый скомпилированный язык. Иногда оказывается, что Perl достаточно быстр, поэтому алгоритм не нужно переносить; чаще можно написать небольшое ядро алгоритм в C, скомпилируйте его как динамически загруженный модуль или внешний исполняемый файл и оставьте остальную часть приложения в Perl (например, сложное приложение для отображения генома, реализованное таким образом, см. http://waldo.wi.mit.edu/ftp/distribution/software/rhmapper/).
Perl является хорошим языком для веб-сценариев CGI и растет по мере того, как все больше лабораторий обращаются к Интернету для публикации своих данных.
реальный ответ, вероятно, имеет меньшее отношение к Perl, чем вы думаете. Многое из того, что происходит, - случайности истории. В то время, когда Perl был довольно популярен, Java становилась все более популярной, не так много людей обращали внимание на Python, а Ruby только начинал.
люди, которым нужно было выполнить работу, использовали Perl и сделали некоторые библиотеки в Perl, а другие люди начали использовать эти библиотеки. Как только люди начинают использовать то, что умеренно полезные для них, они, как правило, не переключаются (экономисты называют эти "затраты на переключение"). Оттуда еще больше людей начинают использовать его, потому что многие другие люди используют его.
та же эволюция может не произойти сегодня. Я бы сказал, что Perl, Python и Ruby полностью адекватны и подходят для этой задачи. Все, что mobrule цитаты из Линкольна Штайна может применяться к любому из трех сегодня. Если бы все должны были начать с нуля сегодня, любой из них языки могут быть теми, которыми пользуются все.
Я заметил, из моей собственной клиентской базы (очень маленький и нерепрезентативный образец биотехнологии), что люди, продвигающие программирование для многих биологических материалов, по-видимому, были, по крайней мере, частично занятыми сисадминами, которые поддерживали ученых. Ученые беспокоились о науке и делали некоторые легкие программы, но люди ИТ-поддержки делали много тяжелой работы для ненаучных частей. Perl очень хорошо позиционируется как инструмент sysadmin, так как это лента интернета.
вероятно, потому, что Perl хорошо манипулирует струнами, и многие исследования в генетике включают манипуляцию veeery long "ACTGCATG..." струнные. Просто догадываюсь...
Я использую много Perl для работы с качественными и количественными данными в социальных исследованиях. С точки зрения быстрого выполнения (в основном с текстом), поиска библиотек на CPAN (хорошее центральное расположение) и, как правило, просто быстрого выполнения, его нельзя превзойти.
Perl также отличный клей, поэтому, если у вас есть некоторые инструментальные записи, и вам нужно приклеить их к процедурам анализа данных, то Perl-ваш язык.
Perl, похоже, является языком выбора для биоинформатики - есть даже название O'Reilly на эту тему:начало Perl для биоинформатики.
Perl очень мощный, когда дело доходит до текста, и он присутствует почти в каждом дистрибутиве Linux/Unix. В биоинформатике не только данные последовательности очень легко манипулировать с Perl, но и большинство алгоритмов биоинформатики будут выводить какие-то текстовые результаты.
тогда самые большие центры биоинформатики, такие как EBI был отличный парень, Эван Бирни, который возглавлял BioPerl. В этой библиотеке есть много парсеров для все виды популярных результатов биоинформатики алгоритмов, а также для манипулирования различными форматами последовательности, используемых в основных базах данных последовательности.
В настоящее время, однако, Perl не единственный язык, используемый биоинформатиками: наряду с данными последовательности, лаборатории производят все больше и больше различных типов данных, и другие языки все чаще используются в этих областях.
на R язык программирования статистики например, широко использован для статистически анализ данных microarray и qPCR (среди прочих). Опять же, почему мы используем его так много? Потому что у него отличные библиотеки для такого рода данных (см. программе bioconductor).
теперь, когда дело доходит до веб-разработки, CGI это не совсем современное состояние сегодня, но люди, которые знают Perl, могут придерживаться его. В моей компании, хотя она больше не используется...
надеюсь, это поможет.
Perl в основном заставляет очень короткие циклы развития. Это тот вид развития, который позволяет делать вещи.
этого достаточно, чтобы перевесить недостатки Perl.
Биоинформатика занимается в основном разбором текста, а Perl-лучший язык программирования для работы, поскольку он предназначен для разбора строк. Как говорится в книге О'Рейли (начало Perl для биоинформатики), "с высокоразвитой способностью [Perl]обнаруживать закономерности в данных Perl стал одним из самых популярных языков для анализа биологических данных."
Это, кажется, довольно полный ответ. Однако, возможно, чего-то не хватает, так это того, что большинство биологов (до недавнего времени, возможно) вообще не имеют большого опыта программирования. Кривая обучения для Perl много ниже, чем для скомпилированных языков (например, C или Java), и все же Perl по-прежнему предоставляет массу функций, когда дело доходит до обработки текста. И что с того, что на пробежку уходит больше времени? Биологи могут!--1-->наверняка справиться с этим. Лабораторные эксперименты обычно берут один час или больше, поэтому ожидание нескольких дополнительных минут для завершения обработки данных не убьет их!
просто обратите внимание, что я говорю здесь о биологах, которые программируют по необходимости. Я понимаю, что есть некоторые очень опытные программисты и компьютерщики, которые также используют Perl, и эти комментарии могут не относиться к ним.
люди пропустили DBI, интерфейс абстрактной базы данных Perl, который упрощает работу с биоинформатическими базами данных.
есть еще шутка угол. Вы можете написать что-то, чтобы переформатировать данные в одной строке в Perl и просто использовать -pe
флаг для встраивания в командную строку. Многие люди используют на awk и sed переехал в Perl. Даже в полных программах файловый ввод-вывод невероятно прост и быстр в написании, и преобразование текста выразительно на высоком уровне по сравнению с любым инженерным языком вокруг. Люди, которые используют Java или даже Python для одноразового преобразования текста, просто слишком ленивы, чтобы изучать другой язык. Java особенно сильно зависит от JVM внедрение и его производительность ввода-вывода.
по крайней мере, вы знаете, как быстро или медленно Perl будет везде, немного медленнее, чем C I/O. не учитесь grep, вырезать, sed или на awk; просто изучите Perl как инструмент командной строки, даже если вы не производите большие программы с ним. Что касается CGI, Perl имеет множество лучших веб-фреймворков, таких как катализатор и Mojolicious, но mindshare определенно пришел от CGI и биоинформатики, являющейся одним из самых ранних тяжелых пользователей Интернета.
Perl очень легко учиться по сравнению с другими языками. Она может полностью использовать биологические данные, которые становятся большими данными. Он может манипулировать большими данными и выполнять хорошо для обработки данных и всех типов программирования ДНК, автоматизация биологии стала легкой из-за таких языков, как Perl, Python и Рубин. Это очень легко для тех, кто знает биологию, но не знает, как программировать это на других языках программирования.
лично, и я знаю, что это будет встречаться со мной, но это потому, что я сначала узнал Perl. Меня попросили взять Фаста файлы и смешивать с другими файлами FASTA. Perl был рекомендуемым инструментом, когда я спрашивал.
в то время я прошел несколько классов информатики, но я не очень хорошо знал Программирование.
Perl оказалось довольно легко узнать. Однажды я получил регулярные выражения в моей голове я разбирал и делал новые файлы FASTA в течение дня.
Как было предложено, я не был программистом. Я был выпускником биохимического факультета, работал в лаборатории и допустил ошибку, установив сервер Linux, где все могли меня видеть. Это было в те дни, когда это был проект на весь день.
в любом случае, Perl стал моим goto для всего, что мне нужно было сделать в лаборатории. Это было потрясающе, легко использовать, супер гибкий, другие ребята Perl в других лабораториях мы очень похожи на меня.
Итак, вырезать он короткий, Perl легко учиться, гибкий и прощающий, и он сделал то, что мне нужно.
Как только я действительно попал в биоинформатику, я взял R, Python и даже Java. Perl не очень хорошо помогает создавать поддерживаемый код, в основном потому, что он настолько гибкий. Теперь я просто использую язык для работы, но Perl по-прежнему один из моих любимых языков, как первый поцелуй или что-то в этом роде.
повторю, большинство биоинформатики люди научились кодировать только kluging вещи вместе, и большую часть времени вы просто пытаетесь получить ответ на основные следователь (PI), поэтому вы не можете тратить дни на разработку кода. Perl превосходен в получении ответа, он, вероятно, не будет работать во второй раз, и вы ничего не поймете в своем собственном коде, если увидите его через шесть месяцев; но если вам что-то нужно сейчас, то это хороший выбор, хотя я в основном использую Python сейчас.
Я надеюсь, что это даст вам ответ от кого-то, кто его жил.