前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用Python分析蛋白质pdb文件

使用Python分析蛋白质pdb文件

作者头像
Tom2Code
发布2024-01-26 15:31:26
3400
发布2024-01-26 15:31:26
举报
文章被收录于专栏:TomTom

今天我们使用python中的一个处理pdb的库:

Bio.pdb

就可以通过pdb文件获取蛋白质中各种有用的信息了:

首先我们今天的实验目标是:

随机从pdb bank抽取一个小蛋白质,

pdb id是1mh1

首先第一个很重要的函数,通过pdb文件加载蛋白质结构,我们接下来的操作都将基于此函数的返回进行操作:

代码语言:javascript
复制
def load_structure(pdb_file):
    parser = PDBParser()
    return parser.get_structure('PDB_structure', pdb_file)
    

structure=load_structure('1mh1.pdb')
  1. 计算氨基酸残基数量
代码语言:javascript
复制
def count_residues(structure):
    return len(list(structure.get_residues()))

residue_count = count_residues(structure)
print(f"Number of residues: {residue_count}")

截图:

2.提取蛋白质序列:

代码语言:javascript
复制
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.计算中心质量:

代码语言:javascript
复制
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.计算所有氨基酸残基:

代码语言:javascript
复制
def get_residues(structure):
    return [residue for residue in structure.get_residues() if residue.get_id()[0] == ' ']

输出:

这里科普一下氨基酸与氨基酸残基:

代码语言:javascript
复制
在生物化学中,氨基酸和氨基酸残基这两个术语之间的关系非常紧密,但它们指的是略微不同的事物:

氨基酸:氨基酸是构成蛋白质的基本单位,是小分子有机化合物。它们具有一个中心的碳原子(α-碳),一个氨基(-NH₂),一个羧酸基(-COOH),一个氢原子,以及一个可变的侧链(通常用R表示)。蛋白质是由氨基酸通过脱水缩合反应链接起来的长链状分子。

氨基酸残基:当氨基酸组成蛋白质时,它们通过形成肽键相互连接。在形成肽键的过程中,每个氨基酸失去了一个水分子(一个羧基的-OH和另一个氨基的-H)。失去这些原子组成的水分子后,氨基酸在蛋白质中的部分被称为“氨基酸残基”。简而言之,氨基酸残基是氨基酸在脱水缩合成蛋白质链后的形式。

总结来说,氨基酸是单独存在时的形态,而当它们通过肽键连接成蛋白质时,每个氨基酸成为蛋白质链的一部分,这时它们被称为氨基酸残基。氨基酸残基保留了氨基酸的侧链和与肽键相关的部分,但失去了参与形成肽键的一些原子。

5.计算两个残基之间的距离:

代码语言:javascript
复制
# 定义一个函数来计算两个残基之间的最小距离
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

结果:

今天就先分享到这里,下次继续分享。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-01-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Tom的小院 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档