Добрый вечер, соратники!
Работа
ТК и
varang, проделанная в области кластеризации SNP, представленных среди славянских популяций, на основе их географической частоты, (
http://forum.molgen.org/index.php/topic,3628.msg489823.html#msg489823) и Web-карта
hprovyn, выводящая географическую частоту SNP (
https://phylogeographer.com/scripts/heatmap.php), вдохновили меня на изучение JS и создание логического продолжения моей прошлой наработки - yFarseer'а (
http://forum.molgen.org/index.php/topic,12629.msg486512.html#msg486512).
Репозиторий:
https://github.com/Daemon2017/yFarseerWebСамо приложение:
https://daemon2017.github.io/yFarseerWeb/Задумка осталась старой: режем планету на равные шестиугольники и считаем разнообразие выбранного SNP внутри каждого из них - чем больше разных дочерних SNP в шестиугольнике, тем больше вероятность того, что именно в этом шестиугольнике находится прародина выбранного SNP (критерий разнообразия). Единственное отличие - данные о степени разнообразия каждого шестиугольника сохраняются не в HTML-файл, а в NoSQL БД, откуда они извлекаются уже на стороне потребителя.
Чем yFarseerWeb лучше yFarseer'а?
+ на одной карте можно расположить множество SNP - сейчас это количество ограничено 10. Можно поднять порог, но проблема заключается в ограниченности количества контрастных цветов - чем больше будет градиентов, тем меньше они будут отличаться друг от друга;
+ можно посчитать корреляцию Пирсона для выбранных SNP - сейчас это количество ограничено 25. Поднять порог - не проблема, но работать будет только на больших экранах;
+ нормально отображается на любых устройствах, включая мобильные;
+ если где-то допущена ошибка, то ее достаточно исправить в БД 1 раз для всех пользователей.
Чем yFarseerWeb хуже yFarseer'а?
- нет возможности отрисовать то, какие именно SNP есть в конкретном шестиугольнике. Т.е. мы знаем, что в шестиугольнике уровень разнообразия =3, но не знаем, какая комбинация SNP в нем: A+B+C или A+C+D.
Пока что нет возможности выбирать между обычным набором данных, где присутствуют только те данные, которые 100% подтверждены NGS или одиночным тестированием SNP, и расширенным набором данных, где присутствуют еще и данные, полученные на основе STR с помощью машинного обучения. Это вызвано тем, что изначально я хотел брать только данные о протестированных из YFull, т.к. они размещены под лицензией CC-BY и имеют 100% подтверждение NGS, но оказалось, что мне недостает API YFull, а потрошить их древо - это кощунство, так что пришлось перестраиваться на ходу. Думаю, что эта возможность появится в ближайшие недели.
Через URL можно передавать следующие свойства:
&snps=R-Z92,R-CTS1211 - SNP через запятую;
&lat=55 - широта;
&lng=10 - долгота;
&zoom=3 - близость к поверхности;
&threshold=3 - порог яркости (0-10): при пороге =4, шестиугольники с разнообразием 1-3 будут иметь такую же яркость, как шестиугольники с разнообразием 4.
Пример:
https://daemon2017.github.io/yFarseerWeb/?snps=R-Z92,R-CTS1211&lat=55&lng=10&zoom=3&threshold=3В настоящий момент, в БД есть 100+ SNP: если каких-то недостает, то дайте знать - построю