import numpy as np
import pandas as pd
data = pd.read_csv("out.txt", sep=" ", header=None)
data.head()
structure_counts = data.groupby(1)[2].value_counts()
structure_counts
res_by_structure = data[2].value_counts()
res_by_kind = data[1].value_counts()
res_by_structure
res_by_kind
propensities = pd.DataFrame(columns=["H", "E", "C"], index=np.unique(data[1]), dtype=np.float64)
for structure in propensities.columns:
for res_kind in np.unique(data[1]):
propensities.loc[res_kind, structure] = (structure_counts[res_kind][structure] /
res_by_kind[res_kind]) / \
(res_by_structure[structure] / len(data))
propensities
Из таблички можно сделать несколько выводов:
Также хочу сделать предположение, что анализ всего лишь 30 белковых структур не может дать целостной картины распределения аминокислотных остатков по вторичным структурам. Более того мне кажется, что немало важный аспект в таком разделении играет функциональная роль таких вторичных структур и их окружение. Потому что, например, альфа-спирали которые удерживают белок в мембране или составляют гидрофобное ядро по идеи должны состоять из гидрофобных аминокилот, а бета-листы, боковые радикалы которого участвуют, предположим, в каком-нибудь гидрофильном взаимодействии, будут насыщены гидрофильными остатками.