Using 'Alignment to principal axes '

From: Andres Morales N (andresmoralesn2_at_hotmail.com)
Date: Mon Aug 29 2011 - 00:38:44 CDT

Dear NAMD and VMD users
 
I am working in to construct a system that consists of a lipid bilayer, water and a peptid (the peptide must be located in the water, out the membrane).
 
 
Both, the peptid and the bilayer were equilibrated during 2 ns separately. So I have two systems: peptid-water and lipids-water.
 

I need to locate the peptide in diferent orientations regard the bilayer. I guess the best option to do it is using the package Oriented implemented in VMD.
 
So, I aligned the bilayer and the peptido to its principal axis, acording http://www.ks.uiuc.edu/Research/vmd/script_library/scripts/orient/. Acording it, the principal axes are rotated to match the diferent catersian axes. First I oriented the lipids and water in order to get its principal axis 1,2 and 3 parallel to X, Y and Z respectively.

I did not have problems when I tried to place the peptide parallel to the bilayer. It is rotating it in order to get its principal axis '1' paralel to 'X', '2' to 'Y' and '3' to 'Z'. To construct the new system I used the following script:

 
######################################################################################################
package require Orient
  namespace import Orient::orient

 
set dppc_or [mol load psf dppc.psf pdb dppc.pdb]
  
  set sel0 [atomselect $dppc_or "lipids"]
  set sel1 [atomselect $dppc_or "all"]
  $sel1 moveby [vecinvert [measure center $sel0 weight mass]]
  set I [draw principalaxes $sel0]
  set A [orient $sel0 [lindex $I 2] {0 0 1}]
  $sel1 move $A
  set I [draw principalaxes $sel0]
  set A [orient $sel0 [lindex $I 1] {0 1 0}]
  $sel1 move $A
  set I [draw principalaxes $sel0]
  

set bact_or [mol load psf bact.psf pdb bact.pdb]
  
  set sel2 [atomselect $bact_or "protein"]
  $sel2 moveby [vecinvert [measure center $sel2 weight mass]]
  
  set J [draw principalaxes $sel2]
  set B [orient $sel2 [lindex $J 2] {0 0 1}]
  $sel2 move $B
  set J [draw principalaxes $sel2]
  set B [orient $sel2 [lindex $J 1] {0 0 0}]
  $sel2 move $B
set J [draw principalaxes $sel2]
  
  $sel1 moveby [vecinvert [measure center $sel0 weight mass]]
  $sel2 moveby [vecinvert [measure center $sel2 weight mass]]
  set I [draw principalaxes $sel0]
  set J [draw principalaxes $sel2]

$sel1 writepdb dppc_tem1.pdb
$sel2 writepdb bact_tem1.pdb
 

# move the peptid out the membrane

set bact [mol load psf bact.psf pdb bact_tem1.pdb]
  set sel3 [atomselect $bact "protein"]
# set des [expr abs(5 + $maxx)]
set vec {28.0 0.0 0.0}
$sel3 moveby $vec
   
$sel3 writepdb bact_tem2.pdb

#Merge pdb files
 
mol delete all
package require psfgen
resetpsf
readpsf dppc.psf
coordpdb dppc_tem1.pdb
readpsf bact.psf
coordpdb bact_tem2.pdb
guesscoord
writepsf bact_dppc_temp.psf
writepdb bact_dppc_temp.pdb

mol delete all

## delete water molecules that overlap with the peptide

set dppc_bact [mol load psf bact_dppc_temp.psf pdb bact_dppc_temp.pdb]
 
set del1 [atomselect $dppc_bact "water and same residue as {water and within 3 of protein}"]
 set seg1 [$del1 get segid]
 set res1 [$del1 get resid]
 set name1 [$del1 get name]
 for {set i 0} {$i < [llength $seg1]} {incr i} {
 delatom [lindex $seg1 $i] [lindex $res1 $i] [lindex $name1 $i]
   }
writepsf bact_dppc.psf
writepdb bact_dppc.pdb
resetpsf
mol delete all

### neutralize the system resetpsf
 package require psfgen
 package require autoionize
  
autoionize -psf bact_dppc.psf -pdb bact_dppc.pdb -nna 4 -ncl 8
 
################################################################################################
 
 
The problem appeared when I tried to locate the peptid perpendicular to the bilayer. Following the logic used in the previous case, I aligned the peptid principal axes in order to get a 90 degrees rotation using :

set bact_or [mol load psf bact.psf pdb bact.pdb]
  
  set sel2 [atomselect $bact_or "protein"]
  $sel2 moveby [vecinvert [measure center $sel2 weight mass]]
  
  set J [draw principalaxes $sel2]
  set B [orient $sel2 [lindex $J 2] {0 -1 0}]
  $sel2 move $B
  set J [draw principalaxes $sel2]
  set B [orient $sel2 [lindex $J 1] {0 0 1}]
  $sel2 move $B
set J [draw principalaxes $sel2]
 
But I only obtained a 90 degree rotation of the peptide in the plane paralel to the bilayer ( The peptide continued paralel to the bilayer).

Does anybody know how I can solve this problem?
Are there any documentation about using principal axis aligment and Orient package?
 
 
Thanks for your help

 
 
 Hernán Andrés Morales Navarrete

Biophysics and Molecular Modeling Group
Physics Department
Escuela Politécnica Nacional, Quito - Ecuador
Ladrón de Guevara E11-253.
Casilla 17-01-1253
http://www.ciencias.epn.edu.ec/~biomod/

 
                                                

This archive was generated by hypermail 2.1.6 : Mon Dec 31 2012 - 23:20:45 CST