Beispiel #1
0
    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}"
Beispiel #2
0
    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}"
Beispiel #3
0
    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}"
Beispiel #4
0
    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}"