Введение
BioJava – это проект с открытым исходным кодом, предназначенный для предоставления Java-инструментов для обработки биологических данных. BioJava представляет собой набор библиотечных функций, написанных на языке программирования Java, для манипулирования последовательностями, структурами белков, парсерами файлов, обеспечения совместимости с архитектурой Common Object Request Broker Architecture (CORBA), системой распределенных аннотаций (DAS), доступа к AceDB, динамического программирования и простых статистических процедур. BioJava поддерживает широкий спектр данных, начиная от последовательностей ДНК и белков и заканчивая уровнем 3D-структур белков. Библиотеки BioJava полезны для автоматизации многих повседневных и рутинных биоинформатических задач, таких как разбор файла Protein Data Bank (PDB), взаимодействие с Jmol и многое другое. Примеры других проектов, относящихся к Bio* помимо BioJava, включают BioPython, BioPerl, BioRuby, EMBOSS и т.д. Первая статья о BioJava была опубликована в октябре 2012 года. В ней подробно описаны модули, функциональные возможности и назначение BioJava. По состоянию на ноябрь 2018 года Google Scholar насчитывает более 130 цитирований. Последняя статья о BioJava была написана в феврале 2017 года. В ней подробно описан новый инструмент под названием BioJava ModFinder, который можно использовать для идентификации и последующего сопоставления модификаций белков с 3D-структурами в Protein Data Bank (PBD). Пакет также был интегрирован с веб-приложением RCSB PDB и добавил аннотации модификаций белков к диаграмме последовательности и отображению структуры. С помощью BioJava ModFinder было идентифицировано более 30 000 структур с модификациями белков, которые можно найти на веб-сайте RCSB PDB. В 2008 году была опубликована первая заметка о применении BioJava. Проект был перемещен в отдельный репозиторий, 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 потоков. Также были внесены существенные изменения в модуль biojava structure. Кроме того, предыдущие модели данных для макромолекулярных структур были адаптированы для более точного представления модели данных mmCIF. Это был первый релиз за более чем два года. Другие улучшения включают оптимизацию модуля biojava structure для улучшения обнаружения симметрии и добавление поддержки форматов MMTF. Другие общие улучшения включают обновления Javadoc, версии зависимостей, а также все тесты теперь используют Junit4. Релиз содержит 1170 коммитов от 19 участников.
Основной модуль
Этот модуль предоставляет Java-классы для моделирования аминокислотных или нуклеотидных последовательностей. Классы были разработаны так, чтобы их названия были понятны и привычны биологам, а также чтобы предоставить четкое представление о процессе перехода от последовательности генов к последовательности белков для компьютерных ученых и программистов. Ключевое отличие между устаревшим проектом BioJava и BioJava3 заключается в том, как фреймворк был спроектирован с использованием новых возможностей Java. Последовательность определяется как универсальный интерфейс, позволяющий другим модулям создавать любые инструменты, работающие со всеми типами последовательностей. Для удобства биологов определены специальные классы для распространенных последовательностей, таких как ДНК и белки. Механизм трансляции эффективно использует эту разработку, обеспечивая преобразования между ДНК, РНК и аминокислотными последовательностями. Этот механизм может учитывать такие детали, как выбор таблицы кодонов, преобразование стартовых кодонов в метионин, удаление стоп-кодонов, указание рамки считывания и обработка неоднозначных последовательностей. Особое внимание уделено проектированию хранения последовательностей для минимизации занимаемого места. Использование специальных шаблонов проектирования, таких как шаблон Proxy, позволило разработчикам создать фреймворк, в котором последовательности могут храниться в памяти, извлекаться по запросу из веб-сервиса, например UniProt, или считываться из файла FASTA по мере необходимости. Последние два подхода позволяют экономить память, не загружая данные последовательности до тех пор, пока они не будут использованы в приложении. Эта концепция может быть расширена для работы с очень большими геномными наборами данных, такими как NCBI GenBank или проприетарные базы данных.
Модуль выравнивания
Этот модуль содержит несколько классов и методов, позволяющих пользователям выполнять попарное и множественное выравнивание последовательностей. Последовательности могут быть выровнены как в однопоточном, так и в многопоточном режиме. BioJava реализует алгоритм Нидлмана — Вунша для оптимального глобального выравнивания и алгоритм Смита — Уотермана для локального выравнивания. Результаты как локального, так и глобального выравнивания доступны в стандартных форматах. Помимо этих двух алгоритмов, имеется реализация алгоритма Гуан — Убербахера, который очень эффективно выполняет глобальное выравнивание последовательностей, поскольку использует только линейную память. Для множественного выравнивания последовательностей любой из вышеописанных методов может быть использован для последовательного выполнения множественного выравнивания.
Модуль ModFinder
Пример приложения, использующего модуль ModFinder и модуль структуры белка. Модификации белка отображаются на последовательности и структуре ферродоксина I (PDB ID 1GAO). На последовательности белка показаны два возможных железо-серных кластера (3Fe–4S (F3S): оранжевые треугольники/линии; 4Fe–4S (SF4): фиолетовые ромбы/линии). Кластер 4Fe–4S отображается в окне структуры Jmol над отображением последовательности. Модуль ModFinder предоставляет новые методы для идентификации и классификации модификаций белка в трехмерных структурах белка. Более 400 различных типов модификаций белков, таких как фосфорилирование, гликозилирование, дисульфидные связи, хелатирование металлов и т. д., были собраны и курированы на основе аннотаций в PSI MOD, RESID и RCSB PDB. Модуль также предоставляет API для обнаружения пре-, ко- и посттрансляционных модификаций белка в структурах белка. Этот модуль также может идентифицировать фосфорилирование и выводить все предварительно загруженные модификации из структуры.
The ModFinder module provides new methods to identify and classify protein modifications in protein 3D structures. Over 400 different types of protein modifications such as phosphorylation, glycosylation, disulfide bonds metal chelation etc. were collected and curated based on annotations in PSI MOD, RESID and RCSB PDB. The module also provides an API for detecting pre , co , and post translational protein modifications within protein structures. This module can also identify phosphorylation and print all pre loaded modifications from a structure.
Модуль доступа к веб-сервису
В соответствии с текущими тенденциями в биоинформатике, веб-инструменты становятся все более популярными. Модуль веб-сервисов обеспечивает доступ к биоинформатическим сервисам посредством протоколов REST. В настоящее время реализованы два сервиса: NCBI Blast через Blast URLAPI (ранее известный как QBlast) и веб-сервис HMMER.