АвторТема: Краткий практический курс работы с Муркой  (Прочитано 16584 раз)

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

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

  • 100% Earth (Solar System) genofond
  • Администратор
  • *****
  • Сообщений: 9548
  • Страна: ru
  • Рейтинг +571/-2
Валерий, Вадимы :) Маугли, все кто освоил Мурку, поделитесь опытом работы в программе, тонкостями и подводными камнями на реальных примерах (с картинками) по возможности.

Заранее спасибо, потому что многие хотят освоить прогу.

Оффлайн Mich Glitch

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

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

Оффлайн Valery

  • Сообщений: 10107
  • Страна: 00
  • Рейтинг +1380/-7
  • Ultimate Matriarchy
Для определенности будем считать, что вы запускаете Мурку из оболочки bash. Ничего системно-зависимого в Мурке нет поэтому то же самое можно запросто сделать и из-под виндового шелла cmd.

Идем в корень Мурки:

cd <путь к корню Мурки>

Этап 1: создание RDF из YCH

Потребуется запуск программы prepare.

Сначала надо выбрать метрику из двух вариантов, это дела вкуса. Результат будет немного различаться, а иногда и много. Командный файл для запуска поставляется в дистрибутиве, но здесь мы опишем все заново.

a) Метрика без бинаризации - произвольная дискретная метрика. Она задается RDF-файлом и матрицей состояний. Если величины аллелей (ака состояний) лежат в диапазоне 0-50 (что скорее всего так), то матрица нам и не нужна так как уже поставляется в дистрибутиве в папке data/metric.

./prepare -T "YCH2RDF" -S "Y" -V "VP" -I "1" -F "20.0" -i "data/myych.ych" -o "data/myrdf.rdf" -s "data/ymx" -p "INEQ" -d 2 -n 2
-i "data/myych.ych" входной YCH в папке data

-o "data/myrdf.rdf" выходной RDF в папке data

-p "INEQ" значит что мы имеем дело с произвольной задаваемой матрицей дискретной метрикой, без этой опции prepare решит что расстояние скажем между аллелями 11 и 15 не 4 а 1; если на выходе нужна матрица, то надо добавить в этот же параметр опцию MX и еще передать параметр -s но нам он не нужен, в примере выше я оставил его для проформы: как уже говорилось, стандартная матрица расстояний 50x50 в дистре есть.

-d 2 где размер данных 2 символа (что достаточно для кодирования аллелей 11, 12, 13,...)

-n 2 и размер нумерических данных тоже будет 2 (если у нас не будет весов или частот для записи которых не хватит 2 цифр - тогда ставим что надо хоть 100 - и имеем гигантский RDF файл)

b) Метрика с бинаризацией - она же метрика Хэмминга, как в Нетворке: состояния 0 и 1.

./prepare -T "YCH2RDF" -S "Y" -V "VP" -I "1" -F "20.0" -i "data/myych.ych" -o "data/myrdf.rdf" -s "data/ymx" -p "BINARIZE|CONSEQ|SHORTNAMES" -d 1 -n 2
Смысл параметров уже разобрали, рассмотрим только отличия бинарного случая.

-p "BINARIZE|CONSEQ|SHORTNAMES" этот набор опций более всего приближает то что будет на выходе к Нетворковскому варианту. Опция MX нам и на этот раз не понадобится так как матрица для бинарного случая конечно уже есть.

-d 1 Нетворк понимает RDF файлы где размер данных 1 символ и не больше

-n 2 Длина числовых строк пусть опять будет 2, нам хватит

Теперь у нас в руках RDF файл, главное не забыть какой он - бинарный или нет, и какими были значения параметров -d и -n при его создании, они нам понадобятся при запуске Мурки.

PS. Я писал выше команду "./prepare" предполагая что файл лежит в корне Муркиной директории. Но при установке по умолчанию он лежит в папке <корень мурки>/bin или еще конкретнее /usr/local/murka/bin и пути прописаны, поэтому достаточно вызывать исполняемые файлы так:

prepare

а саму мурку:

murka

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


Продолжение в следующем номере
« Последнее редактирование: 14 Июнь 2009, 00:03:08 от Valery »

Оффлайн Valery

  • Сообщений: 10107
  • Страна: 00
  • Рейтинг +1380/-7
  • Ultimate Matriarchy
Что такое эпсилон, его функции и как задавать его значение?

Это "порог устойчивости" при итеративных расчетах новых медиан и суммы остовных деревьев (MSN) в алгоритме MJ. При некотором сверхбольшом Эпсилон сеть станет полной медианной сетью, а при всех меньших значениях будет только ее подмножеством (точнее, множество вершин будет подмножеством множества вершин-медиан полной сети). Полная сеть содержит в себе массу минимальных штейнеровских деревьев, а для неполных сетей это не так. Поэтому малые Эпсилон не гарантируют достижения оптимума.

При увеличении Эпсилон функция стоимости минимального штейнеровского дерева не является монотонной, то есть сеть с Эпсилон 0 иногда бывает лучше чем с Эпсилон 10. Особенно часто это наблюдается на небинарных данных. Но, как говорилось выше, при использовании некоторого сверхбольшого Эпсилон (например равного максимальному расстоянию между гаплотипами метрики, число локусов у нас конечно) мы достигаем штейнеровского оптимума и дальнейшее увеличение Эпсилон более не меняет сеть.

При вычислении сетей по STR-данным большие Эпсилон (начиная примерно с величины равной среднему весу) делают процесс практически невозможным, даже для небольшого числа гаплотипов. Рекомендуется устанавливать 0.


Murka MJ, в отличе от Нетворка, использует два параметра Эпсилон:

 -e : Epsilon (MSN)
 -x : Epsilon (network growth)

которым обычно рекомендуется задавать одинаковое значение. При указании отрицательных значений -e и -x Murka MJ считает полную сеть, однако для этой цели рекомендуется пользоваться программой Murka FN которая выполняет эту работу значительно быстрее и не зависит от Эпсилон. Размер графа полной сети даже на нескольких десятках гаплотипов может достигать миллионов ребер. Мурка позволяет вычислить даже для этого количества приблизительное (неточное) штейнеровское дерево.

Оффлайн Valery

  • Сообщений: 10107
  • Страна: 00
  • Рейтинг +1380/-7
  • Ultimate Matriarchy
Переношу сюда крайне полезный комментарий ув. Wertner'а из соседней темы:

Иначе говоря, величина эпсилон - это параметр "широты" алгоритма поиска лучшей сети. При эпсилон = 0 программа пытается найти средние точки как можно быстрее для групп самых близких гаплотипов, а при увеличении эпсилон ей позволяется проявить гибкость и найти среднюю точку при анализе групп, включающие в себя не только самые близкие гаплотипы.
Это улучшает результат, но стремительно увеличивает время программы.

Эпсилон задается величиной того же порядка, что и веса. Если эпсилон меньше самого маленького веса, то он все равно что равен нулю.
Насколько помню, в Fluxus Network не удается рассчитать сеть из 50 гаплотипов (67-маркерных) с эпсилон больше половины весов мутаций.

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

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

но даже не вооруженным глазом видно, что оно совсем не похоже на реальность  :( рядом сидят абсолютно разные и не близкие гаплотипы.

Чо делать? Посоветуйте.


Оффлайн Valery

  • Сообщений: 10107
  • Страна: 00
  • Рейтинг +1380/-7
  • Ultimate Matriarchy
1. Какова метрика? С INEQ или BINARIZE?
2. Эпсилон 0?

Приведи плиз строку вызова я не помню что там в runmjstrineq0. Также можешь повесить сюда оба файла - YCH и RDF я взгляну.


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

  • 100% Earth (Solar System) genofond
  • Администратор
  • *****
  • Сообщений: 9548
  • Страна: ru
  • Рейтинг +571/-2
С какими пакетными файлами можно работать для Y-гаплотипов?

пробывал все, но половина выдает ошибки Bad seaquence file form и тд

что вообще нужно чтобы построить правильное дерево для игрика?

есть конкретные рекомендации? поделитесь пожалуйста.

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

плиз

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

  • 100% Earth (Solar System) genofond
  • Администратор
  • *****
  • Сообщений: 9548
  • Страна: ru
  • Рейтинг +571/-2
Приведи плиз строку вызова я не помню что там в runmjstrineq0.

murka -T "MJ" -S "Y" -V "VP" -I 1 -F 20.0 -H "N" -P "20;1.4;2.25;5000;20;1.4;2.25;5000;0;0.75;500;50;1;" -C "0;50;0;" -M "0; 0; 0; 0; FASTUNION; 1; 0; 0; SEP1|NTT|NT1|NT2|NTD|LEUC|PS|SL|NV|LE|VR|NTDVR|PT|PTE|DA|SEPDA|NTDX|PTEX|EXTE|EXTV|EXTEE|EXTVDA|EXTEEDA|EXTVDAP|EXTEEDAP|ASCPRN|EXPV; 0; LBDA|KEEPBND|BNDREPEATS2|BNDPERC2|EXTTEST2|EXTTESTP3|REDREP2|PROCMSG1|NWPERFMON|REDPMLEV2|PRUNE2|COMPLTRAVERSAL; " -J 0 -X 0 -Y 0 -U 0 -W 0 -Z 0 -d 2 -n 2 -s "BCACHE|DCACHE|THASH" -j "CONSTSPLITS|EQSPLITS|PARTITIONING|POSTPROC|ROOTING|CONTRACTNT2|MIDPOINTROOT" -e 0 -x 0 -t "RDF" -i "data\m102.rdf" -r "data\metric\states_str0050eq" -o "SEQTABLE|TAXATABLE|CHARTABLE|CHARCHNGTABLE|NW|NWEXT|STP|CMATRIX" -c "cs_" -p "nw" -q "stat" -u "nwlinktbl#" -O "seq.rdf" -w "distmx" -y "compmx" -z "taxatbl#" -a "chartbl#" -k "charchngtbl#" -Q "tdistmx" -R "mpcmp" -B "mpbootbl" -G "GraphViz; 1; ROOTPREFERRED|DIST|CHNAMES|CHCHNG|TXNAMES|TXFR|TXFRSZ|TXCD|CALL|ROOTONLY|TREEONLY|CONTRACT; 1.8; 1.1; 0.2; 2.0; 96.0; png; C:\gv\bin\dot.exe; C:\gv\bin\neato.exe; viz\nw#.dot; viz\nw#.png; viz\tpl\nwtpl.txt; "

Оффлайн Valery

  • Сообщений: 10107
  • Страна: 00
  • Рейтинг +1380/-7
  • Ultimate Matriarchy
Строка вызова которую ты использовал требует генерации RDF с помощью такого вызова prepare:

-p "INEQ"
-d 2
-n 2

какие параметры prepare были у тебя?

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

  • 100% Earth (Solar System) genofond
  • Администратор
  • *****
  • Сообщений: 9548
  • Страна: ru
  • Рейтинг +571/-2
1. Какова метрика? С INEQ или BINARIZE?
2. Эпсилон 0?

1. INEQ
2 да

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

  • 100% Earth (Solar System) genofond
  • Администратор
  • *****
  • Сообщений: 9548
  • Страна: ru
  • Рейтинг +571/-2
Строка вызова которую ты использовал требует генерации RDF с помощью такого вызова prepare:

а где это указывается в том бат-файле?

Вот такой вызов для runych2rdf корректен?
prepare -T "YCH2RDF" -S "Y" -V "VP" -I "1" -F "20.0" -i "data\m102.ych" -o "data\m102.rdf" -s "data/ymx" -p "BINARIZE|CONSEQ|SHORTNAMES" -d 2 -n 2

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

  • 100% Earth (Solar System) genofond
  • Администратор
  • *****
  • Сообщений: 9548
  • Страна: ru
  • Рейтинг +571/-2
что вообще нужно чтобы построить правильное дерево для игрика?

есть конкретные рекомендации? поделитесь пожалуйста.

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


ps все деревья которые получаются "не те"

Оффлайн Valery

  • Сообщений: 10107
  • Страна: 00
  • Рейтинг +1380/-7
  • Ultimate Matriarchy
Ниже даю рецепты вызова Мурки. Плиз внимание:

1. Генерится только одно дерево, для получения более одного см раздел про Штейнера выше
2. Используется эвристика WPHEUR
3. Укоренение MIDPOINTROOT
4. Поправьте пути к файлам и папкам! У меня линуксовые! Также пожалуйста следите за направлением слэша, в виндоуз используется бэк-слэш, в позиксе обычный слэш.

для RDF полученных с опцией INEQ

./murka -T "MJ" -S "Y" -V "VP" -I 1 -F 20.0 -H "N" -P "20;1.4;2.25;5000;20;1.4;2.25;5000;0;0.75;500;50;1;" -C "0;50;0;" -M "0; 20; 0; 0; RESCHECK; 1; 0; 0; SEP1|NTT|NT1|NT2|NTD|LEUC|PS|SL|NV|LE|VR|NTDVR|PT|PTE|DA|SEPDA|NTDX|PTEX|EXTE|EXTV|EXTEEDAP|EXTVDA|EXTVDAP|EXPV|CUTRDA; 0; LBDA|KEEPBND|BNDREPEATS2|BNDPERC2|EXTTEST3|PRUNE2|PROCMSG2|REDPMLEV2|REDREP2|COMPLTRAVERSAL; " -J 0 -X 0 -Y 0 -U 0 -W 0 -Z 0 -d 2 -n 2 -s "BCACHE|DCACHE|THASH" -j "CONSTSPLITS|EQSPLITS|PARTITIONING|ROOTING|POSTPROC|CONTRACTNT2|ALLOWTERMROOT|MPSTAT|WPHEUR" -e 0 -x 0 -b 20 -f "" -m 0.4 -t "RDF" -i "../data/seq/my_ineq_rdf.rdf" -r "../data/metric/states_str0050ineq_2_2" -o "SEQTABLE|TAXATABLE|CHARTABLE|CHARCHNGTABLE|NW|NWEXT|STAT|STP|MPCOMPTABLE|MPPARTTABLE|MPRFTDMATRIX|MPTOPOTABLE|CHARSTTABLE" -c "cs_" -p "../nw" -q "stat" -u "nwlinktbl#" -O "seq.rdf" -w "distmx" -y "compmx" -E "scompmx" -D "charsttbl" -z "taxatbl#" -a "chartbl#" -k "charchngtbl#" -Q "wtdistmx" -K "rftdistmx" -R "tcmptbl" -B "mpbootbl" -L "mptopotbl" -A "CONVERT" -N 680 -G "GraphViz; 1; ROOTPREFERRED|DIST|CHNAMES|CHCHNG|TXNAMES|TXFR|TXFRSZ|TXCD|ROOTONLY|TREEONLY|CALL; 1.8; 1.1; 0.2; 2.0; 96.0; gif; /usr/local/bin/dot; /usr/local/bin/neato; viz/nw#.dot; viz/nw#.gif; viz/tpl/nwtpl.txt; "

для RDF полученных с опцией BINARIZE

./murka -T "MJ" -S "Y" -V "VP" -I 1 -F 20.0 -H "N" -P "20;1.4;2.25;5000;20;1.4;2.25;5000;0;0.75;500;50;1;" -C "0;50;0;" -M "0; 20; 0; 0; RESCHECK; 1; 0; 0; SEP1|NTT|NT1|NT2|NTD|LEUC|PS|SL|NV|LE|VR|NTDVR|PT|PTE|DA|SEPDA|NTDX|PTEX|EXTE|EXTV|EXTEE|EXTVDA|EXTEEDA|EXTVDAP|EXTEEDAP|ASCPRN|EXPV|CUTRDA; 0; LBDA|KEEPBND|BNDREPEATS2|BNDPERC2|EXTTEST2|EXTTESTP3|PRUNE2|PROCMSG1|NWPERFMON|REDPMLEV2|REDREP2|COMPLTRAVERSAL; " -J 0 -X 0 -Y 0 -U 0 -W 0 -Z 0 -d 1 -n 2 -s "BCACHE|DCACHE|THASH" -j "CONSTSPLITS|EQSPLITS|PARTITIONING|POSTPROC|CONTRACTNT2|ROOTING|ALLOWTERMROOT|MIDPOINTROOT|MPSTAT|OBSCHECK|WPHEUR" -e 0 -x 0 -b 20 -f "" -m 0.4 -t "RDF" -i "../data/seq/my_bin_rdf.rdf" -r "../data/metric/states_7" -o "SEQTABLE|TAXATABLE|CHARTABLE|CHARCHNGTABLE|NW|NWEXT|STAT|STP|MPCOMPTABLE|MPPARTTABLE|MPRFTDMATRIX|MPTOPOTABLE|CHARSTTABLE" -c "cs_" -p "../nw" -q "stat" -u "nwlinktbl#" -O "seq.rdf" -w "distmx" -y "compmx" -E "scompmx" -D "charsttbl" -z "taxatbl#" -a "chartbl#" -k "charchngtbl#" -Q "wtdistmx" -K "rftdistmx" -R "tcmptbl" -B "mpbootbl" -L "mptopotbl" -A "" -N 275 -G "GraphViz; 1; ROOTPREFERRED|DIST|CHNAMES|CHCHNG|TXNAMES|TXFR|TXFRSZ|TXCD|ROOTONLY|TREEONLY|CALL; 1.8; 1.1; 0.2; 2.0; 66.0; gif; /usr/local/bin/dot; /usr/local/bin/neato; viz/nw#.dot; viz/nw#.gif; viz/tpl/nwtpl.txt; "

« Последнее редактирование: 14 Июнь 2009, 17:25:46 от Valery »

Оффлайн Valery

  • Сообщений: 10107
  • Страна: 00
  • Рейтинг +1380/-7
  • Ultimate Matriarchy
Вот такой вызов для runych2rdf корректен?
prepare -T "YCH2RDF" -S "Y" -V "VP" -I "1" -F "20.0" -i "data\m102.ych" -o "data\m102.rdf" -s "data/ymx" -p "BINARIZE|CONSEQ|SHORTNAMES" -d 2 -n 2


нет некорректен! См выше в разделе про prepare первый вариант! Ты использовал второй. См в моем посте непосредственно выше есть два варианта вызова Мурки в зависимости от опций prepare. Ты скрестил ужа и ежа, и я еще удивляюсь почему Мурка не ругнулась :)

Для полученного тобой варианта ты можешь вызвать мурку см "для RDF полученных с опцией BINARIZE"

 

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

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