RDC Refinement with XPLOR-NIH: Difference between revisions
No edit summary |
No edit summary |
||
Line 36: | Line 36: | ||
media[medium] = oTensor | media[medium] = oTensor | ||
pass | pass | ||
</pre> | |||
<br> The example below contains NH, NCO, and HNC RDCs from two different alignment media. The Da rescaling factor was used since the magnitude of the non-NH RDCs were not normalized to the magnitude of NH RDCs. | |||
<pre>from rdcPotTools import create_RDCPot, scale_toNH | |||
rdcs = PotList('rdc') | |||
for (medium,expt,file, scale) in \ | |||
[('t','NH' ,'tmv107_nh.tbl' ,1), | |||
('t','NCO','tmv107_nc.tbl' ,.05), | |||
('t','HNC','tmv107_hnc.tbl' ,.108), | |||
('b','NH' ,'bicelles_new_nh.tbl' ,1), | |||
('b','NCO','bicelles_new_nc.tbl' ,.05), | |||
('b','HNC','bicelles_new_hnc.tbl',.108) | |||
]: | |||
rdc = create_RDCPot("%s_%s"%(medium,expt),file,media[medium]) | |||
#1) scale prefactor relative to NH | |||
# see python/rdcPotTools.py for exact calculation | |||
# scale_toNH(rdc) - not needed for these datasets - | |||
# but non-NH reported rmsd values will be wrong. | |||
#3) Da rescaling factor (separate multiplicative factor) | |||
# scale *= ( 1. / rdc.oTensor.Da(0) )**2 | |||
rdc.setScale(scale) | |||
rdc.setShowAllRestraints(1) #all restraints are printed during analysis | |||
rdc.setThreshold(1.5) # in Hz | |||
rdcs.append(rdc) | |||
pass | |||
potList.append(rdcs) | |||
rampedParams.append( MultRamp(0.05,5.0, "rdcs.setScale( VALUE )") ) | |||
</pre> | |||
<br> Allow Da and R to float by using the setFreedom method associated with the medium object. To fix the peptide plane, the IVM_groupRigidBackbone tool were used (First two lines and the last line). | |||
<pre>from selectTools import IVM_groupRigidBackbone | |||
IVM_groupRigidBackbone(dyn) | |||
for m in media.values(): | |||
# m.setFreedom("fixDa, fixRh") #fix tensor Rh, Da, vary orientation | |||
m.setFreedom("varyDa, varyRh") #vary tensor Rh, Da, vary orientation | |||
protocol.torsionTopology(dyn,oTensors=media.values()) | |||
# minc used for final cartesian minimization | |||
# | |||
minc = IVM() | |||
protocol.initMinimize(minc) | |||
IVM_groupRigidBackbone(minc) | |||
</pre> | </pre> |
Revision as of 14:06, 29 March 2010
Brief Description
Residual Dipolar Couplings (RDCs) originate from the anisotropic component of the dipolar interaction, which is dependent on the angle between an inter-nuclear vector and the magnetic field. When a molecule samples orientations uniformly, as it does in normal solution NMR, dipolar couplings average to zero and are not observable. However, if a molecule is dissolved in a dilute liquid crystalline medium, or other orienting medium, it becomes partially aligned, and the dipolar couplings are not completely averaged to zero. This leads to a small contribution to the splitting of NMR signals. The angular dependence of these contributions can provide valuable structural information that complements NOE distance restraints. RDCs can be used to validate protein structures, to refine structures to improve quality, and to provide constraints as a part of an initial structure determination. Here, we describe the RDC-refinement protocol using XPLOR-NIH. The python version of the refinement script was taken from the example dataset (xplor-nih-2.22/eginput/gb1_rdc/refine.py) provided by the XPLOR-NIH package. The key features of this refinement are as follow:
- - Variable tensor tools for floating the RDC tensors during refinement
- - A radius of gyration term to represent the weak packing potential
- (This potential is used when the calculated structures are too loosely packed)
- - Database potentials of mean force to refine against:
- - Multidimensional torsion angles
- - Backbone hydrogen bonding database (Optional)
Software Information
XPLOR-NIH
http://nmr.cit.nih.gov/xplor-nih/
REDCAT
http://ifestos.cse.sc.edu/software.php
Files Need to Run XPLOR-NIH
The following files in XPLOR format are required to run the refinement:
- prot_noe.tbl NOE restraint table (converted from CYANA upl file using a CYANA to XPLOR conversion script)
- prot_dihe.tbl Dihedral angle restraint (Use CYANA for format conversion)
- prot_rdc.tbl RDC restraint table
- prot.psf and prot.pdb Startup psf and pdb files were generated using the lowest energy structure from CYANA.
Protocol for RDC Refinement
First, obtain a good estimate of the magnitude of Da and R from alignment tensors using either REDCAT or PALES program and use this as a starting point for the refinement. Then edit the following portion of the refine.py script. Note: text on the same line and following a “#” sign is not read by the XPLOR program.
# medium Da rhombicity for (medium,Da,Rh) in [ ('t', -6.5, 0.62), ('b', -9.9, 0.23) ]: oTensor = create_VarTensor(medium) oTensor.setDa(Da) oTensor.setRh(Rh) media[medium] = oTensor pass
The example below contains NH, NCO, and HNC RDCs from two different alignment media. The Da rescaling factor was used since the magnitude of the non-NH RDCs were not normalized to the magnitude of NH RDCs.
from rdcPotTools import create_RDCPot, scale_toNH rdcs = PotList('rdc') for (medium,expt,file, scale) in \ [('t','NH' ,'tmv107_nh.tbl' ,1), ('t','NCO','tmv107_nc.tbl' ,.05), ('t','HNC','tmv107_hnc.tbl' ,.108), ('b','NH' ,'bicelles_new_nh.tbl' ,1), ('b','NCO','bicelles_new_nc.tbl' ,.05), ('b','HNC','bicelles_new_hnc.tbl',.108) ]: rdc = create_RDCPot("%s_%s"%(medium,expt),file,media[medium]) #1) scale prefactor relative to NH # see python/rdcPotTools.py for exact calculation # scale_toNH(rdc) - not needed for these datasets - # but non-NH reported rmsd values will be wrong. #3) Da rescaling factor (separate multiplicative factor) # scale *= ( 1. / rdc.oTensor.Da(0) )**2 rdc.setScale(scale) rdc.setShowAllRestraints(1) #all restraints are printed during analysis rdc.setThreshold(1.5) # in Hz rdcs.append(rdc) pass potList.append(rdcs) rampedParams.append( MultRamp(0.05,5.0, "rdcs.setScale( VALUE )") )
Allow Da and R to float by using the setFreedom method associated with the medium object. To fix the peptide plane, the IVM_groupRigidBackbone tool were used (First two lines and the last line).
from selectTools import IVM_groupRigidBackbone IVM_groupRigidBackbone(dyn) for m in media.values(): # m.setFreedom("fixDa, fixRh") #fix tensor Rh, Da, vary orientation m.setFreedom("varyDa, varyRh") #vary tensor Rh, Da, vary orientation protocol.torsionTopology(dyn,oTensors=media.values()) # minc used for final cartesian minimization # minc = IVM() protocol.initMinimize(minc) IVM_groupRigidBackbone(minc)