Я пишу программу, которая должна вычислять множественное выравнивание последовательностей набора строк. Я думал сделать это на Python, но я мог бы использовать внешнее программное обеспечение или другой язык, если это более практично. Данные не особенно большие, у меня нет строгих требований к производительности, и я могу терпеть приближения (т.е. мне просто нужно найти достаточно хорошее выравнивание). Единственная проблема заключается в том, что строки являются обычными строками (т. Е. Строки UTF-8, потенциально с символами новой строки, которые следует рассматривать как обычные символы); они не последовательности ДНК или последовательности белков.
Я могу найти тонны инструментов и информации для обычных случаев в биоинформатике со специфическими сложными форматами файлов и множеством функций, которые мне не нужны, но найти программное обеспечение, библиотеки или примеры кода для простого случая строк, безусловно, трудно. Я мог бы, вероятно, переопределить любой из многих алгоритмов для этой проблемы или закодировать мою строку как ДНК, но должен быть лучший способ. Знаете ли вы какие-либо решения?
BM1. Выравнивание последовательностей: алгоритмы Нидлмана-Вунша и Смита-Ватермана.
a3nm 28 Апр 2011 в 09:06
4 ответа
Лучший ответ
- Самый простой способ выровнять несколько последовательностей — это выполнить несколько попарных выравниваний.
Сначала получите попарные оценки сходства для каждой пары и сохраните их. Это самая дорогая часть процесса. Выберите пару, которая имеет лучший показатель сходства и выполните это выравнивание. Теперь выберите последовательность, которая лучше всего выровнена с одной из последовательностей в наборе выровненных последовательностей, и выровняйте ее по выровненному набору на основе этого попарного выравнивания. Повторяйте, пока все последовательности не будут в.
Когда вы выравниваете последовательность по выровненным последовательностям (на основе попарного выравнивания), когда вы вставляете разрыв в последовательность, уже имеющуюся в наборе, вы вставляете разрывы в одно и то же место во всех последовательностях в выровненном наборе.
Лафрасу предложил использовать алгоритм SequneceMatcher () для попарного выравнивания строк UTF-8. То, что я описал, дает вам довольно безболезненный, достаточно приличный способ расширить это на несколько последовательностей.
Если вам интересно, это эквивалентно созданию небольших наборов выровненных последовательностей и выравниванию их по лучшей паре. Это дает точно такой же результат, но это более простая реализация.
James Crook 3 Май 2011 в 21:25
Я недавно написал скрипт на python, который запускает алгоритм Смита-Уотермана (который используется для генерации расщепленных локальных выравниваний последовательностей для последовательностей ДНК или белка). Это почти наверняка не самая быстрая реализация, так как я совсем не оптимизировал ее по скорости (не мое узкое место в данный момент), но она работает и не заботится об идентичности каждого символа в строках. Я мог бы опубликовать это здесь или отправить вам файлы по электронной почте, если вы ищете именно это.
BM3. Как работают алгоритмы множественного выравнивания последовательностей
DaveTheScientist 28 Апр 2011 в 19:01
MAFFT версии 7.120+ поддерживает множественное выравнивание текста. Входные данные похожи на формат FASTA, но с текстом LATIN1 вместо последовательностей, а выходные данные выровнены в формате FASTA. После установки легко запустить:
mafft —text input_text.fa > output_alignment.fa
Несмотря на то, что MAFFT является зрелым инструментом для выравнивания биологической последовательности, режим выравнивания текста находится на стадии разработки, с будущими планами, включая разрешение определяемых пользователем матриц оценки. Дополнительную информацию вы можете найти в документации.
Chris_Rands 4 Апр 2017 в 21:41
Вы ищете что-то быстрое и грязное, как в следующем?
from difflib import SequenceMatcher a = «dsa jld lal» b = «dsajld kll» c = «dsc jle kal» d = «dsd jlekal» ss = [a,b,c,d] s = SequenceMatcher() for i in range(len(ss)): x = ss[i] s.set_seq1(x) for j in range(i+1,len(ss)): y = ss[j] s.set_seq2(y) print print s.ratio() print s.get_matching_blocks()
Источник: question-it.com
Русские Блоги
Сравнение нескольких последовательностей с использованием Maft
Добро пожаловать в «Руководство в прямом эфире»!
Для тысяч последовательностей сопоставления нескольких последовательностей мышца обычно является лучшим выбором, от точности или скорости эксплуатации. Но оптимизация памяти мышц не является хорошей, если требуемая память превышает память машины, вы можете рассмотреть этот инструмент для Mafft. Официальный сайт выглядит следующим образом
Mafft — это кроссплатформенный инструмент, который поддерживает следующие платформы
Базовое использование этого программного обеспечения заключается в следующем
mafft input > output
input Файл входного последовательности для формата Fasta, output Выходной файл результатов для формата Fasta. Mafft поддерживает многопользовательское сравнение нуклеиновых кислот и белковых последовательностей, встроенных алгоритмов нескольких последовательностей, можно разделить на следующие три категории
- consistency based methods
- iterative refinment methods
- progressive methods
Эти три типа алгоритмов имеют преимущества в точности и скорости. Для скорости работы 3> 2> 1; для точности, 1> 2> 3.
1. consistency based methods
Такие алгоритмы включают L-Ins-I, E-Ins-I, G-Ins-I3 алгоритмы.
L-ins — i используется следующим образом
mafft —localpair —maxiterate 1000 input_file > output_file
E-ins — i используется следующим образом
mafft —genafpair —maxiterate 1000 input_file > output_file
G-ins — I используется следующим образом
mafft —globalpair —maxiterate 1000 input_file > output_file
2. iterative refinment methods
Такие алгоритмы включают два алгоритма FFT-NS-I, NW-NS-I.
FFT-NS-I используется следующим образом
mafft —maxiterate 1000 input_file > output_file
mafft —maxiterate 1000 input_file > output_file
3. progressive methods
Такие алгоритмы включают алгоритмы FFT-NS-1, FFT-NS-2 2.
Использование FFT-NS-1 выглядит следующим образом
mafft —retree 1 input_file > output_file
Использование FFT-NS-2 заключается в следующем
mafft —retree 2 input_file > output_file
Если вы сравните, вы не знаете, как выбрать соответствующий алгоритм, вы можете использовать следующие настройки.
mafft —auto input > output
Программное обеспечение автоматически выберет соответствующий алгоритм, основанный на функции входной последовательности.
EBI также предоставляет онлайн-сервис MAFFT, URL выглядит следующим образом
— Если вам нравится, поделитесь этим с друзьями —
Сканируйте внимание на микросигнал, более захватывающее контент ждет вас!
Источник: russianblogs.com
Как вычислить множественное выравнивание последовательностей для текстовых строк
Я пишу программу, которая должна вычислить множественное выравнивание последовательности набора строк. Я думал об этом в Python, но я мог бы использовать внешнюю часть программного обеспечения или другой язык, если это было бы более практичным. Данные не особенно большие, у меня нет сильных требований к производительности, и я могу терпеть приближения (т.е.
Мне просто нужно найти достаточно хорошее выравнивание). Единственная проблема заключается в том, что строки являются регулярными строками (т.е. Строки UTF-8, потенциально с новыми строками, которые следует рассматривать как обычный символ); они не являются последовательностями ДНК или белковыми последовательностями.
Я могу найти множество инструментов и информации для обычных случаев в биоинформатике с конкретными сложными форматами файлов и множеством функций, которые мне не нужны, но нетрудно найти программное обеспечение, библиотеки или пример кода для простого случая строк. Возможно, я мог бы переопределить любой из многих алгоритмов для этой проблемы или закодировать свою строку как ДНК, но должен быть лучший способ. Вы знаете какие-либо решения?
ОТВЕТЫ
Ответ 1
- Самый простой способ выровнять несколько последовательностей — сделать несколько парных выравниваний.
Сначала получите парные оценки подобия для каждой пары и сохраните эти оценки. Это самая дорогая часть процесса. Выберите пару, которая имеет лучший счет сходства и сделайте это выравнивание. Теперь выберите последовательность, которая лучше всего соответствует одной из последовательностей в наборе выровненных последовательностей, и выровняйте ее с выровненным набором на основе этого парного выравнивания. Повторяйте, пока не появятся все последовательности.
При выравнивании последовательности выровненные последовательности (на основе парное выравнивание), когда вы вставляете разрыв в последовательности, которая уже находится в набор, вы вставляете пробелы в одном и том же место во всех последовательностях в выровненном набор.
Lafrasu предложил алгоритм SequneceMatcher() использовать для парного выравнивания строк UTF-8. То, что я описал, дает вам довольно безболезненный, разумно приемлемый способ расширить его до нескольких последовательностей.
Если вам интересно, это эквивалентно созданию небольших наборов выровненных последовательностей и выравниванию их по лучшей паре. Он дает точно такой же результат, но это более простая реализация.
Ответ 2
Вы ищете что-то быстрое и грязное, как в следующем?
from difflib import SequenceMatcher a = «dsa jld lal» b = «dsajld kll» c = «dsc jle kal» d = «dsd jlekal» ss = [a,b,c,d] s = SequenceMatcher() for i in range(len(ss)): x = ss[i] s.set_seq1(x) for j in range(i+1,len(ss)): y = ss[j] s.set_seq2(y) print print s.ratio() print s.get_matching_blocks()
Ответ 3
Недавно я написал python script, который запускает алгоритм Смита-Уотермана (это то, что используется для создания локализованных локальных последовательностей последовательности для ДНК или последовательности белка). Это почти наверняка не самая быстрая реализация, поскольку я не оптимизировал ее для скорости вообще (не мое узкое место на данный момент), но она работает и не заботится об идентичности каждого символа в строках. Я мог бы опубликовать его здесь или отправить вам по электронной почте файлы, если это то, что вы ищете.
Ответ 4
MAFFT версия 7.120+ поддерживает несколько выравниваний текста. Ввод похож на формат FASTA, но с текстом LATIN1 вместо последовательностей и вывода выровнен формат FASTA. После установки его легко запустить:
mafft —text input_text.fa > output_alignment.fa
Хотя MAFFT является зрелым инструментом для выравнивания биологической последовательности, режим выравнивания текста находится на стадии разработки, с планами на будущее, включая предоставление разрешенных пользователем матриц подсчета очков. Более подробную информацию вы можете найти в документации.
Источник: utyatnishna.ru