RDC Refinement with XPLOR-NIH
Brief Description
The angular dependence of RDCs and RCSAs can provide valuable structural information that complements NOE distance restraints.
RDCs and RCSAs can be used to:
- - Validate protein structures
- - Refine protein structures (current topic)
- - Provide constraints as a part of an initial structure determination (CYANA 3.0 with RDC)
Here, we describe the RDCs and RCSAs 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 (http://nmr.cit.nih.gov/xplor-nih/). 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)
Getting Started
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_rcsa.tbl RCSA 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)