Я решил сочинить собственный Оракул на основе JTest Polako - для людей, у который среди ближайших предков присутствует более двух народов. Метод расчета следующий: допустим, каждый из предков точно соответствует какой-либо из исходный популяций Полако, и каждый из предков передает своему потомку одинаковый процент генов. Попробуем перебрать все сочетания и выберем варианты с наименьшим среднеквадратичным отклонением. К сожалению, для восьми предков количество сочетаний очень велико, поэтому пока посчитал для четырех.
Update 3:Статистика по доле генома, наследуемого от каждого из четырех предковUpdate 2: С 4 декабря Оракул четырех предков доступен в полном объеме на сайте gedmatch.com (для калькуляторов, у которых есть и обычный оракул - это все калькуляторы проектов MDLP, DODECAD, Harappa и калькуляторы JTest, EUTest проекта Eurogenes). Используйте кнопку Oracle-4 на странице вывода результатов нужного калькулятора. Расчет делается методом минимизации среднеквадратичного отклонения, результаты могут несколько отличаться от выложенных ранее в этой теме из-за различия в исходных данных популяций.
Update:Уважаемый Alex AXe разработал программу, рассчитывающую возможных четырех предков по разным алгоритмам и с возможностью подстановки данных из разных калькуляторов.
Версия 0.97 (самая свежая на момент изменения этого сообщения):
http://db.tt/634mFXL2Комментарий автора:
Сделал нормальную реализацию метода постоянной дисперсии и нормальную нормировку расстояний в нем. Удалось немножко его оптимизировать.
Полностью пересмотрел модель шума и порогов.
Теперь не используется параметр "порог метода", вместо него в соответствующей строчке файла input.txt нужно поставить 1 для использования gaussian-метода и 0 для его отключения. Метод наименьших квадратов будет использован в обоих случаях.
Формат input.txt для версии 0.97:
1-я строка: имя (условное) человека, чьи данные анализируются.
2-я строка: имя файла с данными популяций
3-я строка: имя файла с результатами
4-я строка: число выдаваемых результатов приближений. Для режима 4-х предков будет выдано удвоенное число результатов.
5-я строка: минимальный порог компонентов. Значения меньше его будут отброшены. Для автоопределения порога нужно ввести минус единицу.
6-я строка: 1 для использования Gaussian или же 0 для использования только LSM
7-я и далее строки: значения компонентов
Кстати, долгожданный графический интерфейс готов. Сделал его отдельной программой. При запуске нужно выбрать используемый калькулятор (путем указания файла с данными популяций) и потом ввести значения для конкретного человека.
После нажатия на кнопку "Go!" будет сгенерирован input.txt и запустится внешняя программа расчетов.
Можно одновременно запускать несколько для разных данных одного калькулятора (так как input.txt читается только в момент начала расчетов). Естественно, выходные файлы указывать разными. Смотреть их все так же -блокнотом.
Версия 0,95:
http://db.tt/q5pEFZChКомментарии автора (несколько отредактированы для удобства):
Просто редактируйте файл input.txt подставляя туда свои значения из результатов калькулятора (вместо прочерков для отсутствующих компонент вводите нули).
В начале файла input.txt указываются следующие параметры:
1. Имя (условное) тестируемого. Сделано для удобства идентификации данных, также это имя потом указывается в выходном файле.
2. Имя файла с данными популяций.
3. Имя файла с результатами. Сделано для удобства.
4. Число выдаваемых приближений.
5. Порог компонента. Значения компонентов, которые меньше его, принимаются равными нулю.
6. Порог метода. При вычислении расстояний между данными и приближением, расстояние между компонентами, меньшие этого порога, не учитываются.
7. Номер метода вычисления расстояний, который будет использован. Доступно 8 методов с номерами от 0 до 7, показавших наилучшие результаты. Ноль соответствует методу квадратов. Если указать в качестве номера метода отрицательное число, то будут последовательно использованы все методы.
Как и было обещано, теперь выдаются приближения не только для 4 предков, но и для меньшего их числа. В случае 3-х предков, считается, что первый - это один из родителей, а остальные двое - это бабушка и дедушка со стороны другого родителя.Окончание первоначального сообщения:
Результаты уважаемого Alex AXe:
1. EE ; Southwest_Finnish ; Komi ; GE ; 3.74
2. LIT ; Southwest_Finnish ; Komi ; GE ; 3.87
3. LIT ; Komi ; North_Swedish ; GE ; 3.87
4. LIT ; Komi ; South_&_Central_Swedish ; GE ; 4
5. LIT ; Komi ; NO ; GE ; 4.12
6. LIT ; Udmurt ; North_Swedish ; GE ; 4.24
7. LIT ; Udmurt ; South_&_Central_Swedish ; GE ; 4.24
8. LIT ; Komi ; West_&_Central_German ; Lezgin ; 4.36
9. LIT ; Komi ; NL ; Lezgin ; 4.36
10. LIT ; Southwest_Finnish ; Udmurt ; GE ; 4.36
11. EE ; Southwest_Finnish ; Udmurt ; GE ; 4.36
12. EE ; Erzya ; Southwest_Finnish ; GE ; 4.47
13. LIT ; Udmurt ; NO ; GE ; 4.47
14. EE ; East_Russian ; Southwest_Finnish ; GE ; 4.47
15. LIT ; Komi ; English ; Lezgin ; 4.47
16. LIT ; Komi ; Orcadian ; Lezgin ; 4.47
17. LIT ; East_Finnish ; Southwest_Finnish ; GE ; 4.47
18. Belorussian ; Southwest_Finnish ; Komi ; GE ; 4.58
19. EE ; East_Finnish ; Southwest_Finnish ; GE ; 4.58
20. Erzya ; Southwest_Finnish ; Southwest_Finnish ; GE ; 4.58
Мы видим в каждом из сочетаний одного жителя Кавказа и одного жителя Поволжья, что, как мы знаем точно соответствует истине. К сожалению, ни чеченцев, ни татар среди исходных популяций Поляко нет. Однако на месте, где должны быть русские, появляются более северные и западные народы. Впрочем, такое отклонение для Alex AXe было видно и в других оракулах, видимо, так сложились гены.