最近遇到了两次需要初略估计蛋白长宽高的情况,其实这个非常简单,在pdb中查看卡迪尔坐标然后排序即可。这里和大家分享三种方法:
1.shell进行读取
这个我之前其实有分享过,代码简单如下:
1
2
3
4
5
6
7
8
|
#!/bin/sh
#作者:GROMACS中文组群: 广药-阿福
#x轴
grep ^ATOM $1 | awk ‘{print $7}’| sort -n |sed -n ‘1p;$p’
#y轴
grep ^ATOM $1 | awk ‘{print $8}’| sort -n |sed -n ‘1p;$p’
#z轴
grep ^ATOM $1 | awk ‘{print $9}’| sort -n |sed -n ‘1p;$p’
|
2.利用python脚本进行读取计算
这个是我今天写的,写的很初略,因为我发现第三种方法最直接简练:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#-*-coding:utf-8-*-
x=[]
y=[]
z=[]
for i in open('file.pdb','r'):
if i.startswith('ATOM'):
new=i.split()
x.append(float(new[6]))
y.append(float(new[7]))
z.append(float(new[8]))
else:
pass
print('长:'+str(max(x)-min(x)))
print('宽:'+str(max(y)-min(y)))
print('高:'+str(max(z)-min(z)))
|
3.Pymol进行读取计算
其实简单的方便的方法可以使用Pymol的get_extent
来获得XYZ的最大最小值,如下排列:
1
|
[ [ min-X , min-Y , min-Z ],[ max-X, max-Y , max-Z ]]
|
可以使用命令行如下:
PYMOL API如下:
1
|
cmd.get_extent(string selection="(all)", state=0 )
|