Нам даны десять структур попарно схожие друг с другом не более, чем на 40%. Посмотрим на их третичную структуру.
from IPython.display import Image
Image('sup/pr8/pack1.png')
Image('sup/pr8/pack2.png')
Как мы видим, в целом упаковска всех молекул одинакова. Мы чётко видим две альфа-спирали и бета-лист имеющиеся у всех структур. Однако заметны отдельные спирали, уникальные для определённых белков.
Попробуем найти среди структур такие, у которых один и тот же участок размечен по разному.
Image('sup/pr8/str1.png')
Небольшой участок бета-листа. Четыре водородные связи. Хотя разметка на мой взгляд слегка не доведена.
Image('sup/pr8/str2.png')
Тот же участок в другой структуре. Размерен как просто петля. Видимо всё портит пропущенный остаток в последовательности. По нижней цепи можно предположить, что тут должен быть тот же бета-лист.
Image('sup/pr8/str4.png')
Другая структура. Бета-лист. Тоже слегка не доведён, но тут суть не в этом. Посмотрим на его пару.
Image('sup/pr8/str3.png')
Идентичная структура. Вновь всё портит отсутствующий остаток, но даже там, где свё на месте, разметка не точная.
Из всего этого можно сделать вывод, что хоть автоматическая разметка крайне удобна, экономит время и упрощает понимание структуры, ей нельзя верить до конца. Особенно в случае неполных данных.
В этом задании нам надо сгенерировать разметку для каждой структуры программой mkdssp и посмотреть как часто, тот или иной остаток учавствует в образовании той или иной вторичной структуры.
data_E = {'G': 0, 'L': 0, 'Y': 0, 'S': 0, 'E': 0, 'Q': 0, 'D': 0, 'N': 0, 'F': 0, 'A': 0, 'K': 0, 'R': 0, 'H': 0, 'C': 0, 'V': 0, 'P': 0, 'W': 0, 'M': 0, 'T': 0, 'I': 0}
data_H = {'G': 0, 'L': 0, 'Y': 0, 'S': 0, 'E': 0, 'Q': 0, 'D': 0, 'N': 0, 'F': 0, 'A': 0, 'K': 0, 'R': 0, 'H': 0, 'C': 0, 'V': 0, 'P': 0, 'W': 0, 'M': 0, 'T': 0, 'I': 0}
data_C = {'G': 0, 'L': 0, 'Y': 0, 'S': 0, 'E': 0, 'Q': 0, 'D': 0, 'N': 0, 'F': 0, 'A': 0, 'K': 0, 'R': 0, 'H': 0, 'C': 0, 'V': 0, 'P': 0, 'W': 0, 'M': 0, 'T': 0, 'I': 0}
for name in ['1.out', '2.out', '3.out', '4.out', '5.out', '6.out', '7.out', '8.out', '9.out', '10.out']:
file = open('sup/pr8/' + name)
for line in file:
line_ss = line.strip().split()
if line_ss[2] == 'E':
data_E[line_ss[1]] += 1
elif line_ss[2] == 'H':
data_H[line_ss[1]] += 1
else:
data_C[line_ss[1]] += 1
file.close()
data_E['P']
Пролинов в бета-листах не оказалось. Придётся использовать псевдокаунты.
P_E = []
P_H = []
P_C = []
P_E_n = 0
P_H_n = 0
P_C_n = 0
aa = ['G', 'L', 'Y', 'S', 'E', 'Q', 'D', 'N', 'F', 'A', 'K', 'R', 'H', 'C', 'V', 'P', 'W', 'M', 'T', 'I']
for i in aa:
P_E_n += data_E[i]
P_H_n += data_H[i]
P_C_n += data_C[i]
N = P_E_n + P_H_n + P_C_n + 60
for i in aa:
P_E.append(((data_E[i] + 1) / (data_E[i] + data_H[i] + data_C[i] + 3)) / ((P_E_n + 20) / N))
P_H.append(((data_H[i] + 1) / (data_E[i] + data_H[i] + data_C[i] + 3)) / ((P_E_n + 20) / N))
P_C.append(((data_C[i] + 1) / (data_E[i] + data_H[i] + data_C[i] + 3)) / ((P_E_n + 20) / N))
import pandas as pd
result = pd.DataFrame({"Residue" : aa, "Helix probability" : P_H, "Sheet probability" : P_E, "Coil probability" : P_C})
result
Среди моих структур не нашлось аминокислот, которые бы чаще встречались в альфа-спиралях, чем где-либо ещё. Однако Тирозин, Цистеин, Метионин и Изолейцин немного чаще встречаются в бета-листах. А Глицин, Аспартат, Гистидин и Пролин заметно чаще встретились в петлях.