PlopRotTemp.py

From Jacobson Lab Wiki

Jump to: navigation, search

Contents

[edit] For ligands

Reads in a maestro mae file and makes a "rotamer enabled" template and the rotamer library to accompany it. This consists of finding the backbone core that results in the least number of child bonds rotated with any rotatable bond rotation. Reads in the rotatable bonds from a macromodel atomtyping (should be easily modifyiable to read them from stdin). Hetgrp_ffgen is used for atomtyping and to determine the geometry in the template fromt the mae. The mae must only have the residue to atomtype in it.

Builds rotamer libraries for arbitrary ligand molecules by building and combining rotamer libraries. There are two general algorithms that are implemented. This first is using macromodel (or some other external tool) to sample the degrees of freedom and converting the resulting ensemble into a rotamer library. The second is identifying the rotatable bonds, again using macromodel, and assigning rotamer libraries to these bonds. For most bonds a simple freely rotatable library ( 0,10,20,30...360), but in the case of closed rings special libraries are built using macromodel sampling. These component rotamer libraries are then arranged into groups for use in PLOP. Each group consists of a single tree rooted at the central core. This core can either be used chosen, or will be chosen based on an algorithm that minimizes the number of bond lengths from the farthest leeaf to the trunk. Any built rotamer libraries are placed in the current directory and a file called <resname>.rot.assign is also written. This tells PLOP how to assemble the full combinatoric library that will be used in sidehchain prediction/monte carlo.

[edit] For unnatural amino acids

Requires:

  1. a maestro mae file of an unnatural amino acid with no NMA or ACE termini; the N-H and C=0 are to be left as they are found in a peptide
  2. a template file (specified by -t=<FILENAME>) created by hetgrp-ffgen using a maestro mae file of an unnatural amino acid with NMA or ACE termini present

Option Settings Required: -unnat=yes -t=<FILENAME> [other options] <RESIDUE_WITHOUT_CAPPING_GROUPS>.mae Outputs:

  1. a re-ordered template file (old one is backed up in FILENMAE.hetgrp_ffgen)
  2. a PLOP nonstandard residue specification for pasting into a PLOP control file, both to stdout and to <maefile>_torsions.txt

Options

  -core=<an1>           Give one atom of the core section
  -f=<an1>,<an2>        Fix this bond number in the mae file.  
                        CANNOT USE MACORMODEL SAMPLING WITH THIS OPTION 
  -tor=<an1>,<an2>      Define torsions instead of using macromodel to do it.  
                        CANNOT USE MACORMODEL SAMPLING WITH THIS OPTION 
                        YOU MUST ALSO SPECIFY WHETHER THERE ARE RINGS OR NOT (-r) 
  -btor=<an1>,<an2>     Define torsions for the backbone  
  -m=<yes/no>           Wheter  to split into multiple libraries
  -sar=<an1>            Sample only one group of ligand torsions, those in the "R-group" starting 
                        with this atom (with respect to the core). This R-group must be the 
                        furthest number of bonds away from the core atom when compared to other 
                        R groups in the same molecule. This option is for "plop-docking" using the
                        "tether pred ..." options in plop's tether_mod.F. Using this protocol makes
                        plop's "nonstandard" syntax for nonstandard side chains unnecessary.
  -min=<yes/no>         Whether to minimize
  -r=<yes/no/only>      Whether to allow flexible rings
  -t=<FILENAME>         Use this original template instead of creating one
  -o=<FILENAME>         Write output to this filename (default is the residue name)
  -g=<GRIDRES>          Input the grid resolution for plop rotamer library
  -goh=<GRIDRES>        Input grid resolution for plop rotamer library (OHs)
  -OPLS=<2001,2005>     OPLS version to use
  -mae_charges=<yes/no> Use mae charges for template file
  -mtor=<number>        Gives the maximum number of torsions allowed in each
                        group.  Will freeze bonds to extend the core if 
                        necessary.
  -clean=<yes/no>       Whether to clean up all the intermediate files
  -d                    Debuging mode, assume all external programs have been
                        already run and the intermediate files were not cleaned

[edit] Options for Macromodeling Sampling

Setting any of these options will do the sampling in macromodel to build a sidechain library. Otherwise a series of libraries will be indentified to be combined together in plop later.

  -c=<FILENAME>    Use the following pdb/mae file as an exhaustive list of
                   all confomers.  This must be one file with multiple
                   models/entries.  Still uses macromodel to find rotatable
                   bonds. 
  -n=<number>      Maximum Number of Entries in Rotamer File
  -a=<CGEN,MCMM...>Type of Search to Run
  -s=<number>      Maximum Conformers to Sample
  -e=<number>      Energy Cutoff (in kJ/mole)
  -md=<number>     Maximum distance between atoms in equivalent struct(A)

Options for Unnatural Amino Acids

  -chain=<chain>   For output of PLOP-style nonstandard residue specification,
                   set the chain name equal to what it would be in the whole
                   macromolecule
  -res=<num>       For output of PLOP-style nonstandard residue specification,
                   set the residue number equal to what it would be in the whole
                   macromolecule

Mae file should be properly atomtyped

Most common problem: As part of this procedure the pdb atom names are often renamed when they are not unique. Alsothis procedure works best if the ligand is minimized. For these two reasons an atomtyped, minimzed version of the input ligand is written to (input).PlopRotTemp.pdb. If at all possible, use the ligand structure and atom names from this file in any subsequent plop runs.

examples: Build a rotamer library for the following ligand at a grid resolution of 20 deg using PLOP to combine libraries

 $SCHRODINGER/utilities/python PlopRotTemp.py 3ert_lig.mae -g=20

Build a rotamer library for the following ligand at a grid resolution of 20 deg using CGEN sampling in macromodel.

 $SCHRODINGER/utilities/python PlopRotTemp.py 3ert_lig.mae -a=CGEN

Build a rotamer library for the following ligand at a grid resolution of 20 deg using macromodel to sample any rings and combining this with freely rotatable libraries in PLOP to create combined libraries for the ligand.

 $SCHRODINGER/utilities/python PlopRotTemp.py 1rth_lig.mae -r=yes


[edit] For the "-sar" option for "plop-docking"

 set core_atom_name=`echo ${core_atom_name} | sed -e 's/_//g'`
 set core_atom_num=`grep $core_atom_name $maefile | head -n 1 | awk '{print $1}'`
 $SCHRODINGER/utilities/python /home/mcclendon/plop/PlopRotTemp.py -m=yes  -r=no -min=no -core=${core_atom_num} -sar=${R_group_first_rotatable_bond_terminal_atom_name} $maefile

The "core atom name" needs to be a rigid atom (part of the ligand 'backbone') that is not sampled, and that is from the R-group most distant in # of bonds from the R-group-to-be-sampled with respect to other R-groups containing rotatable bonds. For linear ligands where a carboxylate or phosphate is the rigid part, just use one of those atom names.

The R_group_first_rotatable_bond_terminal_atom_name is the 4-character PDB atom name (with underscores for spaces) of the second atom that is part of the first rotatable bond you want sampled, i.e. the one furthest from the core.

This will give you a "*.rot.assign" file that you need to copy to the directory where you will run plop. With this, no "nonstandard" syntax is needed, plop will automatically recognize the .rot.assign file and assign the rotatable bonds.

[edit] Building Rotamer Libraries

To build a rotamer library using PlopRotTemp.py :

A python script has been written to generate a rotamer library and a template file designed specifically for that rotamer library. It uses Macromodel to find the rotatable bonds and do conformational sampling of rings (or the whole molecule). It can be called using the following command.

$SCHRODINGER/utilities/python <PLOP_DIR>/PlopRotTemp.py filename.mae -m=<yes/no> -r=<yes/no>

where filename.mae is a meastro file containing the residue of interest. Running the python script without a filename will produce a help screen giving its (many) options. The most used are "-m" which determines whether or not to split the ligand into multiple groups with seperate libaries. The "-r" command determines whether or not to open flexible rings and create libaries for them. A template file is created for the ligand and is adjusted to correspond to the rotamer library created. This template corresponds to the rotamer libraries created. The zmat ordering contained therein is essential and another one cannot be substituted.

rot write <res name> <gridres> <filename>
rot write A:216 10.0 all_rotamers

Writes all the rotamers (no steric screen) of a given residue at a given resolution to the multiple model output pdb file. Is use mainly for debugging purposes. The way this is written, it will not combine libraries so if you have multiple libraries in a group run a sidechain prediction with just the ligand in the input pdb with the "write_libs yes" flag. It will create files with the temporary libraries (LIG__1.side, LIG__2.side ...) built during the sidechain prediction and you can then load them. If you have a protein present during the sidechain prediction it will write the rotamer library pruned for the presense of the protein backbone.

rot assign LIG sidelib LIG__1.side default newgrp LIG__2.side default newgrp .... LIG__N.side default

and use the rot write command. This is a bit of a kludge but since its really only there for testing I haven't fixed it. This will also print out the whole protein in every model so a pdb file with 5000 atoms written 30,000 times is a big file (you probably want to use it with a file containing only the ligand).

Personal tools