Operate¶
Operate
¶
-
class
operate.
Move
[source]¶ Base class containing methods to perform basic translation, rotation, and alignment operations on instances of system objects.
The methods in this class move entire objects, not pieces of single objects (i.e. no intra-object movements)
Examples
First example shows how to use class methods from system object:
>>> import sasmol.system as system ; import math >>> molecule = system.Molecule('hiv1_gag.pdb') >>> frame = 0 ; axis = 'x' ; theta = 45.0 * math.pi / 180.0 >>> molecule.rotate(frame, axis, theta)
Second example shows how to use class methods directly:
>>> import sasmol.system as system ; import math >>> import sasmol.operate as operate >>> molecule = system.Molecule('hiv1_gag.pdb') >>> frame = 0 ; axis = 'x' ; theta = 45.0 * math.pi / 180.0 >>> operate.Move.rotate(molecule, frame, axis, theta)
Note
self parameter is not shown in the
Parameters
section in the documentation-
align
(other, self_basis, other_basis, **kwargs)[source]¶ Alignment of one object on top of another “self” is aligned onto “other” using the basis of molecule 2 to align onto the basis of molecule 1 and the transformation is then done to all the atoms of molecule 2
self = molecule_2
other = molecule_1
self aligned to other
molecule_2 aligned to molecule_1
Parameters: - frame – integer : trajectory frame number to use
- other – system object : molecule 1
- self_basis – string : unique description of atoms used for alignment
- other_basis – string : unique description of atoms used for alignment
- kwargs – optional future arguments
Returns: updated self._coor
Return type: Examples
>>> import sasmol.system as system >>> molecule_1 = system.Molecule('hiv1_gag.pdb') >>> molecule_2 = system.Molecule('moved_and_rotated_hiv1_gag.pdb') >>> frame = 0 >>> basis_1 = 'name[i] == "CA"' >>> basis_2 = 'name[i] == "CA"' >>> molecule_2.align(molecule_1, basis_1, basis_2) >>> com_sub_2 = molecule_2.calculate_center_of_mass(frame)
Note
mass_check determines if mass is defined for the object so that center of mass can be calculated
-
center
(frame, **kwargs)[source]¶ Method moves the center of mass of object to [0.0, 0.0, 0.0]
Parameters: - frame – integer : trajectory frame number to use
- kwargs – optional future arguments
Returns: updated self._coor and self._center_of_mass
Return type: Examples
>>> import sasmol.system as system >>> molecule = system.Molecule('hiv1_gag.pdb') >>> frame = 0 >>> molecule.calculate_center_of_mass(frame) array([ -6.79114736, -23.71577133, 8.06558513]) >>> molecule.center(frame) >>> molecule.calculate_center_of_mass(frame) array([ 7.11544707e-13, 2.48159571e-12, -8.45832820e-13])
Note
mass_check is called to validate self._total_mass()
Can achieve same result using self.translate(frame, [0,0,0], point=True)
-
mass_check
(**kwargs)[source]¶ Note
mass_check determines if mass is defined for the object so that center of mass can be calculated
Parameters: kwargs – optional future arguments Returns: updated self._total_mass Return type: None Examples
>>> import sasmol.system as system >>> molecule = system.Molecule('hiv1_gag.pdb') >>> molecule.mass_check()
-
rotate
(frame, axis, theta, **kwargs)[source]¶ - Simple rotation about the x, y, or z axis.
Parameters: - frame – integer : trajectory frame number to use
- axis – string : ‘x’, ‘y’, or ‘z’
- theta – float : angle in radians
- kwargs – optional future arguments
Returns: updated self._coor
Return type: Examples
>>> import sasmol.system as system ; import math >>> molecule = system.Molecule('hiv1_gag.pdb') >>> frame = 0 ; axis = 'x' ; theta = 45.0 * math.pi / 180.0 >>> molecule.rotate(frame, axis, theta)
Note
Calculations are carried out using radians
-
rotate_euler
(frame, phi, theta, psi, **kwargs)[source]¶ Rotate the molecule by a euler angle set (phi,theta,psi)
Parameters: - frame – integer : trajectory frame number to use
- phi – float : phi angle
- theta – float : theta angle
- psi – float : psi angle
- kwargs – optional future arguments
Returns: updated self._coor
Return type: Examples
>>> import sasmol.system as system ; import math >>> molecule = system.Molecule('hiv1_gag.pdb') >>> frame = 0 >>> phi = 45.0 * math.pi / 180.0 >>> theta = 45.0 * math.pi / 180.0 >>> psi = 32.0 * math.pi / 180.0 >>> molecule.euler_rotate(frame, phi, theta, psi)
Note
Calculations are carried out using radians
-
rotate_general_axis
(frame, theta, unit_axis, **kwargs)[source]¶ - The general rotation of a molecule along an arbitrarily given unit axis (ux,uy,uz) by an angle theta.
Parameters: - frame – integer : trajectory frame number to use
- theta – float : angle in radians
- unit_axis – float : [ux, uy, uz] components of unit axis
- kwargs – optional future arguments
Returns: updated self._coor
Return type: Examples
>>> import sasmol.system as system ; import math >>> molecule = system.Molecule('hiv1_gag.pdb') >>> frame = 0 ; theta = 45.0 * math.pi / 180.0 >>> unit_axis = [ 0.2, 1.3, -3.5 ] >>> molecule.rotate_general_axis(frame, theta, unit_axis)
Note
Calculations are carried out using radians
-
translate
(frame, value, **kwargs)[source]¶ translate moves the object
Parameters: - frame – integer : trajectory frame number to use
- value – list of x, y, z float values
- kwargs –
- point = True : will translate to a fixed point
- given by value variable
Returns: updated self._coor and self._center_of_mass
Return type: Examples
>>> import sasmol.system as system >>> molecule = system.Molecule('hiv1_gag.pdb') >>> frame = 0 >>> molecule.calculate_center_of_mass(frame) array([ -6.79114736, -23.71577133, 8.06558513]) >>> displacement = [3.0, 4.0, 5.0] >>> molecule.translate(frame, displacement) >>> molecule.calculate_center_of_mass(frame) array([ -3.79114736, -19.71577133, 13.06558513])
>>> import sasmol.system as system >>> molecule = system.Molecule('hiv1_gag.pdb') >>> frame = 0 >>> final_position = [3.0, 4.0, 5.0] >>> molecule.translate(frame, final_position, point=True) >>> molecule.calculate_center_of_mass(frame) array([ 3., 4., 5.])
Note
mass_check is called to validate self._total_mass()
-