# YASARA MACRO # TOPIC: 5. Structure Determination # TITLE: Refine an NMR ensemble in vacuo # REQUIRES: YASARA Structure and NMR Structure Determination Module # AUTHOR: Elmar Krieger, Sander Nabuurs, Chris Spronk # LICENSE: GPL # DESCRIPTION: This macro refines a roughly folded structure in vacuo to create a realistic fold # To refine an ensemble in vacuo, you need: # - An ensemble of roughly folded structures in PDB format # default filenames are 'ensemble001.pdb', 'ensemble002.pdb' etc. # - A file with distance and dihedral angle restraints, # default filename is 'restraints.tbl' # # You can either set the target by clicking on Options > Macro > Set target, # by providing it as command line argument (see docs at Essentials > The command line), # or by uncommenting the line below and specifying it directly. #macrotarget = 'c:\MyProject\1crn' # If you want to change the defaults, do it here, before the defaults are included. # (look in nmr_setdefaults to see what you can change) # Set those defaults that have not been set already include nmr_setdefaults # Step 2: Proceed to a realistic structure by in vacuo simulation with NOVA # ========================================================================= # Having created the approximate protein fold, the next step is to # increase the resolution and let the hydrogen bonds snap into place. RestrainPar (defaultpar) SimSteps 10 Console Off LogAs (logfile),append=yes,print 'In vacuo refinement:' for i=start to start+structures-1 Clear # Load the ensemble member, maybe the user just started here size = FileSize (ensemblefile)(i).pdb if size LoadPDB (ensemblefile)(i),Correct=No else LoadPDB (ensemblefile)(start),Correct=No # Set the BFactors for floating assignments in case this macro was run directly, not from nmr_solve. # Don't affect dummy atoms like the RDC coordinate system BFactorAtom Element !Dummy,0 BFactorAtom (floating),25 # Correction of naming deviations (Val/Leu) could be useful, but Clean may do too much #Clean LogAs (logfile),append=Yes,print ' Ensemble structure (i):' # This is done in vacuo with YASARA. At this stage, speed is more important # than accuracy, so a very small 5.24 A cutoff is used. ForceField (fofvacuo) Cutoff 5.24 TimeStep 2,0.75 Cell Auto,Extension=20 # Load the restraints RestrainPot (defaultpot) Load(restrainformat) (restrainfile),1,NameFormat=(nameformat) ScaleRest Distance=(defaultscale1),Dihedral=(defaultscale2),RDC=(defaultscale3) # Exclude non-bonded interactions for now Interactions Bond,Angle,Dihedral,Planarity Temp (500+i*10)K # Correct cis-peptide bonds and wrong isomers by applying a force CorrectCis byForce,Old=(correctoldcisiso),Proline=(correctcispro) CorrectIso byForce,Old=(correctoldcisiso) CorrectConv on Sim On ShowMessage 'Initial steepest descent minimization...' TempCtrl SteepDes for j=1 to 1000 Wait 1 if SpeedMax<4000 break # Shake it a bit ShowMessage 'Relaxing structure without non-bonded interactions...' TempCtrl Reassign,CollisionProb=15% Wait 20 # Now comes the 'trick': the non-bonded interactions are slowly added, # which causes the protein to blow up to a realistic volume. The first # time, this may trap part of the peptide chain at the wrong spot, # that's why the cycle is repeated until not improvement is found for # 'failuresmax' times. failuresmax=4 # To avoid loose structures, we don't use a 'radius of gyration' refinement, # but instead start pulling a bit earlier _,_,offset=RestrainPot RestrainPot SqOffset=(0.5+offset) # First move everything, then only the sidechains bestenergy=1e100 bestenergyshown='not yet determined' for fixed in 'none','backbone' FixAtom (fixed) failures=0 while failures1 Interactions Bond,Angle,Dihedral,Planarity,VdW,Coulomb # Short MD TempCtrl Reassign,CollisionProb=15% Wait (waitlist(k)) # Show secondary structure changes Style Ribbon,Stick violenergy = RestEnergy if violenergy7 break bestenergyshown=0.00+bestenergy CorrectKnots off ShowMessage 'In vacuo refinement completed.' Sim off