计算蛋白长宽高

最近遇到了两次需要初略估计蛋白长宽高的情况,其实这个非常简单,在pdb中查看卡迪尔坐标然后排序即可。这里和大家分享三种方法:

1.shell进行读取

这个我之前其实有分享过,代码简单如下:

#!/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脚本进行读取计算

这个是我今天写的,写的很初略,因为我发现第三种方法最直接简练:

#-*-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的最大最小值,如下排列:

[ [ min-X , min-Y , min-Z ],[ max-X, max-Y , max-Z ]]

可以使用命令行如下:

get_extent sele

PYMOL API如下:

cmd.get_extent(string selection="(all)", state=0 )

你可能感兴趣的:(计算蛋白长宽高)