计算化学公社

 找回密码 Forget password
 注册 Register
Views: 4847|回复 Reply: 3
打印 Print 上一主题 Last thread 下一主题 Next thread

[GROMACS] 任意pdb对其中的蛋白质的chainID重新命名方法求助

[复制链接 Copy URL]

59

帖子

0

威望

206

eV
积分
265

Level 3 能力者

跳转到指定楼层 Go to specific reply
楼主
各位老师好,我想请教的问题是:我有一个pdb文件,其中有36个蛋白。pdb中第22列是chainID.目前这些蛋白的chainID都是乱的,有数字、有字母、有空缺。我需要给所有蛋白的chainID重新命名,规则是ABCD…Zabcd…z0123…9。因为每个蛋白有好几百个原子,所以手动一个个更改第22列的方法工作量实在太大了。请问有什么除了手动之外,重命名chainID的方法吗?谢谢

206

帖子

0

威望

2251

eV
积分
2457

Level 5 (御坂)

2#
发表于 Post on 2022-3-30 22:05:58 | 只看该作者 Only view this author
you can create a script using python with the biopython library or try with pdb-tools

59

帖子

0

威望

206

eV
积分
265

Level 3 能力者

3#
 楼主 Author| 发表于 Post on 2022-3-30 22:22:17 | 只看该作者 Only view this author
rpestana94 发表于 2022-3-30 22:05
you can create a script using python with the biopython library or try with pdb-tools

Thanks a lot for your info! I go to check biopython and pub-tools :)

82

帖子

2

威望

793

eV
积分
915

Level 4 (黑子)

分子模拟晶戈

4#
发表于 Post on 2022-3-31 14:41:11 | 只看该作者 Only view this author
本帖最后由 对抗路达摩 于 2022-3-31 14:45 编辑

其实不需要用biopython或者pdb-tools这些包这是我写给别人的一个添加元素名称的小脚本,里面写了中文注释,简单修改就可以实现你得功能主要是一个简单的“读pdb”和"写pdb“的实现
allLine = []
#把这里的.pdb改成你自己的pdb文件名
for line in open('system1_MD_element.pdb', 'r'):
    oneLine = line.split()
    #只处理开头是ATOM的行
    if oneLine[0] != 'ATOM':
        continue
    #oneline是一个数组,是把你的一行按空格断开然后存入
    #编号0到10依次是ATOM,原子序号原子名称,残基名称,链标识符,残基序列号
    #X坐标,Y坐标,Z坐标,占有率,温度因子
    #根据原子名称判断是否是碳元素        
    if oneLine[2] == 'C' or oneLine[2] == 'C1' or oneLine[2] == 'C2' or oneLine[2] == 'C3' or oneLine[2] == 'C4' or oneLine[2] == 'C5' or oneLine[2] == 'C6' or oneLine[2] == 'C8' or oneLine[2] == 'C9' or oneLine[2] == 'C10' or oneLine[2] == 'C13' or oneLine[2] == 'C15' or oneLine[2] == 'C16':
        element = 'C'
    elif oneLine [2] == 'N13' or oneLine [2] == 'N15':
        element = 'N'
    elif oneLine [2] == 'OW' or oneLine [2] == 'O3' or oneLine [2] == 'O5' or oneLine [2] == 'O7' or oneLine [2] == 'O11' or oneLine [2] == 'O12' or oneLine [2] == 'O14' or oneLine [2] == 'O17' or oneLine [2] == 'O19' or oneLine [2] == 'O21' or oneLine [2] == 'O23':
        element = 'O'
    else:
        element = 'H'
    #把链标识符去掉 后面的很多没残基序列号
    if len(oneLine) >= 11:
        oneLine.pop(4)
    oneLine.append(element)
    allLine.append(oneLine)

f = open ('output.pdb', 'w')
for line in allLine:
    f.write(line[0])
    #根据原子编号的长度确认打的空格数目
    k = 7 - len(line[1])
    for i in range(0, k):
        f.write(' ')
    f.write(line[1])
    f.write('  ')
    f.write(line[2])
    k = 4 - len(line[2])
    for i in range (0, k):
        f.write(' ')
    f.write(line[3])
    k = 6 - len(line[4])
    for i in range(0, k):
        f.write(' ')
    f.write(line[4])
    k = 12 - len(line[5])
    for i in range(0, k):
        f.write(' ')
    f.write(line[5])
    k = 8 - len(line[6])
    for i in range(0, k):
        f.write(' ')
    f.write(line[6])
    k = 8 - len(line[7])
    for i in range(0, k):
        f.write(' ')
    f.write(line[7])
    f.write('  ')
    f.write(line[8])
    f.write('  ')
    f.write(line[9])
    f.write('           ')
    f.write(line[10])
    f.write('\n')

评分 Rate

参与人数
Participants 1
eV +3 收起 理由
Reason
sobereva + 3

查看全部评分 View all ratings

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2026-2-23 22:41 , Processed in 0.157532 second(s), 21 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list