АвторТема: yMapper - ПО для построения карт таксономического разнообразия  (Прочитано 5455 раз)

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

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

  • Сообщений: 2159
  • Страна: ru
  • Рейтинг +1045/-18
  • Y-ДНК: R1a-Y35174
  • мтДНК: V7-a2a2a2b*
Привет, соратники!

Вдохновленный деятельностью уважаемого ТК по созданию карт таксономического разнообразия, я решил внести свой вклад и забабахал набор модулей на Python для автоматического построения этих самых карт.
Репозиторий: https://github.com/Daemon2017/yMapper
Примеры живых карт: https://daemon2017.github.io/yMapper/

Сокращенная копипаста из README
yMapper - это программа, позволяющая в автоматическом режиме строить карты таксономического разнообразия выбранного Y-SNP. Результатом работы кода является топографическая карта Stamen, на которую нанесен слой с сеткой из шестиугольных ячеек, при наведении на любую из которых появляется всплывающая подсказка, содержащая информацию о том, какие именно подветви выбранного Y-SNP присутствуют в ней присутствуют. Также, используется зрительное отражение уровня таксономического разнообразия: чем оно выше, тем ниже прозрачность ячейки, а те из них, в которых наблюдается наибольшее разнообразие подветвей, подсвечиваются градиентным ореолом. Карта может состоять из множества слоев с различными размерами ячеек, что позволяет отражать сведения о разнообразии подветвей в различных приближениях.
Ниже приведен пример карты таксономического разнообразия SNP R-CTS1211, построенной с помощью yMapper, а на живые карты Вы можете взглянуть здесь.


Для чего всё это?
Существует 2 критерия, по которым можно предсказать область происхождения Y-SNP, а значит и всей генетической популяции, являющейся его носителем:
* критерий частоты - SNP образовался в том регионе, в котором он встречается чаще всего;
* критерий разнообразия - SNP образовался в том регионе, где наблюдается наибольшее разнообразие его подветвей.
Таким образом, данная программа позволяет строить наглядные карты по критерию разнообразия, которые могут быть использованы в определении области происхождения того или иного SNP.

Благодарности
Хочу поблагодарить форумчанина TK за то, что он объяснил мне основные тонкости построения карт таксономического разнообразия: спасибище и низкий поклон - дело, начатое Вами, дало мне заряд на многие вечера и ночи! :)
« Последнее редактирование: 04 Март 2024, 00:20:50 от Daemon2017 »

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

  • Сообщений: 2159
  • Страна: ru
  • Рейтинг +1045/-18
  • Y-ДНК: R1a-Y35174
  • мтДНК: V7-a2a2a2b*
Сейчас проблемы 2:
1) я далеко не спец в области генетики и потому мне не ясно, как быть с палиндромами. Например, если в DYS464 находится 4 значения (a,b,c,d), то понятно, как с этим жить, но ведь бывает и 6, и 8 значений! У меня есть догадка, что можно брать только 2 наименьших и 2 наибольших значения, предварительно выставив их в порядке возрастания, но уверенности в своей правоте у меня нет и, пока что, все столбцы с палиндромами не учитываются при предсказании SNP в Максимальном варианте. Также, я не знаю, как поступать со строками, где палиндром оказался там, где его не ждут - например, в DYS393. Думаю брать наибольшее из значений, но пока я просто удаляю такие строки. Буду очень благодарен, если подскажете, как сделать правильно;
2) и в Минимальном, и в Максимальном вариантах перебор строк (их больше 100к) с тестовыми наборами занимает много времени - надо бы распараллелить, но пока сил нет.
« Последнее редактирование: 04 Март 2024, 00:25:05 от Daemon2017 »

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

  • Сообщений: 2159
  • Страна: ru
  • Рейтинг +1045/-18
  • Y-ДНК: R1a-Y35174
  • мтДНК: V7-a2a2a2b*
Пока искал способ определения наличия BigY у тестового набора, сделал довольно интересное открытие - вот как выглядит упорядоченный по убыванию график количества сделанных положительных SNP (не включая наборы как с 0 затестированных SNP, так и с только отрицательными SNP).

Ступенька в районе 26к - переход от BigY500 к SNP-Pack'ам (их легко опознать, т.к. FTDNA выводит у них в столбце SNP не только положительные, но и отрицательные SNP).

К слову, сейчас алгоритм такой: если положительных SNP > 200, значит у этого набора есть сделанный BigY и его можно использовать как эталон при обучении.
« Последнее редактирование: 04 Март 2024, 00:25:08 от Daemon2017 »

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

  • Сообщений: 2159
  • Страна: ru
  • Рейтинг +1045/-18
  • Y-ДНК: R1a-Y35174
  • мтДНК: V7-a2a2a2b*
Еще интересные факты:
1) В среднем, за счет применения машинного обучения и предсказания SNP по 111 STR, удается получить количественный прирост 10-25%. Почему так мало? - на самом деле, прирост больше, просто очень немногие тестируемые проставляют геометку наиболее давнего известного предка по отцу, вот и приходится удалять такие тестовые наборы;
2) Градиентный бустинг на 111 STR дает точность 85-95% на негомоплазирующих ветвях и лишь 65-70% на гомоплазирующих (это с учетом того, что все палиндромные STR я отбрасываю - если научиться их учитывать, то точность должна возрасти);
3) Хорошей мыслью оказалось открыть Y-древо FTDNA https://www.familytreedna.com/public/y-dna-haplotree/ и смотреть количество подветвей интересующего SNP + количество протестированных в каждой подветви. Строить карту разнообразия для SNP, у которого всего 2 подветви, смысла мало - как такового "ядра" не будет, а будет прямая/ломанная линия. Пытаться построить что-то для SNP, который положителен менее чем у 50 человек тоже безнадежно: из этих 50, в лучшем случае, только 50% будут состоять хоть в одном проекте, да и высока вероятность несбалансированности выборки (когда на 50 человек приходится 35 носителей подветви А, 13 носителей подветви Б и 2 носителя подветви В).
« Последнее редактирование: 04 Март 2024, 00:25:12 от Daemon2017 »

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

  • Сообщений: 2159
  • Страна: ru
  • Рейтинг +1045/-18
  • Y-ДНК: R1a-Y35174
  • мтДНК: V7-a2a2a2b*
Добавил карты для:
I-PH908
R-CTS1211
R-Y2604
R-Z92
https://daemon2017.github.io/yMapper/

У R-* модель получается хорошая: 92-97% точности, т.е. _extended картам можно доверять, а вот у I-* с этим беда - всего 67% точности, так что _extended карту делать не стал.

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

UPD. 21:26 накосячил - в столбце с _extended версиями ссылка вела на обычные версии. Исправил :)
« Последнее редактирование: 04 Март 2024, 00:22:04 от Daemon2017 »

Оффлайн Farroukh

  • Maternal Y-DNA: R1b-BY124371
  • ...
  • Сообщений: 17097
  • Страна: az
  • Рейтинг +5908/-17
  • Paternal Mt-DNA: M9a1b1
    • Azerbaijan DNA Project
  • Y-ДНК: E-Y37518
  • мтДНК: F2f1
Цитировать
программа, позволяющая в автоматическом режиме строить карты таксономического разнообразия выбранного Y-SNP
Скачал и распаковал этого питона. Как бы научиться запускать эту шайтан-программу, чтобы нужный снип ввести... ???

Какой-нибудь быдло-мануал бы сюда... Это - не быдло-мануал  :-X :'(

Оффлайн TK

  • Сообщений: 505
  • Страна: ru
  • Рейтинг +385/-0
Пока я работаю из дома - увы, тоже не имею возможности разобраться и запустить.
И, как следствие, попрошу (если будет возможность, конечно) - можно ли сделать карту для R-L1029?
Было бы очень интересно сравнить её с моими потугами....

Оффлайн Farroukh

  • Maternal Y-DNA: R1b-BY124371
  • ...
  • Сообщений: 17097
  • Страна: az
  • Рейтинг +5908/-17
  • Paternal Mt-DNA: M9a1b1
    • Azerbaijan DNA Project
  • Y-ДНК: E-Y37518
  • мтДНК: F2f1
Благодарю и плюсую за совет!

Жаль, что считает очень долго...  :-\

Цитировать
Запустите модуль ftdna_project_collector_rest.py и дождитесь завершения его работы, что ознаменуется созданием файла projects_tags.csv - это займет не более 1 часа.;
Запустите модуль ftdna_map_collector_rest.py и дождитесь завершения его работы - это займет не более суток.
Запустите получившийся блокнот через Cell -> Run All и дождитесь завершения работы...
При настройках по умолчанию, на построение карты уйдет чуть более часа.

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

  • Сообщений: 2159
  • Страна: ru
  • Рейтинг +1045/-18
  • Y-ДНК: R1a-Y35174
  • мтДНК: V7-a2a2a2b*
Цитировать
программа, позволяющая в автоматическом режиме строить карты таксономического разнообразия выбранного Y-SNP
Скачал и распаковал этого питона. Как бы научиться запускать эту шайтан-программу, чтобы нужный снип ввести... ???

Какой-нибудь быдло-мануал бы сюда... Это - не быдло-мануал  :-X :'(

Спасибо за проявленный интерес! Эх, не учел я, что у Пайтона есть еще и магия установки пакетов - сейчас наваяю руководство со всеми подробностями :)

Жаль, что считает очень долго...  :-\

Да, скорость меня самого огорчает - на выходных попробую что-нибудь с этим наколдовать.

Пока я работаю из дома - увы, тоже не имею возможности разобраться и запустить.
И, как следствие, попрошу (если будет возможность, конечно) - можно ли сделать карту для R-L1029?
Было бы очень интересно сравнить её с моими потугами....

Без проблем! Поставил в обработку обычную и расширенную карты: часа через 2 будет готово.
« Последнее редактирование: 04 Март 2024, 00:25:15 от Daemon2017 »

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

  • Сообщений: 2159
  • Страна: ru
  • Рейтинг +1045/-18
  • Y-ДНК: R1a-Y35174
  • мтДНК: V7-a2a2a2b*
Готово - в разделе "Установка Python, зависимостей (Windows) и запуск .py/.ipynb-файлов" описал установку Python, импорт зависимостей из файла requirements.txt, ну и запуск самих скриптов из консоли/блокнота Jupyter.
https://github.com/Daemon2017/yMapper/blob/master/README.md
Проделал по своей инструкции - все получилось, но если что-то не взлетело или есть непонятки - дайте знать, распишу подробнее :)

По R-L1029 закончил попытку обучения пророка - точность вышла всего 65%, так что расширенную карту смысла нет строить :\ Запустил постройку обычной карты.
Кстати, обучающая выборка была не такая уж маленькая:
R-YP417          41
R-FGC66323       34
R-BY30007        25
R-YP619           9
R-BY30715         7
Выходит, что какие-то подветви гомоплазируют или внутри L1029, или с какими-то внешними ветвями, чем ломают все машинное обучение)
« Последнее редактирование: 04 Март 2024, 00:22:13 от Daemon2017 »

Оффлайн varang

  • Сообщений: 5364
  • Страна: fi
  • Рейтинг +1823/-8
    • Проект "R1a-Y417 & Subclades" (M458>L1029>YP417)
  • Y-ДНК: R1a-L1029-A14777
  • мтДНК: H2a1

Выходит, что какие-то подветви гомоплазируют или внутри L1029, или с какими-то внешними ветвями, чем ломают все машинное обучение)

Что есть, то есть. Внутри точно сильная гомоплазия.

Оффлайн Semargl

  • "El sueño de la razón produce monstruos" ©
  • Модератор
  • *****
  • Сообщений: 5993
  • Страна: ru
  • Рейтинг +4191/-5
  • www.semargl.me
    • www.semargl.me
  • Y-ДНК: R1a [CTS3402+]
  • мтДНК: U4a2g
Сейчас проблемы 2:
1) я далеко не спец в области генетики и потому мне не ясно, как быть с палиндромами. Например, если в DYS464 находится 4 значения (a,b,c,d), то понятно, как с этим жить, но ведь бывает и 6, и 8 значений! У меня есть догадка, что можно брать только 2 наименьших и 2 наибольших значения, предварительно выставив их в порядке возрастания, но уверенности в своей правоте у меня нет и, пока что, все столбцы с палиндромами не учитываются при предсказании SNP в Максимальном варианте. Также, я не знаю, как поступать со строками, где палиндром оказался там, где его не ждут - например, в DYS393. Думаю брать наибольшее из значений, но пока я просто удаляю такие строки. Буду очень благодарен, если подскажете, как сделать правильно;
2) и в Минимальном, и в Максимальном вариантах перебор строк (их больше 100к) с тестовыми наборами занимает много времени - надо бы распараллелить, но пока сил нет.
Очень хорошее начинание, поздравляю!
Что касается первого вопроса, то если речь не идет о сравнении родственных гаплотипов, а берется большая выборка для обучения, то палиндромы в идеале все исключать. Мой предиктор работает по такому же методу. Иначе будут сильные выбросы, влияющие на обучение.
Насчет редкого дублирования не в палиндромах, то наверное проще брать значение, наиболее близкое к медиане...

Оффлайн Semargl

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

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

  • Сообщений: 2159
  • Страна: ru
  • Рейтинг +1045/-18
  • Y-ДНК: R1a-Y35174
  • мтДНК: V7-a2a2a2b*
Что есть, то есть. Внутри точно сильная гомоплазия.

Ааа, ну тогда я спокоен за качество пророка, хоть и всегда плохо, если веточка гомоплазирует :(

Пока я работаю из дома - увы, тоже не имею возможности разобраться и запустить.
И, как следствие, попрошу (если будет возможность, конечно) - можно ли сделать карту для R-L1029?
Было бы очень интересно сравнить её с моими потугами....

Построение карты L1029 завершено: https://daemon2017.github.io/yMapper/

Если интересно, то вот количество представителей каждой из подветвей в выборке:
R-FGC66323    77
R-YP417       63
R-BY30007     44
R-YP619       22
R-BY30715     12

При зернистости 0.5 появляется очаг с 3/5 SNP в средине Германии, а при 1.25 - очаг с 4/5 в средине Польши. До 5/5 не удается довести даже при максимальном размере зерна(

UPD. Нашел Вашу карту - в плане выявления очага она куда нагляднее :)
« Последнее редактирование: 04 Март 2024, 00:22:22 от Daemon2017 »

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

  • Сообщений: 2159
  • Страна: ru
  • Рейтинг +1045/-18
  • Y-ДНК: R1a-Y35174
  • мтДНК: V7-a2a2a2b*
Очень хорошее начинание, поздравляю!
Что касается первого вопроса, то если речь не идет о сравнении родственных гаплотипов, а берется большая выборка для обучения, то палиндромы в идеале все исключать. Мой предиктор работает по такому же методу. Иначе будут сильные выбросы, влияющие на обучение.
Насчет редкого дублирования не в палиндромах, то наверное проще брать значение, наиболее близкое к медиане...

Спасибо за похвалу!  ::)

Да, беру все 110к гаплотипов и использую только для обучения. Круто: выходит, что и сейчас все хорошо! Спасибо еще раз :)

А вообще, выкладывание в свободный доступ скриптов для потрошения FTDNA проектов, вызовет бурю негодования и повлечет массовый исход участников из публичных проектов.

Тоже очень беспокоился из-за этого, когда приступал к написанию кода  :-\ В итоге подумал, что:
а) в открытые проекты вступают, в основном, те, у кого не паранойи;
б) код простенький - любой студент справится, а значит где-то уже точно есть десятки-сотни схожих скриптов - раз они не привели к скандалам, то и мой не должен;
в) в получаемых картах нигде не светится фамилия/номер набора - даже некоторые параноики могут на такое согласиться.

Может у Вас есть идеи, как лучше поступить?

« Последнее редактирование: 04 Март 2024, 00:25:18 от Daemon2017 »

 

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

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