UGENE Forum
https://forum.ugene.net/forum/YaBB.pl
General Category >> Forum in Russian language ([ch1056][ch1091][ch1089][ch1089][ch1082][ch1086][ch1103][ch1079][ch1099][ch1095][ch1085][ch1099][ch1081] [ch1092][ch1086][ch1088][ch1091][ch1084]) >> Выравнивание большого числа сэнгеровских ридов на референс
https://forum.ugene.net/forum/YaBB.pl?num=1406104444

Message started by Ilya Flyamer on Jul 23rd, 2014 at 3:34pm

Title: Выравнивание большого числа сэнгеровских ридов на референс
Post by Ilya Flyamer on Jul 23rd, 2014 at 3:34pm
Хотел спросить, как лучше всего сделать следующее. У меня есть плазмида, а в ней ген. Я с помощью сэнгеровского секвенирования получил сравнительно много (18, кажется) длинных ридов этого гена и его ближайших окрестностей. Как лучше всего выровнять их на плазмиду или ее участок?
Проблема заключается в том, что по краям ридов как всегда сиквенс ужасный, то есть его никак нельзя использовать. Было бы это 1 или 2 рида, я бы вручную выбрал нормальные участки и был бы доволен. Но тут их довольно много, мне, конечно, лень. Может есть способ автоматически обрезать эти файлы по качеству букв? Или стоит добавить особую фичу для такого типа задач? Это было бы мега-удобно. Например, в одном окне открываются друг над другом все выбранные ab1 файлы, предлагаются автоматически определенные границы для обрезки концов, которые можно вручную подправить, потом все сразу экспортируются в фаста файл(ы), а потом выравниваются на заданную последовательность.

Title: Re: Выравнивание большого числа сэнгеровских ридов на референс
Post by Yuriy Vaskin on Jul 23rd, 2014 at 4:48pm
Илья, мы делаем укорачивание ридов по качеству для FASTQ файлов, которые идут из NGS-секвенирования.
Это делаеться с помощью воркфлоу-элемента FASTQ Quality Trimmer, повторяющего функционал fastq_quality_trimmer из FASTX Toolkit(http://hannonlab.cshl.edu/fastx_toolkit/). Этот элемент доступен в UGENE 1.14 (http://ugene.unipro.ru/shared-db.html или http://ugene.unipro.ru/snapshot.html).

Как бы теперь преобразать abi в FASTQ с сохранением quality scores? Можно попробовать тоже с нашим Workflow Designer, через элемент Convert File Format, но я не уверен, что он сохраняет quality scores. Если не сохраняет, то можно попробовать сторонние тулы для этого (http://seqanswers.com/forums/showthread.php?t=3165)

Title: Re: Выравнивание большого числа сэнгеровских ридов на референс
Post by Olga Golosova on Jul 23rd, 2014 at 5:28pm
Илья, Вы не могли бы прикрепить примеры файлов ABI?

Title: Re: Выравнивание большого числа сэнгеровских ридов на референс
Post by Ilya Flyamer on Jul 23rd, 2014 at 6:24pm
Юрий,
ясно, спасибо, надо будет попробовать, когда выйдет 1.14. Кажется, там намечается много полезного!

Ольга,
вот архив с ab1 файлами, которые я как раз использую: https://yadi.sk/d/EWIHJjgSXBRST
А во вложении последовательность плазмиды, которую я проверяю.
https://forum.ugene.net/forum/YaBB.pl?action=downloadfile;file=pX330a_Zhang_vector_by_Addgene.gb (16 KB | )

Title: Re: Выравнивание большого числа сэнгеровских ридов на референс
Post by Olga Golosova on Jul 23rd, 2014 at 6:40pm
К сожалению, в текущей версии UGENE quality values не сохраняются при конвертации ABI в FASTQ. Завела баг, починен будет наверно уже в 1.14.1, т.к. 1.14 уже на подходе.

Так что, Илья, пока что придется Вам законвертить ABI в FASTQ вручную :)
Обращайтесь, если понадобится помощь с FASTQ Quality Trimmer.

Title: Re: Выравнивание большого числа сэнгеровских ридов на референс
Post by Ilya Flyamer on Jul 23rd, 2014 at 7:23pm
Ну, я, честно сказать, сейчас накатал скрипт на питоне, который с помощью abifpy автоматически обрезает плохие буквы (а там это реализовано по алгоритму из phred), и пишет fastq файлы с сохранением качества.

Может, кому пригодится.

Code:
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
from os import path
from abifpy import Trace

def convert(filename, cutoff=0.05):
    print 'Quality-trimming and converting file', filename
    outfile = path.splitext(filename)[0]+'.fastq'
    print 'Saving .fastq file to', outfile
    f = Trace(filename)
    f.trim(f.seq, cutoff)
    f.trim(f.qual, cutoff)
    f.trim(f.qual_val, cutoff)
    f.export(outfile, 'fastq')   
   
for i in sys.argv[1:]:
    infile = i.decode('UTF8')
    convert(infile)


Принимает .ab1 файлы на вход, пишет в ту же директорию обрезанные .fastq с тем же названием, но другим расширением.

Вручную это не пойдет :)

Но все равно буду рад, если в юджине появится возможность это сделать, большинству биологов сделать это в юджине будет сильно проще.

Title: Re: Выравнивание большого числа сэнгеровских ридов на референс
Post by Yuriy Vaskin on Jul 25th, 2014 at 8:16pm

Ilya Flyamer wrote on Jul 23rd, 2014 at 7:23pm:
Ну, я, честно сказать, сейчас накатал скрипт на питоне, который с помощью abifpy автоматически обрезает плохие буквы (а там это реализовано по алгоритму из phred), и пишет fastq файлы с сохранением качества.

Может, кому пригодится.

Code:
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
from os import path
from abifpy import Trace

def convert(filename, cutoff=0.05):
    print 'Quality-trimming and converting file', filename
    outfile = path.splitext(filename)[0]+'.fastq'
    print 'Saving .fastq file to', outfile
    f = Trace(filename)
    f.trim(f.seq, cutoff)
    f.trim(f.qual, cutoff)
    f.trim(f.qual_val, cutoff)
    f.export(outfile, 'fastq')   
   
for i in sys.argv[1:]:
    infile = i.decode('UTF8')
    convert(infile)


Принимает .ab1 файлы на вход, пишет в ту же директорию обрезанные .fastq с тем же названием, но другим расширением.

Вручную это не пойдет :)

Но все равно буду рад, если в юджине появится возможность это сделать, большинству биологов сделать это в юджине будет сильно проще.


Илья, спасибо за скрипт. Нам на почту написал пользователь по аналогичному вопросу и я ему отправил ваш труд

Title: Re: Выравнивание большого числа сэнгеровских ридов на референс
Post by Ilya Flyamer on Jul 25th, 2014 at 8:24pm
Всегда рад помочь! Если у пользователя есть какие-то вопросы, я готов помочь.

Title: Re: Выравнивание большого числа сэнгеровских ридов на референс
Post by Ilya Flyamer on Aug 19th, 2014 at 3:14pm
Вот еще момент, непосредственно к теме не относится, но идея у меня возникла при выполнении именно такого выравнивания и его просмотре. Можно ли добавить возможность автоматической перестройки порядка последовательностей в выравнивании, так, чтобы наверху всегда были те из них, которые лучше всего выровнены на референс в той области, которую сейчас видно? То есть, например, я заклонировал плазмиду и знаю, какая должна быть последовательность суммарная. Секвенирую многими праймерами, выравниваю, а при сверке полученных последовательностей с референсом всегда надо смотреть на верхние строчки выравнивания (а референс тогда автоматически помещается на самую верхнюю строку).
Мне бы это было очень полезно и удобно, не знаю, может, это редко встречающаяся необходимость...

Title: Re: Выравнивание большого числа сэнгеровских ридов на референс
Post by Olga Golosova on Aug 19th, 2014 at 3:55pm
Я правильно понимаю, что Вы хотели бы видеть в редакторе выравниваний следующий новый режим: в заданном участке выравнивания проверяется схожесть всех последова0тельностей с референсной (только на отображаемом участке) и порядок последовательностей меняется в соответствии со степенью схожести. При этом:
  1) при любом изменении множественного выравнивания
  2) при перемещении на другой регион
  3) при увеличении/уменьшении масштаба
происходит автоматический пересчет и порядок меняется.

Title: Re: Выравнивание большого числа сэнгеровских ридов на референс
Post by Ilya Flyamer on Aug 19th, 2014 at 4:10pm
Да, все точно! :)
Как считать схожесть, конечно, вопрос - в идеале, должен быть выбор из разных способов, но в принципе должно быть достаточно просто по числу точно совпадающих символов.

Title: Re: Выравнивание большого числа сэнгеровских ридов на референс
Post by Olga Golosova on Aug 19th, 2014 at 5:51pm
Создала UGENE-3397, но замечу, что вряд ли в ближайшее время сделаем. Только если найдете единомышленников, которые нам оставят подобные отзывы.

Title: Re: Выравнивание большого числа сэнгеровских ридов на референс
Post by Ilya Flyamer on Aug 19th, 2014 at 5:59pm
Спасибо!
Да, я понимаю, что это, возможно, не самый тривиальный запрос, да и нужно не слишком часто. Повторюсь, при данной конкретной задаче это было бы, возможно, просто killer feature - сильно бы упростило проверку сиквенса длинной вставки после клонирования и т.п.

Title: Re: Выравнивание большого числа сэнгеровских ридов на референс
Post by Olga Golosova on Aug 19th, 2014 at 6:03pm
Понятно, учтем!

Title: Re: Выравнивание большого числа сэнгеровских ридов на референс
Post by German Grekhov on Jan 23rd, 2015 at 5:23pm
Илья, в текущем релизе мы планируем сделать небольшой шаг вперед по анализу результатов секвенирования по Сэнгеру. В UGENE 1.16 планируется новая схема в Workflow Designer со следующими характеристиками и возможностями:
1) Схема принимает в качестве входных данных:
  а) Набор файлов в формате ABI, в которых хранятся результаты секвенирвания (риды).
  б) Файл с референсной последовательностью.
2) В процессе работы концы ридов с плохим качеством обрезаются. Используется FASTQ Quality Trimmer.
3) После этого полученные последовательности по одному выравниваются на референс. Используется алгоритма Смита-Ватермана, то есть локальное выравнивание.
4) Кроме того, автоматически определяется, нужно ли заменить последовательность рида на обратно-комплементарную. При секвенировании часто бывает, что некоторые из ридов были получены из комплементарной цепи. Автоматическое разворачивание было бы удобным.
5) Результатом работы схемы является файл с множественным выравниванием. Первая последовательность выравнивания - референсная, остальные - выровненные риды. Если рид был заменен на обратно-комплементарный, то к его имени добавляется суффикс "_rev".

Title: Re: Выравнивание большого числа сэнгеровских ридов на референс
Post by German Grekhov on Jan 23rd, 2015 at 5:25pm
Кстати, можете, пожалуйста, еще раз отправить нам файлы с примерами? Старая ссылка уже не работает.

Title: Re: Выравнивание большого числа сэнгеровских ридов на референс
Post by Ilya Flyamer on Jan 25th, 2015 at 12:21am
Герман, спасибо за сообщение о таком продвижении! Очень все правильно описано, поддерживаю.
Вот ссылка на чтения: https://yadi.sk/d/SJQkjEAqeDA5h
Там как раз в обе стороны должны быть риды.

Title: Re: Выравнивание большого числа сэнгеровских ридов на референс
Post by German Grekhov on Feb 10th, 2015 at 6:55pm
Илья, мы реализовали эту задачу. Так как вы один из людей, которые запрашивали эту задачу, то предлагаем вам поучаствовать в бета-тестировании.

Для этого нужно скачать снэпшот UGENE с нашего сайта (ревизия 9124 или больше): http://ugene.unipro.ru/snapshot.html

Решение является схемой в Workflow Designer. Чтобы воспользоваться им, нужно открыть Workflow Designer, и активировать пример "Trim and align Sanger reads" из раздела "Sanger sequencing". Дальше открыть визард/помощник и задать свои данные.

Мы протестировали эту схемы на данных, которыми вы поделились с нами. Кажется, что получается довольно красиво, но все же хотелось бы услышать ваше мнение.

Еще есть вопрос по самой схеме. Как вы думаете, какое значение порога фильтрации нужно сделать по умолчанию? Сейчас это значение равно 30, что является строгим порогом для NGS. Но кажется, что для Sanger оно может отличаться.

wizard1.jpg (249 KB | 545 )
wizard2.jpg (134 KB | 560 )
wizard3.jpg (87 KB | 591 )

Title: Re: Выравнивание большого числа сэнгеровских ридов на референс
Post by German Grekhov on Feb 10th, 2015 at 6:57pm
Еще пара скриншотов.
wizard4.jpg (75 KB | 534 )
dashboard.jpg (44 KB | 557 )

Title: Re: Выравнивание большого числа сэнгеровских ридов на референс
Post by Ilya Flyamer on Feb 11th, 2015 at 2:33am
Герман, красота! Я пробовал на тех же (или почти тех же... может быть, сиквенсы с другого клона той же плазмиды) данных, работает очень быстро и получается хорошо. Про порог сложно сказать, но, глядя на выравнивание, у некоторых ридов хвосты не выравниваются нормально. Причем мне кажется, что особенно 3'-концы - может, для разных сторон разный порог сделать? Из опыта, на 5'-конце обычно довольно резкая граница перехода шум-сигнал, а на 3'-конце всегда какая-то бяка с плавным перетеканием из данных в шум. Так что в автоматическом режиме, думаю, придется на 3'-конце жестче отрезать, если это возможно. Если нет, то подправить выравнивание и после этого можно уже вручную, не проблема в общем, если важно убрать всю ерунду.
Мне нравится, что риды автоматически добавляются в аннотации последовательности!

Title: Re: Выравнивание большого числа сэнгеровских ридов на референс
Post by Olga Golosova on Feb 24th, 2015 at 4:05pm
Илья, занесла в трекер на будущее предложенное улучшение - задавать различные значения на различных концах: UGENE-4069.

Title: Re: Выравнивание большого числа сэнгеровских ридов на референс
Post by Ilya Flyamer on Mar 2nd, 2015 at 2:20pm
Спасибо, Ольга! Вот что еще было бы хорошо, но, наверное, это непросто, так это отмечать в файле с последовательностью где в ридах замены/индели каким-то образом. Я это представляю себе как поперечные полоски на аннотациях разного цвета... А то в выравнивании непросто понять, где что в последовательности. Альтернатива это, конечно, реализация аннотаций в выравниваниях, что, кажется, было в планах?..

Title: Re: Выравнивание большого числа сэнгеровских ридов на референс
Post by Olga Golosova on Mar 3rd, 2015 at 8:16pm
Илья, мы собираемся в следующей мажорной версии оптимизировать процедуру выравнивания Сэнгеровских ридов (UGENE-3324) - каким именно образом, еще не решили. Возможно будем визуализировать выравнивание хроматограмм, как в SnapGene. То есть вообще не будет происходить работы в Alignment Editor. Ну и соотвественно, в такой визуализации можно будет перемещаться по вариациям.

Работу с аннотациями в Alignment Editor тоже надо будет так или иначе поддерживать. Возможно, это тоже пойдет на следующий мажорный релиз, но это пока не точно.

Title: Re: Выравнивание большого числа сэнгеровских ридов на референс
Post by Ilya Flyamer on Mar 7th, 2015 at 4:34pm
Да, выравнивание хроматограмм это самый лучший подход при условии удобной реализации.

UGENE Forum » Powered by YaBB 2.5 AE!
YaBB Forum Software © 2000-2010. All Rights Reserved.