<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _from_lattice_parameters(self, angles):
 """Convert Bravais lattice parameters to lattice vectors. _from_lattice_parameters will generate the lattice vectors based on the parameters necessary to build a Bravais Lattice. The lattice vectors are in the lower diagonal matrix form. This was adapted from the ASE triclinic.py lattice parameter code. S. R. Bahn and K. W. Jacobsen An object-oriented scripting interface to a legacy electronic structure code Comput. Sci. Eng., Vol. 4, 56-66, 2002 Parameters angles : list-like, required Angles of bravais lattice. """


        dataType = np.float64
        (alpha, beta, gamma) = angles

        radianConversion = np.pi / 180.0
        cosa = np.cos(alpha * radianConversion)
        cosb = np.cos(beta * radianConversion)
        sinb = np.sin(beta * radianConversion)
        cosg = np.cos(gamma * radianConversion)
        sing = np.sin(gamma * radianConversion)
        matCoef_y = (cosa - cosb * cosg) / sing
        matCoef_z = np.power(sinb, 2, dtype=dataType) - \
            np.power(matCoef_y, 2, dtype=dataType)

        if matCoef_z > 0.:
            matCoef_z = np.sqrt(matCoef_z)
        else:
            raise ValueError('Incorrect lattice vector coefficients.'
                             'Lattice parameters chosen return a non-positive '
                             'z vector.')

        lattice_vec = [[1, 0, 0],
                       [cosg, sing, 0],
                       [cosb, matCoef_y, matCoef_z]]

        return np.asarray(lattice_vec, dtype=np.float64)