Difference between revisions of "Transform odb"

From PyMOLWiki
Jump to: navigation, search
m
m
Line 9: Line 9:
 
* matrix_file = file name or path of .odb file containing a transformation matrix data block
 
* matrix_file = file name or path of .odb file containing a transformation matrix data block
 
* transpose (default 0]
 
* transpose (default 0]
 
  
 
===EXAMPLES===
 
===EXAMPLES===
Line 15: Line 14:
  
 
===USER COMMENTS===
 
===USER COMMENTS===
 +
Contact
 +
 +
===Source===
 +
from pymol import cmd
 +
import pymol
 +
import os
 +
import re
 +
import string
 +
 +
def __init__(self):
 +
cmd.extend('transform_odb', transform_odb)
 +
 +
# Creates a new object name from selection after transforming it with O-style matrix
 +
# found in matrix_file
 +
# Author: Mark Saper <saper@umich.edu>
 +
 +
def transform_odb( name, selection, matrix_file='matrix.odb',  transpose=0):
 +
 +
# open the file for reading
 +
matrix_file = os.path.expanduser(matrix_file)
 +
matrix_file = os.path.expandvars(matrix_file)
 +
theInFile = open ( matrix_file,"r")
 +
 +
# what we'll store the results in
 +
theMatrix = []
 +
 +
# read every line in the file and ...
 +
for theCurrLine in theInFile.readlines():
 +
  if (theCurrLine) and (theCurrLine[0] != '!') and (theCurrLine[0] != '.'):
 +
  # if the line isn't blank, make a list of items seperated by tabs
 +
  theNewRow = string.split (theCurrLine)
 +
  # add it in the matrix
 +
  theMatrix.extend ( theNewRow )
 +
 +
# change matrix to pymol unsupported format
 +
 +
theMatrix = [ theMatrix[0], theMatrix[3], theMatrix[6], theMatrix[9],
 +
  theMatrix[1], theMatrix[4], theMatrix[7], theMatrix[10],
 +
  theMatrix [2], theMatrix [5], theMatrix[8], theMatrix[11],
 +
  0.0, 0.0, 0.0, 0.0 ]
 +
theMatrix = [ float(x) for x in theMatrix]
 +
 +
# close the file
 +
theInFile.close ()
 +
 +
r = cmd.create ( name, selection)
 +
r = cmd.transform_object( name, theMatrix, transpose=transpose)
 +
 +
return r
 +
 +
cmd.extend('transform_odb', transform_odb)
  
 
===SEE ALSO===
 
===SEE ALSO===

Revision as of 00:17, 2 August 2005

DESCRIPTION

"transform_odb" transforms the coordinates of a selection and creates a new object with the transformed coordinates. The transformation matrix is read from a specified "O"-style tranformation matrix file (.odb) written by "O" or by any of the Uppsala Software Factory programs (from Gerard Klegweit) such as LSQMAN.

USAGE

transform_odb name, (selection), matrix_file [, transpose]
  • name = object to contain transformed coordinates
  • selection = atoms to transform
  • matrix_file = file name or path of .odb file containing a transformation matrix data block
  • transpose (default 0]

EXAMPLES

transform moved_helix, ( mol1 and resi 200:220 ),  move_helix.odb

USER COMMENTS

Contact

Source

from pymol import cmd import pymol import os import re import string

def __init__(self): cmd.extend('transform_odb', transform_odb)

  1. Creates a new object name from selection after transforming it with O-style matrix
  2. found in matrix_file
  3. Author: Mark Saper <saper@umich.edu>

def transform_odb( name, selection, matrix_file='matrix.odb', transpose=0):

# open the file for reading matrix_file = os.path.expanduser(matrix_file) matrix_file = os.path.expandvars(matrix_file) theInFile = open ( matrix_file,"r")

# what we'll store the results in theMatrix = []

# read every line in the file and ... for theCurrLine in theInFile.readlines(): if (theCurrLine) and (theCurrLine[0] != '!') and (theCurrLine[0] != '.'): # if the line isn't blank, make a list of items seperated by tabs theNewRow = string.split (theCurrLine) # add it in the matrix theMatrix.extend ( theNewRow )

# change matrix to pymol unsupported format

theMatrix = [ theMatrix[0], theMatrix[3], theMatrix[6], theMatrix[9], theMatrix[1], theMatrix[4], theMatrix[7], theMatrix[10], theMatrix [2], theMatrix [5], theMatrix[8], theMatrix[11], 0.0, 0.0, 0.0, 0.0 ] theMatrix = [ float(x) for x in theMatrix]

# close the file theInFile.close ()

r = cmd.create ( name, selection) r = cmd.transform_object( name, theMatrix, transpose=transpose)

return r

cmd.extend('transform_odb', transform_odb)

SEE ALSO

transform_selection, transform_object