Есть ли библиотека похожая на PyCogent, но на Java (или Scala)? - PullRequest
3 голосов
/ 18 января 2011

Я пишу симулятор биологической эволюции. В настоящее время весь мой код написан на Python. По большей части это здорово, и все работает достаточно хорошо. Однако в этом процессе есть два этапа, которые занимают много времени и которые я хотел бы переписать в Scala.

Первая проблемная область - эволюция последовательности. Представьте, что вам дано филогенетическое дерево, связывающее большой набор белков. Длина каждой ветви представляет собой эволюционное расстояние между родителем и ребенком. Корень дерева засевается единственной последовательностью, а затем используется эволюционная модель (например, http://en.wikipedia.org/wiki/Models_of_DNA_evolution), чтобы развить последовательность вдоль древовидной структуры; с учетом длины ветвей. PyCogent требуется много времени для выполнения этот шаг, и я считаю, что разумная реализация Java / Scala будет значительно быстрее. Знаете ли вы о каких-либо библиотеках, которые реализуют этот тип функциональности. Я хочу написать приложение в Scala, поэтому из-за функциональной совместимости любая библиотека Java будет достаточно.

Вторая проблемная область - сравнение сгенерированных последовательностей. Проблема заключается в том, что, учитывая набор последовательностей для белков в ряде различных существующих видов, пытаются использовать последовательность для восстановления филогенетического дерева, связывающего виды. Эта проблема по своей природе требует вычислительных затрат, потому что нужно в основном выполнить попарное сравнение между всеми последовательностями в существующих видах. Однако и здесь я чувствую, что реализация Java / Scala будет работать значительно быстрее, чем реализация Python, если только не из-за, к сожалению, медленной скорости зацикливания в Python. Эту часть я мог бы написать с нуля легче, чем часть эволюции последовательности, но я бы также хотел использовать для нее библиотеку, если есть хорошая.

Спасибо, Роб

1 Ответ

0 голосов
/ 18 января 2011

Что касается второй проблемы, почему бы не использовать существующую программу для сравнения последовательностей и определения филогенетических деревьев, например RAxML или MrBayes , и вызывать ее? Максимальное правдоподобие и байесовский умозаключение являются очень сложными моделями для этих проблем, и их использование кажется гораздо лучшей идеей, чем их самостоятельная реализация - что-то вроде максимальной парсомии или связующего дерева, которое, вероятно, можно было бы написать с нуля для такого проекта, недостаточно для эволюционного анализа. Если вы просто не хотите использовать очень быструю и грязную топологию (а деревья, выведенные через MP или NJ, действительно часто бывают ложными), где вы, вероятно, можете использовать что-то вроде this

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...