Нахождение диагностических позиций в выравнивании
В качестве одного из дополнительных заданий практикума 2 из темы "Филогенетические деревья" было предложено найти во множественном выравнивании диагностические позиции, т.е такие, по которым можно судить о принадлежности огранизма к тому или иному таксону.
Для этого мною был написан скрипт на Python с использованием библиотеки ETE2, предназначенной для работы с филогенетическими деревьями.
Алгоритм поиска диагностических позиций состои из двух этапов :
- Нахождение всех аминокислот, которые совпадают в данном множестве
- Удаление тех из них, которые есть в данной позиции и у других таксонов
На вход скрипт принимает файл множественного выравнивания, префикс к названию файлов результатов, а также файл в специальном формате, содержащий название и состав таксонов , и(или) файл, содержащий дерево в формате .nwk. (в случае указания обоих файлов диагностические позиции считаются для всех ветвей, содержащих > 1 элемента; для ветвей, соответствующих какому-либо таксону в выходном файле указывается название таксона, для остальных - 'No Name')
На вход скрипту были поданы следующие файлы:
- muscle_pth_aln.fasta - файл множественного выравнивания, полученный с помощью сервиса MUSCLE
- tax.txt.xls - файл соответствия таксонов и мнемоник организмов, входящих в них
- natural_tree.nwk- файл филогенетического дерева, полученный в ходе предыдущего практикума
Скрипт был запущен командой:
python find_diagn_pos.py -alf muscle_pth_aln.fasta -txf tax.txt.xls -rfp
PTH_diagn_pos -trf natural_tree.nwk
На выходе были получены файлы, содержащие информацию о диагностических позициях:
- PTH_diagn_pos.fasta - файл содержащий диагностические позиции в fasta-формате( Имя таксона, последовательность, в которой на местах диагностических позиций стоят соотвествующие буквы, в остальных позициях - гэпы)
- PTH_diagn_pos.txt - файл, содержащий информацию в user-friendly формате
На рис.1 и рис.2 приведено выравнивание, содержащиее выделенные диагностические позиции для рода Streptococcus и выравнивание, содержащее диагностические позиции для порядка Bacilli
Рис. 1. Диагностические позиции(выделены рамкой) для рода Streptococcus.
Рис.2. Диагностические позиции(выделены рамкой) для порядка Bacilli.