Выравнивание кодонов через Python? [закрыто]

У меня есть пары кодирующих последовательностей ДНК, которые я хочу выполнить попарно выравниванием кодонов с помощью Python , я «наполовину завершил» процесс.

До сих пор..

  • Я извлекаю пары ортологичных последовательностей ДНК из генбанка, используя Biopythonpackage.
  • Я транслирую ортологичные пары в пептидные последовательности, а затем выравниваю их с помощью EMBOSS Needleпрограммы.

Я бы желал..

  • Перенесите пробелы из пептидных последовательностей в исходные последовательности ДНК.

Вопрос

Я был бы признателен за предложения по программам/кодам (вызываемым из Python), которые могут переносить пробелы из пар выровненных пептидных последовательностей в кодоны соответствующих пар нуклеотидных последовательностей. Или программы/код, которые могут выполнять парное выравнивание кодонов с нуля.

введите описание изображения здесь

Почему бы вам просто не выровнять последовательности нуклеотидов в первую очередь? Просто используйте любую программу для выравнивания.
Выравнивание кодонов служит цели, только таким образом вы можете получить значения несинонимичных (dN) и синонимичных (dS) скоростей мутаций, которые затем можно использовать для получения соотношения dN/dS, используемого для вывода о селекции.
Вы можете сделать это достаточно легко из последовательности ДНК, не нужно переводить. Просто выровняйте и прочитайте кодоны из выравнивания. Кажется, вы зря усложняете себе жизнь. Тем не менее, это, вероятно, слишком компьютерный гик для этого сайта, и вам лучше спросить на biostars .
В любом случае, я бы просто создал хэш (словарь, который, я думаю, называется в Python), который связывает каждую аминокислоту с ее кодоном. Затем, когда у вас есть выравнивание, прочитайте его и используйте словарь для перевода обратно к исходным кодонам, вставляя пробелы по мере их обнаружения.
Этот вопрос кажется не по теме, потому что он касается программирования, а не биологии. Вопросы биоинформатики здесь актуальны, если они касаются основных концепций, вы задаете очень технический вопрос, ответом на который будет код.
Хорошее замечание по поводу «слишком технического», хм, хотя я видел различные технические вопросы, касающиеся программного обеспечения, а также лабораторного протокола. Кроме того, если бы я действительно использовал выравнивание ДНК, разве я не получил бы перекрывающиеся кодоны из-за размеров пробелов, которые не кратны 3? Я делаю выравнивание кодонов, так как это стандартная процедура анализа dN/dS — вот объяснение: hiv.lanl.gov/content/sequence/CodonAlign/…
Я хорошо знаком с этим, спасибо :). Я защитил кандидатскую диссертацию по сравнительной геномике и реконструкции истории эволюции, я сделал больше выравниваний, чем мне хочется помнить. Вам нужно знать, являются ли два кодона синонимами или нет, чтобы получить dN/dS, но не обязательно для их перевода, это просто простой способ проверить. В любом случае, используя мое предложение dict, это довольно тривиально. Не стесняйтесь @ping меня в чате биологии , если вам нужна дополнительная помощь.
Сохраните генетический код в словаре; Используйте некоторый кодон по умолчанию для каждой аминокислоты, используемой ---для пробела, обозначенного в последовательности пептида как -. Способ сделать это в python: gcode={} gcode['M']='ATG' gcode['-']='---'... и т. д. Затем разделите входную последовательность и найдите каждую букву в словаре.

Ответы (1)

Основной процесс будет (в псевдокоде, я недостаточно хорошо знаю python, я фанат Perl):

$seq1=ATGCCAGGCTGA
$seq2=ATGGGACCATAA;
for ($i=0;$i<length($seq1);$i++){
   codons1[$i]=amino_acid
}
for ($i=0;$i<length($seq2);$i++){
       codons2[$i]=amino_acid
}

На этом этапе у вас будет два массива, или хэша, или кортежа, или словаря, или чего-то еще, содержащего аминокислоту, которая соответствует каждой позиции кодона во входных последовательностях. Вы идете и делаете свой перевод и dS/dN, а затем можете использовать эти списки, чтобы сопоставить исходные нуклеотиды:

for ($i=0;$i<length($ProteinSseq1);$i++){
  print codons1[$i]
}

Вам нужно будет адаптировать это, чтобы правильно работать с кодонами (i++ будет увеличиваться только на единицу, вам нужно извлечь триплеты), а затем читать пробелы, но все это проблемы программирования, которые не имеют ничего общего с биологической стороной вещей.