def __init__(self, a=None, b=None, c=None, alpha=None, beta=None, gamma=None, a1=None, a2=None, a3=None, cell_matrix=None, orientation_matrix=None, offset=None): if all([ p is None for p in (a, b, c, alpha, beta, gamma, a1, a2, a3, cell_matrix) ]): errmsg = 'Expected lattice parameters ' + \ '`a`, `b`, `c`, `alpha`, `beta`, `gamma`\n' + \ 'or lattice vectors `a1`, `a2`, `a3`\n' + \ 'or a 3x3 matrix with lattice vectors for columns.' raise ValueError(errmsg) if cell_matrix is not None: cell_matrix = np.asarray(cell_matrix) a1 = np.array(cell_matrix[0, :]) a2 = np.array(cell_matrix[1, :]) a3 = np.array(cell_matrix[2, :]) if all([v is not None for v in (a1, a2, a3)]): a1 = Vector(a1) a2 = Vector(a2) a3 = Vector(a3) a = a1.length b = a2.length c = a3.length alpha = np.degrees(a2.angle(a3)) beta = np.degrees(a3.angle(a1)) gamma = np.degrees(a1.angle(a2)) cell_matrix = np.matrix( np.vstack((np.asarray(a1), np.asarray(a2), np.asarray(a3)))) self._a = a self._b = b self._c = c self._alpha = alpha self._beta = beta self._gamma = gamma if all([p is not None for p in (a, b, c, alpha, beta, gamma)]): self._update_ortho_matrix() super().__init__(nd=3, cell_matrix=cell_matrix, orientation_matrix=orientation_matrix, offset=offset) self.fmtstr = "a={a!r}, b={b!r}, c={c!r}, " + \ "alpha={alpha!r}, beta={beta!r}, gamma={gamma!r}"
def __init__(self, a=None, b=None, c=None, alpha=None, beta=None, gamma=None, a1=None, a2=None, a3=None, cell_matrix=None, orientation_matrix=None, offset=None): if all([p is None for p in (a, b, c, alpha, beta, gamma, a1, a2, a3, cell_matrix)]): errmsg = 'Expected lattice parameters ' + \ '`a`, `b`, `c`, `alpha`, `beta`, `gamma`\n' + \ 'or lattice vectors `a1`, `a2`, `a3`\n' + \ 'or a 3x3 matrix with lattice vectors for columns.' raise ValueError(errmsg) if cell_matrix is not None: cell_matrix = np.asarray(cell_matrix) a1 = np.array(cell_matrix[0, :]) a2 = np.array(cell_matrix[1, :]) a3 = np.array(cell_matrix[2, :]) if all([v is not None for v in (a1, a2, a3)]): a1 = Vector(a1) a2 = Vector(a2) a3 = Vector(a3) a = a1.length b = a2.length c = a3.length alpha = np.degrees(a2.angle(a3)) beta = np.degrees(a3.angle(a1)) gamma = np.degrees(a1.angle(a2)) cell_matrix = np.matrix(np.vstack((np.asarray(a1), np.asarray(a2), np.asarray(a3)))) self._a = a self._b = b self._c = c self._alpha = alpha self._beta = beta self._gamma = gamma if all([p is not None for p in (a, b, c, alpha, beta, gamma)]): self._update_ortho_matrix() super().__init__(nd=3, cell_matrix=cell_matrix, orientation_matrix=orientation_matrix, offset=offset) self.fmtstr = "a={a!r}, b={b!r}, c={c!r}, " + \ "alpha={alpha!r}, beta={beta!r}, gamma={gamma!r}"
def __init__(self, a=None, b=None, gamma=None, a1=None, a2=None, cell_matrix=None, orientation_matrix=None, offset=None): if cell_matrix is not None: cell_matrix = np.asarray(cell_matrix) a1 = np.array(cell_matrix[0, :]) a2 = np.array(cell_matrix[1, :]) if a1 is not None and a2 is not None: a1 = Vector(a1, nd=3) a2 = Vector(a2, nd=3) a = a1.length b = a2.length gamma = np.degrees(a1.angle(a2)) cell_matrix = np.matrix(np.vstack((np.asarray(a1), np.asarray(a2), np.asarray([0, 0, 1])))) self._a = a self._b = b self._gamma = gamma if None not in (a, b, gamma): self._update_ortho_matrix() super().__init__(nd=2, cell_matrix=cell_matrix, orientation_matrix=orientation_matrix, offset=offset) self.fmtstr = "a={a!r}, b={b!r}, gamma={gamma!r}"
def __init__(self, a=None, b=None, gamma=None, a1=None, a2=None, cell_matrix=None, orientation_matrix=None, offset=None): if cell_matrix is not None: cell_matrix = np.asarray(cell_matrix) a1 = np.array(cell_matrix[0, :]) a2 = np.array(cell_matrix[1, :]) if a1 is not None and a2 is not None: a1 = Vector(a1, nd=3) a2 = Vector(a2, nd=3) a = a1.length b = a2.length gamma = np.degrees(a1.angle(a2)) cell_matrix = np.matrix( np.vstack( (np.asarray(a1), np.asarray(a2), np.asarray([0, 0, 1])))) self._a = a self._b = b self._gamma = gamma if None not in (a, b, gamma): self._update_ortho_matrix() super().__init__(nd=2, cell_matrix=cell_matrix, orientation_matrix=orientation_matrix, offset=offset) self.fmtstr = "a={a!r}, b={b!r}, gamma={gamma!r}"