def get_transformation(self, coordinates): """Construct a transformation object""" atom1, atom2 = self.hinge_atoms direction = coordinates[atom1] - coordinates[atom2] direction /= np.linalg.norm(direction) direction *= np.random.uniform(-self.max_amplitude, self.max_amplitude) result = Translation(direction) return result
def get_transformation(self, molecule): atom1, atom2 = self.hinge_atoms direction = molecule.coordinates[atom1] - molecule.coordinates[atom2] direction /= numpy.linalg.norm(direction) direction *= numpy.random.uniform(-self.max_amplitude, self.max_amplitude) result = Translation() result.t[:] = direction return result
def get_transformation(self, coordinates): """Construct a transformation object""" atom1, atom2, atom3, atom4 = self.hinge_atoms a = coordinates[atom1] - coordinates[atom2] a /= np.linalg.norm(a) b = coordinates[atom3] - coordinates[atom4] b /= np.linalg.norm(b) direction = 0.5 * (a + b) direction *= np.random.uniform(-self.max_amplitude, self.max_amplitude) result = Translation(direction) return result
def get_transformation(self, molecule): atom1, atom2, atom3, atom4 = self.hinge_atoms a = molecule.coordinates[atom1] - molecule.coordinates[atom2] a /= numpy.linalg.norm(a) b = molecule.coordinates[atom3] - molecule.coordinates[atom4] b /= numpy.linalg.norm(b) direction = 0.5 * (a + b) direction *= numpy.random.uniform(-self.max_amplitude, self.max_amplitude) result = Translation() result.t[:] = direction return result
def randomize(self, center): self.transform(Translation(-np.array(center))) self.transform(Rotation.random()) self.transform(Translation(center))
def rotate(self, center, axis, angle): self.transform(Translation(-np.array(center))) self.transform(Rotation.from_properties(angle, axis, invert=False)) self.transform(Translation(center))
def translate(self, vector): self.transform(Translation(vector))