Идентификация консервативного остатка в нескольких структурах PDB

У меня есть несколько сотен структур PDB одного и того же белка, и мне нужно идентифицировать конкретный консервативный остаток во всех из них.

Первоначально я хотел извлечь последовательности из файлов PDB с помощью BioPython, выровнять их, а затем использовать это выравнивание для определения номера остатка в каждой PDB для моего сохраненного остатка.

Но оказалось, что это немного сложнее, чем я ожидал. Части последовательности часто отсутствуют в PDB. Я не вижу очевидного способа получить правильную последовательность из файлов PDB. Затем возникает проблема отображения сохраненного остаточного числа обратно в файл PDB.

Есть ли более простой способ сделать это? Это не обязательно должен быть BioPython, хотя это было бы неплохо.

Здесь есть много потенциальных проблем. 1. ваш скрипт biopython изо всех сил пытается обработать отсутствующие последовательности (вам нужен обработчик ошибок). 2. вы используете необычный набор плохо отформатированных PDB-файлов. Я попытался ответить, предполагая, что ваши коды PDB хорошо сопоставляются с uniprot. Дайте мне знать, как это происходит!

Ответы (3)

Мой подход к этой проблеме заключался бы в использовании VMD (визуальной молекулярной динамики) , где вы можете загружать несколько PDB, выполнять структурное и/или выравнивание последовательностей и анализировать сохранение остатков в рамках одной программы.

VMD — это мощная программа молекулярной визуализации для отображения, анимации и анализа больших биомолекулярных систем с использованием трехмерной графики и встроенных сценариев. Это, вероятно, излишество для того, что вы хотите сделать, но я нахожу его довольно интуитивно понятным в использовании и мощным. У меня также есть потрясающая документация и множество пошаговых руководств, начиная с этого базового введения.

Что вам особенно нужно для решения вашей проблемы, так это подключаемый модуль MultiSeq 2.0 , который вы можете найти в разделе Расширения->Анализ->MultiSeq в новых версиях VMD. Это среда биоинформатики, которая позволяет вам загружать, отображать и анализировать как данные последовательности, так и данные о структуре ваших белков всего за несколько щелчков мышью. Он также имеет большой набор учебных пособий , которые помогут вам начать! Что может показаться вам интересным для сравнения многих похожих белковых структур, так это возможность создавать, просматривать и манипулировать филогенетическими деревьями .

Вот пошаговое руководство по сравнению структур и последовательностей с MultiSeq.

Скриншот выравнивания последовательности MultiSeq Скриншот выравнивания структуры MultiSeq Филогенетическое дерево, созданное с помощью MultiSeq

Здесь вы можете найти оригинальные публикации как для VMD, так и для MultiSeq:

ВМД:

Хамфри В., Далке А. и Шультен К., VMD - Visual Molecular Dynamics. , Дж. Молек. Графика, 1996 г. , 14:33-38.

Мультипоследовательность:

Робертс Э., Эргл Дж., Райт Д. и Люти-Шультен З., MultiSeq : Объединение данных о последовательности и структуре для эволюционного анализа. Биоинформатика BMC, 2006 г. , 7:382.

Я не думаю, что проблема для OP заключается в MSA или анализе сохранения, а в том, что PDB имеют неполные последовательности, и это вызовет проблемы с разбором Python.

Неполные последовательности — распространенная проблема. Один из способов обойти это — отправить список идентификаторов PDB в средство сопоставления идентификаторов. Тот, что в Юнипроте, работает хорошо. Просто скопируйте и вставьте свои идентификационные коды PDB. Убедитесь, что вы переходите с PDB на UniprotKB (см. рисунок ниже. Надеюсь, вы сможете сопоставить большинство, если не все ваши идентификаторы.

Изображение, показывающее PDB в раскрывающемся списке

После этого загрузите текстовый файл. Затем вы можете извлечь последовательности из этого текстового файла с помощью следующего скрипта:

from Bio import SeqIO
filenames = ["YOURINPUTFILE.txt"]
input_format = "swiss" 
output_filename = "YOUROUTPUTFILE.fasta" 

output = open(output_filename, "w")
for filename in filenames:
    for record in SeqIO.parse(filename, input_format):
        sequence = record.seq
        output.write(">%s\n%s\n" % (record.id, sequence))

Затем отправьте эти последовательности в свой любимый инструмент MSA. Я ответил на вопрос о том, как сделать MSA здесь, если вы не сделали его раньше.

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

Вы можете использовать Ensembl ( http://www.ensembl.org/index.html ) для получения ортологов белка и выравнивания их с помощью одной из многих бесплатных веб-программ (например, ClusterOmega).