АвторТема: Определение всех степеней кровного родства для двух персон по файлу Гедком  (Прочитано 45817 раз)

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

Оффлайн Anode

  • Группа N
  • *
  • Сообщений: 1423
  • Страна: ca
  • Рейтинг +147/-0
  • PS1 -> TT1 -> EE1 -> PS2
  • Y-ДНК: N1c1
  • мтДНК: H10a1, U5b1
Спасибо Вам ещё раз (+)  - за идею: было очень интересно. Вроде всё что было задумано - сделано (усовершенствований, конечно же, может быть придумано море, как например сохранение всех сеттингов, показ ID в дроп-дауне, в гуе, итд, но то как раз совсем не интересно, в отличие от алгоритмических задач и обработки данных).

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

  • Genus regis
  • Сообщений: 36936
  • Страна: ca
  • Рейтинг +3773/-48
  • Y-ДНК: J2b1
  • мтДНК: H6a1a5a
Это Вам спасибо за реализацию!
:)

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

  • Genus regis
  • Сообщений: 36936
  • Страна: ca
  • Рейтинг +3773/-48
  • Y-ДНК: J2b1
  • мтДНК: H6a1a5a
Эх, хорошо бы было добавить окно-опцию поиска ближайшего(-их) общего(-их) предка(-ов) для трёх и более выбранных персон.    ::)

Оффлайн Anode

  • Группа N
  • *
  • Сообщений: 1423
  • Страна: ca
  • Рейтинг +147/-0
  • PS1 -> TT1 -> EE1 -> PS2
  • Y-ДНК: N1c1
  • мтДНК: H10a1, U5b1
А быть может, руки и дойдут до этого, кто знает... (хотя после пары лет многое из кода уже позабылось, надо будет снова "въезжать" в дело...) Пока не обещаю.
Но на всякий случай, прокомментируйте, плиз: как это окно/таб себе видите?
Типа 2 текст-филда (поля ввода) для двух @ID@ + кнопка, позволяющая динамически добавлять 3ю, 4ю итд персону?
Затем кнопка "Process", после нажатия которой показывается либо сообщение, что общий предок не найден, либо один ближайший предок (TMRCA), так?
Или как-то по-другому?

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

  • Genus regis
  • Сообщений: 36936
  • Страна: ca
  • Рейтинг +3773/-48
  • Y-ДНК: J2b1
  • мтДНК: H6a1a5a
Василий,
Ваша программа прекрасно показывает все степени родства для двух человек.
А теперь представьте, что можно было бы проверять, имеют ли три (четыре, пять и т. д.) персоны общего для всех предка. То есть делать триангуляцию (традиционно напоминаю, что сей термин в данном контексте употребляю с большой вольностью), или выделение кластеров.
Вывод же результатов стандартный, указывается имя этого самого БОП(-ов), а для каждой из персон прописывается степень родства с предком и наши с Вами закорючки, типа, ММЖЖМ.
И ведь сделать это Вам относительно просто (извиняюсь, что берусь давать оценки чужим трудозатратам).
Надо для каждой из персон создать файл atree.txt, а затем эти файлы сравнить на предмет поиска общих персон.

:)

Оффлайн Anode

  • Группа N
  • *
  • Сообщений: 1423
  • Страна: ca
  • Рейтинг +147/-0
  • PS1 -> TT1 -> EE1 -> PS2
  • Y-ДНК: N1c1
  • мтДНК: H10a1, U5b1
Не глядя в код, насколько я понимаю, здесь главная проблема (скорее всего не одна) - это идентификация персоны. Что 2 узла в 2х файлах - один и тот же человек. Уникальный идентификатор определен только внутри одного файла Гедком. Нужны эвристики (предположения) - насколько далеко можно идти при нахождении одного и того же имени и описки  в имени, особенно когда даты отличны или не указаны. И что делать если деревья двух Гедкомов различны.

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

  • Genus regis
  • Сообщений: 36936
  • Страна: ca
  • Рейтинг +3773/-48
  • Y-ДНК: J2b1
  • мтДНК: H6a1a5a
Не глядя в код, насколько я понимаю, здесь главная проблема (скорее всего не одна) - это идентификация персоны. Что 2 узла в 2х файлах - один и тот же человек. Уникальный идентификатор определен только внутри одного файла Гедком. Нужны эвристики (предположения) - насколько далеко можно идти при нахождении одного и того же имени и описки  в имени, особенно когда даты отличны или не указаны. И что делать если деревья двух Гедкомов различны.

А по мне, речь идёт о простой обработке текстовых файлов.

Итак.
Про оконный интерфейс, изначально выставленный на три персоны, а потом по желанию добавляющий новых, - умалчиваю. Вроде несложно получить исходные Ай-Ди - задачу.

Коснусь только отработки.

1. Для каждой из трёх и более персон создаём служебные atree.txt файлы. Основное их отличие от файлов стандартных, заключается в том, что в качестве идентификатора используется уникальный Гедком указатель (типа, @I349@).

*** Напомню, что в файле предки уже расположены упорядочено - от ближних, к дальним:

M Михаил Иванович /Темош/ (18 APR 1961)
MM Иван Вуколович /Темош/ (1 JUL 1928-14 MAR 2010)
MF Маргарита Васильевна /Евдокимова (Евдокимова)/ (13 OCT 1928)
MMM Вукол Антонович /Тимош/ (5 FEB 1891-3 MAR 1953)
MMF Стефанида Трофимовна /Дзюбенко/ (14 NOV 1896-28 DEC 1964)
MFM Василий Никифорович /Евдокимов/ (27 FEB 1900-6 NOV 1939)
MFF Мария Михайловна /Евдокимова (Ларионова)/ (26 FEB 1903-11 MAY 1981)
MMMM Антон Лаврентьевич /Тимошев/ (1856-3 DEC 1919)
MMMF Хиония Стахиевна /Тимошева (Гемега)/ (14 JUN 1863)
MMFM Трофим Кассианович /Дзюбенко/ (23 JUL 1855-28 JAN 1920)
MMFF Мария Никифоровна /Дзюбенко (Ильченко)/ (20 NOV 1856-3 MAY 1919)
...
и т. д.


2. Берём в первом файле atree.txt первую персону и смотрим, есть ли она во втором файле и в третьем (ну, и в четвёртом, пятом, шестом и т.д., если персон больше трёх).

3. Если персона отсутствует хотя бы в одном из файлов, - переходим ко следующей.

4. Если персона присутствует во всех файлах, то в выходной файл для каждой выверяемой персоны вписываем:
а) общий предок имя (полная форма ФИО и даты жизни);
б) имена (полная форма ФИО и даты жизни) исходных персон (тех, для которых ищем общего предка);
в) после каждого из имён степень родства (типа, праправнук) и трассировка родословия (типа, МЖММ; как обычно, в отличии от Вашей нотации, пишу без первой буквы).

5. С префиксом, типа, МЖММ для первой проверяемой персоны удаляем всех персон из первого atree.txt.

6. Переходим к следующей персоне. В заисимости от того, присутствует ли она во всех файлах, или нет, переходим к пункту 3, или 4; 5.

7. Как только все персоны в первом файле закончились - конец.



*** Я даже не заморачиваюсь на оптимизацию этого немудрящего алгоритма.
Даже при сотне проверяемых персон, отработка на современных железках пройдёт почти мгновенно.     :)

Оффлайн Anode

  • Группа N
  • *
  • Сообщений: 1423
  • Страна: ca
  • Рейтинг +147/-0
  • PS1 -> TT1 -> EE1 -> PS2
  • Y-ДНК: N1c1
  • мтДНК: H10a1, U5b1
Теперь понял.
Т.е. мы всё-таки имеем уникальные @ID@ для каждой персоны, пришедшие с одного входного файла (одной базы данных).
Я было предположил, что на входе программы много Гедком- или atree- файлов, которые нужно объединять.
(Мой конфуз произошёл потому, что у меня давно появлялись идеи о написании объединителя многих файлов, берущихся с интернета)

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

  • Genus regis
  • Сообщений: 36936
  • Страна: ca
  • Рейтинг +3773/-48
  • Y-ДНК: J2b1
  • мтДНК: H6a1a5a
Я было предположил, что на входе программы много Гедком- или atree- файлов, которые нужно объединять.
Нет, предпосылки к созданию модуля следующие.
Имеется ГЕДКОМ файл, объединяющий около 41 тысячи человек.
Имеется почти три десятка человек, внесённых в этот файл и протестированных либо у 23эндМи, либо у ФФ. (Число это продолжает расти.)
Появляются сторонние люди, имеющие пересечения с несколькими протестированными.
Данный add-on позволит автоматизировать поиск возможных общих фамильных линий.

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

  • Genus regis
  • Сообщений: 36936
  • Страна: ca
  • Рейтинг +3773/-48
  • Y-ДНК: J2b1
  • мтДНК: H6a1a5a
(Мой конфуз произошёл потому, что у меня давно появлялись идеи о написании объединителя многих файлов, берущихся с интернета)

Задача эта почти не поддающаяся автоматизации.
Функция объединения нескольких ГЕДКОМ файлов реализована, например, в программе Legacy.
Но!
Вы можете выставить низкий уровень проверки и тогда будете иметь миллион дублирующих персон.
Если же выставить высокий уровень, то миллион персон придётся проверить.
Я довольно плотно в теме, так как много бесплодных усилий потратил на параллельный мультипользовательский ввод в базу. В результате всё равно остался у разбитого корыта, сиречь, застрял на последовательном однопользовательском вводе.  :-\

Оффлайн Anode

  • Группа N
  • *
  • Сообщений: 1423
  • Страна: ca
  • Рейтинг +147/-0
  • PS1 -> TT1 -> EE1 -> PS2
  • Y-ДНК: N1c1
  • мтДНК: H10a1, U5b1
Ясно. Я тут в код посмотрел, и ужаснулся: неужели это писал я? Многое совершенно забыл.
P.S. Пока ничего не обещаю.

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

  • Genus regis
  • Сообщений: 36936
  • Страна: ca
  • Рейтинг +3773/-48
  • Y-ДНК: J2b1
  • мтДНК: H6a1a5a
Ясно. Я тут в код посмотрел, и ужаснулся: неужели это писал я? Многое совершенно забыл.
P.S. Пока ничего не обещаю.

Всё равно спасибо!

:)

Оффлайн Anode

  • Группа N
  • *
  • Сообщений: 1423
  • Страна: ca
  • Рейтинг +147/-0
  • PS1 -> TT1 -> EE1 -> PS2
  • Y-ДНК: N1c1
  • мтДНК: H10a1, U5b1
(Мой конфуз произошёл потому, что у меня давно появлялись идеи о написании объединителя многих файлов, берущихся с интернета)

Задача эта почти не поддающаяся автоматизации.
Функция объединения нескольких ГЕДКОМ файлов реализована, например, в программе Legacy.
Но!
Вы можете выставить низкий уровень проверки и тогда будете иметь миллион дублирующих персон.
Если же выставить высокий уровень, то миллион персон придётся проверить.
Я довольно плотно в теме, так как много бесплодных усилий потратил на параллельный мультипользовательский ввод в базу. В результате всё равно остался у разбитого корыта, сиречь, застрял на последовательном однопользовательском вводе.  :-\

А жаль, так бы хотелось супер-базу создать. Коллективный разум - он бы зафиксил проблемы в дубликатах ветвей (как это делается в википедии, или как находится что-то через гугл-мапс), и процесс бы наверняка "сходился" бы к чему-то более правильному. Только подумайте: на земле жило во все времена порядка 80 млрд. человек, и даже описать всех (что конечно не возможно) - это всего 4-16Тб база данных (без метаданных: только нормализованные имя-фамилия + даты + место рождения, можно даже ставить GPS-координаты, что уже достаточно). И многим людям не нужно будет делать дублирующую поисковую работу, и многие желающие сразу получат доступ к генеалогии. Ну, и все конечно окажутся обладателями (и быть причастными к) супер-генеалогии человечества.

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

  • Genus regis
  • Сообщений: 36936
  • Страна: ca
  • Рейтинг +3773/-48
  • Y-ДНК: J2b1
  • мтДНК: H6a1a5a
А мне мечтается о возможности построения генеалогического древа (естественно, всеохватывающего, скажем, в рамках 23эндМи, или у ФФ) только по результатам ДНК тестирования (с незначительными оговорками).
Входные данные:
а) митосубклад;
б) игрек субклад;
в) игрек СТР гаплотип;
г) степень родства по аутосомам;
д) степень родства по икс хромосоме;
е) данные документальной генеалогии;
ж) анализ дДНК.

То есть, предки будут указаны без имён большей частью; с приблизительными годами рождения; с вероятностными оговорками.
Но тем не менее, для пары человек будет указано, что предок ММЖЖМ персоны А является в то же самое время предком ЖЖЖМЖМ персоны Б.

И всё это в основном только по результатам тестирования современников.

Оффлайн Anode

  • Группа N
  • *
  • Сообщений: 1423
  • Страна: ca
  • Рейтинг +147/-0
  • PS1 -> TT1 -> EE1 -> PS2
  • Y-ДНК: N1c1
  • мтДНК: H10a1, U5b1
А мне мечтается о возможности построения генеалогического древа (естественно, всеохватывающего, скажем, в рамках 23эндМи, или у ФФ) только по результатам ДНК тестирования (с незначительными оговорками).
Входные данные:
а) митосубклад;
б) игрек субклад;
в) игрек СТР гаплотип;
г) степень родства по аутосомам;
д) степень родства по икс хромосоме;
е) данные документальной генеалогии;
ж) анализ дДНК.

То есть, предки будут указаны без имён большей частью; с приблизительными годами рождения; с вероятностными оговорками.
Но тем не менее, для пары человек будет указано, что предок ММЖЖМ персоны А является в то же самое время предком ЖЖЖМЖМ персоны Б.

И всё это в основном только по результатам тестирования современников.

Я уверен, рано или поздно, обе задачи будут решены: либо гуглом, либо "коллективным разумом", а главное - объединены.
Лучше пусть это будет открытая база.


 

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

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