数据挖掘 发表于 2013-10-8 21:39:31

借助pymol计算NMR中蛋白的RMSD

背景:
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
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});
}
============


benchenjz 发表于 2013-10-9 10:04:35

thank you for your sharing

popelrain888 发表于 2014-5-3 12:25:12

谢谢分享
页: [1]
查看完整版本: 借助pymol计算NMR中蛋白的RMSD