АвторТема: PLINK  (Прочитано 29375 раз)

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

Оффлайн Anode

  • Группа N
  • *
  • Сообщений: 1423
  • Страна: ca
  • Рейтинг +147/-0
  • PS1 -> TT1 -> EE1 -> PS2
  • Y-ДНК: N1c1
  • мтДНК: H10a1, U5b1
Re: PLINK
« Ответ #75 : 25 Ноябрь 2009, 23:39:08 »
подумайте, как вы предполагаете обрабатывать данные батчами (пакетно) - в будущем.
Сгружать все .gz по одному, анзиппить, сложить всё в одну директорию и передать директорию утилите? Но как вы сами получите мастер-лист Coriell catalog numbers?

По идее, я мог бы пройти два скана-чтения по всем файлам, динамически создать мастер-лист (т.е. создать юнион сам), в первом прохождении, отсортировать его лексикографически. Затем во втором скане-проходе-чтении - выплеснуть аллели в выходной PED согласно тому мастер-листу - мапу. Проблема в том - что вы сами не будете знать - какие там снипы вышли и где, хоть они и будут отсортированы (ведь в PED уже хедера не будет!). Могу как второй output - выбросить и этот список (только Coriell catalog numbers, так как другие данные нас не волнуют, верно?)
Но я не уверен, что это будет удобно для вас и plink'а.

Это так, для разъяснения моих непоняток с версией для HapMap. Попробуйте для начала ответить на 3 вопроса выше.

Оффлайн I2a1a

  • ...
  • Сообщений: 10364
  • Страна: ee
  • Рейтинг +761/-8
Re: PLINK
« Ответ #76 : 26 Ноябрь 2009, 18:03:33 »
подумайте, как вы предполагаете обрабатывать данные батчами (пакетно) - в будущем.
Сгружать все .gz по одному, анзиппить, сложить всё в одну директорию и передать директорию утилите? Но как вы сами получите мастер-лист Coriell catalog numbers?

По идее, я мог бы пройти два скана-чтения по всем файлам, динамически создать мастер-лист (т.е. создать юнион сам), в первом прохождении, отсортировать его лексикографически. Затем во втором скане-проходе-чтении - выплеснуть аллели в выходной PED согласно тому мастер-листу - мапу. Проблема в том - что вы сами не будете знать - какие там снипы вышли и где, хоть они и будут отсортированы (ведь в PED уже хедера не будет!). Могу как второй output - выбросить и этот список (только Coriell catalog numbers, так как другие данные нас не волнуют, верно?)
Но я не уверен, что это будет удобно для вас и plink'а.

Это так, для разъяснения моих непоняток с версией для HapMap. Попробуйте для начала ответить на 3 вопроса выше.

Спасибо за замечания, отвечу на вопросы чуть позже.

Оффлайн I2a1a

  • ...
  • Сообщений: 10364
  • Страна: ee
  • Рейтинг +761/-8
Новый упсометр
« Ответ #77 : 01 Декабрь 2009, 09:54:36 »
Предоставляю последний отчет по работе конвертора Aisconvert от Василия (Anode) (мимоходом прошу всех пользователей форума поблагодарить при возможности за его потраченные усилия на общеполезное дело).

В целом программа работает почти безупречно на больших массивах данных (100 геномо-сэмплов по 500 000 базовых пар), хотя и есть небольшой баг с форматированием - вместо требуемого в формате plink двойного пробела (две точки в разметке), программа конвертирует биаллели с разделением в одну точку. Но я считаю, что это неудобство- мелочь, хотя и усложняет процесс обработки данных.

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

Разумеется, есть и альтернативный вариант - проштудировать весь массив литературы по этому вопросу (весь спектр литературы -от статей до монографий), но у меня на это просто нет времени.

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

  • Сообщений: 1257
  • Страна: il
  • Рейтинг +348/-2
  • Y-ДНК: J-FGC5231
  • мтДНК: N1b2
Re: Новый упсометр
« Ответ #78 : 01 Декабрь 2009, 13:33:53 »
Предоставляю последний отчет по работе конвертора Aisconvert от Василия (Anode) (мимоходом прошу всех пользователей форума поблагодарить при возможности за его потраченные усилия на общеполезное дело).

В целом программа работает почти безупречно на больших массивах данных (100 геномо-сэмплов по 500 000 базовых пар), хотя и есть небольшой баг с форматированием - вместо требуемого в формате plink двойного пробела (две точки в разметке), программа конвертирует биаллели с разделением в одну точку. Но я считаю, что это неудобство- мелочь, хотя и усложняет процесс обработки данных.

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

Разумеется, есть и альтернативный вариант - проштудировать весь массив литературы по этому вопросу (весь спектр литературы -от статей до монографий), но у меня на это просто нет времени.
Вадим, можно Вас попросить объяснить коллегам, что нам дает PLINK.
Например, классический случай - есть результаты по человеку с неясным этническим происхождением.
Помогает ли PLINK прояснить картину?
В каких ситуациях он может помочь? Немного ликбеза (вкратце) всем очень даже поможет.
А то люди видят перевернутую пирамиду Хеопса в разноцветную клеточку и не всегда в курсе - что там и как.
Спасибо с плюсом.

Оффлайн Anode

  • Группа N
  • *
  • Сообщений: 1423
  • Страна: ca
  • Рейтинг +147/-0
  • PS1 -> TT1 -> EE1 -> PS2
  • Y-ДНК: N1c1
  • мтДНК: H10a1, U5b1
Re: PLINK
« Ответ #79 : 01 Декабрь 2009, 17:30:07 »
В целом программа работает почти безупречно на больших массивах данных (100 геномо-сэмплов по 500 000 базовых пар), хотя и есть небольшой баг с форматированием - вместо требуемого в формате plink двойного пробела (две точки в разметке), программа конвертирует биаллели с разделением в одну точку. Но я считаю, что это неудобство- мелочь, хотя и усложняет процесс обработки данных.

Вадим,
насчёт разделителя между базовыми парами.
Я поначалу разделил отдельные аллели внутри биаллелей - одним пробелом (ASCII 32), а биаллели между собой - одним табом (ASCII 9).
Отсюда, возможно, взялись точки, которые Вы видите.
В plink документации сказано, что могут быть любые "whitespace" (как табы так и пробелы), но из того - как они показывают PED файлы, и говорят про "колонки" - я почему-то понял что нужно поставить таб, а не 2 пробела.

Только что зааплодил версию на sourceforge - с двумя пробелами вместо табов.
(напомню, что комманд-лайн версия - в aisconvert-<version>-bin.*)
« Последнее редактирование: 02 Декабрь 2009, 03:49:39 от Anode »

Оффлайн Anode

  • Группа N
  • *
  • Сообщений: 1423
  • Страна: ca
  • Рейтинг +147/-0
  • PS1 -> TT1 -> EE1 -> PS2
  • Y-ДНК: N1c1
  • мтДНК: H10a1, U5b1
Re: PLINK
« Ответ #80 : 02 Декабрь 2009, 04:10:46 »
новая версия чуть потяжелее, так как таскает за собой сантиморганы для всех аллелей.

Запуск утилиты в режиме конвертрации RAW2PED - не изменился.
Запуск в режиме поиска УПСов:

под виндовс:
c:\aisconvert>aisconvert -u -i data\6.txt -i data\7.txt

(или можно передать директорию для пакетной обработки "все со всеми", либо список директорий, либо произвольный список файлов с относительными или абсолютными путями)

под юниксами:
aisconvert> sh aisconvert -u -i data/6.txt -i data/7.txt

в выхлопе пятая колонка - сумма сантиморганов данного УПСа:
------8<------
Processing 6.txt vs 7.txt
7 13 12345671 12345683 1063.983
7 8 12345678 12345685 773.45685
7 2 12345685 12345685 193.4443
7 7 12345688 12345693 479.23163
The biggest HIR in chromosome 7:
7 13 12345671 12345683
Processed in 1750 ms.
------8<------
дайте знать - какие фичи хотели бы видеть в проге ещё.

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

  • Сообщений: 1257
  • Страна: il
  • Рейтинг +348/-2
  • Y-ДНК: J-FGC5231
  • мтДНК: N1b2
Re: PLINK
« Ответ #81 : 03 Декабрь 2009, 02:19:02 »
новая версия чуть потяжелее, так как таскает за собой сантиморганы для всех аллелей.

Запуск утилиты в режиме конвертрации RAW2PED - не изменился.
Запуск в режиме поиска УПСов:

под виндовс:
c:\aisconvert>aisconvert -u -i data\6.txt -i data\7.txt

(или можно передать директорию для пакетной обработки "все со всеми", либо список директорий, либо произвольный список файлов с относительными или абсолютными путями)

под юниксами:
aisconvert> sh aisconvert -u -i data/6.txt -i data/7.txt

в выхлопе пятая колонка - сумма сантиморганов данного УПСа:
------8<------
Processing 6.txt vs 7.txt
7 13 12345671 12345683 1063.983
7 8 12345678 12345685 773.45685
7 2 12345685 12345685 193.4443
7 7 12345688 12345693 479.23163
The biggest HIR in chromosome 7:
7 13 12345671 12345683
Processed in 1750 ms.
------8<------
дайте знать - какие фичи хотели бы видеть в проге ещё.
Спасибо! доберусь - погоняю - напишу.

Оффлайн Anode

  • Группа N
  • *
  • Сообщений: 1423
  • Страна: ca
  • Рейтинг +147/-0
  • PS1 -> TT1 -> EE1 -> PS2
  • Y-ДНК: N1c1
  • мтДНК: H10a1, U5b1
Re: PLINK
« Ответ #82 : 03 Декабрь 2009, 06:52:54 »
я хочу ещё раз подчеркнуть, что это - первая тестовая версия для затравки. Я понимаю, что вывод проги неудобен как для батчевой обработки скриптами (где надо было-бы убрать оглавления и дать дату в денормализованном виде, например с именами файлов или ID в первых 2х колонках - как вариант), так и как репорт читаемый человеком. Поэтому здесь надо подумать вам - как будете использовать и чем читать выхлоп. И как должен выглядеть последний (а может, сделать много разных output'ов для различных использований проги?). Короче, пожелания за вами.

Оффлайн I2a1a

  • ...
  • Сообщений: 10364
  • Страна: ee
  • Рейтинг +761/-8
Re: PLINK
« Ответ #83 : 03 Декабрь 2009, 12:14:45 »
Меня лично и такой вариант устраивает.Еще раз спасибо.

Оффлайн Anode

  • Группа N
  • *
  • Сообщений: 1423
  • Страна: ca
  • Рейтинг +147/-0
  • PS1 -> TT1 -> EE1 -> PS2
  • Y-ДНК: N1c1
  • мтДНК: H10a1, U5b1
Re: PLINK
« Ответ #84 : 21 Декабрь 2009, 08:13:54 »
Заапложена новая версия aisconvert (0.9), поддерживающая неперекрывающиеся УПСы, сделан ряд улучшений. Версия может рассматриваться как бета и готова к продакшену (если не будет вдруг выявлено неучтённых ошибок). Вроде всё что просилось паровозом - сделано.
(теперь можно и пива попить)

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

  • Сообщений: 1257
  • Страна: il
  • Рейтинг +348/-2
  • Y-ДНК: J-FGC5231
  • мтДНК: N1b2
Re: PLINK
« Ответ #85 : 21 Декабрь 2009, 10:17:32 »
Заапложена новая версия aisconvert (0.9), поддерживающая неперекрывающиеся УПСы, сделан ряд улучшений. Версия может рассматриваться как бета и готова к продакшену (если не будет вдруг выявлено неучтённых ошибок). Вроде всё что просилось паровозом - сделано.
(теперь можно и пива попить)
Beer is on me, please.

Оффлайн Anode

  • Группа N
  • *
  • Сообщений: 1423
  • Страна: ca
  • Рейтинг +147/-0
  • PS1 -> TT1 -> EE1 -> PS2
  • Y-ДНК: N1c1
  • мтДНК: H10a1, U5b1
Re: PLINK
« Ответ #86 : 22 Декабрь 2009, 06:30:11 »
Исправлен баг (спасибо паровозу за анализ). Заапложена новая версия 0.91. Уже видимо очень близка к продакшеновской.

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

  • Сообщений: 1257
  • Страна: il
  • Рейтинг +348/-2
  • Y-ДНК: J-FGC5231
  • мтДНК: N1b2
Re: PLINK
« Ответ #87 : 23 Декабрь 2009, 13:15:19 »
Исправлен баг (спасибо паровозу за анализ). Заапложена новая версия 0.91. Уже видимо очень близка к продакшеновской.
Работает классно. Найдено несколько багов в сантиморгановской таблице.
Продакшн - близок.

Оффлайн Anode

  • Группа N
  • *
  • Сообщений: 1423
  • Страна: ca
  • Рейтинг +147/-0
  • PS1 -> TT1 -> EE1 -> PS2
  • Y-ДНК: N1c1
  • мтДНК: H10a1, U5b1
Re: PLINK
« Ответ #88 : 24 Декабрь 2009, 06:09:33 »
Работает классно. Найдено несколько багов в сантиморгановской таблице.
Продакшн - близок.


Сделан последний фикс.
Заапложена версия 0.92, скорее всего уже для продакшена (паровоЗ - Ваш sign-off, please).

Сделал checkin всего сорса (вместе с эклипсовым проектом и билд-файлами с встроенным антом - для девелоперов-последователей и лёгкой правки) - в SVN. Хоть мы и старая, CVS-овская гвардия, но sourceforge с недавно поменянным дизайном и новомодными веяниями - не хочет браузить сорсы через веб, как это было всегда, поэтому - пришлось идти на соглашательскую политику и перейти на SVN.
Зато можно цветной diff через веб делать - в будущих фиксах. Обсуждать алгоритм. Кстати, весь УПСометрический алгоритм - тут.
Конечно, если нужна история до сегодняшней версии - надо идти назад в CVS (SVN - только начиная с версии 0.92).

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

А так, пока, наверное, первая версия УПСомера готова.
« Последнее редактирование: 24 Декабрь 2009, 23:50:28 от Anode »

Оффлайн Anode

  • Группа N
  • *
  • Сообщений: 1423
  • Страна: ca
  • Рейтинг +147/-0
  • PS1 -> TT1 -> EE1 -> PS2
  • Y-ДНК: N1c1
  • мтДНК: H10a1, U5b1
Re: PLINK
« Ответ #89 : 24 Декабрь 2009, 07:32:19 »
Забыл добавить - что имея единый фреймвок обработки генетической информации (т.е. где массивы данных большие, и так просто в память не влезают - особенно когда манипулируется многими файлами, мапами итд - нужны алгоритмы работающие на стримах)- теперь легко добавлять самые различные процессоры-расширения к нему, только прописывая конкретные детали очередного процессора (конкретный алгоритм).
Мы уже сделали 2 процессора: конвертор RAW2PED и УПСомер.
Добавление других конвертеров/сравнителей/процессоров - это добавление всего-лишь одного класса-файла.
Билдить очень легко, можно даже дабл-кликом под виндовс (про условии что javac установлен и виднеется в $PATH) или шлёпаньем на шелл под иксами (если chmod u+x) или лучше - с коммандной строки.
Удобно импортить проект прямо в эклипс (с сегодня - из SVN'a). На сорсфорже указан SVN-урл (надо только завести эккаунт девелопера для write-access и связаться со мной).
И вперёд - писать процессоры на все случаи жизни. Преимущество фреймвока - не надо повторять всю инфраструктуру: зачитку аргументов/флагов, конфиг-файлов, глобальных параметров, параметров сохраняющихся после выхода (сессии), кода запускающего все файлы со всеми при любом порядке передачи как файлов так и директорий в параметрах, включая микс директорий с отдельными файлами итд.
Как пример-темплейт - может быть взят например УПСомер для 2х-файлового процессора или RAW2PED-для однофайлового (гуя подсоединена только ко второму, но можно сделать и для первого. Да, опциональная гуя - тоже часть фреймвока).

PLINK, судя по всему, - вещь хорошая, но многого там нет, да и передача параметров - не такая удобная, посему я учёл недостатки и старался сделать удобнее (для запуска в любых комбинациях и порядке аргументов). На базе нашего фреймвока - можно понаделать много всего полезного в будущем, имхо. 
Так что - велкам, кто хочет присоединиться.
« Последнее редактирование: 24 Декабрь 2009, 08:46:40 от Anode »

 

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

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