计算蛋白长宽高

最近遇到了两次需要初略估计蛋白长宽高的情况,其实这个非常简单,在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 )
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,766评论 18 399
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,387评论 25 708
  • 背景: 阅读新闻 12C CDB模式下RMAN备份与恢复 [日期:2016-11-29] 来源:Linux社区 作...
    阳屯okyepd阅读 3,608评论 0 7
  • 活在安定的世界中,虽不至国泰民安太平盛世,但也至少平淡恬静。自己的圈子,常去的地方,几点几线兜兜转转也不过几十平方...
    行道与共阅读 262评论 0 1
  • 早上在床上和孩子一起聊天,聊着聊着就说到了学二胡的事了。 妈妈:你玩游戏要花我的钱,上学读书也要花我的钱,要...
    乐兜阅读 142评论 0 0