BioPerl[1][2] — большая коллекция модулей Perl, которые облегчают разработку скриптов Perl для задач биоинформатики. BioPerl сыграл важную роль в Проекте «Геном человека»[3].

BioPerl
Логотип программы BioPerl
Тип Биоинформатика
Написана на Perl
Операционные системы Linux, Mac OS X, Microsoft Windows
Первый выпуск 11 июня 2002 (2002-06-11)
Последняя версия 1.7.8 (3 февраля 2021; 3 года назад (2021-02-03))
Репозиторий github.com/bioperl/biope…
Лицензия GNU General Public License и Artistic License
Сайт bioperl.org, metacpan.org/pod/BioPerl

BioPerl написан на языке программирования Perl, благодаря этому поддерживается кросплатформенность готовых решений (Linux, большинство UNIX-подобных систем, Mac OS X, Microsoft Windows). Разрабатывается и распространяется свободно и открыто. Обладает активным международным сообществом разработчиков и учёных.

История создания править

BioPerl — активный программный проект Программного обеспечения с открытым исходным кодом, который поддерживается Open Bioinformatics Foundation. Первый набор кодов Perl для BioPerl был создан Tim Hubbard[en] и Джонгом Бхаком в Medical Research Council (United Kingdom)[en] (MRC) центре Кембриджа, где было выполнено первое секвенирование генома Фредом Сэнгером. Центр MRC был одним из центров и мест рождения современной биоинформатики, поскольку он имел большое количество последовательностей ДНК и трехмерных белковых структур.

Tim Hubbard[en] использовал библиотеку Perl th_lib.pl, которая содержала множество полезных подпрограмм Perl для биоинформатики. Джонг Бхак, первый аспирант Tim Hubbard[en], создал скрипт jong_lib.pl. Бхак объединил две библиотеки подпрограмм Perl в Bio.pl.

Название BioPerl было придумано совместно Бхаком и Стивеном Бреннером в Центре белковой инженерии (CPE). В 1995 году Бреннер организовал BioPerl секцию на конференции Intelligent Systems for Molecular Biology (ISMB), которая прошла в Кембридже. В ближайшие месяцы у BioPerl появились пользователи, в их числе Георг Фуеллен, который организовал учебный курс в Германии. Коллеги и студенты Фуеллена значительно расширили BioPerl.

Далее BioPerl был расширен другими пользователями, среди которых Стив Червиц (активно разрабатывал коды Perl для своей базы данных генома дрожжей). Значительное расширение произошло, когда к команде разработчиков присоединился студент из Кембриджа Ewan Birney[en].

Первый стабильный выпуск состоялся 11 июня 2002 года. Самый последний стабильный (с точки зрения API) выпуск — 1.7.8 от 03 февраля 2021 года. Также периодически выпускаются выпуски для разработчиков. Версия серии 1.7.x считается самой стабильной (с точки зрения ошибок) версией BioPerl и рекомендуется для повседневного использования.

Влияние на проект «Геном человека» править

За время своего существования Проект «Геном человека» столкнулся с несколькими проблемами. Некоторые из этих проблем были решены, когда многие лаборатории геномики начали использовать Perl. Одной из таких проблем был процесс анализа всех последовательностей ДНК. Некоторые лаборатории создавали большие монолитные системы со сложными реляционными базами данных, отладка и внедрение которых занимали целую вечность, и их превзошли новые технологии. Другие лаборатории научились создавать модульные слабосвязанные системы, части которых можно было менять местами при появлении новых технологий. Многие из первоначальных результатов всех лабораторий были неоднозначными. В конце концов было обнаружено, что многие из шагов могут быть реализованы в виде слабо связанных программ, запускаемых с помощью сценария оболочки Perl.

Еще одна проблема, которая была исправлена, это — обмен данными. В каждой лаборатории обычно были разные программы, которые они запускали со своими скриптами, что приводило к нескольким преобразованиям при сравнении результатов. Чтобы исправить это, лаборатории коллективно начали использовать супернабор данных. Один сценарий использовался для преобразования из супернабора в набор каждой лаборатории, а другой — для обратного преобразования. Это минимизировало количество необходимых скриптов и обмен данными стал упрощен с Perl.

Особенности и примеры править

Чтобы воспользоваться преимуществами BioPerl, пользователю необходимо базовое понимание языка программирования Perl, включая понимание того, как использовать perl-ссылки, модули, объекты и методы Perl.

BioPerl не включает в себя готовые программы, а предоставляет универсальные программные модули для многих типовых задач биоинформатики. Это облегчает написание скриптов и конвейеров для манипулирования с последовательностями нуклеотидов и аминокислот, доступа к базам данных, с использованием различных форматов хранения биологических данных, выполнения и анализа результатов в разнообразных программах биоинформатики, например, BLAST, ClustalW, T-COFFEE[en] (tcoffee.), HMMER и других.

В целом модули BioPerl позволяют:

Пример доступа к GenBank (удалённая база данных) для получения последовательности:

#!/usr/bin/perl -w
use Bio::DB::GenBank;

my $db_obj = Bio::DB::GenBank->new; # Этот объект умеет разговаривать с GenBank

my $seq_obj;
$seq_obj = $db_obj->get_Seq_by_acc('J00522'); # используя Accession Number
$seq_obj = $db_obj->get_Seq_by_version('J00522.1'); # Accession.version
$seq_obj = $db_obj->get_Seq_by_gi('25829'); # GI Number

print $seq_obj->display_id(), "\n"; # вывести человеко-читаемый идентификатор последовательности 
print $seq_obj->desc(), "\n"; # вывести описание последовательности
print $seq_obj->seq(), "\n"; # вывести последовательность

use Bio::SeqIO;

my $seqOut = new Bio::SeqIO(-format => 'genbank');
$seqOut->write_seq( $seq_obj );
  • Преобразование форматов биологических записей баз данных и файлов.

Пример кода для преобразования форматов

use Bio::SeqIO;

my $usage = "all2y.pl informat outfile outfileformat";
my $informat = shift or die $usage;
my $outfile = shift or die $usage;
my $outformat = shift or die $usage;

my $seqin = Bio::SeqIO->new( -fh => *STDIN, -format => $informat, );
my $seqout = Bio::SeqIO->new( -file => ">$outfile", -format => $outformat, );

while (my $inseq = $seqin->next_seq)
{
   $seqout->write_seq($inseq);
}
  • Анализ отдельных последовательностей.

Сбор статистики для заданной последовательности

use Bio::Tools::SeqStats;
my $seq_stats = Bio::Tools::SeqStats->new($seqobj);

# Возвращает ссылку на двухэлементный массив, который содержит наибольшую нижнюю границу и наименьшую верхнюю границу молекулярной массы последовательности
my $weight = $seq_stats->get_mol_wt();

my $monomer_ref = $seq_stats->count_monomers(); # количество мономеров (нуклеотидов)

# Для нуклеотидной последовательности
my $codon_ref = $seq_stats->count_codons(); # количество кодонов

Применение править

Помимо непосредственного использования конечными пользователями[4], BioPerl также является базой для широкого спектра биоинформатических инструментов, в том числе:

  • Вырожденный праймер дизайн[10]
  • Запросы к общедоступным базам данных[11]
  • Текущая сравнительная таблица[12]

Новые инструменты и алгоритмы от внешних разработчиков часто интегрируются непосредственно в сам BioPerl:

  • Работа с филогенетическими деревьями и вложенными таксонами[13]

Преимущества править

В настоящее время, BioPerl содержит около 1000 модулей. Является одним из первых репозиториев биологических программных модулей, который значительно повысил удобство и скорость решения задач биоинформатики. В BioPerl очень простые в установке Perl-модули, а также гибкий глобальный репозиторий. BioPerl использует хорошие тестовые модули для большого разнообразия процессов.

Одной из сильных сторон BioPerl является то, что он позволяет извлекать последовательности из всех видов источников: файлов, удаленных биологических баз данных (GenBank, SwissProt/UniProt, GenPept, EMBL, SeqHound, Entrez Gene и RefSeq), локальных баз данных, независимо от их формата.

Недостатки править

Есть много способов использовать BioPerl, от простого написания сценариев до очень сложного объектно-ориентированного программирования. Иногда это делает язык Perl трудным для понимания. Из большого количества модулей BioPerl, некоторые не всегда работают так, как ожидается.

Подобные библиотеки на других языках программирования править

Существуют следующие подобные BioPerl библиотеки биоинформатики, которые реализованы на других языках программирования, как часть Open Bioinformatics Foundation:

См. также править

Литература править

  • Peter Schattner. BioPerl Tutorial. — 2011.
  • Порозов Ю. Б. BioPERL: учебное пособие. — СПб.: НИУ ИТМО, 2012. — 62 с.
  • Kaladhar Dsvgk. Basics in PERL and BioPERL: A Programming Guide. — GRIN Verlag, 2014. — 80 с. — ISBN 978-3-656-59172-6.
  • James D. Tisdall. Beginning Perl for Bioinformatics. — O’Reilly, 2001. — 368 с. — ISBN 978-0-596-00080-6.
  • James D. Tisdall. Mastering Perl for Bioinformatics. — O’Reilly, 2003. — 504 с. — ISBN 978-0-596-00307-4.
  • Ларри Уолл, Том Кристиансен, Джон Орвант. Программирование на Perl = Programming Perl. — М.: O’Reilly, «Символ», 2008. — 1145 с. — 4500 экз. — ISBN 5-93286-020-0.
  • Рэндал Л. Шварц, Том Феникс, Брайан Д. Фой. Изучаем Perl. — М.: O’Reilly, «Символ», 2009. — С. 377. — ISBN 978-5-93286-154-7.
  • Рэндал Л. Шварц, Брайан Д. Фой и Том Феникс. Perl: изучаем глубже. — М.: O’Reilly, «Символ», 2007. — С. 320. — ISBN 978-5-93286-093-9.
  • Кристиансен, Торкингтон. Perl. Сборник рецептов. Для профессионалов = Perl Cookbook. — М.: O’Reilly, «Питер», 2004. — 928 с. — ISBN 5-94723-855-1.

Примечания править

  1. Stajich, J. E.; Block, D.; Boulez, K.; Brenner, S. [in английский]; Chervitz, S.; Dagdigian, C.; Fuellen, G.; Gilbert, J.; Korf, I.; Lapp, H.; Lehväslaiho, H.; Matsalla, C.; Mungall, C. J.; Osborne, B. I.; Pocock, M. R.; Schattner, P.; Senger, M.; Stein, L. D. [in английский]; Stupka, E.; Wilkinson, M. D.; Birney, E. [in английский] (2002). "The BioPerl Toolkit: Perl Modules for the Life Sciences". Genome Research. 12 (10): 1611—1618. doi:10.1101/gr.361602. PMC 187536. PMID 12368254.
  2. Archived copy. Дата обращения: 21 января 2007. Архивировано 2 февраля 2007 года.
  3. Lincoln Stein [in английский] (1996). "How Perl saved the human genome project". The Perl Journal. 1 (2). Архивировано 2 февраля 2007. Дата обращения: 25 февраля 2009.
  4. Methods for identifying and mapping recent segmental and gene duplications in eukaryotic genomes // Gene Mapping, Discovery, and Expression. — Totowa, N.J. : Humana Press, 2006. — Vol. 338. — P. 9–20. — ISBN 978-1-59745-097-3. — doi:10.1385/1-59745-097-9:9.
  5. Pan, X.; Stein, L. [in английский]; Brendel, V. (2005). "SynBrowse: A synteny browser for comparative sequence analysis". Bioinformatics. 21 (17): 3461—3468. doi:10.1093/bioinformatics/bti555. PMID 15994196.
  6. Shah, S. P.; McVicker, G. P.; MacKworth, A. K.; Rogic, S.; Ouellette, B. F. F. (2003). "GeneComber: Combining outputs of gene prediction programs for improved results". Bioinformatics. 19 (10): 1296—1297. doi:10.1093/bioinformatics/btg139. PMID 12835277.
  7. Lenhard, B.; Wasserman, W. W. (2002). "TFBS: Computational framework for transcription factor binding site analysis". Bioinformatics. 18 (8): 1135—1136. doi:10.1093/bioinformatics/18.8.1135. PMID 12176838.
  8. Huang, J.; Gutteridge, A.; Honda, W.; Kanehisa, M. (2006). "MIMOX: A web tool for phage display based epitope mapping". BMC Bioinformatics. 7: 451. doi:10.1186/1471-2105-7-451. PMC 1618411. PMID 17038191.{{cite journal}}: Википедия:Обслуживание CS1 (не помеченный открытым DOI) (ссылка)
  9. Catanho, M.; Mascarenhas, D.; Degrave, W.; De Miranda, A. B. ?L. (2006). "BioParser". Applied Bioinformatics. 5 (1): 49—53. doi:10.2165/00822942-200605010-00007. PMID 16539538.
  10. Wei, X.; Kuhn, D. N.; Narasimhan, G. (2003). "Degenerate primer design via clustering". Proceedings. IEEE Computer Society Bioinformatics Conference. 2: 75—83. PMID 16452781.
  11. Croce, O.; Lamarre, M. L.; Christen, R. (2006). "Querying the public databases for sequences using complex keywords contained in the feature lines". BMC Bioinformatics. 7: 45. doi:10.1186/1471-2105-7-45. PMC 1403806. PMID 16441875.{{cite journal}}: Википедия:Обслуживание CS1 (не помеченный открытым DOI) (ссылка)
  12. Landsteiner, B. R.; Olson, M. R.; Rutherford, R. (2005). "Current Comparative Table (CCT) automates customized searches of dynamic biological databases". Nucleic Acids Research. 33 (Web Server issue): W770—W773. doi:10.1093/nar/gki432. PMC 1160193. PMID 15980582.
  13. Llabrés, M.; Rocha, J.; Rosselló, F.; Valiente, G. (2006). "On the Ancestral Compatibility of Two Phylogenetic Trees with Nested Taxa". Journal of Mathematical Biology. 53 (3): 340—364. arXiv:cs/0505086. doi:10.1007/s00285-006-0011-4. PMID 16823581.
  14. Pampanwar, V.; Engler, F.; Hatfield, J.; Blundy, S.; Gupta, G.; Soderlund, C. (2005). "FPC Web Tools for Rice, Maize, and Distribution". Plant Physiology. 138 (1): 116—126. doi:10.1104/pp.104.056291. PMC 1104167. PMID 15888684.