![]() |
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
The SampleLoop command searches the PDB for stretches of residues with start and end points that superpose well on the two atom selections and transfers the top scoring hits to copies of the selected object.
The command works exactly like BuildLoop
, with the only difference that the possible conformations for an existing loop are sampled. Consequently,
the sequence and secondary structure are known already and do not have to be specified. If the
SecStr parameter is nevertheless set, you can force SampleLoop
to create a conformational change. Since scanning a few thousand PDB files can take a few minutes,
YASARA also supports an instantaneous search using a quick access index of the PDB. This index can only be used if the three backbone atoms C-N-CA of two consecutive residues are selected as N-terminal anchor,
and the atoms CA-C-N of another two consecutive residues as the C-terminal anchor.
Again, loops are not required to be true loops, it is easily possible to sample e.g. a beta strand to check for possible beta bulges.
Example 1:SampleLoop Backbone Res 17-18,Backbone Res 24-25,Structures=10 Search the PDB for the 10 best loops from residue 17 to 25 that superpose well on top of the backbone of residues
17-18 and 24-25. Example 2:SampleLoop C Res 17 or N CA Res 18,CA C Res 25 or N Res 25,Structures=10 Almost as above, but since the special atom triplets C-N-CA and CA-C-N are selected,
the loop database index can be used and the command executes orders of magnitude faster.
Example 3:SampleLoop None,Backbone Res 4-5,Structures=8,BumpSum=0,SecStr=HHHHH Find the 8 best conformations for the 5 N-terminal residues that superpose well on the backbone of residues
4-5, minimize bumps and are all helical. Example 4:SampleLoop Backbone Res 40-43,None,Structures=12,BumpSum=99999 Find the 12 best C-terminal conformations that superpose well on the backbone of residues
40-43 and ignore any bumps. Example 5:objlist() = SampleLoop Backbone Res 40-43,None,Structures=12,BumpSum=99999 As above, and assign the numbers of the newly created objects to
'objlist'. Example macro:
# EXAMPLE SampleLoop
# Requires YASARA Structure
Clear
# DEFINE THE FIRST AND LAST RESIDUE IN THE LOOP AND
loop=778,784
# THE NUMBER OF CONFORMATIONS TO SAMPLE
loops=5
# DEFINE THE CONVERGENCE CUTOFF FOR SIDE-CHAIN SAMPLING
# (LARGER NUMBER = LONGER SAMPLING)
convergence=30
# LOAD PDB FILE AND KEEP ONE FIBRONECTIN DOMAIN
LoadPDB 1cfb
DelRes 610-710 or !Protein,center=Yes
OriObj 1,-60,148,20
PosObj 1,-1.5,-13,35
# SAMPLE LOOP, CREATE 10 STRUCTURES
looprange='Res (loop(1))-(loop(2))'
# USE THE TWO RESIDUES N- AND C-TERMINAL TO THE LOOP AS ANCHORS
objlist() = SampleLoop Backbone Res (loop(1)-2) (loop(1)-1),
Backbone Res (loop(2)+1) (loop(2)+2),
Structures=(loops),Bumpsum=3
Style Ribbon,Stick
Console Off
# PREPARE SIMULATION
Clean
ForceField Yamber2
Cutoff 7.86
Longrange Coulomb
Boundary periodic
# FOR EVERY LOOP CONFORMATION, OPTIMIZE THE SIDE-CHAINS AND CALCULATE THE ENERGY
for i=1 to loops
# REMOVE EVERYTHING ELSE
obj=objlist(i)
RemoveAll
AddObj (obj)
Cell Auto,Extension=15
# START SIMULATION
Sim On
Sim Pause
Charge 0
# REMEMBER THE BEST STRUCTURE
best(i)=9e99
failures=0
SavePosAtom All,bestpos
# REPEAT UNTIL PROCEDURE FAILED (convergence) TIMES
while failures<convergence
# CHANGE A RANDOM SIDECHAIN ROTAMER IN THE LOOP
SampleDih Sidechain CA (looprange),Method=Database,Structures=1,Dihedrals=1,Bumpsum=0,Scaffold=5
# SHOW THE NEW ROTAMER ON SCREEN
Wait 1
# CALCULATE ENERGY
current=Energy
if current<best(i)
# ACCEPT NEW STRUCTURE
best(i)=current
SavePosAtom All,bestpos
failures=0
else
# REJECT NEW STRUCTURE, BACK TO BEST STRUCTURE
LoadPosAtom All,bestpos
failures=failures+1
ShowMessage 'Optimizing rotamers in loop (i). Failures now (failures), best energy (0.00+best(i))..'
# LET THE LOOP RELAX
ShowMessage 'Energy minimizing loop (i)'
FixRes not (looprange)
TempCtrl SteepDes
Sim Continue
Wait SpeedMax<3000
Temp 0
TempCtrl Anneal
TimeStep 2,0.5
Wait 300
FreeAll
best(i)=Energy
# NOW RANK THE STRUCTURES BASED ON THE ENERGY USING A SIMPLE BUBBLE SORT
do
sorted=1
for i=1 to loops-1
if best(i)>best(i+1)
swap=best(i)
best(i)=best(i+1)
best(i+1)=swap
SwapObj (objlist(i)),(objlist(i+1))
sorted=0
while !sorted
DelObj SimCell
# SUPERPOSE THE BUNDLE
AddObj All
OriObj 1,-60,148,20
PosObj 1,-1.5,-13,35
for obj in objlist
SupAtom CA Obj (obj) and not (looprange),Obj 1,Match=Yes
# SET STYLE+COLORS
Style Ribbon,Stick
ColorRes (looprange),Blue,Cyan,Segments=Yes
HideRes not (looprange)
HideMessage
Console On
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||