Наиболее честным выходом в такой ситуации, на мой взгляд, является "компрессия" ребра, длина которого стала отрицательной. То есть все мутации на нём (если таковые имеются) переносятся в потомковые ветви (в каждую из них), а само ребро ликвидируется.
Если же такая ситуация возникает на дереве часто это хороший признак его неоптимальности (не в смысле парсимонии, но Байеса). То есть может служить фактором отбора среди равнооптимальных деревьев.
Большое спасибо, опробую. Но есть целый класс случаев, когда ввиду каких-то популяционных перепетий от предка отходит две группы потомков: один звездный малого возраста и некоторое количество незвездных, бОльшего возраста. Путем простых манипуляций можно добиться
1) сколь угодно большой разницы в возрасте звездного потомка и его предка
2) нулевой гомоплазии и тем самым отсутствия всяких вариантов.
У меня готовое дерево мтднк где-то на 6500 узлов. В нем подавляющее большинство всего что там есть надежно и никаких вменяемых вариантов как это все переиначить нет и быть не может. Это снипы, здесь иная ситуация чем с микросателлитами когда мы не знаем истины заранее и любой вариант может оказаться в итоге верным. Здесь большая часть всего известна заранее. И вот примерно 1/6 узлов ведет себя гадко, имея возраст больший чем у родителя.
Отчего так происходит? Я думаю,
прежде всего от того что выборка полных сиквенсов мтднк изначально сдвинута. В первую очередь секвенируют разные редкости а от больших кластеров как только топология их становится известна - весьма ограниченное количество образцов. Скажем в гаплогруппе в реальности есть три почти звездных кластера, но мы имеем много сиквенсов только из одного из них, а остальные представлены немногими образцами которые в их текущем составе дают завышенный возраст на дереве и в итоге возраст родителя падает за счет единственной звездной субгаплогруппы.
Вторая причина заключается в распределении самих мутаций: для подсчета возраста выбирается несколько наборов (полный набор, набор в генах и набор синонимических мутаций в белках) причем самым надежным является последний. Но за ним известно гадкое свойство: отношение синонимических и несинонимических мутаций способно к большим прыжкам, есть веточки где большая часть замен синонимическая а есть где наоборот. В итоге возраст глубоких гаплогрупп становится надежнее а мелкие кластеры жутко прыгают по возрасту. Вот я и ищу какой-то относительно простой способ сгладить эти колебания.
Ув. Игорь, правильно ли я понял, что контрактировать нужно подозрительную ветвь размазывая избыток по всем сестрам/племянницам? Каков точный алгоритм?