Краткое описание алгоритма программы gene3GL Алгоритм основан на идее ограничения возможного множества клад в искомом дереве. Это дерево ищется среди таких деревьев, у которых все клады принадлежат некоторому заранее построенному набору множеств Р. Из способа построения набора Р вытекает важное свойство каждого его элемента: его можно разбить на какие-то две части из Р, каждую часть в свою очередь можно разбить на две части из Р и так далее до достижения одноэлементных множеств, представляющих последовательности. Нами предложены такие два основных показателя и автоматический способ подбора их пороговых значений, что набор P, состоящий из всех множеств, у которых эти показатели не превышают пороговых значений и удовлетворяющих вышесформулированному свойству, как правило, с одной стороны не слишком велик, а с другой стороны – содержит множество всех данных последовательностей. Эти показатели отражают степень жесткости требований, накладываемых на множества, включаемые в P, как на возможные клады. После построения набора Р мы для каждого столбца s исходного выравнивания методом динамического программирования строим дерево Ts максимального правдоподобия, т.е. такое дерево вместе с расстановкой символов (т.е. букв аминокислот или делеций) по внутренним вершинам, что все его клады принадлежат P и сумма по всем ребрам сходств символов на концах ребра максимальна (сходство вычисляется по матрице Blossum). Чтобы обеспечить группировку одинаково помеченных листьев в клады применялась следующая модификация. Сходство символа b с b1 и с b2 вычислялось с учетом простейшей оценки на длину ветвей (b-b 1) и (b-b 2). Эта длина считалась равной разности высот вершин b и, соответственно, b1 или b2 (высота вершины в дереве – максимальное число ребер на пути из этой вершины в лист). Если b не равно b 1, сходство b с b1 умножалось на n/(n–1+d), где d – длина ребра (b-b1) (аналогично для b2). Если b равно b1, сходство не модифицировалось. Такая модификация функционала делала выгодным расстановку пар различающихся букв на концах более длинных ребер, что способствовало группировке одинаково помеченных листьев в одной кладе. Заключительный этап алгоритма: сборка итогового дерева индуктивной эвристикой. Перебираем множества из P по возрастанию мощности и для каждого текущего M перебираем его возможные разбиения на две части. Для каждого разбиения M на M1 и M2 по индукции уже известны деревья T(M1) и T(M 2) для M1 и M2, их объединением под общий корень получается возможное дерево T(M) для M. Оно оценивается построением наилучшей расстановки букв по внутренним вершинам для каждого столбца выравнивания (с учетом описанной в предыдущем абзаце модификации) и сложением полученных показателей по всем столбцам. Выбирается разбиение множества M с наилучшим качеством, оно дает дерево T(M). Чтобы T(M) зависело не только от самого M, но и от топологии на его дополнении, применялся следующий прием. Для каждого дерева Ts (т.е. дерева максимального правдоподобия для одного столбца) строились оптимальные расстановки букв по всем столбцам. Если для расстановки по i-му столбцу корень поддерева клады M в Ts помечался буквой x, то в алгоритме сборки дерево клады M строилось при условии, что по i-му столбцу его корень помечен буквой x. При этом если для одной пары (M,i) возникало несколько кандидатов на пометку корня (т.е. при разных s), то преимущество давалось тому, который сопровождался разметкой дерева Ts наилучшего качества, а если не было ни одного кандидата, брался лучший из всевозможных по разметке дерева T(M).