{+ file : morph_dist.inp Multiple-chain morphing script for CNS Based on script by Werner Krebs Nat Echols , last mod: 07-20-03 Part of the Macromolecular Morping Server Tested with CNS 1.1 (no patching required) PLEASE DO NOT REDISTRIBUTE THIS FILE! If you use it, we request that you cite the following publicatons: Echols, N, Milburn, D, and Gerstein, M (2003). MolMovDB: analysis and visualization of conformational change and structural flexibility. Nucleic Acids Res. 31:478-82. Krebs, WG, and Gerstein M (2000), The morph server: a standardized system for analyzing and visualizing macromolecular motions in a database framework, Nucleic Acids Res 2000 Apr 15;28(8):1665-1675. Or, if you use it for making movies for presentations, please simply cite the following page: The Yale Morph Server http://molmovdb.org (and if you feel really nice, thank Nat Echols, Werner Krebs, and Mark Gerstein.) We also love to see any movies created using this script, and even add them to our database, but this is optional. +} {+====================== INITIALIZATION ========================+} {+ Replace value of 'outframes' with desired number of files in +} {+ the morph (including start and end frames). The number of +} {+ steps and initial drop for minimization can be varied for a +} {+ smoother movie; you will usually want to decrease the steps +} {+ to as few as 30. +} define ( outframes=20; morph_nsteps=60; morph_drop=10; initial="rf0.pdb"; final="rf1.pdb"; ) topology @@CNS_TOPPAR:protein.top @@CNS_TOPPAR:dna-rna.top @@CNS_TOPPAR:ion.top @@CNS_TOPPAR:water.top @@CNS_TOPPAR:carbohydrate.top end parameter @@CNS_TOPPAR:protein.param @@CNS_TOPPAR:dna-rna.param @@CNS_TOPPAR:ion.param @@CNS_TOPPAR:water.param @@CNS_TOPPAR:carbohydrate.param end ! This next bit assumes you're using the chain ID to define ! segments. This is usually okay, though in the server we ! modify all segids anyway. ! ! If your structures have gaps or other deficiencies, you ! can generate the .mtf file separately and use that to ! define connectivity instead, e.g.: ! structure @rf0.mtf end ! We don't usually do this because we're usually trying ! to end up with homogeneous structures. segment chain separate-by-segid=ON convert-chainid-to-segid=ON @@CNS_TOPPAR:protein.link @@CNS_TOPPAR:dna-rna.link coordinates @@&initial end end end do (name="O") ( name OT1 ) do (name="OT") ( name OT2 ) do (name="CD1") ( name CD and resname ile ) do (name="OXT") ( name OT ) evaluate ($frame = 1) evaluate ($inframe = 0) {+ **** load first frame **** +} coordinates @&initial end delete selection=( name = OT* ) end ! There are some problems with this, but it's usually safe. delete selection=( hydrogen ) end delete selection=( not known ) end write coordinates output=frame0.pdb end coor swap end coordinates @&final end delete selection=( name = OT* ) end delete selection=( hydrogen ) end delete selection=( not known ) end coor swap end evaluate ($adv = &outframes - 1) {+ ================= ADIABATIC MAPPING STEP =================== +} {+ This is the important part. +} while ($adv > 0) loop morph evaluate ($outfile = "frame" + encode($frame) + ".pdb") if ($adv = 1) then coor swap end else {+ This is essential for very large structures. +} set echo=off message=off end {+ Linear interpolation step +} for $atm in id (known) loop advance do ( x = x + ((xcomp - x) / $adv) ) (id $atm) do ( y = y + ((ycomp - y) / $adv) ) (id $atm) do ( z = z + ((zcomp - z) / $adv) ) (id $atm) end loop advance minimize powell nstep = &morph_nsteps drop = &morph_drop end set echo=on message=on end end if write coordinates output=$outfile end evaluate ($adv = $adv - 1) evaluate ($frame = $frame + 1) end loop morph {+ Bye! +} stop