чем вас так всех эти локусы не устроили?
При построении деревьев они могут сильно искажать результат.
При поиске совпаденцев, в некоторых случаях (в основном это касается DYS464 и 19b), ломается алгоритм поиска.
В результате мы не найдем ни одного совпаденца, а если найдем, то они будут из других ветвей.
Все это недостатки используемого мной алгоритма, но я не придумал как преодолеть эту багу.
Логичное решение - предоставить пользователю возможность отключать поиск по палиндромным маркерам.
Проблема в SQL? Тогда можно хранить для отсутствия значения -1, а не NULL.
Не?
Проблема не в SQL'e.
Для поиска сопаденцев я использую k-d деревья:
http://en.wikipedia.org/wiki/K-d_treeДля подготовки данных, гаплотипы выгружаются в двумерную матрицу, которая преобразуется в k-d дерево.
Проблема в том, что в матрице не может быть значения null. Если же мы ставим любое число, то отсчет дистанции будет вестись от него. В этом случае приближенцы, с отсутствующим значением какого либо маркера, не будут найдены.
Слышал, вышли новые версии, используемых мной библиотек, но их надо заново рассматривать, тк слишком много кардинальных изменений.
Есть еще пара структурных затыков, которые не так просто обойти.
- Например, кто ближе к тебе, 12-ти маркерный гаплотип с ГД=1 или 37-ми маркерный с ГД=3? =)
- каким образом сравниивать гаплотипы разной длины? Про матрицу см. выше
и тд и тп
Дойдут руки - займусь. Может во время холодных зимних вечеров)))