今天我们使用python中的一个处理pdb的库:
Bio.pdb
就可以通过pdb文件获取蛋白质中各种有用的信息了:
首先我们今天的实验目标是:
随机从pdb bank抽取一个小蛋白质,
pdb id是1mh1
首先第一个很重要的函数,通过pdb文件加载蛋白质结构,我们接下来的操作都将基于此函数的返回进行操作:
def load_structure(pdb_file):
parser = PDBParser()
return parser.get_structure('PDB_structure', pdb_file)
structure=load_structure('1mh1.pdb')
def count_residues(structure):
return len(list(structure.get_residues()))
residue_count = count_residues(structure)
print(f"Number of residues: {residue_count}")
截图:
2.提取蛋白质序列:
from Bio.SeqUtils import seq1
def get_sequence(structure):
residues = [residue for residue in structure.get_residues() if residue.get_id()[0] == ' ']
return ''.join([seq1(residue.get_resname()) for residue in residues])
sequence = get_sequence(structure)
print(f"Protein sequence: {sequence}")
输出:
3.计算中心质量:
def calc_center_of_mass(structure):
coord_sum = np.zeros(3)
total_mass = 0
for atom in structure.get_atoms():
mass = atom.mass
coord_sum += atom.coord * mass
total_mass += mass
return coord_sum / total_mass
输出:
4.计算所有氨基酸残基:
def get_residues(structure):
return [residue for residue in structure.get_residues() if residue.get_id()[0] == ' ']
输出:
这里科普一下氨基酸与氨基酸残基:
在生物化学中,氨基酸和氨基酸残基这两个术语之间的关系非常紧密,但它们指的是略微不同的事物:
氨基酸:氨基酸是构成蛋白质的基本单位,是小分子有机化合物。它们具有一个中心的碳原子(α-碳),一个氨基(-NH₂),一个羧酸基(-COOH),一个氢原子,以及一个可变的侧链(通常用R表示)。蛋白质是由氨基酸通过脱水缩合反应链接起来的长链状分子。
氨基酸残基:当氨基酸组成蛋白质时,它们通过形成肽键相互连接。在形成肽键的过程中,每个氨基酸失去了一个水分子(一个羧基的-OH和另一个氨基的-H)。失去这些原子组成的水分子后,氨基酸在蛋白质中的部分被称为“氨基酸残基”。简而言之,氨基酸残基是氨基酸在脱水缩合成蛋白质链后的形式。
总结来说,氨基酸是单独存在时的形态,而当它们通过肽键连接成蛋白质时,每个氨基酸成为蛋白质链的一部分,这时它们被称为氨基酸残基。氨基酸残基保留了氨基酸的侧链和与肽键相关的部分,但失去了参与形成肽键的一些原子。
5.计算两个残基之间的距离:
# 定义一个函数来计算两个残基之间的最小距离
def min_distance_between_residues(residue1, residue2):
min_distance = float('inf')
for atom1 in residue1.get_atoms():
for atom2 in residue2.get_atoms():
distance = atom1 - atom2
if distance < min_distance:
min_distance = distance
return min_distance
结果:
今天就先分享到这里,下次继续分享。