Автор (ы) | Андреас Прлич |
---|---|
Разработчик (и) | Амр АЛХОССАРИ, Андреас Прлиц, Дмитрий Гузенко, Ханнес Брандштеттер-Мюллер, Томас Даун, Майкл Л. Хойер, Петер Трошин, Цзяньёнг Гао, Алейкс Лафита, Питер Роуз, Спенсер Бливен |
Первый выпуск | 2002; 18 лет назад (2002 г.) |
Стабильный выпуск | 5.2.1 / 5 февраля 2019 г.; 20 месяцев назад (05.02.2019) |
Репозиторий | github.com / biojava |
Написано на | Java |
Platform | Веб-браузер с Java SE |
Доступен на | английском языке |
Тип | Биоинформатика |
Лицензия | Lesser GPL 2.1 |
Веб-сайт | biojava. org |
BioJava - это проект с открытым исходным кодом, посвященный предоставлению Java инструментов для обработки биологических данных. BioJava - это набор библиотечных функций, написанных на языке программирования Java для управления последовательностями, белковыми структурами, анализаторами файлов, совместимостью с общей архитектурой брокера запросов объектов (CORBA), (DAS), доступ к AceDB, динамическое программирование и простые статистические процедуры. BioJava поддерживает огромный диапазон данных, начиная от последовательностей ДНК и белков до уровня трехмерных белковых структур. Библиотеки BioJava полезны для автоматизации множества повседневных биоинформатических задач, таких как синтаксический анализ файла Protein Data Bank (PDB), взаимодействие с Jmol и многие другие. Этот интерфейс прикладного программирования (API) предоставляет различные анализаторы файлов, модели данных и алгоритмы для облегчения работы со стандартными форматами данных и обеспечивает быструю разработку и анализ приложений.
Дополнительные проекты от BioJava включают rcsb-sequenceviewer, biojava-http, biojava-spark и rcsb-viewers.
BioJava предоставляет программные модули для многих типичных задач программирования биоинформатики. К ним относятся:
Проект BioJava вырос из работы Томаса Дауна и Мэтью Покока по созданию API для упрощения разработки инструментов биоинформатики на основе Java. BioJava - это активный проект с открытым исходным кодом, который разрабатывался более 12 лет более чем 60 разработчиками. BioJava - один из многих проектов Bio *, направленных на уменьшение дублирования кода. Примеры таких проектов, которые подпадают под Bio * помимо BioJava: BioPython, BioPerl, BioRuby, EMBOSS и т. Д.
В октябре 2012 г. была опубликована первая статья по BioJava. В этом документе подробно описаны модули, функции и назначение BioJava.
По состоянию на ноябрь 2018 года Google Scholar насчитал более 130 цитирований.
Самая последняя статья по BioJava была написана в феврале 2017 года. В этой статье подробно описан новый инструмент под названием BioJava-ModFinder. Этот инструмент можно использовать для идентификации и последующего картирования модификаций белка в 3D в банке данных по белкам (PBD ). Пакет также был интегрирован с веб-приложением RCSB PDB и добавил аннотации модификации белка к диаграмме последовательности и отображению структуры. С помощью BioJava-ModFinder было идентифицировано более 30 000 структур с модификациями белков, которые можно найти на веб-сайте RCSB PDB.
В 2008 году было опубликовано первое примечание по применению BioJava. Он был перенесен из исходного репозитория CVS в Git hub в апреле 2013 года. Проект был перемещен в отдельный репозиторий, BioJava-legacy, и все еще поддерживается для незначительных изменений и исправлений ошибок.
Версия 3 была выпущена в декабре 2010 года. Это было серьезное обновление предыдущих версий. Целью этого выпуска было переписать BioJava так, чтобы его можно было разделить на небольшие, повторно используемые компоненты. Это позволило разработчикам легче вносить свой вклад и уменьшило зависимости. Новый подход, представленный в BioJava 3, был смоделирован после выпуска Apache Commons.
версии 4 в январе 2015 года. Эта версия принесла множество новых функций и улучшений в пакеты biojava-core, biojava-structure, biojava-structure- gui, biojava-phylo, а также другие. BioJava 4.2.0 был первым выпуском, который был доступен с использованием Maven из Maven Central.
Версия 5 была выпущена в марте 2018 года. Это является важной вехой для проекта. BioJava 5.0.0 - это первый выпуск, основанный на Java 8, который вводит использование лямбда-функций и потоковых вызовов API. Также произошли серьезные изменения в модуле структуры биоявы. Кроме того, предыдущие модели данных для макромолекулярных структур были адаптированы для более точного представления модели данных mmCIF. Это был первый релиз более чем за два года. Некоторые из других улучшений включают оптимизацию в модуле структуры биоявы для улучшения обнаружения симметрии и добавленную поддержку форматов MMTF. Другие общие улучшения включают обновления Javadoc, версии зависимостей и все тесты теперь Junit4. Релиз содержит 1170 коммитов от 19 участников.
В течение 2014-2015 гг. Были переписаны большие части исходной кодовой базы. BioJava 3 является явным отходом от серии версии 1. Теперь он состоит из нескольких независимых модулей, созданных с помощью инструмента автоматизации под названием Apache Maven. Эти модули предоставляют современные инструменты для сравнения структуры белков, попарного и множественного выравнивания последовательностей, работы с последовательностями ДНК и белков, анализа свойств аминокислот, обнаружения модификаций белков, прогнозирования неупорядоченных областей в белках и парсеров для общих файлов. форматы с использованием биологически значимой модели данных. Исходный код был перемещен в отдельный унаследованный проект BioJava, который все еще доступен для обратной совместимости.
BioJava 5 представила новые функции для двух модулей: biojava-alignment и biojava-structure.
В следующих разделах будут описаны несколько новых модулей и выделены некоторые новые функции, включенные в последнюю версию BioJava.
Этот модуль предоставляет классы Java для моделирования аминокислотных или нуклеотидных последовательностей. Классы были разработаны таким образом, чтобы имена были знакомы и имели смысл для биологов, а также обеспечивали конкретное представление этапов перехода от последовательности гена к последовательности белка для компьютерных ученых и программистов.
Основное изменение между унаследованным проектом BioJava и BioJava3 заключается в способе разработки фреймворка для использования новых на тот момент инноваций в Java. Последовательность определяется как общий интерфейс, позволяющий остальным модулям создавать любую утилиту, которая работает со всеми последовательностями. Определенные классы для общих последовательностей, таких как ДНК и белки, были определены с целью повышения удобства использования для биологов. Механизм трансляции действительно использует эту работу, позволяя преобразовывать последовательности ДНК, РНК и аминокислот. Этот механизм может обрабатывать такие детали, как выбор таблицы кодонов, преобразование стартовых кодонов в метионин, обрезка стоп-кодонов, определение рамки считывания и обработка неоднозначных последовательностей.
Особое внимание было уделено разработке хранилища последовательностей, чтобы минимизировать потребность в пространстве. Специальные шаблоны проектирования, такие как шаблон прокси, позволили разработчикам создать структуру так, что последовательности могут храниться в памяти, извлекаться по запросу из веб-службы, такой как UniProt, или считываться из файла FASTA по мере необходимости. Последние два подхода экономят память, не загружая данные последовательности до тех пор, пока на них нет ссылки в приложении. Эту концепцию можно расширить для обработки очень больших наборов геномных данных, таких как NCBI GenBank или собственная база данных.
Модули структуры белка предоставляют инструменты для представления и управления трехмерными биомолекулярными структурами. Они сосредоточены на сравнении структуры белков.
Следующие алгоритмы были реализованы и включены в BioJava.
Эти алгоритмы используются для обеспечения инструмента сравнения белков банка данных белка RCSB (PDB), а также для систематического сравнения всех белков в PDB на еженедельной основе.
Парсеры для файловых форматов PDB и mmCIF позволяют загружать структуру данные в модель данных многократного использования. Эта функция используется проектом SIFTS для сопоставления последовательностей UniProt и структур PDB. Информация из RCSB PDB может быть получена динамически без необходимости вручную загружать данные. Для визуализации предоставляется интерфейс для средства трехмерного просмотра Jmol.
Этот модуль ориентирован на создание объектов последовательности генов из основного модуля. Это реализуется за счет поддержки анализа следующих популярных стандартных форматов файлов, созданных приложениями для прогнозирования генов с открытым исходным кодом:
Затем объекты последовательности генов записываются в формате GFF3 и импортируются в GMOD. Эти форматы файлов четко определены, но то, что записывается в файл, очень гибкое.
Для обеспечения поддержки ввода-вывода для нескольких распространенных вариантов формата файла FASTQ из секвенсоров следующего поколения предоставляется отдельный модуль секвенирования. Примеры использования этого модуля см. По этой ссылке.
Этот модуль содержит несколько классов и методов, которые позволяют пользователям выполнять парное и множественное выравнивание последовательностей. Последовательности можно выравнивать как в однопоточном, так и в многопоточном режиме. BioJava реализует алгоритм Нидлмана-Вунша для оптимального глобального выравнивания и алгоритм Смита и Уотермана для локального выравнивания. Результаты локальных и глобальных выравниваний доступны в стандартных форматах. В дополнение к этим двум алгоритмам существует реализация алгоритма Гуана-Убербахера, который очень эффективно выполняет глобальное выравнивание последовательностей, поскольку использует только линейную память.
Для выравнивания множественных последовательностей любой из описанных выше способов может использоваться для постепенного выполнения множественного выравнивания последовательностей.
Модуль ModFinder предоставляет новые методы для идентификации и классификации модификаций белка в трехмерных структурах белка. Более 400 различных типов модификаций белков, таких как фосфорилирование, гликозилирование, хелатирование дисульфидных связей с металлами и т. Д. были собраны и обработаны на основе аннотаций в PSI-MOD, RESID и RCSB PDB. Модуль также предоставляет API для обнаружения пре-, ко- и посттрансляционных модификаций белка в белковых структурах. Этот модуль также может идентифицировать фосфорилирование и распечатывать все предварительно загруженные модификации структуры.
Этот модуль пытается предоставить точные физико-химические свойства белков. С помощью этого модуля можно рассчитать следующие свойства:
В этот модуль включены точные молекулярные массы распространенных изотопно меченных аминокислот. Также существует гибкость для определения новых молекул аминокислот с их молекулярными массами с использованием простых файлов конфигурации XML. Это может быть полезно, когда точная масса имеет большое значение, например, в экспериментах по масс-спектрометрии.
Цель этого модуля - предоставить пользователям способы поиска нарушений в молекулах белка. BioJava включает Java-реализацию предсказателя RONN. BioJava 3.0.5 использует поддержку многопоточности Java для повышения производительности до 3,2 раза на современной четырехъядерной машине по сравнению с унаследованной реализацией C.
Есть два способа использования этого модуля:
Некоторые функции этого модуля включают:
В соответствии с текущими тенденциями в биоинформатике, веб-инструменты становятся все более популярными. Модуль веб-сервисов обеспечивает доступ к биоинформатическим сервисам с использованием протоколов REST. В настоящее время реализованы две службы: NCBI Blast через Blast URLAPI (ранее известный как QBlast) и веб-служба HMMER.
Потребность в специализированном программном обеспечении в области биоинформатикой занимались несколько групп и отдельных лиц. Подобно BioJava, проекты программного обеспечения с открытым исходным кодом, такие как BioPerl, BioPython и BioRuby, предоставляют наборы инструментов с множеством функций, которые упростить создание настраиваемых конвейеров или анализа.
Судя по названиям, в упомянутых выше проектах используются разные языки программирования. Все эти API-интерфейсы предлагают аналогичные инструменты, поэтому на каких критериях следует основывать свой выбор? Для программистов, знающих только один из этих языков, выбор очевиден. Однако для разностороннего биоинформатика, знающего все эти языки и желающего выбрать лучший язык для работы, выбор может быть сделан на основе следующих рекомендаций, представленных в обзоре программного обеспечения, сделанном с помощью наборов инструментов Bio *.
В общем, для небольших программ (<500 lines) that will be used by only an individual or small group, it is hard to beat Perl и BioPerl. Эти ограничения, вероятно, покрывают потребности 90% личного программирования биоинформатики.
Для для начинающих, а также для написания более крупных программ в области биологии, особенно тех, которые будут совместно использоваться и поддерживаться другими, ясность и краткость Python делают его очень привлекательным.
Для тех, кто может склоняться к сделав карьеру в области биоинформатики и желающие выучить только один язык, Java имеет самую широкую поддержку общего программирования, очень хорошую поддержку в области Bio с помощью BioJava, и теперь она де-факто является языком бизнеса (новый COBOL, к лучшему или к худшему).
Помимо этих проектов Bio *, существует еще один проект под названием STRAP, который использует Java и d преследует аналогичные цели. Набор инструментов STRAP, аналогичный BioJava, также представляет собой набор инструментов Java для разработки программ и сценариев биоинформатики. Сходства и различия между BioJava и STRAP заключаются в следующем:
Сходства
Различия
В следующих проектах используется BioJava.