Endonuclease PvuII (1PVI) DNA - GATTACAGATTACA
CAP - Catabolite gene Activating Protein (1BER)
DNA - GATTACAGATTACAGATTACA Endonuclease PvuII bound to palindromic DNA recognition site CAGCTG (1PVI) DNA - GATTACAGATTACAGATTACA TBP - TATA box Binding Protein (1C9B)
CAP - Catabolite gene Activating Protein (1BER)
GCN4 - leucine zipper transcription factor bound to palindromic DNA recognition site ATGAC(G)TCAT (1YSA)
GCN4 - leucine zipper transcription factor bound to palindromic DNA recognition site ATGAC(G)TCAT (1YSA)
GCN4 - leucine zipper transcription factor bound to palindromic DNA recognition site ATGAC(G)TCAT (1YSA)
GCN4 - leucine zipper transcription factor bound to palindromic DNA recognition site ATGAC(G)TCAT (1YSA)
GCN4 - leucine zipper transcription factor bound to palindromic DNA recognition site ATGAC(G)TCAT (1YSA)
TBP - TATA box Binding Protein (1C9B)
 

° 

SampleLoop

-

Sample central or terminal loop


CommandArgumentDatatypeDefault Min Max
Format: SampleLoop Atom selection start of loop or 'None',SELECTION-- -
   Atom selection end of loop or 'None', SELECTION---
  Structures = Number of structures to generate, INT1--
  Bumpsum = Maximum allowed sum of all loop backbone bumps in Å,FLOAT1.0--
  SecStr = Required secondary structure H E T C STRINGAny--
Python:resultlist = SampleLoop(selection1,selection2,structures=None,bumpsum=None,secstr=None)
Menu:Edit > Sample > Loop
Related: BuildLoop , BuildLoopDB
Required:


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

Figure: Result of the example macro above.