АвторТема: yImputer - Web-приложение для предсказания STR-маркеров  (Прочитано 3322 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Valery

  • Сообщений: 10107
  • Страна: 00
  • Рейтинг +1380/-7
  • Ultimate Matriarchy
да, ты верно сказал
возрастное у меня (не, ничо не критиковал, тк все прекрасно, только молодость вспомнил)

Онлайн Farroukh

  • Maternal Y-DNA: R1b-BY124371
  • ...
  • Сообщений: 17194
  • Страна: az
  • Рейтинг +5967/-17
  • Paternal Mt-DNA: M9a1b1
    • Azerbaijan DNA Project
  • Y-ДНК: E-Y37518
  • мтДНК: F2f1
Daemon2017 - последний свободный криэйтор Молгена. ("Творцы нам на х... не нужны, нам нужны криэйторы" (С) Generation P)

Офф. Валер, MURKA заброшена с тех самых времён?

Оффлайн Srkz

  • Сообщений: 8530
  • Страна: ru
  • Рейтинг +4863/-3
  • Y-ДНК: N-L1025 Y64023
  • мтДНК: U4a1-a C16134T
Условно, это можно было бы назвать микро-импутацией, т.е. мы берем 67 маркеров и пытаемся предсказать наиболее предсказуемый 68-й маркер с помощью какого-либо алгоритма (можно использовать как те же методы, что и в макро-импутации - поиск по древу/N-ближайших соседей, так и методы, ищущие нелинейные связи между маркерами, т.е. названные Вами "сцепки" - я пошел как раз по второму пути, хотя и 1-й, с применением ближайших соседей, работает отлично). Когда 68-й маркер предсказан, мы берем 68 маркеров и пытаемся предсказать следующий по предсказуемости 69-й маркер и т.д. до заполнения всего 111-маркерного гаплотипа.
Вот, а если стр-маркеры мутируют независимо друг от друга, откуда могут взяться эти нелинейные связи? Из наследования, если у человека случилась мутация x в маркере n, то это новое значение оказывается сцеплено с его гаплотипом. Далее у одного из его потомков случилась мутация y в маркере m, и это значение оказывается сцеплено с предковой мутацией x в маркере n (ну и с другими маркерами гаплотипа тоже, конечно). То есть, получаем в неявном виде нахождение дерева.

Daemon2017 - плюсы, респект и рахмат за креативность в этой области!
Заклёвывать критикой - это и возрастное, и общесоветское, а тут ещё они и совместились в одной точке :)

Продолжайте создавать!
(Это многим лучше, чем в миллионный раз рассказывать как заказать киты в обход санкций, почему у меня на моих 33 сМ видно 567788 финнов и т. п. и пр. х.)
Ну креатив это прекрасно, кто бы спорил  :D

Оффлайн Valery

  • Сообщений: 10107
  • Страна: 00
  • Рейтинг +1380/-7
  • Ultimate Matriarchy
Daemon2017 - последний свободный криэйтор Молгена. ("Творцы нам на х... не нужны, нам нужны криэйторы" (С) Generation P)

Офф. Валер, MURKA заброшена с тех самых времён?

как библиотека - не заброшена, развивается постоянно
как нечто-для-пользователя - некоторый таймаут

Оффлайн AVBaz

  • Сообщений: 171
  • Страна: ru
  • Рейтинг +125/-0
  • Y-ДНК: R1a-Y35 (YP582+, YP1079+)
Не совсем понятен смысл предсказания Y-111 по Y-67. Какой практический смысл предсказывать дополнительные 44 маркера (111-67=44)? Мне кажется, что предсказание значений этих маркеров само по себе никому не интнресно. Предсказание основано на информации, содержащейся в Y-67 и очевидно, что новой информации об образце на основе предсказания мы не можем получить. Это будет гипотеза, не более. Тогда зачем городить весь этот огород? Предсказывать гаплогруппу и сравнивать образцы можно и на основе  Y67.


Оффлайн Semargl

  • "El sueño de la razón produce monstruos" ©
  • Модератор
  • *****
  • Сообщений: 6009
  • Страна: ru
  • Рейтинг +4220/-5
  • www.semargl.me
    • www.semargl.me
  • Y-ДНК: R1a [CTS3402+]
  • мтДНК: U4a2g
берем весь доступный гаплотип и, с помощью поиска по древу или N-ближайших соседей, находим его филогенетическую родню, после чего берем от нее недостающие маркеры.

Если место на дереве известно точно, то это стандартная процедура, называется "малой задачей филогенетики", или просто labelling. Недостающие признаки помечаются как missing states (на письме "?") и запускается лейблинг. Его проводят по-разному в зависимости от метода, есть парсимонный и макс. правдоподобный лейблинг. В общем случае число возможных оптимальных лейблингов дерева экспоненциально зависит и от числа признаков (как бы необходимое зло, тк признаки независимы), и от числа таксонов (а вот это уже печально).

Парсимонный лейблинг имеет долгую историю, для метрики самого общего вида алгоритм описал Санкофф еще в 1971г. Для STR обычно используется метрика Вагнера ( тупо: dist(14,17)=3 ), для нее есть чуть более быстрые способы лейблинга и несколько упрощенные способы как "найти все оптимальные лейблы". Набор таких оптимальных значений для узла (внутреннего либо помеченного ? исходного) всегда является промежутком, есть специальный термин - интервал Фарриса. Эти алгоритмы сложились еще в 1980е гг, до эпохи массового типирования STR. Их отточили на признаках более классической природы, вроде длины хвоста  ;D

YFull использует для предикции аллелей STR собственную версию парсимонного лейблинга (и, как мне помнится по описанию Вадима), аналог интервалов Фарриса.
Жирный плюс) Читал твой пост, думал про импутацию недостающих STR... Перебирал в памяти  методы ACCTRAN/DELTRAN/Вагнера и тп. И пришла идея, как улучшить предикцию по готовому STR дереву с топологией и лейблиногом всех промежуточных узлов. Ведь из-за гомоплазии позиционирование (методом минимальной дистанции) стороннего короткого гаплотипа на таком дереве может быть проблематично и мы можем иметь несколько вероятных положений для него на этом дереве. Используя сравнение среднего количества мутаций от общего узла до листьев и от общего узла до искомого гаплотипа можно отбросить некоторые варианты или вывести процент их вероятности.

Для импутации, как мне кажется, можно заменить недостающие значения значениями ближайшего вышестоящего узла, что по понятным причинам не совсем корректно, и чем старше ветвь, тем корректность уменьшается. Но восстановление пути мутаций для отсутствующих STR ниже заданного узла ведь тоже имеет высокую спекулятивность?) Хотя ты как-то делал это в Мурке. Может есть реальная возможность заполнить недостающие STR наиболее вероятными значениями? :) Создав все возможные варианты топологии и провести повторный лейблинг, выбирая оптимальный? Но тогда это очень много вариантов надо проверить...

Интересная тема)

Оффлайн Semargl

  • "El sueño de la razón produce monstruos" ©
  • Модератор
  • *****
  • Сообщений: 6009
  • Страна: ru
  • Рейтинг +4220/-5
  • www.semargl.me
    • www.semargl.me
  • Y-ДНК: R1a [CTS3402+]
  • мтДНК: U4a2g
Не совсем понятен смысл предсказания Y-111 по Y-67. Какой практический смысл предсказывать дополнительные 44 маркера (111-67=44)? Мне кажется, что предсказание значений этих маркеров само по себе никому не интнресно. Предсказание основано на информации, содержащейся в Y-67 и очевидно, что новой информации об образце на основе предсказания мы не можем получить. Это будет гипотеза, не более. Тогда зачем городить весь этот огород? Предсказывать гаплогруппу и сравнивать образцы можно и на основе  Y67.
В принципе верно, ведь увеличение количества маркеров используется для улучшения предсказания субклада, а не наоборот. Практическая ценность может быть только в поиске матчей по доступным базам данных и выявления тех, кого можно протестировать более глубоко. Но вот насколько точны будут такие матчи?

Оффлайн Valery

  • Сообщений: 10107
  • Страна: 00
  • Рейтинг +1380/-7
  • Ultimate Matriarchy
Создав все возможные варианты топологии и провести повторный лейблинг, выбирая оптимальный? Но тогда это очень много вариантов надо проверить...

Наибольшая неопределенность именно от разных вариантов дерева будет, ведь ты сам говоришь, что не обязан знать истинное дерево. У нового чела могут быть все снипы, скажем VCF от FT и нет STR, тогда есть отличное дерево; но может быть куда хуже - 30 STR и пара снипов так себе глубины, и дерева значит нет. Поскольку мы решаем амбициозную задачу, то принимаем такие условия. Но если речь о вашем клиенте и его STR, то очевидно снипы и дерево есть всегда.

Если дерево фиксировано, то очень много оптимальных реконструкций аллелей STR у нас будет только для всех сразу внутренних узлов / листиков без аллеля ("?"). Для одного искомого узла при Вагнере оптимальным набором аллелей будет всегда интервал значений. Дерево для простоты лучше бинаризовать, по барабану как - вагнер не зависит от способа бинаризации. Так что задача тут не выбор из миллионов. Но если ты не знаешь дерева, то такой интервал будешь иметь для каждой топологии, и надо как-то решать какой интервал более лучший. Тут 100500 решений на любой вкус.

Если усложнить задачу с самого начала, учтя большую или меньшую вероятность некоторых аллельных переходов, то потеряешь прелесть Вагнера: решение уже может не быть единым интервалом и считаться будет дольше. Но в таком подходе, полагаю, может быть своя прелесть.

Акктран/делтран - это не про сабж. Там ищется одно решение, чтобы в нем было больше реверса / больше параллельности. А ты ищешь типа фсё, то есть все оптимальные решения, которые содержат в себе и актраны и делтраны и еще больше того что не актран и не делтран. Клиент ведь не заказывал именно делтран, ставя галочку? Про идее, в будущем вы сами нащупаете нужные опции для задачи "покажите мне (клиенту) не все, а что по вашему опыту более вероятно, с минимальным пожеланием от меня".
« Последнее редактирование: 21 Декабрь 2022, 13:26:59 от Valery »

Оффлайн Valery

  • Сообщений: 10107
  • Страна: 00
  • Рейтинг +1380/-7
  • Ultimate Matriarchy
базовый случай для парсимонии есть тут:

Reconstructing ancestral character states under Wagner parsimony
David L.Swofford, Wayne P.Maddison
Mathematical Biosciences
Volume 87, Issue 2, December 1987, Pages 199-229

изложение через одно место, как и все что написал Своффорд

то же самое за 1 мин на пальцах
берешь бинарное дерево и прешь от листьев к корню. Пусть у детей интервалы аллелей [a,b] и [c,d] (причем численно b<c в случае дизъюнктности интервалов). Если интеревалы пересекаются, то фарисов интервал общего предка будет этим пересечением, если дизъюнктны - тогда [b,c]. На последнем шаге будет не два, а три ребенка ch1, ch2, ch3. Обозначим описанную только что операцию получения предка двух как S(ch1,ch2). Тогда фарисов интервал родителя троих будет пересечением S(S(ch1,ch2),ch3), S(S(ch2,ch3),ch1) и S(S(ch1,ch3),ch2). С фарисом все. Дальше идешь от корня к листьям, выбрав любой желанный подинтервал корневого фарисового интервала. При сосчитанном оптимуме родителя оптимумом ребенка будет непустое пересечение с родителем или если такового нет, то ближайший к интервалу родителя концевой аллель ребенка. Эту элементарную хрень Своффорд умудрился развести на 20 страниц.
« Последнее редактирование: 21 Декабрь 2022, 13:58:02 от Valery »

Оффлайн Daemon2017Автор темы

  • Сообщений: 2197
  • Страна: ru
  • Рейтинг +1075/-18
  • Y-ДНК: R1a-Y35174
  • мтДНК: V7-a2a2a2b*
Тогда, развивая мысль, все кто у меня на Y-67 имеют дистанцию, скажем в 1-4 шага - на Y-111 тоже останутся на пропорциональном количестве шагов ?
Но на практике так не бывает - всех разносит вплоть до 10 и дальше (но дальше чем 10 на 111 уже не показывает даже).
Вот у меня есть 310 совпаденцев на 67 и 89 на 111. Покажу наиболее близкие, чтоб было понятно насколько это все непредсказуемо:

Хороший вопрос! Попробовал поисследовать:
- взял свои 67 и предсказал 111 - из 44 маркеров 9 штук (11 шагов) предсказаны неверно, т.е. точность 79.5%;
https://docs.google.com/spreadsheets/d/1W8h5WuKl_CvaHYFRBVjrdr1i1XMnE_OxgYtUbLyoFbE/edit#gid=313688155
- взял 67 моего родича и односельчанина, предсказал 111 - из 44 маркеров 8 штук (10 шагов) предсказаны неверно, т.е. точность 81.8%;
https://docs.google.com/spreadsheets/d/1W8h5WuKl_CvaHYFRBVjrdr1i1XMnE_OxgYtUbLyoFbE/edit#gid=1667790051
- сравнил подлинные 67 - дистанция 5 маркеров (5 шагов), сравнил подлинные 111 - дистанция 8 маркеров (8 шагов) [выделено оранжевым], сравнил предсказанные 111 - дистанция 7 маркеров (7 шагов). Т.е. предсказание дает на 1 отличающийся маркер меньше. Да еще и не в тех маркерах, что отличаются у подлинников :))
https://docs.google.com/spreadsheets/d/1W8h5WuKl_CvaHYFRBVjrdr1i1XMnE_OxgYtUbLyoFbE/edit#gid=2074472504
Не самый лучший результат - хотелось бы большего: как минимум, чтобы шагов было бы столько, сколько и неверных маркеров, т.к. ошибка на 1 шаг это терпимо. Но имеем то, что имеем.

Нужно дополнительное исследование: взять пачку Y111 из разных ветвей, разделить на 2 половины - одну не трогать, а вторую сперва порезать до Y67, а затем импутировать. После этого построить древо тем же Phylip'ом и посмотреть на то, будут ли образцы из импутированной половины притягиваться к тем, к кому им положено притягиваться, или же разбредутся по углам. Если не разбредутся, то алгоритм применим для филогении.

Также, поисследовал WGS:
- на моем BigY500, YFull не смогло прочитать (или прочитало с низкой достоверностью) 23 маркера из 111-маркерной панели. Предсказал - 8 неверных (15 шагов), 15 верных, т.е. точность 65.2%.
https://docs.google.com/spreadsheets/d/1axluPdzNcsv7JfxOqrJZrlhFKJVINxTAPhHaCBh8rVg/edit#gid=0
- на BigY700 моего родича и односельчанина, YFull не смогло прочитать всего 13 маркеров из Y111. Предсказал - 4 неверных (4 шага), 9 верных, т.е. точность 69%.
https://docs.google.com/spreadsheets/d/1axluPdzNcsv7JfxOqrJZrlhFKJVINxTAPhHaCBh8rVg/edit#gid=822009503
- на моем DanteLabs WGS x30, YFull не смогло прочитать только 6 маркеров Y111. Предсказал - 2 неверных (3 шага), 4 верных, т.е. точность 66%.
https://docs.google.com/spreadsheets/d/1axluPdzNcsv7JfxOqrJZrlhFKJVINxTAPhHaCBh8rVg/edit#gid=763075060

С BigY500 получилось жиденько, а вот с остальными, похоже, можно использовать импутацию, если есть только WGS, но очень хочется сравниваться с безБигниками из проектов FTDNA, чтобы уговаривать их на бигование ;D

Оффлайн Daemon2017Автор темы

  • Сообщений: 2197
  • Страна: ru
  • Рейтинг +1075/-18
  • Y-ДНК: R1a-Y35174
  • мтДНК: V7-a2a2a2b*
Если место на дереве известно точно, то это стандартная процедура, называется "малой задачей филогенетики", или просто labelling. Недостающие признаки помечаются как missing states (на письме "?") и запускается лейблинг. Его проводят по-разному в зависимости от метода, есть парсимонный и макс. правдоподобный лейблинг. В общем случае число возможных оптимальных лейблингов дерева экспоненциально зависит и от числа признаков (как бы необходимое зло, тк признаки независимы), и от числа таксонов (а вот это уже печально).

Парсимонный лейблинг имеет долгую историю, для метрики самого общего вида алгоритм описал Санкофф еще в 1971г. Для STR обычно используется метрика Вагнера ( тупо: dist(14,17)=3 ), для нее есть чуть более быстрые способы лейблинга и несколько упрощенные способы как "найти все оптимальные лейблы". Набор таких оптимальных значений для узла (внутреннего либо помеченного ? исходного) всегда является промежутком, есть специальный термин - интервал Фарриса. Эти алгоритмы сложились еще в 1980е гг, до эпохи массового типирования STR. Их отточили на признаках более классической природы, вроде длины хвоста  ;D

YFull использует для предикции аллелей STR собственную версию парсимонного лейблинга (и, как мне помнится по описанию Вадима), аналог интервалов Фарриса.

Спасибо за просвещение! У меня нет профильного образования - не знал, что есть традиционный для отрасли подход для решения этой задачи, так что решил ее так, как ее решают у нас в ИИшной отрасли  ;D

В моем случае, не только место на дереве неизвестно, но и вообще дерева не существует ;D
Все-таки, древо - это больше про SNP, а не про STR. Само-собой, есть некие нелинейные связи между SNP и STR, но это именно нелинейности: мы не можем сказать, что носитель такого-то SNP будет иметь ровно такой-то гаплотип по его STR, как и наоборот (особенно наоборот: спасибо гомоплазии STR'ов). В алгоритм можно добавить категориальную информацию о каких-нибудь верхнеуровневых SNP - это должно повысить точность предсказаний, но мне хотелось изучить именно наличие нелинейных связей между STR.

Оффлайн Valery

  • Сообщений: 10107
  • Страна: 00
  • Рейтинг +1380/-7
  • Ultimate Matriarchy
решил ее так, как ее решают у нас в ИИшной отрасли  ;D

Я ни в малейшей степени не настаиваю, что есть некое "правильное" решение и даже "главное и второстепенные". Речь идет о совершенно (или почти) ортогональных представлениях сабжевого явления.

Оффлайн Daemon2017Автор темы

  • Сообщений: 2197
  • Страна: ru
  • Рейтинг +1075/-18
  • Y-ДНК: R1a-Y35174
  • мтДНК: V7-a2a2a2b*
Вот, а если стр-маркеры мутируют независимо друг от друга, откуда могут взяться эти нелинейные связи? Из наследования, если у человека случилась мутация x в маркере n, то это новое значение оказывается сцеплено с его гаплотипом. Далее у одного из его потомков случилась мутация y в маркере m, и это значение оказывается сцеплено с предковой мутацией x в маркере n (ну и с другими маркерами гаплотипа тоже, конечно). То есть, получаем в неявном виде нахождение дерева.

SNP и STR тоже мутируют независимо друг от друга, а корреляции есть :) У меня интерес был как раз в том, чтобы узнать, насколько сильна корреляция у STR'ов. По остальному не спорю: все есть так, как оно есть.

Для примера, вот древо предсказания самого легкого маркера - DYS472:
|--- DYS533 <= 6.50
|   |--- value: [9.00]
|--- DYS533 >  6.50
|   |--- DYS445 <= 6.50
|   |   |--- DYS552 <= 23.50
|   |   |   |--- DYS462 <= 10.50
|   |   |   |   |--- value: [8.00]
|   |   |   |--- DYS462 >  10.50
|   |   |   |   |--- DYS385a <= 12.50
|   |   |   |   |   |--- value: [8.00]
|   |   |   |   |--- DYS385a >  12.50
|   |   |   |   |   |--- value: [9.00]
|   |   |--- DYS552 >  23.50
|   |   |   |--- DYS485 <= 14.50
|   |   |   |   |--- value: [9.00]
|   |   |   |--- DYS485 >  14.50
|   |   |   |   |--- value: [8.00]
|   |--- DYS445 >  6.50
|   |   |--- DYS490 <= 17.50
|   |   |   |--- DYS455 <= 7.50
|   |   |   |   |--- DYS575 <= 9.50
|   |   |   |   |   |--- value: [9.00]
|   |   |   |   |--- DYS575 >  9.50
|   |   |   |   |   |--- value: [8.00]
|   |   |   |--- DYS455 >  7.50
|   |   |   |   |--- DYS390 <= 21.50
|   |   |   |   |   |--- DYS441 <= 16.50
|   |   |   |   |   |   |--- DYS463 <= 18.50
|   |   |   |   |   |   |   |--- DYS385b <= 17.50
|   |   |   |   |   |   |   |   |--- value: [9.00]
|   |   |   |   |   |   |   |--- DYS385b >  17.50
|   |   |   |   |   |   |   |   |--- value: [8.00]
|   |   |   |   |   |   |--- DYS463 >  18.50
|   |   |   |   |   |   |   |--- DYS593 <= 14.50
|   |   |   |   |   |   |   |   |--- DYS650 <= 16.50
|   |   |   |   |   |   |   |   |   |--- value: [9.00]
|   |   |   |   |   |   |   |   |--- DYS650 >  16.50
|   |   |   |   |   |   |   |   |   |--- value: [8.00]
|   |   |   |   |   |   |   |--- DYS593 >  14.50
|   |   |   |   |   |   |   |   |--- value: [8.00]
|   |   |   |   |   |--- DYS441 >  16.50
|   |   |   |   |   |   |--- DYS570 <= 19.50
|   |   |   |   |   |   |   |--- value: [8.00]
|   |   |   |   |   |   |--- DYS570 >  19.50
|   |   |   |   |   |   |   |--- value: [9.00]
|   |   |   |   |--- DYS390 >  21.50
|   |   |   |   |   |--- Y-GGAAT-1B07 <= 12.50
|   |   |   |   |   |   |--- DYS448 <= 17.50
|   |   |   |   |   |   |   |--- DYF406S1 <= 9.50
|   |   |   |   |   |   |   |   |--- DYS510 <= 16.50
|   |   |   |   |   |   |   |   |   |--- value: [9.00]
|   |   |   |   |   |   |   |   |--- DYS510 >  16.50
|   |   |   |   |   |   |   |   |   |--- value: [8.00]
|   |   |   |   |   |   |   |--- DYF406S1 >  9.50
|   |   |   |   |   |   |   |   |--- value: [8.00]
|   |   |   |   |   |   |--- DYS448 >  17.50
|   |   |   |   |   |   |   |--- DYS494 <= 8.50
|   |   |   |   |   |   |   |   |--- DYS385b <= 12.00
|   |   |   |   |   |   |   |   |   |--- DYS549 <= 12.50
|   |   |   |   |   |   |   |   |   |   |--- value: [8.00]
|   |   |   |   |   |   |   |   |   |--- DYS549 >  12.50
|   |   |   |   |   |   |   |   |   |   |--- value: [9.00]
|   |   |   |   |   |   |   |   |--- DYS385b >  12.00
|   |   |   |   |   |   |   |   |   |--- value: [8.00]
|   |   |   |   |   |   |   |--- DYS494 >  8.50
|   |   |   |   |   |   |   |   |--- DYS607 <= 17.50
|   |   |   |   |   |   |   |   |   |--- DYS441 <= 19.50
|   |   |   |   |   |   |   |   |   |   |--- DYS436 <= 10.50
|   |   |   |   |   |   |   |   |   |   |   |--- truncated branch of depth 4
|   |   |   |   |   |   |   |   |   |   |--- DYS436 >  10.50
|   |   |   |   |   |   |   |   |   |   |   |--- truncated branch of depth 16
|   |   |   |   |   |   |   |   |   |--- DYS441 >  19.50
|   |   |   |   |   |   |   |   |   |   |--- DYS650 <= 22.50
|   |   |   |   |   |   |   |   |   |   |   |--- value: [8.00]
|   |   |   |   |   |   |   |   |   |   |--- DYS650 >  22.50
|   |   |   |   |   |   |   |   |   |   |   |--- truncated branch of depth 2
|   |   |   |   |   |   |   |   |--- DYS607 >  17.50
|   |   |   |   |   |   |   |   |   |--- DYF395S1b <= 17.50
|   |   |   |   |   |   |   |   |   |   |--- value: [8.00]
|   |   |   |   |   |   |   |   |   |--- DYF395S1b >  17.50
|   |   |   |   |   |   |   |   |   |   |--- value: [9.00]
|   |   |   |   |   |--- Y-GGAAT-1B07 >  12.50
|   |   |   |   |   |   |--- DYS464a <= 15.50
|   |   |   |   |   |   |   |--- value: [8.00]
|   |   |   |   |   |   |--- DYS464a >  15.50
|   |   |   |   |   |   |   |--- value: [9.00]
|   |   |--- DYS490 >  17.50
|   |   |   |--- DYS389I <= 12.50
|   |   |   |   |--- value: [9.00]
|   |   |   |--- DYS389I >  12.50
|   |   |   |   |--- value: [8.00]


Более наглядная версия. Код нужно вкорячить в GraphViz, например, тут https://dreampuf.github.io/GraphvizOnline/ и получится красивое рисованное древо.
digraph Tree {
node [shape=box, style="filled", color="black", fontname="helvetica"] ;
edge [fontname="helvetica"] ;
0 [label="DYS533 <= 6.5\nsquared_error = 0.002\nsamples = 51570\nvalue = 8.002", fillcolor="#f2c09c"] ;
1 [label="squared_error = 0.0\nsamples = 15\nvalue = 9.0", fillcolor="#e58139"] ;
0 -> 1 [labeldistance=2.5, labelangle=45, headlabel="True"] ;
2 [label="DYS445 <= 6.5\nsquared_error = 0.002\nsamples = 51555\nvalue = 8.002", fillcolor="#f2c09c"] ;
0 -> 2 [labeldistance=2.5, labelangle=-45, headlabel="False"] ;
3 [label="DYS552 <= 23.5\nsquared_error = 0.142\nsamples = 293\nvalue = 8.171", fillcolor="#f0b58b"] ;
2 -> 3 ;
4 [label="DYS462 <= 10.5\nsquared_error = 0.158\nsamples = 61\nvalue = 8.803", fillcolor="#e88d4c"] ;
3 -> 4 ;
5 [label="squared_error = 0.0\nsamples = 11\nvalue = 8.0", fillcolor="#f2c09c"] ;
4 -> 5 ;
6 [label="DYS385a <= 12.5\nsquared_error = 0.02\nsamples = 50\nvalue = 8.98", fillcolor="#e5823b"] ;
4 -> 6 ;
7 [label="squared_error = 0.0\nsamples = 1\nvalue = 8.0", fillcolor="#f2c09c"] ;
6 -> 7 ;
8 [label="squared_error = 0.0\nsamples = 49\nvalue = 9.0", fillcolor="#e58139"] ;
6 -> 8 ;
9 [label="DYS485 <= 14.5\nsquared_error = 0.004\nsamples = 232\nvalue = 8.004", fillcolor="#f2c09c"] ;
3 -> 9 ;
10 [label="squared_error = 0.0\nsamples = 1\nvalue = 9.0", fillcolor="#e58139"] ;
9 -> 10 ;
11 [label="squared_error = 0.0\nsamples = 231\nvalue = 8.0", fillcolor="#f2c09c"] ;
9 -> 11 ;
12 [label="DYS490 <= 17.5\nsquared_error = 0.001\nsamples = 51262\nvalue = 8.001", fillcolor="#f2c09c"] ;
2 -> 12 ;
13 [label="DYS455 <= 7.5\nsquared_error = 0.001\nsamples = 51259\nvalue = 8.001", fillcolor="#f2c09c"] ;
12 -> 13 ;
14 [label="DYS575 <= 9.5\nsquared_error = 0.234\nsamples = 8\nvalue = 8.375", fillcolor="#eda877"] ;
13 -> 14 ;
15 [label="squared_error = 0.0\nsamples = 3\nvalue = 9.0", fillcolor="#e58139"] ;
14 -> 15 ;
16 [label="squared_error = 0.0\nsamples = 5\nvalue = 8.0", fillcolor="#f2c09c"] ;
14 -> 16 ;
17 [label="DYS390 <= 21.5\nsquared_error = 0.001\nsamples = 51251\nvalue = 8.001", fillcolor="#f2c09c"] ;
13 -> 17 ;
18 [label="DYS441 <= 16.5\nsquared_error = 0.02\nsamples = 690\nvalue = 8.02", fillcolor="#f2bf9a"] ;
17 -> 18 ;
19 [label="DYS463 <= 18.5\nsquared_error = 0.003\nsamples = 667\nvalue = 8.003", fillcolor="#f2c09c"] ;
18 -> 19 ;
20 [label="DYS385b <= 17.5\nsquared_error = 0.16\nsamples = 5\nvalue = 8.2", fillcolor="#efb388"] ;
19 -> 20 ;
21 [label="squared_error = 0.0\nsamples = 1\nvalue = 9.0", fillcolor="#e58139"] ;
20 -> 21 ;
22 [label="squared_error = 0.0\nsamples = 4\nvalue = 8.0", fillcolor="#f2c09c"] ;
20 -> 22 ;
23 [label="DYS593 <= 14.5\nsquared_error = 0.002\nsamples = 662\nvalue = 8.002", fillcolor="#f2c09c"] ;
19 -> 23 ;
24 [label="DYS650 <= 16.5\nsquared_error = 0.122\nsamples = 7\nvalue = 8.143", fillcolor="#f0b78e"] ;
23 -> 24 ;
25 [label="squared_error = 0.0\nsamples = 1\nvalue = 9.0", fillcolor="#e58139"] ;
24 -> 25 ;
26 [label="squared_error = 0.0\nsamples = 6\nvalue = 8.0", fillcolor="#f2c09c"] ;
24 -> 26 ;
27 [label="squared_error = 0.0\nsamples = 655\nvalue = 8.0", fillcolor="#f2c09c"] ;
23 -> 27 ;
28 [label="DYS570 <= 19.5\nsquared_error = 0.25\nsamples = 23\nvalue = 8.522", fillcolor="#eb9f68"] ;
18 -> 28 ;
29 [label="squared_error = 0.0\nsamples = 11\nvalue = 8.0", fillcolor="#f2c09c"] ;
28 -> 29 ;
30 [label="squared_error = 0.0\nsamples = 12\nvalue = 9.0", fillcolor="#e58139"] ;
28 -> 30 ;
31 [label="Y-GGAAT-1B07 <= 12.5\nsquared_error = 0.001\nsamples = 50561\nvalue = 8.001", fillcolor="#f2c09c"] ;
17 -> 31 ;
32 [label="DYS448 <= 17.5\nsquared_error = 0.001\nsamples = 50538\nvalue = 8.001", fillcolor="#f2c09c"] ;
31 -> 32 ;
33 [label="DYF406S1 <= 9.5\nsquared_error = 0.02\nsamples = 348\nvalue = 8.02", fillcolor="#f2bf9a"] ;
32 -> 33 ;
34 [label="DYS510 <= 16.5\nsquared_error = 0.243\nsamples = 12\nvalue = 8.583", fillcolor="#ea9b62"] ;
33 -> 34 ;
35 [label="squared_error = 0.0\nsamples = 7\nvalue = 9.0", fillcolor="#e58139"] ;
34 -> 35 ;
36 [label="squared_error = 0.0\nsamples = 5\nvalue = 8.0", fillcolor="#f2c09c"] ;
34 -> 36 ;
37 [label="squared_error = 0.0\nsamples = 336\nvalue = 8.0", fillcolor="#f2c09c"] ;
33 -> 37 ;
38 [label="DYS494 <= 8.5\nsquared_error = 0.001\nsamples = 50190\nvalue = 8.0", fillcolor="#f2c09c"] ;
32 -> 38 ;
39 [label="DYS385b <= 12.0\nsquared_error = 0.007\nsamples = 530\nvalue = 8.008", fillcolor="#f2c09b"] ;
38 -> 39 ;
40 [label="DYS549 <= 12.5\nsquared_error = 0.245\nsamples = 7\nvalue = 8.571", fillcolor="#eb9c63"] ;
39 -> 40 ;
41 [label="squared_error = 0.0\nsamples = 3\nvalue = 8.0", fillcolor="#f2c09c"] ;
40 -> 41 ;
42 [label="squared_error = 0.0\nsamples = 4\nvalue = 9.0", fillcolor="#e58139"] ;
40 -> 42 ;
43 [label="squared_error = 0.0\nsamples = 523\nvalue = 8.0", fillcolor="#f2c09c"] ;
39 -> 43 ;
44 [label="DYS607 <= 17.5\nsquared_error = 0.0\nsamples = 49660\nvalue = 8.0", fillcolor="#f2c09c"] ;
38 -> 44 ;
45 [label="DYS441 <= 19.5\nsquared_error = 0.0\nsamples = 49612\nvalue = 8.0", fillcolor="#f2c09c"] ;
44 -> 45 ;
46 [label="DYS436 <= 10.5\nsquared_error = 0.0\nsamples = 49560\nvalue = 8.0", fillcolor="#f2c09c"] ;
45 -> 46 ;
47 [label="DYS458 <= 18.5\nsquared_error = 0.014\nsamples = 68\nvalue = 8.015", fillcolor="#f2bf9b"] ;
46 -> 47 ;
48 [label="squared_error = 0.0\nsamples = 65\nvalue = 8.0", fillcolor="#f2c09c"] ;
47 -> 48 ;
49 [label="Y-GGAAT-1B07 <= 10.5\nsquared_error = 0.222\nsamples = 3\nvalue = 8.333", fillcolor="#eeab7b"] ;
47 -> 49 ;
50 [label="Y-GATA-A10 <= 13.5\nsquared_error = 0.25\nsamples = 2\nvalue = 8.5", fillcolor="#eca06a"] ;
49 -> 50 ;
51 [label="squared_error = 0.0\nsamples = 1\nvalue = 9.0", fillcolor="#e58139"] ;
50 -> 51 ;
52 [label="squared_error = 0.0\nsamples = 1\nvalue = 8.0", fillcolor="#f2c09c"] ;
50 -> 52 ;
53 [label="squared_error = 0.0\nsamples = 1\nvalue = 8.0", fillcolor="#f2c09c"] ;
49 -> 53 ;
54 [label="DYS438 <= 12.5\nsquared_error = 0.0\nsamples = 49492\nvalue = 8.0", fillcolor="#f2c09c"] ;
46 -> 54 ;
55 [label="DYS712 <= 17.5\nsquared_error = 0.0\nsamples = 48554\nvalue = 8.0", fillcolor="#f2c09c"] ;
54 -> 55 ;
56 [label="DYS454 <= 11.5\nsquared_error = 0.007\nsamples = 151\nvalue = 7.993", fillcolor="#f2c09d"] ;
55 -> 56 ;
57 [label="squared_error = 0.0\nsamples = 149\nvalue = 8.0", fillcolor="#f2c09c"] ;
56 -> 57 ;
58 [label="DYS385b <= 13.5\nsquared_error = 0.25\nsamples = 2\nvalue = 7.5", fillcolor="#f8e0ce"] ;
56 -> 58 ;
59 [label="squared_error = 0.0\nsamples = 1\nvalue = 8.0", fillcolor="#f2c09c"] ;
58 -> 59 ;
60 [label="squared_error = 0.0\nsamples = 1\nvalue = 7.0", fillcolor="#ffffff"] ;
58 -> 60 ;
61 [label="DYS617 <= 10.5\nsquared_error = 0.0\nsamples = 48403\nvalue = 8.0", fillcolor="#f2c09c"] ;
55 -> 61 ;
62 [label="DYS485 <= 15.5\nsquared_error = 0.007\nsamples = 136\nvalue = 8.007", fillcolor="#f2c09b"] ;
61 -> 62 ;
63 [label="squared_error = 0.0\nsamples = 117\nvalue = 8.0", fillcolor="#f2c09c"] ;
62 -> 63 ;
64 [label="DYS716 <= 26.5\nsquared_error = 0.05\nsamples = 19\nvalue = 8.053", fillcolor="#f1bd97"] ;
62 -> 64 ;
65 [label="squared_error = 0.0\nsamples = 18\nvalue = 8.0", fillcolor="#f2c09c"] ;
64 -> 65 ;
66 [label="squared_error = 0.0\nsamples = 1\nvalue = 9.0", fillcolor="#e58139"] ;
64 -> 66 ;
67 [label="DYS522 <= 9.5\nsquared_error = 0.0\nsamples = 48267\nvalue = 8.0", fillcolor="#f2c09c"] ;
61 -> 67 ;
68 [label="DYS717 <= 18.5\nsquared_error = 0.006\nsamples = 165\nvalue = 7.994", fillcolor="#f2c09d"] ;
67 -> 68 ;
69 [label="DYS413b <= 23.5\nsquared_error = 0.25\nsamples = 2\nvalue = 7.5", fillcolor="#f8e0ce"] ;
68 -> 69 ;
70 [label="squared_error = 0.0\nsamples = 1\nvalue = 7.0", fillcolor="#ffffff"] ;
69 -> 70 ;
71 [label="squared_error = 0.0\nsamples = 1\nvalue = 8.0", fillcolor="#f2c09c"] ;
69 -> 71 ;
72 [label="squared_error = 0.0\nsamples = 163\nvalue = 8.0", fillcolor="#f2c09c"] ;
68 -> 72 ;
73 [label="DYF406S1 <= 11.5\nsquared_error = 0.0\nsamples = 48102\nvalue = 8.0", fillcolor="#f2c09c"] ;
67 -> 73 ;
74 [label="DYS385b <= 18.5\nsquared_error = 0.0\nsamples = 44733\nvalue = 8.0", fillcolor="#f2c09c"] ;
73 -> 74 ;
75 [label="DYS650 <= 18.5\nsquared_error = 0.0\nsamples = 43227\nvalue = 8.0", fillcolor="#f2c09c"] ;
74 -> 75 ;
76 [label="DYS444 <= 13.5\nsquared_error = 0.0\nsamples = 14559\nvalue = 8.0", fillcolor="#f2c09c"] ;
75 -> 76 ;
77 [label="DYS441 <= 16.5\nsquared_error = 0.0\nsamples = 13629\nvalue = 8.0", fillcolor="#f2c09c"] ;
76 -> 77 ;
78 [label="DYS726 <= 12.5\nsquared_error = 0.0\nsamples = 13500\nvalue = 8.0", fillcolor="#f2c09c"] ;
77 -> 78 ;
79 [label="DYS464a <= 11.5\nsquared_error = 0.0\nsamples = 13320\nvalue = 8.0", fillcolor="#f2c09c"] ;
78 -> 79 ;
80 [label="DYS576 <= 19.5\nsquared_error = 0.004\nsamples = 239\nvalue = 8.004", fillcolor="#f2c09c"] ;
79 -> 80 ;
81 [label="squared_error = 0.0\nsamples = 229\nvalue = 8.0", fillcolor="#f2c09c"] ;
80 -> 81 ;
82 [label="CDYa <= 35.5\nsquared_error = 0.09\nsamples = 10\nvalue = 8.1", fillcolor="#f1ba92"] ;
80 -> 82 ;
83 [label="squared_error = 0.0\nsamples = 9\nvalue = 8.0", fillcolor="#f2c09c"] ;
82 -> 83 ;
84 [label="squared_error = 0.0\nsamples = 1\nvalue = 9.0", fillcolor="#e58139"] ;
82 -> 84 ;
85 [label="DYS449 <= 31.5\nsquared_error = 0.0\nsamples = 13081\nvalue = 8.0", fillcolor="#f2c09c"] ;
79 -> 85 ;
86 [label="squared_error = 0.0\nsamples = 12339\nvalue = 8.0", fillcolor="#f2c09c"] ;
85 -> 86 ;
87 [label="DYS464d <= 17.5\nsquared_error = 0.001\nsamples = 742\nvalue = 8.001", fillcolor="#f2c09c"] ;
85 -> 87 ;
88 [label="squared_error = 0.0\nsamples = 691\nvalue = 8.0", fillcolor="#f2c09c"] ;
87 -> 88 ;
89 [label="DYS497 <= 14.5\nsquared_error = 0.019\nsamples = 51\nvalue = 8.02", fillcolor="#f2bf9a"] ;
87 -> 89 ;
90 [label="squared_error = 0.0\nsamples = 49\nvalue = 8.0", fillcolor="#f2c09c"] ;
89 -> 90 ;
91 [label="DYS461 <= 11.5\nsquared_error = 0.25\nsamples = 2\nvalue = 8.5", fillcolor="#eca06a"] ;
89 -> 91 ;
92 [label="squared_error = 0.0\nsamples = 1\nvalue = 8.0", fillcolor="#f2c09c"] ;
91 -> 92 ;
93 [label="squared_error = 0.0\nsamples = 1\nvalue = 9.0", fillcolor="#e58139"] ;
91 -> 93 ;
94 [label="DYS449 <= 27.5\nsquared_error = 0.006\nsamples = 180\nvalue = 8.006", fillcolor="#f2c09b"] ;
78 -> 94 ;
95 [label="DYS636 <= 11.5\nsquared_error = 0.052\nsamples = 18\nvalue = 8.056", fillcolor="#f1bc96"] ;
94 -> 95 ;
96 [label="squared_error = 0.0\nsamples = 17\nvalue = 8.0", fillcolor="#f2c09c"] ;
95 -> 96 ;
97 [label="squared_error = 0.0\nsamples = 1\nvalue = 9.0", fillcolor="#e58139"] ;
95 -> 97 ;
98 [label="squared_error = 0.0\nsamples = 162\nvalue = 8.0", fillcolor="#f2c09c"] ;
94 -> 98 ;
99 [label="DYS549 <= 13.5\nsquared_error = 0.008\nsamples = 129\nvalue = 8.008", fillcolor="#f2c09b"] ;
77 -> 99 ;
100 [label="squared_error = 0.0\nsamples = 128\nvalue = 8.0", fillcolor="#f2c09c"] ;
99 -> 100 ;
101 [label="squared_error = 0.0\nsamples = 1\nvalue = 9.0", fillcolor="#e58139"] ;
99 -> 101 ;
102 [label="DYS643 <= 9.5\nsquared_error = 0.003\nsamples = 930\nvalue = 8.003", fillcolor="#f2c09c"] ;
76 -> 102 ;
103 [label="DYS635 <= 23.5\nsquared_error = 0.066\nsamples = 28\nvalue = 8.071", fillcolor="#f1bc95"] ;
102 -> 103 ;
104 [label="squared_error = 0.0\nsamples = 26\nvalue = 8.0", fillcolor="#f2c09c"] ;
103 -> 104 ;
105 [label="squared_error = 0.0\nsamples = 2\nvalue = 9.0", fillcolor="#e58139"] ;
103 -> 105 ;
106 [label="DYS534 <= 12.5\nsquared_error = 0.001\nsamples = 902\nvalue = 8.001", fillcolor="#f2c09c"] ;
102 -> 106 ;
107 [label="DYS638 <= 10.5\nsquared_error = 0.055\nsamples = 17\nvalue = 8.059", fillcolor="#f1bc96"] ;
106 -> 107 ;
108 [label="DYS464b <= 14.5\nsquared_error = 0.222\nsamples = 3\nvalue = 8.333", fillcolor="#eeab7b"] ;
107 -> 108 ;
109 [label="squared_error = 0.0\nsamples = 1\nvalue = 9.0", fillcolor="#e58139"] ;
108 -> 109 ;
110 [label="squared_error = 0.0\nsamples = 2\nvalue = 8.0", fillcolor="#f2c09c"] ;
108 -> 110 ;
111 [label="squared_error = 0.0\nsamples = 14\nvalue = 8.0", fillcolor="#f2c09c"] ;
107 -> 111 ;
112 [label="squared_error = 0.0\nsamples = 885\nvalue = 8.0", fillcolor="#f2c09c"] ;
106 -> 112 ;
113 [label="squared_error = 0.0\nsamples = 28668\nvalue = 8.0", fillcolor="#f2c09c"] ;
75 -> 113 ;
114 [label="DYS549 <= 14.5\nsquared_error = 0.002\nsamples = 1506\nvalue = 8.002", fillcolor="#f2c09c"] ;
74 -> 114 ;
115 [label="DYS513 <= 10.5\nsquared_error = 0.001\nsamples = 1503\nvalue = 8.001", fillcolor="#f2c09c"] ;
114 -> 115 ;
116 [label="DYS19 <= 14.5\nsquared_error = 0.066\nsamples = 14\nvalue = 8.071", fillcolor="#f1bc95"] ;
115 -> 116 ;
117 [label="squared_error = 0.0\nsamples = 12\nvalue = 8.0", fillcolor="#f2c09c"] ;
116 -> 117 ;
118 [label="DYS487 <= 13.5\nsquared_error = 0.25\nsamples = 2\nvalue = 8.5", fillcolor="#eca06a"] ;
116 -> 118 ;
119 [label="squared_error = 0.0\nsamples = 1\nvalue = 9.0", fillcolor="#e58139"] ;
118 -> 119 ;
120 [label="squared_error = 0.0\nsamples = 1\nvalue = 8.0", fillcolor="#f2c09c"] ;
118 -> 120 ;
121 [label="DYS641 <= 10.5\nsquared_error = 0.001\nsamples = 1489\nvalue = 8.001", fillcolor="#f2c09c"] ;
115 -> 121 ;
122 [label="squared_error = 0.0\nsamples = 1392\nvalue = 8.0", fillcolor="#f2c09c"] ;
121 -> 122 ;
123 [label="DYS448 <= 19.5\nsquared_error = 0.01\nsamples = 97\nvalue = 8.01", fillcolor="#f2bf9b"] ;
121 -> 123 ;
124 [label="YCAIIa <= 20.5\nsquared_error = 0.122\nsamples = 7\nvalue = 8.143", fillcolor="#f0b78e"] ;
123 -> 124 ;
125 [label="squared_error = 0.0\nsamples = 6\nvalue = 8.0", fillcolor="#f2c09c"] ;
124 -> 125 ;
126 [label="squared_error = 0.0\nsamples = 1\nvalue = 9.0", fillcolor="#e58139"] ;
124 -> 126 ;
127 [label="squared_error = 0.0\nsamples = 90\nvalue = 8.0", fillcolor="#f2c09c"] ;
123 -> 127 ;
128 [label="DYS505 <= 11.5\nsquared_error = 0.222\nsamples = 3\nvalue = 8.333", fillcolor="#eeab7b"] ;
114 -> 128 ;
129 [label="squared_error = 0.0\nsamples = 1\nvalue = 9.0", fillcolor="#e58139"] ;
128 -> 129 ;
130 [label="squared_error = 0.0\nsamples = 2\nvalue = 8.0", fillcolor="#f2c09c"] ;
128 -> 130 ;
131 [label="DYS391 <= 11.5\nsquared_error = 0.001\nsamples = 3369\nvalue = 8.001", fillcolor="#f2c09c"] ;
73 -> 131 ;
132 [label="DYS388 <= 10.5\nsquared_error = 0.001\nsamples = 3350\nvalue = 8.001", fillcolor="#f2c09c"] ;
131 -> 132 ;
133 [label="DYS497 <= 15.5\nsquared_error = 0.043\nsamples = 22\nvalue = 8.045", fillcolor="#f1bd98"] ;
132 -> 133 ;
134 [label="squared_error = 0.0\nsamples = 21\nvalue = 8.0", fillcolor="#f2c09c"] ;
133 -> 134 ;
135 [label="squared_error = 0.0\nsamples = 1\nvalue = 9.0", fillcolor="#e58139"] ;
133 -> 135 ;
136 [label="DYS510 <= 19.5\nsquared_error = 0.001\nsamples = 3328\nvalue = 8.001", fillcolor="#f2c09c"] ;
132 -> 136 ;
137 [label="DYS650 <= 21.5\nsquared_error = 0.001\nsamples = 3304\nvalue = 8.001", fillcolor="#f2c09c"] ;
136 -> 137 ;
138 [label="DYS481 <= 27.5\nsquared_error = 0.0\nsamples = 3257\nvalue = 8.0", fillcolor="#f2c09c"] ;
137 -> 138 ;
139 [label="squared_error = 0.0\nsamples = 3136\nvalue = 8.0", fillcolor="#f2c09c"] ;
138 -> 139 ;
140 [label="DYS444 <= 13.5\nsquared_error = 0.008\nsamples = 121\nvalue = 8.008", fillcolor="#f2bf9b"] ;
138 -> 140 ;
141 [label="squared_error = 0.0\nsamples = 114\nvalue = 8.0", fillcolor="#f2c09c"] ;
140 -> 141 ;
142 [label="DYS534 <= 16.5\nsquared_error = 0.122\nsamples = 7\nvalue = 8.143", fillcolor="#f0b78e"] ;
140 -> 142 ;
143 [label="squared_error = 0.0\nsamples = 6\nvalue = 8.0", fillcolor="#f2c09c"] ;
142 -> 143 ;
144 [label="squared_error = 0.0\nsamples = 1\nvalue = 9.0", fillcolor="#e58139"] ;
142 -> 144 ;
145 [label="DYS425 <= 13.5\nsquared_error = 0.021\nsamples = 47\nvalue = 8.021", fillcolor="#f2bf9a"] ;
137 -> 145 ;
146 [label="squared_error = 0.0\nsamples = 46\nvalue = 8.0", fillcolor="#f2c09c"] ;
145 -> 146 ;
147 [label="squared_error = 0.0\nsamples = 1\nvalue = 9.0", fillcolor="#e58139"] ;
145 -> 147 ;
148 [label="DYS388 <= 15.5\nsquared_error = 0.04\nsamples = 24\nvalue = 8.042", fillcolor="#f1bd98"] ;
136 -> 148 ;
149 [label="squared_error = 0.0\nsamples = 23\nvalue = 8.0", fillcolor="#f2c09c"] ;
148 -> 149 ;
150 [label="squared_error = 0.0\nsamples = 1\nvalue = 9.0", fillcolor="#e58139"] ;
148 -> 150 ;
151 [label="DYS461 <= 12.5\nsquared_error = 0.05\nsamples = 19\nvalue = 8.053", fillcolor="#f1bd97"] ;
131 -> 151 ;
152 [label="squared_error = 0.0\nsamples = 18\nvalue = 8.0", fillcolor="#f2c09c"] ;
151 -> 152 ;
153 [label="squared_error = 0.0\nsamples = 1\nvalue = 9.0", fillcolor="#e58139"] ;
151 -> 153 ;
154 [label="DYF395S1a <= 14.5\nsquared_error = 0.003\nsamples = 938\nvalue = 8.003", fillcolor="#f2c09c"] ;
54 -> 154 ;
155 [label="DYS715 <= 23.5\nsquared_error = 0.188\nsamples = 4\nvalue = 8.25", fillcolor="#efb083"] ;
154 -> 155 ;
156 [label="squared_error = 0.0\nsamples = 1\nvalue = 9.0", fillcolor="#e58139"] ;
155 -> 156 ;
157 [label="squared_error = 0.0\nsamples = 3\nvalue = 8.0", fillcolor="#f2c09c"] ;
155 -> 157 ;
158 [label="DYS449 <= 27.5\nsquared_error = 0.002\nsamples = 934\nvalue = 8.002", fillcolor="#f2c09c"] ;
154 -> 158 ;
159 [label="DYS452 <= 30.5\nsquared_error = 0.069\nsamples = 27\nvalue = 8.074", fillcolor="#f1bb95"] ;
158 -> 159 ;
160 [label="squared_error = 0.0\nsamples = 25\nvalue = 8.0", fillcolor="#f2c09c"] ;
159 -> 160 ;
161 [label="squared_error = 0.0\nsamples = 2\nvalue = 9.0", fillcolor="#e58139"] ;
159 -> 161 ;
162 [label="squared_error = 0.0\nsamples = 907\nvalue = 8.0", fillcolor="#f2c09c"] ;
158 -> 162 ;
163 [label="DYS650 <= 22.5\nsquared_error = 0.019\nsamples = 52\nvalue = 8.019", fillcolor="#f2bf9a"] ;
45 -> 163 ;
164 [label="squared_error = 0.0\nsamples = 50\nvalue = 8.0", fillcolor="#f2c09c"] ;
163 -> 164 ;
165 [label="CDYb <= 36.5\nsquared_error = 0.25\nsamples = 2\nvalue = 8.5", fillcolor="#eca06a"] ;
163 -> 165 ;
166 [label="squared_error = 0.0\nsamples = 1\nvalue = 8.0", fillcolor="#f2c09c"] ;
165 -> 166 ;
167 [label="squared_error = 0.0\nsamples = 1\nvalue = 9.0", fillcolor="#e58139"] ;
165 -> 167 ;
168 [label="DYF395S1b <= 17.5\nsquared_error = 0.02\nsamples = 48\nvalue = 8.021", fillcolor="#f2bf9a"] ;
44 -> 168 ;
169 [label="squared_error = 0.0\nsamples = 47\nvalue = 8.0", fillcolor="#f2c09c"] ;
168 -> 169 ;
170 [label="squared_error = 0.0\nsamples = 1\nvalue = 9.0", fillcolor="#e58139"] ;
168 -> 170 ;
171 [label="DYS464a <= 15.5\nsquared_error = 0.079\nsamples = 23\nvalue = 8.087", fillcolor="#f1bb93"] ;
31 -> 171 ;
172 [label="squared_error = 0.0\nsamples = 21\nvalue = 8.0", fillcolor="#f2c09c"] ;
171 -> 172 ;
173 [label="squared_error = 0.0\nsamples = 2\nvalue = 9.0", fillcolor="#e58139"] ;
171 -> 173 ;
174 [label="DYS389I <= 12.5\nsquared_error = 0.222\nsamples = 3\nvalue = 8.667", fillcolor="#e9965a"] ;
12 -> 174 ;
175 [label="squared_error = 0.0\nsamples = 2\nvalue = 9.0", fillcolor="#e58139"] ;
174 -> 175 ;
176 [label="squared_error = 0.0\nsamples = 1\nvalue = 8.0", fillcolor="#f2c09c"] ;
174 -> 176 ;
}

Особенно сильно мне нравится ветвление на маркере DYS650: одно условие дробит выборку в 43к образцов на 2 части - 28к и 14к:

Оффлайн Valery

  • Сообщений: 10107
  • Страна: 00
  • Рейтинг +1380/-7
  • Ultimate Matriarchy
В алгоритм можно добавить категориальную информацию о каких-нибудь верхнеуровневых SNP - это должно повысить точность предсказаний, но мне хотелось изучить именно наличие нелинейных связей между STR.

Если это удастся сделать так, что все что при вашем подходе было черным ящиком, им же и останется, то да - тогда подходы ортогональны. Разная математика и одно биологическое явление. Если же в некий момент вы начнете осознавать что работаете с эволюцией на дереве - тогда нет, речь о разных сторонах математически одного явления. Как-то так.

Традиционная модель - в том, что это марковский процесс на дереве. Вы ищете как в результате скоррелированы величины, которые независимо мутируют, подчиняясь матрице переходов. Вся корреляция, которая обнаруживается, связана исключительно с тем что это процесс на дереве, а не произвольно где. Сам выбор куда мутирует какой аллель согласно матрице - не зависит от того какой выбор сделан для другого STR локуса. Корреляции - следствие того что о сравниваемые гаплотипы лежат по одну или другую сторону от некоего ребра дерева. Соответственно одни локусы мутировали при переходе через это ребро, другие - сохранили свое аллельное состояние. Локусы более или менее "походят" друг на друга по отношению к тому или иному ребру дерева. Здесь есть еще одно скрытое предположение - как скоррелированы скорости мутаций одного и того же локуса в разных частях дерева. Если дозволена сильная дисперсия скорости, будет одна картина, не дозволена - другая. То есть помимо базовой марковской эволюции, имеем еще один признак чисто филогенетической природы: насколько отличаются части дерева по способности мутировать. Признать сильное различие было бы биологической ересью. Но поскольку выбор маркеров не обязан быть большим и представительным, на практике различие может обнаруживаться.

Оффлайн Valery

  • Сообщений: 10107
  • Страна: 00
  • Рейтинг +1380/-7
  • Ultimate Matriarchy
SNP и STR тоже мутируют независимо друг от друга, а корреляции есть :)

по одной единственной причине: это происходит на дереве
если бы все признаки мутировали слишком быстро, филогенетика не могла бы найти ни одной нетривиальной топологии. Тогда можно говорить об отсутствии корреляции эволюции разных признаков. Но в реальности мы имеем топологию, дерево - это по сути 1-многообразие в очень многомерном пространстве признаков. Каждое ребро дерева делит и аллели каждого признака надвое (если нет гомоплазии то строго как бипартиция). Вы ловите сигнал, полное описание которого - топология дерева и ничего более.

 

© 2007 Молекулярная Генеалогия (МолГен)

Внимание! Все сообщения отражают только мнения их авторов.
Все права на материалы принадлежат их авторам (владельцам) и сетевым изданиям, с которых они взяты.