生物分子模拟论坛

 找回密码
 我想注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3778|回复: 2

[Python] 借助pymol计算NMR中蛋白的RMSD

[复制链接]
发表于 2013-10-8 21:39:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,下载更多分子模拟资源。

您需要 登录 才可以下载或查看,没有帐号?我想注册

x
背景:
NMR中有蛋白的多个状态,找出其中差异较大的蛋白。
有两种方法;
方法一:NMRCLUST 聚类
方法二:
首先求一个平均结构,然后计算20个构象与这个平均结构的RMSD
再取最接近平均结构的一个构象a
1wym_right_Number_0009 2.509
同时取与平均结构的rmsd最大的构象b
1wym_right_Number_0013 6.205
最后取与b的rmsd差异最大的c
1wym_right_Number_0005 9.535
我现在通过meanNMR.pl得到了平均结构
现在我借助于pymol中的fit命令来计算RMSD值
NMRrmsd.py
===============================
#!/usr/bin/python

#author: Chen Zhaoqiang
#email: 744891290@qq.com

import sys
import os
import re

print "please change the dir to the dir storing NMR pdbs\n";
from pymol import cmd

parameter=[]
parameter=sys.argv[:]
lenofpara= len(parameter)
if(lenofpara != 5):
print '''usage: NMRrmsd.py -out e:/result.txt'''
path='e:/yyq/receptor/20pdbs';
#sys.exit()
#outfile=sys.argv[2]
cmd.delete('all')
nmrfile=[]
nmrfile=os.listdir(path)
cmd.load('1wym_right_Number_0013.pdb')

for fil in nmrfile:
     # print fil
     if(re.search('1wym_right_Number_0013',fil)):
            pass
     else:
            cmd.load(fil)
     cmdline='fit 1wym_right_Number_0013, '+fil[:-4]
     #cmdline2='rms mean, '+fil[:-4]
     #cmdline3='rms_cur mean, '+fil[:-4]
    #  print cmdline
     cmd.do(cmdline)
     #cmd.do(cmdline2)
     #cmd.do(cmdline3)

cmd.delete('all')           
#notice :the result of rms and fit is the same,
#rms_cur:in the nmr,maybe the result is same,
#if translation a position of a protein,the rms_cur will change
#Rms_Cur computes the RMS difference between two atom selections without performing any fitting
===================
rmsd进行排序pymolrmsd.pl
====
#!/usr/bin/perl -w
use strict;
open FH,"E:/yyq/selecrmsd.txt";
my %hash;
my ($name,$rmsd);
while(<FH>)
{
      
      if($_=~/PyMOL>fit \S+, (\S+)/)
      {
            $name=$1;
             print "$name  "
      }
      elsif($_=~/ Executive: RMS =    (\S+)/)
      {
            $rmsd=$1;
            print "$rmsd\n";
            {no strict;
             no warnings;
            # print "$name, $rmsd  \n";
              $hash{$name}=$rmsd;
            }
      }
      
}
foreach my $key (sort  { $hash{$a} <=> $hash{$b} } keys %hash)
{
     printf("%s\t%s\n",$key, $hash{$key});
}
============


评分

参与人数 1金币 +20 收起 理由
川大-灰太狼 + 20 很给力!鼓励发布原创帖!

查看全部评分

本帖被以下淘专辑推荐:

发表于 2013-10-9 10:04:35 | 显示全部楼层
thank you for your sharing
发表于 2014-5-3 12:25:12 | 显示全部楼层
谢谢分享
您需要登录后才可以回帖 登录 | 我想注册

本版积分规则

QQ|分迪科技|小黑屋|手机版|Archiver|生物分子模拟论坛 ( 蜀ICP备14009200号-3

GMT+8, 2018-6-18 23:43 , Processed in 0.149908 second(s), 28 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表