Пропоную вашій увазі спосіб розміщення збіженців в системі координат. Використовується метод Multidimensional Scaling з бібліотеки sklearn. Аналогічно, як у Ancient Origins карта генетичних відстаней у МyHeritage, тільки тут показують зв'язки між вами і збіженцями.
Що можна сказати про це представлення
- Ви знаходитесь у центрі координат (оранжева крапка)
- Можна задати одного зі своїх батьків (або когось з близьких родичів цих батьків), і відстань до нього (наприклад 1.0 - одне покоління для когось з батьків), наприклад це буде мати. Тоді мати буде в точці (1;0)
- З великою натяжкою можна стверджувати, що права половина точок - збіги пов'язані з матір'ю, а ліва половина з батьком. В реальності це представлення є неближенням, тому в реальності межа може бути трохи іншою (див нижче приклад для мого випадку)
- В системі координат 4 квадранти і кожен з них (приблизно) може відповідати комусь із ваших дідусів-бабусь
- Теоретично можна побудувати 3-вимірне (чи навіть більше представлення), тоді кожна 1/8 простору буде відповідати прадіду/прабабусі
- Відстані між точками приблизно відображають генетичну відстань між збіженцями
- Графік інтерактивний, якщо підвести курсор до точки відобразиться ім'я збіженця
Скрип представляє собою Jupyter блокнот (код на мові Python). Виконується на платформі Google Colab.
Запускається скрипт клавішами Ctrl-F9. Перед запуском скрипта потрібно підготувати вихідні файли:
- config.ini - деякі параметри, описані всередині скрипта
- matches.tsv - табличка, що описує зв'язки між вами та збіженцями
- Опціональний файл colors.tsv - деяким збіженцям можна прив'язати кольори
Файли можна вивантажити в папку `content`, але вони зберігатимуться на сервері тільки поки сесія активна. Краще файли збереги на своєму Гугл Диску і підключати його при виконанні скрипта.
Після виконня скрипта у тій же директорії створюється також файл matches.html з цим самим графіком.
Підготувати файл matches.tsv, покрокова інструкція
Кажуть, що колись у MyHeritage була можливість скачати одразу всіх збіженців. Нажаль зараз така функція недоступна, тому потрібно їх зіскрапити з веб сайту.
- Інсталювати розширення для хрома WebScrapper
- Натиснути F12 (відобразити інструменти розробника)
- Перейти у вкладку Web Scrapper
- Імпортувати sitemap
- Create Sitemap/Import Sitemap
- Ввести Sitemap name, наприклад MyHeritageMatches
- Ввести код сайтмапи
{"_id":"MyHeritageMatches","startUrl":["https://www.myheritage.com.ua/"],"selectors":[{"id":"name","parentSelectors":["_root"],"type":"SelectorText","selector":".match_details_section [data-automations='MatchProfileDetailsOther'] h5","multiple":false,"regex":""},{"id":"shared_dna","parentSelectors":["_root"],"type":"SelectorText","selector":".match_quality_value_inner span[data-automations]","multiple":false,"regex":""},{"id":"match","parentSelectors":["_root"],"type":"SelectorElement","selector":"div.card_row div.shared_match_profile_content_wrapper","multiple":true},{"id":"match_name","parentSelectors":["match"],"type":"SelectorText","selector":"a","multiple":true,"regex":""},{"id":"match_shared","parentSelectors":["match"],"type":"SelectorText","selector":".other_dna_match_side span span","multiple":false,"regex":""}]} - Натиснути Import Sitemap
- Вибрати створену щойно сайтмапу
- Створити у текстовому редакторі файл matches.tsv
- Додати імена колонок: name shared_dna match_shared match_name - вони мають бути розділені табами
- Перейти на сторінку зі збігами
- Для кожного збіженця в порядку зниження спільного ДНК (взяти кілька десятків топових збіженців - стільки ж точок буде відбражено) виконати це:
- Увімкнути сортування "Спільна ДНК з вами"
- Відобразати всі спільні збіги з принаймні 20 сМ ("Показати більше ДНК збігів")
- Далі будемо збирати всі записи за допомогою WebScrapper, які в даний момент відображені в браузері
- У Web Scrapper натиснути кнопку Data preview, відобразяться зіскраплені дані зі сторінки
- Скопіювати рядки (без рядка заголовків) і додати в текстовий файл
- Проскролити сторінку вгору та натиснути "Наступний збіг"
- Повторити кроки для наступного збігу
- Зберегти файл matches.tsv
Коментарі
Дописати коментар