2016-03-21 3 views
0

У меня есть последовательности РНК, которые содержат различные модифицированные нуклеотиды и остатки. Некоторые из них, например, N79, 8XU, SDG, I.Сепаратор нуклеотидов в выравнивании парной последовательности био-питон

Я хочу, чтобы их выровнять поровну с использованием pairwise2.align.localms biopython. Можно ли вводить ввод не как строку, а как список, например, чтобы точно учитывать эти модифицированные базы?

Какая правильная техника?

ответ

4

модуль pairwise2 Biopython работает над строками букв, которые могут быть что угодно - например:

>>> from Bio import pairwise2 
>>> from Bio.pairwise2 import format_alignment 
>>> for a in pairwise2.align.localms("ACCGTN97CT", "ACCG8DXCT", 2, -1, -.5, -.1): 
...  print(format_alignment(*a)) 
... 
ACCG--TN97CT 
|||||||||||| 
ACCG8DX---CT 
    Score=9.7 

ACCGTN97--CT 
|||||||||||| 
ACCG---8DXCT 
    Score=9.7 

Вы можете установить результаты матча/несоответствия в соответствии с вашими потребностями. Однако это предполагает, что каждая буква является отдельным элементом.

В вашем вопросе неясно, был ли ваш пример N79 одним модифицированным нуклеотидом или тремя? Если вы хотите рассматривать N79 как одну базу, это кажется возможным: я не думаю, что это было намеренно (поэтому я не хотел бы зависеть от этого поведения), но я мог бы обмануть pairwise2 в работе над списками строк:

>>> for a in pairwise2.align.localms(["A", "C", "C", "G", "T", "N97", "C", "T"], ["A", "C", "C", "G", "8DX", "C", "T"], 2, -1, -.5, -.1, gap_char=["-"]): 
...  print(format_alignment(*a))                             ... 
['A', 'C', 'C', 'G', 'T', 'N97', 'C', 'T'] 
|||||||| 
['A', 'C', 'C', 'G', '8DX', '-', 'C', 'T'] 
    Score=10.5 

['A', 'C', 'C', 'G', 'T', 'N97', 'C', 'T'] 
|||||||| 
['A', 'C', 'C', 'G', '-', '8DX', 'C', 'T'] 
    Score=10.5 

Обратите внимание, что функция format_alignment по умолчанию не отображает это очень хорошо.

+0

Спасибо! Оно работает. У тебя есть другие идеи? – RuslanN

+0

И не могли бы вы вкратце объяснить, как и почему это работает? Я подозреваю, что все дело в аргументе «gap_char»? – RuslanN

1

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

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

И вы правы, это также связано с аргументом gap_char: поскольку вы применяете последовательность в виде списка, символ пробела также должен быть определен как список (["-"]).

+0

Отлично! Спасибо за объяснение. – RuslanN

 Смежные вопросы

  • Нет связанных вопросов^_^