АвторТема: Новое средство для визуализации ДНК-генеалогических связей по данным 23andme  (Прочитано 7881 раз)

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

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

  • ...
  • Сообщений: 10364
  • Страна: ee
  • Рейтинг +761/-8
Начал работу над небольшим браузером ДНК-генеалогических связей и пересечений на основании собственной базы данных о своих генетических кузенов. Для визуализации этих данных решил частично модифицировать Flex-библиотеку, а также базовый интерфейс приложения Birdeye Ravis (со временем планирую занятся hard-coding'ом компонентов layout и base, входящих в библиотеку этого приложения -libRavis).

Рабочее название приложения -Geneflex

Окончательный вариант будет готов летом, а пока можно посмотреть то, что получилось на начальной стадии:









Оффлайн Yulita

  • Сообщений: 884
  • Страна: ua
  • Рейтинг +177/-0
  • Стоя в кругу ко всем лицом не будешь...
  • Y-ДНК: R1a1a1 (M417) - дедушка по папе
  • мтДНК: U5a1 - я; K1a1b1a - бабушка по папе; H1c - прабабушка по папе
Вадим, нет слов! Впечатляет!
А чем отличаются красные хромосомки от зеленых?

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

  • ...
  • Сообщений: 10364
  • Страна: ee
  • Рейтинг +761/-8
Вадим, нет слов! Впечатляет!
А чем отличаются красные хромосомки от зеленых?

Пока ничем особенным, просто обозначил зеленым те ветви, где родство может быть реконструировать
по генеалогии. В далнейшем можно придумать другую легенду для обозначения.
Еще у меня есть задумка учитывать в длине линка, т.е длине ребра, соединяющего два узла генеалогическую дистанцию, таким образом, чтобы бы линк графа до более дальных "кузенов" был длинее, а до ближайших - короче :)

Оффлайн Овод

  • Главный модератор
  • *****
  • Сообщений: 1769
  • Рейтинг +390/-3
  • Omnia mea mecum porto
  • Y-ДНК: R1a-M198
  • мтДНК: U4a
Замечательно, Вадим! Огромный плюс!
 
Надеюсь, этот замечательный проект не сильно отвлечёт Вас от других затей. Рад, что Ваши помыслы всё же - с нами.

Оффлайн Centurion

  • 100% Earth (Solar System) genofond
  • Администратор
  • *****
  • Сообщений: 9548
  • Страна: ru
  • Рейтинг +571/-2

Оффлайн Аббат Бузони

  • ...
  • Сообщений: 19888
  • Страна: ru
  • Рейтинг +1818/-60
  • Y-ДНК: I1-SHTR7+
  • мтДНК: H16-a1-T152C!
Он еще уходить собирался.  :o

+

Оффлайн napobo3

  • Сообщений: 1257
  • Страна: il
  • Рейтинг +348/-2
  • Y-ДНК: J-FGC5231
  • мтДНК: N1b2
Поток риспектов, Вадим. Надеюсь, что Вы забросите куда подальше всякие неотносящиеся к этому проекту глупости и полностью посвятите себя ему.

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

  • ...
  • Сообщений: 10364
  • Страна: ee
  • Рейтинг +761/-8
Спасибо всем на добром слове.

Собственно проект с чисто визуальной точки зрения готов.
Единственно нужно будет довести до ума пару технических нюансов, но тут нужен человеке который разбирается в языках Flex и Action Script 3. Ну, или хотя бы в принципах объектно-ориентированного программирования. В принципе эти языки по синтаксису и семантике очень похожи как на Java, так и на C#.

Оффлайн Anode

  • Группа N
  • *
  • Сообщений: 1423
  • Страна: ca
  • Рейтинг +147/-0
  • PS1 -> TT1 -> EE1 -> PS2
  • Y-ДНК: N1c1
  • мтДНК: H10a1, U5b1
Спасибо всем на добром слове.

Собственно проект с чисто визуальной точки зрения готов.
Единственно нужно будет довести до ума пару технических нюансов, но тут нужен человеке который разбирается в языках Flex и Action Script 3. Ну, или хотя бы в принципах объектно-ориентированного программирования. В принципе эти языки по синтаксису и семантике очень похожи как на Java, так и на C#.

Я Flex и Action Script 3 совсем не знаю и даже не знаю - как к ним подойти, но знаю одного специалиста, к кому могу обратиться, кто на них работал.
Не могли-бы вы описать проблему (что надо сделать, как и где получить код чтобы посмотреть итд).

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

  • ...
  • Сообщений: 10364
  • Страна: ee
  • Рейтинг +761/-8
Код здесь

Нужно сделать так, чтобы в функциях интерфейса ILayoutAlgorithm get и set вместо дефолтного
"пустого значения" была прописана hard-загрузка параметров длины линков для байндинга (если можно, то через BindingUtils) аттрибутов @linklength из подзагружаемого в Flex приложение XML файла.

Это необходимо для того, чтобы линки (т.е ребра графа) были бы пропорциональны генетической дистанции.
В оригинальном коде это не прописано.

public function set linkLength(r:Number):void {
                        /* NOP */
                }
               
                /**
                 * @private
                 * */
                public function get linkLength():Number {
                        /* NOP
                         * but must not return 0, since some layouter
                         * do not care about LL, but the vgraph will
                         * not draw if LL is 0
                         * so default is something else, like 1
                         */
                        return 1;



Можно в принципе сделать overriding этих функций в классах, которые имплементируют функции и методы базового класса BaseLayouter.as.

Я тупо поменял код, но ничего неизменилось, хотя библиотека libRavis откомпилировалась без ругани
private var _xmlData:XML
....
[Bindable]
public function set linkLength(r:Number):void {
/* NOP */
}

/**
* @private
* */
public function get linkLength():Number {
/* NOP
* but must not return 0, since some layouter
* do not care about LL, but the vgraph will
* not draw if LL is 0
* so default is something else, like 1
*/
return _xmlData.linklength;
}
« Последнее редактирование: 26 Март 2010, 00:19:52 от Vadim Verenich »

Оффлайн Mich Glitch

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

Одна из них ДНК-генеалогическая - оценка степени родства. Решается только попарно. Обычная УПСометрия. Третий-лишний. (Молчу про четвёртого, пятого и далее везде.)

Вторая - генеалогическая. Построение схемы родственных связей. Наилучший формат визуального представления генеалогических данных - генеалогическое дерево. Построение выполняется на основании уже имеющихся степеней родства. Иными словами, получить степени родства - это первая задача. Выстроить по ним диаграмму родственных отношений - вторая.
Вторая задача мало того, что решаемая. Так ещё и имеющая единственность решения. О возможных способах её решения вот тут (ссылка).

Резюмирую: визуализатор в нынешнем виде, суть, трудозатратная (для разработчика) и бесполезная в практическом плане, красивая игрушка.
Оценка степени родства является независимой задачей из области УПСометрии.
Построение схемы родственных отношений (генеалогического дерева) осуществляется на уже имеющихся степенях родства.

Визуализатор можно будет попытаться построить как синтез двух независимых задач только после того, как
а) будет получена методика достоверной оценки степеней родства;
б) будет созадана программа построения генеалогического дерева на основании степеней родства и совпадения-отличия данных по игреку и мито.

Иначе говоря, речь будет идти не просто о визуализаторе, а о серверной программе, которая на основании многочисленных RAW-data будет выдавать построение генеалогического дерева для выбранной персоны.

Оффлайн Anode

  • Группа N
  • *
  • Сообщений: 1423
  • Страна: ca
  • Рейтинг +147/-0
  • PS1 -> TT1 -> EE1 -> PS2
  • Y-ДНК: N1c1
  • мтДНК: H10a1, U5b1
Нужно сделать так, чтобы в функциях интерфейса ILayoutAlgorithm get и set вместо дефолтного
"пустого значения" была прописана hard-загрузка параметров длины линков для байндинга (если можно, то через BindingUtils) аттрибутов @linklength из подзагружаемого в Flex приложение XML файла.

Вадим, мой флашевик сейчас загружен работой даже в выходные: пока не удалось его растормошить на модификацию.
(Отсюда и моё молчание в этой ветке)

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

  • ...
  • Сообщений: 10364
  • Страна: ee
  • Рейтинг +761/-8
Теперь посмотрим, что даёт (в перспективе) визуализатор.
1) Идёт указание на участки хромосом.
2) Идёт оценка степени родства.
Иными словами, сразу имеем неустраняемый концептуальный просчёт: попытку получить два-в одном. Две различных задачи собираемся решить одновременно.

Визуализатор ничего сам не считает, все предварительно высчитаные данные содержатся в подгружаемом в визуализатор XML файле. Ведь это именно графический визуализатор, а не программа для расчетов.

Цитировать
Вторая - генеалогическая. Построение схемы родственных связей. Наилучший формат визуального представления генеалогических данных - генеалогическое дерево. Построение выполняется на основании уже имеющихся степеней родства.

Любой граф можно представить в виде генеалогического дерева. Более того, по приведенным скриншотам видно, что метод представления графа в виде иерархического дерева (коим и является генеалогическое дерево) уже реализован в исходном коде. Причем в отличии от обычных генеалогических деревьев, удобство флэша в силу его динамичности кроется в возможности перемены корневых узлов по методу drug&drop. Там еще много чего есть существенного, и не все функции показаны.

Оффлайн Mich Glitch

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

По поводу второй части (генеалогического построения), то как не верти, а всё равно придёшь либо к вертикальному генеалогическому древу (поколенные этажи идут по вертикальной оси), либо к горизонтальному (поколения расположены справа налево).

Резюмирую: абстрагируйтесь от вопросов реализации. Какая разница XML файл, или код С++?! Что с того, что я скажу что-то по-русски, или английски, или французски, или на ломаном немецком? Вопрос не о том как сказать, а что сказать.
Какова общая идея визуализатора?
Есть ли у него какое-то практическое применение? Или только декоративное?
Ответьте прежде всего себе.

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

  • ...
  • Сообщений: 10364
  • Страна: ee
  • Рейтинг +761/-8
Прекрасно.
Основные вопросы остались за рамками ответов.
В чём смысл визуализатора?
Что дают номера хромосом и участки хромосом?
Просто красивые графы?
Типа, заставки экрана с фигурами Безе?
Или же они признаны как-то помочь получить степени родства?
Если да, то степени родства расчитываются попарно. Только попарно.
Если нет, то это просто игрушка. Можно ещё музычку добавить.

По поводу второй части (генеалогического построения), то как не верти, а всё равно придёшь либо к вертикальному генеалогическому древу (поколенные этажи идут по вертикальной оси), либо к горизонтальному (поколения расположены справа налево).

Резюмирую: абстрагируйтесь от вопросов реализации. Какая разница XML файл, или код С++?! Что с того, что я скажу что-то по-русски, или английски, или французски, или на ломаном немецком? Вопрос не о том как сказать, а что сказать.
Какова общая идея визуализатора?
Есть ли у него какое-то практическое применение? Или только декоративное?
Ответьте прежде всего себе.

Ответ содержится в названии топика - средство для визуализации, которое делаю сугубо с целью визуализации группировок найденных "кузеном" по общим найденным УПС. Это и есть

Я на 100% уверен, что по данным, которые мы получаем из RF вообще невозможно вычислить степень родства, а тем более графически отобразить степень родства с лицами, с которыми у тестируемого нет пересений, но есть пересечения с теми лицами, которые - в свою очередь, имеют пересечения с тестируемым по другим хромосомам. Поэтому-то и не разделяю Вашего оптимизма.
Где гарантия, что родство проходить именно по общей линии, а не по прочим сочтенным линиям?

 

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

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