АвторТема: Программа TNT.  (Прочитано 97791 раз)

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

Оффлайн Alexander

  • Сообщений: 650
  • Рейтинг +73/-1
  • Y-ДНК: J2b
Re: Программа TNT.
« Ответ #315 : 27 Ноябрь 2011, 16:39:22 »
Овод. Ещё есть вопрос по rho-скрипту, выдающему мутации на рёбрах/возраст в столетиях. Работает ли он без аддитивности? Вот пример:
xread
6 4
Base     355555
1     123415
2     366666
3     955551     
;
Best score: 12.  1 trees retained.

С помощью опции branch lengths получаем длины ветвей:
Tree 0. min.
  ┌─0 Base
├┤  ┌─2 3
  └0┤ ┌─1 2
     └0┴─1 1

При использовании скрипта получаем:
total length 37

Tree 0
          ┌─0 Base
├0/245┤       ┌─10 3
         └0/245┤          ┌─15 2
                   └10/177┴─2 1
То есть, и длины ветвей и цена всего дерева различаются.

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

Tree 0
         ┌─00 Base
├0/245┤         ┌─210 3
         └00/245┤           ┌─115 2
                    └010/177┴─12 1
И только при повторном запуске выдаёт привычный вид.

Такой глюк происходит при любых первых запусках, с аддитивностью или без.
Например, имеем
xread
6 4
Base     355555
1     123415
2     366666
3     955551     
;
ccode +0.5;

Best score: 27.  1 trees retained.
Tree 0. min. branch lengths
  ┌─0 Base
├┤  ┌─10 3
  └0┤  ┌─5 2
      └0┴─12 1

Первое включение выдаёт:
Rho-sigma mapping v.2.1 Ovod 20.02.2011
Mrate set 0.0020 per generation of 25 years
1 rho equal 2083 years
total length 27

Tree 0
          ┌─00 Base
├0/141┤         ┌─1010 3
         └00/141┤         ┌─55 2
                    └00/140┴─1212 1
При повторном запуске длины восстанавливаются:

Tree 0
          ┌─0 Base
├0/141┤        ┌─10 3
          └0/141┤       ┌─5 2
                   └0/140┴─12 1


Оффлайн Овод

  • Главный модератор
  • *****
  • Сообщений: 1769
  • Рейтинг +390/-3
  • Omnia mea mecum porto
  • Y-ДНК: R1a-M198
  • мтДНК: U4a
Re: Программа TNT.
« Ответ #316 : 27 Ноябрь 2011, 17:10:14 »
Когда Вы запускаете команду Branch Lengths у Вас на дерево уже записывается информация о минимальных длинай ветвей. Поэтому пуск скрипта после этой команды накладывает свою информацию уже поверх ранее выведенной. Отсюда накладка.
 
После распечатки дерева скрипт стирает всю информацию с ветвей. Поэтому второй пуск проходит нормально. Я пытался избавиться от эффекта первого запуска скрипта после branch lengts , но пока не получается. Мой совет - пока не пускайте перед скриптом никаких команд, размещающих информацию на дереве (типа длин ветвей или синапоморфий). Илу уж делайте повторный запуск скрипта.
 
Скрипт считает не минимальные длины ветвей (как branch lengts), а длины для конкретной разметки - они точнее. Поэтому поэтому сумма первых всегда меньше (или равна) суммы вторых. Это - нормально.

Оффлайн Alexander

  • Сообщений: 650
  • Рейтинг +73/-1
  • Y-ДНК: J2b
Re: Программа TNT.
« Ответ #317 : 27 Ноябрь 2011, 18:15:18 »
Скрипт считает не минимальные длины ветвей (как branch lengts), а длины для конкретной разметки - они точнее. Поэтому поэтому сумма первых всегда меньше (или равна) суммы вторых. Это - нормально.
А чем различаются минимальная длина и длина конкретной разметки? Так понимаю, что у конкретного дерева - конкретная разметка и соответственно длина ветви равная числу мутаций на ребре. А минимальная - определяется по множеству вариантов деревьев. У конкретного дерева может быть длина больше, но опция branch lengts укажет минимальную. Но так ли?

Оффлайн Овод

  • Главный модератор
  • *****
  • Сообщений: 1769
  • Рейтинг +390/-3
  • Omnia mea mecum porto
  • Y-ДНК: R1a-M198
  • мтДНК: U4a
Re: Программа TNT.
« Ответ #318 : 27 Ноябрь 2011, 19:14:12 »
Это смотря что Вы понимаете под "конкретным деревом". Дерево одной топологии может иметь очень много вариантов разметки. Это происходит потому, что при восстановлении предковых состояний в некоторых узлах оказываются равновероятными два или более состояний.  В результате одно дерево может быть представлено разными длинами ветвей, хотя их суммарная длина, как правило не меняется. Меняется только порядок следования возвратных и параллельный мутаций в ветвях. Отсюда - различия в их длине.
 
В книге Фельзенштейна (которую Вы имеете, как я понял) эти эффекты подробно разбираются в главе, посвященной восстановлению состояний внутренних узлов дерева заданной топологии. Здесь же я Вам на пальцах вряд ли смогу детально всё объяснить.

Оффлайн Semargl

  • "El sueño de la razón produce monstruos" ©
  • Сообщений: 5994
  • Страна: ru
  • Рейтинг +4191/-5
  • www.semargl.me
    • www.semargl.me
  • Y-ДНК: R1a [CTS3402+]
  • мтДНК: U4a2g
Re: Программа TNT.
« Ответ #319 : 01 Декабрь 2011, 09:57:00 »
Конечно, скрипт не рассчитан напрямую на вычисление возраста с применением снипов (особенно если число снипов сопоставимо с числом маркеров).
 
Однако эту трудность можно обойти. Для этого нужно перерасчитать среднюю скорость мутации в новом наборе маркеров СТР+снипы. Если принять среднюю скорость СТР-мутациий V1=0.002, а снип-мутаций - много меньшей , (на самом деле она меньше примерно в 10000 раз), то новая скорость набора будет V2=V1*n1/(n1+n2), где n1 - число СТР-маркеров, а n2- число снипов.
 
После этого константу 0.002 в теле скрипта заменить на V2. Вот и всех делов.
67 маркеров + 20 снипов
По Вашей формуле выходит:  0.002*67/(67+20) = 0.00154
в скрипте заменяю set rate на 0.00154

Было:
Цитировать
Rho-sigma mapping v.2.1 Ovod 20.02.2011
Mrate set 0.0020 per generation of 25 years
1 rho equal 144 years
2370 taxa and 4739 nodes of 87 markers on the tree.

Стало:
Цитировать
Rho-sigma mapping v.2.1 Ovod 20.02.2011
Mrate set 0.0015 per generation of 25 years
1 rho equal 192 years
2370 taxa and 4739 nodes of 87 markers on the tree.

В результате изменения rate, сильно вырос возраст узлов дерева. Хотя ранее, считая возраст на дереве, построенном без использования снипов (просто 67 маркеров), с значением rate 0.002, я получал такой же возраст узлов как и в случае с деревом 67м+20снипов и скоростью 0.002, а вот установка значения скорости в 0.0015 очень сильно меняет всю картину.
Как будет правильно? 0.002 или 0.0015 ?
Внизу два скрина одного участка дерева. Первый расчитывался со скоростью 0.002, второй - 0.0015.

Оффлайн Овод

  • Главный модератор
  • *****
  • Сообщений: 1769
  • Рейтинг +390/-3
  • Omnia mea mecum porto
  • Y-ДНК: R1a-M198
  • мтДНК: U4a
Re: Программа TNT.
« Ответ #320 : 01 Декабрь 2011, 11:36:25 »
Всё понятно. Прошлогодняя инструкция, которую Вы процитировали, относилась к прошлогодней же версии скрипта, которая не предполагала наличия снипов. У Вас же более поздняя версия, учитывающая их наличие. В ней никакой поправки на наличие снипов делать не нужно.
 
Проследите только, чтобы маркеры, отвечающие за снипы, не были в команде ССОDE объявлены аддитивными - именно по отсутствию аддитивности скрипт отличает STR от SNP при расчёте возраста.
 
Так что изменений в скрипт вносить не нужно. Кстати, сейчас я готовлю новую его версию, которую после предварительного тестирования выложу здесь же, Вам с Александром на растерзание. )))

Оффлайн Овод

  • Главный модератор
  • *****
  • Сообщений: 1769
  • Рейтинг +390/-3
  • Omnia mea mecum porto
  • Y-ДНК: R1a-M198
  • мтДНК: U4a
Re: Программа TNT.
« Ответ #321 : 01 Декабрь 2011, 11:45:55 »
Овод. Ещё есть вопрос по rho-скрипту, выдающему мутации на рёбрах/возраст в столетиях. Работает ли он без аддитивности?

Для аддитивных маркеров (например, STR) - нет. Для неаддитивных (например, SNP) - да.
 
Аддитивность является свойством маркера, а не скрипта. Скрипт обрабатывает её соответственно (как и сама ТНТ).

Оффлайн Semargl

  • "El sueño de la razón produce monstruos" ©
  • Сообщений: 5994
  • Страна: ru
  • Рейтинг +4191/-5
  • www.semargl.me
    • www.semargl.me
  • Y-ДНК: R1a [CTS3402+]
  • мтДНК: U4a2g
Re: Программа TNT.
« Ответ #322 : 01 Декабрь 2011, 11:56:16 »
Всё понятно. Прошлогодняя инструкция, которую Вы процитировали, относилась к прошлогодней же версии скрипта, которая не предполагала наличия снипов. У Вас же более поздняя версия, учитывающая их наличие. В ней никакой поправки на наличие снипов делать не нужно.
 
Проследите только, чтобы маркеры, отвечающие за снипы, не были в команде ССОDE объявлены аддитивными - именно по отсутствию аддитивности скрипт отличает STR от SNP при расчёте возраста.
 
Так что изменений в скрипт вносить не нужно. Кстати, сейчас я готовлю новую его версию, которую после предварительного тестирования выложу здесь же, Вам с Александром на растерзание. )))
+
Премного благодарен за объяснения. :)

По поводу CCODE - я особо не морочился, веса не вводил:
Цитировать
ccode +[0.66;
ccode /99 67.87;
Пока отвечал, заметил у себя ошибку в CCODE.
У меня ccode /99 67.87;, а надо ccode /99 66.86;. Правильно?

Новую версию скрипта ждем с нетерпением. Как выйдет - растерзаем обязательно. ))


Оффлайн Овод

  • Главный модератор
  • *****
  • Сообщений: 1769
  • Рейтинг +390/-3
  • Omnia mea mecum porto
  • Y-ДНК: R1a-M198
  • мтДНК: U4a
Re: Программа TNT.
« Ответ #323 : 01 Декабрь 2011, 12:09:19 »
Цитировать
Пока отвечал, заметил у себя ошибку в CCODE.
У меня ccode /99 67.87;, а надо ccode /99 66.86;. Правильно?

Было - правильно.
 
Нумерация (как таксонов, так маркеров и значений аллелей) в ТНТ идёт с нуля. Об этом нужно всегда помнить.
« Последнее редактирование: 02 Декабрь 2011, 00:57:21 от Овод »

Оффлайн Alexander

  • Сообщений: 650
  • Рейтинг +73/-1
  • Y-ДНК: J2b
Re: Программа TNT.
« Ответ #324 : 01 Декабрь 2011, 23:49:07 »
сейчас я готовлю новую его версию, которую после предварительного тестирования выложу здесь же, Вам с Александром на растерзание. )))
Заранее стало интересно. А что же ещё он сможет делать? Может, выдавать возраст в поколениях? Жалко, что так мало подписчиков скрипта.
И ещё - как бы поменьше теребить  report levels (исключающие выпрыгивание надписи Existing tree-tags will be erased), можно ли убрать её по дефолту?
Если пожелания принимаются, то пожелал бы устанавливать вид надписи по желанию, например, только возраст или только мутации на рёбрах.

Оффлайн Овод

  • Главный модератор
  • *****
  • Сообщений: 1769
  • Рейтинг +390/-3
  • Omnia mea mecum porto
  • Y-ДНК: R1a-M198
  • мтДНК: U4a
Re: Программа TNT.
« Ответ #325 : 02 Декабрь 2011, 00:56:19 »
Пока отвечал, заметил у себя ошибку в CCODE.
У меня ccode /99 67.87;, а надо ccode /99 66.86;. Правильно?

Извините, Владимир.
 
В моём предыдущем ответе на Ваш вопрос была опечатка. Я её уже поправил, но на случай, если Вы уже прочли ответ до исправления, следовало читать:
 
Было - правильно.
 
 Ибо маркеры нумеруются с нулевого, и вес 99 следует начинать присваивать с 68-го по порядку маркера (первого снипа), то есть - с 67-то, считая от нуля, как и было в первоначальном Вашем варианте.
 
У Вас же, после исправления, такой огромный вес был присвоен последнему, 67 по счёту (то есть 66-му от нуля) STR-маркеру а не снипу. Что несомненно исказит дерево.
 
Извините, что сразу не заметил свою оплошность.
 
 
Александр,
 
Каких либо новых функций в ро-скрипте не планируется. Основная проблема, которая в нём решается - неустойчивость работы в некоторых режимах. Лучшая обработка и учёт снипов. Повышение максимального к-ва маркеров и таксонов (что, к сожалению сделать непросто. так как некоторые макрокоманды в экранной версии отказываются работать при повышении размерности задачи).
 
Однако любые предложения - приветствуются. Что смогу - поправлю. Но раньше Нового Года новую версию не обещаю.

Оффлайн Semargl

  • "El sueño de la razón produce monstruos" ©
  • Сообщений: 5994
  • Страна: ru
  • Рейтинг +4191/-5
  • www.semargl.me
    • www.semargl.me
  • Y-ДНК: R1a [CTS3402+]
  • мтДНК: U4a2g
Re: Программа TNT.
« Ответ #326 : 02 Декабрь 2011, 07:24:13 »
Было - правильно.
Это Вы меня извините, Игорь.

Было неправильно - стало еще неправильнее. =)
Цитировать
У меня ccode /99 67.87;, а надо ccode /99 66.86;. Правильно?
Правда первый вариант был безобиднее.

Правильно будет:
ccode /99 67.86;
Вашей ошибки нет. Это мне, надо лучше помнить, сколько у меня маркеров в расчете.

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

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

Спасибо.
« Последнее редактирование: 02 Декабрь 2011, 07:39:51 от Тунец »

Оффлайн Овод

  • Главный модератор
  • *****
  • Сообщений: 1769
  • Рейтинг +390/-3
  • Omnia mea mecum porto
  • Y-ДНК: R1a-M198
  • мтДНК: U4a
Re: Программа TNT.
« Ответ #327 : 02 Декабрь 2011, 13:40:41 »

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

Спасибо.

Можно. Только будьте готовы к тому, что в некоторых узлах дерева окажутся множественные значения отдельных маркеров гаплотипа (аллели которых равновероятны). В результате может образоваться комбинаторно большое множество предковых гаплотипов в одном узле.
 

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

  • Сообщений: 10107
  • Страна: 00
  • Рейтинг +1380/-7
  • Ultimate Matriarchy
Re: Программа TNT.
« Ответ #328 : 02 Декабрь 2011, 14:15:50 »
В результате может образоваться комбинаторно большое множество предковых гаплотипов в одном узле.

Я использую объединение всех MP-деревьев. Пользователю от него конечно немного толку, но более простого способа визуализации множественности не знаю.

Оффлайн Овод

  • Главный модератор
  • *****
  • Сообщений: 1769
  • Рейтинг +390/-3
  • Omnia mea mecum porto
  • Y-ДНК: R1a-M198
  • мтДНК: U4a
Re: Программа TNT.
« Ответ #329 : 02 Декабрь 2011, 16:24:21 »
Визуализации - согласен. Но для распечатки лучше просто перечислять вариантные значения аллелей через запятую (если таковые найдутся). Пользователь тогда сам сможет оценить всё множество комбинаторных вариантов.
 
Иначе может получиться довольно длинный список. А если в выборке участвуют гаплотипы разной длины - то практически бесконечно длинный.
 
Но как показывает практика, для 67-маркерных R1a почти все внутренние узлы одновариантны, лишь в десятке-другом узлов (примерно из 5000) наблюдаются вариации в одном, максимум двух маркерах.
 
А если выбросить палиндромные - дерево становится почти сказочно чистым.  :)

 

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

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