АвторТема: yMeter - Web-приложение для определения количества шагов и отличающихся маркеров  (Прочитано 7466 раз)

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

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

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

Забабахал простенькое приложение для определения (а) количества шагов (б) количества отличающихся STR'ов.

Ограничения:
* допустимые разделители между значениями: пробелы и табуляции.
* максимальное количество гаплотипов: пара сотен - главное, чтобы время обработки укладывалось в 30 сек.
* количество маркеров, в идеале, должно быть одинаковым.

Исходный код: https://github.com/Daemon2017/yMeter
Вебморда: https://daemon2017.github.io/yMeter/

Как пользоваться:
1) Берем эталонный гаплотип, относительно которого хотим проводить замеры:

2) Берем образцы, с которыми будем сравнивать:

3) Получаем полуфабрикат:

4) Избавляемся от всего, кроме номера набора и самых значений гаплотипа:

5) Жмем Measure и получаем список гаплотипов от самого близкого по шагам до самого далекого:


Инструментарий для стыковки гаплотипов из FTDNA с гаплотипами из YFull почти готов  :)


Оффлайн Farroukh

  • Maternal Y-DNA: R1b-FTD83033
  • ...
  • Сообщений: 18335
  • Страна: az
  • Рейтинг +6777/-17
  • Paternal Mt-DNA: M9a1b1
    • Azerbaijan DNA Project
  • Y-ДНК: E-Y37518
  • мтДНК: F2f1
Займусь сегодня обкаткой :)

После обкатки остаётся пожелать и добавление столбца с возрастом (разница в аллелях, пересчитанная в число поколений).

Инструмент особенно нужен как запаска к утилите МакГи.

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

  • Сообщений: 2553
  • Страна: ru
  • Рейтинг +1315/-19
  • Y-ДНК: R1a-Y35174
  • мтДНК: V7-a2a2a2b*
добавление столбца с возрастом (разница в аллелях, пересчитанная в число поколений).

Хорошая идея! Сделаем, надо будет вникнуть в формулы перевода разницы в поколения :)

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

  • Сообщений: 2553
  • Страна: ru
  • Рейтинг +1315/-19
  • Y-ДНК: R1a-Y35174
  • мтДНК: V7-a2a2a2b*
Готово, шаги превращаются в TMRCA, доступна настройка лет/поколение и частоты мутации:


Опирался на Ваш калькулятор КлАд: https://forum.molgen.org/index.php/topic,6392.0.html#msg432705

Оффлайн Semargl

  • "El sueño de la razón produce monstruos" ©
  • Модератор
  • *****
  • Сообщений: 6318
  • Страна: ru
  • Рейтинг +4665/-5
  • www.semargl.me
    • www.semargl.me
  • Y-ДНК: R1a [CTS3402+]
  • мтДНК: U4a2g
Забабахал простенькое приложение для определения (а) количества шагов (б) количества отличающихся STR'ов.
Когда-то делал подобное)
Думаю стоит предусмотреть чекбокс/ы для исключения из расчетов ГД палиндромных маркеров. Они могут давать искажения из-за делеций/дупликаций и реклохов. В результате гаплотип двоюродного брата улетит на расстояние 10 и более. Такой случай был на форуме. Это позволит выловить реальных совпаденцев, когда их не видно из-за палиндромов.
Стоит как минимум обрезать палиндромы до стандартных значений по количеству копий, иначе у вас при расчете возникает ошибка.

Оффлайн Semargl

  • "El sueño de la razón produce monstruos" ©
  • Модератор
  • *****
  • Сообщений: 6318
  • Страна: ru
  • Рейтинг +4665/-5
  • www.semargl.me
    • www.semargl.me
  • Y-ДНК: R1a [CTS3402+]
  • мтДНК: U4a2g
Ввел такие данные:
Цитировать
Эталон:
IN123439   13   24   16   10   11-14   12   12   10   13   11   29   13   9-10   11   11   24   14   20   31   12-14-15-16   11   11   19-23   16   16   18   19   37-40   12   11   11   8   17-17   8   11   10   8   11   10   12   22-22   15   10   12   12   14   8   13   24   21   13   12   11   13   10   11   12   13   32   15   9   15   12   25   27   19   13   12   12   12   10   9   12   11   10   11   11   30   12   14   25   13   9   10   19   15   18   11   23   15   12   15   24   12   23   19   11   15   17   9   11   11
Образцы:
B34442   13   25   14   11   11-14   12   12   10   13   11   30   15   9-10   11   11   24   14   20   31   12-15-15-16   10   11   19-23   16   16   17   20   35-40   12   11   11   8   17-17   8   11   10   8   10   10   12   22-22   15   10   12   12   13   8   14   23   21   13   12   11   13   11   11   12   13   32   15   9   15   12   25   27   19   12   12   12   12   10   9   12   11   10   11   12   30   12   14   0   0   9   10   19   15   20   11   23   15   11   15   24   12   24   20   11   15   17   9   11   11
Получил:
Kit   Different markers   Steps   TMRCA
B34442   23   63   5393
Что-то сильно завышена дистанция) точно не проверял, но много получилось.

Оффлайн Farroukh

  • Maternal Y-DNA: R1b-FTD83033
  • ...
  • Сообщений: 18335
  • Страна: az
  • Рейтинг +6777/-17
  • Paternal Mt-DNA: M9a1b1
    • Azerbaijan DNA Project
  • Y-ДНК: E-Y37518
  • мтДНК: F2f1
Цитировать
Вебморда: https://daemon2017.github.io/yMeter/
Что-то не открывается...

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

  • Сообщений: 2553
  • Страна: ru
  • Рейтинг +1315/-19
  • Y-ДНК: R1a-Y35174
  • мтДНК: V7-a2a2a2b*
Когда-то делал подобное)
Думаю стоит предусмотреть чекбокс/ы для исключения из расчетов ГД палиндромных маркеров. Они могут давать искажения из-за делеций/дупликаций и реклохов. В результате гаплотип двоюродного брата улетит на расстояние 10 и более. Такой случай был на форуме. Это позволит выловить реальных совпаденцев, когда их не видно из-за палиндромов.
Стоит как минимум обрезать палиндромы до стандартных значений по количеству копий, иначе у вас при расчете возникает ошибка.

Справедливо, надо будет вкорячить борьбу с мультипалиндромами и отключение палиндромов. Спасибо!

Ввел такие данные:
Цитировать
Эталон:
IN123439   13   24   16   10   11-14   12   12   10   13   11   29   13   9-10   11   11   24   14   20   31   12-14-15-16   11   11   19-23   16   16   18   19   37-40   12   11   11   8   17-17   8   11   10   8   11   10   12   22-22   15   10   12   12   14   8   13   24   21   13   12   11   13   10   11   12   13   32   15   9   15   12   25   27   19   13   12   12   12   10   9   12   11   10   11   11   30   12   14   25   13   9   10   19   15   18   11   23   15   12   15   24   12   23   19   11   15   17   9   11   11
Образцы:
B34442   13   25   14   11   11-14   12   12   10   13   11   30   15   9-10   11   11   24   14   20   31   12-15-15-16   10   11   19-23   16   16   17   20   35-40   12   11   11   8   17-17   8   11   10   8   10   10   12   22-22   15   10   12   12   13   8   14   23   21   13   12   11   13   11   11   12   13   32   15   9   15   12   25   27   19   12   12   12   12   10   9   12   11   10   11   12   30   12   14   0   0   9   10   19   15   20   11   23   15   11   15   24   12   24   20   11   15   17   9   11   11
Получил:
Kit   Different markers   Steps   TMRCA
B34442   23   63   5393
Что-то сильно завышена дистанция) точно не проверял, но много получилось.

Хм, у образца B34442 маркеры DYS463 и DYS441 =0, а у образца IN123439 они 25 и 13. Поэтому, за счет одних только этих маркеров, дистанция подрастает на 38 шагов ;D Надо будет как-то бороться с делециями.

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

  • Сообщений: 2553
  • Страна: ru
  • Рейтинг +1315/-19
  • Y-ДНК: R1a-Y35174
  • мтДНК: V7-a2a2a2b*
Что-то не открывается...

Странно ???
Попробуйте HTTP-адрес: http://daemon2017.github.io/yMeter/ - мб HTTPS почему-то не пропускает (у меня такое бывает с некоторыми сайтами у некоторых провайдеров) https://daemon2017.github.io/yMeter/

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

  • Сообщений: 2553
  • Страна: ru
  • Рейтинг +1315/-19
  • Y-ДНК: R1a-Y35174
  • мтДНК: V7-a2a2a2b*
Прикрутил (позаимствовал из yMurmur) поддержку палиндромов:
- если это палиндром в непалиндромном маркере, то используется MAX-стратегия: DYS393=13-13-15, делаем DYS393=15
- если это гиперпалиндром, то используется MIN-MAX-стратегия: DYS464=12-13-15-15-16-16? делаем DYS464=12-13-16-16 (т.е. взяли 2 минимальных и 2 максимальных).


Борьба с делециями и прикручивание ручки отключения палиндромных маркеров - в работе :)

Оффлайн Semargl

  • "El sueño de la razón produce monstruos" ©
  • Модератор
  • *****
  • Сообщений: 6318
  • Страна: ru
  • Рейтинг +4665/-5
  • www.semargl.me
    • www.semargl.me
  • Y-ДНК: R1a [CTS3402+]
  • мтДНК: U4a2g
- если это гиперпалиндром, то используется MIN-MAX-стратегия: DYS464=12-13-15-15-16-16? делаем DYS464=12-13-16-16 (т.е. взяли 2 минимальных и 2 максимальных).
Может лучше попробовать с удалением неуникальных значений?
DYS464=12-13-15-15-16-16 - получаем DYS464=12-13-15-16. Если будет более 4-х то можно уже сократить по другому принципу. К примеру в этом случае как раз похоже на удвоение двух последних копий 15-16 -> 15-15-16-16

upd
Хотя посмотрел пример из своего проекта. Значение 12-12-13-15-16-16 получено из 12-15-15-16...
« Последнее редактирование: 12 Февраль 2024, 19:22:58 от Semargl »

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

  • Сообщений: 2553
  • Страна: ru
  • Рейтинг +1315/-19
  • Y-ДНК: R1a-Y35174
  • мтДНК: V7-a2a2a2b*
К примеру в этом случае как раз похоже на удвоение двух последних копий 15-16 -> 15-15-16-16

О, справедливое замечание, спасибо! Можно будет попробовать позднее сделать отбор наиболее уникальных :) Но пока, КМК, мультипалиндромы, действительно, лучше отбрасывать: уж больно они упоротые и непредсказуемые Х_Х

Доделал функционал исключения палиндромов. Не вполне ясно, что передавать в формулу расчета TMRCA: бутафорные 111 маркеров или честные 95. Пока остановился на честном варианте, но тогда TMRCA, ожидаемо, чутка увеличивается из-за того, что число маркеров уменьшилось.
« Последнее редактирование: 12 Февраль 2024, 20:43:07 от Daemon2017 »

Оффлайн Farroukh

  • Maternal Y-DNA: R1b-FTD83033
  • ...
  • Сообщений: 18335
  • Страна: az
  • Рейтинг +6777/-17
  • Paternal Mt-DNA: M9a1b1
    • Azerbaijan DNA Project
  • Y-ДНК: E-Y37518
  • мтДНК: F2f1
Воспользовался - всё работает!
На выходе лучше указать, что возраст выдаётся в годах - TMRCA (years).
Если кому-то горит указывать возраст в поколениях, то можно выставить единицу вместо умолчательных 33.0
Но ещё лучше предусмотреть выбиралку - в годах или поколениях, и потом уже пусть выбирает средний возраст (25...33)

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

  • Сообщений: 2553
  • Страна: ru
  • Рейтинг +1315/-19
  • Y-ДНК: R1a-Y35174
  • мтДНК: V7-a2a2a2b*
Воспользовался - всё работает!
На выходе лучше указать, что возраст выдаётся в годах - TMRCA (years).
Если кому-то горит указывать возраст в поколениях, то можно выставить единицу вместо умолчательных 33.0
Но ещё лучше предусмотреть выбиралку - в годах или поколениях, и потом уже пусть выбирает средний возраст (25...33)

Отлично! Не хочу перегружать табличку, так что пометку про то, что ВБОП/TMRCA дан в годах, вынес в самый верх, где идет описание возможностей программы.
Думаю, что переключалка годы/поколения это тоже переусложнение: Ваш способ с задачей возраста =1 для получения поколений - это самое изящное решение проблемы ;)

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


Дальнейшие планы:
* сделать обработку делеций: если маркер эталона/образца имеет делецию (маркер = 0), то присваиваем ему значение образца/эталона + 1, что даст разницу при расчетах в 1 шаг. Если маркер имеет делецию и у эталона, и у образца, то ничего не делаем.
* исключать из обработки маркеры, которых нет у эталона: если для эталона заданы 37 маркеров, а для некоторых образцов аж 67 маркеров, то лишние 30 надо отбросить и не учитывать. Сейчас программу от такого пучит.

Оффлайн Farroukh

  • Maternal Y-DNA: R1b-FTD83033
  • ...
  • Сообщений: 18335
  • Страна: az
  • Рейтинг +6777/-17
  • Paternal Mt-DNA: M9a1b1
    • Azerbaijan DNA Project
  • Y-ДНК: E-Y37518
  • мтДНК: F2f1
На всё воля автора. В принципе, согласен, что излишние украшательства только перегружают без пользы для функционала.

Не проверял сам, но надеюсь, для DYS389I-II дистанция высчитывается по разности (DYS389-II - 389-I)

 

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

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