|
|
本帖最后由 对抗路达摩 于 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
-
查看全部评分 View all ratings
|